rendered paste bodyIndex: libs/libmythtv/vsync.cpp
===================================================================
--- libs/libmythtv/vsync.cpp (revision 20661)
+++ libs/libmythtv/vsync.cpp (working copy)
@@ -51,6 +51,8 @@
using namespace std;
#include "vsync.h"
+#define MAX_FRAME_INTERVALS 4 // the original code uses a maximum of 2 frame intervals for frame delay
+
bool tryingVideoSync = false;
int VideoSync::m_forceskip = 0;
@@ -174,10 +176,13 @@
{
// Offset by frame interval -- if interlaced, only delay by half
// frame interval
+ cout << "UpdateNexttrigger :: before m_nexttrigger : " << m_nexttrigger.tv_sec << "." << m_nexttrigger.tv_usec << endl;
if (m_interlaced)
OffsetTimeval(m_nexttrigger, m_frame_interval/2);
else
OffsetTimeval(m_nexttrigger, m_frame_interval);
+ cout << "UpdateNexttrigger :: m_frame_interval : " << m_frame_interval << endl;
+ cout << "UpdateNexttrigger :: after m_nexttrigger : " << m_nexttrigger.tv_sec << "." << m_nexttrigger.tv_usec << endl;
}
/** \fn VideoSync::CalcDelay()
@@ -196,22 +201,27 @@
//cout << "CalcDelay: next: " << timeval_str(m_nexttrigger) << " now "
// << timeval_str(now) << endl;
+ cout << "CalcDelay :: before now : " << now.tv_sec << "." << now.tv_usec << endl;
+ cout << "CalcDelay :: before m_nexttrigger : " << m_nexttrigger.tv_sec << "." << m_nexttrigger.tv_usec << endl;
int ret_val = (m_nexttrigger.tv_sec - now.tv_sec) * 1000000 +
(m_nexttrigger.tv_usec - now.tv_usec);
+ cout << "CalcDelay :: before m_delay " << ret_val << endl;
//cout << "delay " << ret_val << endl;
- if (ret_val > m_frame_interval * 2)
+ if (ret_val > (m_frame_interval * MAX_FRAME_INTERVALS))
{
if (m_interlaced)
- ret_val = m_frame_interval; // same as / 2 * 2.
+ ret_val = int(m_frame_interval * (MAX_FRAME_INTERVALS / 2)); // same as / 2 * MAX_FRAME_INTERVALS.
else
- ret_val = m_frame_interval * 2;
+ ret_val = m_frame_interval * MAX_FRAME_INTERVALS;
// set nexttrigger to our new target time
m_nexttrigger.tv_sec = now.tv_sec;
m_nexttrigger.tv_usec = now.tv_usec;
OffsetTimeval(m_nexttrigger, ret_val);
+ cout << "CalcDelay :: after m_nexttrigger : " << m_nexttrigger.tv_sec << "." << m_nexttrigger.tv_usec << endl;
+ cout << "CalcDelay :: after m_delay " << ret_val << endl;
}
return ret_val;