[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