static int process_cc608(CCaptionSubContext *ctx, int64_t pts, uint8_t hi, uint8_t lo)

{

    int ret = 0;

#define COR3(var, with1, with2, with3)  ( (var) == (with1) ||  (var) == (with2) || (var) == (with3) )

    if ( hi == ctx->prev_cmd[0] && lo == ctx->prev_cmd[1]) {

    /* ignore redundant command */

    } else if ( (hi == 0x10 && (lo >= 0x40 || lo <= 0x5f)) ||

              ( (hi >= 0x11 && hi <= 0x17) && (lo >= 0x40 && lo <= 0x7f) ) ) {

        handle_pac(ctx, hi, lo);

    } else if ( ( hi == 0x11 && lo >= 0x20 && lo <= 0x2f ) ||

                ( hi == 0x17 && lo >= 0x2e && lo <= 0x2f) ) {

        handle_textattr(ctx, hi, lo);

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x20 ) {

    /* resume caption loading */

        ctx->mode = CCMODE_POPON;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x24 ) {

        handle_delete_end_of_row(ctx, hi, lo);

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x25 ) {

        ctx->rollup = 2;

        ctx->mode = CCMODE_ROLLUP_2;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x26 ) {

        ctx->rollup = 3;

        ctx->mode = CCMODE_ROLLUP_3;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x27 ) {

        ctx->rollup = 4;

        ctx->mode = CCMODE_ROLLUP_4;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x29 ) {

    /* resume direct captioning */

        ctx->mode = CCMODE_PAINTON;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x2B ) {

    /* resume text display */

        ctx->mode = CCMODE_TEXT;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x2C ) {

    /* erase display memory */

        ret = handle_edm(ctx, pts);

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x2D ) {

    /* carriage return */

        av_dlog(ctx, "carriage return\n");

        reap_screen(ctx, pts);

        roll_up(ctx);

        ctx->screen_changed = 1;

        ctx->cursor_column = 0;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x2F ) {

    /* end of caption */

        av_dlog(ctx, "handle_eoc\n");

        ret = handle_eoc(ctx, pts);

    } else if (hi>=0x20) {

    /* Standard characters (always in pairs) */

        handle_char(ctx, hi, lo, pts);

    } else {

    /* Ignoring all other non data code */

        av_dlog(ctx, "Unknown command 0x%hhx 0x%hhx\n", hi, lo);

    }



    /* set prev command */

     ctx->prev_cmd[0] = hi;

     ctx->prev_cmd[1] = lo;



#undef COR3

    return ret;



}

static int process_cc608(CCaptionSubContext *ctx, int64_t pts, uint8_t hi, uint8_t lo)

{

    int ret = 0;

#define COR3(var, with1, with2, with3)  ( (var) == (with1) ||  (var) == (with2) || (var) == (with3) )

    if ( hi == ctx->prev_cmd[0] && lo == ctx->prev_cmd[1]) {

    

    } else if ( (hi == 0x10 && (lo >= 0x40 || lo <= 0x5f)) ||

              ( (hi >= 0x11 && hi <= 0x17) && (lo >= 0x40 && lo <= 0x7f) ) ) {

        handle_pac(ctx, hi, lo);

    } else if ( ( hi == 0x11 && lo >= 0x20 && lo <= 0x2f ) ||

                ( hi == 0x17 && lo >= 0x2e && lo <= 0x2f) ) {

        handle_textattr(ctx, hi, lo);

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x20 ) {

    

        ctx->mode = CCMODE_POPON;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x24 ) {

        handle_delete_end_of_row(ctx, hi, lo);

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x25 ) {

        ctx->rollup = 2;

        ctx->mode = CCMODE_ROLLUP_2;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x26 ) {

        ctx->rollup = 3;

        ctx->mode = CCMODE_ROLLUP_3;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x27 ) {

        ctx->rollup = 4;

        ctx->mode = CCMODE_ROLLUP_4;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x29 ) {

    

        ctx->mode = CCMODE_PAINTON;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x2B ) {

    

        ctx->mode = CCMODE_TEXT;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x2C ) {

    

        ret = handle_edm(ctx, pts);

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x2D ) {

    

        av_dlog(ctx, "carriage return\n");

        reap_screen(ctx, pts);

        roll_up(ctx);

        ctx->screen_changed = 1;

        ctx->cursor_column = 0;

    } else if ( COR3(hi, 0x14, 0x15, 0x1C) && lo == 0x2F ) {

    

        av_dlog(ctx, "handle_eoc\n");

        ret = handle_eoc(ctx, pts);

    } else if (hi>=0x20) {

    

        handle_char(ctx, hi, lo, pts);

    } else {

    

        av_dlog(ctx, "Unknown command 0x%hhx 0x%hhx\n", hi, lo);

    }



    

     ctx->prev_cmd[0] = hi;

     ctx->prev_cmd[1] = lo;



#undef COR3

    return ret;



}

static int FUNC_0(CCaptionSubContext *VAR_0, int64_t VAR_1, uint8_t VAR_2, uint8_t VAR_3)

{

    int VAR_4 = 0;

#define COR3(var, with1, with2, with3)  ( (var) == (with1) ||  (var) == (with2) || (var) == (with3) )

    if ( VAR_2 == VAR_0->prev_cmd[0] && VAR_3 == VAR_0->prev_cmd[1]) {

    

    } else if ( (VAR_2 == 0x10 && (VAR_3 >= 0x40 || VAR_3 <= 0x5f)) ||

              ( (VAR_2 >= 0x11 && VAR_2 <= 0x17) && (VAR_3 >= 0x40 && VAR_3 <= 0x7f) ) ) {

        handle_pac(VAR_0, VAR_2, VAR_3);

    } else if ( ( VAR_2 == 0x11 && VAR_3 >= 0x20 && VAR_3 <= 0x2f ) ||

                ( VAR_2 == 0x17 && VAR_3 >= 0x2e && VAR_3 <= 0x2f) ) {

        handle_textattr(VAR_0, VAR_2, VAR_3);

    } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x20 ) {

    

        VAR_0->mode = CCMODE_POPON;

    } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x24 ) {

        handle_delete_end_of_row(VAR_0, VAR_2, VAR_3);

    } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x25 ) {

        VAR_0->rollup = 2;

        VAR_0->mode = CCMODE_ROLLUP_2;

    } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x26 ) {

        VAR_0->rollup = 3;

        VAR_0->mode = CCMODE_ROLLUP_3;

    } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x27 ) {

        VAR_0->rollup = 4;

        VAR_0->mode = CCMODE_ROLLUP_4;

    } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x29 ) {

    

        VAR_0->mode = CCMODE_PAINTON;

    } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x2B ) {

    

        VAR_0->mode = CCMODE_TEXT;

    } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x2C ) {

    

        VAR_4 = handle_edm(VAR_0, VAR_1);

    } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x2D ) {

    

        av_dlog(VAR_0, "carriage return\n");

        reap_screen(VAR_0, VAR_1);

        roll_up(VAR_0);

        VAR_0->screen_changed = 1;

        VAR_0->cursor_column = 0;

    } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x2F ) {

    

        av_dlog(VAR_0, "handle_eoc\n");

        VAR_4 = handle_eoc(VAR_0, VAR_1);

    } else if (VAR_2>=0x20) {

    

        handle_char(VAR_0, VAR_2, VAR_3, VAR_1);

    } else {

    

        av_dlog(VAR_0, "Unknown command 0x%hhx 0x%hhx\n", VAR_2, VAR_3);

    }



    

     VAR_0->prev_cmd[0] = VAR_2;

     VAR_0->prev_cmd[1] = VAR_3;



#undef COR3

    return VAR_4;



}

static int FUNC_0(CCaptionSubContext *VAR_0, int64_t VAR_1, uint8_t VAR_2, uint8_t VAR_3)
{ int VAR_4 = 0; #define COR3(var, with1, with2, with3)  ( (var) == (with1) ||  (var) == (with2) || (var) == (with3) )
if ( VAR_2 == VAR_0->prev_cmd[0] && VAR_3 == VAR_0->prev_cmd[1]) { } else if ( (VAR_2 == 0x10 && (VAR_3 >= 0x40 || VAR_3 <= 0x5f)) || ( (VAR_2 >= 0x11 && VAR_2 <= 0x17) && (VAR_3 >= 0x40 && VAR_3 <= 0x7f) ) ) { handle_pac(VAR_0, VAR_2, VAR_3); } else if ( ( VAR_2 == 0x11 && VAR_3 >= 0x20 && VAR_3 <= 0x2f ) || ( VAR_2 == 0x17 && VAR_3 >= 0x2e && VAR_3 <= 0x2f) ) { handle_textattr(VAR_0, VAR_2, VAR_3); } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x20 ) { VAR_0->mode = CCMODE_POPON; } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x24 ) { handle_delete_end_of_row(VAR_0, VAR_2, VAR_3); } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x25 ) { VAR_0->rollup = 2; VAR_0->mode = CCMODE_ROLLUP_2; } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x26 ) { VAR_0->rollup = 3; VAR_0->mode = CCMODE_ROLLUP_3; } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x27 ) { VAR_0->rollup = 4; VAR_0->mode = CCMODE_ROLLUP_4; } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x29 ) { VAR_0->mode = CCMODE_PAINTON; } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x2B ) { VAR_0->mode = CCMODE_TEXT; } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x2C ) { VAR_4 = handle_edm(VAR_0, VAR_1); } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x2D ) { av_dlog(VAR_0, "carriage return\n"); reap_screen(VAR_0, VAR_1); roll_up(VAR_0); VAR_0->screen_changed = 1; VAR_0->cursor_column = 0; } else if ( COR3(VAR_2, 0x14, 0x15, 0x1C) && VAR_3 == 0x2F ) { av_dlog(VAR_0, "handle_eoc\n"); VAR_4 = handle_eoc(VAR_0, VAR_1); } else if (VAR_2>=0x20) { handle_char(VAR_0, VAR_2, VAR_3, VAR_1); } else { av_dlog(VAR_0, "Unknown command 0x%hhx 0x%hhx\n", VAR_2, VAR_3); } VAR_0->prev_cmd[0] = VAR_2; VAR_0->prev_cmd[1] = VAR_3; #undef COR3
return VAR_4; }