|
|
|
@ -361,9 +361,12 @@ static void handle_pac(CCaptionSubContext *ctx, uint8_t hi, uint8_t lo) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void handle_erase(CCaptionSubContext *ctx, int64_t pts, int n_screen) |
|
|
|
|
/**
|
|
|
|
|
* @param pts it is required to set end time |
|
|
|
|
*/ |
|
|
|
|
static void handle_edm(CCaptionSubContext *ctx, int64_t pts) |
|
|
|
|
{ |
|
|
|
|
struct Screen *screen = ctx->screen + n_screen; |
|
|
|
|
struct Screen *screen = ctx->screen + ctx->active_screen; |
|
|
|
|
|
|
|
|
|
reap_screen(ctx, pts); |
|
|
|
|
screen->row_used = 0; |
|
|
|
@ -371,7 +374,7 @@ static void handle_erase(CCaptionSubContext *ctx, int64_t pts, int n_screen) |
|
|
|
|
|
|
|
|
|
static void handle_eoc(CCaptionSubContext *ctx, int64_t pts) |
|
|
|
|
{ |
|
|
|
|
handle_erase(ctx, pts, ctx->active_screen); |
|
|
|
|
handle_edm(ctx,pts); |
|
|
|
|
ctx->active_screen = !ctx->active_screen; |
|
|
|
|
ctx->cursor_column = 0; |
|
|
|
|
} |
|
|
|
@ -452,7 +455,7 @@ static void process_cc608(CCaptionSubContext *ctx, int64_t pts, uint8_t hi, uint |
|
|
|
|
break; |
|
|
|
|
case 0x2c: |
|
|
|
|
/* erase display memory */ |
|
|
|
|
handle_erase(ctx, pts, ctx->active_screen); |
|
|
|
|
handle_edm(ctx, pts); |
|
|
|
|
break; |
|
|
|
|
case 0x2d: |
|
|
|
|
/* carriage return */ |
|
|
|
@ -461,10 +464,6 @@ static void process_cc608(CCaptionSubContext *ctx, int64_t pts, uint8_t hi, uint |
|
|
|
|
roll_up(ctx); |
|
|
|
|
ctx->cursor_column = 0; |
|
|
|
|
break; |
|
|
|
|
case 0x2e: |
|
|
|
|
/* erase non displayed memory */ |
|
|
|
|
handle_erase(ctx, pts, !ctx->active_screen); |
|
|
|
|
break; |
|
|
|
|
case 0x2f: |
|
|
|
|
/* end of caption */ |
|
|
|
|
ff_dlog(ctx, "handle_eoc\n"); |
|
|
|
|