Ticket #13383: 20190201_1637_catchup.patch

File 20190201_1637_catchup.patch, 1.4 KB (added by Peter Bennett, 20 months ago)

Proposed patch to catch up synchronization faster when off by more than 200 ms

  • mythtv/libs/libmythtv/mythplayer.cpp

    diff --git a/mythtv/libs/libmythtv/mythplayer.cpp b/mythtv/libs/libmythtv/mythplayer.cpp
    index 5b80c452a3b..d7f6b6859c2 100644
    a b void MythPlayer::AVSync2(VideoFrame *buffer) 
    22492249            // Get video in sync with audio
    22502250            audio_adjustment = audiotimecode - videotimecode;
    22512251            int sign = audio_adjustment < 0 ? -1 : 1;
     2252            int64_t fix_amount = avsync2adjustms;
     2253            // Faster catch-up when off by more than 200 ms
     2254            if (audio_adjustment * sign > 200)
     2255            {
     2256                fix_amount = audio_adjustment * sign - 200;
     2257                if (fix_amount < avsync2adjustms)
     2258                    fix_amount = avsync2adjustms;
     2259            }
     2260            // If there is excess audio - throw it away.
     2261            if (audio_adjustment < -300)
     2262                audio.Reset();
    22522263            if (audio_adjustment * sign > 40)
    22532264            {
    22542265                // adjust by AVSyncIncrementMS milliseconds at a time (range 1-40)
    2255                 rtcbase -= (int64_t)1000000 * avsync2adjustms * sign / playspeed1000;
     2266                rtcbase -= (int64_t)1000000 * fix_amount * sign / playspeed1000;
    22562267                LOG(VB_PLAYBACK, LOG_INFO, LOC +
    22572268                    QString("AV Sync, audio ahead by %1 ms").arg(audio_adjustment));
    22582269            }