Ticket #13172: 20171108_#13172_audiosync.patch

File 20171108_#13172_audiosync.patch, 2.2 KB (added by Peter Bennett, 2 years ago)

Proposed fix

  • mythtv/libs/libmythtv/avformatdecoder.cpp

    diff --git a/mythtv/libs/libmythtv/avformatdecoder.cpp b/mythtv/libs/libmythtv/avformatdecoder.cpp
    index 832967c..5b349b3 100644
    a b AvFormatDecoder::AvFormatDecoder(MythPlayer *parent, 
    431431    cc608_build_parity_table(cc608_parity_table);
    432432
    433433    SetIdrOnlyKeyframes(true);
     434    m_audioReadAhead = gCoreContext->GetNumSetting("AudioReadAhead", 250);
    434435
    435     LOG(VB_PLAYBACK, LOG_DEBUG, LOC + QString("PlayerFlags: 0x%1")
    436         .arg(playerFlags, 0, 16));
     436    LOG(VB_PLAYBACK, LOG_INFO, LOC + QString("PlayerFlags: 0x%1, AudioReadAhead: %2 msec")
     437        .arg(playerFlags, 0, 16).arg(m_audioReadAhead));
    437438}
    438439
    439440AvFormatDecoder::~AvFormatDecoder()
    bool AvFormatDecoder::GetFrame(DecodeType decodetype) 
    49044905
    49054906        if (gotVideoFrame)
    49064907        {
     4908            int adjust = 0;
     4909            if (lowbuffers)
     4910                adjust = 100;
    49074911            if (decodetype == kDecodeNothing)
    49084912            {
    49094913                // no need to buffer audio or video if we
    bool AvFormatDecoder::GetFrame(DecodeType decodetype) 
    49134917            }
    49144918            else if ((decodetype & kDecodeAV) == kDecodeAV &&
    49154919                     (storedPackets.count() < max_video_queue_size) &&
    4916                      lastapts < (lowbuffers ? lastvpts + 100 : lastvpts) &&
     4920                     // buffer audio to prevent audio buffer
     4921                     // underruns in case you are setting negative values
     4922                     // in Adjust Audio Sync.
     4923                     lastapts < lastvpts + adjust + m_audioReadAhead &&
    49174924                     !ringBuffer->IsInStillFrame())
    49184925            {
    49194926                storevideoframes = true;
  • mythtv/libs/libmythtv/avformatdecoder.h

    diff --git a/mythtv/libs/libmythtv/avformatdecoder.h b/mythtv/libs/libmythtv/avformatdecoder.h
    index 5d1bcfb..9573364 100644
    a b class AvFormatDecoder : public DecoderBase 
    372372    bool  codec_is_mpeg;
    373373    bool  m_processFrames;
    374374    bool  m_streams_changed;
     375    // Value in milliseconds, from setting AudioReadAhead
     376    int m_audioReadAhead;
    375377};
    376378
    377379#endif