Ticket #7772: mythtv-audiosync.patch

File mythtv-audiosync.patch, 4.0 KB (added by Robert S, 14 years ago)
Line 
1--- mythtv/programs/mythfrontend/globalsettings.cpp     2009-11-19 12:34:41.412950656 +0100
2+++ mythtv/programs/mythfrontend/globalsettings.cpp     2009-11-28 13:22:56.416257520 +0100
3@@ -2757,7 +2757,6 @@
4 
5 static HostCheckBox *UseFixedWindowSize()
6 {
7-{
8     HostCheckBox *gc = new HostCheckBox("UseFixedWindowSize");
9     gc->setLabel(QObject::tr("Use fixed window size"));
10     gc->setValue(true);
11@@ -2766,6 +2765,14 @@
12                         "window can be resized"));
13     return gc;
14 }
15+
16+static HostSpinBox *AudioSync()
17+{
18+    HostSpinBox *gs = new HostSpinBox("AudioSync", -1600, 1600, 8, true);
19+    gs->setLabel(QObject::tr("Audio sync offset"));
20+    gs->setValue(0);
21+    gs->setHelpText(QObject::tr("The global offset for audio synchronization (Lipsync)"));
22+    return gs;
23 }
24 
25 static HostComboBox *MythDateFormat()
26@@ -3504,6 +3511,7 @@
27     vcg->setUseLabel(false);
28 
29     vcg->addChild(AudioOutputDevice());
30+    vcg->addChild(AudioSync());
31 
32     Setting *numchannels = MaxAudioChannels();
33     vcg->addChild(numchannels);
34--- mythtv/libs/libmythtv/tv_play.cpp   2009-11-19 12:34:01.591945869 +0100
35+++ mythtv/libs/libmythtv/tv_play.cpp   2009-11-28 13:19:59.436006433 +0100
36@@ -8132,7 +8132,7 @@
37 // dir in 10ms jumps
38 void TV::ChangeAudioSync(PlayerContext *ctx, int dir, bool allowEdit)
39 {
40-    long long newval;
41+    long long newval = 0;
42 
43     ctx->LockDeleteNVP(__FILE__, __LINE__);
44     if (!ctx->nvp)
45@@ -8141,9 +8141,18 @@
46         return;
47     }
48 
49+    VERBOSE(VB_PLAYBACK, LOC + QString("ChangeAudioSync (%1, %2)")
50+            .arg(audiosyncBaseline)
51+            .arg(audiosyncAdjustment));
52+
53     if (!audiosyncAdjustment && LONG_LONG_MIN == audiosyncBaseline)
54         audiosyncBaseline = ctx->nvp->GetAudioTimecodeOffset();
55 
56+    VERBOSE(VB_PLAYBACK, LOC + QString("ChangeAudioSync (%1, %2, %3)")
57+            .arg(audiosyncBaseline)
58+            .arg(audiosyncAdjustment)
59+            .arg(dir));
60+
61     audiosyncAdjustment = allowEdit;
62 
63     if (dir == 1000000)
64@@ -8158,17 +8167,21 @@
65                  audiosyncBaseline;
66         audiosyncBaseline = ctx->nvp->GetAudioTimecodeOffset();
67     }
68-    else
69+    else if (dir != 0)
70     {
71         newval = ctx->nvp->AdjustAudioTimecodeOffset(dir*10) -
72                  audiosyncBaseline;
73     }
74+
75+    VERBOSE(VB_PLAYBACK, LOC + QString("ChangeAudioSync - newval: %1")
76+            .arg(newval));
77+
78     ctx->UnlockDeleteNVP(__FILE__, __LINE__);
79 
80     OSD *osd = GetOSDLock(ctx);
81     if (osd && !browsemode)
82     {
83-        QString text = QString(" %1 ms").arg(newval);
84+        QString text = QString(" %1 ms (+ %2 ms)").arg(newval).arg(audiosyncBaseline);
85         int val = (int)newval;
86         if (dir == 1000000 || dir == -1000000)
87         {
88--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp 2009-11-25 18:22:26.833584919 +0100
89+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp 2009-11-28 13:19:59.408009016 +0100
90@@ -294,6 +294,13 @@
91     text_size = 8 * (sizeof(teletextsubtitle) + VT_WIDTH);
92     for (int i = 0; i < MAXTBUFFER; i++)
93         txtbuffers[i].buffer = new unsigned char[text_size + 1];
94+
95+    // Read the global audio sync (lipsync) settings
96+    db_audio_sync = gContext->GetNumSettingOnHost(
97+            "AudioSync", gContext->GetHostName(), 0);
98+
99+    VERBOSE(VB_IMPORTANT, LOC_ERR + QString("Saved audio timecode offset of %1").arg(db_audio_sync));
100+    SaveAudioTimecodeOffset(db_audio_sync);
101 }
102 
103 NuppelVideoPlayer::~NuppelVideoPlayer(void)
104@@ -4784,7 +4789,7 @@
105     if (savedAudioTimecodeOffset)
106     {
107         tc_wrap[TC_AUDIO] = savedAudioTimecodeOffset;
108-        savedAudioTimecodeOffset = 0;
109+        //savedAudioTimecodeOffset = 0;
110     }
111 
112     SetPrebuffering(true);
113--- mythtv/libs/libmythtv/NuppelVideoPlayer.h 2009-11-19 12:34:01.418700673 +0100
114+++ mythtv/libs/libmythtv/NuppelVideoPlayer.h   2009-11-28 13:19:59.384000668 +0100
115@@ -803,6 +803,7 @@
116     bool       decode_extra_audio;
117     float      m_stored_audio_stretchfactor;
118     bool       audio_paused;
119+    long long  db_audio_sync;
120
121         // Audio warping stuff
122         bool       usevideotimebase;