CellAudio fixes

This commit is contained in:
Vestral 2021-11-29 20:52:02 +09:00 committed by Megamouse
parent 38bfefcdfa
commit e5005597fe
7 changed files with 20 additions and 14 deletions

View File

@ -51,7 +51,7 @@ public:
/* /*
* Pure virtual methods * Pure virtual methods
*/ */
virtual const char* GetName() const = 0; virtual std::string_view GetName() const = 0;
virtual u32 GetCapabilities() const = 0; virtual u32 GetCapabilities() const = 0;
virtual void Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt) = 0; virtual void Open(AudioFreq freq, AudioSampleSize sample_size, AudioChannelCnt ch_cnt) = 0;

View File

@ -16,7 +16,7 @@ public:
CubebBackend(const CubebBackend&) = delete; CubebBackend(const CubebBackend&) = delete;
CubebBackend& operator=(const CubebBackend&) = delete; CubebBackend& operator=(const CubebBackend&) = delete;
const char* GetName() const override { return "Cubeb"; } std::string_view GetName() const override { return "Cubeb"sv; }
static const u32 capabilities = 0; static const u32 capabilities = 0;
u32 GetCapabilities() const override { return capabilities; } u32 GetCapabilities() const override { return capabilities; }

View File

@ -19,7 +19,7 @@ public:
FAudioBackend(const FAudioBackend&) = delete; FAudioBackend(const FAudioBackend&) = delete;
FAudioBackend& operator=(const FAudioBackend&) = delete; FAudioBackend& operator=(const FAudioBackend&) = delete;
const char* GetName() const override { return "FAudio"; } std::string_view GetName() const override { return "FAudio"sv; }
static const u32 capabilities = SET_FREQUENCY_RATIO; static const u32 capabilities = SET_FREQUENCY_RATIO;
u32 GetCapabilities() const override { return capabilities; } u32 GetCapabilities() const override { return capabilities; }

View File

@ -8,7 +8,7 @@ public:
NullAudioBackend() {} NullAudioBackend() {}
~NullAudioBackend() {} ~NullAudioBackend() {}
const char* GetName() const override { return "Null"; } std::string_view GetName() const override { return "Null"sv; }
static const u32 capabilities = 0; static const u32 capabilities = 0;
u32 GetCapabilities() const override { return capabilities; } u32 GetCapabilities() const override { return capabilities; }

View File

@ -21,7 +21,7 @@ public:
XAudio2Backend(const XAudio2Backend&) = delete; XAudio2Backend(const XAudio2Backend&) = delete;
XAudio2Backend& operator=(const XAudio2Backend&) = delete; XAudio2Backend& operator=(const XAudio2Backend&) = delete;
const char* GetName() const override { return "XAudio2"; } std::string_view GetName() const override { return "XAudio2"sv; }
static const u32 capabilities = SET_FREQUENCY_RATIO; static const u32 capabilities = SET_FREQUENCY_RATIO;
u32 GetCapabilities() const override { return capabilities; } u32 GetCapabilities() const override { return capabilities; }

View File

@ -92,7 +92,7 @@ void cell_audio_config::reset(bool backend_changed)
audio_buffer_size = audio_buffer_length * audio_sample_size; audio_buffer_size = audio_buffer_length * audio_sample_size;
desired_buffer_duration = raw.desired_buffer_duration * 1000llu; desired_buffer_duration = raw.desired_buffer_duration * 1000llu;
buffering_enabled = raw.buffering_enabled; buffering_enabled = raw.buffering_enabled && raw.renderer != audio_renderer::null;
minimum_block_period = audio_block_period / 2; minimum_block_period = audio_block_period / 2;
maximum_block_period = (6 * audio_block_period) / 5; maximum_block_period = (6 * audio_block_period) / 5;
@ -598,15 +598,13 @@ void cell_audio_thread::reset_counters()
m_backend_failed = false; m_backend_failed = false;
} }
void cell_audio_thread::operator()() cell_audio_thread::cell_audio_thread()
{ {
if (cfg.raw.provider != audio_provider::cell_audio) if (cfg.raw.provider != audio_provider::cell_audio)
{ {
return; return;
} }
thread_ctrl::scoped_priority high_prio(+1);
// Init audio config // Init audio config
cfg.reset(); cfg.reset();
@ -615,6 +613,16 @@ void cell_audio_thread::operator()()
// Initialize loop variables // Initialize loop variables
reset_counters(); reset_counters();
}
void cell_audio_thread::operator()()
{
if (cfg.raw.provider != audio_provider::cell_audio)
{
return;
}
thread_ctrl::scoped_priority high_prio(+1);
u32 untouched_expected = 0; u32 untouched_expected = 0;

View File

@ -360,7 +360,7 @@ public:
return backend->Operational(); return backend->Operational();
} }
const char* get_backend_name() const std::string_view get_backend_name() const
{ {
return backend->GetName(); return backend->GetName();
} }
@ -415,11 +415,9 @@ public:
f32 m_average_playtime = 0.0f; f32 m_average_playtime = 0.0f;
bool m_backend_failed = false; bool m_backend_failed = false;
void operator()(); cell_audio_thread();
cell_audio_thread() void operator()();
{
}
audio_port* open_port() audio_port* open_port()
{ {