Achim, George - thanks for the quick and useful tips. We were able to get it working with some experimentation : instead of using MovieImporter with external timebases, instead we used the normal timebase but took the output image and stored that with a Sample & Hold patch, after which the movie is effectively no longer in the active patch chain. Doing this, we don't see the movie load failures, and performance is great. I don't know why this alternative method works and the other method doesn't, but there seems to be a lot of voodoo when doing QC programming.
On Jun 23, 2013, at 12:11 PM, George Toledo <gtole...@gmail.com> wrote: > In addition to Achim's advice - > > For this kind of thing it can sometimes be good to activate the down-sampled > image for a moment, inside of a render in image patch with feedback rendering > enabled, and then make sure that chain is no longer evaluating once the color > buffer was filled with that image (sometimes this might require feeding a > blank string to file paths or careful multiplexing/demultiplexing). That > allows the texture to stick around with a minimal amount of patches > processing. > > On Jun 23, 2013, at 2:59 PM, Achim Breidenbach <ac...@boinx.com> wrote: > >> Hello Michael, >> >> 1) AFAIK the movie patch is only triggered if it's inputs are changing, >> because of performance optimization. If you put in always the same "Patch >> Time=0" it only gets called once and so it is just able to call QuickTime to >> to load a movie, but this won't render it yet. You should be able to >> "jiggle" the patchTime=0 with some really small random number (+/-0.0001 >> secs), so that QuickTime don't has to load a new frame, but gets always >> called on each render cycle in QC. (To do so use a Random patch and a >> Math-patch to add the random number to the pathTime you are feeding into the >> Movie Importer) >> >> 2) Since there is no correct error message (error null) we can't be sure >> what this means. However it could be the explanation why you don't see an >> image at the first (and only) render cycle. >> >> 3) When a movie gets loaded QuickTime is preparing a lot of media data in >> advance in order to have some frames already in the buffer. This may take >> some time (too much to load 12 movies simultaneously). It may lead to a time >> out for movie loading trying to keep QC alive. >> >> 4) Just a guess: If this "loading load" from issue 3 is causing a time out >> then in the next render cycle QC tries to load the movies again, maybe with >> the same timeout again. And finally keeps timing out every loading of the >> movies for ever. >> >> My suggestion: Is it important that the movie thumbnails are present very >> quick when you start the composition? If not, you can try to develop a >> composition that steps through the files list, selecting one movie file >> after the other, just using one movie importer to read in one thumbnail at a >> time. You may use a "Que" patch to store those images in a structure. If you >> have a structure of thumbnails it may be a lot easier with an "Iterator" >> patch, to display all those thumbnails with a dynamical count. For playback >> you will need to have two more movie importer patches (which makes three in >> total regardless of your movie count). >> >> best, >> >> Achim Breidenbach >> Boinx Software Ltd. >> >> >> On 23.06.2013, at 17:01, Michael Diehr wrote: >> >>> We have an QTZ composition which scans a folder using DirectoryScanner for >>> movie files, and loads each movie file into a MovieImporter patch, using >>> external timebase with time set to 1.0 seconds. This is to present a >>> static "thumbnail" of the movie file to allow the user to choose which >>> movie they want to play back. >>> >>> We've discovered a number of issues with this and are looking for >>> tips/advice/help: >>> >>> * Issue 1 - PatchTime: When MovieImporter.PatchTime does not change, the >>> movie will not display at all. For example, if MovieImporter.PatchTime=0, >>> nothing shows up on the billboard. If you then change >>> MovieImporter.PatchTime to 1.0, then the movie will display: however, the >>> frame that shows up is from time=0.0, not 1.0. So the bug seems to be >>> "MovieImporter with external timebase, image displays only after PatchTime >>> changes, and then only shows the prior time" >>> >>> * Issue 2 : Errors - for some reason, we get a bunch of error messages in >>> the log. I'm not sure if this is related to Issue 1 or not. The errors >>> look like this: >>> >>> Quartz Composer[12282]: *** Message from <QCQuickTimePlayer = >>> 0x7fe2b97535f0 "QuickTimePlayer_1">: >>> Failed retrieving image from movie <QTMovie: 0x7fe2b7439990 time scale = >>> 2997, duration = 60000, rate = 0.000000, tracks = { 0x7fe2b76ae0e0 }> >>> (error (null)) >>> >>> * Issue 3 : Load Failures : in a simple composition where there only a few >>> movies, it works fine. However, when we make it much more complex (e.g. 8 >>> banks of 12 movies) then there appears to be some sort of timeout problem: >>> some of the movies load, some of them don't. >>> >>> We also see these errors, possibly related: >>> >>> WindowServer[117]: CGXDisableUpdate: UI updates were forcibly disabled by >>> application "Quartz Composer" for over 1.00 seconds. Server has re-enabled >>> them. >>> >>> * Issue 4: Variable Performance : Sometimes, the composition loads all the >>> movies normally, and will happily play at a solid 60fps (this is with 2 >>> banks of 12 thumbnails displayed, 2 movies selected and playing in >>> billboards, and one billboard which mixes the 2 movies with some simple >>> effects). Other times, it bogs down to 30fps or even lower. There >>> appears to be some correlation between performance and Issue 3 - when some >>> of the movies didn't load, then performance was worse. >>> >>> This is all tested under the latest version of QC: 4.6 (148) Framework 5.1 >>> (284). The movie files are all PhotoJPEG 640x480 short duration loops (1 >>> to 20 seconds long). >>> >>> Any ideas? >>> _______________________________________________ >>> Do not post admin requests to the list. They will be ignored. >>> Quartzcomposer-dev mailing list (Quartzcomposer-dev@lists.apple.com) >>> Help/Unsubscribe/Update your Subscription: >>> https://lists.apple.com/mailman/options/quartzcomposer-dev/achim%40boinx.com >>> >>> This email sent to ac...@boinx.com >> >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Quartzcomposer-dev mailing list (Quartzcomposer-dev@lists.apple.com) >> Help/Unsubscribe/Update your Subscription: >> https://lists.apple.com/mailman/options/quartzcomposer-dev/gtoledo3%40gmail.com >> >> This email sent to gtole...@gmail.com _______________________________________________ Do not post admin requests to the list. They will be ignored. Quartzcomposer-dev mailing list (Quartzcomposer-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com