Commit 26abdd61 authored by Aman Gupta's avatar Aman Gupta Committed by Clément Bœsch

lavc/ccaption_dec: implement "erase non displayed memory"

parent 53ee84f8
......@@ -361,12 +361,9 @@ static void handle_pac(CCaptionSubContext *ctx, uint8_t hi, uint8_t lo)
}
}
/**
* @param pts it is required to set end time
*/
static void handle_edm(CCaptionSubContext *ctx, int64_t pts)
static void handle_erase(CCaptionSubContext *ctx, int64_t pts, int n_screen)
{
struct Screen *screen = ctx->screen + ctx->active_screen;
struct Screen *screen = ctx->screen + n_screen;
reap_screen(ctx, pts);
screen->row_used = 0;
......@@ -374,7 +371,7 @@ static void handle_edm(CCaptionSubContext *ctx, int64_t pts)
static void handle_eoc(CCaptionSubContext *ctx, int64_t pts)
{
handle_edm(ctx,pts);
handle_erase(ctx, pts, ctx->active_screen);
ctx->active_screen = !ctx->active_screen;
ctx->cursor_column = 0;
}
......@@ -455,7 +452,7 @@ static void process_cc608(CCaptionSubContext *ctx, int64_t pts, uint8_t hi, uint
break;
case 0x2c:
/* erase display memory */
handle_edm(ctx, pts);
handle_erase(ctx, pts, ctx->active_screen);
break;
case 0x2d:
/* carriage return */
......@@ -464,6 +461,10 @@ 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");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment