aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfritsch <Peter.Fruehberger@gmail.com>2017-08-08 21:12:34 +0200
committerfritsch <Peter.Fruehberger@gmail.com>2017-08-20 21:58:32 +0200
commiteca7d9f09822dae0d05ed63426c9436896dc9b18 (patch)
tree7fd497d8e9efcb478acbdb1061b7404b99469a83
parentca9bd0fadc0f95bc7593e2da6ac1f7ab4e037757 (diff)
AESinkALSA: Check layout for sanity
-rw-r--r--xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
index d66993a095..4d87afa2c9 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
@@ -618,6 +618,11 @@ bool CAESinkALSA::Initialize(AEAudioFormat &format, std::string &device)
}
// adjust format to the configuration we got
format.m_channelLayout = GetChannelLayout(format, outconfig.channels);
+ // we might end up with an unusable channel layout that contains only UNKNOWN
+ // channels, let's do a sanity check.
+ if (!format.m_channelLayout.IsLayoutValid())
+ return false;
+
format.m_sampleRate = outconfig.sampleRate;
format.m_frames = outconfig.periodSize;
format.m_frameSize = outconfig.frameSize;