On 3/9/2018 2:40 PM, James Almer wrote: > Signed-off-by: James Almer <jamr...@gmail.com> > --- > libavcodec/extract_extradata_bsf.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/libavcodec/extract_extradata_bsf.c > b/libavcodec/extract_extradata_bsf.c > index fbfd12aeef..4e2d601742 100644 > --- a/libavcodec/extract_extradata_bsf.c > +++ b/libavcodec/extract_extradata_bsf.c > @@ -62,7 +62,7 @@ static int extract_extradata_h2645(AVBSFContext *ctx, > AVPacket *pkt, > ExtractExtradataContext *s = ctx->priv_data; > > H2645Packet h2645_pkt = { 0 }; > - int extradata_size = 0; > + int extradata_size = 0, filtered_size = 0; > const int *extradata_nal_types; > int nb_extradata_nal_types; > int i, has_sps = 0, has_vps = 0, ret = 0; > @@ -90,6 +90,8 @@ static int extract_extradata_h2645(AVBSFContext *ctx, > AVPacket *pkt, > } else { > if (nal->type == H264_NAL_SPS) has_sps = 1; > } > + } else if (s->remove) { > + filtered_size += nal->raw_size + 3; > } > } > > @@ -100,11 +102,13 @@ static int extract_extradata_h2645(AVBSFContext *ctx, > AVPacket *pkt, > uint8_t *extradata, *filtered_data; > > if (s->remove) { > - filtered_buf = av_buffer_alloc(pkt->size + > AV_INPUT_BUFFER_PADDING_SIZE); > + filtered_buf = av_buffer_alloc(filtered_size + > AV_INPUT_BUFFER_PADDING_SIZE); > if (!filtered_buf) { > ret = AVERROR(ENOMEM); > goto fail; > } > + memset(filtered_buf->data + filtered_size, 0, > AV_INPUT_BUFFER_PADDING_SIZE); > + > filtered_data = filtered_buf->data; > } > > @@ -137,9 +141,7 @@ static int extract_extradata_h2645(AVBSFContext *ctx, > AVPacket *pkt, > av_buffer_unref(&pkt->buf); > pkt->buf = filtered_buf; > pkt->data = filtered_buf->data; > - pkt->size = filtered_data - filtered_buf->data; > - > - memset(pkt->data + pkt->size, 0, AV_INPUT_BUFFER_PADDING_SIZE); > + pkt->size = filtered_size; > } > }
Will push this later today. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel