[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