Ticket #7772: mythtv-audiosync.2.patch
| File mythtv-audiosync.2.patch, 4.0 KB (added by , 16 years ago) |
|---|
-
libs/libmythtv/NuppelVideoPlayer.cpp
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 = gCoreContext->GetNumSettingOnHost("AudioSync", gCoreContext->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); -
libs/libmythtv/NuppelVideoPlayer.h
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; -
libs/libmythtv/tv_play.cpp
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 { -
programs/mythfrontend/globalsettings.cpp
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(new AudioOutputDevice()); 3453 vcg->addChild(AudioSync()); 3444 3454 3445 3455 Setting *numchannels = MaxAudioChannels(); 3446 3456 vcg->addChild(numchannels);
