Movie loader in an iterator

itsthejayj's picture

Hi all, can anyone suggest a work around or confirm a bug/feature request regarding using the movie loader inside an iterator. Has we never been able to use the movie loader patch in an iterator or is this a QC 4 thing? Also did vades movie loader work inside an iterator in QC 3?

Thanks

i've attached a simple example coverflow composition showing how i would expect the movie loader to work in an iterator.

PreviewAttachmentSize
movieFlow_test.qtz112.68 KB

itsthejayj's picture
Re: Movie loader in an iterator

console error

9/15/09 5:08:01 PM Quartz Composer[4248] *** Message from : Failed retrieving image from movie (error (null))

smokris's picture
Re: Movie loader in an iterator

I can confirm that Movie Loader displays movies under Leopard when used inside an Iterator. However, it's incredibly slow, as for each iteration within each frame it re-opens each QuickTime movie (and opening a QuickTime movie is an unreasonably slow process to begin with).

Some Iterator state issues along these lines were fixed in Snow Leopard.. So I'm thinking this can be considered a regression. File a bug report.

cwright's picture
Re: Movie loader in an iterator

yeah, right or wrong, you do not want to use the movie loader like this (at least until it gets retrofitted with iterator state sanity stuff). opening/closing movies per-QC-frame is going to make the user suicidal.

itsthejayj's picture
Re: Movie loader in an iterator

Thanks guys shall post on the dev list soon, hopefully the apple team can get this working. So much about having a perfectly dynamic composition, i will have to hard code movie loaders.

itsthejayj's picture
Re: Movie loader in an iterator

Indeed the right way if your using a structure of image. We are however talking about loading Movies and i'm pretty sure the underlining problem still exists that way.

smokris's picture
Re: Movie loader in an iterator

itsthejayj wrote:
We are however talking about loading Movies and i'm pretty sure the underlining problem still exists that way.

Correct.

For a project I was working on last year, I needed to trigger hundreds of short video clips, and have them play with minimal latency (it's a sort of drum machine). I ended up doing this by manually setting up a bunch of parallel Movie Loaders (NOT in an iterator) and writing some JavaScript code to implement a least-recently-used caching algorithm --- so that the same Movie Loader would be playing back the same sample as much as possible, and try to switch to a different sample only when utilization was low. This worked pretty well, except that the entire composition still freezes briefly whenever any of the Movie Loaders changes samples (even in async mode, since QuickTime needs movies to be initialized on the main thread).

It'd be cool to also add some sort of prefetching, GigaSampler-style, to anticipate upcoming samples and have those loaded on unused Movie Loaders. (But unfortunately that (glaringly obvious..?) technique is patented and IIRC the holders like to enforce it..) Or just dramatically increase the number of Movie Loaders, but that was a lot of noodling I didn't feel like doing.

The issue with QuickTime needing to be initialized on the main thread isn't going to be fixed anytime soon, apparently, so the only real alternative is to implement a new movie loader patch that's not based on QuickTime (see also this thread).

usefuldesign.au's picture
Re: Movie loader in an iterator

smokris wrote:
… I needed to trigger hundreds of short video clips, and have them play with minimal latency (it's a sort of drum machine).… It'd be cool to also add some sort of prefetching, GigaSampler-style, to anticipate upcoming samples and have those loaded on unused Movie Loaders…

Could you export these short movies as tiff/png sequence files and pre-load into image arrays inside QC, thereby circumventing Movie Loader patch and QT issues. Image arrays would then get played back (could even overlay using blend modes or whatever).