This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit 70897dd6ab8439741c9f7f1e09674f0eeb585a42
Author:     Ruk Doe <[email protected]>
AuthorDate: Sat Oct 10 16:18:22 2026 +0900
Commit:     michaelni <[email protected]>
CommitDate: Fri Nov 6 04:39:07 2026 +0000

    avcodec/libaribcaption: merge the two ass clear paths
    
    A caption without regions and a caption whose regions were all skipped
    as ruby both end up with nothing to show, and were handled by two
    copies of the same clear-screen check. With no region the loop writes
    nothing, so the later check already covers it. Drop the early return.
    
    Also clean up through the fail path if adding the clear rect fails,
    like every other error in this function, instead of leaving the
    partially built subtitle to the caller.
    
    Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
    Claude-Session: https://claude.ai/code/session_01DdDiDRusmi6eD7qSrKBjHb
---
 libavcodec/libaribcaption.c | 27 +++++++++++----------------
 1 file changed, 11 insertions(+), 16 deletions(-)

diff --git a/libavcodec/libaribcaption.c b/libavcodec/libaribcaption.c
index 9232f0aaf0..5cc00619b6 100644
--- a/libavcodec/libaribcaption.c
+++ b/libavcodec/libaribcaption.c
@@ -604,17 +604,6 @@ static int 
aribcaption_trans_ass_subtitle(ARIBCaptionContext *ctx)
     if (ctx->avctx->profile == AV_PROFILE_ARIB_PROFILE_C)
         single_rect = true;
 
-    if (ctx->caption.region_count == 0) {
-        /* Only an explicit clear screen (CS) erases the previous caption;
-           a statement containing only TIME also has no region. */
-        if (!(ctx->caption.flags & ARIBCC_CAPTIONFLAGS_CLEARSCREEN))
-            return 0;
-        /* clear previous caption for indefinite duration  */
-        sub->format = 1; /* text */
-        ret = ff_ass_add_rect(sub, "", ctx->readorder++, 0, NULL, NULL);
-        return ret < 0 ? ret : 1;
-    }
-
     sub->format = 1; /* text */
 
     av_bprint_init(&buf, ARIBC_BPRINT_SIZE_INIT, ARIBC_BPRINT_SIZE_MAX);
@@ -771,13 +760,19 @@ static int 
aribcaption_trans_ass_subtitle(ARIBCaptionContext *ctx)
         }
     }
     if (!emitted) {
-        /* Every region was skipped as ruby. Emit nothing, but a clear
-           screen (CS) must still erase the previous caption. */
-        av_bprint_finalize(&buf, NULL);
-        if (!(ctx->caption.flags & ARIBCC_CAPTIONFLAGS_CLEARSCREEN))
+        /* Nothing to show: there is no region, or every region was skipped
+           as ruby. Only an explicit clear screen (CS) erases the previous
+           caption, for indefinite duration; a statement containing only
+           TIME also has no region. */
+        if (!(ctx->caption.flags & ARIBCC_CAPTIONFLAGS_CLEARSCREEN)) {
+            av_bprint_finalize(&buf, NULL);
             return 0;
+        }
         ret = ff_ass_add_rect(sub, "", ctx->readorder++, 0, NULL, NULL);
-        return ret < 0 ? ret : 1;
+        if (ret < 0)
+            goto fail;
+        av_bprint_finalize(&buf, NULL);
+        return 1;
     }
     if (single_rect) {
         if (!av_bprint_is_complete(&buf)) {

-- 
To stop receiving notification emails like this one, please contact
[email protected].
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to