<?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>ArKaos Blog &#187; video</title>
	<atom:link href="http://www.arkaos.net/blog/tag/video/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.arkaos.net/blog</link>
	<description>The corporate blog of ArKaos, a leader in technology for live visual performances.</description>
	<lastBuildDate>Tue, 15 Nov 2011 09:06:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>MediaMaster latency test on the A10 Media Server</title>
		<link>http://www.arkaos.net/blog/2010/04/tips/mediamaster-latency-test-on-a10-media-server/</link>
		<comments>http://www.arkaos.net/blog/2010/04/tips/mediamaster-latency-test-on-a10-media-server/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 14:10:28 +0000</pubDate>
		<dc:creator>niedle</dc:creator>
				<category><![CDATA[Hints & Tips]]></category>
		<category><![CDATA[mediamaster]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[synchronization]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.arkaos.net/blog/?p=1176</guid>
		<description><![CDATA[On the support, we sometimes have to answer questions about the latency between the live input and output on computers running MediaMaster. Here is a test we made to measure how many frames are needed to process a live input on an ideal setup.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1181" title="ArKaos A10 Media Server" src="http://www.arkaos.net/blog/wp-content/uploads/2010/04/A10-0030.jpg" alt="ArKaos A10 Media Server" width="240" height="108" />On the support, we sometimes have to answer questions about the latency between the live input and output on computers running <a title="ArKaos MediaMaster:DMX video software for lighting designers" href="http://www.arkaos.net/show-lighting/mediamaster/" target="_blank">MediaMaster</a>. We know this a concern for most users but actually, there&#8217;s no straight answer since the amount of latency you will get will depend on a lot of different hardware and software parameters and therefore will vary depending on your own setup.</p>
<p>In a perfect world, we would have zero frame delay but unfortunately this is not possible with current computer hardware; the simple fact that a computer is processing video already adds one frame of input delay, that frame is needed for the computer to store the complete image before having it processed by the video card. Then you can add another frame of output delay, caused by the video card processing the image. Before or after that, each device that is added to the pipeline &#8211; such as a camera, a mixer, a LED controller or a projector &#8211; will add some delay into the processing. In the end, if the delay becomes too big you will notice that the sound and the video are out of sync, for example you will hear the voice of the speaker before his lips start moving on the screen.</p>
<p>If we cannot tell what the latency will be with your setup, we can however provide you with a point of comparison by measuring how many frames are needed to process a live input on an ideal setup: <a title="ArKaos MediaMaster:DMX video software for lighting designers" href="http://www.arkaos.net/show-lighting/mediamaster/" target="_blank">MediaMaster</a> running on one of our <a title="Media Server, Stage computer, pixel mapper, DMX computer, DMX server" href="http://www.arkaos.net/show-lighting/mediaservers/" target="_blank">A10 Media Servers</a> that are specially built and configured to get the most out of our software.<span id="more-1176"></span></p>
<p align="center"><script type='text/javascript' src='http://www.arkaos.net/blog/wp-content/plugins/hana-flv-player/flowplayer3/example/flowplayer-3.2.6.min.js'></script>
<div >
<div id='hana_flv_flow3_1' style='display:block;width:640px;height:360px;' title="*Video:mediamaster latency test on the a10 media server"></div>
</div>

			<script  type='text/javascript'>
		flowplayer('hana_flv_flow3_1', { src: 'http://www.arkaos.net/blog/wp-content/plugins/hana-flv-player/flowplayer3/flowplayer-3.2.7.swf', wmode: 'transparent' }, { 

    		clip:  { 
    			url: 'http://www.arkaos.net/blog/wp-content/uploads/2010/04/A10_latency_1.flv',
        		scaling: 'scale', autoPlay: false, autoBuffering: true 
				   , onFinish : function () { this.seek(0); } 
	        }

		}); 
			</script>
			 </p>
<p>Here is how we proceeded: we&#8217;ve setup a MacBook Pro with DVI/HDMI output connected to the Blackmagic Intensity Pro input card from the <a title="Media Server, Stage computer, pixel mapper, DMX computer, DMX server" href="http://www.arkaos.net/show-lighting/mediaservers/" target="_blank">A10 Media Server</a> which was set to an input resolution of 720P 60Hz. Then we started a frame counter movie on the MacBook Pro and launched the live input from <a title="ArKaos MediaMaster:DMX video software for lighting designers" href="http://www.arkaos.net/show-lighting/mediamaster/" target="_blank">MediaMaster</a> full screen on the <a title="Media Server, Stage computer, pixel mapper, DMX computer, DMX server" href="http://www.arkaos.net/show-lighting/mediaservers/" target="_blank">A10 Media Server</a>. Finally, we put the monitors next to each other and took a picture so we can see the difference between the frame counter on both screens.</p>
<p>As you can see in the movie, when we took the picture the MacBook Pro was at frame count 24429 and the output of the <a title="Media Server, Stage computer, pixel mapper, DMX computer, DMX server" href="http://www.arkaos.net/show-lighting/mediaservers/" target="_blank">A10 Media Server</a> was at 24424: there is a 5 frames delay between the counter from the laptop and the counter from the server. Since our whole setup was running at 60Hz, this means that the processing delay equals 83 milliseconds (1 second divided by 60 frames = 16.6 milliseconds per frame, 5 times 16.6 milliseconds equals 83 milliseconds).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arkaos.net/blog/2010/04/tips/mediamaster-latency-test-on-a10-media-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the right decoder for your video content</title>
		<link>http://www.arkaos.net/blog/2009/12/tips/using-the-right-decoder-for-your-video-content/</link>
		<comments>http://www.arkaos.net/blog/2009/12/tips/using-the-right-decoder-for-your-video-content/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 16:35:29 +0000</pubDate>
		<dc:creator>FraKtus</dc:creator>
				<category><![CDATA[Hints & Tips]]></category>
		<category><![CDATA[codec]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[grandvj]]></category>
		<category><![CDATA[mediamaster]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.arkaos.net/blog/?p=933</guid>
		<description><![CDATA[To get the most out of GrandVJ or MediaMaster, benefit from the advantages of multi threading and perform frame blending you should make sure that your content is always played through the best decoder.]]></description>
			<content:encoded><![CDATA[<div style="text-align: left;"><img class="alignright size-full wp-image-948" title="ffmpeg" src="http://www.arkaos.net/blog/wp-content/uploads/2009/12/ffmpeg.png" alt="ffmpeg" width="235" height="75" /></div>
<p>One thing that appears obvious to us after more than 10 years of working with the various solutions that can be used on Mac and Windows to decompress video is that not all solutions are equal.</p>
<p>We believe that our users should be able to play almost any kind of media with the ArKaos software and at the same time we do everything a team of developer can to get the best performance on the platforms supported.</p>
<p>Practically the ArKaos software can play media files through the following decoders: QuickTime, FFmpeg, the Flash plugin, Quartz Composer and Windows Media Player. Currently (December 2009) we don&#8217;t allow the user to decide through which solution a media will be decoded, instead we try to make the best decision based on our many years of experience and tests. In the case where several video codecs (such as Mpeg4) can be played through different decoders like QuickTime, FFmpeg and Windows Media Player, we always prefer, no matter the platform, to first try to handle those codecs with FFmpeg as we have always had the best results with FFmpeg during our tests, and here&#8217;s why..<span id="more-933"></span></p>
<h5>The other solutions..</h5>
<p>Of course, on the Mac we could stick to QuickTime.. But sadly it appears that QuickTime has become almost obsolete today and is just used to decompress the codecs needed by the iPods. Most codecs are not properly multi threaded in QuickTime and this is a big problem for us. With GrandVJ or MediaMaster taking advantage of multi core machines by using each core separately to decompress the video layers you are mixing, it&#8217;s too bad to miss that great improvement by playing videos that absolutely need the QuickTime support.</p>
<p>On the PC we could be using Windows Media Player, it is a wonderful technology but it&#8217;s architecture is completely incompatible with the sophisticated engine we use to allow frame blending and frame prediction in the latest version of <a title="GrandVJ - Eight channels VJ software for real time HD video mixing" href="http://www.arkaos.net/vj-dj/grandvj/" target="_blank">GrandVJ</a> and <a title="MediaMaster - DMX video software for lighting designers" href="../../show-lihting/mediamaster/" target="_blank">MediaMaster</a>.</p>
<p>Flash animations and Quartz Compositions, of course, are unique in the sense that they can only be read by their own dedicated player.</p>
<p>As you now understand, once you open a media file in ArKaos your content can go through various roads and it&#8217;s important to consider that. To get the most out of <a title="GrandVJ - Eight channels VJ software for real time HD video mixing" href="../../vj-dj/grandvj/" target="_blank">GrandVJ</a> or <a title="MediaMaster - DMX video software for lighting designers" href="../../show-lihting/mediamaster/" target="_blank">MediaMaster</a>, benefit from the advantages of multi threading and perform frame blending you should make sure that your content is always played through FFmpeg.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-938" title="ArKaosAnimationProcessing" src="http://www.arkaos.net/blog/wp-content/uploads/2009/12/ArKaosAnimationProcessing.png" alt="ArKaosAnimationProcessing" width="576" height="432" /></p>
<h5>How does ArKaos process the movie file?</h5>
<p>On the Windows platform it&#8217;s pretty easy because the software first tries to play a file with the FFmpeg player and then falls back to the others (Windows Media Player or QuickTime) if needed.</p>
<p>But things get harder with the Mac platform because some files that could be played by FFmpeg may be rejected and fall back to QuickTime just because they have not been saved the correctly. Many QuickTime files have been created in a way that make them compatible with Mac OS X but also it&#8217;s ancestors Mac OS 9 and 8 and 7 and&#8230; Those files make use of what is called a Resource Fork.</p>
<p>To make it short, when Apple introduced the Macintosh years ago they decided that a single file would in fact be two files: the data file itself and an optional resource file. Many software have been using that Resource Fork to store additional data and information. This is now a problem for many .mov files that were created in the past and even still today with some applications that were born under the Mac OS 9 era and still generate QuickTime .mov files that have a Resource Fork.</p>
<p>This is quiet an issue for us because when the FFmpeg decoder can&#8217;t handle those files and makes ArKaos fall back to QuickTime, you end with QuickTime&#8217;s very bad multi core support even for very common codecs such as Photo JPEG. Another bad side effect of this Resource Fork is that most of the time when you will copy a movie file that has a Resource Fork to a Windows or Linux machine it will simply not be readable anymore because that tiny bit of information contained in the Resource Fork is not read on other platforms although it is vital to play the content.</p>
<h5>How to get rid of the Resource Fork?</h5>
<p>Thankfully it&#8217;s very easy to remove that annoying Resource Fork from a QuickTime file. You can simply open the file in today&#8217;s QuickTime player and do a &#8220;Save As&#8221;, QuickTime will reprocess the file correctly. The process is called &#8220;flattening&#8221; a movie file, it is very fast and will not re-compress your movie, this is very important to avoid re-compressing when possible.</p>
<p style="text-align: center;">Open your file in QuickTime and go to File, Save As..</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-940" title="SlowRainSaveAs1" src="http://www.arkaos.net/blog/wp-content/uploads/2009/12/SlowRainSaveAs1.png" alt="SlowRainSaveAs1" width="520" height="394" /></p>
<p style="text-align: center;">.. and enter a new name</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-941" title="SlowRainSaveAs2" src="http://www.arkaos.net/blog/wp-content/uploads/2009/12/SlowRainSaveAs2.png" alt="SlowRainSaveAs2" width="513" height="470" /></p>
<p>Of course, you will only need to do that if your file was created on a Mac, the free version of the QuickTime player is enough to do this and it works on all Mac OS X versions up to Snow Leopard with the latest QuickTime player. Now if you have lots of movie files to convert, you can of course look for some professional software that can queue and &#8220;flatten&#8221; a bunch of files from a directory.</p>
<p style="text-align: center;">FYI, here is a QuickTime file that has a Resource Fork (moov), inspected with a programming utility called Resorcerer:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-942" title="SlowRainWithRes" src="http://www.arkaos.net/blog/wp-content/uploads/2009/12/SlowRainWithRes.png" alt="SlowRainWithRes" width="419" height="209" /></p>
<p style="text-align: center;">And here is the same file that has been flattened:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-943" title="SlowRainFlat" src="http://www.arkaos.net/blog/wp-content/uploads/2009/12/SlowRainFlat.png" alt="SlowRainFlat" width="418" height="209" /></p>
<h5>How do I know what decoder is used?</h5>
<p>In <a title="GrandVJ - Eight channels VJ software for real time HD video mixing" href="../../vj-dj/grandvj/" target="_blank">GrandVJ</a> it&#8217;s very easy to see what player is used by the ArKaos engine when processing a file; simply hover your mouse over the cell that contains the video and the contextual help appears.</p>
<p style="text-align: center;">In this one, the video file with a resource fork will be played through QuickTime:</p>
<p style="text-align: center;">
<div id="attachment_944" class="wp-caption aligncenter" style="width: 325px"><img class="size-full wp-image-944" title="GrandVJ-QT" src="http://www.arkaos.net/blog/wp-content/uploads/2009/12/GrandVJ-QT.png" alt=" " width="315" height="206" /><p class="wp-caption-text"> </p></div>
<p style="text-align: center;">In this one, the same video flattened with the QuickTime player will go through the FFmpeg path:</p>
<p style="text-align: center;">
<div id="attachment_945" class="wp-caption aligncenter" style="width: 429px"><img class="size-full wp-image-945" title="GrandVJ-FFmpeg" src="http://www.arkaos.net/blog/wp-content/uploads/2009/12/GrandVJ-FFmpeg.png" alt=" " width="419" height="225" /><p class="wp-caption-text"> </p></div>
<p style="text-align: center;">(The same information is also available in <a title="GrandVJ - Eight channels VJ software for real time HD video mixing" href="../../vj-dj/grandvj/" target="_blank">GrandVJ</a> for each movie listed in the visual library and in <a title="MediaMaster - DMX video software for lighting designers" href="../../show-lihting/mediamaster/" target="_blank">MediaMaster</a> you can get that information from the file library window.)</p>
<h5 style="text-align: left;">Conclusion</h5>
<p style="text-align: left;">During the first days of the release of <a title="GrandVJ - Eight channels VJ software for real time HD video mixing" href="../../vj-dj/grandvj/" target="_blank">GrandVJ</a> 1.2 beta 3 with the new audio engine (which relies on FFmpeg) some users have complained that some old .mov files were not playing audio correctly with the beta version, this was most of the time caused by the Resource Fork and flattening the files fixed the problem. As a bonus, it will make your files cross platform.</p>
<p style="text-align: left;">This should give you some lights on what is happening when you drop a file on <a title="GrandVJ - Eight channels VJ software for real time HD video mixing" href="../../vj-dj/grandvj/" target="_blank">GrandVJ</a> or <a title="MediaMaster - DMX video software for lighting designers" href="http://www.arkaos.net/show-lihting/mediamaster/" target="_blank">MediaMaster</a>, as you can see a lot of work is being done under the hood :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arkaos.net/blog/2009/12/tips/using-the-right-decoder-for-your-video-content/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Showing the extreme&#8230;</title>
		<link>http://www.arkaos.net/blog/2009/08/engineering/showing-the-extreme/</link>
		<comments>http://www.arkaos.net/blog/2009/08/engineering/showing-the-extreme/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 13:43:59 +0000</pubDate>
		<dc:creator>nostromo</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mediamaster]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.arkaos.net/blog/?p=481</guid>
		<description><![CDATA[Last couple of month, we've been working very intensively on the new release of MediaMaster. One of our goals for this release was to improve radically our engine to be able to run a couple of movies at monitor rate with no frame drops. 60 fps that is. And we did it.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-377" title="MediaMaster media server software" src="http://www.arkaos.net/blog/wp-content/uploads/2009/08/mediamaster-black.gif" alt="MediaMaster media server software" width="174" height="75" />There&#8217;s a certain point where it becomes very hard to demonstrate to a large audience what you do. As we strive towards the limits of the extreme, it becomes more and more difficult to demonstrate in a simple way the results of our work.</p>
<p>Last couple of month, we&#8217;ve been working very intensively on the new release of MediaMaster (version 1.1 &#8211; which should be out very soon). One of our goals for this release was to improve radically our engine to be able to run a couple of movies at monitor rate with no frame drops.</p>
<p>60 fps that is.</p>
<p>And we did it.</p>
<p>This means that you will be able &#8211; of course depending on the computer and the movies you are displaying &#8211; to run movies perfectly locked to the monitor sync.</p>
<p>The result is brilliant &#8211; even for movies at 30 fps &#8211; because your eye directly catches the smoothness of the playback.</p>
<p>But let&#8217;s go back to the beginning of our article. How do you show that ? If we want to show you a smooth 60fps stream, every step of the chain needs to be perfect.</p>
<p><span id="more-481"></span></p>
<p>The first step is to be able to capture the stream. We have a couple of BlackMagic cards that allow us to record the dvi output from one computer to another, but it&#8217;s always a bit of a bummer to setup since we don&#8217;t do that on a regular bases.</p>
<p>Enter <a href="http://www.fraps.com/" target="_blank">Fraps</a>. Fraps is the essence of programs I love. They&#8217;re simple, possibly ugly, but work like a charm. It&#8217;s been originally mentioned on our <a href="http://forum.arkaos.net/viewtopic.php?t=6092" target="_blank">forum</a> by <a href="http://www.blindskunk.com/" target="_self">Blindskunk</a> and I have to say I&#8217;m deeply impressed.</p>
<p style="text-align: center; "><img class="alignnone size-full wp-image-509" src="http://www.arkaos.net/blog/wp-content/uploads/2009/08/fraps1.jpg" alt="fraps" width="400" height="300" /></p>
<p>Fraps is a Windows-only program. It hooks to directX and records full screen output. It&#8217;s fast, and it works. Just what you want.</p>
<p>So here we are, on a fairely beefed up machine, running at the same time MediaMaster who&#8217;s pumping movie pixels at 60 fps (1024&#215;768) and fraps which catches it &#8211; also at 60 fps &#8211; and we don&#8217;t loose one single frame. How amazing ?</p>
<p>The next step is of course how do we display this to you guys ? We&#8217;ve tried a couple of flash-based solution and none of them worked. We tried YouTube, Vimeo, standelone player and they all failed miserably&#8230; so in the end we decide to use good ol&#8217;QuickTime.  Click on the image below to view a reduced version of the file.</p>
<p style="text-align: center;"><a href="http://www.arkaos.net/blog/wp-content/uploads/2009/08/MediaMaster60fps.mov" rel="shadowbox[sbpost-481];width=640;height=385;"><img class="size-full wp-image-499 aligncenter" src="http://www.arkaos.net/blog/wp-content/uploads/2009/08/mmaster.jpg" alt="mmaster" width="512" height="399" /></a></p>
<p style="text-align: center;">
<p>For people that don&#8217;t have an efficient QuickTime Player, or want to see the thing in all of it&#8217;s glory, you can download a <a href="ftp://www.arkaos.net/pub/Support/MediaMaster.flv">full size (22 mb) version</a> in flv format. We recommend you to play it with <a title="VLC Media Player" href="http://www.videolan.org/" target="_blank">VLC</a>, it&#8217;s really smooth with it.</p>
<p>This movie is running two layers. The first one (the speakers) is a 30 FPS 1920&#215;1080 movie loop from our friends at <a href="http://www.motionloops.com/" target="_blank">MotionLoops</a>. The second one is a relatively lightwheight curtain swipe running at 60 FPS. The thing is that with that swipe, if you loose one frame, you see it directly.</p>
<p>Note also that if your monitor frequency isn&#8217;t at 60 fps, you will see glitches. At that rate, ALL the elements have to be perfectly tuned.</p>
<p>As you can see, the output is as smooth as the pie for which that town was named after&#8230;</p>
<p>Thanks <a href="http://www.fraps.com/" target="_blank">Fraps</a> people !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arkaos.net/blog/2009/08/engineering/showing-the-extreme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.arkaos.net/blog/wp-content/uploads/2009/08/MediaMaster60fps.mov" length="3950268" type="video/quicktime" />
		</item>
		<item>
		<title>New video codec based on texture compression</title>
		<link>http://www.arkaos.net/blog/2009/07/engineering/codec-texture-compression/</link>
		<comments>http://www.arkaos.net/blog/2009/07/engineering/codec-texture-compression/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 15:06:34 +0000</pubDate>
		<dc:creator>FraKtus</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[codec]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[quicktime]]></category>
		<category><![CDATA[texture]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.arkaos.net/blog/?p=137</guid>
		<description><![CDATA[When it comes to media playback, at ArKaos we always fight to get the best out of current computer configuration.]]></description>
			<content:encoded><![CDATA[<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">When it comes to media playback, at ArKaos we always fight to get the best out of current computer configuration.</p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">When you are in the show industry and try to find out the best way to compress your content it’s still a little bit of black magic. While some codec are able to compress video very well they are heavy to handle for the machines, even more, the codec that does the best job at compressing while keeping a good quality such as H264 are very bad when you need to scratch your media.</p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">The best codec for users that need to interact a lot with the content should allow to play forward and backward easily and should allow to jump into the content quickly.</p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">Recently, I&#8217;ve heard about experiments with a file format designed by graphic card manufacturers and based on texture compression DXT1 DXT3 or DXT5 and I was wondering how hard it would be to add support for such a format to QuickTime through a new codec. Being programing for the QuickTime API since it’s version 1.0 beta I was considering the challenge fun and interesting.</p>
<p><span id="more-137"></span></p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">I started by resuscitating an old sample code from 1999 found on the Apple web site and after a few hours of coding and testing I had an ArKaos codec generating video files that could be played back by QuickTime.</p>
<div id="attachment_144" class="wp-caption aligncenter" style="width: 490px"><a href="http://www.arkaos.net/blog/wp-content/uploads/2009/07/qtplayer.jpg" rel="shadowbox[sbpost-137];player=img;"><img class="size-full wp-image-144 " src="http://www.arkaos.net/blog/wp-content/uploads/2009/07/qtplayer.jpg" alt="ArKaos codec in the QuickTime player" width="480" height="322" /></a><p class="wp-caption-text">ArKaos codec in the QuickTime player</p></div>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">Then I jumped on the DXT texture compression problem and chose to use the squish library to handle the job. A few more hours later and my experimental codec was working with texture compression.</p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">The codec when used by QuickTime at that point was not efficient because the texture decompression was done on the CPU, so there&#8217;s no advantage of using the GPU to handle that texture format.</p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">To measure the speed up I used an experimental player I am working on, and patched ffmpeg to handle my new codec. This allowed me to leave the texture data untouched and pass it to the GPU via the OpenGL extensions that handle texture compression.</p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">When this was done I could start enjoying the show and make some performance tests; in the table below the file size is in MB and CPU load is taken from running top in the console:</p>
<table border="1" width="100%">
<tbody>
<tr style="text-align: center;">
<td><strong>Name</strong></td>
<td><strong>Resolution</strong></td>
<td><strong>Data</strong></td>
<td><strong>H264</strong></td>
<td><strong>Photo JPEG</strong></td>
<td><strong>Dxt1</strong></td>
<td><strong>Dxt5</strong></td>
<td><strong>Dxt1 Compressed</strong></td>
<td><strong>Dxt5 Compressed</strong></td>
</tr>
<tr style="text-align: center;">
<td>Alternate Rotate DI</td>
<td>640*480</td>
<td>File Size</td>
<td>9,3</td>
<td>14,3</td>
<td>22</td>
<td>43,9</td>
<td>17,5</td>
<td>19,7</td>
</tr>
<tr style="text-align: center;">
<td></td>
<td></td>
<td>CPU Load</td>
<td>31</td>
<td>30</td>
<td>7</td>
<td>9</td>
<td>15</td>
<td>18</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr style="text-align: center;">
<td>1920 HD</td>
<td>1920*1080</td>
<td>File Size</td>
<td>36,5</td>
<td>41,8</td>
<td>90</td>
<td>180</td>
<td>55,7</td>
<td>63,8</td>
</tr>
<tr style="text-align: center;">
<td></td>
<td></td>
<td>CPU Load</td>
<td>99</td>
<td>95</td>
<td>13</td>
<td>22</td>
<td>42</td>
<td>56</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr style="text-align: center;">
<td>T25 Random Twirls</td>
<td>1280*720</td>
<td>File Size</td>
<td>35,9</td>
<td>73,2</td>
<td>65,9</td>
<td>131,8</td>
<td>51,5</td>
<td>58,4</td>
</tr>
<tr style="text-align: center;">
<td></td>
<td></td>
<td>CPU Load</td>
<td>78</td>
<td>72</td>
<td>10</td>
<td>16</td>
<td>32</td>
<td>41</td>
</tr>
</tbody>
</table>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">If you are curious about frame quality here is a crop from an original frame in Apple intermediate :</p>
<p style="margin: 0px; padding: 7px 0px; text-align: center;">
<div id="attachment_147" class="wp-caption aligncenter" style="width: 522px"><a href="http://www.arkaos.net/blog/wp-content/uploads/2009/07/frame-original.jpg" rel="shadowbox[sbpost-137];player=img;"><img class="size-full wp-image-147 " src="http://www.arkaos.net/blog/wp-content/uploads/2009/07/frame-original.jpg" alt="Original frame - Apple intermediate" width="512" height="384" /></a><p class="wp-caption-text">Original frame - Apple intermediate (click for full size)</p></div>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">Here is the same cropped frame using Dxt1 with texture compression:</p>
<div id="attachment_149" class="wp-caption aligncenter" style="width: 522px"><a href="http://www.arkaos.net/blog/wp-content/uploads/2009/07/frame-dxt1.jpg" rel="shadowbox[sbpost-137];player=img;"><img class="size-full wp-image-149 " src="http://www.arkaos.net/blog/wp-content/uploads/2009/07/frame-dxt1.jpg" alt="HD frame - Dxt1 compressed" width="512" height="384" /></a><p class="wp-caption-text">HD frame - Dxt1 compressed (click for full size)</p></div>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">And here is the same cropped frame with Dxt5 compression:</p>
<p style="margin: 0px; padding: 7px 0px; text-align: center;">
<div id="attachment_151" class="wp-caption aligncenter" style="width: 522px"><a href="http://www.arkaos.net/blog/wp-content/uploads/2009/07/frame-dxt5.jpg" rel="shadowbox[sbpost-137];player=img;"><img class="size-full wp-image-151 " src="http://www.arkaos.net/blog/wp-content/uploads/2009/07/frame-dxt5.jpg" alt="Same frame with Dxt5 compression" width="512" height="384" /></a><p class="wp-caption-text">Same frame with Dxt5 compression (click for full size)</p></div>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">So the results of these tests are that pure Dxt1 is the best format when it comes to CPU load, Dxt5 is better if you focus on quality but it generates files that are twice bigger. Actually, using Dxt1 I could have played 7 HD loops at the same time with my laptop … I mean, if hard drive&#8217;s data rate would&#8217;ve allowed it!</p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">The problem with pure Dxt5 or even Dxt1 files is that they are huge, about 4 times bigger than photo jpeg or H264 encoded files. So my workaround was to use data compression on the CPU, since it&#8217;s almost unused!</p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">To conclude, it looks like using Dxt1 with texture compression is the best solution to optimize both CPU and disk usage with a file size that is almost the same as Photo jpeg and a little bit bigger than H264. And the codec is still twice faster than any other codec I tested when using the CPU to decompress the texture data from disk.</p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">On my venerable old MacBook pro I can’t smoothly play a loop in Full HD and even at 1280*720 my machine is still struggling. Thanks to Dxt1 with texture compression I can play two HD layers and three 720p layers.</p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">Now I know you guys would like to play with this new toy so here&#8217;s a .dmg file with the test player I have used, along with a set of video loops. Beware that this dmg file is for Mac OS X x86 only (no Power PC): <a title="ArKaos Compressed Texture Demo" href="http://blog.fraktus.com/files/downloads/CompressedTextureDemo.dmg">and here&#8217;s the link</a></p>
<p style="padding-top: 7px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; margin: 0px;">You can be sure that we will bundle that new experimental codec in the next update of <a title="GrandVJ - VJ Software" href="http://www.arkaos.net/vj-dj/grandvj/" target="_blank">GrandVJ</a> and <a title="MediaMaster - Media Server Software" href="http://www.arkaos.net/show-lighting/mediamaster/" target="_blank">MediaMaster</a>, so everyone can enjoy it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arkaos.net/blog/2009/07/engineering/codec-texture-compression/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software performance analysis</title>
		<link>http://www.arkaos.net/blog/2009/06/tips/performance-analysis/</link>
		<comments>http://www.arkaos.net/blog/2009/06/tips/performance-analysis/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 12:33:07 +0000</pubDate>
		<dc:creator>nostromo</dc:creator>
				<category><![CDATA[Hints & Tips]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.arkaos.net/blog/?p=60</guid>
		<description><![CDATA[When your frame rate goes down, and the video starts lagging, it is important to be able to analyse where it can come from. Today we're going to look at some information we can use to troubleshoot this.]]></description>
			<content:encoded><![CDATA[<p>When your frame rate goes down, and the video starts lagging, it is important to be able to analyse where it can come from. Today we&#8217;re going to look at some information we can use to troubleshoot this.</p>
<p>Roughly, the way our application works is the following: at each pass, we read  a video frame from the disk if needed, decode it and then send it to the GPU (the Graphic card&#8217;s CPU) together with all blending and effect operations. Then we ask the graphic card to flush all operations (that is actually processing all pending graphical instructions) and present it to the display.</p>
<p><span id="more-60"></span>If you look at the bottom of the user interface window in either <a title="NuVJ Video Mixer" href="http://www.arkaos.net/vj-dj/nuvj/" target="_self">NuVJ</a>, <a title="ArKaos GrandVJ, VJ Software" href="http://www.arkaos.net/vj-dj/grandvj/" target="_self">GrandVJ</a> or <a title="MediaMaster, ArKaos media server software" href="http://www.arkaos.net/show-lighting/mediamaster/" target="_self">MediaMaster</a>, you will notice that there are two numbers constantly updated.</p>
<p>Something like:</p>
<blockquote><p>Graph: 400.00 Total: 60.00</p></blockquote>
<p>These numbers indicate the speed at which the engine does its rendering.</p>
<p>The numbers next to &#8221;Total&#8221; represents an average of the actual frame rate of the display. If you start the application&#8217;s fullscreen without any visuals, the total should give you the monitor&#8217;s frequency, which is the maximum frame rate you can ever achieve.</p>
<p>The numbers next to &#8221;Graph&#8221; will give you an indication of what the framerate would be if we only decoded the movie and send the graphic instruction to the graphic card without asking it to actually flush the instructions and update the display.</p>
<p>So unless you use a lot of heavy effects (like the rotozoom for example), the graph value is a rough reading on how heavy it is to decompress your loops.</p>
<p>From these indications you can conclude the following:</p>
<ul>
<li>If your framerate drops and but the &#8220;Graph&#8221; reading stays high, it&#8217;s most likely resolving the graphical output that is the bottleneck. Probably you run at a resolution that is too high for your graphical card or your card doesn&#8217;t cope well with downloading the textures back to central memory for preview display.</li>
<li>On the other hand, if both the graph and the total value go down, it&#8217;s most likely the movie decompression that is the bottleneck. Either you use a codec that isn&#8217;t effective (make sure all you videos are decoded through our FFMPEGplayer &#8211; preferably photoJPEG, mpeg2, H.264), or you are decoding to many movies for what your harddrive can cope with.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.arkaos.net/blog/2009/06/tips/performance-analysis/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ctrl Alt Shift : exploring VJ Culture</title>
		<link>http://www.arkaos.net/blog/2009/06/misc/documentary-vj-culture/</link>
		<comments>http://www.arkaos.net/blog/2009/06/misc/documentary-vj-culture/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 10:14:21 +0000</pubDate>
		<dc:creator>polanri</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[artist]]></category>
		<category><![CDATA[documentary]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[visuals]]></category>

		<guid isPermaLink="false">http://www.arkaos.net/blog/?p=54</guid>
		<description><![CDATA[Ctrl Alt Shift is a documentary exploring VJ Culture created by Dean G Moore &#038; Simon Lane from V.I.A – (Visually Impaired Artists).]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a very interesting found on Vimeo, Ctrl Alt Shift is a documentary exploring VJ Culture created by Dean G Moore &amp; Simon Lane from V.I.A – (Visually Impaired Artists).</p>
<p>It features  Interviews and Footage from The Light Surgeons, D-Fuse, Hexstatic, Vj Anyone, Addictive TV, Vector Meldrew and Fatamorgana.</p>
<p style="text-align: center; "><object width="640" height="480"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4676745&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4676745&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="480"></embed></object><br />
<span id="more-54"></span></p>
<h3>About V.I.A.</h3>
<p>With over six years experience in the live events industry, the <a title="V.I.A. on Vimeo" href="http://vimeo.com/user370696" target="_blank">V.I.A – (Visually Impaired Artists)</a> cultivate a range of digital disciplines for the mutual love of live performance.</p>
<p>With professional backgrounds in the Broadcasting, Film and Live events industries their live performances bring together a mix of Animation, Motion Graphics, 8mm, Film &amp; Video, Video feedback, live camera work and Lighting Design.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arkaos.net/blog/2009/06/misc/documentary-vj-culture/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New sync experiments at WWDC</title>
		<link>http://www.arkaos.net/blog/2009/06/engineering/sync-experiment-wwdc/</link>
		<comments>http://www.arkaos.net/blog/2009/06/engineering/sync-experiment-wwdc/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 08:56:09 +0000</pubDate>
		<dc:creator>polanri</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[synchronization]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[visuals]]></category>
		<category><![CDATA[wwdc]]></category>

		<guid isPermaLink="false">http://www.arkaos.net/blog/?p=19</guid>
		<description><![CDATA[Fraktus used the opportunity of having the compatibility lab at WWDC to put his synced visual network player at test with Snow Leopard and 6 computers..]]></description>
			<content:encoded><![CDATA[<p>Fraktus used the opportunity of having the compatibility lab at WWDC to put his <a title="Related post" href="http://www.arkaos.net/blog/2009/05/engineering/visuals-synced-network-players/">synced visual network player</a> at test with Snow Leopard and 6 computers (1 server, 5 clients). The clients are some low end Macs, Mac Mini, iMacs and a MacBook Pro.</p>
<p>Here is the result:</p>
<p style="text-align: center;"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/Au86RWFbJaA&#038;hl=en&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Au86RWFbJaA&#038;hl=en&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object><br />
<span id="more-19"></span>Ok there is a black frame when switching queues but hey, it’s a prototype :)</p>
<p>It&#8217;s fully multithreaded so development is moving forward carefully. There are threads for the network synchronization, video decompression, OpenGL rendering and status update to the server</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arkaos.net/blog/2009/06/engineering/sync-experiment-wwdc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Visuals synced over a network of players</title>
		<link>http://www.arkaos.net/blog/2009/05/engineering/visuals-synced-network-players/</link>
		<comments>http://www.arkaos.net/blog/2009/05/engineering/visuals-synced-network-players/#comments</comments>
		<pubDate>Sat, 16 May 2009 08:50:09 +0000</pubDate>
		<dc:creator>polanri</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[synchronization]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[visuals]]></category>

		<guid isPermaLink="false">http://www.arkaos.net/blog/?p=13</guid>
		<description><![CDATA[Here's the latest idea from Fraktus (our Code Guru); a way to distribute visual content over a network of players..]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Here&#8217;s the latest idea from Fraktus (our Code Guru); a way to distribute visual content over a network of players. Note that it&#8217;s just a prototype and will not necessarily become a software feature or product.</p>
<p style="text-align: center;"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/eTFD4mIm0Os&#038;hl=en&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/eTFD4mIm0Os&#038;hl=en&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arkaos.net/blog/2009/05/engineering/visuals-synced-network-players/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

