<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet Xiph</title>
  <updated>2010-03-22T14:00:13Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>Xiph Webmaster Team</name>
    <email>webmaster@xiph.org</email>
  </author>
  <id>http://planet.xiph.org/atom.xml</id>
  <link href="http://planet.xiph.org/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://planet.xiph.org/" rel="alternate"/>

  <entry>
    <id>http://maikmerten.livejournal.com/4128.html</id>
    <link href="http://maikmerten.livejournal.com/4128.html" rel="alternate" type="text/html"/>
    <title>Cortado 0.6.0</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Cortado 0.6.0 is now released.


Changes since 0.5.2:

<ul>
<li>support for Theora files with 4:4:4 and 4:2:2 sampling</li>
<li>Reinforced compatibility with Java 1.1</li>
<li>Improved support for videos with dropped frames</li>
<li>Much improved support for Kate subtitles (including menu to select subtitle stream)</li>
<li>More robust scanning for stream duration</li>
<li>Fixed Vorbis surround sound</li>
<li>Release binaries should export a subset of the HTML5 media API again</li>
</ul>

You can download source and binaries from the <a href="http://downloads.xiph.org/releases/cortado/">Cortado download</a> page.</div>
    </summary>
    <updated>2010-03-20T17:10:36Z</updated>
    <category term="xiph"/>
    <category term="theora"/>
    <source>
      <id>http://maikmerten.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/78472053/15004965</logo>
      <author>
        <name>Maik Merten</name>
      </author>
      <link href="http://maikmerten.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://maikmerten.livejournal.com/data/rss?tag=xiph" rel="self" type="application/atom+xml"/>
      <subtitle>maikmerten - LiveJournal.com</subtitle>
      <title>maikmerten</title>
      <updated>2010-03-22T14:00:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.hartwork.org/?p=672</id>
    <link href="http://blog.hartwork.org/?p=672" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by-nd/3.0/de/" rel="license"/>
    <title>Created with Free Software! A button to spread the word</title>
    <summary>Last month I did a presentation on the concept of redundancy in a human factor related seminar at university. As most participants were non-IT people and using Windows I felt like promoting Free Software without making it “too loud”.
So I came up with the idea of putting a rubber stamp “Created with Free Software” onto [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Last month I did a presentation on the concept of redundancy in a human factor related seminar at university. As most participants were non-IT people and using Windows I felt like promoting Free Software without making it “too loud”.</p>
<p>So I came up with the idea of putting a rubber stamp “Created with Free Software” onto the front slide. I found an <a href="http://howto.nicubunu.ro/rubber_stamp_inkscape/">Inkscape tutorial on rubber stamps</a> to get me started.</p>
<p>This is the result:</p>
<p/><center><a href="http://www.fsfe.org/contribute/advocacy/cwfs/cwfs-1.0.0-original-25-degree.svg"><img alt="" height="201" src="http://www.fsfe.org/contribute/advocacy/cwfs/cwfs-1.0.0-original-25-degree-300x201.png" width="300"/></a></center><br/>
On the the front slide:<p/>
<p/><center><img alt="" height="227" src="http://blog.hartwork.org/__images/redundanz-pipping-1.0.0-frontslide-302x227.png" width="302"/></center><br/>
To get the stamp appear at that very place can be a little tricky. Feel free to inspect the <a href="http://git.goodpoint.de/?p=redundancy-slides.git;a=summary">slide sources</a>, particularly <a href="http://git.goodpoint.de/?p=redundancy-slides.git;a=blob;f=redundanz.tex;hb=HEAD">redundanz.tex</a>.<p/>
<p>By now there is <a href="http://optipng.sourceforge.net/">optimized</a> PNGs</p>
<ul>
<li>in 4 colors (original/red, gray, white and black)</li>
<li>in 4 sizes (88×28/59, 120×38/81, 180×57/121 and 300×95/201)</li>
<li>rotated or not (0° and 25° counter-clockwise)</li>
</ul>
<p>and SVGs respectively. In case you need PDFs: Inkscape converts well on the commandline:</p>
<pre>inkscape --export-pdf=out.pdf in.svg</pre>
<p>To see them all please visit the <a href="http://www.fsfe.org/contribute/advocacy/cwfs.en.html">“Created with Free Software” page</a> of the FSFE. Please make use of this stamp whereever you see fits. If you have photos or screenshots of the button in action please comment here.</p>
<p>Please join promoting Free Software!</p>
<p><strong>[EDIT]</strong>: The button sources (SVG) are licensed under the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-Share Alike 3.0 license</a> (unlike this blog post itself, see box below). The PNG versions are licensed even more liberally under the <a href="http://creativecommons.org/publicdomain/zero/1.0/">Creative Commons Zero 1.0 Universal license</a>. The idea is to keep derivatives “in the pool” while allowing to use the PNGs without even attribution.</p></div>
    </content>
    <updated>2010-03-18T18:08:12Z</updated>
    <category term="Planet Gentoo"/>
    <category term="Planet KDE"/>
    <category term="Planet Xiph"/>
    <author>
      <name>sping</name>
    </author>
    <source>
      <id>http://blog.hartwork.org</id>
      <link href="http://blog.hartwork.org/?cat=28&amp;feed=rss2" rel="self" type="application/atom+xml"/>
      <link href="http://blog.hartwork.org" rel="alternate" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nd/3.0/de/" rel="license"/>
      <subtitle>Free Software and Music</subtitle>
      <title>Hartwork Blog » Planet Xiph</title>
      <updated>2010-03-21T19:00:04Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://xiphmont.livejournal.com/48863.html</id>
    <link href="http://xiphmont.livejournal.com/48863.html" rel="alternate" type="text/html"/>
    <title>Continuing Vorbis surround work, a new demo page</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>A full first cut of Vorbis with optimized 5.1 is now in Xiph.org SVN along with a <a href="http://people.xiph.org/~xiphmont/surround/demo2.html">new demo page</a>.  We're currently on schedule for a new release of libvorbis, vorbis-tools and ao next week, depending on how much time <a href="http://groups.fsf.org/wiki/LibrePlanet2010">LibrePlanet</a> takes this weekend.</p></div>
    </summary>
    <updated>2010-03-16T02:27:22Z</updated>
    <category term="vorbis"/>
    <category term="xiph"/>
    <author>
      <name>Monty</name>
      <email>monty@xiph.org</email>
    </author>
    <source>
      <id>http://xiphmont.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/70118889/829507</logo>
      <author>
        <name/>
        <email>monty@xiph.org</email>
      </author>
      <link href="http://xiphmont.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://xiphmont.livejournal.com/data/rss?tag=xiph" rel="self" type="application/atom+xml"/>
      <subtitle>Monty - LiveJournal.com</subtitle>
      <title>Monty</title>
      <updated>2010-03-22T14:00:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://spreadopenmedia.org/blog/news/lets-get-video-on-wikipedia-campaign-is-a-go/</id>
    <link href="http://spreadopenmedia.org/blog/news/lets-get-video-on-wikipedia-campaign-is-a-go/feed/" rel="replies" type="application/atom+xml"/>
    <link href="http://spreadopenmedia.org/blog/news/lets-get-video-on-wikipedia-campaign-is-a-go/" rel="alternate" type="text/html"/>
    <title xml:lang="en">“Let’s Get Video on Wikipedia” campaign is a-go</title>
    <summary xml:lang="en">Three non-profits have gathered together to launch the Let’s Get Video on Wikipedia website.  The goal here is to aid people learn how to create multimedia content for the largest (and neatest) encyclopedia in the world.
If you like Wikipedia, got a handy camera and some imagination on what to capture on film, go give [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>Three non-profits have gathered together to launch the <a href="http://videoonwikipedia.org">Let’s Get Video on Wikipedia website</a>.  The goal here is to aid people learn how to create multimedia content for the largest (and neatest) encyclopedia in the world.</p>
<p>If you like Wikipedia, got a handy camera and some imagination on what to capture on film, go give them a hand.</p></div>
    </content>
    <updated>2010-03-15T15:58:27Z</updated>
    <published>2010-03-15T15:58:27Z</published>
    <category scheme="http://spreadopenmedia.org/blog" term="news"/>
    <author>
      <name>Ivo</name>
    </author>
    <source>
      <id>http://spreadopenmedia.org/blog/feed/atom/</id>
      <link href="http://spreadopenmedia.org/blog" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/SpreadOpenMedia" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <rights xml:lang="en">Copyright 2010</rights>
      <subtitle xml:lang="en">community portal for the promotion of free formats and open media</subtitle>
      <title xml:lang="en">Spread Open Media</title>
      <updated>2010-03-15T15:58:27Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5537325711190185140.post-8521096537138200651</id>
    <link href="http://blog.pearce.org.nz/feeds/8521096537138200651/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5537325711190185140&amp;postID=8521096537138200651" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/8521096537138200651" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/8521096537138200651" rel="self" type="application/atom+xml"/>
    <link href="http://blog.pearce.org.nz/2010/03/dont-serve-ogg-media-with-gzipdeflate.html" rel="alternate" type="text/html"/>
    <title>Don't serve Ogg media with gzip/deflate compression</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">One common way to reduce the load on a web server is to use <a href="http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/">gzip or deflate compression</a> when serving to a supporting web browser. When Firefox requests an Ogg media, it advertises that it can handle a gzipped or deflated response; the HTTP request includes the <tt>Accept-Encoding: gzip,deflate</tt> header. But despite Firefox advertising that it supports gzip/deflate, you probably don't want your web server to gzip or deflate Ogg media. If you serve an Ogg media compressed, Firefox won't be able to seek in the media, or determine its duration. Since the video/audio data in Ogg files is already compressed, gzip/deflate won't actually save you much bandwidth anyway, so you probably want to disable compression when serving Ogg files.<br/><br/>I have added this tip to the Mozilla Developer Center article on <a href="https://developer.mozilla.org/en/Configuring_servers_for_Ogg_media">configuring servers for Ogg media</a>.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5537325711190185140-8521096537138200651?l=blog.pearce.org.nz" width="1"/></div></div>
    </content>
    <updated>2010-03-12T02:31:59Z</updated>
    <published>2010-03-12T02:31:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="video"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="ogg"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="seeking"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="mozilla"/>
    <author>
      <name>Chris Pearce</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/13735147508549619230</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5537325711190185140</id>
      <author>
        <name>Chris Pearce</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/13735147508549619230</uri>
      </author>
      <link href="http://blog.pearce.org.nz/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/-/ogg" rel="self" type="application/atom+xml"/>
      <link href="http://blog.pearce.org.nz/search/label/ogg" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>The more drums we have in our kit, the more jobs we can handle.</subtitle>
      <title>Thundering Herd</title>
      <updated>2010-03-16T01:04:35Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://bluishcoder.co.nz/2010/03/12/changes-to-firefox-ycbcr-code</id>
    <link href="http://bluishcoder.co.nz/2010/03/12/changes-to-firefox-ycbcr-code.html" rel="alternate" type="text/html"/>
    <title>Changes to Firefox YCbCr Color Conversion Code</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I posted previously about <a href="http://www.bluishcoder.co.nz/2010/02/19/comparing-colour-space-conversion-libraries.html">colour conversion libraries</a>. To replace the <a href="http://wiki.xiph.org/OggPlay">liboggplay</a> conversion routines we decided to try the <a href="http://code.google.com/chromium/">Chromium</a> libraries.</p>

<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=551277">Bug 551277</a> adds the Chromium code and integrates it with the new <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=538323">video layer painting code</a>. The Chromium code uses a C fallback if MMX is not available but this is done at compile time. I modified it do runtime detection using Mozilla’s <a href="http://mxr.mozilla.org/mozilla-central/source/xpcom/glue/SSE.h">SSE.h</a> and moved the generic C routine from the Linux specific implementation to be used on all platforms that don’t have MMX. Some other minor modifications were done (function name, namspacing).</p>

<p>I added an ‘update.sh’ script that can be used to update against the latest Chromium code. Given the path to the Chromium source it applies a patch for the changes I made.</p>

<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=551378">Bug 551378</a> adds YCbCr 4:4:4 conversion (YV24). The Chromium code supported 4:2:0 and 4:2:2 (YV12 and YV16 respectively). Theora also allows 4:4:4 per spec. There aren’t many 4:4:4 Theora videos out in the wild and the fix in this bug only adds support in the slower C implementation. I detect if the video is a 4:4:4 video and fallback to the C code.</p>

<p>At some point optimized MMX routines should be done for this. I’ve raised <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=551844">Bug 551844</a> for this. This would probably make a good first bug for anyone who wants something small and self contained to work on. It would be good to contribute this back to Chromium when done too.</p>

<p>Xiph has a <a href="http://wiki.xiph.org/TheoraTestsuite">test suite</a> with example videos in the different formats.</p></div>
    </content>
    <updated>2010-03-12T00:30:00Z</updated>
    <source>
      <id>http://bluishcoder.co.nz/</id>
      <author>
        <name>Chris Double</name>
        <email>chris.double@double.co.nz</email>
      </author>
      <link href="http://bluishcoder.co.nz/atom.xml" rel="self" type="application/atom+xml"/>
      <link href="http://bluishcoder.co.nz/" rel="alternate" type="text/html"/>
      <title>Bluish Coder</title>
      <updated>2010-03-12T00:44:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5537325711190185140.post-274603027516715282</id>
    <link href="http://blog.pearce.org.nz/feeds/274603027516715282/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5537325711190185140&amp;postID=274603027516715282" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/274603027516715282" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/274603027516715282" rel="self" type="application/atom+xml"/>
    <link href="http://blog.pearce.org.nz/2010/03/switched-blog-to-custom-domain.html" rel="alternate" type="text/html"/>
    <title>Switched blog to custom domain</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I have switched my blog to being on a custom domain hosted at Blogger. The address for my blog is now <a href="http://blog.pearce.org.nz">blog.pearce.org.nz</a>. Previously I was using Blogger's publish via FTP to host my blog on my own domain, but they have <a href="http://blogger-ftp.blogspot.com/">discontinued that service</a>. I tried running Wordpress on my own domain, but I couldn't get plugins to work, so without <a href="http://wordpress.org/extend/plugins/wp-cache/">WP-Cache</a> my blog was slow. I'm glad to have my blog restored to its former snappy look and feel.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5537325711190185140-274603027516715282?l=blog.pearce.org.nz" width="1"/></div></div>
    </content>
    <updated>2010-03-06T21:04:55Z</updated>
    <published>2010-03-06T20:53:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="ogg"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="mozilla"/>
    <author>
      <name>Chris Pearce</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/13735147508549619230</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5537325711190185140</id>
      <author>
        <name>Chris Pearce</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/13735147508549619230</uri>
      </author>
      <link href="http://blog.pearce.org.nz/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/-/ogg" rel="self" type="application/atom+xml"/>
      <link href="http://blog.pearce.org.nz/search/label/ogg" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>The more drums we have in our kit, the more jobs we can handle.</subtitle>
      <title>Thundering Herd</title>
      <updated>2010-03-16T01:04:35Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://bemasc.net/wordpress/?p=1554</id>
    <link href="http://bemasc.net/wordpress/2010/03/05/now-im-on-cnet/" rel="alternate" type="text/html"/>
    <title>Now I’m on CNET</title>
    <summary>The web is super weird.  Now I’m on CNET.  The article, by Stephen Shankland, is fairly even-handed, and a good introduction to the licensing problems, with solid quotes from the MPEGLA.  Of course, it comes from a philosophy of who’s likely to be sued, which is not quite the same as what’s [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>The web is super weird.  Now <a href="http://news.cnet.com/8301-30685_3-20000101-264.html">I’m on CNET</a>.  The article, by Stephen Shankland, is fairly even-handed, and a good introduction to the licensing problems, with solid quotes from the MPEGLA.  Of course, it comes from a philosophy of <em>who’s likely to be sued</em>, which is not quite the same as <em>what’s legal</em>.  It also notes that this means a wedding videographer would definitely need to buy an encoder license from MPEG-LA, even if they’ve purchased Final Cut for editing, which is a great example of the point I was trying to make.</p>
<p>Last night on the bus home I saw a woman listening to music on some fancyphone.  To find a song, she would open YouTube’s webpage on the inconveniently small screen, search for an artist + track, play the music video, and turn over the phone in her lap.  To her, it’s basically an audio site.</p>
<p>The inefficiency of this approach is mind-boggling.  At YouTube’s lowest quality setting, the video still costs about quadruple the audio bitrate.  This costs YouTube and the cell carrier a lot of money, for nothing.  Well, not quite nothing.  The accompanying video is supposed to somehow make this experience “promotional” and distinct from buying the track on iTunes (or CD, if you can find somewhere that still sells CDs).</p>
<p>The record companies are underestimating how fast norms shift.  As smartphones become more prevalent and we run up against the aggregate wireless bandwidth limit, I suspect we may yet <del>see</del> hear advertising-supported audio-only YouTube.</p></div>
    </content>
    <updated>2010-03-05T20:11:25Z</updated>
    <category term="Xiph"/>
    <author>
      <name>Ben</name>
    </author>
    <source>
      <id>http://bemasc.net/wordpress</id>
      <link href="http://bemasc.net/wordpress/category/general/projects/xiph/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://bemasc.net/wordpress" rel="alternate" type="text/html"/>
      <subtitle>Like information, but less informative</subtitle>
      <title>Digital Diary of Ben Schwartz » Xiph</title>
      <updated>2010-03-21T03:00:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.schleef.org/blog/?p=56</id>
    <link href="http://www.schleef.org/blog/2010/03/04/dirac-update-2/" rel="alternate" type="text/html"/>
    <title>Dirac Update</title>
    <summary>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’t help that diracvideo.org was lacking CSS and important links for over a [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><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’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’s not surprising that there have been people wandering into the IRC channel wondering if the project is dead.  Um, no.  We’re just quiet.  And there’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’m hoping to do new releases at the pace of about one a month.  (But I’ve said that before…)</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></div>
    </content>
    <updated>2010-03-04T20:10:30Z</updated>
    <category term="dirac"/>
    <category term="video"/>
    <author>
      <name>admin</name>
    </author>
    <source>
      <id>http://www.schleef.org/blog</id>
      <link href="http://www.schleef.org/blog/category/video/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://www.schleef.org/blog" rel="alternate" type="text/html"/>
      <subtitle>Just another WordPress weblog</subtitle>
      <title>Passing on the Left » video</title>
      <updated>2010-03-22T14:00:11Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://xiphmont.livejournal.com/48495.html</id>
    <link href="http://xiphmont.livejournal.com/48495.html" rel="alternate" type="text/html"/>
    <title>Opera 10.5 ships with &amp;lt;video&amp;gt; and Ogg (finally!)</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><img height="64" src="http://www.opera.com/media/images/icon/Opera_512x512.png" width="64"/>

</p><p>I know everyone has already seen this (there's certainly been wide press coverage), but it's worth repeating... Opera 10.5 is out and is the first shipped version with HTML5, &lt;video&gt; and Ogg support out of the box.  It's a long time coming, the first Ogg-enabled betas were in 2007.

</p><p>This brings automatic Ogg support* to all the major browsers except Safari (you have to explicitly install the <a href="http://people.xiph.org/~arek/snapshots/xiph-qt-tt-20090803.dmg">Ogg QuickTime components to give Safari Ogg support</a>)

</p><p>*This is cheating a bit as the automatic Silverlight support for IE hasn't actually shipped yet, just been announced.</p></div>
    </summary>
    <updated>2010-03-04T12:52:13Z</updated>
    <category term="opera"/>
    <category term="html5"/>
    <category term="ogg"/>
    <category term="xiph"/>
    <author>
      <name>Monty</name>
      <email>monty@xiph.org</email>
    </author>
    <source>
      <id>http://xiphmont.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/70118889/829507</logo>
      <author>
        <name/>
        <email>monty@xiph.org</email>
      </author>
      <link href="http://xiphmont.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://xiphmont.livejournal.com/data/rss?tag=xiph" rel="self" type="application/atom+xml"/>
      <subtitle>Monty - LiveJournal.com</subtitle>
      <title>Monty</title>
      <updated>2010-03-22T14:00:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://metavid.org/blog/?p=398</id>
    <link href="http://metavid.org/blog/2010/03/03/html5-video-efforts-sf-meet-up/" rel="alternate" type="text/html"/>
    <title>HTML5 video efforts &amp; SF meet up</title>
    <summary>Its been a while since the last post as I have been pretty busy with wikimedia / kaltura development efforts. I wanted to pass along a few links to highlight what I have been up-to.

First I want to let people know about the html5 video meet-up march 10th  at the wikimedia offices.
TheDj has done [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div class="wp-caption alignleft" id="attachment_399" style="width: 190px;"><a href="http://metavid.org/blog/wp-content/uploads/2010/03/global_13398783.jpeg"><img alt="wikimedia meetup" class="size-full wp-image-399" height="154" src="http://metavid.org/blog/wp-content/uploads/2010/03/global_13398783.jpeg" title="wikimedia meetup" width="180"/></a><p class="wp-caption-text">wikimedia meet up</p></div>
<p>Its been a while since the last post as I have been pretty busy with <a href="http://wikimediafoundation.org/wiki/Home" target="_blank" title="wikimedia foundation">wikimedia</a> / <a href="http://kaltura.com" target="_blank" title="kaltura.com">kaltura</a> development efforts. I wanted to pass along a few links to highlight what I have been up-to.</p>
<ul>
<li>First I want to let people know about the html5 video meet-up <a href="http://www.meetup.com/OpenVideo/calendar/12742761/" target="_blank" title="html5 meetup">march 10th </a> at the wikimedia offices.</li>
<li>TheDj has done a good post outlining recent <a href="http://thedjwrites.blogspot.com/2010/03/html-5-video-player-for-mediawiki-now.html" target="_blank" title="html5 player wikimedia">html5 player work</a>.</li>
<li>I have been hard at work packaging the <a href="http://www.kaltura.org/project/HTML5_Video_Media_JavaScript_Library" target="_blank" title="HTML5 video player library">html5 video library</a> for reuse in projects outside of wikimedia. This means the html5 video player ( and other components ) can easily be used in other web sites.  More on this in the near future.</li>
<li>Also I have been working on some efforts to make it easier to contribute videos to wikimedia. More on this in the near future as well <img alt=";)" class="wp-smiley" src="http://metavid.org/blog/wp-includes/images/smilies/icon_wink.gif"/> </li>
</ul></div>
    </content>
    <updated>2010-03-04T04:57:54Z</updated>
    <category term="coding"/>
    <category term="development"/>
    <category term="mediaWiki"/>
    <category term="html5"/>
    <category term="video player"/>
    <author>
      <name>dale</name>
    </author>
    <source>
      <id>http://metavid.org/blog</id>
      <link href="http://metavid.org/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://metavid.org/blog" rel="alternate" type="text/html"/>
      <subtitle>This Blog covers the metavid project and related politics.</subtitle>
      <title>Metavid Blog</title>
      <updated>2010-03-04T04:57:54Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://bemasc.net/wordpress/?p=1551</id>
    <link href="http://bemasc.net/wordpress/2010/02/27/lessig/" rel="alternate" type="text/html"/>
    <title>Lessig</title>
    <summary>On Thursday night I attended a great lecture by Lawrence Lessig, founder of the Free Culture movement.  His lectures edge into the realm of spoken-word performance.  The recording, if you’d like to see it, is here.  Flumotion did a great job with the live stream, although they didn’t quite seem to have [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>On Thursday night I attended a great lecture by Lawrence Lessig, founder of the Free Culture movement.  His lectures edge into the realm of spoken-word performance.  The recording, if you’d like to see it, is <a href="http://www.flumotion.com/blog/2010/02/26/flumotion-com/copyright-in-the-digital-age-video-lecture-by-lawrence-lessig/">here</a>.  Flumotion did a great job with the live stream, although they didn’t quite seem to have enough bandwidth for the number of viewers they got, and they used a Theora encoder from four years ago.</p>
<p>The talk’s central theme, I think, is easy enough to describe: video (and multimedia) is moving into a position in our culture comparable to writing, and so we need to treat movies the way we treat text.  Of course, that’s only the smallest fraction of the wide range of topics covered, from the dangers of a hazy Fair Use exemption (“Fair Use is the right to hire a lawyer”) to a plug for Lessig’s anticorruption work at <a href="http://www.fixcongressfirst.org/">Fix Congress First!</a>.</p></div>
    </content>
    <updated>2010-02-27T15:40:40Z</updated>
    <category term="Xiph"/>
    <author>
      <name>Ben</name>
    </author>
    <source>
      <id>http://bemasc.net/wordpress</id>
      <link href="http://bemasc.net/wordpress/category/general/projects/xiph/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://bemasc.net/wordpress" rel="alternate" type="text/html"/>
      <subtitle>Like information, but less informative</subtitle>
      <title>Digital Diary of Ben Schwartz » Xiph</title>
      <updated>2010-03-21T03:00:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.gingertech.net/?p=941</id>
    <link href="http://blog.gingertech.net/2010/02/20/googles-challenges-of-freeing-vp8/" rel="alternate" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/02/20/googles-challenges-of-freeing-vp8/#comments" rel="replies" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/02/20/googles-challenges-of-freeing-vp8/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Google’s challenges of freeing VP8</title>
    <summary xml:lang="en">Since On2 Technology’s stockholders have approved the merger with Google, there are now first requests to Google to open up VP8.
I am sure Google is thinking about it. But … what does “it” mean?
Freeing VP8
Simply open sourcing it and making it available under a free license doesn’t help. That just provides open source code for [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>Since <a href="http://www.on2.com/index.php?id=472&amp;news_id=698">On2 Technology’s stockholders have approved the merger with Google</a>, there are now <a href="http://www.fsf.org/blogs/community/google-free-on2-vp8-for-youtube">first requests to Google to open up VP8</a>.</p>
<p>I am sure Google is thinking about it. But … what does “it” mean?</p>
<p><strong>Freeing VP8</strong><br/>
Simply open sourcing it and making it available under a free license doesn’t help. That just provides open source code for a codec where relevant patents are held by a commercial entity and any other entity using it would still need to be afraid of using that technology, even if it’s use is free.</p>
<p>So, Google has to make the patents that relate to VP8 available under an irrevocable, royalty-free license for the VP8 open source base, but also for any independent implementations of VP8. This at least guarantees to any commercial entity that Google will not pursue them over VP8 related patents.</p>
<p>Now, this doesn’t mean that there are no submarine or unknown patents that VP8 infringes on. So, Google needs to also undertake an intensive patent search on VP8 to be able to at least convince themselves that their technology is not infringing on anyone else’s. For others to gain that confidence, Google would then further have to indemnify anyone who is making use of VP8 for any potential patent infringement.</p>
<p>I believe – from what I have seen in the discussions at the W3C – it would only be that last step that will make companies such as Apple have the confidence to adopt a “free” codec.</p>
<p>An alternative to providing indemnification is the standardisation of VP8 through an accepted video standardisation body. That would probably need to be ISO/MPEG or SMPTE, because that’s where other video standards have emerged and there are a sufficient number of video codec patent holders involved that a royalty-free publication of the standard will hold a sufficient number of patent holders “under control”. However, such a standardisation process takes a long time. For HTML5, it may be too late.</p>
<p><strong>Technology Challenges</strong><br/>
Also, let’s not forget that VP8 is just a video codec. A video codec alone does not encode a video. There is a need for an audio codec and a encapsulation format. In the interest of staying all open, Google would need to pick Vorbis as the audio codec to go with VP8. Then there would be the need to put Vorbis and VP8 in a container together – this could be Ogg or MPEG or QuickTime’s MOOV. So, apart from all the legal challenges, there are also technology challenges that need to be mastered.</p>
<p>It’s not simple to introduce a “free codec” and it will take time!</p>
<p><strong>Google and Theora</strong><br/>
There is actually something that Google should do before they start on the path of making VP8 available “for free”: They should formulate a new license agreement with Xiph (and the world) over VP3 and Theora. Right now, the <a href="http://web.archive.org/web/20011026032511/http://vp3.com/license/vp32_opensource_license_9-6-01.txt">existing license that was provided by On2 Technologies to Theora (link is to an early version of On2’s open source license of VP3)</a> was only for the codebase of VP3 and any modifications of it, but doesn’t in an obvious way apply to an independent re-implementations of VP3/Theora. The new agreement between Google and Xiph should be about the patents and not about the source code. (UPDATE: The actual agreement with Xiph apparently also covers re-implementations – see comments below.)</p>
<p>That would put Theora in a better position to be universally acceptable as a baseline codec for HTML5. It would allow, e.g. Apple to make their own implementation of Theora – which is probably what they would want for ipods and iphones. Since Firefox, Chrome, and Opera already support Ogg Theora in their browsers using the on2 licensed codebase, they must have decided that the risk of submarine patents is low. So, presumably, Apple can come to the same conclusion.</p>
<p><strong>Free codecs roadmap</strong><br/>
I see this as the easiest path towards getting a universally acceptable free codec. Over time then, as VP8 develops into a free codec, it could become the successor of Theora on a path to higher quality video. And later still, when the Internet will handle large resolution video, we can move on to the BBC’s Dirac/VC2 codec. It’s where the future is. The present is more likely here and now in Theora.</p>
<p><em><br/>
<strong>ADDITION:</strong><br/>
Please note the comments from Monty from Xiph and from Dan, ex-On2, about the intent that VP3 was to be completely put into the hands of the community. Also, Monty notes that in order to implement VP3, you do not actually need any On2 patents. So, there is probably not a need for Google to refresh that commitment. Though it might be good to reconfirm that commitment.<br/>
</em></p></div>
    </content>
    <updated>2010-02-26T02:12:12Z</updated>
    <published>2010-02-20T07:57:39Z</published>
    <category scheme="http://blog.gingertech.net" term="Digital Media"/>
    <category scheme="http://blog.gingertech.net" term="Open Source"/>
    <category scheme="http://blog.gingertech.net" term="open codecs"/>
    <category scheme="http://blog.gingertech.net" term="standards"/>
    <category scheme="http://blog.gingertech.net" term="free"/>
    <category scheme="http://blog.gingertech.net" term="HTML5 video"/>
    <category scheme="http://blog.gingertech.net" term="Ogg Theora"/>
    <category scheme="http://blog.gingertech.net" term="open video"/>
    <category scheme="http://blog.gingertech.net" term="patents"/>
    <category scheme="http://blog.gingertech.net" term="theora"/>
    <category scheme="http://blog.gingertech.net" term="video"/>
    <category scheme="http://blog.gingertech.net" term="video codec"/>
    <author>
      <name>silvia</name>
      <uri>http://blog.gingertech.net/</uri>
    </author>
    <source>
      <id>http://blog.gingertech.net/feed/atom/</id>
      <link href="http://blog.gingertech.net" rel="alternate" type="text/html"/>
      <link href="http://blog.gingertech.net/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Silvia's blog</subtitle>
      <title xml:lang="en">ginger's thoughts</title>
      <updated>2010-03-11T00:43:49Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://bluishcoder.co.nz/2010/02/25/vorbis-player-written-in-pure</id>
    <link href="http://bluishcoder.co.nz/2010/02/25/vorbis-player-written-in-pure.html" rel="alternate" type="text/html"/>
    <title>Vorbis Player implemented in Pure</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>After writing the <a href="http://www.bluishcoder.co.nz/2010/02/20/pure-preforking-echo-server-example.html">preforking echo server example</a> in <a href="http://code.google.com/p/pure-lang/">Pure</a> I wanted to try something a bit more complex. I’ve written Ogg players in various languages before so I decided to do one in Pure to compare. Here’s some of the ones I’ve written in the past:</p>

<ul>
<li><a href="http://www.bluishcoder.co.nz/2009/03/oggplayer-simple-ogg-player-using.html">oggplayer</a></li>

<li><a href="http://www.bluishcoder.co.nz/2009/06/26/decoding-vorbis-files-with-libvorbis.html">plogg</a></li>

<li><a href="http://tech.groups.yahoo.com/group/iolanguage/message/11610">Io Language Addons</a></li>

<li><a href="http://www.bluishcoder.co.nz/2007/05/ogg-theora-support-for-factor.html">Factor Ogg Player</a></li>

<li>An unreleased Haskell Vorbis player</li>
</ul>

<p>I wrapped the libogg and libvorbis libraries using the Pure FFI. A program ‘pure-gen’ is included with Pure that will generate FFI wrappers given a C include file. I ran this against libogg and libvorbis. The generated Pure wrappers look like:</p>

<pre><code>extern int ogg_page_version(ogg_page*);
extern int ogg_page_continued(ogg_page*);
extern int ogg_page_bos(ogg_page*);</code></pre>

<p>As you can see Pure FFI definitions look very much like the C definitions.</p>

<p>I decided to model an Ogg file as a list of physical pages. This is esentially a list containing elements of the libogg ogg_page object. I have a Pure function that will take this list of pages and return a list of packets for each logical bitstream in the file. For vorbis playback I take this list of packets for the vorbis bitstream and produce a list of decoded PCM data.</p>

<p>Pure is a strict language by default but provides an ’&amp;’ special form to perform lazy evaluation. I use this to make sure all the returned lists mentioned above are lazy. Playing the lazy list of decoded PCM data never loads the entire file in memory. The file is read, converted into packets and decoded as each element of the PCM data list is requested.</p>

<p>For audio playback I use <a href="http://connect.creativelabs.com/openal/default.aspx">OpenAL</a>. I queue the PCM data to an OpenAL source up to a limit of 50 queued items, removing them as they get processed and adding new ones when room becomes available.</p>

<p>Here’s what some of the API to process the Ogg files looks like in Pure. First load the player code. This will also load the Ogg, Vorbis and OpenAL wrappers:</p>

<pre><code>$ pure -i player.pure</code></pre>

<p>From the Pure REPL, play a vorbis file:</p>

<pre><code>&gt; play_vorbis (sources!0) "test.ogg";</code></pre>

<p>Load an Ogg file getting a lazy list of all pages in the file:</p>

<pre><code>&gt; using namespace ogg;
&gt; let p = file_pages "test.ogg";
&gt; p;
ogg_page (#&lt;pointer 0x9e61cc8&gt;,[...]):#&lt;thunk 0xb7259b38&gt;</code></pre>

<p>Get a list of all packets and the serial number of the first logical bitstream in the list of pages:</p>

<pre><code>&gt; let (stream1,serialno) = packets p;
&gt; serialno;
1426627898
&gt; stream1;
ogg_packet (#&lt;pointer 0x9dd98f0&gt;,[...]):#&lt;thunk 0xb725bce0&gt;</code></pre>

<p>Get the next logical bitstream:</p>

<pre><code>&gt; let p2 = filter (\x-&gt;ogg_page_serialno x ~= serialno) p;
&gt; p2;
#&lt;thunk 0xb725dc30&gt;
&gt; let (stream2,serialno2) = packets p2;
&gt; serialno2;
629367739
&gt; stream2;
ogg_packet (#&lt;pointer 0x9cfcf08&gt;,[...]):#&lt;thunk 0xb725c988&gt;</code></pre>

<p>Note that all these results are lazily evaluated so the entire file is not loaded into memory. If we look at the original list of pages you’ll see what has been read so far (two pages):</p>

<pre><code>&gt; p;
ogg_page (...):ogg_page (...):#&lt;thunk 0xb725dd98&gt;</code></pre>

<p>Get all the streams in the file:</p>

<pre><code>&gt; let s = all_streams p;</code></pre>

<p>Get all the vorbis streams:</p>

<pre><code>&gt; let v = vorbis_streams s;</code></pre>

<p>Get the first vorbis stream. I ignore the serial number here (this is what the _ does):</p>

<pre><code>&gt; let (v1, _) = v!0;</code></pre>

<p>Decode the vorbis header packets and intialize a vorbis decoder for the first vorbis stream:</p>

<pre><code>&gt; let decoder = vorbis_header v1;</code></pre>

<p>Get a lazy list of all the decoded PCM data from the vorbis stream:</p>

<pre><code>&gt; let pcm = pcm_data decoder;</code></pre>

<p>The mechanics of getting the decoding floating point data from libvorbis into Pure and then back to the OpenAL C API is made easier due to it being possible to easily convert to and from raw C pointers and Pure matrix objects.</p>

<p>For example, the data returned from the vorbis call to decode the data is an array of pointers pointing to an array of floats. To convert this to a Pure matrix with dimensions (c,n) where ‘c’ is the number of channels and ‘n’ is the number of samples:</p>

<pre><code>vorbis_synthesis_read dsp samples $$ matrix m
when
  f0 = get_pointer data;
  floats = [get_pointer (f0+(x*4))|x=0..(channels-1)];
  m = map (float_matrix samples) floats;
end;</code></pre>

<p>This code uses a list comprehension to return a list of ‘pointer to array of floats’. One pointer for each channel in the audio data. It then maps over this list producing a new list containing a matrix of float’s. This is list of matrices each of which contains the audio data for a channel. The ‘matrix m’ call converts this to a single matrix of dimensions (c,n).</p>

<p>OpenAL expects the data as a pointer to a contiguous matrix of floats with dimensions (n,c) so when writing to OpenAL the matrix needs to be transposed:</p>

<pre><code>play_pcm source rate pcm@(x:xs) =
  ....
  queue_sample source rate (transpose x) $$
  play source $$
  play_pcm source rate xs;</code></pre>

<p>This transposed matrix is later converted from floats to 16 bit integers and ‘packed’ so it is contiguous in memory, and a pointer to the raw memory passed to OpenAL:</p>

<pre><code>buffer16 s = pack (map clamp s);  
...
data = buffer16 ...pcmdata...;
alBufferData ... (cooked (short_pointer NULL data)) ((#data) * (sizeof sshort_t)) ...;</code></pre>

<p>The ‘cooked’ call means the C memory has ‘free’ called on it when nothing in Pure is holding onto it anymore.</p>

<p>One downside with lazy lists is it can be easy to accidently read the entire file and decode everything before playing. This will cause issues with large Ogg files. I managed to avoid that and files play in constant memory. An <a href="http://okmij.org/ftp/Streams.html">iteratee</a> style approach might be interesting to try as an alternative to lazy lists. I’d like to try decoding Theora files and doing a/v sync in Pure at some point as well.</p>

<p>I haven’t used Pure much but it seemed to be fairly simple to put this together. I’d be interested in feedback on the approach (using lazy lists) and Pure style issues in the code.</p>

<p>The code for this is at <a href="http://github.com/doublec/pure-ogg-player">http://github.com/doublec/pure-ogg-player</a>.</p></div>
    </content>
    <updated>2010-02-25T01:00:00Z</updated>
    <source>
      <id>http://bluishcoder.co.nz/</id>
      <author>
        <name>Chris Double</name>
        <email>chris.double@double.co.nz</email>
      </author>
      <link href="http://bluishcoder.co.nz/atom.xml" rel="self" type="application/atom+xml"/>
      <link href="http://bluishcoder.co.nz/" rel="alternate" type="text/html"/>
      <title>Bluish Coder</title>
      <updated>2010-03-12T00:44:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-19599775.post-8471571029792061829</id>
    <link href="http://cristianadam.blogspot.com/feeds/8471571029792061829/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=19599775&amp;postID=8471571029792061829" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/19599775/posts/default/8471571029792061829" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/19599775/posts/default/8471571029792061829" rel="self" type="application/atom+xml"/>
    <link href="http://cristianadam.blogspot.com/2010/02/ie-tag-take-two.html" rel="alternate" type="text/html"/>
    <title>IE &lt;video&gt; tag - Take Two</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Recently I have released a new version of Xiph.Org Ogg Codecs (grab it from <a href="http://xiph.org/dshow/downloads/">here</a>), this new version includes a few Theora and FLAC bugfixes, better Windows 7 support and a Technical Preview of the &lt;video&gt; tag for Internet Explorer.<br/><br/>By Technical Preview I mean only basic playback, no seeking, no controls, no HTML5 interfaces.<br/><br/>I have made a screen cast showing this feature:<br/><br/><video xmlns="http://www.w3.org/1999/xhtml/video" controls="controls" src="http://upload.wikimedia.org/wikipedia/commons/4/49/IEVideo_Win7_RC.ogv" width="95%">Your browser does not support &lt;video&gt; tag</video><br/><br/>To enable &lt;video&gt; tag for Internet Explorer you need to add <em>xmlns="http://www.w3.org/1999/xhtml/video"</em> attribute.<br/><br/><b>Edit:</b> It works only when Internet Explorer is in <a href="http://en.wikipedia.org/wiki/Quirks_mode">Quirks mode</a><br/><br/>Mozilla's <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=435339">Bug 435339</a> - DirectShow backend for HTML5 video element - has helped me a lot, to say the least (thank you Chris Pearce).<br/><br/>The webpage used in screencast is: <a href="http://people.xiph.org/~maikmerten/demos/bigbuckbunny-videoonly.html">http://people.xiph.org/~maikmerten/demos/bigbuckbunny-videoonly.html</a> with the xmlns attribute for &lt;video&gt;. Note that I have copied the webpage and the movie on my webserver, that page does not have the xmlns attribute.<br/><br/>Hope it works for you as it did for me in the screen cast above :) <br/>Download the 32bit version installer from <a href="http://downloads.xiph.org/releases/oggdsf/oggcodecs_0.82.16930-win32.exe">here</a> (1,09Mb).<br/><br/><b>Edit</b>: In order to use the &lt;video&gt; tag on Internet Explorer 6.0 and 7.0 please read my first <a href="http://cristianadam.blogspot.com/2010/01/ie-tag.html">IE &lt;video&gt; tag</a> blog entry.<br/><br/>I have found out that there is an incompatibility between Windows XP and VMware while using the DirectShow Video Mixing Renderer 7 filter.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/19599775-8471571029792061829?l=cristianadam.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-23T22:16:16Z</updated>
    <published>2010-02-22T00:30:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="html5 video"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="Internet Explorer"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="xiph"/>
    <author>
      <name>Cristian Adam</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/16735332457747999220</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-19599775</id>
      <author>
        <name>Cristian Adam</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/16735332457747999220</uri>
      </author>
      <link href="http://cristianadam.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/19599775/posts/default/-/xiph" rel="self" type="application/atom+xml"/>
      <link href="http://cristianadam.blogspot.com/search/label/xiph" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>technical weblog.</subtitle>
      <title>Cristian Adam's</title>
      <updated>2010-03-20T10:59:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://xiphmont.livejournal.com/48207.html</id>
    <link href="http://xiphmont.livejournal.com/48207.html" rel="alternate" type="text/html"/>
    <title>Ongoing Vorbis work, libao rises again, and a demo!</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>It's amazing how software sidetracks can plow through years of time. I'm finally getting back to Vorbis (and other audio development) after a minor two year video distraction that saw the completion of a new experimantal Theora encoder (Thusnelda) last year, and the beginning of the next experimental Theora encoder which Tim has named Ptalarbvorm.  Ptalarbvorm is already showing further large improvements over Thusnelda (honestly, I think he's already doubled again on Thusnelda).

</p><p>But this post is about Vorbis.

</p><p>One thing on the original Vorbis bullet list was surround encoding.  Vorbis was always surround capable and the software is happy to encode as many channels as you like, but once you're past stereo, everything is encoded as entirely discrete channels.  This hasn't been so bad really; despite discrete channels, Vorbis's coding efficiency compares favorably to other surround-capable formats.  That said, Vorbis can do better.

</p><p>When beginning surround optimization work on Vorbis, I found the encoder handled remapping the channel order of input formats, but it didn't always do it properly (FLAC and some WAV inputs were frotzed).  I also found that ogg123 needed updating to handle output order.  These improvements will be released in vorbis-tools 1.4.0 sometime soon.

</p><p>The hard part of the tool updates turned out to be libao, which both had no concept of channel ordering, and had also bitrotted substantially while maintainerless.  The idea had been that Lennart Poettering's SydneyAudio was going to replace libao so there was no sense continuing to develop libao.  We'd just use libao while we waited and not put any more resources into it.  Unfortunately, Lennart has been entirely occupied fighting his PulseAudio battles, and this is frankly a more important use of his time. SydneyAudio is no closer to completion than it was a few years ago.  We can't continue to wait for it.

</p><p>So, I'm announcing the resumption of active development and maintenance of libao until such time as there's something better to replace it.

</p><p>I've made up a <a href="http://people.xiph.org/~xiphmont/surround/demo.html">surround demo page</a> (like the ones I made during Thusnelda development) with more details on vorbis-tools, libao, and Vorbis's in-progress surround hacking.  It goes into alot more detail about Vorbis's surround and channel coupling system with diagrams and samples. I hope folks like it!</p></div>
    </summary>
    <updated>2010-02-23T05:51:52Z</updated>
    <category term="libao"/>
    <category term="ogg"/>
    <category term="vorbis"/>
    <category term="xiph"/>
    <author>
      <name>Monty</name>
      <email>monty@xiph.org</email>
    </author>
    <source>
      <id>http://xiphmont.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/70118889/829507</logo>
      <author>
        <name/>
        <email>monty@xiph.org</email>
      </author>
      <link href="http://xiphmont.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://xiphmont.livejournal.com/data/rss?tag=xiph" rel="self" type="application/atom+xml"/>
      <subtitle>Monty - LiveJournal.com</subtitle>
      <title>Monty</title>
      <updated>2010-03-22T14:00:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.gingertech.net/?p=952</id>
    <link href="http://blog.gingertech.net/2010/02/23/html5-media-and-accessibility-presentation/" rel="alternate" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/02/23/html5-media-and-accessibility-presentation/#comments" rel="replies" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/02/23/html5-media-and-accessibility-presentation/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">HTML5 Media and Accessibility presentation</title>
    <summary xml:lang="en">Today, I was invited to give a talk at my old workplace CSIRO about the HTML5 media elements and accessibility.
A lot of the things that have gone into Ogg and that are now being worked on in the W3C in different working groups – including the Media Fragments and HTML5 WGs – were also of [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>Today, I was invited to give a talk at my old workplace CSIRO about the HTML5 media elements and accessibility.</p>
<p>A lot of the things that have gone into Ogg and that are now being worked on in the W3C in different working groups – including the Media Fragments and HTML5 WGs – were also of concern in the Annodex project that I worked on while at CSIRO. So I was rather excited to be able to report back about the current status in HTML5 and where we’re at with accessibility features.</p>
<p>&lt;iframe height="300px" src="http://blog.gingertech.net/wp-content/uploads/2010/02/HAIL_20100223/" width="450px"&gt;&lt;/iframe&gt;</p>
<p><a href="http://blog.gingertech.net/wp-content/uploads/2010/02/HAIL_20100223/">Check out the presentation here</a>. It contains a good collection of links to exciting demos of what is possible with the new HTML5 media elements when combined with other HTML features.</p>
<p>I tried something now with this presentation: I wrote it in <a href="http://meyerweb.com/eric/tools/s5/">a tool called S5</a>, which makes use only of HTML features for the presentation. It was quite a bit slower than I expected, e.g. reloading a page always included having to navigate to that page. Also, it’s not easily possible to do drawings, unless you are willing to code them all up in HTML. But otherwise I have found it very useful for, in particular, including all the used URLs and video element demos directly in the slides. I was inspired with using this tool by Chris Double’s slides from LCA about <a href="http://www.bluishcoder.co.nz/2010/02/13/lca-2010-implementing-html5-video-in-firefox.html">implementing HTML 5 video in Firefox</a>.</p></div>
    </content>
    <updated>2010-02-23T03:10:15Z</updated>
    <published>2010-02-23T03:05:51Z</published>
    <category scheme="http://blog.gingertech.net" term="Digital Media"/>
    <category scheme="http://blog.gingertech.net" term="Open Source"/>
    <category scheme="http://blog.gingertech.net" term="open codecs"/>
    <category scheme="http://blog.gingertech.net" term="standards"/>
    <category scheme="http://blog.gingertech.net" term="video accessibility"/>
    <category scheme="http://blog.gingertech.net" term="accessibility"/>
    <category scheme="http://blog.gingertech.net" term="html5 media"/>
    <category scheme="http://blog.gingertech.net" term="presentation"/>
    <author>
      <name>silvia</name>
      <uri>http://blog.gingertech.net/</uri>
    </author>
    <source>
      <id>http://blog.gingertech.net/feed/atom/</id>
      <link href="http://blog.gingertech.net" rel="alternate" type="text/html"/>
      <link href="http://blog.gingertech.net/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Silvia's blog</subtitle>
      <title xml:lang="en">ginger's thoughts</title>
      <updated>2010-03-11T00:43:49Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://bluishcoder.co.nz/2010/02/22/html5-video-element-for-internet-explorer</id>
    <link href="http://bluishcoder.co.nz/2010/02/22/html5-video-element-for-internet-explorer.html" rel="alternate" type="text/html"/>
    <title>HTML 5 Video Element for Internet Explorer</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Cristian Adam has been working on a plugin for Internet Explorer that implements the <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html">HTML 5 video element</a>.</p>

<p>He has <a href="http://cristianadam.blogspot.com/2010/02/ie-tag-take-two.html">released</a> a new version of the Xiph Ogg Codecs with a technical preview of the &lt;video&gt; element for IE. A screencast of it working is available <a href="http://cristianadam.blogspot.com/2010/02/ie-tag-take-two.html">at Cristian’s website</a>.</p></div>
    </content>
    <updated>2010-02-22T00:54:00Z</updated>
    <source>
      <id>http://bluishcoder.co.nz/</id>
      <author>
        <name>Chris Double</name>
        <email>chris.double@double.co.nz</email>
      </author>
      <link href="http://bluishcoder.co.nz/atom.xml" rel="self" type="application/atom+xml"/>
      <link href="http://bluishcoder.co.nz/" rel="alternate" type="text/html"/>
      <title>Bluish Coder</title>
      <updated>2010-03-12T00:44:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://bluishcoder.co.nz/2010/02/20/pure-preforking-echo-server-example</id>
    <link href="http://bluishcoder.co.nz/2010/02/20/pure-preforking-echo-server-example.html" rel="alternate" type="text/html"/>
    <title>Pure Preforking Echo Server Example</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>A few months back there were some examples of preforking servers implemented in various languages showing how posix API’s could be used in those languages. Some examples were:</p>

<ul>
<li>Ruby: <a href="http://tomayko.com/writings/unicorn-is-unix">I like Unicorn because it’s Unix</a></li>

<li>Python: <a href="http://jacobian.org/writing/python-is-unix/">Python is Unix</a></li>

<li><a href="http://gist.github.com/240095">PHP</a></li>

<li><a href="http://gist.github.com/204301">C</a></li>
</ul>

<p>I’m learning the <a href="http://code.google.com/p/pure-lang/">Pure programming language</a> and took a stab at doing a Pure implementation. Pure comes with a good FFI for calling C functions and the needed posix calls are provided in the ‘posix’ library that comes with it.</p>

<p>It doesn’t have any socket routines however but there is a library by Mike Maul called <a href="http://code.google.com/p/pure-lang-extras/">pure-lang-extras</a> that provides this. With pure-lang-extras installed the preforking echo server looks like this:</p>

<pre><code>using ffi, system;
using posix, posix::socket;
using namespace posix, posix::socket;

let sockfd = socket AF_INET SOCK_STREAM 0;
let yes = {1};
setsockopt sockfd SOL_SOCKET SO_REUSEADDR (int_pointer yes) (sizeof sint_t) 0;
let ai = make_sockaddr AF_INET "*" 5000;
bind_socket sockfd ai;
listen sockfd 10;

fork_child f = if pid == 0 then f pid $$ exit 0 else pid when pid = fork end;

child pid  =  fprintf file "Child %d echo&gt; " getpid $$
              fflush file $$
              fprintf file "%s\n" (fgets file) $$
              fclose file $$
              child pid 
              when
                client = accept_socket sockfd ai;
                file = fdopen client "r+";
              end;

let children = [fork_child child|x=0..2];
do (printf "Forked: %d\n") children;
do (\n-&gt;(waitpid n NULL 0)) children;</code></pre>

<p>This can be run (assuming it’s in a file called ‘test.pure’) with:</p>

<pre><code>$ pure -x test.pure
Forked: 10433
Forked: 10434
Forked: 10435</code></pre>

<p>It will fork three worker processes all waiting on the same socket provided by the main process. The main process waits until all three worker processes complete or are killed. You can test it out by using telnet to port 5000:</p>

<pre><code>$ telnet localhost 5000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Child 10433 echo&gt; test test test
test test test
Connection closed by foreign host.</code></pre>

<p>If you do this a few times you’ll see it cycle through the worker processes.</p>

<p>The example code mostly does posix calls and thin wrapper’s around C functions so it doesn’t show off much of the interesting parts of Pure. Pure has automatic currying (or partial evaluation) of functions by missing arguments from the function. For example, this code:</p>

<pre><code>do (printf "Forked: %d\n") children;</code></pre>

<p><code>printf</code> is like the C <code>printf</code> function. It takes a format string followed by a tuple containing arguments for each format directive in that string. In the example above it has one of these, ‘%d’. The code <code>(printf "Forked: %d\n")</code> is missing the last argument expected to <code>printf</code>. Thanks to partial evaluation this evaluates to a function that takes one argument. <code>do</code> calls this function for each element in the <code>children</code> list, passing the list element to the function resulting in the <code>printf</code> call. It’s equivalent to this more verbose code:</p>

<pre><code>do (\n -&gt; printf "Forked: %d\n" n) children;</code></pre>

<p>Another Pure feature used is the ability to get raw pointers to matrices. The code <code>{1}</code> is a one row matrix containing one element, the interger ‘1’. A later line gets a raw pointer to this, converting it to a array of integers if it isn’t already in that format: <code>int_pointer yes</code>.</p>

<p>To fork the child processes I use a list comprehension:</p>

<pre><code>let children = [fork_child child|x=0..2];</code></pre>

<p><code>0..2</code> is a short hand syntax to create a list of numbers from 0 to 2. The <code>[...|....]</code> is a list comprehension. The left hand side is called for each element of the right hand side and the result accumulated in a list. For example, at the Pure REPL:</p>

<pre><code>&gt; [x*2|x=0..5];
[0,2,4,6,8,10]</code></pre>

<p>For more on Pure there is quite a bit of documentation:</p>

<ul>
<li><a href="http://pure-lang.googlecode.com/svn/docs/pure-intro/pure-intro.pdf">The Pure Programming Language</a> (PDF)</li>

<li><a href="http://pure-lang.googlecode.com/svn/docs/pure.html">The Pure Manual</a></li>

<li><a href="http://pure-lang.googlecode.com/svn/docs/purelib.html">The Pure Library Manual</a></li>
</ul></div>
    </content>
    <updated>2010-02-20T10:50:00Z</updated>
    <source>
      <id>http://bluishcoder.co.nz/</id>
      <author>
        <name>Chris Double</name>
        <email>chris.double@double.co.nz</email>
      </author>
      <link href="http://bluishcoder.co.nz/atom.xml" rel="self" type="application/atom+xml"/>
      <link href="http://bluishcoder.co.nz/" rel="alternate" type="text/html"/>
      <title>Bluish Coder</title>
      <updated>2010-03-12T00:44:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://bluishcoder.co.nz/2010/02/19/comparing-colour-space-conversion-libraries</id>
    <link href="http://bluishcoder.co.nz/2010/02/19/comparing-colour-space-conversion-libraries.html" rel="alternate" type="text/html"/>
    <title>Comparing Colour Space Conversion Libraries</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>The <a href="http://www.bluishcoder.co.nz/2009/06/25/decoding-theora-files-using-libtheora.html">libtheora api</a> gives <a href="http://en.wikipedia.org/wiki/YCbCr">YCbCr data</a> as the result of a decoded frame. The current method of displaying data through Firefox requires it to be converted to <a href="http://en.wikipedia.org/wiki/RGBA_color_space">RGBA</a>. The conversion of YCbCr to RGBA turns out to be a bottleneck.</p>

<p>In current Firefox builds we use the conversion routines provided by <a href="http://wiki.xiph.org/OggPlay">liboggplay</a>. The Ogg backend is <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=531340">being modified</a> to reduce the third party library usage (Started by me and continued now by <a href="http://pearce.org.nz/">Chris Pearce</a>) and the liboggplay usage will go away. I looked at some of the colour space conversion routines available to get an indication of their relative performance.</p>

<p>I tested the following colour space conversion routines:</p>

<ul>
<li>Using integer math and lookup tables.</li>

<li>A basic C version using floating point math.</li>

<li><a href="http://wiki.xiph.org/OggPlay">liboggplay</a>. BSD license.</li>

<li><a href="http://framewave.sourceforge.net/">FrameWave</a> (also known as the AMD Performance Library). Apache License 2.0.</li>

<li><a href="http://software.intel.com/en-us/intel-ipp/">Intel Integrated Performance Primitives</a>. Commercial license.</li>

<li><a href="http://blog.sublimeintervention.com/archive/2008/Mar-21.html">Moonlight’s colour space conversion routines</a>. I tested the C and MMX implementation from Moonlight. LGPL2 license.</li>

<li>The conversion routines from <a href="http://code.google.com/chromium/">Chromium</a>. BSD license.</li>

<li><a href="http://git.mplayerhq.hu/?p=libswscale;a=summary">libswscale</a>. LGPL license.</li>
</ul>

<p>For testing I modified <a href="http://github.com/doublec/plogg">plogg</a> to decode a theora file and time the colour space conversion portion of the process. I have a series of command line switches to pick the implementation of the colour space conversion. I used a movie trailer Theora file I had handy (480x260) and these were the results:</p>
<table><thead><tr><th>Implementation</th><th>Total Time</th><th>Frame Time</th><th>Relative</th></tr></thead><tbody><tr><td style="text-align: left;">FrameWave</td><td style="text-align: right;">1.00752</td><td style="text-align: right;">0.00033584</td><td style="text-align: right;">0.65</td>
</tr><tr><td style="text-align: left;">Chromium</td><td style="text-align: right;">1.02053</td><td style="text-align: right;">0.00034017</td><td style="text-align: right;">0.66</td>
</tr><tr><td style="text-align: left;">Intel IPP (optimized)</td><td style="text-align: right;">1.32477</td><td style="text-align: right;">0.00044159</td><td style="text-align: right;">0.85</td>
</tr><tr><td style="text-align: left;">Moonlight MMX</td><td style="text-align: right;">1.35934</td><td style="text-align: right;">0.00045311</td><td style="text-align: right;">0.87</td>
</tr><tr><td style="text-align: left;">liboggplay</td><td style="text-align: right;">1.55765</td><td style="text-align: right;">0.00051921</td><td style="text-align: right;">1.00</td>
</tr><tr><td style="text-align: left;">libswscale</td><td style="text-align: right;">2.68307</td><td style="text-align: right;">0.00089435</td><td style="text-align: right;">1.72</td>
</tr><tr><td style="text-align: left;">Intel IPP (default)</td><td style="text-align: right;">4.21107</td><td style="text-align: right;">0.00140369</td><td style="text-align: right;">2.70</td>
</tr><tr><td style="text-align: left;">Integer C</td><td style="text-align: right;">4.81204</td><td style="text-align: right;">0.00160401</td><td style="text-align: right;">3.09</td>
</tr><tr><td style="text-align: left;">Moonlight C</td><td style="text-align: right;">6.80419</td><td style="text-align: right;">0.00226806</td><td style="text-align: right;">4.37</td>
</tr><tr><td style="text-align: left;">Floating Point C</td><td style="text-align: right;">11.16770</td><td style="text-align: right;">0.00372257</td><td style="text-align: right;">7.17</td>
</tr></tbody></table>
<p>The ‘Total Time’ is the time spent in the conversion code for every frame in the file (3,000 frames). ‘Frame Time’ is the average time per frame. ‘Relative’ is the time taken relative to the liboggplay implementation. Since this is what we are currently using this makes it easy to see what sort of improvement we could get by switching. The testing was done on a 1.83 GHz Core Duo laptop running Linux.</p>

<p>From the results it seems that FrameWave and Chromium are the fastest and very close in performance. The license for the Chromium colour space conversion code is probably a bit better fit for our usage though and it’s smaller and easier to integrate if we were to choose to use it. The ‘default’ Intel IPP version uses the non-processor specific implementation whereas the ‘optimized’ uses routines optimized for the particular processor on the machine I used for testing.</p>

<p>I’m interested in any comments on the libraries listed and recommendations for other libraries that I could try. I’ll put the source for the test program on github shortly and update this post with the link. Results from different machines would be useful.</p></div>
    </content>
    <updated>2010-02-19T04:00:00Z</updated>
    <source>
      <id>http://bluishcoder.co.nz/</id>
      <author>
        <name>Chris Double</name>
        <email>chris.double@double.co.nz</email>
      </author>
      <link href="http://bluishcoder.co.nz/atom.xml" rel="self" type="application/atom+xml"/>
      <link href="http://bluishcoder.co.nz/" rel="alternate" type="text/html"/>
      <title>Bluish Coder</title>
      <updated>2010-03-12T00:44:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.gingertech.net/?p=928</id>
    <link href="http://blog.gingertech.net/2010/02/19/accessibility-support-in-ogg-and-liboggplay/" rel="alternate" type="text/html"/>
    <link href="http://blog.gingertech.net/wp-content/uploads/2010/02/elephants_dream_with_audiodescriptions_and_captions.ogv" length="10693593" rel="enclosure" type="video/ogg"/>
    <link href="http://blog.gingertech.net/2010/02/19/accessibility-support-in-ogg-and-liboggplay/#comments" rel="replies" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/02/19/accessibility-support-in-ogg-and-liboggplay/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Accessibility support in Ogg and liboggplay</title>
    <summary xml:lang="en">At the recent FOMS/LCA in Wellington, New Zealand, we talked a lot about how Ogg could support accessibility. Technically, this means support for multiple text tracks (subtitles/captions), multiple audio tracks (audio descriptions parallel to main audio track), and multiple video tracks (sign language video parallel to main video track).
Creating multitrack Ogg files
The creation of multitrack [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>At the recent FOMS/LCA in Wellington, New Zealand, we talked a lot about how Ogg could support accessibility. Technically, this means support for multiple text tracks (subtitles/captions), multiple audio tracks (audio descriptions parallel to main audio track), and multiple video tracks (sign language video parallel to main video track).</p>
<p><strong>Creating multitrack Ogg files</strong><br/>
The creation of multitrack Ogg files is already possible using one of the muxing applications, e.g. oggz-merge. For example, I have my own little collection of multitrack Ogg files at <a href="http://annodex.net/~silvia/itext/elephants_dream/multitrack/">http://annodex.net/~silvia/itext/elephants_dream/multitrack/</a>. But then you are stranded with files that no player will play back.</p>
<p><strong>Multitrack Ogg in Players</strong><br/>
As Ogg is now being used in multiple Web browsers in the new HTML5 media formats, there are in particular requirements for accessibility support for the hard-of-hearing and vision-impaired. Either multitrack Ogg needs to become more of a common case, or the association of external media files that provide synchronised accessibility data (captions, audio descriptions, sign language) to the main media file needs to become a standard in HTML5.</p>
<p>As it turn out, both these approaches are being considered and worked on in the W3C. Accessibility data that are audio or video tracks will in the near future have to come out of the media resource itself, but captions and other text tracks will also be available from external associated elements.</p>
<p>The availability of internal accessibility tracks in Ogg is a new use case – something Ogg has been ready to do, but has not gone into common usage. MPEG files on the other hand have for a long time been used with internal accessibility tracks and thus frameworks and players are in place to decode such tracks and do something sensible with them. This is not so much the case for Ogg.</p>
<p>For example, a current VLC build installed on Windows will display captions, because Ogg Kate support is activated. A current VLC build on any other platform, however, has Ogg Kate support deactivated in the build, so captions won’t display. This will hopefully change soon, but we have to look also beyond players and into media frameworks – in particular those that are being used by the browser vendors to provide Ogg support.</p>
<p><strong>Multitrack Ogg in Browsers</strong><br/>
Hopefully gstreamer (which is what Opera uses for Ogg support) and ffmpeg (which is what Chrome uses for Ogg support) will expose all available tracks to the browser so they can expose them to the user for turning on and off. Incidentally, a <a href="http://www.w3.org/WAI/PF/HTML/wiki/Media_MultitrackAPI">multitrack media JavaScript API</a> is in development in the W3C HTML5 Accessibility Task Force for allowing such control.</p>
<p>The current version of Firefox uses liboggplay for Ogg support, but liboggplay’s multitrack support has been sketchy this far. So, Viktor Gal – the liboggplay maintainer – and I sat down at FOMS/LCA to discuss this and Viktor developed some patches to make the demo player in the liboggplay package, the glut-player, support the accessibility use cases.</p>
<p>I applied Viktor’s patch to my local copy of liboggplay and I am very excited to show you the screencast of glut-player playing back a video file with an audio description track and an English caption track all in sync:</p>
<p><video controls="controls" src="http://blog.gingertech.net/wp-content/uploads/2010/02/elephants_dream_with_audiodescriptions_and_captions.ogv" width="450px">elephants_dream_with_audiodescriptions_and_captions</video></p>
<p><strong>Further developments</strong><br/>
There are still important questions open: for example, how will a player know that an audio description track is to be played together with the main audio track, but a dub track (e.g. a German dub for an English video) is to be played as an alternative. Such metadata for the tracks is something that Ogg is still missing, but that Ogg can be extended with fairly easily through the use of the Skeleton track. It is something the Xiph community is now working on.</p>
<p><strong>Summary</strong><br/>
This is great progress towards accessibility support in Ogg and therefore in Web browsers. And there is more to come soon.</p></div>
    </content>
    <updated>2010-02-19T02:19:09Z</updated>
    <published>2010-02-19T01:57:34Z</published>
    <category scheme="http://blog.gingertech.net" term="Digital Media"/>
    <category scheme="http://blog.gingertech.net" term="FOMS"/>
    <category scheme="http://blog.gingertech.net" term="LCA"/>
    <category scheme="http://blog.gingertech.net" term="Open Source"/>
    <category scheme="http://blog.gingertech.net" term="code"/>
    <category scheme="http://blog.gingertech.net" term="open codecs"/>
    <category scheme="http://blog.gingertech.net" term="standards"/>
    <category scheme="http://blog.gingertech.net" term="video accessibility"/>
    <category scheme="http://blog.gingertech.net" term="accessibility"/>
    <category scheme="http://blog.gingertech.net" term="HTML5"/>
    <category scheme="http://blog.gingertech.net" term="html5 media"/>
    <category scheme="http://blog.gingertech.net" term="Ogg"/>
    <category scheme="http://blog.gingertech.net" term="Ogg Theora"/>
    <category scheme="http://blog.gingertech.net" term="Ogg Theora/Vorbis"/>
    <category scheme="http://blog.gingertech.net" term="Ogg video"/>
    <category scheme="http://blog.gingertech.net" term="open media software"/>
    <author>
      <name>silvia</name>
      <uri>http://blog.gingertech.net/</uri>
    </author>
    <source>
      <id>http://blog.gingertech.net/feed/atom/</id>
      <link href="http://blog.gingertech.net" rel="alternate" type="text/html"/>
      <link href="http://blog.gingertech.net/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Silvia's blog</subtitle>
      <title xml:lang="en">ginger's thoughts</title>
      <updated>2010-03-11T00:43:49Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.gingertech.net/?p=921</id>
    <link href="http://blog.gingertech.net/2010/02/18/how-to-display-seeked-position-for-html5-video/" rel="alternate" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/02/18/how-to-display-seeked-position-for-html5-video/#comments" rel="replies" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/02/18/how-to-display-seeked-position-for-html5-video/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">How to display seeked position for HTML5 video</title>
    <summary xml:lang="en">Recently, I was asked for some help on coding with an HTML5 video element and its events. In particular the question was: how do I display the time position that somebody seeked to in a video?
Here is a code snipped that shows how to use the seeked event:

&lt;video onseeked="writeVideoTime(this.currentTime);" src="video.ogv" controls&gt;&lt;/video&gt;
&lt;p&gt;position:&lt;/p&gt;&lt;div id="videotime"&gt;&lt;/div&gt;
&lt;script type="text/javascript"&gt;
  // [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>Recently, I was asked for some help on coding with an HTML5 video element and its events. In particular the question was: how do I display the time position that somebody seeked to in a video?</p>
<p>Here is a code snipped that shows how to use the seeked event:</p>
<p><code><br/>
&lt;video onseeked="writeVideoTime(this.currentTime);" src="video.ogv" controls&gt;&lt;/video&gt;<br/>
&lt;p&gt;position:&lt;/p&gt;&lt;div id="videotime"&gt;&lt;/div&gt;<br/>
&lt;script type="text/javascript"&gt;<br/>
  // get video element<br/>
  var video = document.getElementsByTagName("video")[0];<br/>
  function writeVideoTime(t) {<br/>
    document.getElementById("videotime").innerHTML=t;<br/>
  }<br/>
&lt;/script&gt;<br/>
</code></p>
<p><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#mediaevents">Other events</a> that can be used in a similar way are:</p>
<ul>
<li>loadstart: UA requests the media data from the server</li>
<li>progress: UA is fetching media data from the server</li>
<li>suspend: UA is on purpose idling on the server connection mid-fetching</li>
<li>abort: UA aborts fetching media data from the server</li>
<li>error: UA aborts fetching media because of a network error</li>
<li>emptied: UA runs out of network buffered media data (I think)</li>
<li>stalled: UA is waiting for media data from the server</li>
<li>play: playback has begun after play() method returns</li>
<li>pause: playback has been paused after pause() method returns</li>
<li>loadedmetadata: UA has received all its setup information for the media resource, duration and dimensions and is ready to play</li>
<li>loadeddata: UA can render the media data at the current playback position for the first time</li>
<li>waiting: playback has stopped because the next frame is not available yet</li>
<li>playing: playback has started</li>
<li>canplay: playback can resume, but at risk of buffer underrun</li>
<li>canplaythrough: playback can resume without estimated risk of buffer underrun</li>
<li>seeking: seeking attribute changed to true (may be too short to catch)</li>
<li>seeked: seeking attribute changed to false</li>
<li>timeupdate: current playback position changed enough to report on it</li>
<li>ended: playback stopped at media resource end; ended attribute is true</li>
<li>ratechange: defaultPlaybackRate or playbackRate attribute have just changed</li>
<li>durationchange: duration attribute has changed</li>
<li>volumechange:volume attribute or the muted attribute has changed</li>
</ul>
<p>Please refer to the <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#mediaevents">actual event list in the specification</a> for more details and more accurate information on the events.</p></div>
    </content>
    <updated>2010-02-18T04:29:25Z</updated>
    <published>2010-02-18T04:29:25Z</published>
    <category scheme="http://blog.gingertech.net" term="Digital Media"/>
    <category scheme="http://blog.gingertech.net" term="code"/>
    <category scheme="http://blog.gingertech.net" term="standards"/>
    <category scheme="http://blog.gingertech.net" term="audio element"/>
    <category scheme="http://blog.gingertech.net" term="HTML5"/>
    <category scheme="http://blog.gingertech.net" term="html5 media"/>
    <category scheme="http://blog.gingertech.net" term="HTML5 video"/>
    <category scheme="http://blog.gingertech.net" term="html5 video tag"/>
    <category scheme="http://blog.gingertech.net" term="video element"/>
    <category scheme="http://blog.gingertech.net" term="W3C"/>
    <author>
      <name>silvia</name>
      <uri>http://blog.gingertech.net/</uri>
    </author>
    <source>
      <id>http://blog.gingertech.net/feed/atom/</id>
      <link href="http://blog.gingertech.net" rel="alternate" type="text/html"/>
      <link href="http://blog.gingertech.net/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Silvia's blog</subtitle>
      <title xml:lang="en">ginger's thoughts</title>
      <updated>2010-03-11T00:43:49Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://bluishcoder.co.nz/2010/02/18/on2-stockholders-approve-google-merger</id>
    <link href="http://bluishcoder.co.nz/2010/02/18/on2-stockholders-approve-google-merger.html" rel="alternate" type="text/html"/>
    <title>On2 Stockholders Approve Google Merger</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Last year <a href="http://googleblog.blogspot.com/2009/08/innovation-in-video-on-web.html">Google announced</a> that they were going to acquire <a href="http://www.on2.com">On2 Technologies</a>. This is the company that produced (and open sourced) the VP3 video codec that Theora is based on. Google wrote on their blog:</p>

<blockquote>
<p>Although we’re not in a position to discuss specific product plans until after the deal closes, we are committed to innovation in video quality on the web, and we believe that On2 Technologies’ team and technology will help us further that goal.</p>
</blockquote>

<p>The deal has been delayed awaiting approval of the majority of the On2 stockholders to agree on the acquisition. According to the On2 website <a href="http://www.on2.com/index.php?id=472&amp;news_id=698">this happened today</a>:</p>

<blockquote>
<p>On2 Technologies, Inc. (NYSE Amex: ONT) today announced that its stockholders approved the merger of On2 with a wholly owned subsidiary of Google Inc. at its Reconvened Special Meeting held earlier today.</p>

<p>On2 stockholders holding in excess of a majority of the outstanding shares of On2 Common Stock voted in favor of the merger proposal.</p>
</blockquote>

<p>It’ll be interesting to see what comes from this. On2 have other video codecs. (<a href="http://en.wikipedia.org/wiki/VP6">VP6</a> used in Flash on some video sites, <a href="http://en.wikipedia.org/wiki/VP7">VP7</a> and their latest codec <a href="http://www.on2.com/index.php?id=439&amp;news_id=641">VP8</a>.</p></div>
    </content>
    <updated>2010-02-18T02:00:00Z</updated>
    <source>
      <id>http://bluishcoder.co.nz/</id>
      <author>
        <name>Chris Double</name>
        <email>chris.double@double.co.nz</email>
      </author>
      <link href="http://bluishcoder.co.nz/atom.xml" rel="self" type="application/atom+xml"/>
      <link href="http://bluishcoder.co.nz/" rel="alternate" type="text/html"/>
      <title>Bluish Coder</title>
      <updated>2010-03-12T00:44:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://maikmerten.livejournal.com/4052.html</id>
    <link href="http://maikmerten.livejournal.com/4052.html" rel="alternate" type="text/html"/>
    <title>Cortado 0.5.2</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Cortado 0.5.2 is out.

Changes since 0.5.1:

<ul>
<li>make keepAspect ignorable again</li>
<li>minor optimizations in the decoder</li>
<li>buffer tweaks to prevent unwanted frame drops</li>
<li>contents of plugins.ini moved into code to work around
resource-loading problems in ancient JVMs</li>
<li>fix problems with several audio streams</li>
<li>optimizations in YUV-to-RGB code</li>
</ul>

Downloads at <a href="http://downloads.xiph.org/releases/cortado/">http://downloads.xiph.org/releases/cortado/</a></div>
    </summary>
    <updated>2010-02-14T14:31:02Z</updated>
    <category term="cortado"/>
    <category term="xiph"/>
    <category term="java"/>
    <source>
      <id>http://maikmerten.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/78472053/15004965</logo>
      <author>
        <name>Maik Merten</name>
      </author>
      <link href="http://maikmerten.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://maikmerten.livejournal.com/data/rss?tag=xiph" rel="self" type="application/atom+xml"/>
      <subtitle>maikmerten - LiveJournal.com</subtitle>
      <title>maikmerten</title>
      <updated>2010-03-22T14:00:07Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://bluishcoder.co.nz/2010/02/14/dealing-with-archived-blogger-posts</id>
    <link href="http://bluishcoder.co.nz/2010/02/14/dealing-with-archived-blogger-posts.html" rel="alternate" type="text/html"/>
    <title>Dealing with my archived Blogger posts</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I’ve <a href="http://www.bluishcoder.co.nz/2010/02/13/moving-away-from-blogger.html">stopped using Blogger</a> for the weblog and have moved to using <a href="http://github.com/mojombo/jekyll">Jekyll</a>.</p>

<p>I’ve set things up so I can edit the posts on my local push, push to my server using <a href="http://git-scm.com/">git</a> and it publishes the new post.</p>

<p>Blogger provides a way to export all existing posts and comments as an XML file. I used this to manually import a few posts to test out Jekyll but then decided this was way to much work to convert everything. Instead I opted to create posts that link to my original Blogger ones so at least the archives and tags list in Jekyll will allow listing the posts and titles.</p>

<p>To import the existing archived blogger posts I wrote a program to read from the Blogger export file, extract the title, post tags/categories and existing URL and create Jekyll equivalents. It seems to have worked ok and I’ll manually fix up any problems if I find them.</p>

<p>I wrote the importer in the <a href="http://code.google.com/p/pure-lang/">Pure Programming Language</a> to have a play with that language. I dabbled with it when it first came out but this was my first time using it in anger. It worked out pretty well. The core of the code to write out the posts looks like:</p>

<pre><code>write_tag_header fd [] = ();
write_tag_header fd (x:xs) = fprintf fd "tags:\n" ();

write_tags fd (x:xs) = fprintf fd "  - %s\n" x $$ 
                       write_tags_fd xs;
write_tags fd [] = ();

create_post post = fprintf fd "---\n" () $$
                   fprintf fd "layout: post\n" () $$
                   fprintf fd "title: %s\n" title $$
                   write_tag_header fd tags $$
                   write_tags fd tags $$
                   fprintf fd "---\n" () $$
                   fprintf fd "Original Post [%s](%s)\n" (title,href) $$
                   fclose fd
                   when
                       filename = post_filename post;
                       fd = fopen filename "w";
                       title = article_title post;
                       href = article_url post;
                       tags = article_tags post;
                  end;</code></pre>

<p>Basically I used the Pure XML library to get a list of posts (I use an XPATH expression to get the relevant parts of the post from the Blogger XML). For each post I then call create_post on it:</p>

<pre><code>map create_post all_posts</code></pre>

<p>I didn’t go crazy and convert the actual HTML content into the <a href="http://daringfireball.net/projects/markdown/">markdown</a> format I’m using fo the Jekyll posts and convert everything completely - maybe a task for another day.</p></div>
    </content>
    <updated>2010-02-14T03:54:00Z</updated>
    <source>
      <id>http://bluishcoder.co.nz/</id>
      <author>
        <name>Chris Double</name>
        <email>chris.double@double.co.nz</email>
      </author>
      <link href="http://bluishcoder.co.nz/atom.xml" rel="self" type="application/atom+xml"/>
      <link href="http://bluishcoder.co.nz/" rel="alternate" type="text/html"/>
      <title>Bluish Coder</title>
      <updated>2010-03-12T00:44:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://bluishcoder.co.nz/2010/02/13/lca-2010-implementing-html5-video-in-firefox</id>
    <link href="http://bluishcoder.co.nz/2010/02/13/lca-2010-implementing-html5-video-in-firefox.html" rel="alternate" type="text/html"/>
    <title>LCA 2010 talk about implementing HTML 5 video in Firefox</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Last month I attended <a href="http://www.lca2010.org.nz">linux.conf.au 2010</a> and gave a talk on the different paths we took implementing HTML 5 video in Firefox. I wrote the talk using Eric Meyer’s <a href="http://meyerweb.com/eric/tools/s5/">S5 Slide</a> system with the video demos embedded or linked from the slides themselves. You can view the slides here: <a href="http://www.bluishcoder.co.nz/lca2010">http://www.bluishcoder.co.nz/lca2010</a>. To see the videos you’ll need to be running a browser that supports HTML 5 video and the Ogg Theora codec (Chrome, Firefox, Opera alpha builds, Safari with a plugin).</p></div>
    </content>
    <updated>2010-02-13T10:27:00Z</updated>
    <source>
      <id>http://bluishcoder.co.nz/</id>
      <author>
        <name>Chris Double</name>
        <email>chris.double@double.co.nz</email>
      </author>
      <link href="http://bluishcoder.co.nz/atom.xml" rel="self" type="application/atom+xml"/>
      <link href="http://bluishcoder.co.nz/" rel="alternate" type="text/html"/>
      <title>Bluish Coder</title>
      <updated>2010-03-12T00:44:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://bluishcoder.co.nz/2010/02/13/moving-away-from-blogger</id>
    <link href="http://bluishcoder.co.nz/2010/02/13/moving-away-from-blogger.html" rel="alternate" type="text/html"/>
    <title>Moving away from blogger</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Blogger are <a href="http://blogger-ftp.blogspot.com/">deprecating their ftp publishing</a> support and are recommending users to switch to their custom domain feature where they host the blog files for you. I prefer to keep my posts on my own server so will be switching weblog systems in the near future.</p>

<p>This will break existing links to Atom feeds for specific labels (eg. the feed for Mozilla specific posts) as they are on a blogger controlled domain. So if you’re reading this through one of those Atom feeds and want to continue with it then you might want to switch to:</p>

<pre><code>http://bluishcoder.co.nz/tags/[tagname]/atom.xml</code></pre>

<p>For example, the Mozilla specific posts will be in <a href="http://bluishcoder.co.nz/tags/mozilla/atom.xml">http://bluishcoder.co.nz/tags/mozilla/atom.xml</a>.</p>

<p>My existing posts will remain at their current URL’s.</p></div>
    </content>
    <updated>2010-02-13T06:23:00Z</updated>
    <source>
      <id>http://bluishcoder.co.nz/</id>
      <author>
        <name>Chris Double</name>
        <email>chris.double@double.co.nz</email>
      </author>
      <link href="http://bluishcoder.co.nz/atom.xml" rel="self" type="application/atom+xml"/>
      <link href="http://bluishcoder.co.nz/" rel="alternate" type="text/html"/>
      <title>Bluish Coder</title>
      <updated>2010-03-12T00:44:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.gingertech.net/?p=911</id>
    <link href="http://blog.gingertech.net/2010/02/12/audio-track-accessibility-for-html5/" rel="alternate" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/02/12/audio-track-accessibility-for-html5/#comments" rel="replies" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/02/12/audio-track-accessibility-for-html5/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Audio Track Accessibility for HTML5</title>
    <summary xml:lang="en">I have talked a lot about synchronising multiple tracks of audio and video content recently. The reason was mainly that I foresee a need for more than two parallel audio and video tracks, such as audio descriptions for the vision-impaired or dub tracks for internationalisation, as well as sign language tracks for the hard-of-hearing.
It is [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>I have talked a lot about synchronising multiple tracks of audio and video content recently. The reason was mainly that I foresee a need for more than two parallel audio and video tracks, such as audio descriptions for the vision-impaired or dub tracks for internationalisation, as well as sign language tracks for the hard-of-hearing.</p>
<p>It is almost impossible to introduce a good scheme to deliver the right video composition to a target audience. Common people will prefer bare a/v, vision-impaired would probably prefer only audio plus audio descriptions (but will probably take the video), and the hard-of-hearing will prefer video plus captions and possibly a sign language track . While it is possible to dynamically create files that contain such tracks on a server and then deliver the right composition, implementation of such a server method has not been very successful in the last years and it would likely take many years to roll out such new infrastructure.</p>
<p>So, the only other option we have is to synchronise completely separate media resource together as they are selected by the audience.</p>
<p>It is this need that this HTML5 accessibility demo is about: Check out the <a href="http://annodex.net/~silvia/itext/elephant_separate_audesc_dub.html">demo of multiple media resource synchronisation</a>.</p>
<p>I created a Ogg video with only a video track (10m53s750). Then I created an audio track that is the original English audio track (10m53s696). Then I used a Spanish dub track that I found through BlenderNation as an alternative audio track (10m58s337). Lastly, I created an audio description track in the original language (10m53s706). This creates a video track with three optional audio tracks.</p>
<p>I took away all native controls from these elements when using the HTML5 audio and video tag and ran my own stop/play and seeking approaches, which handled all media elements in one go.</p>
<p>I was mostly interested in the quality of this experience. Would the different media files stay mostly in sync? They are normally decoded in different threads, so how big would the drift be?</p>
<p>The <a href="http://annodex.net/~silvia/itext/elephant_separate_audesc_dub.html">resulting page</a> is the basis for such experiments with synchronisation.</p>
<p>The page prints the current playback position in all of the media files at a constant interval of 500ms. Note that when you pause and then play again, I am re-synching the audio tracks with the video track, but not when you just let the files play through.</p>
<p>I have let the files play through on my rather busy Macbook and have achieved the following interesting drift over the course of about 9 minutes:</p>
<p><a href="http://blog.gingertech.net/wp-content/uploads/2010/02/elephant_multiple_files_drift.png"><img alt="Drift between multiple parallel played media elements" class="size-medium wp-image-914" height="203" src="http://blog.gingertech.net/wp-content/uploads/2010/02/elephant_multiple_files_drift-300x203.png" title="elephant_multiple_files_drift" width="300"/></a></p>
<p>You will see that the video was the slowest, only doing roughly 540s, while the Spanish dub did 560s in the same time.</p>
<p>To fix such drifts, you can always include regular re-synchronisation points into the video playback. For example, you could set a timeout on the playback to re-sync every 500ms. Within such a short time, it is almost impossible to notice a drift. Don’t re-load the video, because it will lead to visual artifacts. But do use the video’s currentTime to re-set the others. (UPDATE: Actually, it depends on your situation, which track is the best choice as the main timeline. See also comments below.)</p>
<p>It is a workable way of associating random numbers of media tracks with videos, in particular in situations where the creation of merged files cannot easily be included in a workflow.</p></div>
    </content>
    <updated>2010-02-12T11:12:40Z</updated>
    <published>2010-02-12T10:44:43Z</published>
    <category scheme="http://blog.gingertech.net" term="Digital Media"/>
    <category scheme="http://blog.gingertech.net" term="FOMS"/>
    <category scheme="http://blog.gingertech.net" term="Open Source"/>
    <category scheme="http://blog.gingertech.net" term="code"/>
    <category scheme="http://blog.gingertech.net" term="open codecs"/>
    <category scheme="http://blog.gingertech.net" term="standards"/>
    <category scheme="http://blog.gingertech.net" term="video accessibility"/>
    <category scheme="http://blog.gingertech.net" term="accessibility"/>
    <category scheme="http://blog.gingertech.net" term="audio description"/>
    <category scheme="http://blog.gingertech.net" term="audio element"/>
    <category scheme="http://blog.gingertech.net" term="Firefox"/>
    <category scheme="http://blog.gingertech.net" term="html5 media"/>
    <category scheme="http://blog.gingertech.net" term="HTML5 video"/>
    <category scheme="http://blog.gingertech.net" term="multitrack audio"/>
    <category scheme="http://blog.gingertech.net" term="multitrack video"/>
    <category scheme="http://blog.gingertech.net" term="video element"/>
    <category scheme="http://blog.gingertech.net" term="W3C"/>
    <author>
      <name>silvia</name>
      <uri>http://blog.gingertech.net/</uri>
    </author>
    <source>
      <id>http://blog.gingertech.net/feed/atom/</id>
      <link href="http://blog.gingertech.net" rel="alternate" type="text/html"/>
      <link href="http://blog.gingertech.net/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Silvia's blog</subtitle>
      <title xml:lang="en">ginger's thoughts</title>
      <updated>2010-03-11T00:43:49Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-19599775.post-7720646744272890354</id>
    <link href="http://cristianadam.blogspot.com/feeds/7720646744272890354/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=19599775&amp;postID=7720646744272890354" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/19599775/posts/default/7720646744272890354" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/19599775/posts/default/7720646744272890354" rel="self" type="application/atom+xml"/>
    <link href="http://cristianadam.blogspot.com/2010/02/iecanvas-build.html" rel="alternate" type="text/html"/>
    <title>IECanvas build</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">In my previous blog entry I've mentioned Vladimir Vukićević's IECanvas experiment, but at that time my IECanvas build was not working.<br/><br/>In the meantime I've made it work, added support for the new IE8 xml namespace, removed some of the ActiveX usage popups (there is only one infobar popup at first run), packaged it in a small installer.<br/><br/>Souce code with all dependent libraries (cairo, pixman, libpng, zlib) is located <a href="http://code.assembla.com/cristianadam/subversion/nodes/IECanvas">here</a>. Download the 32bit installer from <a href="http://code.assembla.com/cristianadam/subversion/node/blob/IECanvas/Installer/IECanvas.exe">here</a> (329Kb)<br/><br/>I've made a screen cast about how IECanvas experience looks like (nice beta fish background):<br/><br/><video controls="controls" src="http://upload.wikimedia.org/wikipedia/commons/0/0f/IECanvas_Win7_RC.ogv" width="95%">Your browser does not support the &lt;video&gt; tag.</video><br/><br/>The two presented canvases are: <a href="http://code.assembla.com/cristianadam/subversion/node/blob/IECanvas/Test/test.html">squares with alpha blending</a> and <a href="http://code.assembla.com/cristianadam/subversion/node/blob/IECanvas/Test/clock.html">clock</a> (which should look a bit different in other browsers than in the video)<br/><br/>One only needs to add the <em>xmlns="http://www.w3.org/1999/xhtml/canvas"</em> attribute to a <em>&lt;canvas&gt;</em> tag to have canvas working on IE, but the <em>&lt;canvas&gt;</em> support in IECanvas is far from complete.<br/><br/><em>&lt;video&gt;</em> will have the same user experience as the IECanvas ActiveX,<br/>and it theory it should be able to coexist with the <em>&lt;canvas&gt;</em> tag.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/19599775-7720646744272890354?l=cristianadam.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-11T12:17:39Z</updated>
    <published>2010-02-10T23:44:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="IECanvas"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="Internet Explorer"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="xiph"/>
    <author>
      <name>Cristian Adam</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/16735332457747999220</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-19599775</id>
      <author>
        <name>Cristian Adam</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/16735332457747999220</uri>
      </author>
      <link href="http://cristianadam.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/19599775/posts/default/-/xiph" rel="self" type="application/atom+xml"/>
      <link href="http://cristianadam.blogspot.com/search/label/xiph" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>technical weblog.</subtitle>
      <title>Cristian Adam's</title>
      <updated>2010-03-20T10:59:02Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.gingertech.net/?p=831</id>
    <link href="http://blog.gingertech.net/2009/12/21/view-counts-youtube-contradictory/" rel="alternate" type="text/html"/>
    <link href="http://blog.gingertech.net/2009/12/21/view-counts-youtube-contradictory/#comments" rel="replies" type="text/html"/>
    <link href="http://blog.gingertech.net/2009/12/21/view-counts-youtube-contradictory/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">View counts on YouTube contradictory</title>
    <summary xml:lang="en">UPDATE (6th February 2010): YouTube have just reacted to my bug and it seems there are some gData links that are more up-to-date than others. You need to go with the “uploads” gData APIs rather than the search or user ones to get accurate data. Glad YouTube told me and it’s documented now!
I am an [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p><em>UPDATE (6th February 2010): YouTube have just <a href="http://code.google.com/p/gdata-issues/issues/detail?id=1745">reacted to my bug</a> and it seems there are some gData links that are more up-to-date than others. You need to go with the “uploads” gData APIs rather than the search or user ones to get accurate data. Glad YouTube told me and it’s documented now!</em></p>
<p>I am an avid user of YouTube Insight, the <a href="http://youtube-global.blogspot.com/2008/03/youtube-reveals-video-analytics-tool.html">metrics tool that YouTube provides freely to everyone who publishes videos through them</a>. YouTube Insight provides graphs on video views, the countries they originate in, demographics of the viewership, how the videos are discovered, engagement metrics, and hotspot analysis. It is a great tool to analyse the success of your videos, determine when to upload the next one, find out what works and what doesn’t.</p>
<p>However, you cannot rely on the accuracy of the numbers that YouTube Insight displays. In fact, YouTube provides three different means to find out what the current views (and other statistics, but let’s focus on the views) are for your videos:</p>
<ul>
<li>the view count displayed on the video’s watch page</li>
<li>the view count displayed in YouTube Insight</li>
<li>the view count given in the gData API feed</li>
</ul>
<p>The shocking reality is: for all videos I have looked at that are <strong>less than about a month old</strong> and keep getting views, all three numbers are different.</p>
<p>Sometimes they are just off by one or two, which is tolerable and understandable, since the data must be served from a number of load balanced servers or even server clusters and it would be difficult to keep all of these clusters at identical numbers all of the time.</p>
<p>However, for more than 50% of the videos I have looked at, the numbers are off by a substantial amount.</p>
<p>I have undertaken an analysis with random videos, where I have collected the gData views and the watch page views. The Insight data tends to be between these two numbers, but I cannot generally reach that data, so I have left it out of this analysis.</p>
<p>Here are the stats for 36 randomly picked videos in the 9 view-count classes <a href="http://www.businessinsider.com/chart-of-the-day-youtube-videos-by-views-2009-5">defined by TubeMogul</a> and by how much they are off at the time that I looked at them:</p>
<table border="1">
<tbody><tr>
<th>Class</th>
<th>Video</th>
<th>watch page</th>
<th>gData API</th>
<th>age</th>
<th>diff</th>
<th>percentage</th>
</tr>
<tr>
<td>&gt;1M</td>
<td>1</td>
<td>7,187,174</td>
<td>6,082,419</td>
<td>2 weeks</td>
<td>1,104,755</td>
<td>15.37%</td>
</tr>
<tr>
<td>&gt;1M</td>
<td>2</td>
<td>3,196,690</td>
<td>3,080,415</td>
<td>3 weeks</td>
<td>116,275</td>
<td>3.63%</td>
</tr>
<tr>
<td>&gt;1M</td>
<td>3</td>
<td>2,247,064</td>
<td>1,992,844</td>
<td>1 week</td>
<td>254,220</td>
<td>11.31%</td>
</tr>
<tr>
<td>&gt;1M</td>
<td>4</td>
<td>1,054,278</td>
<td>1,040,591</td>
<td>1 month</td>
<td>13,687</td>
<td>1.30%</td>
</tr>
<tr>
<td>100K-500K</td>
<td>5</td>
<td>476,838</td>
<td>148,681</td>
<td>11 days</td>
<td>328,157</td>
<td>68.82%</td>
</tr>
<tr>
<td>100K-500K</td>
<td>6</td>
<td>356,561</td>
<td>294,309</td>
<td>2 weeks</td>
<td>62,252</td>
<td>17.46%</td>
</tr>
<tr>
<td>100K-500K</td>
<td>7</td>
<td>225,951</td>
<td>195,159</td>
<td>2 weeks</td>
<td>30,792</td>
<td>13.63%</td>
</tr>
<tr>
<td>100K-500K</td>
<td>8</td>
<td>113,521</td>
<td>62,241</td>
<td>1 week</td>
<td>51,280</td>
<td>45.17%</td>
</tr>
<tr>
<td>10K-100K</td>
<td>9</td>
<td>86,964</td>
<td>46</td>
<td>4 days</td>
<td>86,918</td>
<td><strong>99.95%</strong></td>
</tr>
<tr>
<td>10K-100K</td>
<td>10</td>
<td>52,922</td>
<td>43,548</td>
<td>3 weeks</td>
<td>9,374</td>
<td>17.71%</td>
</tr>
<tr>
<td>10K-100K</td>
<td>11</td>
<td>34,001</td>
<td>33,045</td>
<td>1 month</td>
<td>956</td>
<td>2.81%</td>
</tr>
<tr>
<td>10K-100K</td>
<td>12</td>
<td>15,704</td>
<td>13,653</td>
<td>2 weeks</td>
<td>2,051</td>
<td>13.06%</td>
</tr>
<tr>
<td>5K-10K</td>
<td>13</td>
<td>9,144</td>
<td>8,967</td>
<td>1 month</td>
<td>117</td>
<td>1.94%</td>
</tr>
<tr>
<td>5K-10K</td>
<td>14</td>
<td>7,265</td>
<td>5,409</td>
<td>1 month</td>
<td>1,856</td>
<td>25.55%</td>
</tr>
<tr>
<td>5K-10K</td>
<td>15</td>
<td>6,640</td>
<td>5,896</td>
<td>2 weeks</td>
<td>744</td>
<td>11.20%</td>
</tr>
<tr>
<td>5K-10K</td>
<td>16</td>
<td>5,092</td>
<td>3,518</td>
<td>6 days</td>
<td>1,574</td>
<td>30.91%</td>
</tr>
<tr>
<td>2.5K-5K</td>
<td>17</td>
<td>4,955</td>
<td>4,928</td>
<td>3 weeks</td>
<td>27</td>
<td>0.91%</td>
</tr>
<tr>
<td>2.5K-5K</td>
<td>18</td>
<td>4,341</td>
<td>4,044</td>
<td>4 days</td>
<td>297</td>
<td>6.84%</td>
</tr>
<tr>
<td>2.5K-5K</td>
<td>19</td>
<td>3,377</td>
<td>3,306</td>
<td>3 weeks</td>
<td>71</td>
<td>2.10%</td>
</tr>
<tr>
<td>2.5K-5K</td>
<td>20</td>
<td>2,734</td>
<td>2,714</td>
<td>1 month</td>
<td>20</td>
<td>0.73%</td>
</tr>
<tr>
<td>1K-2.5K</td>
<td>21</td>
<td>2,208</td>
<td>2,169</td>
<td>3 weeks</td>
<td>39</td>
<td>1.77%</td>
</tr>
<tr>
<td>1K-2.5K</td>
<td>22</td>
<td>1,851</td>
<td>1,747</td>
<td>2 weeks</td>
<td>104</td>
<td>5.62%</td>
</tr>
<tr>
<td>1K-2.5K</td>
<td>23</td>
<td>1,281</td>
<td>1,244</td>
<td>1 week</td>
<td>37</td>
<td>2.89%</td>
</tr>
<tr>
<td>1K-2.5K</td>
<td>24</td>
<td>1,034</td>
<td>984</td>
<td>2 weeks</td>
<td>50</td>
<td>4.84%</td>
</tr>
<tr>
<td>500-1K</td>
<td>25</td>
<td>999</td>
<td>844</td>
<td>6 days</td>
<td>155</td>
<td>15.52%</td>
</tr>
<tr>
<td>500-1K</td>
<td>26</td>
<td>891</td>
<td>790</td>
<td>6 days</td>
<td>101</td>
<td>11.34%</td>
</tr>
<tr>
<td>500-1K</td>
<td>27</td>
<td>861</td>
<td>600</td>
<td>3 days</td>
<td>17</td>
<td>30.31%</td>
</tr>
<tr>
<td>500-1K</td>
<td>28</td>
<td>645</td>
<td>482</td>
<td>4 days</td>
<td>163</td>
<td>25.27%</td>
</tr>
<tr>
<td>100-500</td>
<td>29</td>
<td>460</td>
<td>436</td>
<td>10 days</td>
<td>24</td>
<td>5.22%</td>
</tr>
<tr>
<td>100-500</td>
<td>30</td>
<td>291</td>
<td>285</td>
<td>4 days</td>
<td>6</td>
<td>2.06%</td>
</tr>
<tr>
<td>100-500</td>
<td>31</td>
<td>256</td>
<td>198</td>
<td>3 days</td>
<td>58</td>
<td>22.66%</td>
</tr>
<tr>
<td>100-500</td>
<td>32</td>
<td>196</td>
<td>175</td>
<td>11 days</td>
<td>21</td>
<td>10.71%</td>
</tr>
<tr>
<td>0-100</td>
<td>33</td>
<td>88</td>
<td>74</td>
<td>10 days</td>
<td>14</td>
<td>15.90%</td>
</tr>
<tr>
<td>0-100</td>
<td>34</td>
<td>64</td>
<td>49</td>
<td>12 days</td>
<td>15</td>
<td>23.44%</td>
</tr>
<tr>
<td>0-100</td>
<td>35</td>
<td>46</td>
<td>21</td>
<td>5 days</td>
<td>25</td>
<td>54.35%</td>
</tr>
<tr>
<td>0-100</td>
<td>36</td>
<td>31</td>
<td>25</td>
<td>3 days</td>
<td>4</td>
<td>19.35%</td>
</tr>
</tbody></table>
<p>The videos were chosen such that they were no more than a month old, but older than a couple of days. For older videos than about a month, the increase had generally stopped and the metrics had caught up, unless where the views were still increasing rapidly, which is an unusual case.</p>
<p>Generally, it seems that the host page has the right views. In contrast, it seems the gData interface is updated only once every week. It further seems from looking at YouTube channels where I have access to Insight that Insight is updated about every 4 days and it receives corrected data for the days in which it hadn’t caught up.</p>
<p>Further, it seems that YouTube make no differentiation between channels of partners and general users’ channels – both can have a massive difference between the watch page and gData. Most videos differ by less than 20%, but some have exceptionally high differences above 50% and even up to 99.95%.</p>
<p>The difference is particularly pronounced for videos that show a steep increase in views – the first few days tend to have massive differences. Since these are the days that are particularly interesting to monitor for publishers, having the gData interface lag behind this much is shocking.</p>
<p>Further, videos with a low number of views, in particular less than 100, also show a particularly high percentage in difference – sometimes an increase in view count isn’t reported at all in the gData API for weeks. It seems that YouTube treats the long tail worse than the rest of YouTube. For every video in this class, the absolute difference will be small – obviously less than 100 views. With almost 30% of videos being such videos, it is somewhat understandable that YouTube are not making the effort to update their views regularly. OTOH, these views may be particularly important to their publishers.</p>
<p>It seems to me that YouTube need to change their approach to updating statistics across the watch pages, Insight and gData.</p>
<p>Firstly, it is important to <strong>have the watch page, Insight and gData in sync</strong> – otherwise what number would you use in a report? If the gData API for YouTube statistics lags behind the watch page and Insight by even 24 hours, it is useless in indicating trends and for using in reports and people have to go back to screenscraping to gain information on the actual views of their videos.</p>
<p>Secondly, it would be good to <strong>update the statistics daily during the first 3-4 weeks</strong>, or as long as the videos are gaining views heavily.  This is the important time to track the success of videos and if neither Insight nor gData are up to date in this time, and can even be almost 100% off, the statistics are actually useless.</p>
<p>Lastly, one has to wonder how accurate the success calculations are for YouTube partners, who rely on YouTube reporting to gain payment for advertising. Since the analysis showed that the inaccuracies extend also into partner channels, one has to hope that the data that is eventually reported through Insight is actually accurate, even if intermittently there are large differences.</p>
<p>Finally, I must say that I was rather disappointed with the way in which <a href="http://help.youtube.com/group/youtube-issues/browse_thread/thread/a9d36a639a08891a/3ca676ef258d5f2f?lnk=gst&amp;q=">this issue</a> has so far been dealt with in the YouTube Forums. The issues about wrongly reported view counts has been reported first <a href="http://help.youtube.com/group/youtube-issues/browse_thread/thread/bc4d757abfdc5643/68753a1cf234e94c?lnk=gst&amp;q=YouTube+Insight#68753a1cf234e94c">more than a year ago</a> and since regularly by diverse people. Some of the reports were really unfriendly with their demands. Still, I would have expected a serious reply by a YouTube employee about why there are issues and how they are going to be fixed or whether they will be fixed at all. Instead, all I found was a <a href="http://help.youtube.com/group/youtube-issues/browse_thread/thread/ab0963354b507ccd?hl=en-US">more than 9 month old mention that YouTube seems to be aware of the issue and working on it</a> – no news since.</p>
<p>Also, I found no other blog posts analysing this issue, so here we are. Please, YouTube, let us know what is going on with Insight, why are the numbers off by this much, and what are you doing to fix it?</p>
<p>NB: I just posted a <a href="http://code.google.com/p/gdata-issues/issues/detail?id=1745&amp;q=YouTube%20Insight&amp;colspec=API%20ID%20Type%20Status%20Priority%20Stars%20Summary">bug on gData</a>, since we were unable to find any concrete bugs relating to this issue there. I’m actually surprised about this, since so many people reported it in the YouTube Forums!</p></div>
    </content>
    <updated>2010-02-06T02:07:46Z</updated>
    <published>2009-12-20T21:37:46Z</published>
    <category scheme="http://blog.gingertech.net" term="Digital Media"/>
    <category scheme="http://blog.gingertech.net" term="analytics"/>
    <category scheme="http://blog.gingertech.net" term="contradictory numbers"/>
    <category scheme="http://blog.gingertech.net" term="divergence"/>
    <category scheme="http://blog.gingertech.net" term="gData views"/>
    <category scheme="http://blog.gingertech.net" term="inaccuracies"/>
    <category scheme="http://blog.gingertech.net" term="Insight views"/>
    <category scheme="http://blog.gingertech.net" term="statistics"/>
    <category scheme="http://blog.gingertech.net" term="watch page views"/>
    <category scheme="http://blog.gingertech.net" term="YouTube"/>
    <category scheme="http://blog.gingertech.net" term="YouTube Insight"/>
    <author>
      <name>silvia</name>
      <uri>http://blog.gingertech.org/</uri>
    </author>
    <source>
      <id>http://blog.gingertech.net/feed/atom/</id>
      <link href="http://blog.gingertech.net" rel="alternate" type="text/html"/>
      <link href="http://blog.gingertech.net/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Silvia's blog</subtitle>
      <title xml:lang="en">ginger's thoughts</title>
      <updated>2010-02-21T10:54:01Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://bemasc.net/wordpress/?p=1521</id>
    <link href="http://bemasc.net/wordpress/2010/02/02/no-you-cant-do-that-with-h264/" rel="alternate" type="text/html"/>
    <title>No, you can’t do that with H.264</title>
    <summary>A lot of commercial software comes with H.264 encoders and decoders, and some computers arrive with this software preinstalled.  This leads a lot of people to believe that they can legally view and create H.264 videos for whatever purpose they like.  Unfortunately for them, it ain’t so.
Maybe the best example comes from the [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>A lot of commercial software comes with <a href="http://en.wikipedia.org/wiki/H.264">H.264</a> encoders and decoders, and some computers arrive with this software preinstalled.  This leads a lot of people to believe that they can legally view and create H.264 videos for whatever purpose they like.  Unfortunately for them, it ain’t so.</p>
<p>Maybe the best example comes from the <a href="http://images.apple.com/legal/sla/docs/finalcutstudio2.pdf">Final Cut Pro license</a>:</p>
<blockquote><p>
To the extent that the Apple Software contains AVC encoding and/or decoding functionality, commercial use of H.264/AVC requires additional licensing and the following provision applies: THE AVC FUNCTIONALITY IN THIS PRODUCT IS LICENSED HEREIN ONLY FOR THE PERSONAL AND NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE AVC STANDARD (“AVC VIDEO”) AND/OR (ii) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL AND NON-COMMERCIAL ACTIVITY AND/OR AVC VIDEO THAT WAS OBTAINED FROM A VIDEO PROVIDER LICENSED TO PROVIDE AVC VIDEO. INFORMATION REGARDING OTHER USES AND LICENSES MAY BE OBTAINED FROM MPEG LA L.L.C. SEE HTTP://WWW.MPEGLA.COM.
</p></blockquote>
<p>The text could hardly be clearer: you do not have a license for commercial use of H.264.  Call it “Final Cut <del>Pro</del> Hobbyist”.  Do you post videos on your website that has Google Adwords? Do you edit video on a consulting basis? Do you want to include a video in a package sent to your customers? Do your clients send you video clips as part of your business? Then you’re using the encoder or decoder for commercial purposes, in violation of the license.</p>
<p>Now, you might think “but I’m sticking with MPEG-4, or MPEG-2, so it’s not a problem for me”.  No.  It’s just as bad.  Here’s the relevant section of the license:</p>
<blockquote><p>
<strong>13. MPEG-2 Notice.</strong> To the extent that the Apple Software contains MPEG-2 functionality, the following provision applies: ANY USE OF THIS PRODUCT OTHER THAN CONSUMER PERSONAL USE IN ANY MANNER THAT COMPLIES WITH THE MPEG-2 STANDARD FOR ENCODING VIDEO INFORMATION FOR PACKAGED MEDIA IS EXPRESSLY PROHIBITED WITHOUT A LICENSE UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT PORTFOLIO, WHICH LICENSE IS AVAILABLE FROM MPEG LA, L.L.C., 250 STEELE STREET, SUITE 300, DENVER, COLORADO 80206.<br/>
<strong>14. MPEG-4 Notice.</strong> This product is licensed under the MPEG-4 Systems Patent Portfolio License for encoding in compliance with the MPEG-4 Systems Standard, except that an additional license and payment of royalties are necessary for encoding in connection with (i) data stored or replicated in physical media which is paid for on a title by title basis and/or (ii) data which is paid for on a title by title basis and is transmitted to an end user for permanent storage and/or use. Such additional license may be obtained from MPEG LA, LLC. See http://www.mpegla.com for additional details. This product is licensed under the MPEG-4 Visual Patent Portfolio License for the personal and non-commercial use of a consumer for (i) encoding video in compliance with the MPEG-4 Visual Standard (“MPEG-4 Video”) and/or (ii) decoding MPEG-4 video that was encoded by a consumer engaged in a personal and non-commercial activity and/or was obtained from a video provider licensed by MPEG LA to provide MPEG-4 video. No license is granted or shall be implied for any other use. Additional information including that relating to promotional, internal and commercial uses and licensing may be obtained from MPEG LA, LLC.
</p></blockquote>
<p>Noticing a pattern?  You have a license to use their software, provided you don’t make any money, your friends are <em>also</em> all correctly licensed, and you only produce content that complies with the MPEG standard.  Using video for a commercial purpose?  Producing video that isn’t within MPEG’s parameters? Have friends who use unlicensed encoders like x264, ffmpeg, or xvid? Too bad.</p>
<p>This last thing is actually a particularly interesting point.  If you encode a video using one of these (open-source) unlicensed encoders, you’re practicing patents without a license, and you can be sued.  But hey, maybe you’re just a scofflaw.  After all, it’s not like you’re making trouble for anyone else, right?  Wrong.  If you send a video to a friend who uses a licensed decoder, and they watch it, you’ve caused them to violate their own software license, so they can be sued too.</p>
<p>Oh, and in case you thought this was specific to Apple, here’s the matching piece from the <a href="http://download.microsoft.com/Documents/UseTerms/Windows%207_Ultimate_English_c44ca3df-8338-4a2f-a176-39d2e68986c4.pdf">Windows 7 Ultimate License</a>:</p>
<blockquote><p>
<strong>18. NOTICE ABOUT THE H.264/AVC VISUAL STANDARD, THE VC-1 VIDEO STANDARD, THE  MPEG-4 VISUAL STANDARD AND THE MPEG-2 VIDEO STANDARD.</strong> This software includes H.264/AVC, VC-1, MPEG-4 Part 2, and MPEG-2 visual compression technology. MPEG LA, L.L.C. requires this notice:<br/>
THIS PRODUCT IS LICENSED UNDER THE AVC, THE VC-1, THE MPEG-4 PART 2 VISUAL, AND THE MPEG-2 VIDEO PATENT PORTFOLIO LICENSES FOR THE PERSONAL AND NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE ABOVE STANDARDS (“VIDEO STANDARDS”) AND/OR (ii) DECODE AVC, VC-1, MPEG-4 PART 2 AND MPEG-2 VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL AND NON-COMMERCIAL ACTIVITY OR WAS OBTAINED FROM A VIDEO PROVIDER LICENSED TO PROVIDE SUCH VIDEO. NONE OF THE LICENSES EXTEND TO ANY OTHER PRODUCT REGARDLESS OF WHETHER SUCH PRODUCT IS INCLUDED WITH THIS PRODUCT IN A SINGLE ARTICLE. NO LICENSE IS GRANTED OR SHALL BE IMPLIED FOR ANY OTHER USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. SEE WWW.MPEGLA.COM.
</p></blockquote>
<p>Doesn’t seem so Ultimate to me.</p>
<p>My advice: use a <a href="http://theora.org">codec</a> that doesn’t need a license:</p>
<blockquote><p>
<strong>Q. What is the license for Theora?</strong><br/>
Theora (and all associated technologies released by the Xiph.org Foundation) is released to the public via a BSD-style license. It is completely free for commercial or noncommercial use. That means that commercial developers may independently write Theora software which is compatible with the specification for no charge and <strong>without restrictions of any kind</strong>.
</p></blockquote></div>
    </content>
    <updated>2010-02-03T02:40:53Z</updated>
    <category term="Xiph"/>
    <author>
      <name>Ben</name>
    </author>
    <source>
      <id>http://bemasc.net/wordpress</id>
      <link href="http://bemasc.net/wordpress/category/general/projects/xiph/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://bemasc.net/wordpress" rel="alternate" type="text/html"/>
      <subtitle>Like information, but less informative</subtitle>
      <title>Digital Diary of Ben Schwartz » Xiph</title>
      <updated>2010-03-21T03:00:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.gingertech.net/?p=894</id>
    <link href="http://blog.gingertech.net/2010/01/29/government-report-access-to-electronic-media-for-the-hearing-and-vision-impaired/" rel="alternate" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/01/29/government-report-access-to-electronic-media-for-the-hearing-and-vision-impaired/#comments" rel="replies" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/01/29/government-report-access-to-electronic-media-for-the-hearing-and-vision-impaired/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Government Report: “Access to Electronic Media for the Hearing and Vision Impaired”</title>
    <summary xml:lang="en">Today was the last day to provide a submission and input to the Australian Government’s discussion report on “Access to Electronic Media for the Hearing and Vision Impaired: Approaches for Consideration”.
The report explains the Australian Government’s existing regulatory framework for accessibility to audio-visual content on TV, digital TV, DVDs, cinemas, and the Internet, and provides [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>Today was the last day to provide a submission and input to the Australian Government’s discussion report on <a href="http://www.dbcde.gov.au/television/television_captioning/television_captioning_discussion_paper/media_access_discussion_report">“Access to Electronic Media for the Hearing and Vision Impaired: Approaches for Consideration”</a>.</p>
<p>The report explains the Australian Government’s existing regulatory framework for accessibility to audio-visual content on TV, digital TV, DVDs, cinemas, and the Internet, and provides an overview about what it is planning to do over the next 3-5 years.</p>
<p>It is interesting to read that according to the Australian Bureau of Statistics about 2.67 million Australians – one in every eight people – have some form of hearing loss and 284,000 are completely or partially blind. Also, it is expected that these numbers will increase with an ageing population and obesity-linked diabetes are expected to continue to increase these numbers.</p>
<p>For obvious reasons, I was particularly interested in the Internet-related part of the report. It was the second-last section (number five), and to be honest, I was rather disappointed: only 3 pages of the 40 page long report concerned themselves with Internet content. Also, the main message was that “at this time the costs involved with providing captions for online content were deemed to represent an undue financial impost on a relatively new and developing service.”</p>
<p>Audio descriptions weren’t even touched with a stick and both were written off with “a lack of clear online caption production and delivery standard and requirements”. There is obviously a lot of truth to the statements of the report – the Internet audio-visual content industry is still fairly young compared to e.g. TV, and there are a multitude of standards rather than a single clear path.</p>
<p>However, I believe the report neglected to mention the new HTML5 video and audio elements and the opportunity they provide. Maybe HTML5 was excluded because it wasn’t expected to be relevant within the near future. I believe this is a big mistake and governments should pay more attention to what is happening with HTML5 audio and video and the opportunities they open for accessibility.</p>
<p>In the end, I made a <a href="http://blog.gingertech.net/wp-content/uploads/2010/01/submission_accessibility_pfeiffer1.pdf">submission</a> because I wanted the Australian Government to wake up to the HTML5 efforts and I wanted to correct a mistake they made with claiming MPEG-2 was “not compatible with the delivery of closed audio descriptions”.</p>
<p>I believe a lot more can be done with accessibility for Internet content than just “monitor international developments” and industry partnership with disability representative groups. I therefore proposed to undertake trials in particular with textual audio descriptions to see if they could be produced in a similar manner to captions, which would make their cost come down enormously. Also I suggested actually aiming for <a href="http://www.w3.org/TR/WCAG20/#media-equiv">WCAG 2.0 conformance</a> within the next 5 years – which for audio-visual content means at minimum captions and audio descriptions.</p>
<p>You can read the report <a href="http://www.dbcde.gov.au/__data/assets/pdf_file/0004/123187/Media_Access_Review_Discussion_Report.pdf">here</a> and my 4 page long submission <a href="http://blog.gingertech.net/wp-content/uploads/2010/01/submission_accessibility_pfeiffer1.pdf">here</a>.</p></div>
    </content>
    <updated>2010-01-29T12:53:56Z</updated>
    <published>2010-01-29T12:44:40Z</published>
    <category scheme="http://blog.gingertech.net" term="Digital Media"/>
    <category scheme="http://blog.gingertech.net" term="standards"/>
    <category scheme="http://blog.gingertech.net" term="video accessibility"/>
    <category scheme="http://blog.gingertech.net" term="Australian Government"/>
    <category scheme="http://blog.gingertech.net" term="HTML5 video"/>
    <category scheme="http://blog.gingertech.net" term="plans"/>
    <category scheme="http://blog.gingertech.net" term="report"/>
    <author>
      <name>silvia</name>
      <uri>http://blog.gingertech.net/</uri>
    </author>
    <source>
      <id>http://blog.gingertech.net/feed/atom/</id>
      <link href="http://blog.gingertech.net" rel="alternate" type="text/html"/>
      <link href="http://blog.gingertech.net/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Silvia's blog</subtitle>
      <title xml:lang="en">ginger's thoughts</title>
      <updated>2010-03-11T00:43:49Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.gingertech.net/?p=881</id>
    <link href="http://blog.gingertech.net/2010/01/26/tutorial-on-html5-open-video-at-lca-2010/" rel="alternate" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/01/26/tutorial-on-html5-open-video-at-lca-2010/#comments" rel="replies" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/01/26/tutorial-on-html5-open-video-at-lca-2010/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Tutorial on HTML5 open video at LCA 2010</title>
    <summary xml:lang="en">During last week’s LCA, Jan Gerber, Michael Dale and I gave a 3 hour tutorial on how to publish HTML5 video in an open format.
We basically taught people how to create and publish Ogg Theora video in HTML5 Web pages and how to make them work across browsers, including much of the available tools and [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>During last week’s LCA, Jan Gerber, Michael Dale and I gave a 3 hour tutorial on <a href="http://www.lca2010.org.nz/programme/schedule/view_talk/50180?day=thursday">how to publish HTML5 video in an open format</a>.</p>
<p>We basically taught people how to create and publish Ogg Theora video in HTML5 Web pages and how to make them work across browsers, including much of the available tools and libraries. We’re hoping that some people will have learnt enough to include modules in CMSes such as Drupal, Joomla and Wordpress, which will easily support the publishing of Ogg Theora.</p>
<p>I have been asked to share the material that we used. It consists of:</p>
<ul>
<li><a href="http://blog.gingertech.net/wp-content/uploads/2010/01/HTML5_Tutorial.pdf">HTML5_Tutorial</a> (611KB)</li>
<li><a href="http://blog.gingertech.net/wp-content/uploads/2010/01/demo.tar.gz">the example videos</a> (328MB), and</li>
<li><a href="http://blog.gingertech.net/wp-content/uploads/2010/01/exercises.tar.gz">HTML5 video exercises</a> (3.4KB).</li>
</ul>
<p>Note that if you would like to walk through the exercises, you should install the following software beforehand:</p>
<ul>
<li>oggz-tools</li>
<li><a href="http://sourceforge.net/projects/oggvideotools/files/">oggvideotools</a></li>
<li>apache2 or a Web server of your choice</li>
<li><a href="http://v2v.cc/~j/ffmpeg2theora/">ffmpeg2theora</a></li>
<li><a href="http://getfirefox.com/">firefox3.5+</a></li>
<li><a href="http://firefogg.org/">firefogg</a> plugin</li>
<li><a href="http://getfirebug.com/">firebug</a> plugin</li>
<li>vlc, mplayer, totem or xine</li>
<li>kino or pitivi or another video editor that exports Theora, e.g. iMovie with XiphQT</li>
</ul>
<p>You might need to look for packages of your favourite OS (e.g. <a href="http://firefogg.org/nightly/">Windows or Mac</a>, <a href="https://launchpad.net/~theora/+archive/ppa">Ubuntu or Debian</a>).</p>
<p>The exercises include:</p>
<ul>
<li>creating a Ogg video from an editor</li>
<li>transcoding a video using http://firefogg.org/</li>
<li>creating a poster image using OggThumb</li>
<li>writing a first HTML5 video Web page with Ogg Theora</li>
<li>publishing it on a Web Server, with correct MIME type &amp; Duration hint</li>
<li>writing a second HTML5 video Web page with Ogg Theora &amp; MP4 to cover Safari/Webkit</li>
<li>transcoding using ffmpeg2theora in a script</li>
<li>writing a third HTML5 video Web page with Cortado fallback</li>
<li>writing a fourth Web page using “Video for Everybody”</li>
<li>writing a fifth Web page using “mwEmbed”</li>
<li>writing a sixth Web page using firefogg for transcoding before upload</li>
<li>and a seventh one with a progress bar</li>
<li>encoding srt subtitles into an Ogg Kate track</li>
<li>writing an eighth Web page using cortado to display the Ogg Kate track</li>
</ul>
<p>For those that would like to see the slides here immediately, a special flash embed:</p>
<p>&lt;object height="355" style="margin:0px" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=html5tutorial-100126051350-phpapp01&amp;amp;rel=0&amp;amp;stripped_title=html5-open-video-tutorial"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=html5tutorial-100126051350-phpapp01&amp;amp;rel=0&amp;amp;stripped_title=html5-open-video-tutorial" type="application/x-shockwave-flash" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;</p>
<p>Enjoy!</p></div>
    </content>
    <updated>2010-01-26T11:21:57Z</updated>
    <published>2010-01-26T01:40:45Z</published>
    <category scheme="http://blog.gingertech.net" term="Digital Media"/>
    <category scheme="http://blog.gingertech.net" term="LCA"/>
    <category scheme="http://blog.gingertech.net" term="Open Source"/>
    <category scheme="http://blog.gingertech.net" term="code"/>
    <category scheme="http://blog.gingertech.net" term="open codecs"/>
    <category scheme="http://blog.gingertech.net" term="standards"/>
    <category scheme="http://blog.gingertech.net" term="video accessibility"/>
    <category scheme="http://blog.gingertech.net" term="Firefox"/>
    <category scheme="http://blog.gingertech.net" term="HTML5 video"/>
    <category scheme="http://blog.gingertech.net" term="Ogg Theora"/>
    <category scheme="http://blog.gingertech.net" term="tutorial"/>
    <author>
      <name>silvia</name>
      <uri>http://blog.gingertech.net/</uri>
    </author>
    <source>
      <id>http://blog.gingertech.net/feed/atom/</id>
      <link href="http://blog.gingertech.net" rel="alternate" type="text/html"/>
      <link href="http://blog.gingertech.net/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Silvia's blog</subtitle>
      <title xml:lang="en">ginger's thoughts</title>
      <updated>2010-03-11T00:43:49Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.gingertech.net/?p=870</id>
    <link href="http://blog.gingertech.net/2010/01/25/html5-video-25-h-264-reach-vs-95-ogg-theora-reach/" rel="alternate" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/01/25/html5-video-25-h-264-reach-vs-95-ogg-theora-reach/#comments" rel="replies" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/01/25/html5-video-25-h-264-reach-vs-95-ogg-theora-reach/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">HTML5 video: 25% H.264 reach vs. 95% Ogg Theora reach</title>
    <summary xml:lang="en">Vimeo started last week with a HTML5 beta test. They use the H.264 codec, probably because much of their content is already in this format through the Flash player.
But what really surprised me was their claim that roughly 25% of their users will be able to make use of their HTML5 beta test. The statement [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>Vimeo started last week with a <a href="http://vimeo.com/blog:268">HTML5 beta test</a>. They use the H.264 codec, probably because much of their content is already in this format through the Flash player.</p>
<p>But what really surprised me was their claim that roughly 25% of their users will be able to make use of their HTML5 beta test. The statement is that 25% of their users use Safari, Chrome, or IE with Chrome Frame. I wondered how they got to that number and what that generally means to the amount of support of H.264 vs Ogg Theora on the HTML5-based Web.</p>
<p>According to <a href="http://gs.statcounter.com/#browser_version-ww-monthly-200812-201001">Statcounter’s browser market share statistics</a>,  <strong>the percentage of browsers that support HTML5 video is roughly: 31.1%</strong>, as summed up from Firefox 3.5+ (22.57%), Chrome 3.0+ (5.21%), and Safari 4.0+ (3.32%) (Opera’s recent release is not represented yet).</p>
<p>Out of those 31.1%,</p>
<p/><center><strong>8.53%</strong> browsers support H.264</center><p/>
<p> and</p>
<p/><center><strong>27.78%</strong> browsers support Ogg Theora.</center><p/>
<p>Given these numbers, Vimeo must assume that roughly 16% of their users have Chrome Frame in IE installed. That would be quite a number, but it may well be that their audience is special.</p>
<p>So, how is Ogg Theora support doing in comparison, if we allow such browser plugins to be counted?</p>
<p>With an installation of <a href="http://www.xiph.org/quicktime/">XiphQT</a>, Safari can be turned into a browser that supports Ogg Theora. The Chome Frame installation will also turn IE into a Ogg Theora supporting browser. <strong>These could get the browser support for Ogg Theora up to 45%</strong>. Compare this to a claimed 48% of MS Silverlight support.</p>
<p>But we can do even better for Ogg Theora. If we use the <a href="http://theora.org/cortado/">Java Cortado player</a> as a fallback inside the video element, we can capture all those users that have Java installed, which could be as high as 90%, <strong>taking Ogg Theora support potentially up to 95%</strong>, almost up to the claimed 99% of Adobe Flash.</p>
<p>I’m sure all these numbers are disputable, but it’s an interesting experiment with statistics and tells us that right now, Ogg Theora has better browser support than H.264.</p>
<p>UPDATE: I was told this article sounds aggressive. By no means am I trying to be aggressive – I am stating the numbers as they are right now, because there is a lot of confusion in the market. People believe they reach less audience if they publish in Ogg Theora compared to H.264. I am trying to straighten this view.</p></div>
    </content>
    <updated>2010-01-25T10:02:45Z</updated>
    <published>2010-01-25T08:22:17Z</published>
    <category scheme="http://blog.gingertech.net" term="Digital Media"/>
    <category scheme="http://blog.gingertech.net" term="analytics"/>
    <category scheme="http://blog.gingertech.net" term="open codecs"/>
    <category scheme="http://blog.gingertech.net" term="standards"/>
    <category scheme="http://blog.gingertech.net" term="browser uptake"/>
    <category scheme="http://blog.gingertech.net" term="H.264"/>
    <category scheme="http://blog.gingertech.net" term="HTML5"/>
    <category scheme="http://blog.gingertech.net" term="HTML5 video"/>
    <category scheme="http://blog.gingertech.net" term="Ogg Theora"/>
    <category scheme="http://blog.gingertech.net" term="statistics"/>
    <author>
      <name>silvia</name>
      <uri>http://blog.gingertech.net/</uri>
    </author>
    <source>
      <id>http://blog.gingertech.net/feed/atom/</id>
      <link href="http://blog.gingertech.net" rel="alternate" type="text/html"/>
      <link href="http://blog.gingertech.net/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Silvia's blog</subtitle>
      <title xml:lang="en">ginger's thoughts</title>
      <updated>2010-03-11T00:43:49Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://xiphmont.livejournal.com/47503.html</id>
    <link href="http://xiphmont.livejournal.com/47503.html" rel="alternate" type="text/html"/>
    <title>Why is it so hard to take a good bio pic?</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Camilla and I spent a while taking 'headshot' pics because I need one for a bio.  Out of all the pics, guess which was the only one that looked decent...

</p><p><img src="http://web.mit.edu/xiphmont/Public/bio-test.JPG"/></p></div>
    </summary>
    <updated>2010-01-20T02:12:10Z</updated>
    <category term="xiph"/>
    <author>
      <name>Monty</name>
      <email>monty@xiph.org</email>
    </author>
    <source>
      <id>http://xiphmont.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/70118889/829507</logo>
      <author>
        <name/>
        <email>monty@xiph.org</email>
      </author>
      <link href="http://xiphmont.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://xiphmont.livejournal.com/data/rss?tag=xiph" rel="self" type="application/atom+xml"/>
      <subtitle>Monty - LiveJournal.com</subtitle>
      <title>Monty</title>
      <updated>2010-03-22T14:00:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.gingertech.net/?p=861</id>
    <link href="http://blog.gingertech.net/2010/01/18/video-streaming-from-linux-conf-au/" rel="alternate" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/01/18/video-streaming-from-linux-conf-au/#comments" rel="replies" type="text/html"/>
    <link href="http://blog.gingertech.net/2010/01/18/video-streaming-from-linux-conf-au/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">Video Streaming from Linux.conf.au</title>
    <summary xml:lang="en">You probably heard it already: Linux.conf.au is live streaming its video in a Microsoft proprietary format.
Fortunately, there is now a re-broadcast that you can get in an open format from http://stream.v2v.cc:8000/ . It comes from a server in Europe, but relies on transcoding here in New Zealand, so it may not be completely reliable.
UPDATE: A [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><blockquote><p>
You probably heard it already: <a href="http://www.lca2010.org.nz/programme/schedule/monday">Linux.conf.au</a> is live streaming its video in a Microsoft proprietary format.</p>
<p>Fortunately, there is now a re-broadcast that you can get in an open format from <a href="http://stream.v2v.cc:8000/">http://stream.v2v.cc:8000/</a> . It comes from a server in Europe, but relies on transcoding here in New Zealand, so it may not be completely reliable.</p>
<p>UPDATE: A second server is now also available from the US at <a href="http://repeater.xiph.org:8000/">http://repeater.xiph.org:8000/</a>.
</p></blockquote>
<p>Today, the down under <a href="http://www.lca2010.org.nz/programme/schedule/monday">open source / Linux conference linux.conf.au in Wellington</a> started with the announcement that every talk and mini-conf will be live streamed to the Internet and later published online. That’s an awesome achievement!</p>
<p>However, minutes after the announcement, I was very disappointed to find out that the streams are actually provided in a proprietary format and through a proprietary streaming protocol: a Microsoft streaming service that provides Windows media streams.</p>
<p>Why stream an open source conference in a proprietary format with proprietary software? If we cannot use our own technologies for our own conferences, how will we get the rest of the world to use them?</p>
<p>I must say, I am personally embarrassed, because I was part of several audio/video teams of previous LCAs that have managed to record and stream content in open formats and with open media software. I would have helped get this going, but wasn’t aware of the situation.</p>
<p>I am also the main organiser of the <a href="http://www.foms-workshop.org/foms2010">FOMS Workshop (Foundations of Open Media Software)</a> that ran the week before LCA and brought some of the core programmers in open media software into Wellington, most of which are also attending LCA. We have the brains here and should be able to get this going.</p>
<p>Fortunately, the published content will be made available in Ogg Theora/Vorbis. So, it’s only the publicly available stream that I am concerned about.</p>
<p>Speaking with the organisers, I can somewhat understand how this came to be. They took the “easy” way of delegating the video work to an external company. Even though this company is an expert in open source and networking, their media streaming customers are all using Flash or Windows media software, which are current de-facto standards and provide extra features such as DRM. It seems apart from linux.conf.au there were no requests on them for streaming Ogg Theora/Vorbis yet. Their existing infrastructure includes CDN distribution and CDN providers certainly typically don’t provide Ogg Theora/Vorbis support or Icecast streaming.</p>
<p>So, this is actually a problem founded in setting up streaming through a professional service rather than through the community. The way in which this was set up at other events was to get together a group of volunteers that provided streaming reflectors for free. In this way, a community-created CDN is built that can deal with the streams. That there are no professional CDN providers available yet that provide Icecast support is a sign that there is a gap in the market.</p>
<p>But phear not – a few of the FOMS folk got together to fix the situation.</p>
<p>It involved setting up <a href="http://icecast.org/">Icecast</a> streams for each room’s video stream. Since there is no access to the raw video stream, there is a need to transcode the video from proprietary codecs to the open Ogg Theora/Vorbis format.</p>
<p>To do this legally, a <a href="http://www.fluendo.com/shop/product/complete-set-of-playback-plugins/">purchase of the codec libraries from Fluendo</a> was necessary, which cost a whopping EURO 28 and covers all the necessary patent licenses. The glue to get the videos from mms to icecast streams is a GStreamer pipeline which I leave others to talk about.</p>
<p>Now, we have all the streams from the conference available as Ogg Theora/Video streams, we can also publish them in HTML5 video elements. Check out <a href="http://annodex.net/~silvia/lca_icecast.html">this Web page</a> which has all the video streams together on a single page. Note that the connections may be a bit dodgy and some drop-outs may occur.</p>
<p>Further, let me recommend the Multimedia Miniconf at linux.conf.au, which will take place tomorrow, Tuesday 19th January. The Miniconf has decided to add a talk about “How to stream you conference with open codecs” to help educate any potential future conference organisers and point out the software that helps solve these issues.</p>
<p>UPDATE: I should have stated that I didn’t actually do any of the technical work: it was all done by Ralph Giles, Jan Gerber, and Jan Schmidt.</p></div>
    </content>
    <updated>2010-01-19T00:38:36Z</updated>
    <published>2010-01-18T05:09:27Z</published>
    <category scheme="http://blog.gingertech.net" term="Digital Media"/>
    <category scheme="http://blog.gingertech.net" term="FOMS"/>
    <category scheme="http://blog.gingertech.net" term="LCA"/>
    <category scheme="http://blog.gingertech.net" term="Open Source"/>
    <category scheme="http://blog.gingertech.net" term="open codecs"/>
    <category scheme="http://blog.gingertech.net" term="standards"/>
    <category scheme="http://blog.gingertech.net" term="LCA2010"/>
    <category scheme="http://blog.gingertech.net" term="Ogg Theora/Vorbis"/>
    <category scheme="http://blog.gingertech.net" term="open media software"/>
    <category scheme="http://blog.gingertech.net" term="rebroadcast"/>
    <category scheme="http://blog.gingertech.net" term="video streaming"/>
    <author>
      <name>silvia</name>
      <uri>http://blog.gingertech.net/</uri>
    </author>
    <source>
      <id>http://blog.gingertech.net/feed/atom/</id>
      <link href="http://blog.gingertech.net" rel="alternate" type="text/html"/>
      <link href="http://blog.gingertech.net/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Silvia's blog</subtitle>
      <title xml:lang="en">ginger's thoughts</title>
      <updated>2010-03-11T00:43:49Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-19599775.post-4600153759581428225</id>
    <link href="http://cristianadam.blogspot.com/feeds/4600153759581428225/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=19599775&amp;postID=4600153759581428225" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/19599775/posts/default/4600153759581428225" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/19599775/posts/default/4600153759581428225" rel="self" type="application/atom+xml"/>
    <link href="http://cristianadam.blogspot.com/2010/01/ie-tag.html" rel="alternate" type="text/html"/>
    <title>IE &lt;video&gt; tag</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I have started hacking a &lt;video&gt; tag implementation for Microsoft Internet Explorer, based on the work of Vladimir Vukićević's <a href="http://blog.vlad1.com/2008/07/30/no-browser-left-behind/">IECanvas</a> experiment. Source code is located <a href="http://svn.xiph.org/trunk/oggdsf/src/lib/plugin/AxPlayer/">here</a>.<br/><br/>The AxPlayer will use the <a href="http://xiph.org/dshow/">DirectShow OggCodecs</a> for the actual video playback. At the moment it doesn't do much, it just displays a gray rectangle where the video should be, as seen below:<br/><br/><a href="http://2.bp.blogspot.com/_sKFDQyaSuWc/S1DU5tr9XPI/AAAAAAAAAI8/JFmpyATRLhw/s1600-h/axplayer_pre_ie8.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5427071638963051762" src="http://2.bp.blogspot.com/_sKFDQyaSuWc/S1DU5tr9XPI/AAAAAAAAAI8/JFmpyATRLhw/s400/axplayer_pre_ie8.png" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 322px;"/></a><br/><br/>Internet Explorer versions 6.0 and 7.0 required the following syntax for Binary Element Behaviour components:<br/><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee; font-size: 12px; border: 1px dashed #999999; line-height: 14px; padding: 5px; overflow: auto; width: 100%;"><code>&lt;html xmlns:html5&gt;<br/>&lt;head&gt;<br/>   &lt;object id="videoFactory" classid="clsid:7cc95ae6-c1fa-40cc-ab17-3e91da2f77ca"&gt;&lt;/object&gt;<br/>   &lt;?import namespace="html5" implementation="#videoFactory"?&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/><br/>&lt;p&gt;This is a header &lt;/p&gt;<br/><br/>&lt;html5:video src="http://videos.mozilla.org/firefox/3.5/meet/meet.ogv"&gt;<br/>&lt;p&gt;your browser cannot handle video tag&lt;/p&gt;<br/>&lt;/html5:video&gt;<br/><br/>&lt;p&gt;This is a footer &lt;/p&gt;<br/><br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/></code></pre><br/>Internet Explorer 8 has an improved syntax:<br/><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee; font-size: 12px; border: 1px dashed #999999; line-height: 14px; padding: 5px; overflow: auto; width: 100%;"><code>&lt;html&gt;<br/>&lt;body&gt;<br/><br/>&lt;p&gt;This is a header &lt;/p&gt;<br/><br/>&lt;video src="http://videos.mozilla.org/firefox/3.5/meet/meet.ogv" <br/>          xmlns="http://www.w3.org/1999/xhtml"&gt;<br/>    &lt;p&gt;your browser cannot handle video tag.&lt;/p&gt;<br/>&lt;/video&gt;<br/><br/>&lt;p&gt;This is a footer &lt;/p&gt;<br/><br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/></code></pre><br/><br/>The &lt;object&gt; information has been moved into Windows Registry instead of html code:<br/><br/><a href="http://1.bp.blogspot.com/_sKFDQyaSuWc/S1DfT5yffRI/AAAAAAAAAJE/o9Bs1UxgXoY/s1600-h/registry.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5427083084004556050" src="http://1.bp.blogspot.com/_sKFDQyaSuWc/S1DfT5yffRI/AAAAAAAAAJE/o9Bs1UxgXoY/s400/registry.png" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 91px;"/></a><br/>The <em>xmlns</em> needs to be there in order to link &lt;video&gt; tag to AxPlayer, but the code looks way better :)<br/><br/><br/>Next steps would be: <br/><ul><br/><li>Actually display a video instead of a gray rectangle</li><br/><li>Modify the OggCodecs source filter to proper handle videos from network</li><br/><li>Implement the &lt;video&gt; and &lt;audio&gt; W3C HTML5 tag specifications</li><br/><li>Improve the user experience by implementing all it's needed for Internet Explorer not to display the ActiveX warning popups.</li><br/></ul><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/19599775-4600153759581428225?l=cristianadam.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-15T23:38:00Z</updated>
    <published>2010-01-15T20:09:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="html5 video"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="Internet Explorer"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="xiph"/>
    <author>
      <name>Cristian Adam</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/16735332457747999220</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-19599775</id>
      <author>
        <name>Cristian Adam</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/16735332457747999220</uri>
      </author>
      <link href="http://cristianadam.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/19599775/posts/default/-/xiph" rel="self" type="application/atom+xml"/>
      <link href="http://cristianadam.blogspot.com/search/label/xiph" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>technical weblog.</subtitle>
      <title>Cristian Adam's</title>
      <updated>2010-03-20T10:59:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5537325711190185140.post-1920722269149368525</id>
    <link href="http://blog.pearce.org.nz/feeds/1920722269149368525/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5537325711190185140&amp;postID=1920722269149368525" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/1920722269149368525" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/1920722269149368525" rel="self" type="application/atom+xml"/>
    <link href="http://blog.pearce.org.nz/2010/01/indexing-keyframes-in-ogg-videos-for.html" rel="alternate" type="text/html"/>
    <title>Indexing keyframes in Ogg videos for fast seeking</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Seeking in Ogg videos in HTML5 &lt;video&gt; over the network currently can be very slow. This is because when we seek an Ogg/Theora video to a target time, we must perform a bisection search over the file in order to find the target Theora video frame. If this is an interframe (which just records what's changed since its preceding frame), we must then perform another bisection search to find the interframe's keyframe, and then decode forwards to the target frame in order to completely construct it.<br/><br/>A reasonable bisection search implementation may require half a dozen HTTP requests to complete, so if we need to do two bisection searches per seek (once for the target frame, and once for the target frame's keyframe), we actually need to do about a dozen HTTP requests per seek...<br/><br/>If we knew in advance where the keyframes were, we wouldn't need to do any bisection searches; we could make just one HTTP request to the last keyframe preceeding the target frame. Clearly making fewer HTTP requests is faster.<br/><br/>Enter the <a href="http://wiki.xiph.org/Ogg_Index">Skeleton 3.1 with Keyframe Index track</a>. This extends the existing <a href="http://www.xiph.org/ogg/doc/skeleton.html">Skeleton 3.0 metadata track</a> to provide an index for every Theora video and Vorbis audio track in an Ogg media. This will enable players to make the optimal HTTP request when seeking in media files served over the internet, resulting in as fast seeking as possible when viewing online video.<br/><br/>It's nice if a video player's UI can display the playback duration of the Ogg media. Unfortunately the raw Ogg format does not store the duration either, so it must be calculated, which requires additional HTTP requests, and slows down the video loading. The Skeleton 3.1 track also includes the playback duration of its Ogg containing file, to eliminate this overhead and speed up loading.<br/><br/>I developed the Skeleton 3.1 with Keyframe Index track in conjunction with the folks at Xiph.org. See the Xiph.org <a href="http://wiki.xiph.org/Ogg_Index">Skeleton 3.1 with Keyframe Index wiki page</a> for the work-in-progress specification. Any comments on the specification would be much appreciated, please send them to the <a href="http://lists.xiph.org/mailman/listinfo/theora">Theora mailing list</a>.<br/><br/>I have developed a prototype Ogg indexer, <a href="http://github.com/cpearce/OggIndex">OggIndex</a>, and also recent <a href="http://v2v.cc/%7Ej/ffmpeg2theora">ffmpeg2theora</a> nightlies will encode keyframe indexes if you specify the command line option <tt>-–seek-index</tt>. <a href="http://firefogg.org/nightly/">OggIndex and experimental indexing ffmpeg2theora nightlies</a> are available for download.<br/><br/>To see how keyframe indexing improves network seeking performance of HTML5 Ogg/Theora &lt;video&gt;, you can download a development version of Firefox which can take advantage of indexes here:<br/><br/><a href="http://pearce.org.nz/video/firefox-indexed-seek-linux.tar.bz2">http://pearce.org.nz/video/firefox-indexed-seek-linux.tar.bz2</a><br/><a href="http://pearce.org.nz/video/firefox-indexed-seek-macosx.dmg">http://pearce.org.nz/video/firefox-indexed-seek-macosx.dmg</a><br/><a href="http://pearce.org.nz/video/firefox-indexed-seek-win32.zip">http://pearce.org.nz/video/firefox-indexed-seek-win32.zip</a><br/><br/>If you already have a Firefox instance running, you'll need to either close your running Firefox instance before starting the index-capable Firefox, or start the index-capable Firefox with the <tt>--no-remote</tt> command line parameter.<br/>To compare the network performance of indexed versus non-indexed seeking, point the index-capable Firefox to the <a href="http://pearce.org.nz/video/indexed-seek-demo.html">indexed seek demo</a> page.<br/><br/>You should notice a clear speed difference when seeking to an <i>unbuffered</i> position in the indexed media.<br/><br/>The Skeleton 3.1 with Keyframe Index specification is still being developed, but we hope to lock it down soon. We are planning to ship support for keyframe index-assisted seeking in Firefox 3.7.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5537325711190185140-1920722269149368525?l=blog.pearce.org.nz" width="1"/></div></div>
    </content>
    <updated>2010-01-11T02:34:31Z</updated>
    <published>2010-01-11T02:03:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="video"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="ogg"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="seeking"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="keyframe index"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="mozilla"/>
    <author>
      <name>Chris Pearce</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/13735147508549619230</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5537325711190185140</id>
      <author>
        <name>Chris Pearce</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/13735147508549619230</uri>
      </author>
      <link href="http://blog.pearce.org.nz/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/-/ogg" rel="self" type="application/atom+xml"/>
      <link href="http://blog.pearce.org.nz/search/label/ogg" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>The more drums we have in our kit, the more jobs we can handle.</subtitle>
      <title>Thundering Herd</title>
      <updated>2010-03-16T01:04:35Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.advogato.org/person/rillian/diary.html?start=113</id>
    <link href="http://www.advogato.org/person/rillian/diary.html?start=113" rel="alternate" type="text/html"/>
    <title>31 Dec 2009</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://advogato.org/person/rillian/Opera">Opera</a> has a new experimental build with
Theora and Vorbis HTML5 support.

<p> Philip Jägenstedt has <a href="http://my.opera.com/core/blog/2009/12/31/re-introducing-video">a
nice blog post</a> explaining what's new.</p></div>
    </summary>
    <updated>2009-12-31T23:53:28Z</updated>
    <source>
      <id>http://www.advogato.org/person/rillian/</id>
      <author>
        <name>Ralph Giles</name>
      </author>
      <link href="http://www.advogato.org/person/rillian/" rel="alternate" type="text/html"/>
      <link href="http://advogato.org/person/rillian/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Advogato blog for rillian</subtitle>
      <title>Advogato blog for rillian</title>
      <updated>2010-03-22T14:00:04Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://bemasc.net/wordpress/?p=1495</id>
    <link href="http://bemasc.net/wordpress/2009/12/30/semiconductor-prediction-long-term/" rel="alternate" type="text/html"/>
    <title>Semiconductor prediction: long term</title>
    <summary>Disclaimer: I don’t know anything about this stuff.  I mostly code Python.
Setup
Computer chips (that includes CPUs, GPUs, RAM, and solid-state storage) are expensive.  They’re expensive because they’re made in ultra-high-tech lithographic fabs that cost over a billion dollars to build.  The chips have to be expensive because the fab’s cost must be [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Disclaimer: I don’t know anything about this stuff.  I mostly code Python.</p>
<p><strong>Setup</strong></p>
<p>Computer chips (that includes CPUs, GPUs, RAM, and solid-state storage) are expensive.  They’re expensive because they’re made in ultra-high-tech lithographic fabs that cost over a billion dollars to build.  The chips have to be expensive because the fab’s cost must be amortized in the limited amount of time before the next process shrink, at which point the old fabs are obsolete (or at least behind the times).</p>
<p>As many have noted, there’s a fundamental limit to how many more process shrinks we can have.  The latest chips are being produced at a 32 nm process.  If you’re willing to extrapolate out Moore’s law for transistor density, then in about 20 years we’ll be at 1 nm process, and further shrinkage is impossible because that’s about the size of a single atom.  If you’re a pessimist you think progress will stop sooner, and if you’re an optimist you think we’ll reach that limit sooner, so either way, we’re likely to be mostly done within a decade or two.</p>
<p>As process improvement becomes incremental, the commercial lifetime of fabs will increase dramatically, and the same is true of semiconductor designs.  An Intel Core i7 is mostly faster than a Pentium II because of process shrinks.  Without changes in process, a single chip design could be sold until the dominant cost consideration is the raw materials themselves… and with high volumes, I suspect that even ultra high purity silicon isn’t all that expensive.</p>
<p><strong>Prediction</strong></p>
<p>The question then is: if silicon is cheap, what do you put on it?  From my perspective, the answer is “everything”.  Different kinds of tasks require very different kinds of functions, and the most efficient implementation of any task, measured in time or power, is always a special-purpose circuit.  A general-purpose computer might be used for word processing, massively multithreaded relational databases, sound manipulation, 3D graphics, physics simulation, videoconferencing, or some obscure low-latency stream processing.  These tasks are respectively most efficiently accomplished by a few general-purpose CPUs, a massive number of logic-focused processors, DSP with hardware FFT, a GPU pipeline, an enormously wide floating-point vector machine, codec-specific encode/decode/muxing, and an FPGA.  A future main chip might contain all these functions on a single die.  If you’re not using them, they don’t draw power, and so are “free”.</p>
<p>This trend has very much already started, to the point that the most dubious thing about this prediction may be calling it “long term”.  Today, AMD/ATi, Intel, and VIA each sell a complete package of: a general-purpose CPU, a vector unit attached to the CPU, a GPU with a 3D pipeline, a huge vector unit accessible on the GPU, and codec-specific demux and decode for roughly 5 different codecs.  Texas Instruments OMAP3 includes all that (though smaller), plus a DSP.  Both AMD and Intel have vowed to combine their functions onto a single die in the near future.  Sun has demonstrated the effectiveness of Niagara in certain workloads, and Tilera and Intel’s Larrabee have moved even further down the polycore path.</p>
<p><strong>Software Architecture Implications</strong></p>
<p>One remarkable issue apparent with the growth of GPUs is how hard it is to allocate resources in heterogeneous environments.  I’m not aware of any operating system that actually attempts to schedule processes on graphics cards or DSPs.  This lack of scheduling hasn’t been a terrible issue in practice … because software that makes use of these special-purpose processors is so hard to write that most of a user’s software doesn’t require it!</p>
<p>The best approach I’ve seen to making use of special-purpose hardware is the one beginning to bubble up in the Gstreamer project.  Gstreamer is a semi-special-purpose dataflow framework that knows something about the nature of the data that is flowing.  Specifically, it knows the type of the data, the series of high-level operations that are needed, and the available implementation of these operations.  Soon, it will know something about the underlying hardware, and the costs of performing operations in various places.  The goal, then, is to be able to say “overlay the text from this file, rendered in this font, over this video, and display to this screen”, and let gstreamer work how which system components should be responsible for which steps.  For multimedia, this is exactly the right way.</p>
<p>I think this is the way forward: a framework in which one composes high-level operations on typed inputs.  If this becomes popular enough, then we really will have a scheduling problem, which leads me to a prediction: gstreamer or its successor will be integrated with the kernel, and especially the scheduler.  The only way a scheduler will be able to allocate these heterogeneous resources effectively is if it can see the detailed structure of the tasks themselves.  It needs to see things like the relationship between different pieces’ realtime deadlines, and the different possible processor allocations for all running pipelines.  This is especially important given the bizarre topologies that seem to be inevitable in designs like Tilera’s.</p>
<p><strong>Software Politics Implications</strong></p>
<p>Right now, integrated chips like TI’s OMAP are also among the worst offenders in the area of proprietary drivers and undocumented functionality.  To a businessman focused on differential gains, this makes perfect sense, because there’s nothing a corporation hates more than commoditization.  By keeping the public abstraction barrier high, the manufacturer raises the costs for others to reproduce its work, limiting the ability of competition to squeeze prices against manufacturing costs.  As semiconductor production becomes increasingly commoditized, the incentive to hide the functioning of the chip becomes higher and higher.</p>
<p>The other problem is that even if the designs aren’t secret, the choice of which functions to implement has a huge impact on the choice of software.  The example of the moment is the ubiquitous MPEG-4 accelerator chips.  They implement the patented algorithms required to decode MPEG-4, requiring licensing fees both to produce and to use.  They are largely undocumented, perhaps due to fear by their manufacturers that releasing documentation would be seen as encouraging patent infringement.  As long as patents on software are enforced, some component of a complex chip will likely require a patent license to use.  It’s not just video codecs, either: an obvious example of the moment might be a .NET/CLI bytecode acceleration unit.</p>
<p>At a higher level, there’s a political question about compatibility.  Currently, CPUs (even of different architectures) are all essentially C processing units, and so most code written in C (or higher) will run across any of them with nothing more than a recompile (and often less than a recompile).  As chips acquire more special-purpose functional units, making use of them is going to require something more than ISO C.  If chipmakers don’t agree ahead of time to standard abstraction barriers (like OpenGL or VHDL), it could quickly become quite difficult to build an operating system that runs the same applications on multiple architectures.  DSPs are already in this position, requiring hand-tuned assembler that’s different for every DSP.  Moreover, manufacturers who fear commoditization will shun standards, rendering it almost impossible to use the whole chip without tying yourself to it.  We can work around this, by providing high-level operators (e.g. a Theora decoder) with many different backends, but an enormous amount of labor will be required.</p>
<p><strong>Open Issues</strong></p>
<p>My number one unanswered question is: what will the memory topology look like?  I’m fairly certain it’s going to look complicated, and severely nonuniform, but beyond that I’m stumped.  My best guess is that the components of a chip will be wired together by an on-chip bus, with independent caches and maybe a few different main RAM banks.</p>
<p>As silicon gets faster though, I wonder if the latency to main memory will become unbearable.  The only solution is to move the memory closer to the chips, onto the same die.  IBM’s POWER designs seem to be headed this way already, with DRAM on the CPU.  If you already have NUMA, then naturally you want the memory to be nearest to its functional unit… or perhaps the reverse!  Maybe the future is widely separated functional units, each surrounded by its own RAM bank.</p>
<p>The really interesting question here, though, is what happens if nonvolatile RAM picks up.  Will we have memory, storage, and processing, all mixed up in a single bank of identical chips?  Maybe cache, RAM, and disk will be replaced by a continuum, from the bits that are closest, and therefore fastest, to the ones that are furthest away.</p>
<p>That would be cool.</p></div>
    </content>
    <updated>2009-12-30T05:29:33Z</updated>
    <category term="General"/>
    <category term="Xiph"/>
    <author>
      <name>Ben</name>
    </author>
    <source>
      <id>http://bemasc.net/wordpress</id>
      <link href="http://bemasc.net/wordpress/category/general/projects/xiph/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://bemasc.net/wordpress" rel="alternate" type="text/html"/>
      <subtitle>Like information, but less informative</subtitle>
      <title>Digital Diary of Ben Schwartz » Xiph</title>
      <updated>2010-03-21T03:00:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.advogato.org/person/rillian/diary.html?start=112</id>
    <link href="http://www.advogato.org/person/rillian/diary.html?start=112" rel="alternate" type="text/html"/>
    <title>23 Dec 2009</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Today I tried <a href="http://www.phoronix.com/scan.php?page=article&amp;item=fedora_r600_3d">installing</a>
the experimental R600/700 3D drivers for <a href="https://fedoraproject.org/wiki/Fedora_12_Announcement">Fedora
12</a>. Surprisingly, nothing much broke. And now I have
compiz, yay! Like the clutter gdm screen, it's a bit too
slow though.

<p> Unfortunately, blender seems to be slower than it was under
software rendering. <em>sigh</em>.</p></div>
    </summary>
    <updated>2009-12-23T05:14:41Z</updated>
    <source>
      <id>http://www.advogato.org/person/rillian/</id>
      <author>
        <name>Ralph Giles</name>
      </author>
      <link href="http://www.advogato.org/person/rillian/" rel="alternate" type="text/html"/>
      <link href="http://advogato.org/person/rillian/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Advogato blog for rillian</subtitle>
      <title>Advogato blog for rillian</title>
      <updated>2010-03-22T14:00:04Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://metavid.org/blog/?p=391</id>
    <link href="http://metavid.org/blog/2009/12/18/cool-metavid-mashup-openmeetingsorg/" rel="alternate" type="text/html"/>
    <title>Cool metavid mashup: OpenMeetings.org</title>
    <summary>I wanted to share a really cool metavid based project with everyone Openmeetings.org. Geroge has done some hacking on the metavid.org codebase to build an very interesting new application for logging of public meetings. From the open meetings.org site:
“OpenMeetings.org is a audio/video transcription and annotation platform built from entirely free and open source software.  [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I wanted to share a really cool metavid based project with everyone <a href="http://openmeetings.org/" target="_blank" title="Open Meetings.org">Openmeetings.org</a>. Geroge has done some hacking on the metavid.org codebase to build an very interesting new application for logging of public meetings. From the open meetings.org site:</p>
<blockquote><p>“OpenMeetings.org is a audio/video transcription and annotation platform built from entirely free and open source software.  Launched in June 2009 and inspired by MetaVid (<a class="external text" href="http://metavid.org/" rel="nofollow" title="http://metavid.org">metavid.org</a>), the open video archive of the U.S. Congress, OpenMeetings.org hosts and welcomes submission of conference recordings and formal proceedings.  Project goals are to increase availability, discoverability, and liberty to comment on archived meetings as to improve the degree of informed civil discourse across a broad range of social issues.”</p></blockquote>
<p>I encourage people to check out the site <img alt=":)" class="wp-smiley" src="http://metavid.org/blog/wp-includes/images/smilies/icon_smile.gif"/><br/>
Here is a <a href="http://openmeetings.org/wiki/Stream:Kaltura_meetup_11nov2009/0:56:01/1:07:22">video of Geroge</a> talking about the site at a recent <a href="http://corp.kaltura.com/blog/2009/11/17/kaltura-developer-meetup-in-nyc-nov-11th-recap/">Kaltura developer meet-up</a>.<br/>
<video/></p></div>
    </content>
    <updated>2009-12-18T21:57:32Z</updated>
    <category term="archive"/>
    <category term="html5"/>
    <category term="participatoryculture"/>
    <category term="related"/>
    <author>
      <name>dale</name>
    </author>
    <source>
      <id>http://metavid.org/blog</id>
      <link href="http://metavid.org/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://metavid.org/blog" rel="alternate" type="text/html"/>
      <subtitle>This Blog covers the metavid project and related politics.</subtitle>
      <title>Metavid Blog</title>
      <updated>2010-03-04T04:57:54Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://bluishcoder.co.nz/2009/11/28/using-wasp-lisp-secure-remote-injection</id>
    <link href="http://bluishcoder.co.nz/2009/11/28/using-wasp-lisp-secure-remote-injection.html" rel="alternate" type="text/html"/>
    <title>Using the Wasp Lisp Secure Remote Injection Framework (MOSREF)</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>MOSREF is a secure remote injection framework written in <a href="http://waspvm.blogspot.com/">Wasp Lisp</a> (which I previously wrote about <a href="http://www.bluishcoder.co.nz/2009/11/27/wasp-lisp-small-scheme-like-lisp.html">here</a>). With MOSREF you have a ‘console’ program running which can create dones applications that are run on a target system.</p>

<p>The console and drones can communicate with each other, executing shell commands or Wasp Lisp code. Drones can create other drones to ‘bridge’ bridge communications so the console can send commands to drones it is not directly connected too.</p>

<p>Lisp code can be compiled and sent to drones to execute. One of the ‘built in’ capabilities is a Socks proxy server. This can be run on a drone and data is tunneled to the console which the controller can use as a socks proxy.</p>

<p>MOSREF isn’t built by default with Wasp. To build it you need to run ‘waspc’ to compile and create an executable (example assumes you are in the root of the Wasp source directory):</p>

<pre><code>$ cd mod
$ waspc -exe ../mosref bin/mosref
BUILD: bin/mosref
BUILD: core/macro
BUILD: core/config
BUILD: site/config
...
BUILD: mosref/cmd/with
BUILD: mosref/cmds
BUILD: bin/mosref
$ chmod +x ../mosref
$ rlwrap ../moseref
console&gt; help
Commands: clear &lt;key&gt; ...
          cp &lt;src-file&gt; &lt;dst-file&gt;
          do &lt;lisp-expr&gt;
          drone &lt;file&gt; &lt;id&gt; &lt;platform&gt;
          exit
          help [i&lt;command&gt;]
          load &lt;path&gt;
          nodes
          on &lt;node-id&gt; [&lt;command&gt;]
          proxy [&lt;portno&gt; [&lt;secret&gt;]]
          recover &lt;id&gt;
          set [&lt;key&gt;[=&lt;value&gt;] [&lt;command&gt;]]
          sh &lt;cmd&gt;
          with &lt;key&gt;[=&lt;value&gt;] [&lt;command&gt;]</code></pre>

<p>The first thing you need to do on the running console is set the IP address and the port it will listen on (Replacing xx.xx.xx.xx with the IP address):</p>

<pre><code>console&gt; set addr=xx.xx.xx.xx
Set.
console&gt; set port=10000
Set.</code></pre>

<p>Now you need to create a drone executable to be run on the target system:</p>

<pre><code>console&gt; drone drone1 foo linux-x86
Drone executable created.
Listening for drone on 10000...</code></pre>

<p>This creates an executable for Linux systems called ‘drone1’. It is given the name node name ‘foo’. It will show in the list of nodes available from the console:</p>

<pre><code>console&gt; nodes
NODES: console online address: xx.xx.xx.xx port: 10000
       foo offline</code></pre>

<p>When the ‘drone1’ executable is run on a target system it will connect to the console using an encrypted connection. You will need to find a way to copy and run the executable onto the target. The following shows it being run on the target:</p>

<pre><code>target$ ./drone1
  DRONE: Preparing keys...
  DRONE: Sending Drone Public Key...
  DRONE: Sending Drone IV...
  DRONE: Reading Console IV...
  DRONE: CONSOLE IV CT is ...
  DRONE: CONSOLE IV PT is ...
  DRONE: Confirming Console IV...
  DRONE: Waiting for Console to confirm Drone IV...
  DRONE: Affiliation complete....</code></pre>

<p>The connection will show on the console:</p>

<pre><code>console&gt; nodes
NODES: console online address: xx.xx.xx.xx port: 10000
       foo online</code></pre>

<p>Notice it shows ‘foo’ is now online. It’s now possible to execute commands on the target machine by sending them to the drone. Using ‘sh’ you can execute shell commands. From the console:</p>

<pre><code>console&gt; on foo sh ifconfig
eth0      Link encap:Ethernet  HWaddr ...
          inet addr:yy.yy.yy.yy
...
          RX bytes:2458924520 (2.2 GB)  TX bytes:2458924520 (2.2 GB)
console&gt; on foo set addr=yy.yy.yy.yy
Set.
console&gt; on foo set port=10000
Set.</code></pre>

<p>Here we execute ‘ifconfig’ on the target so we can find out the IP address. The output of ‘ifconfig’ is sent back to the console. Using this information the addr and port is set on the drone. This can be used to have the target create new drones on internal machines that only it can access. It will then act as a bridge between the console and the internal machine.</p>

<p>As well as running shell commands you can run Wasp Lisp code:</p>

<pre><code>console&gt; on foo do (+ 1 2)
:: 3
console&gt; on foo load lib/http-file-server.ms
:: spawn-http-file-server
console&gt; on foo do (offer-http-file 2080 "/test" "text/plain" "Hello world!")
:: [queue 824A098]</code></pre>

<p>Using ‘on foo do’ we compile a Lisp expression and send it to ‘foo’ to be run. In this case a simple addition. ‘on foo load’ will load a Lisp file located on the console, compile it, and send the byte code to be run on ‘foo’. Then we ‘on foo do’ to run a function contained in that file on the ‘foo’ machine. In this case, it runs a simple webserver. Any Lisp code can be sent and run.</p>

<p>It’s possible to copy files between nodes too. In this next example we create another drone that will be run on a machine internal to the network that the target is on. Note that the build is performed on the console so we need to copy the executable from there to the target.</p>

<pre><code>console&gt; on foo drone drone2 bar linux-x86
Drone executable created.
Listening for drone on 10000...
console&gt; cp console:/home/console/waspvm/mod/drone2 foo:/tmp/drone2
Copy from console:/home/console/waspvm/mod/drone2 to foo:/tmp/drone2</code></pre>

<p>Using some magic means (an exploit, copying file using shell commands on the target drone, etc) we get ‘drone2’ running on another machine available internally on the target network:</p>

<pre><code>target2$ ./drone2
  DRONE: Preparing keys...
  DRONE: Sending Drone Public Key...
  DRONE: Sending Drone IV...
  DRONE: Reading Console IV...
  DRONE: CONSOLE IV CT is ...
  DRONE: CONSOLE IV PT is ...
  DRONE: Confirming Console IV...
  DRONE: Waiting for Console to confirm Drone IV...
  DRONE: Affiliation complete....</code></pre>

<p>From the console we now see the ‘bar’ node:</p>

<pre><code>console&gt; nodes
NODES: bar online
       console online address: xx.xx.xx.xx port: 10000
foo online address: yy.yy.yy.yy port: 10000</code></pre>

<p>MOSREF has a ‘proxy’ command that lets you set up a Socks 4 proxy on the console that tunnels traffic to and from a target node. Here we set up a proxy to the ‘bar’ node:</p>

<pre><code>console&gt; on bar proxy 5000
SOCKS Proxy created, listening on port 5000.</code></pre>

<p>This will result in the ‘console’ machine having a Socks 4 proxy running on port 5000. If you configure Firefox to use this proxy you can access local webservers available from the internal network that ‘bar’ can see. Note that ‘console’ can’t see ‘bar’ directly. It is tunnelling traffic to ‘foo’, from there to ‘bar’, then back from ‘bar’ to ‘foo’ and to ‘console.</p>

<p>The source for MOSREF is in the Wasp Lisp distribution and makes for a good body of Wasp Lisp code for learning.</p></div>
    </content>
    <updated>2009-11-27T22:24:00Z</updated>
    <source>
      <id>http://bluishcoder.co.nz/</id>
      <author>
        <name>Chris Double</name>
        <email>chris.double@double.co.nz</email>
      </author>
      <link href="http://bluishcoder.co.nz/atom.xml" rel="self" type="application/atom+xml"/>
      <link href="http://bluishcoder.co.nz/" rel="alternate" type="text/html"/>
      <title>Bluish Coder</title>
      <updated>2010-03-12T00:44:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.advogato.org/person/rillian/diary.html?start=111</id>
    <link href="http://www.advogato.org/person/rillian/diary.html?start=111" rel="alternate" type="text/html"/>
    <title>17 Nov 2009</title>
    <summary>In the Future, we will embed machine images in our Ogg files,
which, when booted and given network access to the other
multiplexed data will decode, render, and export the results
data in a variety of JSON responses.</summary>
    <updated>2009-11-17T23:12:06Z</updated>
    <source>
      <id>http://www.advogato.org/person/rillian/</id>
      <author>
        <name>Ralph Giles</name>
      </author>
      <link href="http://www.advogato.org/person/rillian/" rel="alternate" type="text/html"/>
      <link href="http://advogato.org/person/rillian/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Advogato blog for rillian</subtitle>
      <title>Advogato blog for rillian</title>
      <updated>2010-03-22T14:00:04Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.schleef.org/blog/?p=43</id>
    <link href="http://www.schleef.org/blog/2009/11/11/theora-on-ti-c64x-dsp-and-omap3/" rel="alternate" type="text/html"/>
    <title>Theora on TI C64x+ DSP and OMAP3</title>
    <summary>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 [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><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 alt="An Ogg/Theora video of Big Buck Bunny being played back on a Beagle Board via the C64x+ DSP coprocessor" height="400" src="http://schleef.org/misc/bbb-theora-bb.jpg" title="Theora playback on Beagle Board" width="600"/></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’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’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’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×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×360 24fps at slightly more than 100% speed on average.  This isn’t quite good enough to call it “real time”, since some frames take longer than the allotted time to decode, but it’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 “real time” category.  Given that 640×360 is larger than the iPhone display resolution and almost as large as the N900 resolution, it’s clearly good enough, even if it is less than TI’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></div>
    </content>
    <updated>2009-11-12T04:24:13Z</updated>
    <category term="entropywave"/>
    <category term="gstreamer"/>
    <category term="video"/>
    <author>
      <name>admin</name>
    </author>
    <source>
      <id>http://www.schleef.org/blog</id>
      <link href="http://www.schleef.org/blog/category/video/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://www.schleef.org/blog" rel="alternate" type="text/html"/>
      <subtitle>Just another WordPress weblog</subtitle>
      <title>Passing on the Left » video</title>
      <updated>2010-03-22T14:00:11Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://maikmerten.livejournal.com/3623.html</id>
    <link href="http://maikmerten.livejournal.com/3623.html" rel="alternate" type="text/html"/>
    <title>Cortado nostalgia</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Yes, this is Cortado running on Netscape 4.79:<br/><br/><a href="http://img300.imageshack.us/i/netscapecortado.jpg/" target="_blank"><img border="0" src="http://img300.imageshack.us/img300/5791/netscapecortado.th.jpg"/></a><br/><br/>Basically this means Cortado can be made run even on, uh, bad and slow Java virtual machines. No, the JVM included with Netscape isn't fast enough for smooth video playback even on this 3 GHz machine, but sound isn't crackling either.</div>
    </summary>
    <updated>2009-11-08T13:13:02Z</updated>
    <category term="xiph"/>
    <source>
      <id>http://maikmerten.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/78472053/15004965</logo>
      <author>
        <name>Maik Merten</name>
      </author>
      <link href="http://maikmerten.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://maikmerten.livejournal.com/data/rss?tag=xiph" rel="self" type="application/atom+xml"/>
      <subtitle>maikmerten - LiveJournal.com</subtitle>
      <title>maikmerten</title>
      <updated>2010-03-22T14:00:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://bemasc.net/wordpress/?p=1445</id>
    <link href="http://bemasc.net/wordpress/2009/11/06/old-bugs-fixed/" rel="alternate" type="text/html"/>
    <title>Old bugs fixed</title>
    <summary>In the process of testing Cortado on old operating systems, we discovered that using a recent compiler produced bytecode that wouldn’t run on Sun JDK 1.1.  Instead, we got IllegalMonitorState exceptions in an infinite loop.
A little bit of searching made it clear that we weren’t the only ones who’d experienced this problem.  There [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>In the process of testing Cortado on old operating systems, we discovered that using a recent compiler produced bytecode that wouldn’t run on Sun JDK 1.1.  Instead, we got IllegalMonitorState exceptions in an infinite loop.</p>
<p>A little bit of searching made it clear that we weren’t the only ones who’d experienced this problem.  There were <a href="http://forums.sun.com/thread.jspa?threadID=196703&amp;forumID=37">reports</a> going back to 2001 that Sun had introduced some sort of bug in their compiler in version 1.4.  We verified that going back to an old compiler produced code that worked for us, again.</p>
<p>Today Greg Maxwell constructed a minimal test case and printed out the disassembled bytecode produced with old and new compilers.  One difference stood out: the new compiler introduced a circular exception handler at the end of a synchronized block.  I looked around, and sure enough, this behavior <a href="http://bugs.sun.com/view_bug.do?bug_id=4414101">drew complaints</a> when it first appeared over eight years ago.</p>
<p>Rather than attempt to convince the compiler authors that their code has a logical fallacy, or somehow fix ten-year-old versions of closed-source software, we instead decided to add <a href="http://sourceforge.net/tracker/?func=detail&amp;aid=2893068&amp;group_id=54750&amp;atid=474704">a workaround</a> into <a href="http://proguard.sourceforge.net/">ProGuard</a>, a bytecode post-processor that we are already using to shrink Cortado by 30% for faster downloads.</p>
<p>There’s an interesting question here as to what, exactly, the bug is.  Is it a code generation bug, in which the compiler produces bytecode that will not run correctly on the Java 1.1 target?  Or is it a JVM bug, exposed by newer compilers that make use of previously untested edge cases?  This is a case of Software Development Relativity: the number of bugs is conserved, but their precise location depends on your reference frame.</p>
<p>Anyway, I think this is a nice short story about the power of an open development model.  We found a bug somewhere in a complex system, and wound up putting a fix in the component whose maintainers, we hope, will be most receptive to it.  When one avenue is cut off, open source finds another route.</p></div>
    </content>
    <updated>2009-11-06T05:38:11Z</updated>
    <category term="Xiph"/>
    <author>
      <name>Ben</name>
    </author>
    <source>
      <id>http://bemasc.net/wordpress</id>
      <link href="http://bemasc.net/wordpress/category/general/projects/xiph/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://bemasc.net/wordpress" rel="alternate" type="text/html"/>
      <subtitle>Like information, but less informative</subtitle>
      <title>Digital Diary of Ben Schwartz » Xiph</title>
      <updated>2010-03-21T03:00:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://bemasc.net/wordpress/?p=1435</id>
    <link href="http://bemasc.net/wordpress/2009/11/02/cortado/" rel="alternate" type="text/html"/>
    <title>Cortado</title>
    <summary>A project I’ve been playing with recently is Ogg Theora’s Cortado, a free video player designed to be able to run on an extremely wide variety of computers, including old, obsolete systems.  How old, you ask?
Really old:
This is a picture of Cortado running on Mac OS 7.5.5, in the Macintosh Runtime for Java 2.0, [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>A project I’ve been playing with recently is Ogg Theora’s <a href="http://theora.org/cortado/">Cortado</a>, a free video player designed to be able to run on an extremely wide variety of computers, including old, obsolete systems.  How old, you ask?</p>
<p>Really old:<br/>
</p><div class="wp-caption alignnone" id="attachment_1436" style="width: 310px;"><a href="http://bemasc.net/wordpress/wp-content/uploads/2009/11/Screenshot-sheep.png"><img alt="Screenshot of Cortado playing a video in SheepShaver" class="size-medium wp-image-1436" height="235" src="http://bemasc.net/wordpress/wp-content/uploads/2009/11/Screenshot-sheep-300x235.png" title="Screenshot-sheep" width="300"/></a><p class="wp-caption-text">Screenshot of Cortado playing a video in SheepShaver</p></div><p/>
<p>This is a picture of Cortado running on Mac OS 7.5.5, in the Macintosh Runtime for Java 2.0, playing the video from the FSF’s <a href="http://www.fsf.org/news/video_testimonials_campaign/">freedom testimonials campaign</a>.  This operating system was released in 1996.  The system is emulated in <a href="http://gwenole.beauchesne.info//en/projects/sheepshaver">SheepShaver</a>, which makes playback far too slow to be usable.  Someone will have to test on real hardware to see what happens.</p>
<p>Nonetheless, I think this is strong evidence regarding how serious we are about backwards compatibility and inclusive software.  Serious, or at least, enthusiastic.</p></div>
    </content>
    <updated>2009-11-03T03:57:32Z</updated>
    <category term="Xiph"/>
    <author>
      <name>Ben</name>
    </author>
    <source>
      <id>http://bemasc.net/wordpress</id>
      <link href="http://bemasc.net/wordpress/category/general/projects/xiph/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://bemasc.net/wordpress" rel="alternate" type="text/html"/>
      <subtitle>Like information, but less informative</subtitle>
      <title>Digital Diary of Ben Schwartz » Xiph</title>
      <updated>2010-03-21T03:00:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.schleef.org/blog/?p=36</id>
    <link href="http://www.schleef.org/blog/2009/10/07/ycbcr-gamut-checking/" rel="alternate" type="text/html"/>
    <link href="http://code.entropywave.com/test-media/gamut/gamut-theora-bt470.ogv" length="167625" rel="enclosure" type="video/ogg"/>
    <link href="http://code.entropywave.com/test-media/gamut/gamut-theora-simulated-breakage.ogv" length="178487" rel="enclosure" type="video/ogg"/>
    <title>YCbCr Gamut Checking</title>
    <summary>I recently added a pattern to GStreamer’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 — some YCbCr values, when converted to RGB, are out of range, so as part of the conversion process, they [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I recently added a pattern to GStreamer’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 — 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’t support the video tag.  Download Firefox</video></p>
<p>Firefox does the conversion correctly, so it’s unlikely you’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’t support the video tag.  Download Firefox</video></p>
<p>Sometimes it’s possible to see the pattern very faintly due to rounding in even a correct conversion.  This is unavoidable because the RGB-&gt;YCbCr-&gt;RGB round trip is lossy.</p></div>
    </content>
    <updated>2009-10-08T07:04:19Z</updated>
    <category term="gstreamer"/>
    <category term="video"/>
    <author>
      <name>admin</name>
    </author>
    <source>
      <id>http://www.schleef.org/blog</id>
      <link href="http://www.schleef.org/blog/category/video/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://www.schleef.org/blog" rel="alternate" type="text/html"/>
      <subtitle>Just another WordPress weblog</subtitle>
      <title>Passing on the Left » video</title>
      <updated>2010-03-22T14:00:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.schleef.org/blog/?p=24</id>
    <link href="http://www.schleef.org/blog/2009/09/19/cog-in-gst-plugins-bad/" rel="alternate" type="text/html"/>
    <title>Cog in gst-plugins-bad</title>
    <summary>I finally moved my collection of Orc-based GStreamer plugins (codename “Cog”) into gst-plugins-bad, since they’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’s domain, which is small but growing.
One such application that [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I finally moved my collection of Orc-based GStreamer plugins (codename “Cog”) into gst-plugins-bad, since they’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’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 “colorspace conversion” 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’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’s ffmpegcolorspace.)</p>
<p>This is a scatter plot of the run time (in ms) for converting 1000 frames of 320×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 alt="Colorspace element execution time scatter plot" class="alignnone size-full wp-image-25" height="288" src="http://www.schleef.org/blog/wp-content/uploads/2009/09/colorspace-time-scatterplot.png" title="Colorspace element execution time scatter plot" width="463"/></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’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 — Orc takes care of huge number of combinations of options, and produces good SIMD code for all of them.</p>
<p><img alt=""/></p></div>
    </content>
    <updated>2009-09-19T20:05:30Z</updated>
    <category term="orc"/>
    <category term="video"/>
    <author>
      <name>admin</name>
    </author>
    <source>
      <id>http://www.schleef.org/blog</id>
      <link href="http://www.schleef.org/blog/category/video/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://www.schleef.org/blog" rel="alternate" type="text/html"/>
      <subtitle>Just another WordPress weblog</subtitle>
      <title>Passing on the Left » video</title>
      <updated>2010-03-22T14:00:12Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5537325711190185140.post-5275777004627558531</id>
    <link href="http://blog.pearce.org.nz/feeds/5275777004627558531/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5537325711190185140&amp;postID=5275777004627558531" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/5275777004627558531" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/5275777004627558531" rel="self" type="application/atom+xml"/>
    <link href="http://blog.pearce.org.nz/2009/09/ogg-video-seek-performance-improvements.html" rel="alternate" type="text/html"/>
    <title>Ogg video seek performance improvements</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I've recently landed <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=501031">bug 501031</a> on mozilla-central and on 1.9.2 which roughly cuts Ogg seeking time in half. In Firefox 3.5, seeking Ogg Internet video was very slow, often taking 20 seconds or more to seek. This patch will make seeking in Ogg media in Firefox 3.6 much faster! This patch should also reduce the likelihood of encountering visual artefacts after a seek.<br/><br/>Currently the Ogg format doesn't contain any kind of keyframe index, so when you want to seek to a given time you typically do a bisection search over the entire file, reading little chunks as you go to figure out where your bisection has landed. This works fine for files on disk, but when seeking in files served over the Internet this can be slow, especially when viewing media which is hosted half a world away.<br/><br/>To play Ogg files, Firefox uses liboggplay, which in turn uses liboggz to seek. Unfortunately liboggz's seek bisection is in need of some maintenance (it's currently being rewritten by the maintainer). Its bisection is erratic and it fails to terminate its search appropriately, so it makes many more bisections than required. Most bisections or non-sequential reads result in a new HTTP connection, which is what makes this process slow for Internet video.<br/><br/>My patch fixes liboggz's seek to bisect sensibly, and to end the bisection search when it lands within 500ms of the seek target. This means that once we land close enough to the seek target, we'll just keep downloading from there. This is typically faster than continuing the bisection search due to the latency in setting up HTTP requests. We subtract 500ms from the seek target before we begin the bisection search, so that we don't finish the seek <i>after</i> the actual seek target.<br/><br/>Theora stores its video data as keyframe and interframes. In order to seek to and display a frame at a given time, we need to seek to the previous keyframe and decode forward to the target frame. The suggested approach is to extract the keyframe's position from the frame's granulepos field, and then seek again to the keyframe. This second seek needs to be exactly right, and that's hard due to some <a href="http://lists.xiph.org/pipermail/theora/2009-July/002549.html">nasty edge cases</a> with regards to stream muxing. Doing another bisection search in our case is also slow due to the latency in setting up HTTP requests. So now we just calculate the maximum possible time-offset that a frame can be from its keyframe, and subtract that from our seek target. This means we will often download more data than necessary, but for us that's typically faster than doing another bisection search.<br/><br/>The moral of the story is that if you want your video to seek quickly, include regular keyframes!<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5537325711190185140-5275777004627558531?l=blog.pearce.org.nz" width="1"/></div></div>
    </content>
    <updated>2009-09-17T23:25:18Z</updated>
    <published>2009-09-17T23:17:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="video"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="ogg"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="seeking"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="mozilla"/>
    <author>
      <name>Chris Pearce</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/13735147508549619230</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5537325711190185140</id>
      <author>
        <name>Chris Pearce</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/13735147508549619230</uri>
      </author>
      <link href="http://blog.pearce.org.nz/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/-/ogg" rel="self" type="application/atom+xml"/>
      <link href="http://blog.pearce.org.nz/search/label/ogg" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>The more drums we have in our kit, the more jobs we can handle.</subtitle>
      <title>Thundering Herd</title>
      <updated>2010-03-16T01:04:35Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://metavid.org/blog/?p=382</id>
    <link href="http://metavid.org/blog/2009/09/14/server-maintenance/" rel="alternate" type="text/html"/>
    <title>Server maintenance</title>
    <summary>Our media servers that stores oggs for content prior to ~June 09~ is currently down for maintenance.  We hope to have it back up shortly.  Recent content is working, such as Obama’s speech last week before a rare joint session of Congress.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Our media servers that stores oggs for content prior to ~June 09~ is currently down for maintenance.  We hope to have it back up shortly.  Recent content is working, such as Obama’s <a href="http://metavid.org/wiki/Stream:House_proceeding_09-09-09_01/0:23:40/1:10:45">speech last week</a> before a rare joint session of Congress.</p>
<p>&lt;script src="http://metavid.org/w/js2/mwEmbed/mv_embed.js" type="text/javascript"&gt;&lt;/script&gt;<video/></p></div>
    </content>
    <updated>2009-09-14T18:09:31Z</updated>
    <category term="Clip of Interest"/>
    <category term="archive"/>
    <author>
      <name>aphid</name>
    </author>
    <source>
      <id>http://metavid.org/blog</id>
      <link href="http://metavid.org/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://metavid.org/blog" rel="alternate" type="text/html"/>
      <subtitle>This Blog covers the metavid project and related politics.</subtitle>
      <title>Metavid Blog</title>
      <updated>2010-03-04T04:57:54Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://xiphmont.livejournal.com/43141.html</id>
    <link href="http://xiphmont.livejournal.com/43141.html" rel="alternate" type="text/html"/>
    <title>In lieu of more official subjects...</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I owe a whole bunch of blog posts on more official Xiph topics, but tonight I present silliness.

</p><p><img src="http://web.mit.edu/xiphmont/Public/motherfishIV.jpg"/>

</p><p>I suppose it was unhealthy to even try to resist painting the newest server.  Now off it goes to Oregon.</p></div>
    </summary>
    <updated>2009-09-06T05:02:48Z</updated>
    <category term="xiph"/>
    <author>
      <name>Monty</name>
      <email>monty@xiph.org</email>
    </author>
    <source>
      <id>http://xiphmont.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/70118889/829507</logo>
      <author>
        <name/>
        <email>monty@xiph.org</email>
      </author>
      <link href="http://xiphmont.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://xiphmont.livejournal.com/data/rss?tag=xiph" rel="self" type="application/atom+xml"/>
      <subtitle>Monty - LiveJournal.com</subtitle>
      <title>Monty</title>
      <updated>2010-03-22T14:00:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.advogato.org/person/rillian/diary.html?start=110</id>
    <link href="http://www.advogato.org/person/rillian/diary.html?start=110" rel="alternate" type="text/html"/>
    <title>24 Aug 2009</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Cute demonstration of <a href="http://math.berkeley.edu/~ilya/photo/random-noise/">chrominance
vs luminance</a> sensitivity in the human visual system.
With source code!</div>
    </summary>
    <updated>2009-08-24T20:40:29Z</updated>
    <source>
      <id>http://www.advogato.org/person/rillian/</id>
      <author>
        <name>Ralph Giles</name>
      </author>
      <link href="http://www.advogato.org/person/rillian/" rel="alternate" type="text/html"/>
      <link href="http://advogato.org/person/rillian/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Advogato blog for rillian</subtitle>
      <title>Advogato blog for rillian</title>
      <updated>2010-03-22T14:00:04Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://metavid.org/blog/?p=371</id>
    <link href="http://metavid.org/blog/2009/08/21/technology-review-on-open-video/" rel="alternate" type="text/html"/>
    <title>Technology Review on Open Video</title>
    <summary>David Talbot from Technology Review has put together a good article on Open Video. Building off of the Open Video Alliance event he pieces together a lot of threads of the open video movement. The article opens with early work that we did on metavid project and goes on to highlight the efforts of Mozilla, [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div class="wp-caption alignleft" style="width: 234px;"><img alt="technology review icon" height="66" src="http://www.technologyreview.com/images/wheader/trlogo.jpg" title="technology reivew icon" width="224"/><p class="wp-caption-text">Technology Review on Open Video</p></div>
<p>David Talbot from Technology Review has put together a <a href="http://www.technologyreview.com/web/23173/" target="_blank" title="tech review article">good article on Open Video</a>. Building off of the <a href="http://metavid.org/blog/2009/07/07/help-build-a-better-internet-with-open-video/" target="_blank" title="OVA event">Open Video Alliance event</a> he pieces together a lot of threads of the open video movement. The article opens with <a href="http://metavid.org/blog/2006/01/13/making-progress/" target="_blank" title="metavid first blog post">early work</a> that we did on metavid project and goes on to highlight the efforts of Mozilla, Xiph, Wikimeida, Kaltura and others in promoting open video on the web.</p>
<p><span id="more-371"/></p>
<p>I recommend people check out the <a href="http://www.technologyreview.com/video/?vid=420" title="video talk about open formats">video discussion</a> by Jonathan McIntosh and Julie Levin Russo on the difficulties of working with proprietary formats when the system for media distribution is designed for “consuming”. Open video has the potential to disrupt this <em>view only</em> or <em>walled garden with some embedding windows</em> structure of web video and open it up for new interesting forms of participation.</p>
<div class="wp-caption alignright" style="width: 136px;"><a href="http://wikimania2009.wikimedia.org/wiki/Portal"><img alt="" height="143" src="http://upload.wikimedia.org/wikipedia/wikimania2009/thumb/e/ea/Wikiman%C3%ADa-2009-Logo-A.svg/181px-Wikiman%C3%ADa-2009-Logo-A.svg.png" title="wiki-logo" width="126"/></a><p class="wp-caption-text">wikimania 2009</p></div>
<p>On that note back to preparing the talk ( &amp; ..cough.. cough .. software) for this years <a href="http://wikimania2009.wikimedia.org/wiki/Portal" target="_blank" title="wikimanai 2009">Wikimania</a> event happening this week in Buenos Aires. <a href="http://metavid.org/blog/2006/07/27/wikimania-2006/">Similarly to</a> <a href="http://metavid.org/blog/2007/07/23/wikimania-07/" target="_blank" title="previus">previous</a> <a href="http://metavid.org/blog/2008/07/17/wikimania-2008/" title="years">years</a>, I look forward towards engaging with participants around the potential of open video in the worlds premier collaborative authoring environment <img alt=";)" class="wp-smiley" src="http://metavid.org/blog/wp-includes/images/smilies/icon_wink.gif"/> With the difference being this year we are getting really close to to starting to deploy these components.</p></div>
    </content>
    <updated>2009-08-21T21:45:26Z</updated>
    <category term="events"/>
    <category term="participatoryculture"/>
    <category term="open video"/>
    <category term="ova"/>
    <category term="wikimania"/>
    <author>
      <name>dale</name>
    </author>
    <source>
      <id>http://metavid.org/blog</id>
      <link href="http://metavid.org/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://metavid.org/blog" rel="alternate" type="text/html"/>
      <subtitle>This Blog covers the metavid project and related politics.</subtitle>
      <title>Metavid Blog</title>
      <updated>2010-03-04T04:57:54Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.advogato.org/person/rillian/diary.html?start=109</id>
    <link href="http://www.advogato.org/person/rillian/diary.html?start=109" rel="alternate" type="text/html"/>
    <title>21 Aug 2009</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><strong>State of theora</strong>

</p><p> </p><p>Monty has posted another of his excellent <a href="http://web.mit.edu/xiphmont/Public/theora/demo8.html">technical
updates</a> on the <a href="http://theora.org/">theora</a>
encoder rewrite which has been ongoing for more than a year
now. It's a good
summary of what went into the recent beta releases.

</p><p> </p><p>We still have a bit to go before the final 1.1 though;
the new rate control still behaves badly on a some clips.

</p><p> </p><p> </p><p>The complete set of status reports:
</p><ul>
<li><a href="http://web.mit.edu/xiphmont/Public/theora/demo.html">Part
1</a> early 2008
</li><li><a href="http://web.mit.edu/xiphmont/Public/theora/demo2.html">Part
2</a> 2008 March 20
</li><li><a href="http://web.mit.edu/xiphmont/Public/theora/demo3.html">Part
3</a> 2008 June 5
</li><li><a href="http://web.mit.edu/xiphmont/Public/theora/demo4.html">Part
4</a> 2008 July 3
</li><li><a href="http://web.mit.edu/xiphmont/Public/theora/demo5.html">Part
5</a> 2008 July 24
</li><li><a href="http://web.mit.edu/xiphmont/Public/theora/demo6.html">Part
6</a> 2009 April 2
</li><li><a href="http://web.mit.edu/xiphmont/Public/theora/demo7.html">Part
7</a> 2009 May 7
</li><li><a href="http://web.mit.edu/xiphmont/Public/theora/demo8.html">Part
8</a> 2009 August 20
</li></ul></div>
    </summary>
    <updated>2009-08-21T07:21:31Z</updated>
    <source>
      <id>http://www.advogato.org/person/rillian/</id>
      <author>
        <name>Ralph Giles</name>
      </author>
      <link href="http://www.advogato.org/person/rillian/" rel="alternate" type="text/html"/>
      <link href="http://advogato.org/person/rillian/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Advogato blog for rillian</subtitle>
      <title>Advogato blog for rillian</title>
      <updated>2010-03-22T14:00:04Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5537325711190185140.post-7203963365933898669</id>
    <link href="http://blog.pearce.org.nz/feeds/7203963365933898669/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5537325711190185140&amp;postID=7203963365933898669" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/7203963365933898669" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/7203963365933898669" rel="self" type="application/atom+xml"/>
    <link href="http://blog.pearce.org.nz/2009/08/configuring-web-servers-for-html5-ogg.html" rel="alternate" type="text/html"/>
    <title>Configuring web servers for HTML5 Ogg video and audio</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">When serving HTML5 Ogg &lt;video&gt; or &lt;audio&gt; from your web server, there's a number of things you can do to make videos load faster. This post outlines how to configure your web server to improve HTML5 video and audio playback performance.<br/><br/><span style="font-weight: bold;">1. Serve X-Content-Duration headers</span><br/><br/>The Ogg format doesn't encapsulate the duration of the media. So for the progress bar on the video controls to display the duration of the video, we need to somehow determine the duration. You can either support HTTP1.1 Byte-Range requests (see 2. below) or better yet, serve an X-Content-Duration header for your Ogg videos. This provides the duration of the video in seconds (not HH:MM:SS format), as a floating point value. For example, a video which is 1 minute and 32.6 seconds would you'd serve the extra header: "X-Content-Duration: 92.6".<br/><br/>When an Firefox requests an Ogg media, if you should serve up the X-Content-Duration header with the duration of the media. This means Firefox doesn't need to do any extra HTTP requests to seek to the end of the file to calculate the duration so it can display the progress bar.<br/><br/>You can get the duration using oggz-info, which comes with oggz-tools. oggz-info gives output like this:<br/><br/><code><br/> $ oggz-info /g/media/bruce_vs_ironman.ogv<br/> Content-Duration: 00:01:00.046<br/><br/> Skeleton: serialno 1976223438<br/>         4 packets in 3 pages, 1.3 packets/page, 27.508% Ogg overhead<br/>         Presentation-Time: 0.000<br/>         Basetime: 0.000<br/><br/> Theora: serialno 0170995062<br/>         1790 packets in 1068 pages, 1.7 packets/page, 1.049% Ogg overhead<br/>         Video-Framerate: 29.983 fps<br/>         Video-Width: 640<br/>         Video-Height: 360<br/><br/> Vorbis: serialno 0708996688<br/>         4531 packets in 167 pages, 27.1 packets/page, 1.408% Ogg overhead<br/>         Audio-Samplerate: 44100 Hz<br/>         Audio-Channels: 2<br/></code><br/><br/>Note that you can't just serve up the Content-Duration line that oggz-info outputs, it's in HH:MM:SS.ss format, you need to convert it to seconds only, and serve it as X-Content-Duration.<br/><br/>Be warned, it looks like oggz-info makes one read pass of the media in order to calculate the duration, so it would be wise to store the duration value, and not to calculate it for every HTTP request of every Ogg video.<br/><br/><strike>Also be aware that oggz-info does not calculate the duration of videos that start at a non-zero time correctly. oggz-info reports the duration as the time of the last frame, not the time of the last frame, minus the time of the first frame.</strike> <i>Edit - 6 Aug 2009: Looks like this was only true for old versions of oggz-info, current versions use the presentation time from the <a href="http://www.xiph.org/ogg/doc/skeleton.html">skeleton track</a> to calculate the duration correctly.</i><br/><br/><span style="font-weight: bold;">2. Handle HTTP1.1 byte range requests correctly</span><br/><br/>In order to seek to and play back regions of the media which aren't yet downloaded, Firefox uses HTTP1.1 Byte Range requests to retrieve the media from the seeek target position. Also if you don't serve X-Content-Duration, we use byte-range requests to seek to the end of the media (provided you're serving Content-Length) to determine the duration of the media.<br/><br/>Your server should serve the "Accept-Ranges: bytes" HTTP header if it can accept byte-range requests. It must return "206: Partial content" to all byte range requests, else Firefox can't be sure you actually support byte range requests. Remember you must return "206: Partial Content" for requests for "Range: bytes=0-" as well.<br/><br/>If you're curious, see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=502894#c1">bug 502894 comment 1</a> for more details of the HTTP requests Firefox can make and why.<br/><br/><span style="font-weight: bold;">3. Include regular key frames</span><br/><br/>When we seek, we have to seek to the keyframe before the seek target, and then download and decode from there until we reach the actual target time. The further your keyframes are apart, the longer this takes, so include regular keyframes. <a href="http://v2v.cc/%7Ej/ffmpeg2theora/">ffmpeg2theora</a>'s default of one keyframe every 64 frames (or about every 2 seconds) seems to work ok, but be aware that the more keyframes you have, the larger your video file will be, so your mileage may vary.<br/><br/><span style="font-weight: bold;">4. Serve the correct mime-type</span><br/><br/>For *.ogg and *.ogv files containing video (possibly with an audio track as well), serve the video/ogg mime type. For *.oga and *.ogg files which contain only audio, serve the audio/ogg. For *.ogg files with unknown contents, you can serve application/ogg, and we'll treat it as a video file. Most servers don't yet serve the correct mime-type for *.ogv and *.oga files.<br/><br/><span style="font-weight: bold;">5. Consider using autobuffer</span><br/><br/>If you have the autobuffer attribute set to true for your video or audio element, Firefox will attempt to download the entire media when the page loads. Otherwise, Firefox only downloads enough of the media to display the first video frame, and to determine the duration. autobuffer is off by default, so for a YouTube style video hosting site, your users may appreciate you setting autobuffer="true" for some video elements.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5537325711190185140-7203963365933898669?l=blog.pearce.org.nz" width="1"/></div></div>
    </content>
    <updated>2009-08-06T04:28:35Z</updated>
    <published>2009-08-05T00:37:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="video"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="ogg"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="seeking"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="mozilla"/>
    <author>
      <name>Chris Pearce</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/13735147508549619230</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5537325711190185140</id>
      <author>
        <name>Chris Pearce</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/13735147508549619230</uri>
      </author>
      <link href="http://blog.pearce.org.nz/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5537325711190185140/posts/default/-/ogg" rel="self" type="application/atom+xml"/>
      <link href="http://blog.pearce.org.nz/search/label/ogg" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>The more drums we have in our kit, the more jobs we can handle.</subtitle>
      <title>Thundering Herd</title>
      <updated>2010-03-16T01:04:35Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://maikmerten.livejournal.com/3568.html</id>
    <link href="http://maikmerten.livejournal.com/3568.html" rel="alternate" type="text/html"/>
    <title>H.264 isn't so bad, is it?</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This is mostly a quick response to <a href="http://www.kenpardue.com/blog/2009/07/25/back-on-open-video/">http://www.kenpardue.com/blog/2009/07/25/back-on-open-video/</a> which e.g. reads "What I don’t understand, and what irks me so badly, is why H.264 is demonized so badly by the FLOSS community." Well, I'll try to shed some light on this.<br/><ul><li>The problem with H.264 is much more severe than just the costs of the licensing fees. The exact pricing for 2011 and onwards may not yet be decided upon, but its absolutely problematic that there's a single entity (MPEG-LA) with the power to enforce licensing terms and prices. Even if the licensing fees in 2011 happen to be "cheap" there's zero guarantee it'll stay "cheap". When reading the currently available documents on H.264 licensing it appears clear that the overall strategy is to "be cheap now, then get more expensive over time" and while the milking part may be pushed to a later date it'll eventually happen.</li><li>On the internet 100000 free-units is a joke. Every download counts, most downloads don't actually generate a new "customer" and a mildly interesting software will easily hit the 100000 downloads limit.  To make matters worse: How to count downloads if you don't restrict distribution of your software to your own sites?</li><li>H.264 licensing terms are unfair to small players. There's a cap for annual licensing fees ($5 million) that big companies will easily hit, meaning each product shipping after the cap is basically free, while small companies not hitting the cap will bleed for every product delivered. This shifts market balance in favor of big players, hindering competition and innovation. The cap was $3.5 million in 2005-2006 and $4.25 million in 2007-2008 - so over time it got harder for small players to hit the maximum annual royality, not easier.</li><li>The licensing terms are absolutely incompatible with free (speech) software. There are open-source implementation of MPEG formats, meaning you can download, alter and redistribute the source-code - but without a license from MPEG-LA you're <em>not allowed to actually use</em> that software, so you're denied a very essential FOSS right. Even if you had the right to use the open-source MPEG-compliant code you cannot transfer this right to somebody downloading your open-sourced code. You're always dependent on MPEG-LA licensing usage rights. Being at the mercy of a monopolistic 3rd party isn't exactly what FOSS is about.</li><li>Given that that MPEG licensing is incompatible with FOSS the widespread use of such encumbered formats questions the viability of FOSS on the desktop. Surfing the internet and watching embedded videos isn't possible within an intact FOSS environment in an MPEG-dominated world, users always would depend on proprietary and non-open components components like Flash carrying a MPEG license.</li><li>Currently everything hints at per-content licensing fees being considered at MPEG-LA. This means not only technology providers are at the mercy of MPEG-LA but also content producers and providers.</li></ul><br/>For me that's enough to answer the question of why we need to push free-for-all-under-all-circumstances-without-paperwork media  formats - and the list above most likely isn't even complete.<br/><br/></div>
    </summary>
    <updated>2009-08-01T08:10:39Z</updated>
    <category term="xiph"/>
    <source>
      <id>http://maikmerten.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/78472053/15004965</logo>
      <author>
        <name>Maik Merten</name>
      </author>
      <link href="http://maikmerten.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://maikmerten.livejournal.com/data/rss?tag=xiph" rel="self" type="application/atom+xml"/>
      <subtitle>maikmerten - LiveJournal.com</subtitle>
      <title>maikmerten</title>
      <updated>2010-03-22T14:00:07Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:jmspeex:4820</id>
    <link href="http://jmspeex.livejournal.com/4820.html" rel="alternate" type="text/html"/>
    <link href="http://jmspeex.livejournal.com/data/atom/?itemid=4820" rel="self" type="text/xml"/>
    <title>IETF name tag</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://pics.livejournal.com/jmspeex/pic/000076ct/"><img border="0" height="240" src="http://pics.livejournal.com/jmspeex/pic/000076ct/s320x240" width="304"/></a><br/><br/>For those who are not familiar with the IETF, the blue dot means WG/BoF chair. In this case, the <a href="http://xiph.org/press/2009/ietf75-bof/">BoF</a> also happened to be one of the most controversial in recent history. That was an interesting experience, to say the least.</div>
    </content>
    <updated>2009-08-01T01:15:36Z</updated>
    <published>2009-08-01T01:15:36Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:jmspeex</id>
      <author>
        <name>jmspeex</name>
      </author>
      <link href="http://jmspeex.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://jmspeex.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>jmspeex</subtitle>
      <title>Jean-Marc Valin's random rants on DSP, Speex, open-source</title>
      <updated>2009-08-01T01:15:36Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://xiphmont.livejournal.com/42656.html</id>
    <link href="http://xiphmont.livejournal.com/42656.html" rel="alternate" type="text/html"/>
    <title>"Now would be a good time, Scotty"</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Coming up tomorrow, we have an IETF BoF on a proposed Working Group for FOSS audio codecs.  It is one of the more... controversial BoFs in recent memory.  Something of a main event...

<a name="cutid1"/>

</p><p>This is from our press release, but I hope it's not too press releasey.

</p><p>For some years now, Xiph.Org has been gently advocating royalty
free codecs within the IETF as
a viable and preferred alternative to patent-controlled
technologies. Recently more groups within the IETF have also come
forward to support free codec standardization work with in the
IETF. On July 30th at the <a href="http://www.ietf.org/meeting/75/">current IETF meeting in Stockholm</a>,
the IETF will hold a codecs BoF to take input on
whether or not to form a standards Working Group for royalty free
audio codecs. The creation of such a Working Group would have a
major impact, opening the door to a Voice over IP stack
completely free of licensing and royalty constraints. We're
seeking to set up the same kind of open competition and
cooperation we've seen on the web that's given rise to tons of
investment and improvement in a very short period of time.

</p><p>Giving input on the Working Group proposal does not require being in
Sweden for the IETF meeting; Those who cannot attend in person can
have their voice heard via the codec@jabber.ietf.org chat room or by
posting to the <a href="https://www.ietf.org/mailman/listinfo/codec">codec mailing list</a>. We encourage people to attend,
comment and discuss in person, via Jabber and on the mailing lists as
opponents of the WG proposal are expected to be well-organized and out
in force. The important thing is to clearly demonstrate that there is
a large number of people in favor of creating the new Working Group.

</p><p>There are currently two draft submissions to be discussed at the
BoF. <a href="http://tools.ietf.org/html/draft-valin-celt-codec-01">The first draft</a> describes the new Xiph.Org <a href="http://www.celt-codec.org/">CELT codec</a> and
the second describes the Skype <a href="http://tools.ietf.org/html/draft-vos-silk-00">SILK codec</a>. These two draft
proposals complement each other nicely. There is also declared intent
to submit the SPIRIT <a href="http://www.ietf.org/mail-archive/web/codec/current/msg00431.html">IPMR wideband codec</a>.

</p><p>This Working Group proposal faces stiff opposition from current codec
patent holders who benefit from the status quo that allows them to
control competition from organizations whose business models cannot
support per-channel royalties. Now is a very good time to speak up on
this issue.

</p><p>We hope to see you (physically or virtually) in large numbers for the
BoF. Xiph.Org will be represented in person at the meeting by
Christopher (Monty) Montgomery [Director] and Jean-Marc Valin [CELT
Project Lead]. The BoF will be at <a href="http://tinyurl.com/stockholm-codec-bof">13:00 Stockholm time</a>. The IETF will stream <a href="http://feed.verilan.com/ietf/stream02.m3u">an mp3 audio feed</a> of the BoF (and yes, we'll be setting up an <a href="http://people.xiph.org/~jm/bof_details.html">Ogg feed of the
audio as well as up-to-date information on the
BoF</a>).

</p><p>(this effort is targeted at real-time audio codecs and is
independent from the HTML5 effort involving Vorbis and Theora at the
W3C)

<a name="cutid1-end"/></p></div>
    </summary>
    <updated>2009-07-29T17:45:04Z</updated>
    <category term="xiph"/>
    <author>
      <name>Monty</name>
      <email>monty@xiph.org</email>
    </author>
    <source>
      <id>http://xiphmont.livejournal.com/</id>
      <logo>http://l-userpic.livejournal.com/70118889/829507</logo>
      <author>
        <name/>
        <email>monty@xiph.org</email>
      </author>
      <link href="http://xiphmont.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://xiphmont.livejournal.com/data/rss?tag=xiph" rel="self" type="application/atom+xml"/>
      <subtitle>Monty - LiveJournal.com</subtitle>
      <title>Monty</title>
      <updated>2010-03-22T14:00:08Z</updated>
    </source>
  </entry>
</feed>
