changeset 11790:f918fb753b31 libavcodec

Parse avctx->extradata if available. Fixes many "non-existing PPS referenced" error messages
author hyc
date Fri, 28 May 2010 18:50:39 +0000
parents 2064f8a1691e
children 51abd780bda6
files h264.h h264_parser.c
diffstat 2 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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];
 
--- 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;
 }