[Libav-user] avcodec_decode_video2 missing the first 8 frames

Matt Orlando morlando616 at gmail.com
Mon Jul 21 18:37:45 CEST 2014


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20140721/262c4228/attachment.html>


More information about the Libav-user mailing list