void UMyClass::UseCannedAudioData(USoundWave* CannedAudio)
{
if (CannedAudio->RawPCMData == NULL)
{
// @todo Sequencer optimize - We might want to generate the data when we generate the texture
// and then discard the data afterwards, though that might be a perf hit traded for better memory usage
FAudioDevice* AudioDevice = GEngine->GetMainAudioDevice();
if (AudioDevice)
{
AudioDevice->StopAllSounds(true);
EDecompressionType DecompressionType = CannedAudio->DecompressionType;
CannedAudio->DecompressionType = DTYPE_Native;
if (CannedAudio->InitAudioResource(AudioDevice->GetRuntimeFormat(CannedAudio)) && (CannedAudio->DecompressionType != DTYPE_RealTime || CannedAudio->CachedRealtimeFirstBuffer == nullptr))
{
FAsyncAudioDecompress TempDecompress(CannedAudio);
TempDecompress.StartSynchronousTask();
}
CannedAudio->DecompressionType = DecompressionType;
}
}
UE_LOG(LogTemp, Warning, TEXT("UseCannedAudioData, RawPCMDataSize: %d"), CannedAudio->RawPCMDataSize);
TArray<uint8> AudioBuffer(CannedAudio->RawPCMData, CannedAudio->RawPCMDataSize);
VoiceData = AudioBuffer;
UE_LOG(LogTemp, Warning, TEXT("UseCannedAudioData, voice data size: %d"), VoiceData.Num());
}