<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>toxicsoftware.com &#187; corevideo</title>
	<atom:link href="http://toxicsoftware.com/tag/corevideo/feed/" rel="self" type="application/rss+xml" />
	<link>http://toxicsoftware.com</link>
	<description>RANDOMIZE USR 0</description>
	<lastBuildDate>Thu, 17 Dec 2009 15:12:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CoreVideoFunHouse</title>
		<link>http://toxicsoftware.com/corevideofunhouse/</link>
		<comments>http://toxicsoftware.com/corevideofunhouse/#comments</comments>
		<pubDate>Thu, 27 Oct 2005 10:56:42 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[CoreImage]]></category>
		<category><![CDATA[corevideo]]></category>
		<category><![CDATA[isight]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[sequence grabber]]></category>
		<category><![CDATA[toxicmedia]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/blog/corevideofunhouse/</guid>
		<description><![CDATA[A quick demo movie of my CoreVideoFunHouse (does that name sound familiar?) code.

The project shares code with my Sequence Grabber project and renders QuickTime movies using QTKit and CoreVideo. It also uses macros made up of multiple Core Image filters and defined in a simple XML file, each item in the popup menu is a [...]]]></description>
			<content:encoded><![CDATA[<p>A quick <a href="http://toxicsoftware.com/uploads/CoreVideoFunHouse.mp4">demo movie</a> of my <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Samples/CoreVideoFunHouse">CoreVideoFunHouse</a> (does that name sound <a href="http://developer.apple.com/macosx/coreimage.html">familiar</a>?) code.</p>

<p>The project shares code with my Sequence Grabber project and renders QuickTime movies using QTKit and CoreVideo. It also uses macros made up of multiple Core Image filters and defined in a simple XML file, each item in the popup menu is a macro of one or more Core Image filters that are linked together to produce the effect. I&#8217;ve also written a Python script to import Core Image Fun House data files and convert them into my &#8220;cimacro&#8221; files (this functionality will be rewritten in ObjC one day).</p>

<p>The latest version of the code (checked in but not shown in the demo movie) also features crude animation and allows the video source to be selected on the fly between a movie file and an iSight.</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/corevideofunhouse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://toxicsoftware.com/uploads/CoreVideoFunHouse.mp4" length="2658841" type="video/mp4" />
		</item>
		<item>
		<title>More SequenceGrabber Updates</title>
		<link>http://toxicsoftware.com/more_sequencegrabber_updates/</link>
		<comments>http://toxicsoftware.com/more_sequencegrabber_updates/#comments</comments>
		<pubDate>Fri, 21 Oct 2005 01:11:14 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[CoreImage]]></category>
		<category><![CDATA[corevideo]]></category>
		<category><![CDATA[isight]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[sequence grabber]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[toxicmedia]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/blog/more_sequencegrabber_updates/</guid>
		<description><![CDATA[Spurred on by interest in my Sequence Grabber source code I&#8217;ve added a whole slew of new functionality to it tonight (for various reasons this code is a lot of fun to work on). The most important change is CCoreImageView now supports Cocoa bindings and has an Interface Builder palette. This means you can easily [...]]]></description>
			<content:encoded><![CDATA[<p>Spurred on by interest in my <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Samples/SequenceGrabber">Sequence Grabber</a> source code I&#8217;ve added a whole slew of new functionality to it tonight (for various reasons this code is a lot of fun to work on). The most important change is <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Framework/Source/CCoreImageView.h">CCoreImageView</a> now supports Cocoa bindings and has an Interface Builder palette. This means you can easily create a view in Interface Builder and bind it to your controller/model objects without writing a line of code! <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Framework/Source/SequenceGrabber/CSequenceGrabberView.h">CSequenceGrabberView</a> isn&#8217;t in the palette yet but will be soon, when it is you&#8217;ll be able add iSight support to your Cocoa application without writing any code.
I&#8217;ve spent some time simplifying and improving the sequence grabber <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Framework/Source/SequenceGrabber/CSequenceGrabberVideoChannel.h">video channel</a> classes. The code is now much easier to understand and modify (a lot of this code is based on some pretty badly written Apple sample code and needed a lot of tidying up before it is readable).</p>

<p>The easiest way to use the sequence grabber is just to add a CSequenceGrabberView to your project. The view supports start and stop actions so you can wire your user interface directly to the view. You can also access the underlying CSequenceGrabber object directly if needed. There are plenty of hooks in the code to add your custom functionality &#8211; <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Framework/Source/SequenceGrabber/CSequenceGrabber.h">CSequenceGrabber</a> (and its children video and sound channel objects) sends many useful NSNotifications. I&#8217;m also going to make the code use Cocoa bindings as much as possible. That way you can use bindings and/or notifications as your need dictates.</p>

<p>I&#8217;ve improved the &#8220;<a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Samples/SequenceGrabber/QuadView">QuadView</a>&#8221; sample code to take advantage of Cocoa bindings support in CCoreImageView. One thing I&#8217;ve noticed is that the core image filtering just isn&#8217;t very fast. After two or three live video streams running through Core Image filters the frame rate drops rather dramatically. I will look into this further and hope to make big improvements if my code is actually the bottleneck. Or maybe it is time to just order that Quad G5 now that they&#8217;re available (one 2.5GHz core per video stream sounds like a great idea!).</p>

<p>If you are having trouble building the code &#8211; remember all projects require Xcode 2.1 (or newer, I am using Xcode 2.2 for development). Also you <em>will</em> need subversion to check out a full copy of the code.</p>

<p>Finally I&#8217;ve been really encouraged by the interest that my Sequence Grabber code has generated. I&#8217;m getting a few emails a week from people using it in their projects. I love hearing about the uses people are putting the code to and encourage anyone using it to append a comment to this blog posting.</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/more_sequencegrabber_updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sequence Grabber Updated</title>
		<link>http://toxicsoftware.com/sequence_grabber_updated/</link>
		<comments>http://toxicsoftware.com/sequence_grabber_updated/#comments</comments>
		<pubDate>Thu, 13 Oct 2005 16:23:46 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[CoreImage]]></category>
		<category><![CDATA[corevideo]]></category>
		<category><![CDATA[isight]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[sequence grabber]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[toxicmedia]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/blog/sequence_grabber_updated/</guid>
		<description><![CDATA[My sequence grabber code (previously mentioned here) has been updated. It should be a lot easier to get up and running now &#8211; I&#8217;ve added a &#8220;CSequenceGrabberView&#8221; NSView subclasss that you just need to drag and drop into your nib&#8217;s NSWindow. I&#8217;ve also improved the error handling so that the lack of a plugged in [...]]]></description>
			<content:encoded><![CDATA[<p>My sequence grabber code (previously mentioned <a href="/blog/sequence_grabber_code_now_with_coregoodness/">here</a>) has been updated. It should be a lot easier to get up and running now &#8211; I&#8217;ve added a &#8220;<a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Framework/Source/SequenceGrabber/CSequenceGrabberView.h">CSequenceGrabberView</a>&#8221; NSView subclasss that you just need to drag and drop into your nib&#8217;s NSWindow. I&#8217;ve also improved the error handling so that the lack of a plugged in iSight camera won&#8217;t cause a crash.</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/sequence_grabber_updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sequence Grabber code now has Motion Detection (Followup)</title>
		<link>http://toxicsoftware.com/sequence_grabber_code_now_has_motion_detection_followup/</link>
		<comments>http://toxicsoftware.com/sequence_grabber_code_now_has_motion_detection_followup/#comments</comments>
		<pubDate>Fri, 19 Aug 2005 03:29:51 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[CoreImage]]></category>
		<category><![CDATA[corevideo]]></category>
		<category><![CDATA[isight]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[sequence grabber]]></category>
		<category><![CDATA[toxicsoftware.com]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/blog/sequence_grabber_code_now_has_motion_detection_followup/</guid>
		<description><![CDATA[In my previous post I talk about the (rather pitiful) attempts at adding motion capture to my Sequence Grabber code. This post will document what additions I&#8217;ve made to the code under the covers.

1) Added code to write CoreImage images (CIImage objects) to a QuickTime movie (currently hardcoded to mpeg4) using QTKit. Now you execute [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous <a href="/blog/sequence_grabber_code_now_has_motion_detection/">post</a> I talk about the (rather pitiful) attempts at adding motion capture to my Sequence Grabber code. This post will document what additions I&#8217;ve made to the code under the covers.</p>

<p>1) Added code to write CoreImage images (CIImage objects) to a QuickTime movie (currently hardcoded to mpeg4) using QTKit. Now you execute <a href="http://developer.apple.com/macosx/coreimage.html">Image Units</a> against the video frames coming in from the camera and save the output to a movie. Pretty neat. At the moment it isn&#8217;t very efficient because I convert the frames to NSImages as an intermediate step (which I think takes the pixel data out of the GPU video ram and into RAM) &#8211; instead I think I can use a CoreVideo surface directly (but QTKit doesn&#8217;t support CoreVideo directly yet &#8211; I have more sample that i need to put online that enables QTKit and CoreVideo to work together). I also need to control the Sequence Grabber API a little better and try to prevent it from doing superfluous work (i.e. i need to put it into pure &#8220;preview&#8221; mode).</p>

<p>1.1) There are a couple of categories on QTMovie (part of QTKit) for conveniently creating movies and appending frames to it (note the timing code in the append frame code is wrong &#8211; which is why, if you watched the movie that accompanies the code I look like I&#8217;m dancing around like an idjit) and a category on CIImage for some handy dandy conversions (cropping, scaling, conversion to NSImage &#8211; thanks to <a href="http://www.gigliwood.com/weblog/Cocoa/">Dan Wood&#8217;s code archive</a> for most of that code).</p>

<p>2) Created a couple of specialised Image Units. This is really just an exercise in cikernel (really a subset of <a href="http://www.opengl.org/documentation/oglsl.html">OpenGL Shading Language</a> &#8211; that link is worth following btw) programming. I&#8217;m actually impressed with how easy it is to write cikernel code.</p>

<p>3) Actually that last item is a white lie. I didn&#8217;t create any Image Units &#8211; what I did do is create a CIFilter subclass that takes the cikernel code as an input parameter attribute and an array of user defineable input parameters that will get passed to the kernel from Cocoa. This allows you easily play around with cikernel code without having to create a separate target in Xcode and then dick around with using CIPlugin to load the Image Unit (why doesn&#8217;t CoreImage load all .plugins from my application plugins directory automatically?). It is pretty cheap and easy way of creating a Core Image filter without any administration work. See CCIGenericFilter.h/,m and CMotionDetector for more details</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/sequence_grabber_code_now_has_motion_detection_followup/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Sequence Grabber code now has Motion Detection</title>
		<link>http://toxicsoftware.com/sequence_grabber_code_now_has_motion_detection/</link>
		<comments>http://toxicsoftware.com/sequence_grabber_code_now_has_motion_detection/#comments</comments>
		<pubDate>Thu, 18 Aug 2005 14:29:59 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[CoreImage]]></category>
		<category><![CDATA[corevideo]]></category>
		<category><![CDATA[isight]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[sequence grabber]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[toxicmedia]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/blog/sequence_grabber_code_now_has_motion_detection/</guid>
		<description><![CDATA[I&#8217;ve added basic motion detection capabilities to Cocoa Sequence Grabber code now.

This is what happens when your cat wakes you up too darn early after peeing under the computer desk.

Sample movie (MP4/QuickTime 7 required, 64KB file): MotionDetection.mp4

No those aren&#8217;t mpeg encoding artefacts, those are my attempts to highlight the motion in the movie.

Source code: http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Samples/SequenceGrabber [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve added basic motion detection capabilities to <a href="/blog/sequence_grabber_code_now_with_coregoodness/">Cocoa Sequence Grabber</a> code now.</p>

<p>This is what happens when your cat wakes you up too darn early after peeing under the computer desk.</p>

<p>Sample movie (MP4/QuickTime 7 required, 64KB file): <a href="/uploads/MotionDetection.mp4">MotionDetection.mp4</a></p>

<p>No those aren&#8217;t mpeg encoding artefacts, those are my attempts to highlight the motion in the movie.</p>

<p>Source code: <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Samples/SequenceGrabber">http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/Samples/SequenceGrabber</a> (see MotionDetector subdirectory)</p>

<p>Have fun.</p>

<p><img src="/uploads/MotionDetector.jpg" border="0" alt="image" name="image" width="641" height="504" /></p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/sequence_grabber_code_now_has_motion_detection/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sequence Grabber Code &#8211; Four Times the Fun!</title>
		<link>http://toxicsoftware.com/sequence_grabber_code_four_times_the_fun/</link>
		<comments>http://toxicsoftware.com/sequence_grabber_code_four_times_the_fun/#comments</comments>
		<pubDate>Wed, 10 Aug 2005 00:50:59 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[CoreImage]]></category>
		<category><![CDATA[corevideo]]></category>
		<category><![CDATA[isight]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[sequence grabber]]></category>
		<category><![CDATA[toxicsoftware.com]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/blog/sequence_grabber_code_four_times_the_fun/</guid>
		<description><![CDATA[Just for fun I added four seperate preview panes for my Sequence Grabber code &#8211; each pane has its own CoreImage filter attached. All previews can be flipped horizontally as well (I just apply an affine transformation to the image before handing it off to the four preview filters). I also fixed a couple of [...]]]></description>
			<content:encoded><![CDATA[<p>Just for fun I added four seperate preview panes for my <a href="/blog/sequence_grabber_code_now_with_coregoodness/">Sequence Grabber code</a> &#8211; each pane has its own CoreImage filter attached. All previews can be flipped horizontally as well (I just apply an affine transformation to the image before handing it off to the four preview filters). I also fixed a couple of little bugs. I am not updating the demo archive so to see the changes you&#8217;ll need to download and compile the code.</p>

<p>Screenshot: <a href="/uploads/QuadScreenshot.png" onclick="window.open('/uploads/QuadScreenshot.png','popup','width=1280,height=854,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">QuadScreenshot.png</a> (rather large &#8211; but note the CPU bar in the dock.. Even with all three filters running it was barely denting the CPU).</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/sequence_grabber_code_four_times_the_fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sequence Grabber Code &#8211; now with CoreGoodness</title>
		<link>http://toxicsoftware.com/sequence_grabber_code_now_with_coregoodness/</link>
		<comments>http://toxicsoftware.com/sequence_grabber_code_now_with_coregoodness/#comments</comments>
		<pubDate>Tue, 09 Aug 2005 01:47:10 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[CoreImage]]></category>
		<category><![CDATA[corevideo]]></category>
		<category><![CDATA[isight]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[sequence grabber]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[toxicmedia]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/blog/sequence_grabber_code_now_with_coregoodness/</guid>
		<description><![CDATA[I&#8217;ve improved my Cocoa Sequence Grabber code (read: iSight code). I&#8217;ve added a couple of extra classes to represent audio and video channels. Gone are the dependencies on my MoreFile framework and some of my other Cocoa/Carbon utility classes (making the project more lightweight). I&#8217;ve improved the code all round &#8211; but the key addition [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve improved my Cocoa <a href="/blog/sequence_grabber_cocoa_source_code/">Sequence Grabber</a> code (read: iSight code). I&#8217;ve added a couple of extra classes to represent audio and video channels. Gone are the dependencies on my MoreFile framework and some of my other Cocoa/Carbon utility classes (making the project more lightweight). I&#8217;ve improved the code all round &#8211; but the key addition is the ability to receive frames from the sequence grabber as CoreImage images. This means you can perform extra processing on the frames including applying CoreImage filters&#8230;</p>

<p>See screenshot: <a href="/uploads/SequenceGrabber_1.png" onclick="window.open('/uploads/SequenceGrabber_1.png','popup','width=656,height=519,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">SequenceGrabber_1.png</a>.</p>

<p>Note that QuickTime movie saved to disk is not passed through CoreImage. Frames from the SequenceGrabber are exposed to client code through standard Cocoa delegate methods (well one method) so you can do whatever you want with the images (including add them to a QTKit movie).</p>

<p>The code is still in a work in progress but it is pretty functional right now. My aim is to keep it all quite simple (unlike some of the Apple sample code parts of it was based on) and usable when just dropped into a 3rd party project.</p>

<p>Source code: <a href="http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/">http://toxic-public.googlecode.com/svn/tags/BlogTag_20070927_729/Frameworks/ToxicMedia/</a> links.</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/sequence_grabber_code_now_with_coregoodness/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Sequence Grabber Cocoa Source Code</title>
		<link>http://toxicsoftware.com/sequence_grabber_cocoa_source_code/</link>
		<comments>http://toxicsoftware.com/sequence_grabber_cocoa_source_code/#comments</comments>
		<pubDate>Tue, 23 Nov 2004 04:19:15 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[CoreImage]]></category>
		<category><![CDATA[corevideo]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[isight]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[sequence grabber]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[toxicmedia]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Cocoa source code showing how to use a QuickTime Sequence Grabber (e.g. an iSight camera) from your Cocoa application.

Update. I&#8217;ve uploaded a new version of the SequenceGrabber source code that should compile cleanly on any Mac OS X 10.3 machine. Thanks to &#8220;jlecuyer&#8221; for pointing out the original version was broken.

Update: Information on new version [...]]]></description>
			<content:encoded><![CDATA[<p>Cocoa source code showing how to use a QuickTime Sequence Grabber (e.g. an iSight camera) from your Cocoa application.</p>

<p>Update. I&#8217;ve uploaded a new version of the SequenceGrabber source code that should compile cleanly on any Mac OS X 10.3 machine. Thanks to &#8220;jlecuyer&#8221; for pointing out the original version was broken.</p>

<p>Update: Information on new version <a href="/blog/sequence_grabber_code_now_with_coregoodness/">here</a></p>

<p>Update: Link to source deleted, see my <a href="/toxicmedia/">ToxicMedia</a> page.</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/sequence_grabber_cocoa_source_code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
