diff -rup mythtv-0.23.0+fixes24158/libs/libmythtv/NuppelVideoPlayer.cpp mythtv-0.23.0+fixes24158-audiosync_patch/libs/libmythtv/NuppelVideoPlayer.cpp
old
|
new
|
NuppelVideoPlayer::NuppelVideoPlayer(boo |
254 | 254 | for (int i = 0; i < MAXTBUFFER; i++) |
255 | 255 | txtbuffers[i].buffer = new unsigned char[text_size + 1]; |
256 | 256 | |
| 257 | // Read the global audio sync (lipsync) settings |
| 258 | db_audio_sync = gContext->GetNumSettingOnHost("AudioSync", gContext->GetHostName(), 0); |
| 259 | VERBOSE(VB_IMPORTANT, LOC_ERR + QString("Saved audio timecode offset of %1").arg(db_audio_sync)); |
| 260 | SaveAudioTimecodeOffset(db_audio_sync); |
| 261 | |
257 | 262 | memset(&CC708DelayedDeletes, 0, sizeof(CC708DelayedDeletes)); |
258 | 263 | } |
259 | 264 | |
… |
… |
void NuppelVideoPlayer::ClearAfterSeek(b |
4666 | 4671 | if (savedAudioTimecodeOffset) |
4667 | 4672 | { |
4668 | 4673 | tc_wrap[TC_AUDIO] = savedAudioTimecodeOffset; |
4669 | | savedAudioTimecodeOffset = 0; |
| 4674 | //savedAudioTimecodeOffset = 0; |
4670 | 4675 | } |
4671 | 4676 | |
4672 | 4677 | SetPrebuffering(true); |
Nur in mythtv-0.23.0+fixes24158-audiosync_patch/libs/libmythtv: NuppelVideoPlayer.cpp.orig.
Nur in mythtv-0.23.0+fixes24158-audiosync_patch/libs/libmythtv: NuppelVideoPlayer.cpp.rej.
diff -rup mythtv-0.23.0+fixes24158/libs/libmythtv/NuppelVideoPlayer.h mythtv-0.23.0+fixes24158-audiosync_patch/libs/libmythtv/NuppelVideoPlayer.h
old
|
new
|
class MPUBLIC NuppelVideoPlayer : public |
804 | 804 | float m_stored_audio_stretchfactor; |
805 | 805 | bool audio_paused; |
806 | 806 | int repeat_delay; |
| 807 | long long db_audio_sync; |
807 | 808 | |
808 | 809 | // Audio warping stuff |
809 | 810 | float warpfactor; |
Nur in mythtv-0.23.0+fixes24158-audiosync_patch/libs/libmythtv: NuppelVideoPlayer.h.orig.
Nur in mythtv-0.23.0+fixes24158-audiosync_patch/libs/libmythtv: NuppelVideoPlayer.h.rej.
diff -rup mythtv-0.23.0+fixes24158/libs/libmythtv/tv_play.cpp mythtv-0.23.0+fixes24158-audiosync_patch/libs/libmythtv/tv_play.cpp
old
|
new
|
void TV::ToggleUpmix(PlayerContext *ctx) |
8292 | 8292 | // dir in 10ms jumps |
8293 | 8293 | void TV::ChangeAudioSync(PlayerContext *ctx, int dir, bool allowEdit) |
8294 | 8294 | { |
8295 | | long long newval; |
| 8295 | long long newval = 0; |
8296 | 8296 | |
8297 | 8297 | ctx->LockDeleteNVP(__FILE__, __LINE__); |
8298 | 8298 | if (!ctx->nvp) |
… |
… |
void TV::ChangeAudioSync(PlayerContext * |
8301 | 8301 | return; |
8302 | 8302 | } |
8303 | 8303 | |
| 8304 | VERBOSE(VB_PLAYBACK, LOC + QString("ChangeAudioSync (%1, %2)") |
| 8305 | .arg(audiosyncBaseline) |
| 8306 | .arg(audiosyncAdjustment)); |
| 8307 | |
8304 | 8308 | if (!audiosyncAdjustment && LONG_LONG_MIN == audiosyncBaseline) |
8305 | 8309 | audiosyncBaseline = ctx->nvp->GetAudioTimecodeOffset(); |
8306 | 8310 | |
| 8311 | VERBOSE(VB_PLAYBACK, LOC + QString("ChangeAudioSync (%1, %2, %3)") |
| 8312 | .arg(audiosyncBaseline) |
| 8313 | .arg(audiosyncAdjustment) |
| 8314 | .arg(dir)); |
| 8315 | |
8307 | 8316 | audiosyncAdjustment = allowEdit; |
8308 | 8317 | |
8309 | 8318 | if (dir == 1000000) |
… |
… |
void TV::ChangeAudioSync(PlayerContext * |
8318 | 8327 | audiosyncBaseline; |
8319 | 8328 | audiosyncBaseline = ctx->nvp->GetAudioTimecodeOffset(); |
8320 | 8329 | } |
8321 | | else |
| 8330 | else if (dir != 0) |
8322 | 8331 | { |
8323 | 8332 | newval = ctx->nvp->AdjustAudioTimecodeOffset(dir*10) - |
8324 | 8333 | audiosyncBaseline; |
8325 | 8334 | } |
| 8335 | |
| 8336 | VERBOSE(VB_PLAYBACK, LOC + QString("ChangeAudioSync - newval: %1") |
| 8337 | .arg(newval)); |
| 8338 | |
8326 | 8339 | ctx->UnlockDeleteNVP(__FILE__, __LINE__); |
8327 | 8340 | |
8328 | 8341 | OSD *osd = GetOSDLock(ctx); |
8329 | 8342 | if (osd && !browsemode) |
8330 | 8343 | { |
8331 | | QString text = QString(" %1 ms").arg(newval); |
| 8344 | QString text = QString(" %1 ms (+ %2 ms)").arg(newval).arg(audiosyncBaseline); |
8332 | 8345 | int val = (int)newval; |
8333 | 8346 | if (dir == 1000000 || dir == -1000000) |
8334 | 8347 | { |
Nur in mythtv-0.23.0+fixes24158-audiosync_patch/libs/libmythtv: tv_play.cpp.orig.
diff -rup mythtv-0.23.0+fixes24158/programs/mythfrontend/globalsettings.cpp mythtv-0.23.0+fixes24158-audiosync_patch/programs/mythfrontend/globalsettings.cpp
old
|
new
|
static HostComboBox *AudioOutputDevice() |
88 | 88 | return gc; |
89 | 89 | } |
90 | 90 | |
| 91 | static HostSpinBox *AudioSync() |
| 92 | { |
| 93 | HostSpinBox *gs = new HostSpinBox("AudioSync", -1600, 1600, 8, true); |
| 94 | gs->setLabel(QObject::tr("Audio sync offset")); |
| 95 | gs->setValue(0); |
| 96 | gs->setHelpText(QObject::tr("The global offset for audio synchronization (Lipsync)")); |
| 97 | return gs; |
| 98 | } |
| 99 | |
91 | 100 | static HostComboBox *MaxAudioChannels() |
92 | 101 | { |
93 | 102 | HostComboBox *gc = new HostComboBox("MaxChannels",false); |
… |
… |
static ConfigurationGroup *AudioSystemSe |
3441 | 3450 | vcg->setUseLabel(false); |
3442 | 3451 | |
3443 | 3452 | vcg->addChild(AudioOutputDevice()); |
| 3453 | vcg->addChild(AudioSync()); |
3444 | 3454 | |
3445 | 3455 | Setting *numchannels = MaxAudioChannels(); |
3446 | 3456 | vcg->addChild(numchannels); |