0
0

Hi folks,

I was wondering if it was possible to get information about what the size in memory will be if I load up a complete fsb file. I need this kind of information to show in our tools what impact the audio projects have.

The problem gets bigger as most project have multiple fsb files and we want to know the impact of them separately.

Any ideas or info I might have overlooked?

  • You must to post comments
0
0

pcorvo, you might check out loadEventData which can be used to pre-allocate all of the event instance memory associated with an EventGroup (and also streams and sample memory). It’s a good way to ensure that you’re always allocating at the worst case.

As for reverbs and whatnot, it’s a good question. We don’t have a really solid strategy other than reserving a buffer in our budget for "system" allocations.

  • You must to post comments
0
0

To see the amount of memory it takes you can load the FSB and compare the FMOD memory usage before and after.

-Pete

  • You must to post comments
0
0

I keep getting a low memory message while I am working. is there any way to increase the size of the memory in the progeam from 64M.

  • You must to post comments
0
0

That is a good idea, but how can I see what fsb files belong to a specific fev file? As I want to show the mem usage per fev file instead of fsb file.

  • You must to post comments
0
0

Thanks, I think with a bit of reserve for misc allocations and using loadEventData we can get an estimate of what it is going to use.

  • You must to post comments
0
0

You can use EventSystem::getInfo. Passing in a FMOD_EVENT_SYSTEMINFO struct containing an array of FMOD_EVENT_WAVEBANKINFO structs. That should give you all the information you need.

That wavebank info struct contains memory information as well so rather than loading the soundbank manually you could just iterate through all the event groups and call ‘loadEventData’ to make sure it’s completely loaded then just use the memory information in that struct. Keep in mind these are worst case scenario numbers, FMOD will generally only load sounds from the bank as they are requested.

-Pete

  • You must to post comments
0
0

But how can I see what part of the array belongs to my specific fev project file?

Usage in app:
– click on a fev file from a list in the app
– app shows group tree
– app should show fsb memory usage info

  • You must to post comments
0
0

You can do exactly that with the FMOD Event Player. Double-click on your FEV file (or, if your file associations aren’t set up properly, run fmod_eventplayer.exe in your FMOD Designer install project).

Once the program loads, you can right-click on each EventGroup and select "Load Data". The memory usage for each FSB will be displayed on the right.

  • You must to post comments
0
0

I wrote a little script to parse the output of the fmod_designer_cl (command line tool) and output a spreadsheet of each source file’s encoded size in its FSB.

The FMod Event player solution doesn’t work for console based hardware codecs, like GCADPCM.

  • You must to post comments
0
0

Thanks everyone, I have it working now :)

  • You must to post comments
0
0

Matt, that’s a nice trick. Might have to do something like that here :)

Something everyone should keep in mind with audio budgeting from FMOD Designer is to factor in the overhead of the non-wav data (event defs, strings, fsb registries, etc). If you don’t, it’s easy to underestimate your total audio footprint (like we did!)

Wav data is by far the largest, but all of that other data can add up to quite a bit, especially if you have a lot of events or route voice through FMOD designer. In our last game, with all projects loaded but no samples loaded, the baseline was about 4 MB. A lot of this data is dependent on the size of runtime structures and is hard to gather offline, but it might be worth including some sort of estimate based on number of events or somesuch.

  • You must to post comments
0
0

Yeah that’s true, we can actually see how much fmod allocates for the wave data and because we recurse all the event groups and retrieve each event as soon as we load an fev we get the event allocations upfront. What we find difficult to predict is how much is then going to be used during the game by other stuff.
We seem to notice that for example an event allocates working memory based on its Max Instances. So if that is set to 3, it’s only after we’ve played that event 3 times that we get the max memory allocation for the event. Same like reverb, its only on the first call to ::setReverbProperties() that it seems to initialise the SFX reverb unit and allocate the memory it needs, and then filters for events and custom created filters, etc.

Calling getMemoryInfo() seems to only retrieve the amount of memory each thing is already using and not the total that it can actually use (like calling it before and after playing Max Instances of an event gives different results).

Sorry if that sounded a bit confusing. Does anybody have an idea of how to predict these things? It would be really useful to have a estimate of the total memory Fmod will use.

Thanks,
Pedro

  • You must to post comments
0
0

I get the message all the time and I dont use prefabs. Yet. I find that if you wait a few seconds, the memory usage usually drops down.

  • You must to post comments
Showing 13 results
Your Answer

Please first to submit.