Commit 4ba39683 authored by Michael Niedermayer's avatar Michael Niedermayer

h264: pass buffer & size to ff_h264_decode_extradata()

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 57d5d5f6
...@@ -991,17 +991,17 @@ static av_cold void common_init(H264Context *h){ ...@@ -991,17 +991,17 @@ static av_cold void common_init(H264Context *h){
memset(h->pps.scaling_matrix8, 16, 2*64*sizeof(uint8_t)); memset(h->pps.scaling_matrix8, 16, 2*64*sizeof(uint8_t));
} }
int ff_h264_decode_extradata(H264Context *h) int ff_h264_decode_extradata(H264Context *h, const uint8_t *buf, int size)
{ {
AVCodecContext *avctx = h->s.avctx; AVCodecContext *avctx = h->s.avctx;
if(avctx->extradata[0] == 1){ if(buf[0] == 1){
int i, cnt, nalsize; int i, cnt, nalsize;
unsigned char *p = avctx->extradata; const unsigned char *p = buf;
h->is_avc = 1; h->is_avc = 1;
if(avctx->extradata_size < 7) { if(size < 7) {
av_log(avctx, AV_LOG_ERROR, "avcC too short\n"); av_log(avctx, AV_LOG_ERROR, "avcC too short\n");
return -1; return -1;
} }
...@@ -1030,10 +1030,10 @@ int ff_h264_decode_extradata(H264Context *h) ...@@ -1030,10 +1030,10 @@ int ff_h264_decode_extradata(H264Context *h)
p += nalsize; p += nalsize;
} }
// Now store right nal length size, that will be use to parse all other nals // Now store right nal length size, that will be use to parse all other nals
h->nal_length_size = (avctx->extradata[4] & 0x03) + 1; h->nal_length_size = (buf[4] & 0x03) + 1;
} else { } else {
h->is_avc = 0; h->is_avc = 0;
if(decode_nal_units(h, avctx->extradata, avctx->extradata_size) < 0) if(decode_nal_units(h, buf, size) < 0)
return -1; return -1;
} }
return 0; return 0;
...@@ -1077,7 +1077,7 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx){ ...@@ -1077,7 +1077,7 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx){
} }
if(avctx->extradata_size > 0 && avctx->extradata && if(avctx->extradata_size > 0 && avctx->extradata &&
ff_h264_decode_extradata(h)) ff_h264_decode_extradata(h, avctx->extradata, avctx->extradata_size))
return -1; return -1;
if(h->sps.bitstream_restriction_flag && s->avctx->has_b_frames < h->sps.num_reorder_frames){ if(h->sps.bitstream_restriction_flag && s->avctx->has_b_frames < h->sps.num_reorder_frames){
......
...@@ -672,7 +672,7 @@ int ff_h264_check_intra_pred_mode(H264Context *h, int mode); ...@@ -672,7 +672,7 @@ int ff_h264_check_intra_pred_mode(H264Context *h, int mode);
void ff_h264_hl_decode_mb(H264Context *h); void ff_h264_hl_decode_mb(H264Context *h);
int ff_h264_frame_start(H264Context *h); int ff_h264_frame_start(H264Context *h);
int ff_h264_decode_extradata(H264Context *h); int ff_h264_decode_extradata(H264Context *h, const uint8_t *buf, int size);
av_cold int ff_h264_decode_init(AVCodecContext *avctx); av_cold int ff_h264_decode_init(AVCodecContext *avctx);
av_cold int ff_h264_decode_end(AVCodecContext *avctx); av_cold int ff_h264_decode_end(AVCodecContext *avctx);
av_cold void ff_h264_decode_init_vlc(void); av_cold void ff_h264_decode_init_vlc(void);
......
...@@ -257,7 +257,7 @@ static int h264_parse(AVCodecParserContext *s, ...@@ -257,7 +257,7 @@ static int h264_parse(AVCodecParserContext *s,
// Note that estimate_timings_from_pts does exactly this. // Note that estimate_timings_from_pts does exactly this.
if (!avctx->has_b_frames) if (!avctx->has_b_frames)
h->s.low_delay = 1; h->s.low_delay = 1;
ff_h264_decode_extradata(h); ff_h264_decode_extradata(h, avctx->extradata, avctx->extradata_size);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment