There are many factors
. RAM is not really the issue here, it's more the processing power needed to decode and display the images. Lower image size and lower fps will improve things.
The path I have been exploring for the past few months is to have a separate thread that pre-buffers images in parallel to the playback.
The pipeline is now mostly reconstructed, and it does indeed give me better performances and thus less automatic speed decrease. Not as much as I would want, but some improvement nonetheless.
For smooth playback, the real culprit is in the rendering though. And after much experimentation, it's clear (again) that unless the rendering is done in a hardware accelerated technology (either WPF or even the older GDI) instead of GDI+, we will not have a seamless full HD playback for high framerates.
Problem is, WPF means that the whole user interface needs to be rewritten from the ground up. (Some experiments with Direct2D were also made but there was issues to re-convert back images to GDI+ objects for use in the rest of the program…). There is also a WPF control for interop with Winforms, I haven't checked how it could work with existing drawings and other parts yet.
Another route will be to work on a 64bit version and expand the cache size to several gigabytes so it can contain more than the current ~3 seconds of HD footage.