All pastes #1445389 Raw Edit

Stuff

public text v1 · immutable
#1445389 ·published 2009-06-02 21:10 UTC
rendered paste body
Index: 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;