[Ffmpeg-devel] difference between av_read_packet() decoding and av_read_frame()

Eric Fernandez egf05
Thu Jun 22 15:27:29 CEST 2006


egf05 at doc.ic.ac.uk wrote:
> Hi,
>
> I see a different behaviour when decoding frames with the old and deprecated
> av_read_packet() function and av_read_frame().
> I need to decode mpeg frames from a video file. Using av_read_packet() to
> reconstruct a frame, I can get the video frames correctly. I can retrieve in
> AVFrame->data[0], data[1] and data[2] the three Y U and V buffers respectively,
> and can save them as a jpeg image.
> However, when I use the new av_read_frame() function, the AVFrame frames I get
> are sometimes garbled, with squares. Actually, it seems they look like P frames,
> with  blocks that correspond to changes compared to the last keyframe. Is it
> normal? How to use av_read_frame() so that I could get "normal" decoded frames,
> one by one ?
>
>   
I answer to myself, because I found the issue: I was using 
// Inform the codec that we can handle truncated bitstreams -- i.e.,
    // bitstreams where frame boundaries can fall in the middle of packets
    if(pVCodec->capabilities & CODEC_CAP_TRUNCATED)
        pVCodecCtx->flags|=CODEC_FLAG_TRUNCATED;


and this lead to corrupted av_read_frame() frames. This was necessary 
for the old way to read frames (using av_read_packet(), but is on the 
contrary harmful when using the new av_read_frame().

Eric




More information about the ffmpeg-devel mailing list