Jitter Playback of huge files
I’m working in a project for reactive cinema and am having a problem.
Basically it is a short film that has alternate scenes which are selected in real time based on audience’s response.
We are using large files, full uncompressed 1920 1080 25fps Quicktime RLE .mov. It plays well each of the scenes but when changing from one to the next there is a noticeable stutter of about half a second in the video.
The video runs on a dedicated (and rather powerful) PC running the patch in the runtime environment. It only gets OSC messages to change the clips.
I would like to know if there is any way I can optimise my patch to get frame accurate playback with such large files.
Here is what I have at the moment:
----------begin_max5_patcher---------- 1572.3oc4ZtzbihCDG+rymBJW6QOtzSdrmxTSsGly6wolJE1H6nYvfGP1IYm Z9tuBIvFr4k4U4T4BN.Bwe8Sc2pUS98CyluJ7UV7bi+13aFyl86GlMScojKL K87Yy2495Ze2XUyluNb2NVfX9B88DrWEpqu228MCTfmwQtGKL616cEqelGr8 oH1Zg90ffVKAKLrLSNZambDAVBL9d5iv8T8W3pe7IHHqe1DFHBb2wT25yQbW +r6DbXGOvmITpClq4w7+S0bHR9JN01vChrFmc08QrX4HxUvCCxqSDMQalfji YGL9dxy7mGdH4vhg.YvXQaQFUAKaRcHydTIVGF7Qtd7vsQgG1m890cn3s8L8 na97SCjRF6PG8X2I4HTcDSJerSqcDVbnjcUtfsKSJYC5LNfRO+nq+AV9GxiG 6txm4oUXhkQmrK1whic2xtxtHh45svHVD1QjQwZuJSkkh9HztblgtQ6EzsXu .6.TBXuH00ULQHY7pJwAOw6xX9J2fs0RFhIRACMSv05IQHioqDZHQCbHPCB2 dzPe2flgvpAgMaOZvenrZRiN2NzfdmflXluArRznXxhFBAm4MgU4PnsephKX 6wLF7.yEP+3Rl8Rq3h08FWpZA6XgajnaqUSbf4VqFiVRkzgVNPbF.d3LfKUW EN1DI0lz60nObIMGFsghMrtbXfv6sjXp1Poq4zQrTNNHnJtBRAmprSfn6LCk Jhm7qcLQTnAhVeLk5vBljZln1XfIs1cSRdmjq6O3hk+RrbW3QtzMxAALf.6p C7Ja9S6bEQ7WadYIsWEFn8mP0u666tr7Fg3unTaFS6li+Z89vsZuAKd8m1bv 2OdcDiEzQvfgKsQDKfkDKTykNTaSn8BCGPs43ciHBTlICbI0gBsspci6JIyh RwSJejcD2mcjEEyCCx05YyOOvr0IyCxu9BBjaJWh8s9gq+od+8frK5w1bScR 3dVv4GnPUjRKkT9VxCxWFpKewtG7EOUfQfkkd+MtqYU9vkNeLa91HtWXPhHJ 7jIWN608MkOQQOizVD3tujGVDF5uxM5HOluxmUXlPZS6FvkArXBtVOHvomiu aeTxdOx2Wrfjhs7rzXNz2uPWouywRtiG6HeM6Etm3YUeclVEJ3YNKmBdaEtd sUyqnq2+Du1cOy3y+6W95WM9RnGKeqJwISaFYpyIFd0tmpJ.T8dXUFXtIOsp p32rrPS5+XQGAmtaafHHMKnVKQxHw5RvhnUiDTqFzkV3W0cxlMS5u4C3fs3R UWje7oPyF+ELeKpNBcC3Bowktl54SS9p8T0QKHTmsffCHTKrfWQl9S1a0Rxz BZb8OsivX0QhYSdnjNxWPm4KYZ3qbu+RjHoQsT9pZ.TOUM0lsTqlvJcxMaQC HVEga25yZz7rcLyIMxHnIlY1gHik4rdd8dedPUKcpjax8KGGwgGhVmMVSEmQ Qk6whE7fSY+7sSwqtncOy87Jlrgh2bu8gRHlJO8miowouaU0zVpZy6JUSZop o2UpF2RUiFPUmdQo7S+PftGYdOIeKRevmbExsXu5fP6BjeOGMkfdc4d6Gtx0 OcuLmZy7VkZekWroMIbgVd3LEFt5W7BOvK7EizzbdLQRmKkgwixIBVzdCnwi ahk4ecPtWg9VZYjpTCFXG8OXqZqsw6kRaz2uELFPxUei5+VvDy2K0QcHpvbp 8RZoCquByle.pvLhBacElsneXpvLT+k7PDTyUX1x5CeElyhBCnsnByVNSUXX 0auXBrZ7cYZIoP75jnJjmQE4hjL+mqQWkHR4Igb0TZq0D99SSW75pPSN2llf 55xirwpePvSm0WBRagZgjocVkb+oIXqzD81zDVtu+j4QS0rJgb9r9Rv1H1o0 qv4tSRP5vKoz4PLVujo1OUcVeEKbDr+5qlPiflH1l5XaN48IRNqmp0YDDKE. FGwNFjkdVdfBhsu1llvQXEu9FuYDjDxhnPlSgEgc5e3ZK5XnVSv3nVh4HnVL DONpsMnM4++vaBs.ULJnVyjz+mIfSjXm1zYUrA1flHjoWSMwIxztXHtMQbtX OTShlZbtCOsI2SaglfvoeCGMpIzzu01lzj0zZiqLeaRSl8YtSdxed3+gEjUV p -----------end_max5_patcher-----------
Any pointers will be greatly appreciated
1-Maybe you can start by playing with different codecs. If you have access to FCP maybe you can try ProRes, i have a rather good experience with it. Also check if you need the alpha channel of your files.
2-try to avoid using two metros. better have just one and distribute your bangs accordingly.
3-try to move your rendering to videoplanes using the openGL objects in jitter(jit.gl).
4-optimize your play back with Vade’s nice tips:
5-maybe it would be a good idea to enable the adapt attribute on your qt players
6-are you crossfading between files or they are played consecutively? use a umenu object with pointing to your source folder and enable the autopopulate attribute. Link the list with a prepend read.
Wow, thanks for your input.
1- I have suggested recoding the files but the producer and director are quite keen in not doing so. They hired some really expensive camera for the shooting and want to see it at its full resolution. Will try playing around with ProRes and see if they notice the difference.
2,- will do that
3.- Is there any real gain? I always thought that using openGL helped mostly for operations in matrixes. Didn’t think it would make a difference for straight playback.
4.- will have a read at it.
5.- will test.
6.- No crossfades, just jumping from one video to the next. I have message boxes on the patch linking to the files which are in the same folder. I couldn’t post example of the videos for obvious reasons (The smallest scene is 13 seconds long and 700Mb)
Test the codecs. I can imagine that the filmmaker would love to see his footage as good as possible, but codecs can be the bottle neck of things like this. Check the alpha channels, those can be really heavy.
The gl objects can help you to optimize the performance as you will be using the GPU: movies will be passed as textures and bound to a geometry, in this case a plane. That will be a huge relief for your cpu(which is the one managing the loading of the movies).
If you are only using one context to render you really don’t need two video players(as you are mentioning there are not crossfades between the files). In the case you want to keep both qt players stop banging the one you are not using.
Read the Vade’s optimization page, it can give you good pointers of how to use some slabs to improve your performance.
Option w, if your main concern is to have an optimized movie player you can try to wrap your own player and send osc messages to it(there are some nice c++ toolkits for such thingies). In my own experience I had some bad moments optimizing jitter for this kind of tasks.
can you make it into one huge file and jump frames? that’s way better in my experience. loading any new file into jit.qt.mov causes a bit of a pause.
there are tricks you can do with a single file to get an xfade effect, jit.xfade into itself with a speedlim delay, or jit.slide.