Move audio capabilities out of the renderer classes

Since the removal of libsoundio, all renderers support arbitrary audio duration, so we can avoid having to start an audio session just to query capabilities.
This commit is contained in:
Cameron Gutman
2025-10-25 19:17:38 -05:00
parent ac7696ea8f
commit 7d544c1ce4
6 changed files with 7 additions and 30 deletions
+7 -13
View File
@@ -95,21 +95,15 @@ bool Session::initializeAudioRenderer()
int Session::getAudioRendererCapabilities(int audioConfiguration) int Session::getAudioRendererCapabilities(int audioConfiguration)
{ {
// Build a fake OPUS_MULTISTREAM_CONFIGURATION to give int caps = 0;
// 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);
IAudioRenderer* audioRenderer = createAudioRenderer(&opusConfig); // All audio renderers support arbitrary audio duration
if (audioRenderer == nullptr) { caps |= CAPABILITY_SUPPORTS_ARBITRARY_AUDIO_DURATION;
return 0;
}
int caps = audioRenderer->getCapabilities(); #ifdef STEAM_LINK
// Steam Link devices have slow Opus decoders
delete audioRenderer; caps |= CAPABILITY_SLOW_OPUS_DECODER;
#endif
return caps; return caps;
} }
-2
View File
@@ -15,8 +15,6 @@ public:
// Return false if an unrecoverable error has occurred and the renderer must be reinitialized // Return false if an unrecoverable error has occurred and the renderer must be reinitialized
virtual bool submitAudio(int bytesWritten) = 0; virtual bool submitAudio(int bytesWritten) = 0;
virtual int getCapabilities() = 0;
virtual void remapChannels(POPUS_MULTISTREAM_CONFIGURATION) { virtual void remapChannels(POPUS_MULTISTREAM_CONFIGURATION) {
// Use default channel mapping: // Use default channel mapping:
// 0 - Front Left // 0 - Front Left
-2
View File
@@ -16,8 +16,6 @@ public:
virtual bool submitAudio(int bytesWritten); virtual bool submitAudio(int bytesWritten);
virtual int getCapabilities();
virtual AudioFormat getAudioBufferFormat(); virtual AudioFormat getAudioBufferFormat();
private: private:
-6
View File
@@ -132,12 +132,6 @@ bool SdlAudioRenderer::submitAudio(int bytesWritten)
return true; 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() IAudioRenderer::AudioFormat SdlAudioRenderer::getAudioBufferFormat()
{ {
return AudioFormat::Float32NE; return AudioFormat::Float32NE;
-5
View File
@@ -114,11 +114,6 @@ bool SLAudioRenderer::submitAudio(int bytesWritten)
return true; return true;
} }
int SLAudioRenderer::getCapabilities()
{
return CAPABILITY_SLOW_OPUS_DECODER | CAPABILITY_SUPPORTS_ARBITRARY_AUDIO_DURATION;
}
IAudioRenderer::AudioFormat SLAudioRenderer::getAudioBufferFormat() IAudioRenderer::AudioFormat SLAudioRenderer::getAudioBufferFormat()
{ {
return AudioFormat::Sint16NE; return AudioFormat::Sint16NE;
-2
View File
@@ -16,8 +16,6 @@ public:
virtual bool submitAudio(int bytesWritten); virtual bool submitAudio(int bytesWritten);
virtual int getCapabilities();
virtual AudioFormat getAudioBufferFormat(); virtual AudioFormat getAudioBufferFormat();
virtual void remapChannels(POPUS_MULTISTREAM_CONFIGURATION opusConfig); virtual void remapChannels(POPUS_MULTISTREAM_CONFIGURATION opusConfig);