lavc/ccaption_dec: clear all unused rows during rollup
authorAman Gupta <aman@tmm1.net>
Wed, 13 Jan 2016 01:27:06 +0000 (17:27 -0800)
committerClément Bœsch <u@pkh.me>
Thu, 14 Jan 2016 22:13:15 +0000 (23:13 +0100)
Sometimes rollup captions can move around the screen. This fixes "ghost"
captions from below the current rollup area from continuing to be
captured when a rollup moves higher up on the screen.

libavcodec/ccaption_dec.c

index 3e33580..330ea6a 100644 (file)
@@ -294,8 +294,11 @@ static void roll_up(CCaptionSubContext *ctx)
      */
     keep_lines = FFMIN(ctx->cursor_row + 1, ctx->rollup);
 
-    for (i = 0; i < ctx->cursor_row - keep_lines; i++)
+    for (i = 0; i < SCREEN_ROWS; i++) {
+        if (i > ctx->cursor_row - keep_lines && i <= ctx->cursor_row)
+            continue;
         UNSET_FLAG(screen->row_used, i);
+    }
 
     for (i = 0; i < keep_lines && screen->row_used; i++) {
         const int i_row = ctx->cursor_row - keep_lines + i + 1;