diff --git a/app/streaming/audio/audio.cpp b/app/streaming/audio/audio.cpp index 6d26f9b2..4fd3d71d 100644 --- a/app/streaming/audio/audio.cpp +++ b/app/streaming/audio/audio.cpp @@ -95,21 +95,15 @@ bool Session::initializeAudioRenderer() int Session::getAudioRendererCapabilities(int audioConfiguration) { - // Build a fake OPUS_MULTISTREAM_CONFIGURATION to give - // the renderer the channel count and sample rate. - OPUS_MULTISTREAM_CONFIGURATION opusConfig = {}; - opusConfig.sampleRate = 48000; - opusConfig.samplesPerFrame = 240; - opusConfig.channelCount = CHANNEL_COUNT_FROM_AUDIO_CONFIGURATION(audioConfiguration); + int caps = 0; - IAudioRenderer* audioRenderer = createAudioRenderer(&opusConfig); - if (audioRenderer == nullptr) { - return 0; - } + // All audio renderers support arbitrary audio duration + caps |= CAPABILITY_SUPPORTS_ARBITRARY_AUDIO_DURATION; - int caps = audioRenderer->getCapabilities(); - - delete audioRenderer; +#ifdef STEAM_LINK + // Steam Link devices have slow Opus decoders + caps |= CAPABILITY_SLOW_OPUS_DECODER; +#endif return caps; } diff --git a/app/streaming/audio/renderers/renderer.h b/app/streaming/audio/renderers/renderer.h index acda076f..0e103cf3 100644 --- a/app/streaming/audio/renderers/renderer.h +++ b/app/streaming/audio/renderers/renderer.h @@ -15,8 +15,6 @@ public: // Return false if an unrecoverable error has occurred and the renderer must be reinitialized virtual bool submitAudio(int bytesWritten) = 0; - virtual int getCapabilities() = 0; - virtual void remapChannels(POPUS_MULTISTREAM_CONFIGURATION) { // Use default channel mapping: // 0 - Front Left diff --git a/app/streaming/audio/renderers/sdl.h b/app/streaming/audio/renderers/sdl.h index f35d1f94..cbcf6631 100644 --- a/app/streaming/audio/renderers/sdl.h +++ b/app/streaming/audio/renderers/sdl.h @@ -16,8 +16,6 @@ public: virtual bool submitAudio(int bytesWritten); - virtual int getCapabilities(); - virtual AudioFormat getAudioBufferFormat(); private: diff --git a/app/streaming/audio/renderers/sdlaud.cpp b/app/streaming/audio/renderers/sdlaud.cpp index b8a61bb9..cb4b9ead 100644 --- a/app/streaming/audio/renderers/sdlaud.cpp +++ b/app/streaming/audio/renderers/sdlaud.cpp @@ -132,12 +132,6 @@ bool SdlAudioRenderer::submitAudio(int bytesWritten) return true; } -int SdlAudioRenderer::getCapabilities() -{ - // Direct submit can't be used because we use LiGetPendingAudioDuration() - return CAPABILITY_SUPPORTS_ARBITRARY_AUDIO_DURATION; -} - IAudioRenderer::AudioFormat SdlAudioRenderer::getAudioBufferFormat() { return AudioFormat::Float32NE; diff --git a/app/streaming/audio/renderers/slaud.cpp b/app/streaming/audio/renderers/slaud.cpp index fba7a434..794192da 100644 --- a/app/streaming/audio/renderers/slaud.cpp +++ b/app/streaming/audio/renderers/slaud.cpp @@ -114,11 +114,6 @@ bool SLAudioRenderer::submitAudio(int bytesWritten) return true; } -int SLAudioRenderer::getCapabilities() -{ - return CAPABILITY_SLOW_OPUS_DECODER | CAPABILITY_SUPPORTS_ARBITRARY_AUDIO_DURATION; -} - IAudioRenderer::AudioFormat SLAudioRenderer::getAudioBufferFormat() { return AudioFormat::Sint16NE; diff --git a/app/streaming/audio/renderers/slaud.h b/app/streaming/audio/renderers/slaud.h index 679fb763..722aa145 100644 --- a/app/streaming/audio/renderers/slaud.h +++ b/app/streaming/audio/renderers/slaud.h @@ -16,8 +16,6 @@ public: virtual bool submitAudio(int bytesWritten); - virtual int getCapabilities(); - virtual AudioFormat getAudioBufferFormat(); virtual void remapChannels(POPUS_MULTISTREAM_CONFIGURATION opusConfig);