[FFmpeg-cvslog] r23363 - in trunk/libavcodec: h264.h h264_parser.c

hyc subversion
Fri May 28 20:50:39 CEST 2010


Author: hyc
Date: Fri May 28 20:50:39 2010
New Revision: 23363

Log:
Parse avctx->extradata if available.
Fixes many "non-existing PPS referenced" error messages

Modified:
   trunk/libavcodec/h264.h
   trunk/libavcodec/h264_parser.c

Modified: trunk/libavcodec/h264.h
==============================================================================
--- trunk/libavcodec/h264.h	Fri May 28 20:21:57 2010	(r23362)
+++ trunk/libavcodec/h264.h	Fri May 28 20:50:39 2010	(r23363)
@@ -465,6 +465,7 @@ typedef struct H264Context{
     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];
 

Modified: trunk/libavcodec/h264_parser.c
==============================================================================
--- trunk/libavcodec/h264_parser.c	Fri May 28 20:21:57 2010	(r23362)
+++ trunk/libavcodec/h264_parser.c	Fri May 28 20:50:39 2010	(r23363)
@@ -245,6 +245,14 @@ static int h264_parse(AVCodecParserConte
     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 @@ static int init(AVCodecParserContext *s)
 {
     H264Context *h = s->priv_data;
     h->thread_context[0] = h;
+    h->first_picture = 1;
     return 0;
 }
 



More information about the ffmpeg-cvslog mailing list