rendered paste bodyIndex: 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;