Jitter output stuttering when clearing/importing into jit.matrixset
Anyone know of avoiding the behaviour exhibited in the patch below.
Importing a movie into a matrixset or even clearing it causes jitter output to stutter.
The effect is far more noticeable than reading a new movie into the qt.movie object.
I’ve been using this in M4L and it causes audio dropout – see this thread:
But even in Max Jitter output is affected.
There is no asyncread/preload that I know of with jit.matrixset.
Anyone got any suggested workarounds? I am thinking either :
load the quicktime movie and feed it into the matrix frame by frame (this seems a bit clumsy)
use the mxj matrixlist somehow to achieve this in a low priority thread (no java experience but willing to have a crack!)
Any advice would be great,
-- Pasted Max Patch, click to expand. --Copy all of the following text. Then, in Max, select New From Clipboard.----------begin_max5_patcher---------- 1281.3oc4Z00iiZCE84jeEV44zTLXyG6aUpuzmlJ0GqVMh.tIdVvNK3jYltZ +uW7Gj.yTbfz3LJcUjR3Zbf64364dsM7s4yVrl+BodA3Sf+DLa12lOalpIYC yL1yVTl9RVQZspaKx3kkDlXwR84DjWDp1efkQ.hsDvAZNgWCRqHfcEouRYa. hpWAaoBg53ltjUPRq.orb.sbGuR.J4GnDPIotNcCodE3AFn7UP8q0BRIfJ.Y o6qI0cu7BNXmrQ.iCJSEBREXK+YvuApIB4+8gCjp7J5AxO+q+wuKaTdyqW05 1ETFIiumo78XSi6REYaa51iUjLglSPdnUdKAHeO4OPrxBBiV4A9r4eQyU3mu 9oexG2d8+KNSvRKIpS8KUzzh1yv1WRYEDghMgc5dM8uUcG52bON1W9dQam8j M984ykesbjiVq2KDb1BK.LThn.48DnAo76+UvEXEB8801V0MIdcGQe6VrNks YA3yW.TLQGuKvqfmlWkVZAigdX8nmBklwv3APIbhCg9SYHbPZ4xnDF44Fe9c Lh..Aq0ervJAIJdvSQJQA1F5gItLtFODoPkoYLgLC860j2jQR5K9vjVjhsTw SgVkKvHWxY2P8kNEsNCMe6plCrvO9Z0EBoCtfI1zZvv6Hs1PzipVlEFAFFqY Dch1HqDB59O4ySTwplBxUzWjUh887.HP11lx8gnlCi8rRUpvETrljhhspu7c o9xeHtpAdOpgmLEz0MTphjlCddKgTbFUFVmzFFAk+jfsESEe+GR80RhnhCBr E6ffFkkJnIzZ4rjqAk.WgSvv3naU5YKxsuJVoSOG36A7Qifl7Mym02tDy6ZH wrRTeb5r0qSKNmNK.F1QmEasXF5GCcle.bz5L7Ot5LCMMNcV3+ikY4z5sMqn 2tNCBU7CLTkbJwpNK3NRmI3a1TPN6xIfmjQVRFCCNcgZVuKQPpdjvRWWn7Qu qvZykq25VmOIX7ksgWmoGeelPIXJ0sg24YTjbytmorb9ymmRz6pCDaXlng3j HqHecZ1W1Tw2yxGV3LHlcMRaqlLNndGCz1omN1wzaIRUdfZiiey9kqvgr89v uluuJq8xcTVBNgjbRsfxRETNqWuh50qsz7bBqaJ9RZ9NdSt55i6fKdoL6gZs ymLNcen0xpD4CuGxiGAAiBAnKAAv3fSHPY3DDfFEBBunw.X2w.naFCBbg+Kk XRe1KpydB+FK8ZgZAWnS.2XFblHzB7wcfleBpCzZsf54cznZvFKGfM70GaG8 Xud9uaB7FSxqnKy+Q87eWk7xaTJmIJ786k802ooeSFC.7tL..6A.GEBE6..f kyS8nhFE60Qe2Zo02GAWvGXwQ7+gRiPyywruEtaxKk0GF3RbD3LibNCbiRX8 FF37nKV6yIclUizvU..dF.LQ2O7sSAGarbk+6eF+ehSpLBeLjYY6j.bZ.TvY 7+3o4+lcaV6+ljbNy+iFi.3hT2IlGoW6wth8Qmw68mXgc4rdkLdfdiofniVN .Auw4tNEFM97GegwQgtvKBblmLCNIpyyoo0BGp2xr32acalw+3FVg2VnCMOt XH78VswCtMbXTqfchqj.qxuad4ShO8ZdoONx+DrjG6hjPiZuc7m35iBCjtLJ Lt2Jv6YEgZeYIvFKWfNjCPGLJRiNbWDHsNKBz6EW5tcGHU0FuP47KJSehWIM CWpLoLsoxGVTQNPa6evb4U66y+GPH6r7V -----------end_max5_patcher-----------
I found the same problem and tried the solution of loading the quicktime movies (very short < 200 frames)via 'read' or 'asyncread' and then 'framedump' do load it into the matrixset. Max Jitter stutters TWO TIMES! Once during opening the file then again when framedump starts. Unusable! Didn't try with audio. Now I'm using quicktime movie to directly feed the rest of my chain... however not a real solution.
Low priority thread would be fine… but how?
I contacted support and they acknowledged the problem, lodged a feature request (for low priority importing) and sent me a patch similar to your solution (below).
It’s not perfect but its better than what I had before.
re the low priority thread thing. I found this thread with a quicktime player in an mxj object.
I thought maybe I could do the same for jit.matrixset adapting the mxj matrixlist example.
I had a bit of a go at it, got confused and then sidetracked!
Sure it could work though.
-- Pasted Max Patch, click to expand. --Copy all of the following text. Then, in Max, select New From Clipboard.----------begin_max5_patcher---------- 1501.3ocya0tbpaCD82vSgFl9SJi0W9i9q1miNcxXv5BN0Xy0Vjj16be2q0J 6DShA+Qsj8jIAVgQrmi2ytqjH+X8pM6ydSTrA8an+DsZ0OVuZELjZfUU1q1b N7sCIgEvksIU7Z19m2rU+RRwaRXXIJA4TOZbDLV408qzf5A+VVpLM7r.do+H ONLo9UxtJSDR4+bQncjMa1h1DmVNw+Ui2aQ7+BuNlryoZ3zqmiSKeqfmgqF7 Rn7vo3ziOkKNH0SH1mriuEwb7JeqHJXPb14797WNQZm.lIhZvetds5Oa6Isb VTTDdT7EdINMR7F5WvsQMdigZFDmPd.mD3pHCNA3DNXf8uKmfGAm7fPk8swG 7QFprOL83jGq3wMVrxc3kCYWSkhbjS4mWqRI1H3GkLZqllFkph2cDji5sh7Y p+9.lhMgppiB42xKI.fxZipblSoEiRUQM0Dim8jVQhuIxSxdsEJg3ZbJ4ApJ pKuAkny17fXE7DFq.AJQWOeAgKyCiZKSLgOmgK0bCI.BTb7sW7Rd4zJPeHkP 4hvn1HHmQlZF9cPDEsShh4oUTbdGQQzwPTWOuWj2FEP5lBtDpXxxb3OIRC2m .WgSGYlmzhWr.ff7czIl6felx9bJm1KWkmCk4w2ocGr+rlSFXFNFq3j.p8jX OGK28c4tyYuDKJamnr3NyA86gWkYExvbYqMMSFASU947jl9eflCuiGvw9dir mHVkhiXf.q8Wkxrz1HC5cw7sZmdWKBWe2WCBqUIJIKLpLAQaXDOmZCd.vBXJ PIblMWJ.FsW+SaYLBFeCuPnw8dbpR2R.pxGnMOZGQR7oi1TARZ.8UNaLKpbZ IEH6fKHxbso7R06BJ6jJUaaDi6rtZacFTpt0EOSrjf6QKGRDgs0PClMqDhCn WpZUg5Y2Bx5BkEBoZo1HF5vovbjaYg4R+oMpxXEjG89Svc0TlmuEaxCTXudR HRtiHadawqZk1b3g.t8Bo9dYS+4YHZawNASa93G0A2i3FcOaXOnhkK0.okGP +usIwbVX87xp6xUuynDqqy1uOL4d5rYM0M0A2Pm4GrLzY7EgNifcW15L2ElL qhvlOYVTbwIQwczYzEPKRXN7PfIzYxriGSDskNFSG8lZM3EjqWw.lEXrUjOh 7I3Q0erAxnrzKbiWboTLegaE2b403znVOpEL8w6I9iEH6CO72GyytlF0yUBT 0oqd6dwpyy0dH8isavnPs5VpdCplEjZIbVUMbFAJFaEjV2d8nPJbIaRhS+7W cE3CRM9svuH6Z9gZTTeVDnO9jhDEx3zPYbVZyKhbyEcJNJRj1r5WYqCpBh.T cZ8FQe8GBoO9iu07Gbu7Gp83GZe7GuN7mywQWxJ6PonNDT+kBB1.J8tQ034b HvjhgTrM65ZBQEtOnRUecHvhG.G0U0xy39jFKVq1hoEeXZKV95iHy8qF5VP0 TBXLWbhkYDMtID9rCb0tjLFjqOvSlqtSgOYAnigM5sU0Q4fXcftOQAchNeOv k0mBSMTUVl..d841Svv.fVJ4yqx5T8bSQ+zN7d+g475Ujfo5vmxTD7JKS4+j N7e1v7eWm28XURMGi6+3N7e5.Keo2sapN2Lln8eWy4+cWoZfHPGxi0eqBpJq vLj..2mNHFk7E6BQPUmg9MFzaRsZpXqdAMtQfVcMQCAMeCTRrNS0rWRLvDfq 1kcuA.FJofSuRJLJDPHMQ.XY.D31C.LvEUToHp7+lVFv+4Seuxu2kq6M87ZF +mM89ecgbsfl3EzPd+tkM5mmZh01UWlWimpy6toQ02MOc5avvHUbXl.bzl4t nlM0Ete2dX+OpZ1vvHHvsWHvaLHnJ6E0nIeI8A.Dt81io9jM0haIXOVw.wwd tSeJ1Sbsq+z4JprG+PcVTQOp+W55ldX1ye5SECpm87Guk0A.P4KrCjnO2trW t4dUriFXuaWAKK0dPeU6D6b6hYxnY8o+Ed4xKh7hp4DbkMmCeNKWY5tELiS0 lvLtIW7Rb80yVqlset9+.z6uQsB -----------end_max5_patcher-----------
Yes, this patch runs rather smoothly. But it has nearly nothing to do with a real world situation. My patch, a video installation, is rather saturating CPU (windows 7, i7 cpu) though most of the video stuff is done in OpenGL. Many Quicktime operations introduce noticable stutter. Also during record. I’m recording in background from a matrixset frame by frame at a very low speed (had to slow down to 2 frames x second!).
So real background threads would be THE solution!
Today I posted a first test session to Vimeo:
Well it did improve things in my (also demanding) real world situation but it isn’t ideal for a few reasons.
I never linked to thread with the java movie player:
Have you tried optimizing the video, codecs, image format etc. Using a ram disk perhaps?
Quicktime on windows sucks though.
YES!!! Just in this moment I got a first result. Never tried Java under Max before… a steep learning curve… however I got it running with my patch for a few tries… and a lot of MAX crashes!!! it doesn’t work anymore now… Surprisingly nothing changes, stuttering still orcurred as before! Who knows in which way the threads are assigned, or if the MAX event is delayed and so its scheduler???
Maybe I’ll go a bit deeper in it but now it’s time for dinner!
I also tried playing my video clips from another top level patch. Same result! Now, as many other movies show much much less stutter than mine, I changed codec to the super simple ‘jpeg’.
Bingo! The encoding with qt.record isn’t heavy anymore and the stutter in play is lot shorter (nearly invisible). I suspect with the old format the decoder had to go thru the whole file to collect all the information needed. Seems he does this synchronous! So it takes a while.
For my current app this is the final move.
Forums > Jitter