movie out top, can it be faster? Any way? Please.

Hello,

I really really really really really really really really really really really really really really really really
REALLY REALLY REALLY REALLY REALLY REALLY REALLY REALLY REALLY REALLY REALLY REALLY
wish that the “Movie Out” Top could be faster.
When I use it, it slows Touch down to where it’s almost unusable.
This top is key to all the projects I’m working on right now.

I know that with a ultra compression codec,
that I can speed things up a bit… but not enough.
Also some times I need lossless.
One example is “lossless Targa at a resolution of 200 x 1”,
and it still brings Touch to it’s knees… and I have a pretty fast with 8 gigs ram.

If there is anything ANYTHING that you folks can do to speed up this Top,
then I will kiss your feet and say
thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you.

Jim

have you tried sending your TOP data via shared memory TOPs or touchout to another instance/computer and movieout from there?

Having a dedicated and fast SSD just for recording your movies might also help, especially if other parts of your app accesses the hd a lot.

Question for malcolm: If I would use shared memory TOPs to send a movie to another instance of touch, the data is not on the GPU anymore, right? So if the shared memoryIn is directly followed by a movie out TOP, can we assume that the data won’t be uploaded to the GPU (in the second/receiving instance of touch). I’m asking cause you once mentioned that two instances of touch accessing the GPU might slow things down, so if in above scenario the GPU wouldn’t be used, than it might help in jim’s case.

There are quite a few factors involved with writing out a movie with the data coming from OpenGL.
Usually the biggest cost is downloading the image from the GPU to the CPU. Although you may hear big numbers about the bandwidth of PCI express, this is only true for the upload speed to the GPU. The download speed from the GPU is far slower, like 10% of the upload speed.
We use OpenGL features to try to make this have a small impact, in particular we write images 1 frame late, so that we aren’t stalling waiting for the download (i.e on frame 10, the movie out top is writing frame 9).

Then there is the compression. This is done in another thread to help avoid the cost also.

Finally there is the writing to the file, which is done in the main thread.

Ways to speed it up is totally dependent on which of these issues are the cause of your slowdown. If you see Touch slowing down in areas other that the Movie Out TOP’s cook time when you start recording, it means the graphics driver is spending a lot of time downloading the image, and isn’t able to service other rendering commands as quickly. In this case likely reducing the res is your only option to speed it up, or maybe newer hardware. Updating graphics drivers can often improve the performance of this also.

If the Movie Out TOP cook time is large, check the performance monitor (turn on Graphics Driver Time in the ‘Monitor’ menu). Where does it say its taking a lot of time?

If your CPU usage is at 100%, then you need more CPUs or you need to reduce the workload that Touch is doing.

If it’s none of those, then maybe it’s disk access, as Achim suggested.

In the end, we do plan on trying different ways to make this faster. CUDA offers some new ways to download data from the GPU, which can potentially give us speedups. Also as Touch’s code continues to improve I expect this to get faster still.

To answer Achims question. The Shared Mem In TOP immediately uploads its received data to the GPU, so no your suggestion likely wouldn’t be particularly fast as its still ends up being an Upload then a Download from the GPU.