[Libav-user] avcodec_decode_video2 missing the first 8 frames
cyril poulet
cyril.poulet at centraliens.net
Tue Jul 22 14:30:43 CEST 2014
according to the doc, av_read_packet does not check wether the data in the
decoded frame is a valid image or not.
As it is always the 8 first "frames" missing, I would assume it is the
header that gets decoded first.
Have you noticed missing images when comparing the first real decoded image
and your stream in a player ?
2014-07-21 18:37 GMT+02:00 Matt Orlando <morlando616 at gmail.com>:
> Hi folks,
>
> I'm having some trouble with the decoding of my h.264 movies. I've tested
> with different videos, one 64 frames long and another 52 frames long. In
> both cases, the first 8 frames (exactly 8) weren't decoding. In other
> words, the call to avcodec_decode_video2 returns 0 for the got_picture
> variable. I track the frames read and received for our system and I never
> get notice that all the frames were read because my counter doesn't
> increase for the first 8...however all of the subsequent calls to
> av_read_frame return EOF. To prevent any confusion (or perhaps just to add
> some context), I need the raw data from each decoded frame since I don't
> treat them as a frame to a movie but rather a frame of x,y,z positional
> data.
>
> I work in Unity but made a plugin to communicate with the libraries to
> read and decode the h.264 movies. This is our update function:
>
> bool H264Stream::Update(int desiredFrame)
> {
> if( desiredFrame <= m_FrameRead )
> return true;
>
> int frameFinished = 0;
>
> if( av_read_frame( m_AVFormat, &m_Packet ) >= 0 )
> {
> if( m_Packet.stream_index == m_AVStream->index )
> {
> av_frame_unref( m_AVFrame );
> avcodec_decode_video2( m_AVContext, m_AVFrame, &frameFinished,
> &m_Packet );
>
> if( frameFinished != 0 )
> {
> sws_scale( m_SwsContext, m_AVFrame->data, m_AVFrame->linesize,
> 0, m_AVContext->height, m_Picture->data, m_Picture->linesize );
>
> m_FrameRead++;
>
> av_free_packet( &m_Packet );
> }
> }
> }
>
> return m_FrameRead >= desiredFrame;
> }
>
>
> Oh, quick note, this is my first time using these libraries so if there's
> something blatantly wrong with how I'm doing this, please let me know. :)
> Just keep in mind, it's the full frame of 'raw' data I use (post-decode)
> that I pass back into my Unity c# scripts.
>
> Thanks for the help everyone!
> -Matt
>
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20140722/05955d7a/attachment.html>
More information about the Libav-user
mailing list