Ticket #7772: mythtv-audiosync-0.23.patch

File mythtv-audiosync-0.23.patch, 5.2 KB (added by Software Schlosser, 14 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);