aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Frühberger <Peter.Fruehberger@gmail.com>2023-03-09 16:50:01 +0100
committerGitHub <noreply@github.com>2023-03-09 16:50:01 +0100
commit6de9250a3f672d3402d2c8b023a0a0a3a2711aaa (patch)
tree7b39b522a5735752e964036c9b240ab024e007fe
parent644cf0d7ba50778d1c203df2fa4c71d9ed77c328 (diff)
parentbb178f79b0e26b12ee9682cf1d241ac2108607c2 (diff)
downloadxbmc-6de9250a3f672d3402d2c8b023a0a0a3a2711aaa.tar.xz
Merge pull request #22945 from fritsch/pausstop
ActiveAESink: workaround for TrueHD and DD+ broken after pause or seek in AudioTrack RAW (Android only)
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp
index 8f30ac9a93..477129f211 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp
@@ -1156,10 +1156,20 @@ void CActiveAESink::SetSilenceTimer()
{
if (m_extStreaming)
m_extSilenceTimeout = XbmcThreads::EndTime<decltype(m_extSilenceTimeout)>::Max();
- else if (m_extAppFocused)
- m_extSilenceTimeout = m_silenceTimeOut;
+ else if (m_extAppFocused) // handles no playback/GUI and playback in pause and seek
+ {
+ // only true with AudioTrack RAW + passthrough + TrueHD or EAC3 (DD+)
+ const bool noSilenceOnPause =
+ !m_needIecPack && m_requestedFormat.m_dataFormat == AE_FMT_RAW &&
+ (m_sinkFormat.m_streamInfo.m_type == CAEStreamInfo::STREAM_TYPE_TRUEHD ||
+ m_sinkFormat.m_streamInfo.m_type == CAEStreamInfo::STREAM_TYPE_EAC3);
+
+ m_extSilenceTimeout = (noSilenceOnPause) ? 0ms : m_silenceTimeOut;
+ }
else
+ {
m_extSilenceTimeout = 0ms;
+ }
m_extSilenceTimer.Set(m_extSilenceTimeout);
}