<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<?xml-stylesheet href="./_c74_ref.xsl" type="text/xsl"?>

<!--This is an automatically generated file. DO NOT EDIT THIS FILE DIRECTLY. Rather, use the _ref.xml files found in the 'edits' folder.-->
<c74object name="jit.change" module="jit" category="Jitter Analysis">
	<digest>
		Only pass different frames
	</digest>
	<description>
		Calculates the number of cells in which the current matrix differs from the previously received matrix, and based on this difference either passes the matrix or not.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Jitter
		</metadata>
		<metadata name="tag">
			Jitter Analysis
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="matrix">
			<digest>
				in
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="matrix">
			<digest>
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<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 name="out" planelink="1" typelink="1" dimlink="1" minplanecount="1" maxplanecount="32" mindimcount="1" maxdimcount="32">
			<types>
				char long float32 float64
			</types>
		</matrixoutput>
	</mop>
	<!--MESSAGES-->
	<jittermethodlist>
		<jittermethod name="bang" />
		<jittermethod name="clear" />
		<jittermethod name="exportattrs" />
		<jittermethod name="exportsummary" />
		<jittermethod name="getattributes" />
		<jittermethod name="getstate" />
		<jittermethod name="jit_matrix" />
		<jittermethod name="importattrs" />
		<jittermethod name="summary" />
	</jittermethodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="mode" get="1" set="1" type="int" size="1">
			<digest>
				Mode of operation
			</digest>
			<description>
				Mode of operation (default = 0 (more differing cells))
				<br />
				0 = pass new frames having MORE differing cells than the number specified by the <at>thresh</at> value
				<br />
				1 = pass new frames having FEWER differing cells than the number specified by the <at>thresh</at> value
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="atom" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="2">
					<enumlist>
						<enum name="More-Than-Threshold">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="Less-Than-Threshold">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Pass Mode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enumindex" />
			</attributelist>
		</attribute>
		<attribute name="report" get="1" set="1" type="int" size="1">
			<digest>
				Report if a matrix was passed
			</digest>
			<description>
				Report whether a matrix was passed (default = 0)
				<br />
				0 = do not report whether a matrix was passed
				<br />
				1 = report whether a matrix was passed
				<br />
				<p>
					With report set to on (1), <o>jit.change</o> will behave a bit like Max's <o>==</o> object. If jit.change determines that the matrix input has not changed (within the parameters set with the <at>mode</at> and <at>thresh</at> attributes), it will send the message <m>report 1</m> from its rightmost outlet. If the matrix input has changed, <o>jit.change</o> will send the message <m>report 0</m>.
				</p>
			</description>
		</attribute>
		<attribute name="thresh" get="1" set="1" type="int" size="1">
			<digest>
				Difference threshold
			</digest>
			<description>
				The difference threshold (default = 0)
				<br />
				<p>
					The threshold specifies the number to cells above or below which a new &quot;changed&quot; frame will be output. This object uses cells not planes; if you have a 4-plane matrix and a threshold value of 3, one matrix cell with a different values from the previously passed frame will NOT trigger a new frame -- If you have a single matrix cell with 4 values (one per plane) which are different from the previously passed frame, it will not trigger a new frame.
				</p>
				<p>
					With the <at>mode</at> set to 0, a threshold of 0 means that even 1 different matrix cell between 2 frames will cause that frame to be output. Higher values refer explicitly to the matrix cell count required to cause output (5000 means it will take 5000 different matrix cells to cause the matrix to be output). Setting a negative threshold will pass all frames.
				</p>
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="atom" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Threshold" />
			</attributelist>
		</attribute>
	</attributelist>
	<jitterattributelist>
		<jitterattribute name="outputmode" />
		<jitterattribute name="adapt" />
		<jitterattribute name="out_name" />
		<jitterattribute name="type" />
		<jitterattribute name="dim" />
		<jitterattribute name="planecount" />
	</jitterattributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="jit.change.png" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="jit.op" />
	</seealsolist>
	<discussion>
		In mode 0 (default), the matrix is passed if the difference is <b>greater</b> than the specified threshold, otherwise not. In mode 1, the matrix is passed if the difference is <b>less</b> than the specified threshold, otherwise not. This object is particularly useful for reducing the density of dataflow and for motion tracking applications.
	</discussion>
</c74object>
