<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<?xml-stylesheet href="./_c74_ref.xsl" type="text/xsl"?>

<c74object category="Jitter Generators" module="jit" name="jit.qt.movie" kind="fakeobject">
	<digest>
		Play or edit a movie
	</digest>
	<description>
		Use the <o>jit.movie</o> for working with movie files - playback, editing, import, export, effect generation and direct-to-video-output-component streaming.
	</description>
	<discussion>
		This document refers to the qt engine version of <o>jit.movie</o>.
	</discussion>
	<!--METADATA -->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Jitter
		</metadata>
	</metadatalist>
	<inletlist>
		<inlet id="0" type="INLET_TYPE">
			<digest>
				bang, messages in
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="INLET_TYPE">
			<digest>
				bang, messages in
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<outletlist>
		<outlet id="0" type="matrix">
			<digest>
				out
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="matrix">
			<digest>
				dumpout
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!-- ===================================================
            MOP
   =================================================== -->
	<mop matrixinputcount="1" matrixoutputcount="1">
		<matrixoutput dimlink="1" maxdimcount="32" maxplanecount="4" mindimcount="1" minplanecount="4" name="out" planelink="1" typelink="1">
			<types>
				char
			</types>
		</matrixoutput>
	</mop>
	<!-- ===================================================
            ATTRIBUTES
   =================================================== -->
	<attributelist>
		<attribute get="1" name="adapt" set="1" size="1" type="int">
			<digest>
				Adapt output matrix dimensions to movie size flag
			</digest>
			<description>
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Spatial" />
			</attributelist>
		</attribute>
		<attribute get="1" name="automatic" set="1" size="1" type="int">
			<digest>
				Enable automatic matrix output.
			</digest>
			<description>
				Enable automatic matrix output when bound to <o>jit.world</o>.
			</description>
			<attributelist>
				<attribute get="1" name="style" set="1" size="1" type="symbol" value="onoff" />
			</attributelist>
		</attribute>
		<attribute get="1" name="autostart" set="1" size="1" type="int">
			<digest>
				Autoplay on movie open flag
			</digest>
			<description>
				Autoplay on movie open flag (default = 1)
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="colormode" set="1" size="1" type="symbol">
			<digest>
				Output matrix's color encoding
			</digest>
			<description>
				The output matrix's color encoding. 32 bit only.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Spatial" />
				<attribute get="1" name="enumvals" set="1" size="2" type="atom">
					<enumlist>
						<enum name="argb">
							<digest>
								ARGB (alpha, red, green, blue) colormode
							</digest>
							<description />
						</enum>
						<enum name="uyvy">
							<digest>
								UYVY (YUV 4:2:2 packed) colormode
							</digest>
							<description />
						</enum>
					</enumlist>
				</attribute>
				<attribute get="1" name="style" set="1" size="1" type="symbol" value="enum" />
			</attributelist>
		</attribute>
		<attribute get="1" name="drawto" set="1" size="1" type="symbol">
			<digest>
				Render context name
			</digest>
			<description>
				A render context name, used when <at>output_texture</at> is enabled.
			</description>
			<attributelist />
		</attribute>
		<attribute get="1" name="dstrect" set="1" size="4" type="int">
			<digest>
				The portion of the output matrix written to by the input frame
			</digest>
			<description>
				The portion of the output matrix used for decompressing media to the internal matrix (default = 0 0 (matrix width) (matrix height))
				<br />
				The bounds of the rectangle are expressed in the form <i>left top right bottom</i>. All values are relative to the top-left corner of the viewing area of the output matrix.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Spatial" />
			</attributelist>
		</attribute>
		<attribute get="1" name="duration" set="1" size="1" type="int">
			<digest>
				Movie duration
			</digest>
			<description>
				The duration of the movie. When setting the duration, the entire movie will be scaled to the new length, unless the additional argument <m>noscale</m> is used. In that case, the movie length is changed without scaling. For more precise control of scaling, use the <m>scale</m> message.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Editing" />
			</attributelist>
		</attribute>
		<attribute get="1" name="engine" set="1" size="1" type="symbol">
			<digest>
				Video engine backend.
			</digest>
			<description>
				Video engine backend. This argument can only be set in the max box. If not specified, it is determined by the Video Engine Max preference. As of this writing, possible values include <ar>avf</ar> (Mac only) and <ar>qt</ar>.
			</description>
		</attribute>
		<attribute get="1" name="fps" set="0" size="1" type="float">
			<digest>
				Internal FPS for the movie
			</digest>
			<description />
			The approximate calculation of the movie's internal FPS rate
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="framecount" set="0" size="1" type="int">
			<digest>
				Number of frames in the movie
			</digest>
			<description />
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="framereport" set="1" size="1" type="int">
			<digest>
				Frame reporting flag
			</digest>
			<description>
				Frame reporting flag (default = 0). When enabled, the message <m>framecalc</m> will be sent from the rightmost outlet of the <o>jit.movie</o> object as each frame is processed, followed by the number of milliseconds spent doing so.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="interp" set="1" size="1" type="int">
			<digest>
				Output interpolation flag
			</digest>
			<description>
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="loop" set="1" size="1" type="int">
			<digest>
				Looping mode
			</digest>
			<description>
				Looping mode (default = 1 (start to end))
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
				<attribute get="1" name="enumvals" set="1" size="4" type="atom">
					<enumlist>
						<enum name="off">
							<digest>
								0 = no looping
							</digest>
						</enum>
						<enum name="normal">
							<digest>
								1 = normal looping (start to end)
							</digest>
						</enum>
						<enum name="palindrome">
							<digest>
								2 = palindrome looping (start to end to start to ....)
							</digest>
						</enum>
						<enum name="playback-limits">
							<digest>
								3 = no looping, but use looppoints to define playback limits
							</digest>
						</enum>
					</enumlist>
				</attribute>
				<attribute get="1" name="style" set="1" size="1" type="symbol" value="enumindex" />
			</attributelist>
		</attribute>
		<attribute get="1" name="loopend" set="1" size="1" type="int">
			<digest>
				Loop point end for movie
			</digest>
			<description>
				The movie loop point end. Time is specified as <at>time</at> values.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="looppoints" set="1" size="2" type="int">
			<digest>
				Movie loop points
			</digest>
			<description>
				The movie loop points. Time is specified as <at>time</at> values.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="loopreport" set="1" size="1" type="int">
			<digest>
				Loop notification flag
			</digest>
			<description>
				Loop notification flag (default = 0). When enabled, the <o>jit.movie</o> object will send the message <m>loopnotify</m> when the playing movie passes the loop point. In palindrome looping mode, the message will be sent at both the beginning and the end of the movie.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="loopstart" set="1" size="2" type="int">
			<digest>
				Movie loop point start
			</digest>
			<description>
				The movie loop point start. Time is specified as <at>time</at> values.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="movie_dim" set="0" size="1" type="int">
			<digest>
				Native movie dimensions
			</digest>
			<description />
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Spatial" />
			</attributelist>
		</attribute>
		<attribute get="1" name="moviedim" set="0" size="1" type="int">
			<digest>
				Native movie dimensions
			</digest>
			<description />
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Spatial" />
			</attributelist>
		</attribute>
		<attribute get="1" name="moviefile" set="1" size="1" type="symbol">
			<digest>
				Load a movie file from disk
			</digest>
			<description>
				Load a movie file from disk
			</description>
		</attribute>
		<attribute get="1" name="moviename" set="1" size="1" type="symbol">
			<digest>
				Movie file name
			</digest>
			<description>
				Identifies the file name of a movie (Note: setting this attribute does not load a movie file).
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Misc" />
			</attributelist>
		</attribute>
		<attribute get="1" name="moviepath" set="0" size="1" type="symbol">
			<digest>
				Fully specified path on disk for the movie
			</digest>
			<description>
				The movie's fully-specified path on disk, if the movie has a disk-file (Note: setting this attribute does not load a movie file).
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Misc" />
			</attributelist>
		</attribute>
		<attribute get="1" name="output_texture" set="1" size="1" type="int">
			<digest>
				Enable OpenGL texture output
			</digest>
			<description>
				Enable OpenGL texture output (default = 0). When enabled an OpenGL texture is output instead of a Jitter matrix. The object's <at>drawto</at> attribute must be set to a valid gl context. An RGBA texture is output using the movie's native dimensions. When enabled, the following attributes have no effect:
				<br />
				<at>adapt</at> 				<br />
				<at>colormode</at> 				<br />
				<at>dim</at> 				<br />
				<at>dstrect</at> 				<br />
				<at>srcrect</at> 				<br />
				<at>usedstrect</at> 				<br />
				<at>usesrcrect</at> 
			</description>
			<attributelist>
				<attribute get="1" name="style" set="1" size="1" type="symbol" value="onoff" />
			</attributelist>
		</attribute>
		<attribute get="1" name="rate" set="1" size="1" type="float">
			<digest>
				Movie rate
			</digest>
			<description />
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="srcrect" set="1" size="4" type="int">
			<digest>
				The portion of the input matrix used when copying an input matrix to the internal matrix
			</digest>
			<description>
				The portion of the movie to decompress into a matrix (default = 0 0 (movie width) (movie height)). The bounds of the rectangle are expressed in the form <i>left top right bottom</i>. All values are relative to the top-left corner of the viewing area of the movie.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Spatial" />
			</attributelist>
		</attribute>
		<attribute get="1" name="texture_name" set="1" size="1" type="symbol">
			<digest>
				Output texture name
			</digest>
			<description>
				Output texture name, when <at>output_texture</at> is enabled.
			</description>
			<attributelist />
		</attribute>
		<attribute get="1" name="time" set="1" size="1" type="int">
			<digest>
				Current time in the movie
			</digest>
			<description>
				The current time in the movie. Time is specified as <at>time</at> values.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="timescale" set="0" size="1" type="int">
			<digest>
				Movie timescale
			</digest>
			<description>
				The timescale for the movie (default = 600, but movie-dependent)
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="unique" set="1" size="1" type="int">
			<digest>
				Unique frame filter flag
			</digest>
			<description>
				Unique frame filter flag (default = 0 (disabled)). When the flag is set, only new frames from the movie are output when the object receives a bang. If no new frame has been decompressed, the <o>jit.movie</o> object will not respond to the bang.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Temporal" />
			</attributelist>
		</attribute>
		<attribute get="1" name="usedstrect" set="1" size="1" type="int">
			<digest>
				Destination rect flag
			</digest>
			<description>
				Destination rect flag (default = 0). When the flag is set, the <at>dstrect</at> attributes are used when copying an input matrix to the internal matrix.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Spatial" />
			</attributelist>
		</attribute>
		<attribute get="1" name="usesrcrect" set="1" size="1" type="int">
			<digest>
				Source rect flag
			</digest>
			<description>
				Source rect flag (default = 0). When the flag is set, the <at>srcrect</at> attributes are used when copying an input matrix to the internal matrix.
			</description>
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Spatial" />
			</attributelist>
		</attribute>
		<attribute get="1" name="vol" set="1" size="1" type="float">
			<digest>
				Movie sound volume
			</digest>
			<description />
			<attributelist>
				<attribute get="1" name="category" set="1" size="1" type="atom" value="Misc" />
			</attributelist>
		</attribute>
		<attribute name="time_secs" get="1" set="1" type="float" size="1">
			<digest>
				Time Seconds
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="7.0.0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Time Seconds" />
			</attributelist>
		</attribute>
		<attribute name="time_ms" get="1" set="1" type="int" size="1">
			<digest>
				Time Milliseconds
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="8.0.0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Time Milliseconds" />
			</attributelist>
		</attribute>
		<attribute name="seconds" get="1" set="0" type="float" size="1">
			<digest>
				Seconds
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="7.0.0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Seconds" />
			</attributelist>
		</attribute>
		<attribute name="position" get="1" set="1" type="float" size="1">
			<digest>
				Position
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="7.0.0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Position" />
			</attributelist>
		</attribute>
		<attribute name="milliseconds" get="1" set="0" type="int" size="1">
			<digest>
				Milliseconds
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="8.0.0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Milliseconds" />
			</attributelist>
		</attribute>
		<attribute name="looppoints_secs" get="1" set="1" type="float" size="2">
			<digest>
				Looppoints Seconds
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="8.0.0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Looppoints Seconds" />
			</attributelist>
		</attribute>
		<attribute name="looppoints_ms" get="1" set="1" type="int" size="2">
			<digest>
				Looppoints Milliseconds
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="8.0.0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Looppoints Milliseconds" />
			</attributelist>
		</attribute>
	</attributelist>
	<!-- ===================================================
            METHODS
   =================================================== -->
	<methodlist>
		<!-- ===================================================
            GET RID OF THE TRACK METHODS?
   =================================================== -->
		<method name="read">
			<arglist>
				<arg name="src-name" optional="1" type="symbol" />
			</arglist>
			<digest>
				Read a movie from a disk file/URL/clipboard
			</digest>
			<description>
				Reads a movie from a disk file, URL or the clipboard. If no argument is present, or if the symbol <m>dialog</m> is used for the <i>src-name</i> argument, a file selection dialog will be presented to choose a file. If the argument <m>scrap</m> is used for the <i>src-name</i> argument, the object will attempt to load a movie from the clipboard. If the argument is parsable as an http://, ftp:///, file://, or rtsp:// URL, the object will attempt to load a movie from that location. Otherwise, an argument is assumed to be a local file name.
				<br />
				If <at>autostart</at> is enabled, the movie will begin playing at once.
			</description>
		</method>
		<!-- ===================================================
            GET RID OF THE OPCOLOR METHODS?
   =================================================== -->
		<method name="framedump">
			<arglist>
				<arg name="start-frame" type="int" />
				<arg name="end-frame" type="int" />
				<arg name="frame-skip" type="int" />
			</arglist>
			<digest>
				Do a framedump
			</digest>
			<description>
				Commences a framedump, in which the movie will start from a frame specified by <i>start-frame</i> (the default is 1) and automatically output frames in sequence (no <m>bang</m> or <m>outputmatrix</m> message is necessary) up to the frame specified by <i>end-frame</i>, skipping <i>frame-skip</i> frames between each frame. The default values are 1 for the start frame, and the total framecount of the movie for the end frame. The default <i>frame-skip</i> value is 1.
				<br />
				During operation, the message <m>framedump <i>current_frame</i> </m> is sent out the right outlet after each frame has been output. When finished, the message <m>framedump done</m> is output.
			</description>
		</method>
		<!-- ===================================================
            GET RID OF THE DELETEFXTRACK METHODS?
   =================================================== -->
		<method name="cancelframedump">
			<digest>
				Stop the frame dump process
			</digest>
			<description>
				Stops the frame dump process. See <m>framedump</m>.
			</description>
		</method>
		<method name="asyncread">
			<arglist>
				<arg name="src-name" optional="1" type="symbol" />
			</arglist>
			<digest>
				Read a movie from a disk file asynchronously
			</digest>
			<description>
				Asynchronously reads a movie from a disk file, if possible. If no argument is present, or if the symbol <m>dialog</m> is used for the <i>src-name</i> argument, a file selection dialog will be presented to choose a file. Any argument is assumed to be a local file name. At this time, asynchronous reading is not supported for URL- or clipboard-based movies; the normal <m>read</m> behavior will be used instead.
			</description>
			<discussion>
				Note: use of <m>asyncread</m> and <at>preroll</at> unloads any sections of the current movie loaded into RAM using the <m>loadram</m> method.
			</discussion>
		</method>
		<!-- ===================================================
            GET RID OF THE ADDFXTRACK METHODS?
   =================================================== -->
		<method name="(drag)">
			<digest>
				Load a media file
			</digest>
			<description>
			</description>
		</method>
	</methodlist>
	<!-- ===================================================
            EXAMPLE
   =================================================== -->
	<examplelist>
		<example img="jit.movie.png" />
	</examplelist>
	<!-- ===================================================
            SEEALSO
   =================================================== -->
	<seealsolist>
		<seealso display="jit.grab" name="jit.qt.grab" />
		<seealso display="jit.record" name="jit.qt.record" />
		<seealso module="jit" name="jitterchapter01" type="tutorial" />
		<seealso module="jit" name="jitterchapter04" type="tutorial" />
		<seealso module="jit" name="jitterchapter19" type="tutorial" />
		<seealso module="jit" name="jitterchapter24" type="tutorial">
			Jitter Tutorial 24: QuickTime Effects
		</seealso>
		<seealso module="jit" name="jitterchapter44" type="tutorial" />
		<seealso module="jit" name="jitterchapter49" type="tutorial">
			Jitter Tutorial 49: Colorspaces
		</seealso>
		<seealso module="jit" name="jitterchapter99_appendixa" type="tutorial">
			Appendix A: QuickTime Confidential
		</seealso>
	</seealsolist>
</c74object>
