mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
avcodec/h264: support sps/pps AV_PKT_DATA_NEW_EXTRADATA
Commit 601c238854
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@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
584f396132
commit
73757577cb
@ -847,7 +847,7 @@ fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
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;
|
||||
@ -974,16 +974,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);
|
||||
|
Loading…
Reference in New Issue
Block a user