I’m working for a company that is developing a video editing application using DirectShow Editing services. The reason for DES is to get seamless transitions between source clips. The clips are made from series of bitmaps (of different sizes) and/or AVI movies. It’s all working great except that when using big images as source clips, the app consumes HUGE amount of virtual RAM memory, which sometimes leads to crashes.
A movie made from 5-6 bitmaps of size 1280x1024 will use something like 400Mb of virtual RAM. Something tells me that DirectShow is using a lot of “unnecessary” buffers to render the still image video, because a single RGBA bitmap of that since is only about 5-6 Mb uncompressed. Is there someway to control these buffers to get the app to consume less memory? The bitmap source filter is a simple DirectShow filter that just pushes the preloaded image to the output pin.
To make sure DES does not crash the application, there is a little workaroud that can make your application handle more memory. Therefore, helping the application to crash a lot less, because of cause, even with this workaround, it could end up crashing
if using lots of memory. The workaround is making your application LARGE ADDRESS AWARE. For c++ applications, it is a setting under the main project settings: Linker->System->Enable Large Addresse, put it to yes. For c# application,
it is made using POST EVENT STEPS.... see this link for further informations.