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]