Parse avctx->extradata if available.
Fixes many "non-existing PPS referenced" error messages Originally committed as revision 23363 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
22a255842b
commit
23584bec87
@ -465,6 +465,7 @@ typedef struct H264Context{
|
|||||||
int is_avc; ///< this flag is != 0 if codec is avc1
|
int is_avc; ///< this flag is != 0 if codec is avc1
|
||||||
int nal_length_size; ///< Number of bytes used for nal length (1, 2 or 4)
|
int nal_length_size; ///< Number of bytes used for nal length (1, 2 or 4)
|
||||||
|
|
||||||
|
int first_picture;
|
||||||
SPS *sps_buffers[MAX_SPS_COUNT];
|
SPS *sps_buffers[MAX_SPS_COUNT];
|
||||||
PPS *pps_buffers[MAX_PPS_COUNT];
|
PPS *pps_buffers[MAX_PPS_COUNT];
|
||||||
|
|
||||||
|
@ -245,6 +245,14 @@ static int h264_parse(AVCodecParserContext *s,
|
|||||||
ParseContext *pc = &h->s.parse_context;
|
ParseContext *pc = &h->s.parse_context;
|
||||||
int next;
|
int next;
|
||||||
|
|
||||||
|
if (h->first_picture) {
|
||||||
|
h->first_picture = 0;
|
||||||
|
if (avctx->extradata_size) {
|
||||||
|
h->s.avctx = avctx;
|
||||||
|
ff_h264_decode_extradata(h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(s->flags & PARSER_FLAG_COMPLETE_FRAMES){
|
if(s->flags & PARSER_FLAG_COMPLETE_FRAMES){
|
||||||
next= buf_size;
|
next= buf_size;
|
||||||
}else{
|
}else{
|
||||||
@ -319,6 +327,7 @@ static int init(AVCodecParserContext *s)
|
|||||||
{
|
{
|
||||||
H264Context *h = s->priv_data;
|
H264Context *h = s->priv_data;
|
||||||
h->thread_context[0] = h;
|
h->thread_context[0] = h;
|
||||||
|
h->first_picture = 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user