diff --git a/lib/tlTimeline/Player.cpp b/lib/tlTimeline/Player.cpp index 89d1d605..e69ec9b7 100644 --- a/lib/tlTimeline/Player.cpp +++ b/lib/tlTimeline/Player.cpp @@ -157,6 +157,9 @@ namespace tl if (p.thread.rtAudio && !audioSystem->getDevices().empty()) { p.audioThread.info = audioSystem->getDefaultOutputInfo(); + p.audioThread.info.channelCount = p.getAudioChannelCount( + p.ioInfo.audio, + p.audioThread.info); if (p.audioThread.info.channelCount > 0 && p.audioThread.info.dataType != audio::DataType::None && p.audioThread.info.sampleRate > 0) diff --git a/lib/tlTimeline/PlayerPrivate.cpp b/lib/tlTimeline/PlayerPrivate.cpp index 6bcb471b..ba1f882b 100644 --- a/lib/tlTimeline/PlayerPrivate.cpp +++ b/lib/tlTimeline/PlayerPrivate.cpp @@ -518,6 +518,18 @@ namespace tl } } + size_t Player::Private::getAudioChannelCount( + const audio::Info& input, + const audio::Info& output) + { + size_t out = 2; + if (input.channelCount == output.channelCount) + { + out = output.channelCount; + } + return out; + } + void Player::Private::resetAudioTime() { { diff --git a/lib/tlTimeline/PlayerPrivate.h b/lib/tlTimeline/PlayerPrivate.h index 512a8bbe..4d8db765 100644 --- a/lib/tlTimeline/PlayerPrivate.h +++ b/lib/tlTimeline/PlayerPrivate.h @@ -31,6 +31,9 @@ namespace tl void clearCache(); void cacheUpdate(); + static size_t getAudioChannelCount( + const audio::Info& input, + const audio::Info& output); void resetAudioTime(); #if defined(TLRENDER_AUDIO) static int rtAudioCallback(