Commit 17efc4766b for ffmpeg
commit 17efc4766baf19840cf1af144adf602bcfea67f3
Author: Ruk Doe <info@doany.io>
Date: Sat Oct 10 16:32:59 2026 +0900
avcodec/libaribcaption: share the bitmap no-image path
ARIBCC_RENDER_STATUS_NO_IMAGE leaves the render result empty, so it
reaches the same "no image" check as a GOT_IMAGE result without images.
Let it fall through instead of keeping a second copy of the clear
handling, and log the image count before the result is cleaned up,
which reset it to 0.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DdDiDRusmi6eD7qSrKBjHb
diff --git a/libavcodec/libaribcaption.c b/libavcodec/libaribcaption.c
index a5121b6eb7..6b6345e2ef 100644
--- a/libavcodec/libaribcaption.c
+++ b/libavcodec/libaribcaption.c
@@ -346,19 +346,8 @@ static int aribcaption_trans_bitmap_subtitle(ARIBCaptionContext *ctx)
return 0;
case ARIBCC_RENDER_STATUS_NO_IMAGE:
- ff_dlog(ctx, "no image\n");
- /* A caption carrying an explicit clear screen (CS) produces no
- image. Report an empty subtitle so that the previously displayed
- bitmap is erased; the TEXT path already does this by emitting "".
- Do not treat every regionless caption as a clear: a statement
- containing only TIME also decodes to zero regions but must not
- erase the display. */
- if (ctx->caption.flags & ARIBCC_CAPTIONFLAGS_CLEARSCREEN) {
- sub->format = 0; /* graphic */
- sub->num_rects = 0;
- return 1;
- }
- return 0;
+ /* the result holds no image, handled below */
+ break;
case ARIBCC_RENDER_STATUS_ERROR:
av_log(ctx, AV_LOG_ERROR,
@@ -373,8 +362,14 @@ static int aribcaption_trans_bitmap_subtitle(ARIBCaptionContext *ctx)
}
if (!ctx->render_result.image_count || ctx->render_result.images == NULL) {
- aribcc_render_result_cleanup(&ctx->render_result);
ff_dlog(ctx, "no image (%d)\n", ctx->render_result.image_count);
+ aribcc_render_result_cleanup(&ctx->render_result);
+ /* A caption carrying an explicit clear screen (CS) may produce no
+ image. Report an empty subtitle so that the previously displayed
+ bitmap is erased; the TEXT path already does this by emitting "".
+ Do not treat every caption without image as a clear: a statement
+ containing only TIME also decodes to zero regions but must not
+ erase the display. */
if (ctx->caption.flags & ARIBCC_CAPTIONFLAGS_CLEARSCREEN) {
sub->format = 0; /* graphic */
sub->num_rects = 0;