mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-06-15 21:22:40 +00:00
Remove IAudioRenderer::testAudio() and just use IAudioRenderer::prepareForPlayback() instead
This commit is contained in:
@@ -27,7 +27,25 @@ bool Session::testAudio(int audioConfiguration)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ret = audioRenderer->testAudio(audioConfiguration);
|
// Build a fake OPUS_MULTISTREAM_CONFIGURATION to give
|
||||||
|
// the renderer the channel count and sample rate.
|
||||||
|
OPUS_MULTISTREAM_CONFIGURATION opusConfig = {};
|
||||||
|
opusConfig.sampleRate = 48000;
|
||||||
|
|
||||||
|
switch (audioConfiguration)
|
||||||
|
{
|
||||||
|
case AUDIO_CONFIGURATION_STEREO:
|
||||||
|
opusConfig.channelCount = 2;
|
||||||
|
break;
|
||||||
|
case AUDIO_CONFIGURATION_51_SURROUND:
|
||||||
|
opusConfig.channelCount = 6;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
SDL_assert(false);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ret = audioRenderer->prepareForPlayback(&opusConfig);
|
||||||
|
|
||||||
delete audioRenderer;
|
delete audioRenderer;
|
||||||
|
|
||||||
|
|||||||
@@ -109,69 +109,6 @@ void PortAudioRenderer::submitAudio(short* audioBuffer, int audioSize)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PortAudioRenderer::testAudio(int audioConfiguration) const
|
|
||||||
{
|
|
||||||
PaStreamParameters params = {};
|
|
||||||
|
|
||||||
PaDeviceIndex outputDeviceIndex = Pa_GetDefaultOutputDevice();
|
|
||||||
if (outputDeviceIndex == paNoDevice) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
|
||||||
"No output device available");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const PaDeviceInfo* deviceInfo = Pa_GetDeviceInfo(outputDeviceIndex);
|
|
||||||
if (deviceInfo == nullptr) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
|
||||||
"Pa_GetDeviceInfo() failed");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (audioConfiguration)
|
|
||||||
{
|
|
||||||
case AUDIO_CONFIGURATION_STEREO:
|
|
||||||
params.channelCount = 2;
|
|
||||||
break;
|
|
||||||
case AUDIO_CONFIGURATION_51_SURROUND:
|
|
||||||
params.channelCount = 6;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
SDL_assert(false);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
params.sampleFormat = paInt16;
|
|
||||||
params.device = outputDeviceIndex;
|
|
||||||
params.suggestedLatency = deviceInfo->defaultLowOutputLatency;
|
|
||||||
|
|
||||||
// We used to just use Pa_IsFormatSupported() but there are cases
|
|
||||||
// where Pa_IsFormatSupported() will fail but when we actually
|
|
||||||
// call Pa_OpenStream(), it fails with device unavailable.
|
|
||||||
PaStream* stream;
|
|
||||||
PaError error = Pa_OpenStream(&stream, nullptr, ¶ms,
|
|
||||||
48000,
|
|
||||||
SAMPLES_PER_FRAME,
|
|
||||||
paNoFlag,
|
|
||||||
nullptr, nullptr);
|
|
||||||
if (error != paNoError) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
|
||||||
"Pa_OpenStream() failed: %s",
|
|
||||||
Pa_GetErrorText(error));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
error = Pa_StartStream(stream);
|
|
||||||
if (error != paNoError) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
|
||||||
"Pa_StartStream() failed: %s",
|
|
||||||
Pa_GetErrorText(error));
|
|
||||||
}
|
|
||||||
|
|
||||||
Pa_CloseStream(stream);
|
|
||||||
|
|
||||||
return error == paNoError;
|
|
||||||
}
|
|
||||||
|
|
||||||
int PortAudioRenderer::detectAudioConfiguration() const
|
int PortAudioRenderer::detectAudioConfiguration() const
|
||||||
{
|
{
|
||||||
const PaDeviceInfo* deviceInfo = Pa_GetDeviceInfo(Pa_GetDefaultOutputDevice());
|
const PaDeviceInfo* deviceInfo = Pa_GetDeviceInfo(Pa_GetDefaultOutputDevice());
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ public:
|
|||||||
|
|
||||||
virtual void submitAudio(short* audioBuffer, int audioSize);
|
virtual void submitAudio(short* audioBuffer, int audioSize);
|
||||||
|
|
||||||
virtual bool testAudio(int audioConfiguration) const;
|
|
||||||
|
|
||||||
virtual int detectAudioConfiguration() const;
|
virtual int detectAudioConfiguration() const;
|
||||||
|
|
||||||
virtual void adjustOpusChannelMapping(OPUS_MULTISTREAM_CONFIGURATION* opusConfig) const;
|
virtual void adjustOpusChannelMapping(OPUS_MULTISTREAM_CONFIGURATION* opusConfig) const;
|
||||||
|
|||||||
@@ -16,7 +16,5 @@ public:
|
|||||||
|
|
||||||
virtual void submitAudio(short* audioBuffer, int audioSize) = 0;
|
virtual void submitAudio(short* audioBuffer, int audioSize) = 0;
|
||||||
|
|
||||||
virtual bool testAudio(int audioConfiguration) const = 0;
|
|
||||||
|
|
||||||
virtual int detectAudioConfiguration() const = 0;
|
virtual int detectAudioConfiguration() const = 0;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -19,8 +19,6 @@ public:
|
|||||||
|
|
||||||
virtual void submitAudio(short* audioBuffer, int audioSize);
|
virtual void submitAudio(short* audioBuffer, int audioSize);
|
||||||
|
|
||||||
virtual bool testAudio(int audioConfiguration) const;
|
|
||||||
|
|
||||||
virtual int detectAudioConfiguration() const;
|
virtual int detectAudioConfiguration() const;
|
||||||
|
|
||||||
virtual void adjustOpusChannelMapping(OPUS_MULTISTREAM_CONFIGURATION* opusConfig) const;
|
virtual void adjustOpusChannelMapping(OPUS_MULTISTREAM_CONFIGURATION* opusConfig) const;
|
||||||
|
|||||||
@@ -56,45 +56,6 @@ void SdlAudioRenderer::adjustOpusChannelMapping(OPUS_MULTISTREAM_CONFIGURATION*)
|
|||||||
// The default mapping is fine for SDL
|
// The default mapping is fine for SDL
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SdlAudioRenderer::testAudio(int audioConfiguration) const
|
|
||||||
{
|
|
||||||
SDL_AudioSpec want, have;
|
|
||||||
SDL_AudioDeviceID dev;
|
|
||||||
|
|
||||||
SDL_zero(want);
|
|
||||||
want.freq = 48000;
|
|
||||||
want.format = AUDIO_S16;
|
|
||||||
want.samples = SAMPLES_PER_FRAME;
|
|
||||||
|
|
||||||
switch (audioConfiguration) {
|
|
||||||
case AUDIO_CONFIGURATION_STEREO:
|
|
||||||
want.channels = 2;
|
|
||||||
break;
|
|
||||||
case AUDIO_CONFIGURATION_51_SURROUND:
|
|
||||||
want.channels = 6;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
SDL_assert(false);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test audio device for functionality
|
|
||||||
dev = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0);
|
|
||||||
if (dev == 0) {
|
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
|
||||||
"Audio test - Failed to open audio device: %s",
|
|
||||||
SDL_GetError());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_CloseAudioDevice(dev);
|
|
||||||
|
|
||||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
|
|
||||||
"Audio test - Successful with %d channels",
|
|
||||||
want.channels);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
SdlAudioRenderer::SdlAudioRenderer()
|
SdlAudioRenderer::SdlAudioRenderer()
|
||||||
: m_AudioDevice(0),
|
: m_AudioDevice(0),
|
||||||
m_ChannelCount(0),
|
m_ChannelCount(0),
|
||||||
|
|||||||
Reference in New Issue
Block a user