/** * Static function used to create an OpenAL buffer and upload raw PCM data to. * * @param InWave USoundWave to use as template and wave source * @param AudioDevice audio device to attach created buffer to * @return FXAudio2SoundBuffer pointer if buffer creation succeeded, NULL otherwise */ FXAudio2SoundBuffer* FXAudio2SoundBuffer::CreatePreviewBuffer( FXAudio2Device* XAudio2Device, USoundWave* Wave, FXAudio2SoundBuffer* Buffer ) { FAudioDeviceManager* AudioDeviceManager = GEngine->GetAudioDeviceManager(); check(AudioDeviceManager != nullptr); if (Buffer) { AudioDeviceManager->FreeBufferResource(Buffer); } // Create new buffer. Buffer = new FXAudio2SoundBuffer( XAudio2Device, SoundFormat_PCMPreview ); // Take ownership the PCM data Buffer->PCM.PCMData = Wave->RawPCMData; Buffer->PCM.PCMDataSize = Wave->RawPCMDataSize; Wave->RawPCMData = NULL; // Copy over whether this data should be freed on delete Buffer->bDynamicResource = Wave->bDynamicResource; Buffer->InitWaveFormatEx( WAVE_FORMAT_PCM, Wave, true ); AudioDeviceManager->TrackResource(Wave, Buffer); return( Buffer ); }
/** * Static function used to create an OpenAL buffer and upload raw PCM data to. * * @param InWave USoundWave to use as template and wave source * @param AudioDevice audio device to attach created buffer to * @return FCoreAudioSoundBuffer pointer if buffer creation succeeded, NULL otherwise */ FCoreAudioSoundBuffer* FCoreAudioSoundBuffer::CreatePreviewBuffer( FCoreAudioDevice* CoreAudioDevice, USoundWave* Wave, FCoreAudioSoundBuffer* Buffer ) { FAudioDeviceManager* AudioDeviceManager = GEngine->GetAudioDeviceManager(); check(AudioDeviceManager != nullptr); if (Buffer) { AudioDeviceManager->FreeBufferResource( Buffer ); } // Create new buffer. Buffer = new FCoreAudioSoundBuffer( CoreAudioDevice, SoundFormat_PCMPreview ); // Take ownership the PCM data Buffer->PCMData = Wave->RawPCMData; Buffer->PCMDataSize = Wave->RawPCMDataSize; Wave->RawPCMData = NULL; // Copy over whether this data should be freed on delete Buffer->bDynamicResource = Wave->bDynamicResource; Buffer->InitAudioStreamBasicDescription( kAudioFormatLinearPCM, Wave, true ); AudioDeviceManager->TrackResource( Wave, Buffer ); return( Buffer ); }