<?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; gstreamer</title>
	<atom:link href="http://www.schleef.org/blog/category/gstreamer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.schleef.org/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 14 Jul 2010 01:24:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Orc NEON backend</title>
		<link>http://www.schleef.org/blog/2010/06/25/orc-neon-backend/</link>
		<comments>http://www.schleef.org/blog/2010/06/25/orc-neon-backend/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 20:22:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[orc]]></category>

		<guid isPermaLink="false">http://www.schleef.org/blog/?p=61</guid>
		<description><![CDATA[The Orc NEON backend is now open-source and part of the 0.4.5 release.  Thanks to Nokia for making this possible.
All of the GStreamer code that previously used liboil has been converted to Orc, and will be part of the upcoming releases.  Plugins from -base that were converted are videotestsrc, videoscale, audioconvert, volume, and adder.  The [...]]]></description>
			<content:encoded><![CDATA[<p>The Orc NEON backend is now open-source and part of the 0.4.5 release.  Thanks to Nokia for making this possible.</p>
<p>All of the GStreamer code that previously used liboil has been converted to Orc, and will be part of the upcoming releases.  Plugins from -base that were converted are videotestsrc, videoscale, audioconvert, volume, and adder.  The change in speed is minor for now, since liboil was not used extensively.</p>
<p>The way that GStreamer uses Orc is intended to be very convenient for the end user:  by default when compiling from source, Orc will be used if an acceptable version is found, otherwise backup code (in C) will be used.  This backup code is automatically generated and checked in to git by a developer, so it always exists.  The configure options &#8216;&#8211;enable-orc&#8217; and &#8216;&#8211;disable-orc&#8217; affect this: the former causes configure to <em>require</em> Orc, and a configure failure is a good reminder to upgrade Orc.  The latter may be useful on architectures where Orc doesn&#8217;t generate code yet.  After a transitional phase, Orc will become required, since the more advanced uses of Orc cannot be duplicated by backup functions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schleef.org/blog/2010/06/25/orc-neon-backend/feed/</wfw:commentRss>
		<slash:comments>1</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>
	</channel>
</rss>
