static void dvbsub_parse_display_definition_segment(AVCodecContext *avctx,

                                                    const uint8_t *buf,

                                                    int buf_size)

{

    DVBSubContext *ctx = avctx->priv_data;

    DVBSubDisplayDefinition *display_def = ctx->display_definition;

    int dds_version, info_byte;



    if (buf_size < 5)

        return;



    info_byte   = bytestream_get_byte(&buf);

    dds_version = info_byte >> 4;

    if (display_def && display_def->version == dds_version)

        return; // already have this display definition version



    if (!display_def) {

        display_def             = av_mallocz(sizeof(*display_def));

        ctx->display_definition = display_def;

    }

    if (!display_def)

        return;



    display_def->version = dds_version;

    display_def->x       = 0;

    display_def->y       = 0;

    display_def->width   = bytestream_get_be16(&buf) + 1;

    display_def->height  = bytestream_get_be16(&buf) + 1;



    if (buf_size < 13)

        return;



    if (info_byte & 1<<3) { // display_window_flag

        display_def->x = bytestream_get_be16(&buf);

        display_def->y = bytestream_get_be16(&buf);

        display_def->width  = bytestream_get_be16(&buf) - display_def->x + 1;

        display_def->height = bytestream_get_be16(&buf) - display_def->y + 1;

    }

}

static void dvbsub_parse_display_definition_segment(AVCodecContext *avctx,

                                                    const uint8_t *buf,

                                                    int buf_size)

{

    DVBSubContext *ctx = avctx->priv_data;

    DVBSubDisplayDefinition *display_def = ctx->display_definition;

    int dds_version, info_byte;



    if (buf_size < 5)

        return;



    info_byte   = bytestream_get_byte(&buf);

    dds_version = info_byte >> 4;

    if (display_def && display_def->version == dds_version)

        return; 



    if (!display_def) {

        display_def             = av_mallocz(sizeof(*display_def));

        ctx->display_definition = display_def;

    }

    if (!display_def)

        return;



    display_def->version = dds_version;

    display_def->x       = 0;

    display_def->y       = 0;

    display_def->width   = bytestream_get_be16(&buf) + 1;

    display_def->height  = bytestream_get_be16(&buf) + 1;



    if (buf_size < 13)

        return;



    if (info_byte & 1<<3) { 

        display_def->x = bytestream_get_be16(&buf);

        display_def->y = bytestream_get_be16(&buf);

        display_def->width  = bytestream_get_be16(&buf) - display_def->x + 1;

        display_def->height = bytestream_get_be16(&buf) - display_def->y + 1;

    }

}

static void FUNC_0(AVCodecContext *VAR_0,

                                                    const uint8_t *VAR_1,

                                                    int VAR_2)

{

    DVBSubContext *ctx = VAR_0->priv_data;

    DVBSubDisplayDefinition *display_def = ctx->display_definition;

    int VAR_3, VAR_4;



    if (VAR_2 < 5)

        return;



    VAR_4   = bytestream_get_byte(&VAR_1);

    VAR_3 = VAR_4 >> 4;

    if (display_def && display_def->version == VAR_3)

        return; 



    if (!display_def) {

        display_def             = av_mallocz(sizeof(*display_def));

        ctx->display_definition = display_def;

    }

    if (!display_def)

        return;



    display_def->version = VAR_3;

    display_def->x       = 0;

    display_def->y       = 0;

    display_def->width   = bytestream_get_be16(&VAR_1) + 1;

    display_def->height  = bytestream_get_be16(&VAR_1) + 1;



    if (VAR_2 < 13)

        return;



    if (VAR_4 & 1<<3) { 

        display_def->x = bytestream_get_be16(&VAR_1);

        display_def->y = bytestream_get_be16(&VAR_1);

        display_def->width  = bytestream_get_be16(&VAR_1) - display_def->x + 1;

        display_def->height = bytestream_get_be16(&VAR_1) - display_def->y + 1;

    }

}

static void FUNC_0(AVCodecContext *VAR_0,
const uint8_t *VAR_1,
int VAR_2)
{ DVBSubContext *ctx = VAR_0->priv_data; DVBSubDisplayDefinition *display_def = ctx->display_definition; int VAR_3, VAR_4; if (VAR_2 < 5)
return; VAR_4   = bytestream_get_byte(&VAR_1); VAR_3 = VAR_4 >> 4; if (display_def && display_def->version == VAR_3)
return; if (!display_def) { display_def             = av_mallocz(sizeof(*display_def)); ctx->display_definition = display_def; } if (!display_def)
return; display_def->version = VAR_3; display_def->x       = 0; display_def->y       = 0; display_def->width   = bytestream_get_be16(&VAR_1) + 1; display_def->height  = bytestream_get_be16(&VAR_1) + 1; if (VAR_2 < 13)
return; if (VAR_4 & 1<<3) { display_def->x = bytestream_get_be16(&VAR_1); display_def->y = bytestream_get_be16(&VAR_1); display_def->width  = bytestream_get_be16(&VAR_1) - display_def->x + 1; display_def->height = bytestream_get_be16(&VAR_1) - display_def->y + 1; } }