aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthexai <58434170+thexai@users.noreply.github.com>2023-01-03 10:10:54 +0100
committerfritsch <Peter.Fruehberger@gmail.com>2023-03-09 06:47:44 +0100
commitbb178f79b0e26b12ee9682cf1d241ac2108607c2 (patch)
tree7b39b522a5735752e964036c9b240ab024e007fe
parent644cf0d7ba50778d1c203df2fa4c71d9ed77c328 (diff)
downloadxbmc-bb178f79b0e26b12ee9682cf1d241ac2108607c2.tar.xz
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);
}