diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c
index 02bce01e2d039e1b8d96b3156e68d16ec8aeed18..bfdf511bfc7da684fc4be336f426bff10f72383c 100644
--- a/libavcodec/ccaption_dec.c
+++ b/libavcodec/ccaption_dec.c
@@ -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");