h264: pass buffer & size to ff_h264_decode_extradata()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
101e38e08a
commit
f71c761a9e
@ -1018,17 +1018,17 @@ static av_cold void common_init(H264Context *h){
|
||||
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;
|
||||
|
||||
if(avctx->extradata[0] == 1){
|
||||
if(buf[0] == 1){
|
||||
int i, cnt, nalsize;
|
||||
unsigned char *p = avctx->extradata;
|
||||
const unsigned char *p = buf;
|
||||
|
||||
h->is_avc = 1;
|
||||
|
||||
if(avctx->extradata_size < 7) {
|
||||
if(size < 7) {
|
||||
av_log(avctx, AV_LOG_ERROR, "avcC too short\n");
|
||||
return -1;
|
||||
}
|
||||
@ -1061,10 +1061,10 @@ int ff_h264_decode_extradata(H264Context *h)
|
||||
p += nalsize;
|
||||
}
|
||||
// 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 {
|
||||
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 0;
|
||||
@ -1108,7 +1108,7 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx){
|
||||
}
|
||||
|
||||
if(avctx->extradata_size > 0 && avctx->extradata &&
|
||||
ff_h264_decode_extradata(h))
|
||||
ff_h264_decode_extradata(h, avctx->extradata, avctx->extradata_size))
|
||||
return -1;
|
||||
|
||||
if(h->sps.bitstream_restriction_flag && s->avctx->has_b_frames < h->sps.num_reorder_frames){
|
||||
|
@ -663,7 +663,7 @@ int ff_h264_check_intra_pred_mode(H264Context *h, int mode);
|
||||
void ff_h264_write_back_intra_pred_mode(H264Context *h);
|
||||
void ff_h264_hl_decode_mb(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_end(AVCodecContext *avctx);
|
||||
av_cold void ff_h264_decode_init_vlc(void);
|
||||
|
@ -251,7 +251,7 @@ static int h264_parse(AVCodecParserContext *s,
|
||||
h->got_first = 1;
|
||||
if (avctx->extradata_size) {
|
||||
h->s.avctx = avctx;
|
||||
ff_h264_decode_extradata(h);
|
||||
ff_h264_decode_extradata(h, avctx->extradata, avctx->extradata_size);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user