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; |
---|