Commit Graph

17 Commits

Author SHA1 Message Date
Michael Trepka
e5fa9d51e7 Initial support for specifying additional files or folders that need to be copied to Mac app bundle in module's Build.cs file. For now only used for Mac CoreAudio's RadioEffectUnit plugin. More files and support for iOS bundles will follow soon.
[CL 2234811 by Michael Trepka in Main branch]
2014-07-28 14:55:48 -04:00
Matthew Griffin
150343eca3 Fixing Mac build error
Missed brackets from end of function call

[CL 2218156 by Matthew Griffin in Main branch]
2014-07-15 07:04:22 -04:00
Matthew Griffin
c0d29a957c Multi channel support for Opus
Implemented CookSurround function for AudioFormatOpus, refactoring as much common code from the standard Cook into re-usable functions.
Changed OpusAudioInfo class to use a multistream decoder for all sounds, as 1 and 2 channel sounds can still be decoded by it. Just had to create an array of mappings that would take the internal Opus format and give back PCM data in the order that Unreal expects.
Also made the OpusDecoderWrapper a true wrapper so that you don't have to use any opus functions outside of it and it will not function if WITH_OPUS is not defined.
Added a virtual function to the CompressedAudioInfo interface, to check whether its uncompressed data will be in the Vorbis format. This is to make sure that code currently just checking whether there is a DecompressionState can now be sure that the Vorbis format is being used before routing sound to different speakers.
Made sure that you can't cause any problems by adding or removing a SoundWave from the Audio Streaming Manager more than once. Also rearranged where sounds are added to the manager so that it is only done in one place and it's safe when changing quality triggers recompression/splitting.
Added a global multidimensional array to store all the Vorbis channel orderings as they needed to be used in multiple places.
Added Logging and Memory tracking for the streaming process.

[CL 2217839 by Matthew Griffin in Main branch]
2014-07-15 06:09:13 -04:00
Matthew Griffin
c28dea244e Splitting format specific classes out of AudioDecompress.cpp/h
New files added to contain FVorbisAudioInfo and FOpusAudioInfo, added all necessary includes
Added a few more checks for whether the target platform supports audio streaming where appropriate
Moved #define to .h file as it was being used in two .cpp files (working because of unity build)

[CL 2137973 by Matthew Griffin in Main branch]
2014-07-04 09:47:36 -04:00
Matthew Griffin
f92177afd9 Removing more duplicated variables from audio sub classes
Duplicate ResourceID would have caused the same problems in HTML5 and Linux as Android. Other duplications are errors waiting to happen, there are a couple of stats functions that could be using the base class versions and not displaying the correct information.

[CL 2119229 by Matthew Griffin in Main branch]
2014-06-27 05:15:16 -04:00
Matthew Griffin
551379cad2 Fixing issues with SoundWave memory and duplicated variables in some platforms.
Moved most of the contents of FAudioDevice::FreeResource to USoundWave::FreeResources so that we can be sure that all memory is cleared up during teardown.
Removed FreeResource function from some subclasses of audio device, as they weren't doing anything different than the base one.
Also removed ListSounds function from these same classes as that seems to have fallen behind current base class version and isn't used anyway.
Removed platform specific audio buffer storage so that there isn't confusion about which is being used and ensured that casts are used when necessary.
Fixed compile issue with STAT_AudioResourceCreationTime for HTML5.

[CL 2109273 by Matthew Griffin in Main branch]
2014-06-18 10:31:15 -04:00
Jaroslaw Palczynski
ebce413232 UE4 Refactoring. Changed OVERRIDE and FINAL macros to keywords override and final.
[CL 2104397 by Jaroslaw Palczynski in Main branch]
2014-06-13 06:14:46 -04:00
Matthew Griffin
98a1cdce0f Added Structs to store streamed audio chunks for runtime streaming or in DDC.
Followed pattern set out by texture streaming so that each chunk of audio data resides in its own bulkdata struct. It is currently possible to split audio into chunks when SoundWaves are marked for streaming but there is no way of doing this exposed at present.
Changed the parameters of FAudioDevice::GetRuntimeFormat so that the relevant SoundWave must be passed in, to allow for different formats for individual sounds/streaming options.
USoundWave::FreeResources no longer resets the NumChannels as it is unnecessary and causes sounds to be unable to play after the OGG data is flushed when attempting to switch to OPUS.

[CL 2099012 by Matthew Griffin in Main branch]
2014-06-09 11:13:16 -04:00
Mark Satterthwaite
86f3a45e68 Update to AUPlugIn API rather than old, deprecated ComponentManager now that RadioEffectUnit has been updated.
#codereview michael.trepka

[CL 2095879 by Mark Satterthwaite in Main branch]
2014-06-05 12:15:11 -04:00
Dmitry Rekman
252d5fc7da Audio: do not decompress in realtime if device does not support it.
Fixes TTP #336826 where DTYPE_Realtime soundwaves were silently failing in OpenAL under Linux (and perhaps HTML5, too). May also help other platforms (IOS?) where DTYPE_Realtime is not implemented.

#codereview Matthew.Griffin, Marc.Audy

[CL 2088573 by Dmitry Rekman in Main branch]
2014-05-29 17:45:58 -04:00
Marc Audy
c39edd47c0 Ensure that precaching of a sound completes instead of failing to start for all platforms (not just XAudio done in CL# 2082171)
TTP #335967

[CL 2082177 by Marc Audy in Main branch]
2014-05-22 14:15:18 -04:00
Michael Trepka
0a702651de MacToolChain is no longer linking all modules with a set of default frameworks. Instead, modules add frameworks they need to PublicFrameworks
[CL 2073248 by Michael Trepka in Main branch]
2014-05-14 14:54:18 -04:00
Matthew Griffin
40695e5258 Allowing Compression Info class to be selected by cooked platform
Moved functions to check for and select Compressed Audio Info class to the audio device as the audio formats are not accessible in cooked builds (and shouldn't really need to be either).

[CL 2057758 by Matthew Griffin in Main branch]
2014-04-28 10:49:16 -04:00
Marc Audy
f7b7c5f3d4 Partially roll back CL#2056352 - TargetPlatformManager doesn't exist in cooked builds, force Vorbis again for now
#codereview Matthew.Griffin

[CL 2056814 by Marc Audy in Main branch]
2014-04-25 16:46:04 -04:00
Matthew Griffin
fb32e49bba Created Opus audio format for streaming sounds
Added an audio format for Opus, which also required a resampler to make sure that all imported sounds are converted to a compatible sample rate.
Added the speex resampler from the opus tools package to the third party source, including built libraries for windows and mac.
Changed FVorbisAudioInfo so that it inherits from an interface for any kind of compressed audio, which can be used everywhere instead of being wrapped in #WITH_VORBIS.
Added FOpusAudioInfo to decompress Opus data, not sure at this point whether it's only going to be used for streaming audio but works for non-streamed playback.

[CL 2056352 by Matthew Griffin in Main branch]
2014-04-25 08:39:14 -04:00
UnrealBot
db494a6e69 Engine source (Main branch up to CL 2037954) 2014-04-02 18:09:23 -04:00
Tim Sweeney
324683ce78 Engine source (Main branch up to CL 2026164) 2014-03-14 14:13:41 -04:00