# HG changeset patch # User hyc # Date 1275072639 0 # Node ID f918fb753b31ffca473c12b2764fe925b680ab29 # Parent 2064f8a1691ee188004037c601324d2c204f74e6 Parse avctx->extradata if available. Fixes many "non-existing PPS referenced" error messages diff -r 2064f8a1691e -r f918fb753b31 h264.h --- a/h264.h Fri May 28 07:22:04 2010 +0000 +++ b/h264.h Fri May 28 18:50:39 2010 +0000 @@ -465,6 +465,7 @@ 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 first_picture; SPS *sps_buffers[MAX_SPS_COUNT]; PPS *pps_buffers[MAX_PPS_COUNT]; diff -r 2064f8a1691e -r f918fb753b31 h264_parser.c --- a/h264_parser.c Fri May 28 07:22:04 2010 +0000 +++ b/h264_parser.c Fri May 28 18:50:39 2010 +0000 @@ -245,6 +245,14 @@ ParseContext *pc = &h->s.parse_context; 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){ next= buf_size; }else{ @@ -319,6 +327,7 @@ { H264Context *h = s->priv_data; h->thread_context[0] = h; + h->first_picture = 1; return 0; }