[FFmpeg-devel] [PATCH 2/2] hevc: Support extradata changes

Michael Niedermayer michael at niedermayer.cc
Tue Nov 8 01:44:05 EET 2016


On Mon, Nov 07, 2016 at 04:52:23PM -0500, Vittorio Giovara wrote:
> On Sat, Nov 5, 2016 at 9:21 AM, Michael Niedermayer
> <michael at niedermayer.cc> wrote:
> > On Wed, Nov 02, 2016 at 11:48:58AM -0400, Vittorio Giovara wrote:
> >> Signed-off-by: Vittorio Giovara <vittorio.giovara at 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?

the decoder should not change extradata, yes directly reading would
be best probably


> 
> > also can you add a fate test ?
> 
> I have a sample I can share but it's incredibly big for a fate test (85mb).

:(

cant it be cut and glued so its smaller ?

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Those who are best at talking, realize last or never when they are wrong.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20161108/d8a67e50/attachment.sig>


More information about the ffmpeg-devel mailing list