1 | Index: mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
|
---|
2 | ===================================================================
|
---|
3 | --- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (revision 22730)
|
---|
4 | +++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (working copy)
|
---|
5 | @@ -1074,13 +1074,17 @@
|
---|
6 |
|
---|
7 | m_scan_locked = (scan != kScan_Detect);
|
---|
8 |
|
---|
9 | - if (scan == m_scan)
|
---|
10 | + if (scan == m_scan) {
|
---|
11 | + bool interlaced = m_deint_possible && is_interlaced(scan);
|
---|
12 | + videosync->SetFrameInterval(frame_interval, interlaced);
|
---|
13 | return;
|
---|
14 | + }
|
---|
15 |
|
---|
16 | bool interlaced = is_interlaced(scan);
|
---|
17 | if (interlaced && !m_deint_possible)
|
---|
18 | {
|
---|
19 | m_scan = scan;
|
---|
20 | + videosync->SetFrameInterval(frame_interval, false);
|
---|
21 | return;
|
---|
22 | }
|
---|
23 |
|
---|
24 | @@ -1114,11 +1118,8 @@
|
---|
25 | if (kScan_Progressive == scan)
|
---|
26 | {
|
---|
27 | m_double_process = false;
|
---|
28 | - if (m_double_framerate)
|
---|
29 | - {
|
---|
30 | - m_double_framerate = false;
|
---|
31 | - videosync->SetFrameInterval(frame_interval, false);
|
---|
32 | - }
|
---|
33 | + m_double_framerate = false;
|
---|
34 | + videosync->SetFrameInterval(frame_interval, false);
|
---|
35 | videoOutput->SetDeinterlacingEnabled(false);
|
---|
36 | VERBOSE(VB_PLAYBACK, "Disabled deinterlacing");
|
---|
37 | }
|
---|
38 | Index: mythtv/libs/libmythtv/vsync.cpp
|
---|
39 | ===================================================================
|
---|
40 | --- mythtv/libs/libmythtv/vsync.cpp (revision 22730)
|
---|
41 | +++ mythtv/libs/libmythtv/vsync.cpp (working copy)
|
---|
42 | @@ -197,25 +197,15 @@
|
---|
43 | {
|
---|
44 | struct timeval now;
|
---|
45 | gettimeofday(&now, NULL);
|
---|
46 | - //cout << "CalcDelay: next: " << timeval_str(m_nexttrigger) << " now "
|
---|
47 | - // << timeval_str(now) << endl;
|
---|
48 |
|
---|
49 | int ret_val = (m_nexttrigger.tv_sec - now.tv_sec) * 1000000 +
|
---|
50 | (m_nexttrigger.tv_usec - now.tv_usec);
|
---|
51 |
|
---|
52 | - //cout << "delay " << ret_val << endl;
|
---|
53 | -
|
---|
54 | - if (ret_val > m_frame_interval * 2)
|
---|
55 | - {
|
---|
56 | - if (m_interlaced)
|
---|
57 | - ret_val = m_frame_interval; // same as / 2 * 2.
|
---|
58 | - else
|
---|
59 | - ret_val = m_frame_interval * 2;
|
---|
60 | -
|
---|
61 | - // set nexttrigger to our new target time
|
---|
62 | + // We don't want to allow too much underflow. If
|
---|
63 | + // the trigger time is too far in the past, reset it now.
|
---|
64 | + if (ret_val < -m_frame_interval / 2) {
|
---|
65 | m_nexttrigger.tv_sec = now.tv_sec;
|
---|
66 | m_nexttrigger.tv_usec = now.tv_usec;
|
---|
67 | - OffsetTimeval(m_nexttrigger, ret_val);
|
---|
68 | }
|
---|
69 |
|
---|
70 | return ret_val;
|
---|