[FFmpeg-devel] [PATCH] avcodec/extract_extradata: don't allocate more space than needed when removing NALUs in h264/hevc
James Almer
jamrial at gmail.com
Sat Mar 10 17:48:06 EET 2018
On 3/9/2018 2:40 PM, James Almer wrote:
> Signed-off-by: James Almer <jamrial at 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.
More information about the ffmpeg-devel
mailing list