2026-03-24 16:14:05 +08:00
|
|
|
#include <XCEngine/Resources/AudioClip/AudioClip.h>
|
2026-03-17 22:32:27 +08:00
|
|
|
|
|
|
|
|
namespace XCEngine {
|
|
|
|
|
namespace Resources {
|
|
|
|
|
|
|
|
|
|
AudioClip::AudioClip() = default;
|
|
|
|
|
|
|
|
|
|
AudioClip::~AudioClip() = default;
|
|
|
|
|
|
|
|
|
|
void AudioClip::Release() {
|
|
|
|
|
m_audioData.Clear();
|
|
|
|
|
m_rhiResource = nullptr;
|
|
|
|
|
m_isValid = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AudioClip::SetAudioData(const Containers::Array<Core::uint8>& data) {
|
|
|
|
|
m_audioData = data;
|
|
|
|
|
|
|
|
|
|
if (m_sampleRate > 0 && m_channels > 0 && m_bitsPerSample > 0) {
|
|
|
|
|
size_t bytesPerSample = m_bitsPerSample / 8;
|
|
|
|
|
size_t totalSamples = data.Size() / bytesPerSample;
|
|
|
|
|
m_duration = static_cast<float>(totalSamples) / static_cast<float>(m_sampleRate);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AudioClip::SetRHIResource(class IRHIAudioBuffer* resource) {
|
|
|
|
|
m_rhiResource = resource;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace Resources
|
|
|
|
|
} // namespace XCEngine
|