All pastes #1687643 Raw Edit

Anonymous

public text v1 · immutable
#1687643 ·published 2009-11-26 03:22 UTC
rendered paste body
Index: NuppelVideoPlayer.cpp
===================================================================
--- NuppelVideoPlayer.cpp	(revision 22909)
+++ NuppelVideoPlayer.cpp	(working copy)
@@ -248,6 +248,7 @@
       lastsync(false),              m_playing_slower(false),
       m_stored_audio_stretchfactor(1.0),
       audio_paused(false),
+      repeat_delay(0),
       // Audio warping stuff
       usevideotimebase(false),
       warpfactor(1.0f),             warpfactor_avg(1.0f),
@@ -2361,6 +2362,8 @@
 
     avsync_adjustment = 0;
 
+    repeat_delay = 0;
+
     if (usevideotimebase)
     {
         warpfactor_avg = gContext->GetNumSetting("WarpFactor", 0);
@@ -2478,7 +2481,7 @@
 
         VERBOSE(VB_PLAYBACK|VB_TIMESTAMP, QString("AVSync waitforframe %1 %2")
                 .arg(avsync_adjustment).arg(m_double_framerate));
-        videosync->WaitForFrame(avsync_adjustment);
+        videosync->WaitForFrame(avsync_adjustment + repeat_delay);
         VERBOSE(VB_PLAYBACK|VB_TIMESTAMP, "AVSync show");
         if (!resetvideo)
             videoOutput->Show(ps);
@@ -2530,6 +2533,9 @@
                 videoOutput->Show(ps);
             }
         }
+        repeat_delay = buffer->repeat_pict : frame_interval * buffer->repeat_pict * 0.5 ? 0;
+        if (repeat_delay)
+            VERBOSE(VB_PLAYBACK, QString("A/V repeat_pict detected adding %1 us repeat delay").arg(repeat_delay));
     }
     else
     {
Index: NuppelVideoPlayer.h
===================================================================
--- NuppelVideoPlayer.h	(revision 22909)
+++ NuppelVideoPlayer.h	(working copy)
@@ -803,6 +803,7 @@
     bool       decode_extra_audio;
     float      m_stored_audio_stretchfactor;
     bool       audio_paused;
+    int        frame_delay;
 
     // Audio warping stuff
     bool       usevideotimebase;