Movie Loader & possible workaround

steve holmes's picture

Right I realise this has been discussed before but the movie loader patch in Quartz Composer really under performs. I have been testing an automated playlist composition on a mac mini, the movies play fine in Quicktime but stutter a small amount in the quartz composer comp. After reading loads of posts all over the place I have discovered that using spatially compressed files like using photo jpeg compression resolves the problem, I thought I would post this on here as it might help people out to know this.

What I was wondering is what is the most efficient spatially compressed quicktime codec as storing HD files in photo jpeg codec would take up a lot of space. The other issue is whether any more thought has been put into creating a kineme movie loader patch as it would be very very useful (for me anyway).

Cheers Steve

mfreakz's picture
What about a "Video Tools" Patches set ?

I'm agree with you, there is a geant hole that perpetuate in QC about Video tools/options/input/output... No multi-screen without tricks, no multi-camera input, poor and bad video files managing and playing abilities... Kineme's incredible programmers has filled a lot of this gaps ! But for sure we need now a "Video Tools" as we have a wonderful "Audio Tools" that increase QC abilities !

In fact,i think if Kineme's Patches have been added (or buy) "officially" by this software's Developers, Apple has to announce a upgrade like "Quartz Composer 4 or 5" for sure !

Many of us wait for a Video improvement. Some want to record and save video stream out of the composition, some want to use more than one camera input, some want to manage video buffer to do hard computing videos manipulations, some want to have many output, a screen manager, some want to use non official input hardware, some want to stream, record, mix in real time... We need a solid "Video Tools" bundle of patches for sure.

But you know what, we stay very silent and sober on the subjet ! Why ? Because, the few Kineme's real coders (many of us are just addicted user !) have done that: http://kineme.net/QuartzComposerPatches

It give me a complex... Anyone is active on many feature request ! Let's start a "Video Tools" request. I will follow you for sure, but i can start it (I FILL COMPLEXED) i'm hired in about 3 or 4 feature projects... ;)

tobyspark's picture
possible SPK-MoviePlayer patch

hey, i've been making an app based on the qc performer example, and as a by-product i think i have largely the code needed to make a start on a more vj-friendly movie player. it would be like the existing movie player in async mode, so it effectively plays the video to itself in the background and passes the current image, so temporally compressed videos and ones with sound are fine, but would have rate control and anything else we can hack in.

can't promise it in the next week tho'

toby

steve holmes's picture
Thats sounds great Toby, the

Thats sounds great Toby, the video buffering sounds great and really useful. As I to have no coding skills am not hassling Kineme for a new patch as I realise there are a lot of requests for other things I just wanted to flag it up again. Cheers Steve

franz's picture
+ 1

you're so absolutely right tob'. the most obvious way to have a smooth playback of video file in QC ... is to skip the QC part, load and decompress programatically the foo then pass it to QC as a published image. I would recommend Ecume des Jours' modification of the above mentionned QC performer as an extra example, as he(she?) already coded movie banks. and of course you know that i would be deeply interested in such a piece of code ready to glue in ...

as a sidenote, having a QC renderer getting the job done, instead of a QCview, also helps the visualist in his quest for the perfectly smooth footage.

tobyspark's picture
just to be clear

tobyspark@drupal.org wrote:
it would be like the existing movie player in async mode

just to be clear, we're talking about a qc patch that i would expect to have essentially the same code and therefore the same performance inside it as the existing movieloader patch when in async mode. the advantage is that we can then hack in more control, such as rate and (the biggie for me) play once / loop toggle.

if you use qc performer, its essentially the same code but outside of the qc renderer, and that doesn't buy you any extra performance per se. what it does mean is you can do other stuff on the side, for example loading and prerolling other videos and only switching them in when they're playing, but now we're talking about rolling our own vj app. for which in the real world i'd wait for v002 to be released or work from eric / ecume du jour's modded performer.

btw - i hadn't actually inspected the movie playing code for that, i came across it only as an example of remote control useage. i now have the suspicion i should, very much so. we'll see.

vade's picture
so...

I started working on an async movie loader plugin last night. Im pretty close to getting it working. Where should I put it up? I have a private SVN for my v002 stuff, but, honestly, at this point, im tempted to take what I have public and try and rally some troops to help work on it, providing we have a shared vision of what the result should be...

vade's picture
i just got it outputting video...

so its basically working. It has some flickering issues due to how QT caches textures and QC wants a new clean one every frame. ill see what I can do to minimize that. Otherwise it seems fast, lightweight and basically possible to do what we want.

I dont think there will be a 'time mode' capability for it, but right now I have playhead position set between 0 - 1.0, volume, a string for the movie path, and thats it.

There is possibilities for other controls, like de-interlace support, High Quality flag and the like...

vade's picture
working plugin project

Hello

here is a link to a working QT Movie Player replacement plugin, which is essentially async mode + extra controls and output. This is only 1 day old, will be buggy, but will be worked on by myself and Chris.

http://abstrakt.vade.info/ILOVETHEQCLIST/v002%20MoviePlayer.zip

It seems plenty responsive, and isnt truly threaded/async just yet. Much more fun to be had...

toneburst's picture
Frame-Blending

Good work!

How about the ability to do some kind of Frame-Blending, to smooth-out slowed-down or speeded-up playback?

I just thought of it as it's something someone else mentioned in another thread.

a|x

vade's picture
yup -

its on my to do. Ive implemented frame blending in Jitter before. It requires a bit more work here, but should be possible.

.lov.'s picture
Fantastic!

vade this is a really good plugin - i think we need this a long time ago :)

is that possible to add a speed up function to the plugin?

toneburst's picture
Excellent! That'll make some

Excellent! That'll make some people very happy. Now to persuade the Vidvox guys to implement something similar in VDMX.

a|x

cwright's picture
time scale

I'm not sure about this version, but last night vade and I made some small tweaks to get it to play backwards and forwards at arbitrary rates (>1, <-1). So it's possible, and not difficult.

.lov.'s picture
ohhh

ohhhh, this is the best news of the day :)

vade's picture
once the SVN is up, ill move

once the SVN is up, ill move my source code on it, so changes are reflected and can be downloaded immediately. Rate controls and whatnot are totally possible.

steve holmes's picture
HI guys do I need xcode 3.1

HI guys do I need xcode 3.1 to get this working, I tried to build this (in xcode 3.0) and add it to the the patches folder but I get an error when launch the example file. Cheers Steve

cwright's picture
error

What's the error? There are a few problems with it currently, but if it compiles with xcode 3.0 then you don't need 3.1 (GLTools, in contrast, requires 3.1, and won't compile without it).

steve holmes's picture
(null)

After building the plugin and putting it in the quartz composer patches folder (I also put it in the plugin folder) and then running the example I get the error below. Also when I look at the package contents of the plugin I just get a plist thats all. Steve

(null) : Patch with name "QCPlugInPatch:v002MoviePlayerPlugIn" is missing

Macro Patch Cannot create node of class "QCPlugInPatch" and identifier "v002MoviePlayerPlugIn"

(null) : Patch with name "QCPlugInPatch:v002MoviePlayerPlugIn" is missing

Macro Patch Cannot create node of class "QCPlugInPatch" and identifier "v002MoviePlayerPlugIn"

Macro Patch Cannot create connection from ["outputResult" @ "Logic_1"] to ["inputRate" @ "PlugInPatch_v002MoviePlayerPlugIn_1"]

Macro Patch Cannot create connection from ["output" @ "Multiplexer_1"] to ["inputPlayhead" @ "PlugInPatch_v002MoviePlayerPlugIn_1"]

Macro Patch Cannot create connection from ["outputImage" @ "PlugInPatch_v002MoviePlayerPlugIn_2"] to ["inputImage" @ "Billboard_2"]

Macro Patch Cannot create connection from ["outputPlayheadPosition" @ "PlugInPatch_v002MoviePlayerPlugIn_1"] to ["inputString_proxy_1" @ "Patch_1"]

Macro Patch Cannot create connection from ["outputImage" @ "PlugInPatch_v002MoviePlayerPlugIn_1"] to ["inputImage" @ "Billboard_1"]

(null) State restoration failed on

cwright's picture
new sdk

I'm guessing it didn't build properly then. try xcode 3.1.

also, this is an official api plugin (at this point), so it goes in the PlugIns folder, not the patches one.

vade's picture
Build and Copy?

Did you use build and copy? If not, its saying it cant find the plugin ;)

"(null) : Patch with name "QCPlugInPatch:v002MoviePlayerPlugIn" is missing"

So use build and copy, and not just build. Or copy the plugin manually to your QCPlugins folder.

steve holmes's picture
Hi Guys right downloaded

Hi Guys right downloaded xcode 3.1 thought it was going well but it wouldn't build I got the following errors. I hope I am no being to much of a pain. Cheers Steve

Building target “v002 MoviePlayer” of project “v002 MoviePlayer” with configuration “Release” — (18 errors, 20 warnings)
       cd "/Users/info/Downloads/v002 MoviePlayer 3"
    /Developer/usr/bin/gcc-4.0 -x objective-c -arch x86_64 -fmessage-length=0 -pipe -std=c99 -Wno-trigraphs -fpascal-strings -fasm-blocks -Os -Wreturn-type -Wunused-variable -isysroot /Developer/SDKs/MacOSX10.5.sdk -fobjc-gc -mmacosx-version-min=10.5 -gdwarf-2 "-I/Users/info/Downloads/v002 MoviePlayer 3/build/v002 MoviePlayer.build/Release/v002 MoviePlayer.build/v002 MoviePlayer.hmap" "-F/Users/info/Downloads/v002 MoviePlayer 3/build/Release" "-I/Users/info/Downloads/v002 MoviePlayer 3/build/Release/include" "-I/Users/info/Downloads/v002 MoviePlayer 3/build/v002 MoviePlayer.build/Release/v002 MoviePlayer.build/DerivedSources" -include "/var/folders/Wz/WzYR55j6GZSSQtf6+46Lxk+++TI/-Caches-/com.apple.Xcode.501/SharedPrecompiledHeaders/v002 MoviePlayer_Prefix-flyzoinljyargoexceplsuziogjj/v002 MoviePlayer_Prefix.pch" -c "/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m" -o "/Users/info/Downloads/v002 MoviePlayer 3/build/v002 MoviePlayer.build/Release/v002 MoviePlayer.build/Objects-normal/x86_64/v002_MoviePlayerPlugIn.o"
In file included from /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:16:
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.h:19: error: syntax error before 'QTVisualContextRef'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn init]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:137: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:137: error: (Each undeclared identifier is reported only once
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:137: error: for each function it appears in.)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn(Execution) startExecution:]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:187: warning: implicit declaration of function 'QTOpenGLTextureContextCreate'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:191: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:194: warning: implicit declaration of function 'QTVisualContextSetAttribute'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:194: error: 'kQTVisualContextWorkingColorSpaceKey' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:195: error: 'kQTVisualContextOutputColorSpaceKey' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn(Execution) openMovie:]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:318: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: implicit declaration of function 'SetMovieVisualContext'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: 'QTMovie' may not respond to '-quickTimeMovie'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: (Messages without a matching method signature
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: will be assumed to return 'id' and accept
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: '...' as arguments.)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn(Execution) getFrameForTime:flagsOut:]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:354: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:354: warning: implicit declaration of function 'QTVisualContextIsNewImageAvailable'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:364: warning: implicit declaration of function 'QTVisualContextCopyImageForTime'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn(Execution) cleanup]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:407: warning: implicit declaration of function 'QTVisualContextTask'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:407: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn(Execution) cleanUpForDealloc]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:421: warning: 'QTMovie' may not respond to '-quickTimeMovie'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:434: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: At top level:
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:447: warning: incomplete implementation of category 'Execution'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:447: warning: method definition for '-setMovieRate:' not found
      In file included from /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:16:
         /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.h:19: error: syntax error before 'QTVisualContextRef'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:137: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:187: warning: implicit declaration of function 'QTOpenGLTextureContextCreate'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:191: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:194: warning: implicit declaration of function 'QTVisualContextSetAttribute'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:194: error: 'kQTVisualContextWorkingColorSpaceKey' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:195: error: 'kQTVisualContextOutputColorSpaceKey' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:318: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: implicit declaration of function 'SetMovieVisualContext'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: 'QTMovie' may not respond to '-quickTimeMovie'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: (Messages without a matching method signature
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:354: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:354: warning: implicit declaration of function 'QTVisualContextIsNewImageAvailable'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:364: warning: implicit declaration of function 'QTVisualContextCopyImageForTime'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:407: warning: implicit declaration of function 'QTVisualContextTask'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:407: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:421: warning: 'QTMovie' may not respond to '-quickTimeMovie'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:434: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: At top level:
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:447: warning: incomplete implementation of category 'Execution'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:447: warning: method definition for '-setMovieRate:' not found
       cd "/Users/info/Downloads/v002 MoviePlayer 3"
    /Developer/usr/bin/gcc-4.0 -x objective-c -arch ppc64 -fmessage-length=0 -pipe -std=c99 -Wno-trigraphs -fpascal-strings -fasm-blocks -Os -Wreturn-type -Wunused-variable -isysroot /Developer/SDKs/MacOSX10.5.sdk -fobjc-gc -mtune=G5 -mmacosx-version-min=10.5 -gdwarf-2 "-I/Users/info/Downloads/v002 MoviePlayer 3/build/v002 MoviePlayer.build/Release/v002 MoviePlayer.build/v002 MoviePlayer.hmap" "-F/Users/info/Downloads/v002 MoviePlayer 3/build/Release" "-I/Users/info/Downloads/v002 MoviePlayer 3/build/Release/include" "-I/Users/info/Downloads/v002 MoviePlayer 3/build/v002 MoviePlayer.build/Release/v002 MoviePlayer.build/DerivedSources" -include "/var/folders/Wz/WzYR55j6GZSSQtf6+46Lxk+++TI/-Caches-/com.apple.Xcode.501/SharedPrecompiledHeaders/v002 MoviePlayer_Prefix-bdbkdhqmyfbvswerhlijfqgrwuby/v002 MoviePlayer_Prefix.pch" -c "/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m" -o "/Users/info/Downloads/v002 MoviePlayer 3/build/v002 MoviePlayer.build/Release/v002 MoviePlayer.build/Objects-normal/ppc64/v002_MoviePlayerPlugIn.o"
In file included from /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:16:
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.h:19: error: syntax error before 'QTVisualContextRef'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn init]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:137: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:137: error: (Each undeclared identifier is reported only once
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:137: error: for each function it appears in.)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn(Execution) startExecution:]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:187: warning: implicit declaration of function 'QTOpenGLTextureContextCreate'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:191: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:194: warning: implicit declaration of function 'QTVisualContextSetAttribute'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:194: error: 'kQTVisualContextWorkingColorSpaceKey' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:195: error: 'kQTVisualContextOutputColorSpaceKey' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn(Execution) openMovie:]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:318: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: implicit declaration of function 'SetMovieVisualContext'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: 'QTMovie' may not respond to '-quickTimeMovie'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: (Messages without a matching method signature
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: will be assumed to return 'id' and accept
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: '...' as arguments.)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn(Execution) getFrameForTime:flagsOut:]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:354: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:354: warning: implicit declaration of function 'QTVisualContextIsNewImageAvailable'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:364: warning: implicit declaration of function 'QTVisualContextCopyImageForTime'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn(Execution) cleanup]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:407: warning: implicit declaration of function 'QTVisualContextTask'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:407: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: In function '-[v002MoviePlayerPlugIn(Execution) cleanUpForDealloc]':
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:421: warning: 'QTMovie' may not respond to '-quickTimeMovie'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:434: error: 'qcTextureContext' undeclared (first use in this function)
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: At top level:
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:447: warning: incomplete implementation of category 'Execution'
/Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:447: warning: method definition for '-setMovieRate:' not found
      In file included from /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:16:
         /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.h:19: error: syntax error before 'QTVisualContextRef'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:137: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:187: warning: implicit declaration of function 'QTOpenGLTextureContextCreate'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:191: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:194: warning: implicit declaration of function 'QTVisualContextSetAttribute'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:194: error: 'kQTVisualContextWorkingColorSpaceKey' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:195: error: 'kQTVisualContextOutputColorSpaceKey' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:318: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: implicit declaration of function 'SetMovieVisualContext'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: 'QTMovie' may not respond to '-quickTimeMovie'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:337: warning: (Messages without a matching method signature
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:354: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:354: warning: implicit declaration of function 'QTVisualContextIsNewImageAvailable'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:364: warning: implicit declaration of function 'QTVisualContextCopyImageForTime'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:407: warning: implicit declaration of function 'QTVisualContextTask'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:407: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:421: warning: 'QTMovie' may not respond to '-quickTimeMovie'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:434: error: 'qcTextureContext' undeclared (first use in this function)
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m: At top level:
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:447: warning: incomplete implementation of category 'Execution'
      /Users/info/Downloads/v002 MoviePlayer 3/v002_MoviePlayerPlugIn.m:447: warning: method definition for '-setMovieRate:' not found
Build failed (18 errors, 20 warnings)

tobyspark's picture
vdmx had frame blending...

...in v3 =]

toby

cwright's picture
effing qtkit

QTKit is a steaming pile of crap. I take every opportunity to announce how lame it is, and this is one such opportunity.

QuickTime is also lame. But understandably, given the legacy and history it has.

Anyway: The problem is you're trying to build a 64-bit version, but qtkit and quicktime don't handle that particularly well. uncheck the box in the project settings, or change it from the Release build to something else (Debug or Development or something).

gtoledo3's picture
Chris is so right on this

Chris is so right on this one.... on both counts.

To go into more detail on getting this working with the errors you are having...

You want the tab in the upper left to have SDK10.5, etc... choose "Debug" as the active configuration.

Then go into "Project" on the upper tool bar, scroll down to "edit project settings".

Where it says "Architectures", select "32-bit Universal".

Then "build".

That should work for you.

Make sure to install it in plug-ins, and erase any of the previous builds you did.

BTW... I love that the one control is labelled "palindrome".

gtoledo3's picture
I am loving the effect of

I am loving the effect of attaching lfo's etc to the playhead, and varying amplitude with interpolate with mirrored loop... changing the period over time as well.

Lol... I think I am going to modify this as a macro with input and output, call it "scrub", and make it a virtual patch.

Great idea! And it is looking good too.

toneburst's picture
Ah.....

tobyspark@drupal.org wrote:
vdmx had frame blending in v3 =]

Did it... oh.... Shows how much I actually use it

a|x

toneburst's picture
Does this only work with

Does this only work with certain codecs? I've just tried it with an mp4, and get no output. Maybe it doesn't work with keyframe-based compression types...?

I know mpeg codecs aren't generally recommended for VJ-type use, but I thought I'd give it a go, as I only have mp4 clips on my laptop at the moment.

a|x

toneburst's picture
Weird. I just saved and

Weird. I just saved and re-opened my QTZ with the v002 MoviePlayer plugin referencing an mp4 movie, and this time it worked.

Feature Request: Ability to speed the movie up as well as slow it down. 0.5 should be normal speed, and 1 should be, say, 4x

Very impressive, though.

a|x

.lov.'s picture
speed up feature

Ability to speed up/down movies well, but a greater value then 4x would be greater for long movies...

toneburst's picture
Agreed

but the rate scale might need to be exponential, rather than linear, otherwise the movie's 'real' speed would be way down at the bottom of the slider.

a|x

.lov.'s picture
absolutely

because for slow down /4 speed strong enough.

cwright's picture
slips

yeah, sometimes it does that for me too -- not entirely sure why. shrugs

Rather than have weird arbitrary mappings of Input X = Speed Y, why not just make the rate a scale (so that Rate = 0 means Speed = 0, Rate = 3.1415926 means Speed = 3.1415926, Rate = -0.5 means Speed = -0.5, etc)? To me, that seems much more intuitive and versatile than oddly remapping numbers (with or without some kind of exponential function or anything)

.lov.'s picture
agreed

this is the simple way - and the simple way is better now :)

franz's picture
compiled ?

thxxx could someone please post a compiled version of this plug ? (i just don't have xc 3.1 and it is a lot of MB to download...)

vade's picture
ill post a compiled version with rate adjustments

ill post a compiled version with rate adjustments a bit later today, with the project. Ill also try an mp4 / mpeg / etc movie types, and see if I cant figure out why things are not 100% happy all the time.

Thanks,

toneburst's picture
Or actually, just get rid of

Or actually, just get rid of the 'rate' control altogether, and drive the thing completely from the playhead/timebase input. This eliminates the need for the 'loop mode' parameter also, since you could just connect a triangle-wave LFO to the position control for pingpong looping.

a|x

cwright's picture
unrated

driving directly from the timebase requires a seek every frame then, which is unbearably expensive. So, while intuitive and straightforward, I don't think this is a good idea in this particular case...

vade's picture
That would remove the

That would remove the asynchronous capabilities of the patch, make it slow, and essentially turn of any pre-rolling/caching quicktime does, and kill FPS.

You might as well use the built in patch at that point. - 10 to 10 is more than anyone should ever need, and unless you have insanely fast disks, I dont think there is a point to much more.

And, if you need it, just download the project and change the min/max in the code :) ...

.lov.'s picture
yes

i discovered this problem while developing CoGe - async mode was better, but i need to scale the speed with an external timebase: this mode is punch out frame rate.

gtoledo3's picture
Hmmm.... I was achieving a

Hmmm....

I was achieving a pretty effective "speed up" by simply driving the playhead with an interpolation patch on linear, adjusting the "period" as desired, and leaving the rate set slow (didn't really bother to see if I would get better results at any given rate). It works really nice on "re-render" in Quartz Crystal. Set the interpolate on exponential, with loop/reverse and you can get some great slow video that morphs into Benny Hill, and then into that great backwards "Strawberry Fields" looking effect.

All the same, I think the idea of having the rate make it able to go faster than 1x is very cool...

vade's picture
Well, by 'speed up', we were

Well, by 'speed up', we were initially discussing performance of QT playback (how much CPU is used). How efficient async mode vs normal mode is in QC. This Plugin is Async mode + extra controls and outputs. This should be very high performance.

Speed up, meaning rate via external time base with the built in Movie Player 'patch', is possible that way, but, trust me, it will be more efficient to use this patch, with a rate control, as it will allow Quicktime to do pre-fetching and buffering. Using the external time base in Quartz Composer doesnt let QT prefetch frames, thus 'just in time decompression' and worse performance.

Ill try and post an updated Plugin and Project soon. Ive had a crrraaazzzzyyyy day :)

gtoledo3's picture
Wow, I am having a laugh

Wow, I am having a laugh re-reading the post and the way that I misread it. Oh well.

vade's picture
Plugin download and project

Note, again, this is a work in progress

XCode project: http://abstrakt.vade.info/ILOVETHEQCLIST/v002%20MoviePlayerProject.zip

Compiled universal 32 bit plugin: http://abstrakt.vade.info/ILOVETHEQCLIST/v002%20MoviePlayer.plugin.zip

Let me know :)

franz's picture
thank you so much. you're a

thank you so much. you're a hero.

please note that the audio rate gets reseted to 1 when switching to/from fullscreen.

incredibly awesomely overkill !

yanomano's picture
woow

4 SD (720X576) videos with photojpeg codec and still 50i/s( on my old PPC 2x2Ghz...:) i can say bravo ! really good job ! you are a superstar :)

.lov.'s picture
great!

Works great - you are a superhero :)

franz's picture
design question

one simple thing:

obviously, the goal of this plugin is to focus on speed and accuracy. However, i'm facing a little problem:

the playhead is set by default to 0, which is the expected behaviour, since you would typically want your footage to start from the beginning.

Now imagine i want to restart the footage during the loop: i would want the playhead to be set again to 0. But since the value is not changing, i just can't reset the movie position to the start. Note that i can, for instance, set the playhead to something very close to zero ( then alternatively switch back to 0 again), but the minimal value that can be entered in QC is 1.10e-6. While in short loops this might not be noticeable, on longer footage this could lead to a problem.

So simply: how to restart from the exact beginning some footage during a loop ?

franz's picture
crash logs ?

hey vade, are you interested in crash-logs ? in some situations (unidentified), the plug doesn't display images (but sound sometimes) or crashes QC.

vade's picture
Definitely. Id also want to

Definitely. Id also want to know what you were doing, and what kind of media you were playing that caused the issue.

Thanks,

tobyspark's picture
qt code

there's a qt function that can do this, buts its c not cocoa.

http://developer.apple.com/documentation/QuickTime/Reference/QTRef_Movie...

GoToBeginningOfMovie
Repositions a movie to play from its start.
 
void GoToBeginningOfMovie (
   Movie theMovie
);

vade's picture
or, you can set the playhead

or, you can set the playhead to 0 ;)

franz's picture
0 by default

i can't, since the playhead is 0 by default, when i set the playhead to zero, the value is not changing, so the movie doesn't restart. (see previous post). nevermind.... i'll trick it

vade's picture
Hrm, that works for me...

Hrm, that works for me...

boya's picture
performance proposal

Hi Vade.

So pleased to see this patch, but just a quick note on the performance.

When running 1080i 25 fps prores it renders at 10 fps which is similar to the original movie loader. But the movie loader has the ability to disable color correction which makes it speed up to 30 fps.

Is this something you can implement as well?

Boya

vade's picture
Beta 2

Hello. Ive added quite a few updates to the movie player source code.

http://002.vade.info/?p=20 has the details for beta 2 and a download. Enjoy!

steve holmes's picture
Hi does anyone know where I

Hi does anyone know where I can download vade's new movie player patch. When I download the new beta from vade's site and fire up quicktime I only have the old beta. Anyone have any ideas?

Steve