Fix audio module: implement WAV parsing and audio playback

- Implement ParseWAVData and ParseWAVHeader in AudioLoader to properly
  parse WAV file headers (sample rate, channels, bits per sample, duration)
- Modify Load() to call ParseWAVData for WAV files during loading
- Add DecodeAudioData() to AudioSourceComponent to decode PCM bytes to float
- Update SetClip() to trigger audio decoding
- Fix ProcessAudio() to read from decoded data instead of empty output buffer
- Add WAV parsing unit tests (ParseWAV_Mono44100_16bit, ParseWAV_Stereo48000_16bit)

Fixes issues:
- AudioLoader::ParseWAVData was a stub returning true without parsing
- AudioLoader::Load didn't extract audio metadata from WAV headers
- AudioSourceComponent::ProcessAudio read from empty m_outputBuffer

All 167 tests pass.
This commit is contained in:
2026-03-22 02:03:51 +08:00
parent 161a0896d5
commit 2432a646ce
4 changed files with 250 additions and 5 deletions

View File

@@ -82,6 +82,7 @@ public:
std::string GetName() const override { return "AudioSource"; }
private:
void DecodeAudioData();
void Apply3DAttenuation(const Math::Vector3& listenerPosition);
void UpdateEnergy(const float* buffer, Audio::uint32 sampleCount);