[Libav-user] Difference between AVCodecParserContext->parser->parser_parse() and avcodec_decode_video2()

Tim van den Kerkhof tim.van.den.kerkhof at vinotion.nl
Fri Jun 10 15:13:05 CEST 2011

On 06/10/2011 02:47 PM, Hendrik Leppkes wrote:
> Hi,
> You must've missed part of the mplayer code.
> The parser is only that, a parser. It parses the data, extracts some
> metadata and puts complete frames back together, it doesn't do any
> actual decoding.
> For decoding you'll always have to use avcodec_decode_video2.
> In my experience, you'll usually want to do both, but that depends on
> the source of the content.
> Regards,
> Hendrik
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user

Thank you for your response.
I indeed mist a part of the Mplayer code, where they use 
Can you give me some pointers on how to use avcodec_decode_video2 when 
all I have is an unsigned char* buffer?
I already tried adding 0x000001 as the first three bytes of the buffer 
(and resizing it to len+FF_INPUT_BUFFER_PADDING_SIZE) and then storing 
it as AVPacket.
avcodec_decode_video2() then fails with these errors:

[h264 @ 0x203d720]non-existing PPS 0 referenced
[h264 @ 0x203d720]decode_slice_header error
[h264 @ 0x203d720]no frame!

Is there something small forgot or is the decoding of H264 not as simple 
as I hoped?



More information about the Libav-user mailing list