From 1616f9d5b4d8b409e307e569dd5b46be97564f7e Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 7 Oct 2004 14:37:05 +0000 Subject: [PATCH] fix decoding last frame fix last decoded frame being skipped --- .../src/arch/MovieTexture/MovieTexture_FFMpeg.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/stepmania/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp b/stepmania/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp index 6a29195d86..43dfa95ac7 100644 --- a/stepmania/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp +++ b/stepmania/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp @@ -299,10 +299,10 @@ int FFMpeg_Helper::ReadPacket() * and 1 if we have a frame (we may have more data in the packet). */ int FFMpeg_Helper::DecodePacket() { - if( current_packet_offset == -1 ) + if( eof == 0 && current_packet_offset == -1 ) return 0; /* no packet */ - while( eof == 1 || current_packet_offset < pkt.size ) + while( eof == 1 || (eof == 0 && current_packet_offset < pkt.size) ) { if ( GetNextTimestamp ) { @@ -742,12 +742,16 @@ bool MovieTexture_FFMpeg::DecodeFrame() { m_bWantRewind = false; + /* When resetting the clock, set it back by the length of the last frame, + * so it has a proper delay. */ + float fDelay = decoder->LastFrameDelay; + /* Restart. */ DestroyDecoder(); CreateDecoder(); decoder->Init(); - m_Clock = 0; + m_Clock = -fDelay; return false; }