Ticket #7772: mythtv-audiosync-0.23.patch

File mythtv-audiosync-0.23.patch, 5.2 KB (added by Software Schlosser, 2 years ago)

Patch for v0.23

  • libs/libmythtv/NuppelVideoPlayer.cpp

    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 
    254254    for (int i = 0; i < MAXTBUFFER; i++) 
    255255        txtbuffers[i].buffer = new unsigned char[text_size + 1]; 
    256256 
     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 
    257262    memset(&CC708DelayedDeletes, 0, sizeof(CC708DelayedDeletes)); 
    258263} 
    259264 
    void NuppelVideoPlayer::ClearAfterSeek(b 
    46664671    if (savedAudioTimecodeOffset) 
    46674672    { 
    46684673        tc_wrap[TC_AUDIO] = savedAudioTimecodeOffset; 
    4669         savedAudioTimecodeOffset = 0; 
     4674        //savedAudioTimecodeOffset = 0; 
    46704675    } 
    46714676 
    46724677    SetPrebuffering(true); 
  • libs/libmythtv/NuppelVideoPlayer.h

    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 
    804804    float      m_stored_audio_stretchfactor; 
    805805    bool       audio_paused; 
    806806    int        repeat_delay; 
     807        long long       db_audio_sync; 
    807808 
    808809    // Audio warping stuff 
    809810    float      warpfactor; 
  • libs/libmythtv/tv_play.cpp

    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) 
    82928292// dir in 10ms jumps 
    82938293void TV::ChangeAudioSync(PlayerContext *ctx, int dir, bool allowEdit) 
    82948294{ 
    8295     long long newval; 
     8295    long long newval = 0; 
    82968296 
    82978297    ctx->LockDeleteNVP(__FILE__, __LINE__); 
    82988298    if (!ctx->nvp) 
    void TV::ChangeAudioSync(PlayerContext * 
    83018301        return; 
    83028302    } 
    83038303 
     8304    VERBOSE(VB_PLAYBACK, LOC + QString("ChangeAudioSync (%1, %2)") 
     8305            .arg(audiosyncBaseline) 
     8306            .arg(audiosyncAdjustment)); 
     8307 
    83048308    if (!audiosyncAdjustment && LONG_LONG_MIN == audiosyncBaseline) 
    83058309        audiosyncBaseline = ctx->nvp->GetAudioTimecodeOffset(); 
    83068310 
     8311    VERBOSE(VB_PLAYBACK, LOC + QString("ChangeAudioSync (%1, %2, %3)") 
     8312            .arg(audiosyncBaseline) 
     8313            .arg(audiosyncAdjustment) 
     8314            .arg(dir)); 
     8315 
    83078316    audiosyncAdjustment = allowEdit; 
    83088317 
    83098318    if (dir == 1000000) 
    void TV::ChangeAudioSync(PlayerContext * 
    83188327                 audiosyncBaseline; 
    83198328        audiosyncBaseline = ctx->nvp->GetAudioTimecodeOffset(); 
    83208329    } 
    8321     else 
     8330    else if (dir != 0) 
    83228331    { 
    83238332        newval = ctx->nvp->AdjustAudioTimecodeOffset(dir*10) - 
    83248333                 audiosyncBaseline; 
    83258334    } 
     8335 
     8336    VERBOSE(VB_PLAYBACK, LOC + QString("ChangeAudioSync - newval: %1") 
     8337            .arg(newval)); 
     8338 
    83268339    ctx->UnlockDeleteNVP(__FILE__, __LINE__); 
    83278340 
    83288341    OSD *osd = GetOSDLock(ctx); 
    83298342    if (osd && !browsemode) 
    83308343    { 
    8331         QString text = QString(" %1 ms").arg(newval); 
     8344        QString text = QString(" %1 ms (+ %2 ms)").arg(newval).arg(audiosyncBaseline); 
    83328345        int val = (int)newval; 
    83338346        if (dir == 1000000 || dir == -1000000) 
    83348347        { 
  • programs/mythfrontend/globalsettings.cpp

    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() 
    8888    return gc; 
    8989} 
    9090 
     91static 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 
    91100static HostComboBox *MaxAudioChannels() 
    92101{ 
    93102    HostComboBox *gc = new HostComboBox("MaxChannels",false); 
    static ConfigurationGroup *AudioSystemSe 
    34413450    vcg->setUseLabel(false); 
    34423451 
    34433452    vcg->addChild(AudioOutputDevice()); 
     3453    vcg->addChild(AudioSync()); 
    34443454 
    34453455    Setting *numchannels = MaxAudioChannels(); 
    34463456    vcg->addChild(numchannels);