Existing workloads should continue to work as they always have, but it is now possible for a procedural sound (SoundGenerator) to specify a "synchronized render queue" that its "audio decode tasks" should be added to. That queue's jobs are then held for the duration of the OnProcessAudioStream function and only kicked when some "owning" system kicks the queued tasks.
In the Harmonix Music specific case, UMusicEmitterComponent (a subclass of a USynthComponent) creates soundgenerators that specify a unique render queue id. Then, in the Harmonix Music system's "post render callback" which is called at the bottom of the FMixerDevice::OnProcessAudioStream, after doing the synchrnous "state updates" for all of the music renderers to keep them in sync, we kick all the queued up tasks so async rendering can proceed.
[REVIEW] [at]aaron.mcleran [at]phil.popp [at]rob.gay [at]jimmy.smith
#preflight 6216c0c7db60b6b592017336
#ROBOMERGE-AUTHOR: buzz.burrowes
#ROBOMERGE-SOURCE: CL 19107053 via CL 19116514 via CL 19116561 via CL 19116594 via CL 19117383
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19153372 by buzz burrowes in ue5-main branch]
All synths will eventually be implemented using this API.
Change also has a test synth that exercises code that is a hello-world style "tone generator".
#rb Ethan.Geller, Phil.Popp
#
#ROBOMERGE-OWNER: aaron.mcleran
#ROBOMERGE-AUTHOR: aaron.mcleran
#ROBOMERGE-SOURCE: CL 12996583 via CL 12996736 via CL 12996749
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)
[CL 12996768 by aaron mcleran in Main branch]
#rb ethan.geller
#rnx
#ROBOMERGE-SOURCE: CL 12436435 via CL 12436436 via CL 12445780
#ROBOMERGE-BOT: (v671-12333473)
[CL 12445945 by jordan cristiano in Release-Engine-Staging branch]
#rb Aaron.McLeran
#ROBOMERGE-OWNER: maxwell.hayes
#ROBOMERGE-AUTHOR: maxwell.hayes
#ROBOMERGE-SOURCE: CL 11211822 via CL 11211829 via CL 11211833
#ROBOMERGE-BOT: (v643-11205221)
[CL 11212274 by maxwell hayes in Main branch]
#rnx
#rb none
#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870549 by ryan durand in Main branch]
[REVIEW]
#ROBOMERGE-SOURCE: CL 10607075 via CL 10607077 via CL 10607399 via CL 10607407 via CL 10607413
#ROBOMERGE-BOT: (v607-10590470)
[CL 10607419 by ethan geller in Main branch]
needs to be enabled to have any effect
#rb Aaron.McLeran
[FYI] Randolph.Kestner, Ryan Mangin
#ROBOMERGE-OWNER: maxwell.hayes
#ROBOMERGE-AUTHOR: maxwell.hayes
#ROBOMERGE-SOURCE: CL 8343245 via CL 8343249 via CL 8358255
#ROBOMERGE-BOT: (v401-8057353)
[CL 8360025 by maxwell hayes in Main branch]
#rb none
#ROBOMERGE-SOURCE: CL 8322660 via CL 8349587 via CL 8349630 via CL 8350561
#ROBOMERGE-BOT: (v401-8057353)
[CL 8352388 by maxwell hayes in Main branch]
#rb Aaron.McCleran
[FYI] Ethan.Halvorsen
#ROBOMERGE-SOURCE: CL 8322420 via CL 8349579 via CL 8349622 via CL 8350553
#ROBOMERGE-BOT: (v401-8057353)
[CL 8350593 by maxwell hayes in Main branch]
- Up to CL8320930 from DevOnline and 8311605 Merge Down from Main
- skipped some Fortnite content/plugins/code where it tried to reintegrate files that had been moved pending investigation
#rb none
[CL 8321295 by Josh Markiewicz in Main branch]
- Partial fix only includes changes to xma2 cooking format while we're recooking.
#rb Ethan.Geller
#ROBOMERGE-OWNER: aaron.mcleran
#ROBOMERGE-AUTHOR: aaron.mcleran
#ROBOMERGE-SOURCE: CL 7622400 via CL 7622401 via CL 7622402 via CL 7634704
#ROBOMERGE-BOT: (v372-7473910)
[CL 7634707 by aaron mcleran in Main branch]
- Fix is to make sure the starting speaker map is set to the destination after doing the interpolation.
#rb Ethan.Geller
#ROBOMERGE-SOURCE: CL 5347741 via CL 5347743 via CL 5347744 via CL 5347807
[CL 5347810 by aaron mcleran in Main branch]
Issue is streaming sound is being removed from the streaming manager before it's stopped playing in the audio renderer. Fix is to prevent any stream chunk or sound from getting removed from the streaming manager if there is an active decoder using any stream chunk.
#rb Ethan.Geller
#ROBOMERGE-SOURCE: CL 5275960 via CL 5275961 via CL 5292021
[CL 5292051 by aaron mcleran in Main branch]
#rb Ethan.Geller
[FYI] Rex.Hill
#jira UE-69577
#ROBOMERGE-SOURCE: CL 5275172 via CL 5275173 via CL 5291382
[CL 5291420 by aaron mcleran in Main branch]
- Adding some new LLM categories to help track decoded precache buffer mem usage and fully decoded buffers.
More info:
Precache buffer sizes, on platforms that utilize the feature, can be a huge memory hog. By reducing their sizes, we can recover quite a bit of memory.
Tricky part of the change is accounting for the variable precache buffer size while still retaining the MONO_PCM_BUFFER_SIZE size for regular real-time decoding cases.
We do a "skip first buffer(s)" step when starting a real-time decoded sound so the smaller precache buffer size needs to be shared to the decoders.
#rb Ethan.Geller, Rob.Gay
#jira
#ROBOMERGE-SOURCE: CL 4696296
[CL 4696323 by aaron mcleran in Main branch]
- Rather than a bool for flagging sounds as being used for GC, it's a ref count (multiple sound sources can play the same USoundWave).
- Removed a spot that was setting the flag to false causing a race condition.
- Tested with Shipping and Development client builds with shooter game and with very short match durations to exacerbate the GC flush.
#rb Ethan.Geller
#ROBOMERGE-SOURCE: CL 4186379 in //UE4/Release-4.20/...
#ROBOMERGE-BOT: TEST (Release-4.20 -> Release-Staging-4.20)
#ROBOMERGE-AUTHOR: aaron.mcleran
#ROBOMERGE-OWNER: james.hopkin
[CL 4195485 by aaron mcleran in Staging-4.20 branch]