On Sat, Nov 5, 2016 at 9:21 AM, Michael Niedermayer <mich...@niedermayer.cc> wrote: > On Wed, Nov 02, 2016 at 11:48:58AM -0400, Vittorio Giovara wrote: >> Signed-off-by: Vittorio Giovara <vittorio.giov...@gmail.com> >> --- >> Please CC. >> Vittorio >> >> libavcodec/hevc.c | 18 ++++++++++++++++++ >> libavformat/mov.c | 4 ---- >> 2 files changed, 18 insertions(+), 4 deletions(-) >> >> diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c >> index 29e0d49..b50120e 100644 >> --- a/libavcodec/hevc.c >> +++ b/libavcodec/hevc.c >> @@ -3051,6 +3051,8 @@ static int hevc_decode_frame(AVCodecContext *avctx, >> void *data, int *got_output, >> AVPacket *avpkt) >> { >> int ret; >> + int new_extradata_size; >> + uint8_t *new_extradata; >> HEVCContext *s = avctx->priv_data; >> >> if (!avpkt->size) { >> @@ -3062,6 +3064,22 @@ static int hevc_decode_frame(AVCodecContext *avctx, >> void *data, int *got_output, >> return 0; >> } >> >> + new_extradata_size = 0; >> + new_extradata = av_packet_get_side_data(avpkt, >> AV_PKT_DATA_NEW_EXTRADATA, >> + &new_extradata_size); >> + if (new_extradata_size > 0 && new_extradata) { > > new_extradata should be checked first, that should make > new_extradata_size = 0; unneeded
ok >> + if (new_extradata_size > avctx->extradata_size) { > >> + avctx->extradata = av_realloc(avctx->extradata, >> new_extradata_size); > > This leaks on reallocation failure overwriting the allocated pointer yeah, also, extradata is av_malloc'd, it is not possible call any *realloc* functions at all. I thought of av_free + av_malloc but I'm afraid a free there will interfere with frame multi threading, like it did for h264. So maybe it's better to modify hevc_decode_extradata() to support reading extradata from input buffers rather than from avctx (like h264 does). Thoughts? > also can you add a fate test ? I have a sample I can share but it's incredibly big for a fate test (85mb). -- Vittorio _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel