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

Git pushed a commit to branch master
in repository ffmpeg.

The following commit(s) were added to refs/heads/master by this push:
     new 3d2c02f1dd avcodec/bsf/h264_mp4toannexb: don't overwrite output 
codecpar extradata after init()
3d2c02f1dd is described below

commit 3d2c02f1ddebb64223199cfa04a0fd3a37410f8d
Author:     James Almer <[email protected]>
AuthorDate: Sun May 24 14:42:38 2026 -0300
Commit:     James Almer <[email protected]>
CommitDate: Sat Jun 13 21:32:07 2026 -0300

    avcodec/bsf/h264_mp4toannexb: don't overwrite output codecpar extradata 
after init()
    
    It's against the documented behavior of bitstream filters.
    
    Signed-off-by: James Almer <[email protected]>
---
 libavcodec/bsf/h264_mp4toannexb.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/libavcodec/bsf/h264_mp4toannexb.c 
b/libavcodec/bsf/h264_mp4toannexb.c
index e46036b8b7..216fea92d1 100644
--- a/libavcodec/bsf/h264_mp4toannexb.c
+++ b/libavcodec/bsf/h264_mp4toannexb.c
@@ -82,7 +82,8 @@ static void count_or_copy(uint8_t **out, uint64_t *out_size,
 }
 
 static int h264_extradata_to_annexb(AVBSFContext *ctx,
-                                    uint8_t *extradata, int extradata_size)
+                                    const uint8_t *extradata, int 
extradata_size,
+                                    uint8_t **out_extradata, int 
*out_extradata_size)
 {
     H264BSFContext *s = ctx->priv_data;
     GetByteContext ogb, *gb = &ogb;
@@ -172,9 +173,12 @@ pps:
                "The resulting stream may not play.\n");
     }
 
-    av_freep(&ctx->par_out->extradata);
-    ctx->par_out->extradata      = out;
-    ctx->par_out->extradata_size = total_size;
+    if (out_extradata && out_extradata_size) {
+        av_freep(out_extradata);
+        *out_extradata      = out;
+        *out_extradata_size = total_size;
+    } else
+        av_freep(&out);
 
     s->length_size      = length_size;
     s->new_idr          = 1;
@@ -271,7 +275,9 @@ static int h264_mp4toannexb_init(AVBSFContext *ctx)
     }
     return h264_extradata_to_annexb(ctx,
                                     ctx->par_in->extradata,
-                                    ctx->par_in->extradata_size);
+                                    ctx->par_in->extradata_size,
+                                    &ctx->par_out->extradata,
+                                    &ctx->par_out->extradata_size);
 }
 
 static int h264_mp4toannexb_filter(AVBSFContext *ctx, AVPacket *opkt)
@@ -294,7 +300,7 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, 
AVPacket *opkt)
     extradata = av_packet_get_side_data(in, AV_PKT_DATA_NEW_EXTRADATA,
                                         &extradata_size);
     if (extradata && extradata[0] == 1) {
-        ret = h264_extradata_to_annexb(ctx, extradata, extradata_size);
+        ret = h264_extradata_to_annexb(ctx, extradata, extradata_size, NULL, 
NULL);
         if (ret < 0)
             goto fail;
         av_packet_side_data_remove(in->side_data, &in->side_data_elems,

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to