HD VIDEO ON MAX 6
I’ve been developping with MAX a video mixer for displaying video movies on stage, controling the mix time between sevral files and adjusting the playback time for theater peformances. (on i7 PC, SSD)
This project started years ago before HD was THE reference. I’m still improving the patch but I still have problems with smooth video playback.
I’ve been reading the jitter receipes and all the threads on the forums, Vade’s advices and it all… most of them were posted 2 years ago…
Since Max 6, the "old" jit.qt.movie object seams to be the only one available and stays a poor alternative for HD playback within max.
I’d like to know where we are now.
Better objects? Better codecs? what’s the deal with QT? in HD?
Using openGL and several slab for cropping, smooth edges and adjustment makes the video unsmooth in HD. I’d like to make some other treatments but the base is unconfortable with quicktime object.
Any new experience?
I always use this routine of objects to get my fullHD video playing, without stuttering. The videos I use are mostly encoded in PhotoJPEG at quality 75%. This way I’m even able to play 15fps double fullHD (3840×2160) video.
If your on a mac, you can always try this external object jit.BC.QTKit which uses QTKit and copies directly to a jit.gl.texture via FBO copy.
----------begin_max5_patcher---------- 894.3ocyWssbaBCD8Y6uBM7rKCRb08ozuiNc7HCxTkAjHBgiS6z+8JsBZbt. k3Pcpu.Ho0ZO5nytq7OWuxau7Dq0C8YzWQqV8y0qVAcY6XUe6Ud0zS4UzVvL ua4Z+CMskcbuMtgkc5JlV+PCyMOddaLeQeqe3CRgtk+CXPbfePe2MTc924hx cJVt18CwIlQM1DZukYMEEZd9OyDu.Pfb+seBmN3cQWMWX7OfN7Y9TPqAe58E EmVcl4N7B1Src9q0qsW1LSBnl01RKYCSnlcBfumhQK1fZ0Tkdbl4BXERBvGw X3pihRFgUheUVg7FYE7EvJ4x5ZlP+BVQp7Mu7d6ZgrL2JEV7gfX.mMxxN7BE CGTk6s89HRdJQDbADgfcuASufGrgMkU9G4ELYSEUvPvinazJpn8fTUaV7sLM hLp3wLE6poZE+zrBvxkURk6mBrWfeRR71Tr8oPBgjkYXzyHzWS5Qh.dOh.21 lN0tv1OrHxIn764hB48NtdThcOUT9NyY4joY3oHnr+GIHilTwDEL0fdjonsr cf3wHT5+f8e+j2BnGcjcVnSMlLEY+wUePKKKqXixWbSRxIi4BfXNHTiDLb80 VhQStDanJyBTyT6XB59Jv8AKV59QTT2Y7nRhhBP2Py07iLDdZgykTOzQP8kD bGVXLU.4Cqd3HDjFs27Fhw9qQTC2cVe4LULvTwYSVBcQBWBW7bSsUz8CYlNv qXn7b+tGN9.wT4l5Ww0L+aO0htofW2lSMiSlLYksDZY0NqW5TrqcYTmVkjrc xchjEQytvkItS6WKOxYna.9nVVvP18Af4M4hIAlkWlMruSKgy.iLMpjxF68N A+ttoxE7dNZS7VBNN0tcPRyhBgMlnrDRZ7b2XbETBSISsujD7eZ46dw7PThE DHSe3+YAAg3zjHfvSC1lED4hDvwIamcjf63R3nIyIEu3DN3EuJt34+kW.p19 e5tPqrSkOPa8mp.8HVKXsZtfp4RwY1fepQemWTvDmW8sf2ZKHWL9+vXtvwpI +63I4pgmnY.GxUCMj4PNWMz7rsgWGNaudvIdFv4Y5qWhmZdQizbh19vIhIEp IqaJDjSBCGZ7naVN7OC3m9FQO1A3X.8wCO+OB7jEF7wjqH3wKsvIDJHzi9vv YCeWFcZSyQlpsGC.xMUPu0UxJYCzjKbMAD3oXG4C1mt1Na+Z8uwtOb9o -----------end_max5_patcher-----------
unfortunatly I’m under windows. thanks for the reply. 15fps is not really fine!
The 15fps was only referring to the double fullHD video, as it comes from a camera only outputting 15fps. For this reason I can’t test it with higher framerates…
For ‘normal’ fullHD video ofcourse much higher framerates can be achieved!
What about the poor WINDOWS 7 users?…
I think there is a misunderstanding here.
For the last 3 years I have used the code snippet I posted above almost always on Windows 7 machines in very performance critic situations.
I never said it was MAC only (only the external is)
Please try for yourself…
I thought youe patch was using the externals you were talking about. sorry. I opened it .
what’s the deal with setting colormode to yuyvy in hte qt.movie object and then translating to rgba? I remove this step without any difference.
I post an extract of my mixer engine, any advice or any thing wrong?
I think the majority of video codecs encode in that format (UYVY). By specifying it in jit.qt.movie, quicktime does not convert it to rgb using the cpu.
By converting it to RGB later using a jit.gl.slab, the computer uses the gpu instead, which is faster, and frees the cpu for the decoding and other tasks, potentially speeding up the frame rate. You also don’t use so much bandwidth on the PCIe bus to the graphics card.
So, in a nutshell: performance optimization.
UYVY color space indeed uses less bandwidth in sending frames from CPU to GPU.
@nicolight: How about posting your performance patch so we can check if there’s more of these potential performance gains?
Thanks guys for those advices.
any information about the autostart 0/1 that may change things?
I noticed that as soon as you add another slab to another, the frame rate gets down a little. I tried to make one with what all the slabs should do but I don’t really understand how to do it properly (mixing, cropping, color correction…)
here will you find the patch I use for theater perfomances, I’m afraid it will scary you…
Thank you Vjacobs for this trick.
As for testing with double full hd with more than 15fps, you could always make some tricks in premiere/after effects to make a 30fps version of it (even if it doesn’t look right) with twixtor or another plugin or whatever just to test how well your machine runs double full hd at 30fps…
But even running 1280×720 hd is fine for most use.. this is jitter.. I don’t happen to need full hd very often… it’s just good to know that we aren’t stuck on 640×360 or even lower.
You’re right jbl, HD is not needed very often. When you use a dual or tiple head video card (matrox) it is good to know you can manage with jitter videos larger than the SD format 720×576 but 1440×576 (tested) or maybe 2160 x 576…)
Hey, all- a bizarre thing is happening with jit.bc.qtkit- I was hoping for some help. I’m trying to make a simple HD mixer, using jit.gl.pix and thought for best performance, I’d use jit.bc.qtkit. Everything works fine until I try to connect the output of jit.bc.qtkit to anything other than the syphon output. As soon as it’s connected to, say, jit.gl.pix or jit.gl.slab, it seems as though the texture drops to a 1×1 resolution. I’m only getting the top left corner, I believe. And the biz arrest thing it, it effects the output from the jit.bc.qtkit itself, not just the output of the gl.pix, even once the connection is broken and the object is deleted. The only way to resolve is by closing the patch completely.
Any help would be greatly appreciated. Need something for a performance this week.
Here’s what I’ve got:
----------begin_max5_patcher---------- 1256.3oc4ZssahiCF9Z3ovJZuaYQwNG.lq57bTUgBItotSvNiiosyNpu6qOj DRBPhChIS6rBoP42G36+y+Gc4mym4ri8FtvA7Ev8fYy947YyzhTBlU94YN6i dKNKpPOMGJ9U1tmcVXFRfeSnE+LQrLMaYN4spgdjQEEj+EqFFhV5VJljnmub O9GX0TyiDwOQnoa43XgALn0qkKA3iBUuE.UOQtKcAOTtF5g8DZFVnQE5nP1A QWoFQhejiM6sBraSy1p.+AN1YAvwodeUvlFsWOUmuxIQYsPIlWxMkjibAjL7 KXdAgQ0p5hR4Q44MDOqwRTL5yL8FEtnVDgZD4VKhiegTs9UFguOuZ6ORUtJt Q+HzU+lePChRddlFyxL6sZxaVz3Ar8DyXweCmzDENrbLkPy43BLUDIJgS8vI 3GiNjI1d9S61i+XTL9hK9rb9LmTNIgQUfn0JUhq95tG.CTps54QkQOCZT9YV bgTONTrKhqn2cY3F1JRKZFKq8P0mnRGiHJYej.KHFvhbq2Tx9bNgJZ8EgoQx 83ohXNKKq0VYF4kyLRh7POF+JIQ7jduZRkxoSxqNBbp4nDRJtPzVlHJsnsjV d5MsFa5w2Rded9s89IT.r4.WvZ3B9+WJFPf1ZF5qd541MBvoQAbaOPiHAvFi bRz.mV63YrEqF784yq9iE+R3Pz34Pz.bnmav+mHw+d7Ln2.LHbUngA2noPzx fgnPzmZJThqqwY12NZzGpyq6sZXKQ3EoQ2QySGyKjQnWJLnF0pwOOAVvNviq NrJsb.swuLDsfPqyRdeM0zYdOQRRZmTxDGuPkUvj+0pC6whXjkHVoYvODHFN BDeK3XvCyOJQ+znE1TZrpF37WIzD1qNmVsKxsmxc8g5PydaLAYVqq2EpJ987 E7BGWAukk3dE5T+k6W7i7mXzBLWVoKnfgQf6LeP4QJEPSA2EcPvj0LQhAt12 Z.p2dCLjUXYRMD5ZZN.dQtpuVAtBFbOtnHJEeBExwQIinWoM8Y8DnSxiBMFQ lL9q+ylOV2CeTYR7ofODrzzL7YBX.C6QEgnN4Q6yC.VuObIbEX9VS+GMBNZq 1qaw4ga3wdYiVf+BNhCe+gYlvMlXDenO6UgQeLuH8.YDJOpOkekQe01+qqM+ ukIQtoDPOoW1Eu76huQDlLHxd14x5RA2kwX4pF3wfwXv.GN5oGp7RlVYmyTa Vyy96ZRIQlPjqtprOuLp6vIn+ylQEfclW1SZ8kCG5soQNqfMcayzFJy+RT1t HZphZN66SCcwAoL6Yp0VvTHOsQ1.WMr6u2H783NZ5TnprYIc.7cAdinH4U8P Raz9blmvPz03.hFxZZB4JYuFbLMotKCLOp.uUeu1x19TujAxdrHJZLwvBGNQ Z4+3gvvOyDXwnb8B5sMUSeoFOOuqgTbmtXyZiD6Ub+AMG1nU+vaa5rtwjMnd ZrL9tra.Nq9dmsfj7FjjLkbGr9l1T9uhDUWrwqgKv9XRmeWsco+FaeYlFct6 ErUp4mdwZtMuwrKbqZn1S5jqT6zqS6jy.qwyZKvCb5virVM.5iEbF7zBNovw aH1Y5fiM1NalLzDZikLZxfiuEvIbRQC5CEZfCflfICMdVbR4OYnAYAZ7lt7C 1DAbBC4.sxKe5Nsf13lu5JgioZiN+hlTHoyujoN+Jl59KXRtauO++.zI3hVF -----------end_max5_patcher-----------
Nicolight, did the uyvy trick increase the performance of your patch (quite impressive patch indeed btw!)
I’m using sometimes very high res video (3840×2160 which is in fact quadruple and not double hd) when working with spherical video. Every detail increase is beneficial in that case…
@goto10: it’s probably due to changes in GL architecture in MAX6 because your patch works in Max5 (I had to insert a jit.gl.texture but everything stays on the GPU).
What does work in MAX6 iis that you use the second output form the left, which outputs the uyvy colormatrix which you can then convert back to rgba by a slab on the GPU. A bit less preferred, I know, but possible. I tried it with a fullHD movie…
----------begin_max5_patcher---------- 1378.3oc0ZssihhDF9Z8ofP16FWCUwAk8pduee.1jNSLkPIc0CRwPU1G1Iy6 9VG.DzBEsEZ6XBF+qC7Ue+mq3ulNwdM8MLy15urdzZxjeMcxDkHofIk+dh8V zaQoHlZZ1Y3Woqe1dldHN9MtR7yD97jz4rTzZKFECsdXCIEaEEMe26u7NrHY MZdJgim+7arpEShUKUrc+IvuR3FZFOCsEqF5uKHnzpQx1skjkh4Jb.aLcF4+ TSG3L2Y+bo63GNYsH964X8IVh5UIoqjmhcEX6YV11Veubx4HdzSjrjUE3Htd 9tvEy8mY45IeQVfPn5qkycr9tbM+d5T4iY2DlLm7lId5qDMEtPxOdd6YolqA WTxMkji.jBKlWvELBMSgyYkxQ44MDOowRjL5yT0FELqVDISKxoVTA9ER0580 BE5ooUCVAbkZU8HvQ8kmuydXKzmIQzT8dKmb3rFO.smXJM5G33lnvlliyHY4 EXFNii3kvod3X7FztT9Jypp1iuAEg6bwFMKlXmTPhoYRPzZkRwUutGs.9Jkk eyCiZFYnbCKlING6XqQER5ccJtgUjvhlRSaOTsFU3XfxHaQbLmnAKzodSIay KHY7VuHbFRrGOwhJnoos1J8HuXXjXgROB+JIl+jZuZRkhoSxqTA10bTLIAy3 skwQIr1RZEyro0XSO9VxOkmeaueRlEn4.F78Os++ww.bNXYFLtNNV.nwHGEO n16uqH.95.jJOe3h1QImTEorzKbP3PXGbH7qCG553+YRheqCFz8JYP33yffE AZFLT9kKTlTZLoPAh6zY16JoQv0PiN8hm7jbifmbOoo197BojrtBCpdIxwMS fL5thnJ0XoQkkSK0oHDMmjUmk7wZV6f48DINtcRIcbblLqfN+auT1WJhg8Dw xSF3t.wfK.w2BNdugRLVT2fXGhdeUDRT3mYalZGfuMe6az8N.1Ut71j+A8u1 M1+o6eiWXo2xZryekjESe0PQ1PGi0RCtrhlOaYxd9p.7tAJ2NfiWvbn6RG2E xNLBFjlJXum+DMigKD0SW1ll9GRxWHHKw5AzNNUTYFIxxwD2bS5.A1QGHfNI ySQjPEO5szUGlW0UFz4JIvsXFCkfOhAKvnXSMjEd+wGkFVv.UUXt9entTuT9 X48GeTYRbS3CNMIIEa5jGbAQM57fnZ74DmE.TmjdQkQdkod8RJDbNGWrR2XT cz4ajZuraNq+.XhB7t+T9kDVfpFv.vGR2KihtImkriX5vCuvCO3RN7WeZFPY qCJefkZWfAH6x5n4+j+CBWm.gwQEhhesdHkRyk2R.1xnACXH4L29eeVRIhjd ExKcqmosAk4YV7gR2zGFUmn9RnUmudzJDD1jVcCFBZkasV+w.oENjblWWb1Z TVhjaL98IcqcCajTyOT1b6sltJrRnFXpKMEuyHDkujMf5Z.ACkOotmgpRmEm EKOGKWSEJu3SIaPk4yIIK88xqeBBfCEWI52nP12WUmF3BDCuRcC5hFLkeDAx 1vPHiwvBte4uxLp9ZqrfAIREyrqm+PxJNmHomtvoR2K2gK1rxHwvA26SIi1g Qk0n671FgJ5JXPJM3mhx6Kn02vso6lcbK+97opVru1a+keHNoytufiRyWKZm c4B68RMw1Wap9Le3U4UdxO9J77ad2bcb+cstmuiu6tiu2tiTA8ENg8.MvwEN tmibFW3.OGbbFM3rrGJqvQCMA8wPFNZvwqGvIXTQC7tBMfyfF+QCMt8PS4MZ nA1Cz3NZnAzm.xiXDPPeh4Lhg.A8Jpy3Y8zqz4iXBz9gmQTe0mvxKFO33ziH gfqMTnt3vC9qtIgxA+E2N3u21g+01D61um9+.ankZZB -----------end_max5_patcher-----------
Hi Vjacobs.it seems the uyvy increases the perormance well. THANKS!
The project is here :
and can be dowloaded here :
now another question : what’s the best way for spliting one movie into 2 or 3 parts (in order to corner-pin separatly each part) just like jit.scissors do, but in OpenGl context?