static av_cold int dvdsub_init(AVCodecContext *avctx)

{

    DVDSubContext *ctx = avctx->priv_data;

    char *data, *cur;



    if (!avctx->extradata || !avctx->extradata_size)

        return 0;



    data = av_malloc(avctx->extradata_size + 1);

    if (!data)

        return AVERROR(ENOMEM);

    memcpy(data, avctx->extradata, avctx->extradata_size);

    data[avctx->extradata_size] = '\0';

    cur = data;



    while (*cur) {

        if (strncmp("palette:", cur, 8) == 0) {

            int i;

            char *p = cur + 8;

            ctx->has_palette = 1;

            for (i = 0; i < 16; i++) {

                ctx->palette[i] = strtoul(p, &p, 16);

                while (*p == ',' || av_isspace(*p))

                    p++;

            }

        } else if (!strncmp("size:", cur, 5)) {

            int w, h;

            if (sscanf(cur + 5, "%dx%d", &w, &h) == 2) {

               int ret = ff_set_dimensions(avctx, w, h);

               if (ret < 0)

                   return ret;

            }

        }

        cur += strcspn(cur, "\n\r");

        cur += strspn(cur, "\n\r");

    }

    av_free(data);

    return 0;

}

static av_cold int dvdsub_init(AVCodecContext *avctx)

{

    DVDSubContext *ctx = avctx->priv_data;

    char *data, *cur;



    if (!avctx->extradata || !avctx->extradata_size)

        return 0;



    data = av_malloc(avctx->extradata_size + 1);

    if (!data)

        return AVERROR(ENOMEM);

    memcpy(data, avctx->extradata, avctx->extradata_size);

    data[avctx->extradata_size] = '\0';

    cur = data;



    while (*cur) {

        if (strncmp("palette:", cur, 8) == 0) {

            int i;

            char *p = cur + 8;

            ctx->has_palette = 1;

            for (i = 0; i < 16; i++) {

                ctx->palette[i] = strtoul(p, &p, 16);

                while (*p == ',' || av_isspace(*p))

                    p++;

            }

        } else if (!strncmp("size:", cur, 5)) {

            int w, h;

            if (sscanf(cur + 5, "%dx%d", &w, &h) == 2) {

               int ret = ff_set_dimensions(avctx, w, h);

               if (ret < 0)

                   return ret;

            }

        }

        cur += strcspn(cur, "\n\r");

        cur += strspn(cur, "\n\r");

    }

    av_free(data);

    return 0;

}

               int ret = ff_set_dimensions(avctx, w, h);                    return ret;     return 0;
static av_cold int FUNC_0(AVCodecContext *avctx)

{

    DVDSubContext *ctx = avctx->priv_data;

    char *VAR_0, *VAR_1;



    if (!avctx->extradata || !avctx->extradata_size)

        return 0;



    VAR_0 = av_malloc(avctx->extradata_size + 1);

    if (!VAR_0)

        return AVERROR(ENOMEM);

    memcpy(VAR_0, avctx->extradata, avctx->extradata_size);

    VAR_0[avctx->extradata_size] = '\0';

    VAR_1 = VAR_0;



    while (*VAR_1) {

        if (strncmp("palette:", VAR_1, 8) == 0) {

            int VAR_2;

            char *VAR_3 = VAR_1 + 8;

            ctx->has_palette = 1;

            for (VAR_2 = 0; VAR_2 < 16; VAR_2++) {

                ctx->palette[VAR_2] = strtoul(VAR_3, &VAR_3, 16);

                while (*VAR_3 == ',' || av_isspace(*VAR_3))

                    VAR_3++;

            }

        } else if (!strncmp("size:", VAR_1, 5)) {

            int VAR_4, VAR_5;

            if (sscanf(VAR_1 + 5, "%dx%d", &VAR_4, &VAR_5) == 2) {

               int VAR_6 = ff_set_dimensions(avctx, VAR_4, VAR_5);

               if (VAR_6 < 0)

                   return VAR_6;

            }

        }

        VAR_1 += strcspn(VAR_1, "\n\r");

        VAR_1 += strspn(VAR_1, "\n\r");

    }

    av_free(VAR_0);

    return 0;

}

static av_cold int FUNC_0(AVCodecContext *avctx)
{ DVDSubContext *ctx = avctx->priv_data; char *VAR_0, *VAR_1; if (!avctx->extradata || !avctx->extradata_size)
return 0; VAR_0 = av_malloc(avctx->extradata_size + 1); if (!VAR_0)
return AVERROR(ENOMEM); memcpy(VAR_0, avctx->extradata, avctx->extradata_size); VAR_0[avctx->extradata_size] = '\0'; VAR_1 = VAR_0; while (*VAR_1) { if (strncmp("palette:", VAR_1, 8) == 0) { int VAR_2; char *VAR_3 = VAR_1 + 8; ctx->has_palette = 1; for (VAR_2 = 0; VAR_2 < 16; VAR_2++) { ctx->palette[VAR_2] = strtoul(VAR_3, &VAR_3, 16); while (*VAR_3 == ',' || av_isspace(*VAR_3))
VAR_3++; } } else if (!strncmp("size:", VAR_1, 5)) { int VAR_4, VAR_5; if (sscanf(VAR_1 + 5, "%dx%d", &VAR_4, &VAR_5) == 2) { int VAR_6 = ff_set_dimensions(avctx, VAR_4, VAR_5); if (VAR_6 < 0)
return VAR_6; } } VAR_1 += strcspn(VAR_1, "\n\r"); VAR_1 += strspn(VAR_1, "\n\r"); } av_free(VAR_0); return 0; }