<?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>Passing on the Left &#187; video</title>
	<atom:link href="http://www.schleef.org/blog/category/video/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.schleef.org/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 23 Jan 2012 16:23:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>New Schrödinger Release</title>
		<link>http://www.schleef.org/blog/2012/01/23/new-schrodinger-release/</link>
		<comments>http://www.schleef.org/blog/2012/01/23/new-schrodinger-release/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 16:23:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dirac]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/?p=93</guid>
		<description><![CDATA[I recently added support for 10- and 16-bit encoding and decoding to Schrödinger, so I did a little release. Presenting Schrödinger-1.0.11. Also pushed changes to GStreamer to handle the new features. Although these changes have been in the works for some time, a little prompting from j-b caused me to finish this off, so this [...]]]></description>
			<content:encoded><![CDATA[<p>I recently added support for 10- and 16-bit encoding and decoding to Schrödinger, so I did a little release.  Presenting <a href="http://diracvideo.org/2012/01/schroedinger-1-0-11/">Schrödinger-1.0.11</a>.  Also pushed changes to <a href="http://gstreamer.freedesktop.org/">GStreamer</a> to handle the new features.  Although these changes have been in the works for some time, a little prompting from <a href="http://www.jbkempf.com/blog/">j-b</a> caused me to finish this off, so this will probably appear in <a href="http://www.videolan.org/">VLC</a> soon, too.<br />
This was the last piece needed to create a 10-bit master of <a href="http://www.sintel.org/">Sintel</a>, which I&#8217;ve been planning to do for some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2012/01/23/new-schrodinger-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GStreamer SDI Capture Plugins</title>
		<link>http://www.schleef.org/blog/2011/03/24/gstreamer-sdi-capture-plugins/</link>
		<comments>http://www.schleef.org/blog/2011/03/24/gstreamer-sdi-capture-plugins/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 19:35:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[entropywave]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/?p=79</guid>
		<description><![CDATA[I&#8217;m getting ready to push several commits to the gst-plugins-bad source repository that add plugins for capturing SDI and HD-SDI using cards from two different manufacturers: BlackMagic Design&#8216;s DeckLink, and Linear Systems SDI Master capture card. The Linear Systems cards are probably better known by their reseller, DVEO. Entropy Wave uses both of these cards [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m getting ready to push several commits to the gst-plugins-bad source repository that add plugins for capturing SDI and HD-SDI using cards from two different manufacturers: <a href="http://www.blackmagic-design.com/">BlackMagic Design</a>&#8216;s DeckLink, and <a href="http://www.linsys.ca/">Linear Systems</a> <a href="http://www.linsys.ca/boards-pcie.htm">SDI Master</a> capture card.</p>
<p>The Linear Systems cards are probably better known by their reseller, <a href="http://dveo.com/">DVEO</a>.  Entropy Wave uses both of these cards in the <a href="http://entropywave.com/products/1000-series-hardware/">E1000</a> Live Encoder appliance, we&#8217;ve found that aside from some motherboard incompatibilities in the DeckLink cards, they both work great in Linux. While we&#8217;re primarily interested in live capture at the moment, output has also been implemented.</p>
<p>We slightly prefer the Linear Systems cards &#8211; mainly because the drivers are open source, but also because the API allows lower level access to the hardware, including SDI clocking and raw VANC and HANC data.  It also allows subframe latency,  although not implemented in the GStreamer plugin, it will be nice to use in the future.</p>
<p>In comparison, the DeckLink driver and SDK are not open source (which means I can&#8217;t fix any bugs), although they conveniently provide open source headers and shim code for interfacing with the SDK.  This allows the GStreamer plugin to be completely open source and legally distributable separately from the SDK, but will only work if the SDK libraries and driver are present. Optical fiber connections are only available in the DeckLink, and the DeckLink cards tend to be less expensive.</p>
<p><a href="http://entropywave.com/wp-content/uploads/2011/03/IMG_0274_web.jpg"><img class="size-full wp-image-500 alignleft" title="IMG_0274_web" src="http://entropywave.com/wp-content/uploads/2011/03/IMG_0274_web.jpg" alt="" width="300" height="182" /></a>It will take a few weeks for these to be available as part of a <a href="http://gstreamer.freedesktop.org/">GStreamer</a> release, however, they are available in the <a href="http://entropywave.com/products/entropy-wave-media-sdk/">Media SDK</a> now.</p>
<p>(Reposted from my <a href="http://entropywave.com/author/david-schleef/">Entropy Wave blog</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2011/03/24/gstreamer-sdi-capture-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FLAC code mirror</title>
		<link>http://www.schleef.org/blog/2011/02/03/flac-code-mirror/</link>
		<comments>http://www.schleef.org/blog/2011/02/03/flac-code-mirror/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 01:31:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[video]]></category>
		<category><![CDATA[code.entropywave.com]]></category>
		<category><![CDATA[flac]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[mirror]]></category>
		<category><![CDATA[sourceforge]]></category>
		<category><![CDATA[xiph]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/?p=73</guid>
		<description><![CDATA[Since parts of SourceForge have been down for a while, I am making my git mirror of the FLAC CVS repository available.  It is here.  I&#8217;ve also made my fairly uninteresting patches available on the Entropy Wave Open Source site, here.]]></description>
			<content:encoded><![CDATA[<p>Since parts of SourceForge have been down for a while, I am making my git mirror of the <a href="http://flac.sourceforge.net/">FLAC</a> CVS repository available.  It is <a href="http://git.xiph.org/?p=mirrors/flac.git;a=summary">here</a>.  I&#8217;ve also made my fairly uninteresting patches available on the <a href="http://code.entropywave.com/">Entropy Wave Open Source</a> site, <a href="http://code.entropywave.com/git?p=flac.git;a=shortlog;h=refs/heads/ew">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2011/02/03/flac-code-mirror/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Video Conference</title>
		<link>http://www.schleef.org/blog/2010/09/03/open-video-conference/</link>
		<comments>http://www.schleef.org/blog/2010/09/03/open-video-conference/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 02:51:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/?p=69</guid>
		<description><![CDATA[The Open Video Conference is happening again, and coming up in a few short weeks (October 1-2).  It&#8217;s a great mixture of people from both sides of open video: open content and open technology.  I&#8217;ll be giving a tutorial that ties the two sides together, explaining to content producers how to use the technology to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.schleef.org/blog/wp-content/uploads/2010/09/ovcbadge-speakers.png"><img class="alignnone size-full wp-image-70" title="ovcbadge-speakers" src="http://www.schleef.org/blog/wp-content/uploads/2010/09/ovcbadge-speakers.png" alt="ovcbadge-speakers" width="250" height="272" /></a></p>
<p>The <a href="http://www.openvideoconference.org/">Open Video Conference</a> is happening again, and coming up in a few short weeks (October 1-2).  It&#8217;s a great mixture of people from both sides of open video: open content and open technology.  I&#8217;ll be giving a tutorial that ties the two sides together, explaining to content producers how to use the technology to its fullest.</p>
<p>In association with OVC is the <a href="http://www.foms-workshop.org/foms2010OVC/">Foundations of Open Media</a> workshop (October 3-4), which is mostly a bunch of video and media hackers getting together to talk about our next steps in taking over the world.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2010/09/03/open-video-conference/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dirac Update</title>
		<link>http://www.schleef.org/blog/2010/03/04/dirac-update-2/</link>
		<comments>http://www.schleef.org/blog/2010/03/04/dirac-update-2/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 20:10:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dirac]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/?p=56</guid>
		<description><![CDATA[One of the difficulties of having a long release cycle for a small project is that a lot of activity might be taking place behind the scenes, but a casual observer might not notice.  Of course, in the case of Schrödinger, it didn&#8217;t help that diracvideo.org was lacking CSS and important links for over a [...]]]></description>
			<content:encoded><![CDATA[<p>One of the difficulties of having a long release cycle for a small project is that a lot of activity might be taking place behind the scenes, but a casual observer might not notice.  Of course, in the case of Schrödinger, it didn&#8217;t help that <a href="http://diracvideo.org/">diracvideo.org</a> was lacking CSS and important links for over a month, looking rather bit rotten.  So it&#8217;s not surprising that there have been people wandering into the IRC channel wondering if the project is dead.  Um, no.  We&#8217;re just quiet.  And there&#8217;s a <a href="http://diracvideo.org/2010/03/schroedinger-1-0-9-released/">new release</a>.</p>
<p>Partly the reason for the long release cycle is that it took more time than expected merging several of the encoding tools from dirac-research.  But now there are fewer loose threads and development and releases can proceed at a more even pace.  I&#8217;m hoping to do new releases at the pace of about one a month.  (But I&#8217;ve said that before&#8230;)</p>
<p>Schrödinger now requires <a href="http://code.entropywave.com/projects/orc/">Orc</a> to build.  Switching from liboil to Orc has made decoding a lot faster, sometimes as much as 4 times faster.</p>
<p>Look forward to separate blog posts about some of the new features.  Encoding quality has improved quite a bit for typical cases, and hugely in cases where there were bugs that were being ignored.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2010/03/04/dirac-update-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Theora on TI C64x+ DSP and OMAP3</title>
		<link>http://www.schleef.org/blog/2009/11/11/theora-on-ti-c64x-dsp-and-omap3/</link>
		<comments>http://www.schleef.org/blog/2009/11/11/theora-on-ti-c64x-dsp-and-omap3/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 04:24:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[entropywave]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/?p=43</guid>
		<description><![CDATA[For the last several months, Entropy Wave has been making Theora work on the TI C64x+ DSP as a project for Mozilla Corp. The goal behind porting to the C64x+ is to run on OMAP3 SoC from TI, which has an ARM Cortex A8 core and also has a C64x+ DSP coprocessor. This SoC (System [...]]]></description>
			<content:encoded><![CDATA[<p>For the last several months, <a href="http://entropywave.com/">Entropy Wave</a> has been making <a href="http://theora.org/">Theora</a> work on the <a href="http://www.ti.com/">TI</a> C64x+ DSP as a project for <a href="http://www.mozilla.com/">Mozilla Corp</a>.</p>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://schleef.org/misc/bbb-theora-bb.jpg"><img title="Theora playback on Beagle Board" src="http://schleef.org/misc/bbb-theora-bb.jpg" alt="An Ogg/Theora video of Big Buck Bunny being played back on a Beagle Board via the C64x+ DSP coprocessor" width="600" height="400" /></a><p class="wp-caption-text">An Ogg/Theora video of Big Buck Bunny being played back on a Beagle Board via the C64x+ DSP coprocessor</p></div>
<p>The goal behind porting to the C64x+ is to run on <a href="http://focus.ti.com/general/docs/wtbu/wtbuproductcontent.tsp?templateId=6123&amp;navigationId=11989&amp;contentId=4682">OMAP3</a> SoC from TI, which has an ARM Cortex A8 core and also has a C64x+ DSP coprocessor.  This SoC (System on Chip) is best known as being the base behind Nokia&#8217;s N series of mobiles (including the N900), the Motorola Droid, Palm Pre, and the <a href="http://beagleboard.org/">Beagle Board</a>.  The DSP coprocessor is commonly used for audo and video processing, including video encoding and decoding, and TI makes codecs available for MPEG-4 video decoding, AAC decoding, etc.  Having Theora decoded on the DSP fits into Mozilla&#8217;s <a href="https://wiki.mozilla.org/Fennec">Fennec</a> project, making Firefox with video useful on a mobile platform.</p>
<p>One of the engineering reasons behind having a separate processor for media handling is that it separates real-time tasks (media decoding) from non-real-time tasks, such as running web browser software.  From the standpoint of software running on the ARM, the video decoder looks and acts just like a hardware video codec.  The DSP on the OMAP3 is even more compelling for video decoding because attached to the DSP are several units that accelerate motion vector copying, VLC decoding, and loop deblocking.  Unfortunately, these pieces are not publicly documented by TI, so the current Theora port (which is open source) is unable to use them.  A future Entropy Wave project will likely add support for these acceleration units which would allow the performance of the Theora decoder to be similar to TI&#8217;s MPEG-4 codec, which <a href="http://felipec.wordpress.com/2009/10/13/new-project-gst-dsp-with-beagleboard-demo-image/">can do 800&#215;480 playback</a> (possibly more?).  As it looks now, the resulting code would necessarily be closed source until such a time when TI wishes to make the specifications public.</p>
<p>As it currently stands, the Theora decoder plays 640&#215;360 24fps at slightly more than 100% speed on average.  This isn&#8217;t quite good enough to call it &#8220;real time&#8221;, since some frames take longer than the allotted time to decode, but it&#8217;s pretty close and the results are good.  Additional speed improvements in libtheora would require internal changes, which would be a project in itself.  One clear area for improvement is that the DSP spends a substantial part of its time idle, because the host code is serialized with the DSP processing.  Fixing this is likely to put the above case firmly into the &#8220;real time&#8221; category.  Given that 640&#215;360 is larger than the iPhone display resolution and almost as large as the N900 resolution, it&#8217;s clearly good enough, even if it is less than TI&#8217;s hardware accelerated MPEG-4.</p>
<p>On the Entropy Wave site is a <a href="http://code.entropywave.com/leonora-beagle-board-demo/">page</a> describing the demo, including where to download images and how to compile source code.</p>
<p>A big thanks to the people that laid the foundations for this work, especially <a href="http://felipec.wordpress.com/2009/10/13/new-project-gst-dsp-with-beagleboard-demo-image/">Felipe Contreras</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2009/11/11/theora-on-ti-c64x-dsp-and-omap3/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>YCbCr Gamut Checking</title>
		<link>http://www.schleef.org/blog/2009/10/07/ycbcr-gamut-checking/</link>
		<comments>http://www.schleef.org/blog/2009/10/07/ycbcr-gamut-checking/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 07:04:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/?p=36</guid>
		<description><![CDATA[I recently added a pattern to GStreamer&#8217;s videotestsrc that can be used to check YCbCr to RGB conversion is being done correctly as part of video output.  It is the result of a clever hack &#8212; some YCbCr values, when converted to RGB, are out of range, so as part of the conversion process, they [...]]]></description>
			<content:encoded><![CDATA[<p>I recently added a pattern to GStreamer&#8217;s videotestsrc that can be used to check YCbCr to RGB conversion is being done correctly as part of video output.  It is the result of a clever hack &#8212; some YCbCr values, when converted to RGB, are out of range, so as part of the conversion process, they are clamped to the nearest RGB value.  The pattern generator creates a checkerboard pattern of a color (say, red) and a YCbCr value that upon correct conversion will result in the same color.  Thus the pattern should be invisible.  Usefully, these out-of-gamut YCbCr values are preserved by video codecs, so I can present to you a Theora video demonstrating this:</p>
<p><video src="http://code.entropywave.com/test-media/gamut/gamut-theora-bt470.ogv">your browser doesn&#8217;t support the video tag.  Download Firefox</video></p>
<p>Firefox does the conversion correctly, so it&#8217;s unlikely you&#8217;ll see the pattern.  However, some video display drivers still get this wrong, so you might see the pattern when playing the video in a standalone program that uses XV.  For those of you with working kit, I created a demonstration video that simulates a bad conversion:</p>
<p><video src="http://code.entropywave.com/test-media/gamut/gamut-theora-simulated-breakage.ogv">your browser doesn&#8217;t support the video tag.  Download Firefox</video></p>
<p>Sometimes it&#8217;s possible to see the pattern very faintly due to rounding in even a correct conversion.  This is unavoidable because the RGB->YCbCr->RGB round trip is lossy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2009/10/07/ycbcr-gamut-checking/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
<enclosure url="http://code.entropywave.com/test-media/gamut/gamut-theora-bt470.ogv" length="167625" type="video/ogg" />
<enclosure url="http://code.entropywave.com/test-media/gamut/gamut-theora-simulated-breakage.ogv" length="178487" type="video/ogg" />
		</item>
		<item>
		<title>Cog in gst-plugins-bad</title>
		<link>http://www.schleef.org/blog/2009/09/19/cog-in-gst-plugins-bad/</link>
		<comments>http://www.schleef.org/blog/2009/09/19/cog-in-gst-plugins-bad/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 20:05:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[orc]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/?p=24</guid>
		<description><![CDATA[I finally moved my collection of Orc-based GStreamer plugins (codename &#8220;Cog&#8221;) into gst-plugins-bad, since they&#8217;re moved on from being an experiment.  Orc is a runtime compiler for a simple cross-platform assembly-like language that specifically targets SIMD instructions for several processors.  Orc is very effective inside it&#8217;s domain, which is small but growing. One such application [...]]]></description>
			<content:encoded><![CDATA[<p>I finally moved my collection of Orc-based GStreamer plugins (codename &#8220;Cog&#8221;) into gst-plugins-bad, since they&#8217;re moved on from being an experiment.  <a href="http://www.schleef.org/blog/2009/05/31/orc-040/">Orc</a> is a runtime compiler for a simple cross-platform assembly-like language that specifically targets SIMD instructions for several processors.  Orc is very effective inside it&#8217;s domain, which is small but growing.</p>
<p>One such application that is covered is chroma subsampling and color matrixing for video, semi-incorrectly referred to as &#8220;colorspace conversion&#8221; in GStreamer.  There has been a colorspace element in Cog (cogcolorspace) for some time, but I never really bothered to do any speed comparisons between it and the default GStreamer colorspace element (ffmpegcolorspace), which is based on code copied from FFMpeg.  However, recently I did, and was somewhat surprised (although I shouldn&#8217;t have been) that cogcolorspace is the same speed as, or much faster than, ffmpegcolorspace for almost all operations.  (Please note that the FFMpeg code was forked a long time ago and heavily modified, so it does not reflect FFMpeg itself, only GStreamer&#8217;s ffmpegcolorspace.)</p>
<p>This is a scatter plot of the run time (in ms) for converting 1000 frames of 320&#215;240 video between a variety of uncompressed video formats:</p>
<p><a href="http://www.schleef.org/blog/wp-content/uploads/2009/09/colorspace-time-scatterplot.png"><img class="alignnone size-full wp-image-25" title="Colorspace element execution time scatter plot" src="http://www.schleef.org/blog/wp-content/uploads/2009/09/colorspace-time-scatterplot.png" alt="Colorspace element execution time scatter plot" width="463" height="288" /></a></p>
<p>The axes are execution time (in ms), with cogcolorspace on the horizontal axis and ffmpegcolorspace on the vertical axis.  The green line represents same execution time, thus for points below the line, ffmpegcolorspace was faster, for those above, cogcolorspace was faster.  Most of the points clustered around the green line are statistically the same as the green line, since my timing method is quite crude.  Things to observe from this graph are that 1) many cases are very similar in speed, indicating that both ffmpegcolorspace and cogcolorspace are using similar code paths, 2) some cases, cogcolorspace is a <em>lot</em> faster, probably indicating that there isn&#8217;t an assembly fast path in ffmpegcolorspace for that conversion, and 3) a few cases (which, not coincidentally, are the most heavily used cases) ffmpegcolorspace is slightly faster than cogcolorspace.</p>
<p>The conclusions to draw from this are that 1) by writing very generic code with Orc, you can get very similar results to hand-crafted assembly code, and 2) a developer can cover a lot more cases with a small amount of work, and 3) there are a few cases where special-case Orc code would be beneficial.</p>
<p>This is only the low quality mode that cogcolorspace supports, which is similar or identical in quality to ffmpegcolorspace.  Higher-quality conversion is also implemented in most cases, and is only slightly slower in speed.  This is the real advantage of Orc &#8212; Orc takes care of huge number of combinations of options, and produces good SIMD code for all of them.</p>
<p><img src="file:///tmp/moz-screenshot.png" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2009/09/19/cog-in-gst-plugins-bad/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Orc-0.4.0</title>
		<link>http://www.schleef.org/blog/2009/05/31/orc-040/</link>
		<comments>http://www.schleef.org/blog/2009/05/31/orc-040/#comments</comments>
		<pubDate>Sun, 31 May 2009 23:33:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[liboil]]></category>
		<category><![CDATA[orc]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/2009/05/31/orc-040/</guid>
		<description><![CDATA[Lately, I&#8217;ve been working on a side project called Orc as a replacement for liboil.  Liboil&#8217;s first major problem has always been that it doesn&#8217;t scale well &#8212; every software package that wanted to use liboil typically required several new liboil functions, and then someone would need to actually write assembly code for those functions [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, I&#8217;ve been working on a side project called <a href="http://cgit.freedesktop.org/~ds/orc">Orc</a> as a replacement for <a href="http://liboil.freedesktop.org/wiki/">liboil</a>.  Liboil&#8217;s first major problem has always been that it doesn&#8217;t scale well &#8212; every software package that wanted to use liboil typically required several new liboil functions, and then someone would need to actually write assembly code for those functions on several architectures.  My original plan was to develop a critical mass of functions, and then additions would be &#8220;simple&#8221;.  This never happened.  The second major problem is that liboil&#8217;s compilation is terribly fragile.  Thousands of lines of inline assembly code that depends on specific compilers, compiler versions, libtool internals, and random snippets of code such as &#8220;if $user != msmith&#8221; do not lead to a maintainable project.</p>
<p>Orc is now to the point where it can not only reproduce about 90% of the code that is currently in liboil, but also generate 90% of the code that <em>should</em> be in liboil, but nobody ever wrote.  At runtime.  And the Orc language allows you to describe your own liboil-style functions.  At runtime.  Or, you can also use it like a normal compiler, converting Orc language source into N different assembly source files for every possible vector instruction set combination.</p>
<p>A large part of the decoding path in Schroedinger has been converted to optionally use Orc, where speed is either slightly faster or 20-30% faster than the previous liboil code.  The real benefit is that takes only a few minutes to convert code that took weeks to develop originally.  A side project of mine, <a href="http://cgit.freedesktop.org/~ds/cog">Cog</a>, has turned into a showcase for Orc, with demonstrations of video processing <a href="http://gstreamer.net/">GStreamer</a> elements, such as format and colorspace conversion and scaling.  I&#8217;ve found that since it is so easy and fast to create vectorized code, it now becomes possible to offer additional features to users, such as quality vs. speed tradeoffs.</p>
<p>Orc can generate code for MMX and SSE on x86 and x86_64, and Altivec on PowerPC, as well as NEON for ARM and c64x+DSP code.  The NEON and c64x+ backends are not currently open source.</p>
<p><a href="http://www.schleef.org/orc/download/">Download 0.4.0</a>.  <a href="http://www.schleef.org/orc/documentation/">Online documentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2009/05/31/orc-040/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Entropy Wave</title>
		<link>http://www.schleef.org/blog/2009/04/27/entropy-wave/</link>
		<comments>http://www.schleef.org/blog/2009/04/27/entropy-wave/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 19:28:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[entropywave]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/2009/04/27/entropy-wave/</guid>
		<description><![CDATA[I see Christian outed my new company, Entropy Wave.  The mission of the new company is to create video post-production tools using open media technology for a wide range of users, including high-end studios, professional video editors, and hobbyists.  Most of our products will be based on open-source code, including projects I&#8217;ve been heavily involved [...]]]></description>
			<content:encoded><![CDATA[<p>I see <a href="http://blogs.gnome.org/uraeus/2009/04/27/transmageddon-07-released/">Christian</a> outed my new company, <a href="http://entropywave.com/">Entropy Wave</a>.  The mission of the new company is to create video post-production tools using open media technology for a wide range of users, including high-end studios, professional video editors, and hobbyists.  Most of our products will be based on open-source code, including projects I&#8217;ve been heavily involved with such as <a href="http://gstreamer.freedesktop.org/">GStreamer</a>, <a href="http://diracvideo.org/">Schroedinger</a>, Orc, and various <a href="http://xiph.org/">Xiph</a> projects.</p>
<p>Existing and upcoming products include:</p>
<ul>
<li>A GStreamer-based <a href="http://entropywave.com/products/entropy-wave-media-sdk/">Media SDK</a> that allows developers to rapidly create and deploy applications on major platforms (Windows, Linux, OS/X)</li>
<li>QuickTime plugins for DiracPro (SMPTE VC-2)</li>
<li>A <a href="http://entropywave.com/products/entropy-wave-encoder/">video encoder application</a> geared toward content producers putting video on the web</li>
<li>A capture application compatible with <a href="http://www.numediatechnology.com/">Numedia</a>&#8216;s line of DiracPro hardware encoders</li>
</ul>
<p>In addition, Entropy Wave can provide support and custom development services in a variety of areas including open media.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2009/04/27/entropy-wave/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

