[FFmpeg-devel] [PATCH] avcodec/h264: support sps/pps AV_PKT_DATA_NEW_EXTRADATA

Olly Woodman ollywoodman at gmail.com
Mon May 18 23:21:40 EEST 2020


Do I need to do anything else for someone to take a look? It would be great
to get it merged, if possible, and I think the change itself is pretty
trivial. Apologies if this is being pinged too soon; I'm trying to follow
the guidance on the FFmpeg contributing page ("if some time passes without
reaction, send a reminder by email.").

Thanks!

On Fri, 8 May 2020 at 03:10, Oliver Woodman <ollywoodman at gmail.com> wrote:

> https://github.com/FFmpeg/FFmpeg/commit/601c238 added support
> for AV_PKT_DATA_NEW_EXTRADATA, but only for avcC extradata.
> This commit adds support for sps/pps extradata as well. This
> makes support consistent for passing new extradata consistent
> with the types of extradata that can be passed when initializing
> the decoder.
>
> Signed-off-by: Oliver Woodman <ollywoodman at gmail.com>
> ---
>  libavcodec/h264dec.c | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
> index 4c355feb18..c1d103a474 100644
> --- a/libavcodec/h264dec.c
> +++ b/libavcodec/h264dec.c
> @@ -829,7 +829,7 @@ static int output_frame(H264Context *h, AVFrame *dst,
> H264Picture *srcp)
>      return 0;
>  }
>
> -static int is_extra(const uint8_t *buf, int buf_size)
> +static int is_avcc_extradata(const uint8_t *buf, int buf_size)
>  {
>      int cnt= buf[5]&0x1f;
>      const uint8_t *p= buf+6;
> @@ -956,16 +956,15 @@ static int h264_decode_frame(AVCodecContext *avctx,
> void *data,
>      if (buf_size == 0)
>          return send_next_delayed_frame(h, pict, got_frame, 0);
>
> -    if (h->is_avc && av_packet_get_side_data(avpkt,
> AV_PKT_DATA_NEW_EXTRADATA, NULL)) {
> +    if (av_packet_get_side_data(avpkt, AV_PKT_DATA_NEW_EXTRADATA, NULL)) {
>          int side_size;
>          uint8_t *side = av_packet_get_side_data(avpkt,
> AV_PKT_DATA_NEW_EXTRADATA, &side_size);
> -        if (is_extra(side, side_size))
> -            ff_h264_decode_extradata(side, side_size,
> -                                     &h->ps, &h->is_avc,
> &h->nal_length_size,
> -                                     avctx->err_recognition, avctx);
> +        ff_h264_decode_extradata(side, side_size,
> +                                 &h->ps, &h->is_avc, &h->nal_length_size,
> +                                 avctx->err_recognition, avctx);
>      }
>      if (h->is_avc && buf_size >= 9 && buf[0]==1 && buf[2]==0 &&
> (buf[4]&0xFC)==0xFC) {
> -        if (is_extra(buf, buf_size))
> +        if (is_avcc_extradata(buf, buf_size))
>              return ff_h264_decode_extradata(buf, buf_size,
>                                              &h->ps, &h->is_avc,
> &h->nal_length_size,
>                                              avctx->err_recognition,
> avctx);
> --
> 2.26.0.110.g2183baf09c-goog
>
>


More information about the ffmpeg-devel mailing list