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

Reply via email to