<?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>Brooks Andrus &#187; Flash</title>
	<atom:link href="http://www.brooksandrus.com/blog/tag/flash/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brooksandrus.com/blog</link>
	<description>This is the blog of Brooks Andrus. Here, at irregular intervals, you may find digital noise centered around the activities of an early 21st century technologist. I work for TechSmith Corporation, but this web space and the views found on it are entirely my own.</description>
	<lastBuildDate>Fri, 13 May 2011 19:19:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>OSMF + Flex Example</title>
		<link>http://www.brooksandrus.com/blog/2010/02/10/osmf-flex-example/</link>
		<comments>http://www.brooksandrus.com/blog/2010/02/10/osmf-flex-example/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 18:34:35 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[osmf]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=1269</guid>
		<description><![CDATA[I&#8217;ve been checking up on OSMF (Open Source Media Framework) periodically, but found that many of their examples / samples don&#8217;t work at the moment (their APIs have been in flux). If you&#8217;re just looking for a quick way to get OSMF (v.9) up and running in Flex here&#8217;s a bit of code that should [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been checking up on <a href="http://www.opensourcemediaframework.com/">OSMF</a> (Open Source Media Framework) periodically, but found that many of their examples / samples don&#8217;t work at the moment (their APIs have been in flux). If you&#8217;re just looking for a quick way to get OSMF (v.9) up and running in Flex here&#8217;s a bit of code that should help.</p>
<p><span id="more-1269"></span></p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt; ?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;">&lt;mx :Application xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span> xmlns:containers=<span style="color: #ff0000;">&quot;org.osmf.containers.*&quot;</span> applicationComplete=<span style="color: #ff0000;">&quot;init();&quot;</span> xmlns:media=<span style="color: #ff0000;">&quot;org.osmf.media.*&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #000000;">&lt;/mx<span style="color: #7400FF;">&gt;</span>&lt;mx :Script<span style="color: #7400FF;">&gt;</span></span>
        <span style="color: #000000;">&lt; !<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">            import org.osmf.display.MediaPlayerSprite;</span>
<span style="color: #000000;">            import org.osmf.layout.LayoutUtils;</span>
&nbsp;
<span style="color: #000000;">            import org.osmf.containers.MediaContainer;</span>
<span style="color: #000000;">            import org.osmf.media.MediaElement;</span>
<span style="color: #000000;">            import org.osmf.media.MediaPlayer;</span>
<span style="color: #000000;">            import org.osmf.media.URLResource;</span>
<span style="color: #000000;">            import org.osmf.utils.URL;</span>
<span style="color: #000000;">            import org.osmf.video.VideoElement;</span>
<span style="color: #000000;">            import org.osmf.net.NetLoader;</span>
&nbsp;
<span style="color: #000000;">            import mx.core.UIComponent;</span>
&nbsp;
<span style="color: #000000;">            private static const REMOTE_PROGRESSIVE:String = <span style="color: #ff0000;">&quot;http://mediapm.edgesuite.net/strobe/content/test/AFaerysTale_sylviaApostol_640_500_short.flv&quot;</span>;</span>
&nbsp;
<span style="color: #000000;">            private var mediaElement:MediaElement;</span>
<span style="color: #000000;">            private var mediaPlayer:MediaPlayer;</span>
<span style="color: #000000;">            private var container:MediaContainer;</span>
&nbsp;
<span style="color: #000000;">            private function init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">            <span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">                // set up some listeners for our buttons</span>
<span style="color: #000000;">                playBtn.addEventListener<span style="color: #66cc66;">&#40;</span> MouseEvent.CLICK, playHandler, false, <span style="color: #cc66cc;">0</span>, true <span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">                pauseBtn.addEventListener<span style="color: #66cc66;">&#40;</span> MouseEvent.CLICK, pauseHandler, false, <span style="color: #cc66cc;">0</span>, true <span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">                seekBtn.addEventListener<span style="color: #66cc66;">&#40;</span> MouseEvent.CLICK, seekHandler, false, <span style="color: #cc66cc;">0</span>, true <span style="color: #66cc66;">&#41;</span>;</span>
&nbsp;
<span style="color: #000000;">                // First create a MediaElement and load some media </span>
<span style="color: #000000;">                mediaElement = new VideoElement<span style="color: #66cc66;">&#40;</span> new NetLoader, new URLResource<span style="color: #66cc66;">&#40;</span> new URL<span style="color: #66cc66;">&#40;</span> REMOTE_PROGRESSIVE <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;</span>
&nbsp;
<span style="color: #000000;">                // We need a DisplayObject for the video</span>
<span style="color: #000000;">                container = new MediaContainer<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; </span>
<span style="color: #000000;">                // feed the display object a media element</span>
<span style="color: #000000;">                container.addMediaElement<span style="color: #66cc66;">&#40;</span> mediaElement <span style="color: #66cc66;">&#41;</span>; </span>
<span style="color: #000000;">                // Flex requires a DisplayObject to be wrapped in Flex Framework UI Abstraction</span>
<span style="color: #000000;">                videoParent.addChild<span style="color: #66cc66;">&#40;</span> container <span style="color: #66cc66;">&#41;</span>; </span>
&nbsp;
<span style="color: #000000;">                // MediaPlayer is a virtual controller. Assign it a media element and it will autoplay the media by default.</span>
<span style="color: #000000;">                mediaPlayer = new MediaPlayer<span style="color: #66cc66;">&#40;</span> mediaElement <span style="color: #66cc66;">&#41;</span>;</span>
&nbsp;
<span style="color: #000000;">                // We will manually resize the MediaContainer just for kicks</span>
<span style="color: #000000;">                LayoutUtils.setAbsoluteLayout<span style="color: #66cc66;">&#40;</span> mediaElement.metadata, <span style="color: #cc66cc;">640</span>, <span style="color: #cc66cc;">360</span> <span style="color: #66cc66;">&#41;</span>; </span>
<span style="color: #000000;">            <span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">            private function playHandler<span style="color: #66cc66;">&#40;</span> e:MouseEvent <span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">            <span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">                if <span style="color: #66cc66;">&#40;</span> !mediaPlayer.playing <span style="color: #66cc66;">&#41;</span></span>
<span style="color: #000000;">                <span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">                    mediaPlayer.play<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">                <span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">            <span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">            private function pauseHandler<span style="color: #66cc66;">&#40;</span> e:MouseEvent <span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">            <span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">                if <span style="color: #66cc66;">&#40;</span> mediaPlayer.playing <span style="color: #66cc66;">&#41;</span></span>
<span style="color: #000000;">                <span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">                    mediaPlayer.pause<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">                <span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">            <span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">            private function seekHandler<span style="color: #66cc66;">&#40;</span> e:MouseEvent <span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">            <span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">                var val:Number =  parseFloat<span style="color: #66cc66;">&#40;</span> timeTxt.text <span style="color: #66cc66;">&#41;</span>;</span>
&nbsp;
<span style="color: #000000;">                mediaPlayer.seek<span style="color: #66cc66;">&#40;</span> val <span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">            <span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">        <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;">&lt;/mx<span style="color: #7400FF;">&gt;</span></span>
    <span style="color: #000000;">&lt;mx :UIComponent id=<span style="color: #ff0000;">&quot;videoParent&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
    <span style="color: #000000;">&lt;mx :Button x=<span style="color: #ff0000;">&quot;10&quot;</span> y=<span style="color: #ff0000;">&quot;400&quot;</span> label=<span style="color: #ff0000;">&quot;play&quot;</span> id=<span style="color: #ff0000;">&quot;playBtn&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
    <span style="color: #000000;">&lt;mx :Button x=<span style="color: #ff0000;">&quot;72&quot;</span> y=<span style="color: #ff0000;">&quot;400&quot;</span> label=<span style="color: #ff0000;">&quot;pause&quot;</span> id=<span style="color: #ff0000;">&quot;pauseBtn&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
    <span style="color: #000000;">&lt;mx :Button x=<span style="color: #ff0000;">&quot;145&quot;</span> y=<span style="color: #ff0000;">&quot;400&quot;</span> label=<span style="color: #ff0000;">&quot;seek&quot;</span> id=<span style="color: #ff0000;">&quot;seekBtn&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
    <span style="color: #000000;">&lt;mx :TextInput x=<span style="color: #ff0000;">&quot;211&quot;</span> y=<span style="color: #ff0000;">&quot;400&quot;</span> width=<span style="color: #ff0000;">&quot;40&quot;</span> id=<span style="color: #ff0000;">&quot;timeTxt&quot;</span> text=<span style="color: #ff0000;">&quot;0&quot;</span> restrict=<span style="color: #ff0000;">&quot;0-9&quot;</span><span style="color: #7400FF;">/&gt;</span></span></pre></div></div>

<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2010/02/10/osmf-flex-example/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
<enclosure url="http://mediapm.edgesuite.net/strobe/content/test/AFaerysTale_sylviaApostol_640_500_short.flv" length="2660334" type="video/x-flv" />
		</item>
		<item>
		<title>Cross-Domain Runtime Shared Libraries (RSL)</title>
		<link>http://www.brooksandrus.com/blog/2009/05/21/cross-domain-runtime-shared-libraries-rsl/</link>
		<comments>http://www.brooksandrus.com/blog/2009/05/21/cross-domain-runtime-shared-libraries-rsl/#comments</comments>
		<pubDate>Thu, 21 May 2009 19:00:59 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[rsl]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=1057</guid>
		<description><![CDATA[Chase Brammer shows how to create ActionScript 3 cross-domain RSLs during his session at 360&#124;Flex in Indianapolis (just over 5 minutes). 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_yamp_933916297"
			class="flashmovie"
			width="640"
			height="360">
	<param name="movie" value="http://www.brooksandrus.com/media/yamp.swf" />
	<param name="flashvars" value="content=http://www.brooksandrus.com/media/crossdomain_rsl_master.mp4&amp;thumb=http://www.brooksandrus.com/media/crossdomain_rsl_master2.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showendscreen=false&amp;containerwidth=640&amp;containerheight=360&amp;uselargecontrols=false" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.brooksandrus.com/media/yamp.swf"
			name="fm_yamp_933916297"
			width="640"
			height="360">
		<param name="flashvars" value="content=http://www.brooksandrus.com/media/crossdomain_rsl_master.mp4&amp;thumb=http://www.brooksandrus.com/media/crossdomain_rsl_master2.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showendscreen=false&amp;containerwidth=640&amp;containerheight=360&amp;uselargecontrols=false" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		 Download video. 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>]]></description>
			<content:encoded><![CDATA[<p><a href="http://chasebrammer.com/">Chase Brammer</a> shows how to create ActionScript 3 cross-domain RSLs during his session at 360|Flex in Indianapolis (just over 5 minutes).</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_yamp_104572549"
			class="flashmovie"
			width="640"
			height="360">
	<param name="movie" value="http://www.brooksandrus.com/media/yamp.swf" />
	<param name="flashvars" value="content=http://www.brooksandrus.com/media/crossdomain_rsl_master.mp4&amp;thumb=http://www.brooksandrus.com/media/crossdomain_rsl_master2.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showendscreen=false&amp;containerwidth=640&amp;containerheight=360&amp;uselargecontrols=false" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.brooksandrus.com/media/yamp.swf"
			name="fm_yamp_104572549"
			width="640"
			height="360">
		<param name="flashvars" value="content=http://www.brooksandrus.com/media/crossdomain_rsl_master.mp4&amp;thumb=http://www.brooksandrus.com/media/crossdomain_rsl_master2.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showendscreen=false&amp;containerwidth=640&amp;containerheight=360&amp;uselargecontrols=false" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
<p><a href="http://www.brooksandrus.com/media/crossdomain_rsl_master.mp4">Download</a> video.</p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2009/05/21/cross-domain-runtime-shared-libraries-rsl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.brooksandrus.com/media/crossdomain_rsl_master.mp4" length="37765347" type="video/mp4" />
		</item>
		<item>
		<title>Optimize Runtime Shared Libraries (RSL)</title>
		<link>http://www.brooksandrus.com/blog/2009/05/21/optimize-runtime-shared-libraries-rsl/</link>
		<comments>http://www.brooksandrus.com/blog/2009/05/21/optimize-runtime-shared-libraries-rsl/#comments</comments>
		<pubDate>Thu, 21 May 2009 18:47:56 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[rsl]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=1053</guid>
		<description><![CDATA[Chase Brammer shows how to optimize ActionScript 3 Runtime Shared Libraries during his session at 360&#124;Flex in Indianapolis (just under 3 minutes). 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_yamp_24092871"
			class="flashmovie"
			width="640"
			height="360">
	<param name="movie" value="http://www.brooksandrus.com/media/yamp.swf" />
	<param name="flashvars" value="content=http://www.brooksandrus.com/media/optimize_rsl_master.mp4&amp;thumb=http://www.brooksandrus.com/media/optimize_rsl_master2.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showendscreen=false&amp;containerwidth=640&amp;containerheight=360&amp;uselargecontrols=false" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.brooksandrus.com/media/yamp.swf"
			name="fm_yamp_24092871"
			width="640"
			height="360">
		<param name="flashvars" value="content=http://www.brooksandrus.com/media/optimize_rsl_master.mp4&amp;thumb=http://www.brooksandrus.com/media/optimize_rsl_master2.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showendscreen=false&amp;containerwidth=640&amp;containerheight=360&amp;uselargecontrols=false" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		 Download video. 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>]]></description>
			<content:encoded><![CDATA[<p><a href="http://chasebrammer.com/">Chase Brammer</a> shows how to optimize ActionScript 3 Runtime Shared Libraries during his session at 360|Flex in Indianapolis (just under 3 minutes).</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_yamp_2006389070"
			class="flashmovie"
			width="640"
			height="360">
	<param name="movie" value="http://www.brooksandrus.com/media/yamp.swf" />
	<param name="flashvars" value="content=http://www.brooksandrus.com/media/optimize_rsl_master.mp4&amp;thumb=http://www.brooksandrus.com/media/optimize_rsl_master2.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showendscreen=false&amp;containerwidth=640&amp;containerheight=360&amp;uselargecontrols=false" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.brooksandrus.com/media/yamp.swf"
			name="fm_yamp_2006389070"
			width="640"
			height="360">
		<param name="flashvars" value="content=http://www.brooksandrus.com/media/optimize_rsl_master.mp4&amp;thumb=http://www.brooksandrus.com/media/optimize_rsl_master2.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showendscreen=false&amp;containerwidth=640&amp;containerheight=360&amp;uselargecontrols=false" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
<p><a href="http://www.brooksandrus.com/media/optimize_rsl_master.mp4">Download</a> video.</p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2009/05/21/optimize-runtime-shared-libraries-rsl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.brooksandrus.com/media/optimize_rsl_master.mp4" length="18924230" type="video/mp4" />
		</item>
		<item>
		<title>Bilinear Resampling, ShaderJob, Pixel Bender And Flash Player</title>
		<link>http://www.brooksandrus.com/blog/2009/03/11/bilinear-resampling-with-flash-player-and-pixel-bender/</link>
		<comments>http://www.brooksandrus.com/blog/2009/03/11/bilinear-resampling-with-flash-player-and-pixel-bender/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 04:09:44 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[bilinear]]></category>
		<category><![CDATA[thumbgenie]]></category>
		<category><![CDATA[thumbnails]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=927</guid>
		<description><![CDATA[*Update* Sometimes you&#8217;re an idiot and you spend a lot of time reinventing the wheel because you misread one little line of documentation. This is one of those times where I get to be that idiot. I invented a solution for bilinear resampling in Flash Player when I didn&#8217;t need to. You can actually get [...]]]></description>
			<content:encoded><![CDATA[<p><strong>*Update*</strong></p>
<p>Sometimes you&#8217;re an idiot and you spend a lot of time reinventing the wheel because you misread one little line of documentation. This is one of those times where I get to be that idiot. I invented a solution for bilinear resampling in Flash Player when I didn&#8217;t need to. You can actually get the same results pretty simply using just BitmapData.draw() method with smoothing on (I had read this didn&#8217;t work when down sizing), but it requires creating a temp BitmapData object if the source you&#8217;re feeding the BitmapData.draw() method is not another BitmapData object (i.e. a DisplayObject). Here&#8217;s what that scenario would look like.<br />
<code></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">            <span style="color: #808080; font-style: italic;">// source in this example is a DisplayObject</span>
            <span style="color: #000000; font-weight: bold;">var</span> temp:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span> sourceWidth, sourceHeight <span style="color: #66cc66;">&#41;</span>;
            temp.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span> source <span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> output:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span> outputWidth, outputHeight <span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> matrix:Matrix = <span style="color: #000000; font-weight: bold;">new</span> Matrix<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            matrix.<span style="color: #006600;">scale</span><span style="color: #66cc66;">&#40;</span> outputWidth <span style="color: #66cc66;">/</span> sourceWidth, outputHeight <span style="color: #66cc66;">/</span> sourceHeight <span style="color: #66cc66;">&#41;</span>;
&nbsp;
            output.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span> temp, matrix, <span style="color: #000000; font-weight: bold;">null</span>, <span style="color: #000000; font-weight: bold;">null</span>, <span style="color: #000000; font-weight: bold;">null</span>, <span style="color: #000000; font-weight: bold;">true</span> <span style="color: #66cc66;">&#41;</span>;
            temp.<span style="color: #006600;">dispose</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p></code><br />
<span id="more-927"></span><br />
Many thanks to Felix for leaving a comment that made me question myself and go back to the problem with fresh eyes.</p>
<p>Now I can take some consolation in the fact that I actually learned a lot by going down this path. I dug in to Pixel Bender again and learned how to use ShaderJob. To that end, portions of this &#8220;tutorial&#8221; illustrate how to use a PixelBender shader and a ShaderJob together. ShaderJob, when run with the async flag (false), is as close as you can come to creating new threads in Flash&#8211;that&#8217;s some pretty neat Flash hackery.</p>
<p>So, if you find yourself reading this, you&#8217;re advised to skip down to the code included below and take a look at the embedded filter, Shader / ShaderJob portion. </p>
<p><strong>*End of Update*</strong></p>
<p>If you&#8217;re looking to generate high quality scaled bitmaps in Flash Player / AIR, you&#8217;ll need to do some form of bilinear or bicubic resampling. Why you ask? Because, Flash Player resampling is, by default, nearest neighbor and that looks, well, like ass (see evidence directly below).</p>
<p><img src="http://www.brooksandrus.com/images/nearest_neighbor_controls.jpg" alt="nearest neighbor resample" /><br />
 If you dig around long enough on the net you&#8217;ll find some AS3 libraries (Java ports) like <a href="http://www.clevr.com/blog/2008/resize-actionscript-bicubic-bilinear-interpolation/">clevrlib</a> which will do bilinear or bicubic resampling using BitmapData methods like getPixel / setPixel. As seen below, clevrlib definitely decreases jaggies and improves the legibility of text, but its extremely slow&#8211;scaling a 960&#215;540 BitmapData object to 640&#215;360 takes around 1.5 &#8211; 2 seconds for  bilinear resampling and around 3 &#8211; 5 seconds for bicubic resampling (mileage will vary based on the type of imagery and size of the picture). Also, the results, in some cases, exhibit noticeable resampling artifacts (check out the fullscreen icon in the right corner of the examples immediately below).</p>
<p><img src="http://www.brooksandrus.com/jing2/cleverlib_resampling.png" alt="cleverlib resampling" /></p>
<p>I was looking to implement bilinear resampling in <a href="http://www.brooksandrus.com/blog/thumbgenie-an-air-thumbnail-generator/">ThumbGenie</a>, but, as the old saying goes&#8211;speed kills. I just couldn&#8217;t tolerate 2 or 3 seconds to resample an image&#8211;there had to to be a better way. After a bit of thought I fell on the answer&#8211;<a href="http://labs.adobe.com/technologies/pixelbender/">PixelBender</a>. </p>
<p>Flash Player 10 PixelBender bytecode is designed to manipulate individual pixels in a bitmap super fast. In fact, it executes fast enough to apply real time filter effects to video. This seemed promising and sure enough after reading through the sdk docs and playing around for awhile (read I spent a Saturday evening trying to wrap my little melon around the issue), I was able to find a built-in PixelBender method that does bilinear sampling. Slap a parameter on that biatch (aka kernel) controlling the desired scale of the output  and little ol&#8217; me was rendering silky-smooth, scaled bitmaps out of Flash Player in mere milliseconds (8-13 milliseconds scaling a 960&#215;540 bitmap to 640&#215;360&#8211;take that suckaz).</p>
<p><img src="http://www.brooksandrus.com/images/bilinear_controls.jpg" alt="Pixel Bender bilinear resampling" /></p>
<p>Interested in chasing the same dream? Here&#8217;s, the rough outline you&#8217;ll need to follow:</p>
<ol>
<li>Create Pixel Bender kernel that does bilinear resampling.</li>
<li>Compile Pixel Bender bytecode for Flash Player 10 (.pbj file).</li>
<li>Embed PBJ bytecode in AS3 class.</li>
<li>Generate <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/BitmapData.html">BitmapData</a> from a <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/DisplayObject.html">DisplayObjec</a>t (BitmapData.draw( obj )).</li>
<li>Create an AS3 <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/Shader.html">Shader</a> object, instantiate embedded Pixel Bender bytecode, configure Shader.</li>
<li>Create an output BitmapData object (this will hold the scaled bitmap we create.</li>
<li>Create a <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/ShaderJob.html">ShaderJob</a> &#8211; this is a process that will run the Shader and return its output to an object (as opposed to being applied to a DisplayObject wrapped in a <a href="http://livedocs.adobe.com/flex/3/langref/flash/filters/ShaderFilter.html">ShaderFilter</a>).</li>
<li>Run the ShaderJob by calling the ShaderJob.start( true ) method.</li>
<li>Do something with the BitmapData thumbnail (display, push to server, or encode and save to disk)</li>
</ol>
<p>Ouch, that&#8217;s pretty painful. And believe me, I did some serious bleeding before figuring this one out&#8211;I really had to push the two or three sleep deprived brain cells I have left in order to get the job done. And well, this is just a long-winded way of saying that I&#8217;ll be providing y&#8217;all the Pixel Bender kernel (.pbk) and bytcode (.pbj) plus the AS3 implementation that I developed for <a href="http://www.brooksandrus.com/blog/thumbgenie-an-air-thumbnail-generator/">ThumbGenie</a> (just my way of saying thanks for all of the code you Flash / Flex cats so liberally share all of time).</p>
<p>Whew, you made it this far, now its time for the good stuff. Download the PixelBender source / bytecode <a href="http://www.brooksandrus.com/resources/bilinearresample.zip">here</a> and feel free to peruse / use the implementation seen below.</p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
 * Copyright 2009 (c) , Brooks Andrus
 * 
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software to deal in the Software without
 * restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following
 * conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 * 
 */</span>
package com.<span style="color: #006600;">brooksandrus</span>.<span style="color: #006600;">utils</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">BitmapData</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">DisplayObject</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Shader</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">ShaderJob</span>;
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> BilinearResample
    <span style="color: #66cc66;">&#123;</span>
        <span style="color: #66cc66;">&#91;</span>Embed <span style="color: #66cc66;">&#40;</span> source=<span style="color: #ff0000;">&quot;../../../../assets/bilinearresample.pbj&quot;</span>, mimeType=<span style="color: #ff0000;">&quot;application/octet-stream&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#93;</span>
        <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> BilinearScaling:<span style="color: #000000; font-weight: bold;">Class</span>;
&nbsp;
        <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> BilinearResample<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #0066CC;">super</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> resampleBitmap<span style="color: #66cc66;">&#40;</span> input:BitmapData, desiredWidth:<span style="color: #0066CC;">int</span>, desiredHeight:<span style="color: #0066CC;">int</span>, cleanup:<span style="color: #0066CC;">Boolean</span> = <span style="color: #000000; font-weight: bold;">true</span> <span style="color: #66cc66;">&#41;</span>:BitmapData
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">var</span> aspectRatio:<span style="color: #0066CC;">Number</span> = input.<span style="color: #0066CC;">width</span> <span style="color: #66cc66;">/</span> input.<span style="color: #0066CC;">height</span>;
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> factor:<span style="color: #0066CC;">Number</span> = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">max</span><span style="color: #66cc66;">&#40;</span> input.<span style="color: #0066CC;">width</span> <span style="color: #66cc66;">/</span> desiredWidth, input.<span style="color: #0066CC;">height</span> <span style="color: #66cc66;">/</span> desiredHeight <span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #808080; font-style: italic;">// create and configure a Shader object</span>
            <span style="color: #000000; font-weight: bold;">var</span> shader:Shader = <span style="color: #000000; font-weight: bold;">new</span> Shader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            shader.<span style="color: #006600;">byteCode</span> = <span style="color: #000000; font-weight: bold;">new</span> BilinearScaling<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// instantiate embedded Pixel Bender bytecode</span>
            shader.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">src</span>.<span style="color: #006600;">input</span> = input; <span style="color: #808080; font-style: italic;">// supply the shader with BitmapData it will manipulate</span>
            shader.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">scale</span>.<span style="color: #006600;">value</span> = <span style="color: #66cc66;">&#91;</span>factor<span style="color: #66cc66;">&#93;</span>; <span style="color: #808080; font-style: italic;">// scale factor. shader params are all stored in arrays.</span>
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> outputWidth:<span style="color: #0066CC;">int</span>;
            <span style="color: #000000; font-weight: bold;">var</span> outputHeight:<span style="color: #0066CC;">int</span>;
&nbsp;
            <span style="color: #808080; font-style: italic;">// determine output bitmap dimensions</span>
            <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> input.<span style="color: #0066CC;">width</span> <span style="color: #66cc66;">&gt;</span> input.<span style="color: #0066CC;">height</span> <span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#123;</span>
                outputWidth = desiredWidth;
                outputHeight = desiredWidth <span style="color: #66cc66;">/</span> aspectRatio;
            <span style="color: #66cc66;">&#125;</span>
            <span style="color: #b1b100;">else</span>
            <span style="color: #66cc66;">&#123;</span>
                outputWidth = desiredHeight <span style="color: #66cc66;">*</span> aspectRatio;
                outputHeight = desiredHeight;
            <span style="color: #66cc66;">&#125;</span>
&nbsp;
            <span style="color: #808080; font-style: italic;">// create a bitmap - our shader will return its data (an image) to this bitmap</span>
            <span style="color: #000000; font-weight: bold;">var</span> output:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span> outputWidth, outputHeight <span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #808080; font-style: italic;">// shader jobs are wicked cool</span>
            <span style="color: #000000; font-weight: bold;">var</span> job:ShaderJob = <span style="color: #000000; font-weight: bold;">new</span> ShaderJob<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            job.<span style="color: #0066CC;">target</span> = output; <span style="color: #808080; font-style: italic;">// ShaderJob returns to this object</span>
            job.<span style="color: #006600;">shader</span> = shader; <span style="color: #808080; font-style: italic;">// The Shader assigned to this job</span>
            job.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">true</span> <span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// true flag runs the job synchronously.</span>
&nbsp;
            <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> cleanup <span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#123;</span>
                input.<span style="color: #006600;">dispose</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #66cc66;">&#125;</span>
&nbsp;
            <span style="color: #b1b100;">return</span> output;
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> resampleDisplayObject<span style="color: #66cc66;">&#40;</span> source:DisplayObject, desiredWidth:<span style="color: #0066CC;">int</span>, desiredHeight:<span style="color: #0066CC;">int</span> <span style="color: #66cc66;">&#41;</span>:BitmapData
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">var</span> aspectRatio:<span style="color: #0066CC;">Number</span> = source.<span style="color: #0066CC;">width</span> <span style="color: #66cc66;">/</span> source.<span style="color: #0066CC;">height</span>;
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> factor:<span style="color: #0066CC;">Number</span> = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">max</span><span style="color: #66cc66;">&#40;</span> source.<span style="color: #0066CC;">width</span> <span style="color: #66cc66;">/</span> desiredWidth, source.<span style="color: #0066CC;">height</span> <span style="color: #66cc66;">/</span> desiredHeight <span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> input:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span> source.<span style="color: #0066CC;">width</span>, source.<span style="color: #0066CC;">height</span>, <span style="color: #000000; font-weight: bold;">true</span> <span style="color: #66cc66;">&#41;</span>;
            input.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span> source <span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #808080; font-style: italic;">// configure the shader</span>
            <span style="color: #000000; font-weight: bold;">var</span> shader:Shader = <span style="color: #000000; font-weight: bold;">new</span> Shader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            shader.<span style="color: #006600;">byteCode</span> = <span style="color: #000000; font-weight: bold;">new</span> BilinearScaling<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            shader.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">src</span>.<span style="color: #006600;">input</span> = input;
            shader.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">scale</span>.<span style="color: #006600;">value</span> = <span style="color: #66cc66;">&#91;</span>factor<span style="color: #66cc66;">&#93;</span>; <span style="color: #808080; font-style: italic;">// scale factor. shader params are all stored in arrays.</span>
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> outputWidth:<span style="color: #0066CC;">int</span>;
            <span style="color: #000000; font-weight: bold;">var</span> outputHeight:<span style="color: #0066CC;">int</span>;
&nbsp;
            <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> input.<span style="color: #0066CC;">width</span> <span style="color: #66cc66;">&gt;</span> input.<span style="color: #0066CC;">height</span> <span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#123;</span>
                outputWidth = desiredWidth;
                outputHeight = desiredWidth <span style="color: #66cc66;">/</span> aspectRatio;
            <span style="color: #66cc66;">&#125;</span>
            <span style="color: #b1b100;">else</span>
            <span style="color: #66cc66;">&#123;</span>
                outputWidth = desiredHeight <span style="color: #66cc66;">*</span> aspectRatio;
                outputHeight = desiredHeight;
            <span style="color: #66cc66;">&#125;</span>
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> output:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span> outputWidth, outputHeight <span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> job:ShaderJob = <span style="color: #000000; font-weight: bold;">new</span> ShaderJob<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            job.<span style="color: #0066CC;">target</span> = output;
            job.<span style="color: #006600;">shader</span> = shader;
            job.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">true</span> <span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// true flag runs the job synchronously.</span>
&nbsp;
            input.<span style="color: #006600;">dispose</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #b1b100;">return</span> output;
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2009/03/11/bilinear-resampling-with-flash-player-and-pixel-bender/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Flash Player Games &#8211; Is It All About the Polygons?</title>
		<link>http://www.brooksandrus.com/blog/2009/02/26/flash-player-games-is-it-all-about-the-polygons/</link>
		<comments>http://www.brooksandrus.com/blog/2009/02/26/flash-player-games-is-it-all-about-the-polygons/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 21:04:44 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[polygons]]></category>
		<category><![CDATA[unity3d]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=904</guid>
		<description><![CDATA[Raph Koster sees the Flash Platform as the potential future of gaming: John Grden and some of the other 3d elites in the Flash world don&#8217;t feel Flash 3d is good enough. Is either party correct? Is the answer, almost? Or, does it lie to some other web rendering engine to wrest yet another Silmaril [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.raphkoster.com/">Raph Koster</a> sees the Flash Platform as the potential <a href="http://www.bbc.co.uk/blogs/technology/2009/02/flash.html">future of gaming</a>:</p>
<p><a href="http://www.bbc.co.uk/blogs/technology/2009/02/flash.html"><img src="http://www.brooksandrus.com/jing2/not_about_the_polygons.png" alt="Its not about the polygons quote" /></a></p>
<p><a href="http://rockonflash.wordpress.com/">John Grden</a> and some of the other 3d elites in the Flash world <a href="http://rockonflash.wordpress.com/2008/12/23/unity3d-ms-adobe-should-buy-them/">don&#8217;t feel Flash 3d is good enough</a>.</p>
<p><a href="http://rockonflash.wordpress.com/2008/12/23/unity3d-ms-adobe-should-buy-them/"><img src="http://www.brooksandrus.com/jing2/unity_polygons.png" alt="unity 3d polygons quote" /></a></p>
<p>Is either party correct? Is the answer, almost? Or, does it lie to some other web rendering engine to wrest yet another <a href="http://en.wikipedia.org/wiki/Silmaril">Silmaril</a> from the clutches of old media? It&#8217;s enough to make me  wonder if the Mozilla cats won&#8217;t get jealous and make 3d gaming a part of the html 5.1 spec( three cheers for <a href="http://en.wikipedia.org/wiki/Free_and_open_source_software">FOSS</a> and yet another browser land grab in the Flash world). ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2009/02/26/flash-player-games-is-it-all-about-the-polygons/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>ThumbGenie 1.1.0 Now Generates Embed Code</title>
		<link>http://www.brooksandrus.com/blog/2009/02/23/thumbgenie-110-now-generates-embed-code/</link>
		<comments>http://www.brooksandrus.com/blog/2009/02/23/thumbgenie-110-now-generates-embed-code/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 14:11:46 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[h.264]]></category>
		<category><![CDATA[Jing]]></category>
		<category><![CDATA[jing pro]]></category>
		<category><![CDATA[mpeg4-avc]]></category>
		<category><![CDATA[thumbgenie]]></category>
		<category><![CDATA[thumbnails]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=886</guid>
		<description><![CDATA[I updated ThumbGenie over the weekend to support generation of embed code. Now, every time you create a thumbnail from an MPEG4-AVC file or SWF embed code will be generated. ThumbGenie ships with a default &#8220;object / embed&#8221; code template, but you can easily modify or replace the template with your own code. I created [...]]]></description>
			<content:encoded><![CDATA[<p>I updated <a href="http://www.brooksandrus.com/blog/thumbgenie-an-air-thumbnail-generator/">ThumbGenie</a> over the weekend to support generation of embed code. Now, every time you create a thumbnail from an MPEG4-AVC file or SWF embed code will be generated. ThumbGenie ships with a default &#8220;object / embed&#8221; code template, but you can easily modify or replace the template with your own code.<span id="more-886"></span></p>
<p>I created a short video that explains how embed code generation works and what you need to modify or replace the sample template code.<br />
Go fullscreen <img class="jing-fullscreen-icon" src="http://www.brooksandrus.com/media/jing_fullscreen_icon.png" alt="fullscreen icon" /> to see the video in full 1:1 pixel clarity.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_player_1460665226"
			class="flashmovie"
			width="640"
			height="360">
	<param name="movie" value="http://www.brooksandrus.com/media/player.swf" />
	<param name="flashvars" value="content=http://www.brooksandrus.com/media/thumbgenie_embed_code.mp4&amp;thumb=http://www.brooksandrus.com/media/thumbgenie_embed_code.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showbranding=true&amp;containerwidth=640&amp;containerheight=360" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.brooksandrus.com/media/player.swf"
			name="fm_player_1460665226"
			width="640"
			height="360">
		<param name="flashvars" value="content=http://www.brooksandrus.com/media/thumbgenie_embed_code.mp4&amp;thumb=http://www.brooksandrus.com/media/thumbgenie_embed_code.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showbranding=true&amp;containerwidth=640&amp;containerheight=360" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
<p><a href="http://www.brooksandrus.com/media/thumbgenie_embed_code.mp4">Download</a> video.</p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object><br />
</p>
<p>If you&#8217;re using <a href="http://www.brooksandrus.com/blog/2009/01/19/jing-pro-ftp-a-complete-solution/">Jing Pro + FTP</a> the ability to generate thumbnails and embed code should significantly enhance your blogging workflow. Here&#8217;s a short example of how I use ThumbGenie in my workflow.<br />
Go fullscreen <img class="jing-fullscreen-icon" src="http://www.brooksandrus.com/media/jing_fullscreen_icon.png" alt="fullscreen icon" /> to see the video in full 1:1 pixel clarity.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_player_2037364201"
			class="flashmovie"
			width="640"
			height="360">
	<param name="movie" value="http://www.brooksandrus.com/media/player.swf" />
	<param name="flashvars" value="content=http://www.brooksandrus.com/media/thumbgenie_blog_workflow.mov&amp;thumb=http://www.brooksandrus.com/media/thumbgenie_blog_workflow.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showbranding=true&amp;containerwidth=640&amp;containerheight=360" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.brooksandrus.com/media/player.swf"
			name="fm_player_2037364201"
			width="640"
			height="360">
		<param name="flashvars" value="content=http://www.brooksandrus.com/media/thumbgenie_blog_workflow.mov&amp;thumb=http://www.brooksandrus.com/media/thumbgenie_blog_workflow.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showbranding=true&amp;containerwidth=640&amp;containerheight=360" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
<p><a href="http://www.brooksandrus.com/media/thumbgenie_blog_workflow.mov">Download</a> video.</p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>If you&#8217;re interested in generating thumbnails from MPEG4-AVC files or SWF files created by Jing hit the install badge below. After installing, head over to <a href="http://www.brooksandrus.com/blog/thumbgenie-an-air-thumbnail-generator/">ThumbGenie central</a> to view some helpful videos.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_AIRInstallBadge_1206980767"
			class="flashmovie"
			width="215"
			height="180">
	<param name="movie" value="http://www.brooksandrus.com/thumbgenie/AIRInstallBadge.swf" />
	<param name="flashvars" value="airversion=1.5&amp;appname=ThumbGenie&amp;image=http://www.brooksandrus.com/thumbgenie/thumbgenie_badge.png&amp;appurl=http://www.brooksandrus.com/thumbgenie/thumbgenie_1.3.0.air&amp;appid=com.brooksandrus.air.thumbgenie&amp;pubid=A3C411C2D522700600AC8D2902787FED2272C2C5.1&amp;appversion=1.3.0" />
	<param name="bgcolor" value="#333333" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.brooksandrus.com/thumbgenie/AIRInstallBadge.swf"
			name="fm_AIRInstallBadge_1206980767"
			width="215"
			height="180">
		<param name="flashvars" value="airversion=1.5&amp;appname=ThumbGenie&amp;image=http://www.brooksandrus.com/thumbgenie/thumbgenie_badge.png&amp;appurl=http://www.brooksandrus.com/thumbgenie/thumbgenie_1.3.0.air&amp;appid=com.brooksandrus.air.thumbgenie&amp;pubid=A3C411C2D522700600AC8D2902787FED2272C2C5.1&amp;appversion=1.3.0" />
		<param name="bgcolor" value="#333333" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2009/02/23/thumbgenie-110-now-generates-embed-code/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
<enclosure url="http://www.brooksandrus.com/media/thumbgenie_blog_workflow.mov" length="22054636" type="video/quicktime" />
<enclosure url="http://www.brooksandrus.com/media/thumbgenie_embed_code.mp4" length="20781654" type="video/mp4" />
		</item>
		<item>
		<title>Convert an ISO 8601 Date String to / from a Native AS3 Date Object</title>
		<link>http://www.brooksandrus.com/blog/2009/02/23/convert-an-iso-8601-date-string-to-from-a-native-as3-date-object/</link>
		<comments>http://www.brooksandrus.com/blog/2009/02/23/convert-an-iso-8601-date-string-to-from-a-native-as3-date-object/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 07:15:02 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=879</guid>
		<description><![CDATA[While making some improvements to my ilist metadata (iTunes MPEG4 style metadata) classes I ended up needing to convert an ISO 8601 date and time string to a native AS3 Date object and vice versa. An ISO 8601 date and time string comes in two flavors, basic and extended. As you can see below, the [...]]]></description>
			<content:encoded><![CDATA[<p>While making some improvements to my <a href="http://atomicparsley.sourceforge.net/mpeg-4files.html">ilist</a> metadata (iTunes MPEG4 style metadata) classes I ended up needing to convert an <a href="http://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date and time string to a native <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/">AS3</a> Date object and vice versa. </p>
<p>An ISO 8601 date and time string comes in two flavors, basic and extended. As you can see below, the basic format simply eschews dashes and colons in favor of a more compact syntax. </p>
<ul>
<li>Basic &#8211; 20090221T090000Z</li>
<li>Extended &#8211; 2009-02-21T09:00:00Z</li>
</ul>
<p>The standard requires a fixed number of digits to represent a date (8 digits) or a time (6 digits). When fewer digits are needed to represent a date / time the number must be padded with leading zeros. The Z at the end of the string designates the UTC &#8220;Zulu&#8221; timezone (GMT or so called universal time). </p>
<p>I took a quick buzz around the interwebs, but couldn&#8217;t find an AS3 lib that could convert one of these strings into a date object or take a date object and have it generate a correctly formatted string, so, you guessed it&#8211;I spent my Sunday evening whipping together a utility class that will do the trick (<a href="http://www.brooksandrus.com/resources/code/ISO8601Util.as">download the source here</a>). </p>
<p>I&#8217;m not claiming compliance with every nook and cranny of the spec, but it covers the fundamentals decently. Hand the util an AS3 Date object and you can generate a date, time or date + time in the basic or extended format. You can also parse a basic / extended date, time or date + time string and have an AS3 Date object returned with the appropriate UTC values set on it.</p>
<p>Here&#8217;s what the basic usage would look like for a date + time scenario:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// instantiate a ISO8601Util object</span>
 <span style="color: #000000; font-weight: bold;">var</span> util:ISO8601Util = <span style="color: #000000; font-weight: bold;">new</span> ISO8601Util<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// parse a date + time string into an AS3 Date  - takes either a basic or </span>
<span style="color: #808080; font-style: italic;">// extended representation         </span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">date</span>:<span style="color: #0066CC;">Date</span> = util.<span style="color: #006600;">parseDateTimeString</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;2009-02-21T09:07:59Z&quot;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// to turn a date into an ISO 8601 date + time representation grab a date object</span>
<span style="color: #000000; font-weight: bold;">var</span> currentdate:<span style="color: #0066CC;">Date</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Date</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// create a string with the extended or basic format</span>
<span style="color: #000000; font-weight: bold;">var</span> extended:<span style="color: #0066CC;">String</span> = util.<span style="color: #006600;">formatExtendedDateTime</span><span style="color: #66cc66;">&#40;</span> currentdate <span style="color: #66cc66;">&#41;</span>
<span style="color: #000000; font-weight: bold;">var</span> basic:<span style="color: #0066CC;">String</span> = util.<span style="color: #006600;">formatBasicDateTime</span><span style="color: #66cc66;">&#40;</span> currentdate <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Hopefully, I&#8217;m now the only poor bastard who has to do this!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2009/02/23/convert-an-iso-8601-date-string-to-from-a-native-as3-date-object/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Jing Pro &#8211; A &#8220;Full Metal&#8221; Flex Video Player</title>
		<link>http://www.brooksandrus.com/blog/2009/01/29/video-jing-pro-a-full-metal-flex-video-player/</link>
		<comments>http://www.brooksandrus.com/blog/2009/01/29/video-jing-pro-a-full-metal-flex-video-player/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 22:41:39 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[Jing]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[jingpro]]></category>
		<category><![CDATA[player]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=730</guid>
		<description><![CDATA[This is a little &#8220;inside the devigners head&#8221; piece that explains some of the conceptual thinking behind the Jing Pro MPEG4-AVC Video Player (there&#8217;s also a sanitized version over at the Jing blog). The player was built with Flex (easy to tell as I never quite got around to creating a custom preloader) which makes [...]]]></description>
			<content:encoded><![CDATA[<p>This is a little &#8220;inside the devigners head&#8221; piece that explains some of the conceptual thinking behind the Jing Pro MPEG4-AVC Video Player (there&#8217;s also a sanitized version over at the Jing blog).</p>
<p>The player was built with Flex (easy to tell as I never quite got around to creating a custom preloader) which makes her a bit of a pig file size wise, but having a mature framework and consistent approach to component creation was worth it in my opinion (I should add that the Google Analytics lib added a bit to her heft).</p>
<p>Besides being a branded experience, the player does some neat scaling tricks which makes it behave a lot more like an HDTV. Feed it a SD / HD stream and it elegantly handles the scaling and position (pillarboxing, letterboxing and windowboxing in video parlance) of the video. This makes it much easier to embed because you can make the video fit anywhere (big video, small blog post&#8211;no problemo). So throw on your flak jacket and check out this <a href="http://www.imdb.com/title/tt0093058/">&#8220;full metal&#8221;</a> homage to the Jing Pro video player.<br />
Go fullscreen <img class="jing-fullscreen-icon" src="http://www.brooksandrus.com/media/jing_fullscreen_icon.png" alt="fullscreen icon" /> to see the video in full 1:1 pixel clarity.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_player_1397323170"
			class="flashmovie"
			width="640"
			height="360">
	<param name="movie" value="http://www.brooksandrus.com/media/player.swf" />
	<param name="flashvars" value="content=http://www.brooksandrus.com/media/flex_fp10.mp4&amp;thumb=http://www.brooksandrus.com/media/flex_fp10.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showbranding=true&amp;containerwidth=640&amp;containerheight=360" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.brooksandrus.com/media/player.swf"
			name="fm_player_1397323170"
			width="640"
			height="360">
		<param name="flashvars" value="content=http://www.brooksandrus.com/media/flex_fp10.mp4&amp;thumb=http://www.brooksandrus.com/media/flex_fp10.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showbranding=true&amp;containerwidth=640&amp;containerheight=360" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
<p><a href="http://www.brooksandrus.com/media/jingprovideoplayer.mp4">Download</a> video.</p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2009/01/29/video-jing-pro-a-full-metal-flex-video-player/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.brooksandrus.com/media/jingprovideoplayer.mp4" length="16821771" type="video/mp4" />
<enclosure url="http://www.brooksandrus.com/media/flex_fp10.mp4" length="6419403" type="video/mp4" />
		</item>
		<item>
		<title>Flex Basics &#8211; The Script Tag</title>
		<link>http://www.brooksandrus.com/blog/2009/01/29/video-flex-basics-the-script-tag/</link>
		<comments>http://www.brooksandrus.com/blog/2009/01/29/video-flex-basics-the-script-tag/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 19:41:20 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[mx:script]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=723</guid>
		<description><![CDATA[Grasping the simple things is often the hardest part to getting up and running with Flex. For example, a friend of mine who I&#8217;ve been trying to pull over from the dark side (.Net guy) asked, &#8220;I&#8217;ve got an MXML Application with a button in it that I&#8217;d like to bind to a method&#8211;where&#8217;s the [...]]]></description>
			<content:encoded><![CDATA[<p>Grasping the simple things is often the hardest part to getting up and running with Flex. For example, a friend of mine who I&#8217;ve been trying to pull over from the dark side (.Net guy) asked, &#8220;I&#8217;ve got an MXML Application with a button in it that I&#8217;d like to bind to a method&#8211;where&#8217;s the code behind.&#8221; </p>
<p>The simple answer of course is to point him to the &#8220;script&#8221; tag (let&#8217;s just forget code behind support was ever added to Flex). Rather than typing up a long winded response I made a quick and dirty <a href="http://www.jingproject.com/">Jing</a> video to &#8220;show him around&#8221; Flex&#8217;s script tag (no deep explanation, I&#8217;m just teaching by &#8220;doing&#8221;).<br />
<span id="more-723"></span>Go fullscreen <img class="jing-fullscreen-icon" src="http://www.brooksandrus.com/media/jing_fullscreen_icon.png" alt="fullscreen icon" /> to see the video in full 1:1 pixel clarity.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_player_414731566"
			class="flashmovie"
			width="640"
			height="360">
	<param name="movie" value="http://www.brooksandrus.com/media/player.swf" />
	<param name="flashvars" value="content=http://www.brooksandrus.com/media/flex_script_tag_basics.mp4&amp;thumb=http://www.brooksandrus.com/media/flex_script_tag_basics.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showbranding=true&amp;containerwidth=640&amp;containerheight=360" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.brooksandrus.com/media/player.swf"
			name="fm_player_414731566"
			width="640"
			height="360">
		<param name="flashvars" value="content=http://www.brooksandrus.com/media/flex_script_tag_basics.mp4&amp;thumb=http://www.brooksandrus.com/media/flex_script_tag_basics.jpg&amp;windowbox=true&amp;analytics=UA-6435642-1&amp;showbranding=true&amp;containerwidth=640&amp;containerheight=360" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
<p><a href="http://www.brooksandrus.com/media/flex_script_tag_basics.mp4">Download</a> video.</p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2009/01/29/video-flex-basics-the-script-tag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.brooksandrus.com/media/flex_script_tag_basics.mp4" length="13494493" type="video/mp4" />
		</item>
		<item>
		<title>Pixel Bender + Video = Killer Runtime Effects</title>
		<link>http://www.brooksandrus.com/blog/2009/01/19/pixel-bender-effects-video-killer-runtime-effects/</link>
		<comments>http://www.brooksandrus.com/blog/2009/01/19/pixel-bender-effects-video-killer-runtime-effects/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 19:16:49 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[pixel bender]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=708</guid>
		<description><![CDATA[I&#8217;ve been playing with Pixel Bender a bit and noticed that there weren&#8217;t really any examples (I could find) that illustrated effects being applied to video. So I gathered together a whole slew of kernels from the interweb, downloaded a copy of Dancing Matt and shoehorned them into a media player that allows you to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing with <a href="http://labs.adobe.com/technologies/pixelbender/">Pixel Bender</a> a bit and noticed that there weren&#8217;t really any examples (I could find) that illustrated effects being applied to video. So I gathered together a whole slew of kernels from the interweb, <a href="http://www.stridegum.com/#/mattsplace/">downloaded</a> a copy of <a href="http://www.wherethehellismatt.com/?fbid=Lbe8Q_sX5bU">Dancing Matt</a> and shoehorned them into a media player that allows you to select and apply the effects during video playback. <span id="more-708"></span></p>
<p>Instructions: Press the &#8220;play&#8221; button, then select the effect you&#8217;d like to see applied to the video.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_yamp_test_819675932"
			class="flashmovie"
			width="640"
			height="360">
	<param name="movie" value="http://www.brooksandrus.com/media/yamp_test.swf" />
	<param name="flashvars" value="content=http://www.brooksandrus.com/media/dancing2008_720p.mp4&amp;thumb=http://www.brooksandrus.com/media/dancing2008_720p.jpg&amp;containerwidth=640&amp;containerheight=360" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.brooksandrus.com/media/yamp_test.swf"
			name="fm_yamp_test_819675932"
			width="640"
			height="360">
		<param name="flashvars" value="content=http://www.brooksandrus.com/media/dancing2008_720p.mp4&amp;thumb=http://www.brooksandrus.com/media/dancing2008_720p.jpg&amp;containerwidth=640&amp;containerheight=360" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>The ten thousand dollar question is what&#8217;s the value outside of gratuitous eye candy? It seems that in some cases you might want to apply a particular stylistic treatment (wouldn&#8217;t it be great if the cartoon effect that ships with After Effects would compile for Flash Player). There&#8217;s also the opportunity to animate the filters and create some really killer transition effects&#8211;anyone with a media player component or video editing / mashup RIA ought to see the potential there. And that&#8217;s just the tip of the iceberg, I&#8217;m sure there are far grander ideas being born as I write this.</p>
<p>FYI &#8211; All of the filters were gathered up out on the interweb (<a href="http://www.mikechambers.com/blog/2008/09/17/pixel-bender-tv-scanline-filter/">mesh</a>, <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&#038;exc=26&#038;loc=en_us">exchange</a>, <a href="http://pixelero.wordpress.com/">pixelero</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2009/01/19/pixel-bender-effects-video-killer-runtime-effects/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
<enclosure url="http://www.brooksandrus.com/media/dancing2008_720p.mp4" length="55081525" type="video/mp4" />
		</item>
		<item>
		<title>Targeting Flash Player 10 In Flex 3.2</title>
		<link>http://www.brooksandrus.com/blog/2009/01/11/video-targeting-flash-player-10-in-flex-32/</link>
		<comments>http://www.brooksandrus.com/blog/2009/01/11/video-targeting-flash-player-10-in-flex-32/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 06:40:48 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/?p=691</guid>
		<description><![CDATA[It seems like there should be a simple elegant toggle button or drop down in the Flex compiler options allowing you to choose which version of Flash Player you&#8217;d like to target, but until that happens here&#8217;s a quick (1:33) &#8220;how to&#8221; video. Go fullscreen to see the video in full 1:1 pixel clarity. Yep, [...]]]></description>
			<content:encoded><![CDATA[<p>It seems like there should be a simple elegant toggle button or drop down in the Flex compiler options allowing you to choose which version of Flash Player you&#8217;d like to target, but until that happens here&#8217;s a quick (1:33) &#8220;how to&#8221; video.<br />
Go fullscreen <img class="jing-fullscreen-icon" src="http://www.brooksandrus.com/media/jing_fullscreen_icon.png" alt="fullscreen icon" /> to see the video in full 1:1 pixel clarity.</p>
<p><object id="flashcontent" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="640" height="360" align="middle"><param name="movie" value="http://www.brooksandrus.com/media/player.swf" /><param name="bgcolor" value="#000000" /><param name="allowfullscreen" value="true" /><param name="flashvars" value="content=http://www.brooksandrus.com/media/flex_fp10.mp4&amp;thumb=http://www.brooksandrus.com/media/flex_fp10.jpg&amp;containerwidth=640&amp;containerheight=360&amp;showbranding=true&amp;analytics=UA-6435642-1&amp;windowbox=true" /><embed type="application/x-shockwave-flash" src="http://www.brooksandrus.com/media/player.swf" width="640" height="360" bgcolor="#FFFFFF" flashvars="content=http://www.brooksandrus.com/media/flex_fp10.mp4&amp;thumb=http://www.brooksandrus.com/media/flex_fp10.jpg&amp;containerwidth=640&amp;containerheight=360&amp;showbranding=true&amp;analytics=UA-6435642-1&amp;windowbox=true" allowfullscreen="true"></embed></object></p>
<p>Yep, its old news, but its a great example of the type of quick and simple knowledge nugget you can share with Jing and I&#8217;ve got a new years resolution to do that a bit more often.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2009/01/11/video-targeting-flash-player-10-in-flex-32/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.brooksandrus.com/media/flex_fp10.mp4" length="6419403" type="video/mp4" />
<enclosure url="http://www.brooksandrus.com/media/jingprovideoplayer.mp4" length="16821771" type="video/mp4" />
		</item>
		<item>
		<title>The Silver Tongue and Lifeless Corpse of Microsoft Silverlight</title>
		<link>http://www.brooksandrus.com/blog/2008/02/22/the-silver-tongue-and-lifeless-corpse-of-microsoft-silverlight/</link>
		<comments>http://www.brooksandrus.com/blog/2008/02/22/the-silver-tongue-and-lifeless-corpse-of-microsoft-silverlight/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 06:34:14 +0000</pubDate>
		<dc:creator>brooks</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[codecs]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://www.brooksandrus.com/blog/2008/02/22/the-silver-tongue-and-lifeless-corpse-of-microsoft-silverlight/</guid>
		<description><![CDATA[I work in a predominantly Windows oriented development shop focused around video and there&#8217;s been lots of discussion surrounding Microsoft Silverlight and VC-1 over the last year or so. We&#8217;ve looked at the technical specs, analyzed the possibilities and engaged in seemingly endless discussions comparing the technology to the Adobe Flash platform. Microsoft has come [...]]]></description>
			<content:encoded><![CDATA[<p>I work in a predominantly Windows oriented development <a href="http://www.techsmith.com">shop</a> focused around video and there&#8217;s been lots of discussion surrounding Microsoft Silverlight and <a href="http://en.wikipedia.org/wiki/VC-1">VC-1</a> over the last year or so. We&#8217;ve looked at the technical specs, analyzed the possibilities and engaged in seemingly endless discussions comparing the technology to the Adobe Flash platform. Microsoft has come knocking on our door repeatedly pitching the technology and as a Flash developer I&#8217;m surrounded by marketing hype and blogosphere rants, experiments, and outright paranoia at times. I&#8217;m always amazed at some of the claims that I see on the web and hear during meetings with their reps&#8211;claims which seemingly go unchallenged (maybe it&#8217;s just my ignorance that&#8217;s holding me back).</p>
<p>One of the oft heard and most annoying claims is that Silverlight will be a ubiquitous runtime quickly. This argument posits that all that it takes to be a ubiquitous runtime is a few killer apps. These killer apps typically are either viral content repositories or social in nature and therefore will quickly reach nearly every web enabled computer on the planet. Microsoft assured us during the Silverlight launch buildup that multiple killer apps would be released with the official 1.0 launch ensuring quick and massive penetration.</p>
<p>This claim that all it takes to become ubiquitous is a couple of killer apps has always struck me as off. Microsoft, and even some folks in the Adobe camp, like to point to YouTube and MySpace as what &#8220;made&#8221; Flash while conveniently forgetting that Flash Player adoption was at 98% of web enabled computers long before YouTube and MySpace came along. </p>
<p>It&#8217;s probably much more accurate to argue that Adobe Flash Player&#8217;s high penetration is what enabled the success of MySpace and YouTube. YouTube&#8217;s roaring success validated that Flash video had already won on the web despite the fact it supported fewer codecs of lesser quality than did the other embeddable media players. </p>
<p>When Flash MX and Flash Player 6 hit the streets in July of 2002 there were a lot of us who bought into the potential of video when paired with Flash Player&#8217;s ubiquity and its strange but wonderful scripting, graphics and animation capabilities. We envisioned a world of custom interfaces embedded seamlessly inside our rich applications and designs. We fought battle after battle just for the opportunity to use the technology. &#8220;Back in the day&#8221; no one was a believer and video on the web was a bad joke constantly undermined by the big three&#8217;s attempts at media player domination.</p>
<p>The point is that 6 years ago we started building the foundation for YouTube and it wasn&#8217;t by having a few killer apps, but rather thousands upon thousands of sites with a level of richness and creativity that was unimagined (I&#8217;m continually blown away by the creativity and talent that lives and breathes in this community).</p>
<p>Finally, VC-1 seems to be completely dead in the water. It&#8217;s my understanding that Microsoft&#8217;s strategy of driving adoption from the top down via major media studios and broadcasters has been a major failure. Hell, back in 2002 when Flash Player 6 sported its first video capabilities Windows Media 9 was being hyped like crazy by the softies. Six years later Microsoft has the same codec sporting a new name officially standardized under SMPTE and still can&#8217;t find a date to the prom. Instead, industry support has coalesced around <a href="http://en.wikipedia.org/wiki/H.264">h.264</a>. The h.264 tooling and licensing options are available on a variety of different platforms and are an integral part of many media technology stacks.</p>
<p>It&#8217;s clear that Apple&#8217;s strategy of winning the war by focusing on the content creation tools, dominant portable media playback, cross OS playback / encoding, and media purchasing has soundly beaten Microsoft in the codec / media platform war. Adobe&#8217;s decision to include the h.264 codec instead of VC-1 in Flash Player and ditch its proprietary container format should be read as a slap in the face and a clear sign of VC-1&#8242;s impotence. In one move they walk away from vendor lock-in strategies and indicate how unappealing Microsoft&#8217;s codec offering is.</p>
<p>Microsoft&#8217;s track record over the last 10 years lends little comfort. They&#8217;ve managed to make a media player that is universally despised and which has progressively gotten worse with each subsequent release. They have a retread codec that&#8217;s worn many skirts and names and still can&#8217;t get a date. They make a portable media player no one wants and have backed a next generation dvd format that is now officially dead. Let&#8217;s see, there&#8217;s QuickTime competitor ASF which pales in comparison and has never taken off and it replaced the universally maligned &#8220;video for windows&#8221; container&#8211;AVI. Oh and let&#8217;s not forget gems such as Windows Movie Maker and Microsoft Producer. I could go on, but you should be able to connect the dots. I actually feel sorry for the Microsoft employees when I hear them pitch this stuff&#8211;it can&#8217;t be good for the self-esteem. Note to Microsoft&#8211;maybe stop tanking in the media sector and work on making an operating system that people don&#8217;t hate.</p>
<p>In the end, perhaps Silverlight will take off, but I doubt it will happen overnight. If it does, it will mean a long, hard, consistent battle in the trenches where winning over the hearts of small shops and individual artists is just as important as pumping up MSDN groupies and stroking ISVs. It will mean building a community of stunning talent and incredible heart (its not a numbers game in my book). It will mean winning over the trust of a massive population trained not to trust new browser installs and increasingly cynical of Microsoft and its <a href="http://blog.seattlepi.nwsource.com/microsoft/archives/123837.asp">aggressive monopolist tendencies</a> as a whole. </p>
<p>If Microsoft is able to overcome all of the hurdles in front of it, Silverlight may become more than a lifeless corpse, but until then it appears they&#8217;ll be relying on Jedi mind tricks and their silvery tongue to convince developers and consumers to ignore their repeated missteps and failures in the media sector. Good luck with that MS, you&#8217;re going to need it. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooksandrus.com/blog/2008/02/22/the-silver-tongue-and-lifeless-corpse-of-microsoft-silverlight/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

