<?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"
	>

<channel>
	<title>Kenny Bunch</title>
	<atom:link href="http://kennybunch.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kennybunch.com/blog</link>
	<description>Programming Tidbits</description>
	<pubDate>Thu, 08 May 2008 03:21:25 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Aligning Videos in FLVPlayback (AS2 version)</title>
		<link>http://www.kennybunch.com/blog/2008/05/aligning-videos-in-flvplayback-as2-version/</link>
		<comments>http://www.kennybunch.com/blog/2008/05/aligning-videos-in-flvplayback-as2-version/#comments</comments>
		<pubDate>Tue, 06 May 2008 03:40:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=83</guid>
		<description><![CDATA[Though we don't use the FLVPlayback, someone asked me how to align video in the AS2 version. If you want to do alignment, here's a simple hack done by extending the FLVPlayback class which centers the videos.


import mx.video.FLVPlayback;
import mx.video.VideoPlayer;
class CenteredFLVPlayback extends FLVPlayback
&#123;
&#160; &#160; private var m_sizedW:Number; 
&#160; &#160; private var m_sizedH:Number;
&#160; &#160; 
&#160; &#160; public [...]]]></description>
			<content:encoded><![CDATA[<p>Though we don't use the FLVPlayback, someone asked me how to align video in the AS2 version. If you want to do alignment, here's a simple hack done by extending the FLVPlayback class which centers the videos.</p>
<div class="syntax_hilite">
<div id="actionscript-2">
<div class="actionscript"><span style="color: #0066CC;">import</span> mx.<span style="color: #0066CC;">video</span>.<span style="color: #006600;">FLVPlayback</span>;<br />
<span style="color: #0066CC;">import</span> mx.<span style="color: #0066CC;">video</span>.<span style="color: #006600;">VideoPlayer</span>;</p>
<p><span style="color: #000000; font-weight: bold;">class</span> CenteredFLVPlayback <span style="color: #0066CC;">extends</span> FLVPlayback<br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> m_sizedW:<span style="color: #0066CC;">Number</span>; <br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> m_sizedH:<span style="color: #0066CC;">Number</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> CenteredFLVPlayback<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">super</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">m_sizedW</span> = <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">width</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">m_sizedH</span> = <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">height</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setSize<span style="color: #66cc66;">&#40;</span>p_w:<span style="color: #0066CC;">Number</span>, p_h:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">super</span>.<span style="color: #006600;">setSize</span><span style="color: #66cc66;">&#40;</span>p_w, p_h<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">m_sizedW</span> = p_w;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">m_sizedH</span> = p_h;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// align content</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">Number</span> = _vp.<span style="color: #0066CC;">length</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span>i--<span style="color: #66cc66;">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>_vp<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span> != <span style="color: #0066CC;">undefined</span><span style="color: #66cc66;">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">alignPlayer</span><span style="color: #66cc66;">&#40;</span>_vp<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>, p_w, p_h<span style="color: #66cc66;">&#41;</span>;&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> alignPlayer<span style="color: #66cc66;">&#40;</span>p_vid:VideoPlayer, p_w:<span style="color: #0066CC;">Number</span>, p_h:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; p_vid.<span style="color: #006600;">x</span> = <span style="color: #66cc66;">&#40;</span>p_w/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #66cc66;">&#40;</span>p_vid.<span style="color: #0066CC;">width</span>/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; p_vid.<span style="color: #006600;">y</span> = <span style="color: #66cc66;">&#40;</span>p_h/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #66cc66;">&#40;</span>p_vid.<span style="color: #0066CC;">height</span>/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;&nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> showFirstStream<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span> <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">super</span>.<span style="color: #006600;">showFirstStream</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">alignPlayer</span><span style="color: #66cc66;">&#40;</span>VideoPlayer<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>._vp<span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">this</span>._visibleVP<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #0066CC;">this</span>.<span style="color: #006600;">m_sizedW</span>, <span style="color: #0066CC;">this</span>.<span style="color: #006600;">m_sizedH</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/blog/2008/05/aligning-videos-in-flvplayback-as2-version/feed/</wfw:commentRss>
		</item>
		<item>
		<title>FDT linked libraries vs changing the FDT core lib</title>
		<link>http://www.kennybunch.com/blog/2008/05/fdt-linked-libraries-vs-changing-the-fdt-core-lib/</link>
		<comments>http://www.kennybunch.com/blog/2008/05/fdt-linked-libraries-vs-changing-the-fdt-core-lib/#comments</comments>
		<pubDate>Tue, 06 May 2008 02:22:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=82</guid>
		<description><![CDATA[To follow up on my previous post about defining core libraries with FDT, I have found it better to add individual linked libraries on a project basis that changing the existing core lib to include multiple libs. Part of the reasoning here is that if you have a ton of projects with Flash Nature assigned [...]]]></description>
			<content:encoded><![CDATA[<p>To follow up on <a href="http://www.kennybunch.com/blog/2008/05/fix-fdt-as2-corelib-missing-mx-packaging/">my previous post about defining core libraries with FDT</a>, I have found it better to add individual linked libraries on a project basis that changing the existing core lib to include multiple libs. Part of the reasoning here is that if you have a ton of projects with Flash Nature assigned to them, when you reassign the core lib, all of the projects have to rebind/rebuild based on the new lib. Eclipse is not a happy camper with this and will eventually choke up on you. By assigning linked libs on a per project basis, the bind only happens for that project at that time. AKA, your machine does it freeze and wave its digital fist at you.</p>
<p>To add a linked library for a project<br />
1. Right click the project in the Explorer pane of Eclipse<br />
2. Click the FDT Source Folder<br />
3. Click Add Linked Libraries<br />
4. Add away and get a sandwich from Healthy CA</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/blog/2008/05/fdt-linked-libraries-vs-changing-the-fdt-core-lib/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fix: FDT AS2 CoreLib missing MX packaging</title>
		<link>http://www.kennybunch.com/blog/2008/05/fix-fdt-as2-corelib-missing-mx-packaging/</link>
		<comments>http://www.kennybunch.com/blog/2008/05/fix-fdt-as2-corelib-missing-mx-packaging/#comments</comments>
		<pubDate>Mon, 05 May 2008 14:24:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=81</guid>
		<description><![CDATA[For those who use FDT within Eclipse and are still managing AS2 projects, you might notice that your AS2 core lib doesn't have the mx framework in it. If you attempt to go and code AS2 using any of the framework (components, etc.) your project will show up broken. 
This is a simple issue to [...]]]></description>
			<content:encoded><![CDATA[<p>For those who use FDT within Eclipse and are still managing AS2 projects, you might notice that your AS2 core lib doesn't have the mx framework in it. If you attempt to go and code AS2 using any of the framework (components, etc.) your project will show up broken. </p>
<p>This is a simple issue to fix, but I'll point out how for the non power users.</p>
<p>1. Create a folder on your drive to be considered as your core actionscript lib (ex: C:\tools\flash\core_lib).</p>
<p>2. Copy the contents of FP8 folder and mx folder itself from your FDT install  (ex: {ECLIPSE INSTALL}\configuration\com.powerflasher.fdt.core\.config\core\as2) to the core lib</p>
<p>3. In Eclipse go to your preferences > FDT > core libraries > as2 core libraries</p>
<p>4. Either edit the current core lib or add another one and point it to the lib you created</p>
<p>5. eat some snacks and get ready to code.</p>
<p>Hope this is of help to someone who might get confused with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/blog/2008/05/fix-fdt-as2-corelib-missing-mx-packaging/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cartoon Network&#8217;s ToonamiJetstream migrated to Flash Streaming Video</title>
		<link>http://www.kennybunch.com/blog/2008/04/cartoon-networks-toonamijetstream-migrated-to-flash-streaming-video/</link>
		<comments>http://www.kennybunch.com/blog/2008/04/cartoon-networks-toonamijetstream-migrated-to-flash-streaming-video/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 15:15:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=80</guid>
		<description><![CDATA[Today we relaunched Cartoon Network's Toonami Jetstream video player using flash streaming video via FMS (it was previously Windows Media and Flash). The migration was pretty seamless minus a few small bumps. 
The main bump was the usage of Akamai's authorization abilities. For those unfamiliar with this, Akamai offers the ability to only allow video [...]]]></description>
			<content:encoded><![CDATA[<p>Today we relaunched Cartoon Network's <a href="http://www.toonamijetstream.com">Toonami Jetstream video player</a> using flash streaming video via FMS (it was previously Windows Media and Flash). The migration was pretty seamless minus a few small bumps. </p>
<p>The main bump was the usage of Akamai's authorization abilities. For those unfamiliar with this, Akamai offers the ability to only allow video plays with an auth token (aka you can't request video unless you know the secret password Charlie). The bump really was in how this is implemented by Akamai for VOD. Akamai does an auth on socket connection vs on stream request. This means when going from video to video, you are tearing down a connection each time. This is expensive and also causes delays for setting up and playing the stream. Worse, if you were wanting to switch streams (think high quality to low quality) on the fly, you would be starting over vs just switching and buffering. You aren't able to reuse the connection, which contrast to how typical implementations work, creating a branch in logic for this specific instance. Oddly, their live implementation works based on stream requests, so why not their VOD? Regardless it is easy to resolve, but not my cup of tea.</p>
<p>As we move towards FMS 3 and SWF verification (only allowing a specific SWF on a specific domain to make requests), I recommend moving away from auth towards this type of verification. The reasoning behind this, is that SWF verification could be transparent across CDNs, while the current auth implementation is very CDN specific. It also protects you from someone figuring out your auth keys. </p>
<p>All that said, it's nice to see that all of Cartoon Network's video players have now been migrated over to a more flexible format.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/blog/2008/04/cartoon-networks-toonamijetstream-migrated-to-flash-streaming-video/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Express Install with AS2 and AS3</title>
		<link>http://www.kennybunch.com/blog/2008/04/express-install-with-as2-and-as3/</link>
		<comments>http://www.kennybunch.com/blog/2008/04/express-install-with-as2-and-as3/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 18:31:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=78</guid>
		<description><![CDATA[One of the developers over at Vimeo emailed me asking how to use the Express Install option with the Flash player if they were using AS3. For those unaware of the Express Install option, it is the capability of the Flash player to update to a new Flash player version inline on a webpage vs [...]]]></description>
			<content:encoded><![CDATA[<p>One of the developers over at <a href="http://www.vimeo.com">Vimeo</a> emailed me asking how to use the <a href="http://www.adobe.com/devnet/flashplayer/articles/express_install.html">Express Install option with the Flash player</a> if they were using AS3. For those unaware of the <a href="http://www.adobe.com/devnet/flashplayer/articles/express_install.html">Express Install option</a>, it is the capability of the Flash player to update to a new Flash player version inline on a webpage vs downloading and installing it.  After looking at the question, I realized there may be some confusion around this topic, since most people implement it but regard it's implementation as voodoo magic. So I felt like I would answer the question and debunk the voodoo a little.</p>
<p><strong>What are the Guts of Express Install?</strong><br />
First, how does Express Install work? It's pretty basic and not something a NASA engineer needs to look at.  Essentially you are loading in a SWF from Adobe that then does all the work and tells you it's status. Your host swf needs to be at least 215 x 138 pixels and the option only works in players 6r65 and above. The SWF you are loading is located at</p>
<p><a href="http://fpdownload.macromedia.com/pub/flashplayer/update/current/swf/autoUpdater.swf">http://fpdownload.macromedia.com/pub/flashplayer/update/current/swf/autoUpdater.swf</a></p>
<p>This SWF is considered loaded when it's startUpdate function is defined. At that point, you can define MMplayerType, MMdoctitle, and redirectURL on it and call it's startUpdate function, and it will begin it's process. During this process it will report back to a function installStatus that you define on your root (with the following codes "Download.Complete", "Download.Cancelled", and "Download.Failed").</p>
<p><strong>What are the options with Express Install?</strong><br />
Now you can handle this one of two ways, implementing the logic to do the update in your own application or use an updater swf that is a proxy or prerequisite for your application swf (when needed). If you were to go with the first option, you are baking the code to do the update in your application. AKA, bad choice because isn't that the whole point? Your application is using a version of  the player that you need to update to.  In previous AS1/AS2 cases the code is fine and could still run, but it's somewhat defeating the purpose. However, in the case of AS3, no chance to collect cash and get out of jail, you are stuck.</p>
<p><strong>The proper Express Install</strong><br />
The proper way to do this is option 2, using a SWF whose sole purpose is to do the update. Luckily, about 99% of the web is using SWFObject (whether <a href="http://blog.deconcept.com/swfobject">1.*</a> or <a href="http://code.google.com/p/swfobject/">2</a>) and this is built in for your comfort and joy. With both implementations (which use Javascript to embed a SWF), you just define your Express Install SWF and you are good to go. In addition, you are given the source of the SWF to manipulate if you are feeling fancy. What SWFObject then does is run through a series of steps based on the version of player you have installed.</p>
<p>1. Runs a JS detect to see if you have the version needed.<br />
Yes, it writes out the content SWF.<br />
No, is there an Express SWF and the player is above 6r65<br />
No, write out Alternative content</p>
<p>2. Yes, embed Express SWF, which then runs through it's process<br />
Express SWF is successful, it calls back to the JS</p>
<p>3. JS writes out the content SWF</p>
<p><strong>Summary</strong><br />
Ok, so all that said, let's summarize. Key point, SWFObject does everything you need to do. If you want to implement it yourself, just implement the same logic that SWFObject uses. SWFObject uses a separate SWF which is published as AS2 and can be used in previous players. You don't embed any Express Install logic in your app and just let the installer SWF handle the magic for you. It has the logic which can step into your content once it is done. Hope this help with anyone that may be confused by this process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/blog/2008/04/express-install-with-as2-and-as3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CNN Delegate Tracker</title>
		<link>http://www.kennybunch.com/blog/2008/04/cnn-delegate-tracker/</link>
		<comments>http://www.kennybunch.com/blog/2008/04/cnn-delegate-tracker/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 14:17:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=77</guid>
		<description><![CDATA[A few days of work, delivered 5 months ago, a lot of waiting , and the delegate tracker I did for CNN has finally seen the light of day
Democrate Delegates
Republican Delegates
The module allows you to view a graphical representation of the delegate "race" between candidates for either party. I'm pretty big on usability and information [...]]]></description>
			<content:encoded><![CDATA[<p>A few days of work, delivered 5 months ago, a lot of waiting , and the delegate tracker I did for CNN has finally seen the light of day</p>
<p><a href="http://www.cnn.com/ELECTION/2008/primaries/results/scorecard/#D">Democrate Delegates</a><br />
<a href="http://www.cnn.com/ELECTION/2008/primaries/results/scorecard/#R">Republican Delegates</a></p>
<p>The module allows you to view a graphical representation of the delegate "race" between candidates for either party. I'm pretty big on usability and information display, and I think it was a little tricky from an informational standpoint, since the way delegates are gained, lost, and solidified over time. In order to make it clear to the user, only the delegates that were considered solid were used as plot points. The "unsure" delegates are listed in the mouse overs. So overall I think the information is decently portrayed.</p>
<p>In retrospect, one criticism I have is the iconography used. All of the candidates are represented by their parties mascot (donkey or elephant). This doesn't make sense unless you are comparing 2 entities of different parties. A better icon for the graph would have been an image of the candidate, since they are the entity that is physically in the race. Another criticism is the actual style guide of interface elements (up, over, disabled states).  Needless to say, the designer working on the project had an issue with it too. A lot of the elements look disabled when they are selected, enabled when disabled, etc. All that said, I think the module turned out great, but I think the taste is sometimes when all the details match up.</p>
<p>One thing we did do to jazz up the module with a bit of flair was to add the ability to scale the graph and animating the icons from point to point. Like with design, it's sometimes the little things that make and application more pleasurable and fun to use.</p>
<p><a href="http://www.cnn.com/ELECTION/2008/primaries/results/scorecard/#D">Check it out</a>, let me know what you think, and remember to pay attention to the details on your projects, it all adds up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/blog/2008/04/cnn-delegate-tracker/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NBA Allstar Live app with Video blitting</title>
		<link>http://www.kennybunch.com/blog/2008/04/nba-allstar-live-app-with-video-blitting/</link>
		<comments>http://www.kennybunch.com/blog/2008/04/nba-allstar-live-app-with-video-blitting/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 16:57:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=76</guid>
		<description><![CDATA[
// --&#62;

Watch the Demo
At NAB (national association of broadcasters) this week, Akamai and NBA.com are showing off a live video app that Dreamsocket developed for the Final Four. The application they are showing is basic, a video mosaic that allows you switch camera feeds during the live event by clicking sections of the mosaic or [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
function embedSWF()
{
swfobject.embedSWF("/projects/nba/allstar_mosaic/VideoMosaic.swf", "mosaic", "350", "318", "8.0.0", "/swf/expressInstall.swf", {videoURL:"dotcom_mosaic.tsi_512x288_700k.flv"}, {bgcolor: "#ffffff"}, {});
}
// -->
// --&gt;</script></p>
<div id="mosaic"><a href="javascript:embedSWF();" ><img src="/projects/nba/allstar_mosaic/nba_mosaic.gif" border="0" alt="" width="350" height="318" /></a></div>
<p><a href="javascript:embedSWF();">Watch the Demo</a></p>
<p>At <a href="http://www.nab.org">NAB (national association of broadcasters)</a> this week, Akamai and NBA.com are showing off a live video app that Dreamsocket developed for the Final Four. The application they are showing is basic, a video mosaic that allows you switch camera feeds during the live event by clicking sections of the mosaic or buttons. I developed that app in a blink, but what I'd really like to show is the prototype.  The prototype actually used a single mosaic feed, which it spliced and then blitted to the screen.</p>
<p>So what do I mean by blitting video? For those not familiar with the concept, instead of letting the video just "show" on the screen, you actually capture the video and cut sections of it and then render them where and how you want them. In the case of the NBA mosaic, the mosaic video was a single video that had 4 different views in it. The broadcaster combined all 4 into the same picture and broadcast that video (you see this in the news sometimes). When I received the video, before I "showed" it, I cut it up and then placed it into pieces I wanted. What this allowed me to do is have the mosaic be 4 interactive elements that the user could zoom in and out of them in real time. Since I could have as many duplicates of the video parts that I wanted, I was able to use each video section in the actual buttons as well. This gave real time views of each section.</p>
<p>So technically and visually, the concept is pretty cool. However, it is interesting that it has some actual benefits as well. You can't achieve the interactivity another way without opening all 4 feeds at once, which is expensive on the server, the bandwidth, and client machine (aka not feasible).  By opening a single feed, you are consuming only the bandwidth for one stream, you are never hit with the delay of switching a stream, your feeds are never out of sync, and you have full control over manipulating the entire mosaic.</p>
<p>Are there downfalls? Yes, there are. For one, this is only possible with video whose rights you have to script. In the case of using FMS, you need FMS3 and the server  must allow you to capture the video's pixels in it's application script (p_client.videoSampleAccess = "/";) or via it's <a href="http://livedocs.adobe.com/flashmediaserver/3.0/docs/08_xmlref_168.html">configuration</a>. The other downfall is that because you have 4 videos in one, each individual video's quality is a lower because your are zooming a smaller space.</p>
<p>All that said, this is an interesting concept that has a lot of different ways you could take it. Love to hear people's thoughts and ideas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/blog/2008/04/nba-allstar-live-app-with-video-blitting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Aqua Teen Movie online at AdultSwim.com</title>
		<link>http://www.kennybunch.com/blog/2008/04/aqua-teen-movie-online-at-adultswimcom/</link>
		<comments>http://www.kennybunch.com/blog/2008/04/aqua-teen-movie-online-at-adultswimcom/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 17:35:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=75</guid>
		<description><![CDATA[I mentioned this in the last post, but I think it deserves it's own post. The entire Aqua Teen movie is online at adultswim.com. Go catch it while you can. Much thanks to everyone at AS for doing that!
]]></description>
			<content:encoded><![CDATA[<p>I mentioned this in the last post, but I think it deserves it's own post. The <a title="Aqua Teen Movie" href="http://www.adultswim.com/video/?episodeID=8a25c39218ef7fa20118f1ed230c009b">entire Aqua Teen movie is online at adultswim.com</a>. Go catch it while you can. Much thanks to everyone at AS for doing that!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/blog/2008/04/aqua-teen-movie-online-at-adultswimcom/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Adult Swim Video adds Relateds</title>
		<link>http://www.kennybunch.com/blog/2008/04/adult-swim-video-adds-relateds/</link>
		<comments>http://www.kennybunch.com/blog/2008/04/adult-swim-video-adds-relateds/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 17:26:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=74</guid>
		<description><![CDATA[Last week, we rolled a small update to Adult Swim Video. The update included some minor visual updates to keep things looking freshy fresh, but also added a couple of feature additions.
The major additional feature that we added was related videos to a video's detail section. When adding this, we actually didn't have a true [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, we rolled a small update to <a title="Adult Swim video" href="http://www.adultswim.com/video/">Adult Swim Video</a>. The update included some minor visual updates to keep things looking freshy fresh, but also added a couple of feature additions.</p>
<p>The major additional feature that we added was related videos to a video's detail section. When adding this, we actually didn't have a true "relateds" service, so I build it based on context. Essentially if you are browsing a section, you are looking at a video in context, so I grabbed those videos from that context. If you are deeplinking to a video, I request the first 'N' videos in that video's collection. It is a simple solution, but what I'd like to see is a more user driven symbolic relationship. Regardless, it works for now ;).  The great thing about the current setup, is that if you go into the What's new section or say Aqua Teen Hunger force, you will see all of the surrounding videos in your relateds, which allows you to select them without jumping back to browse. This also brings up another feature, continuous play.</p>
<p>Continuous play is tied somewhat tied to relateds and is what actually gives it worth. At first you might think it seems pretty lame, because you are using an ondemand application. However, what you have to realize is that the application is essentially keeping the related playlist in memory. This allows you to go fullscreen and just keep watching one item after another passively or jumping to next items manually. Also, if you find it annoying you can just toggle it off.</p>
<p>There are some other subtle changes, but I've bored you enough,  go check out the <a title="AquaTeen Movie" href="http://www.adultswim.com/video/?episodeID=8a25c39218ef7fa20118f1ed230c009b">AquaTeen movie while they have it up</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/blog/2008/04/adult-swim-video-adds-relateds/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BUG: onPress Fullscreen AS2 published as Flash9</title>
		<link>http://www.kennybunch.com/blog/2008/03/bug-onpress-fullscreen-as2-published-as-flash9/</link>
		<comments>http://www.kennybunch.com/blog/2008/03/bug-onpress-fullscreen-as2-published-as-flash9/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 03:58:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/2008/03/bug-onpress-fullscreen-as2-published-as-flash9/</guid>
		<description><![CDATA[Working on a project today, I realized some very strange behavior when going fullscreen in Flash. Everytime I went fullscreen, the player would continue to have a mouse over state until I clicked to activate it again. At first I thought maybe I'm setting a button, sizing it oddly, or something to that effect. However [...]]]></description>
			<content:encoded><![CDATA[<p>Working on a project today, I realized some very strange behavior when going fullscreen in Flash. Everytime I went fullscreen, the player would continue to have a mouse over state until I clicked to activate it again. At first I thought maybe I'm setting a button, sizing it oddly, or something to that effect. However after further investigation, what appeared to  actually be happening was the player didn't seem to be registering the system's mouse up event. With that in mind, I knew that the onPress event was my fire starter, and could do a simplified test. However, the odd thing about this behavior is that it only occurred when publishing as Flash 9/AS2. If I published as Flash 8/AS2, it worked like a charm.  So this is a heads up to everyone which may prevent some hair pulling.</p>
<p>If you want to test it yourself, just create a simple button called fullscreen_btn and add the following code to your fla (publish as Flash 9/AS2)</p>
<div class="syntax_hilite">
<div id="actionscript-4">
<div class="actionscript">fullscreen_btn.<span style="color: #0066CC;">onPress</span> = <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span>p_evt:<span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #0066CC;">Stage</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">"displayState"</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Stage</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">"displayState"</span><span style="color: #66cc66;">&#93;</span> != <span style="color: #ff0000;">"fullScreen"</span><span style="color: #66cc66;">&#41;</span>? <span style="color: #ff0000;">"fullScreen"</span> : <span style="color: #ff0000;">"normal"</span>;<br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/blog/2008/03/bug-onpress-fullscreen-as2-published-as-flash9/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
