<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Digital Diary of Ben Schwartz &#187; Xiph</title>
	<atom:link href="http://bemasc.net/wordpress/category/general/projects/xiph/feed/" rel="self" type="application/rss+xml" />
	<link>http://bemasc.net/wordpress</link>
	<description>Like information, but less informative</description>
	<lastBuildDate>Mon, 17 Jun 2013 20:35:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>It&#8217;s Google</title>
		<link>http://bemasc.net/wordpress/2012/06/29/its-google/</link>
		<comments>http://bemasc.net/wordpress/2012/06/29/its-google/#comments</comments>
		<pubDate>Fri, 29 Jun 2012 17:10:55 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>
		<category><![CDATA[sugar]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=2703</guid>
		<description><![CDATA[I&#8217;m normally reticent to talk about the future; most of my posts are in the past tense. But now the plane tickets are purchased, apartment booked, and my room is gradually emptying itself of my furniture and belongings. The point &#8230; <a href="http://bemasc.net/wordpress/2012/06/29/its-google/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m normally reticent to talk about the future; most of my posts are in the past tense.  But now the plane tickets are purchased, apartment booked, and my room is gradually emptying itself of my furniture and belongings.  The point of no return is long past.</p>
<p>A few days after Independence Day, I&#8217;ll be flying to Mountain View for a week at the Googleplex, and from there to Seattle (or Kirkland), to start work as a software engineer on Google&#8217;s WebRTC team, within the larger Chromium development effort.  The exact project I&#8217;ll be working on initially isn&#8217;t yet decided, but a few very exciting ideas have floated by since I was offered the position in March.</p>
<p>Last summer I told a friend that I had no idea where I would be in a year&#8217;s time, and when I listed places I might be &#8212; Boston, Madrid, San Francisco, Schenectady &#8212; Seattle wasn&#8217;t even on the list.  It still wasn&#8217;t in March, when I was offered this position in the Cambridge (MA) office.  It was an unfortunate coincidence that the team I&#8217;d planned to join was relocated to Seattle shortly after I&#8217;d accepted the offer.</p>
<p>My recruiters and managers were helpful and gracious in two key ways.  First, they arranged for me to meet with ~5 different leaders in the Cambridge office whose teams I might be able to join instead of moving.  Second, they flew me out to Seattle (I&#8217;d never been to the city, nor the state, nor any of the states or provinces that it borders) and arranged for meetings with various managers and developers in the Kirkland office, just so I could learn more about the office and the city.  I spent the afternoon wandering the city and (with help from a friend of a friend), looking at as many districts as I could squeeze between lunch and sleep.</p>
<p>The visit made all the difference.  It made the city real to me &#8230; and it seemed like a place that I could live.  It also confirmed an impressive pattern: every single Google employee I met, at whichever office, seemed like someone I would be happy to work alongside.</p>
<p>When I returned there were yet more meetings scheduled, but I began to perceive that the move was essentially inevitable.  The hiring committee had done their job well, and assigned me to the best fitting position.  Everything else was second best at best.</p>
<p>It&#8217;s been an up and down experience, with the drudgery of packing and schlepping an unwelcome reminder of the feeling of loss that accompanies leaving history, family, and friends behind.  I am learning in the process that, having never really moved, I have no idea how to move.</p>
<p>But there&#8217;s also sometimes a sense of joy in it.  I am going to be an independent, free adult, in a way that cannot be achieved by even the happiest potted plant.</p>
<p>After signing the same lease on the same student apartment for the seventh time, I worried about getting stuck, in some metaphysical sense, about failure to launch from my too-comfortable cocoon.  It was time for a grand adventure.</p>
<p>This is it.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2012/06/29/its-google/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ethics in an unethical world: Ethics Offsets</title>
		<link>http://bemasc.net/wordpress/2012/03/14/ethics-in-an-unethical-world-ethics-offsets/</link>
		<comments>http://bemasc.net/wordpress/2012/03/14/ethics-in-an-unethical-world-ethics-offsets/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 04:43:40 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=2583</guid>
		<description><![CDATA[The recent hubbub regarding the (admirably public) debate within Mozilla about codec support has set me thinking about how to deal with untenable situations. After rightly railing against H.264 on the web for several years, and pushing free codecs with &#8230; <a href="http://bemasc.net/wordpress/2012/03/14/ethics-in-an-unethical-world-ethics-offsets/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The recent hubbub regarding the (admirably public) <a href="https://groups.google.com/forum/?fromgroups#!topic/mozilla.dev.platform/-xTei5rYThU">debate within Mozilla</a> about codec support has set me thinking about how to deal with untenable situations.  After rightly railing against H.264 on the web for several years, and pushing free codecs with the full thrust of the organization, Mozilla may now be approaching consensus that they cannot win, and that continued refusal to capitulate to the cartel is tantamount to organizational suicide.</p>
<p>So what can you do, when you find yourself compelled to do something that goes against your ethics?  To make a choice that you feel is wrong on its own because it benefits you in other ways, a choice you would like to make only when really necessary and never otherwise?  Any thinking person will have this problem, to greater and lesser degrees, throughout their lives.  We are not martyrs, so we do what we have to do to survive and try to keep in mind our need to escape from the trap.</p>
<p>Organizations cannot simply keep something in mind, but they can adopt structures that remind their members of their values even when those values are compromised.  A common structure of this type is the sin tax, a tax designed (in a democracy) by members of a state to help them break or prevent their own bad habits.  Sin taxes work by countering the locally perceived benefit of some action that&#8217;s harmful in a larger way, by reminding us of less visible but still important negative considerations.  Some of their effect is straightforwardly economic, but some is psychological, to help us remember the bigger picture.</p>
<p>Sin taxes are more or less involuntary, but when the government does not impose these reminders, we often choose to remind ourselves.  One currently popular implementation of this concept is the <a href="http://en.wikipedia.org/wiki/Carbon_offset">Carbon offset</a>, a payment typically made when burning fuel to counter the effect of global warming.  Organizations that buy carbon offsets for their fuel consumption do so to send a message, both internally and externally, that they place real value on minimizing carbon emissions.  They may send this message both explicitly (by publicizing the purchase) and implicitly (by its effect on internal and external economic incentives).</p>
<p>Carbon offsets may be in fashion this decade, but there are many older forms of this concept.  Maybe the most quotidian is the Curse Jar*, traditionally a place in a home or small office where individuals may make a small payment when using discouraged vocabulary.  The Curse Jar provides a disincentive to coarse language despite being strictly voluntary, and despite not purchasing any effect on the linguistic environment (although the coffee fund may help for some).  The Curse Jar works simply by reminding group members which behaviors are accepted and which are not.</p>
<p>For Mozilla, the difficulty is not emissions, verbal or vaporous, but ethical behavior.  How can Mozilla publicly commit to a standard of behavior while violating it?  I humbly submit that the answer is to balance its karmic books, by introducing an Ethics Offset**.  When Mozilla finds itself cornered, it may take the necessary unfortunate action &#8230; and introduce a proportionate positive action as a reminder about its real values.</p>
<p>In the case at hand, a reasonable Ethics Offset might look like an internal &#8220;tax&#8221; on all uses of patented codecs.  For example, for every Boot2Gecko device that is sold, Mozilla could commit to an offset equal to double the amount spent on patent licenses for the device.  The offset could be donated to relevant worthy causes, like organizations that oppose software patents or contribute to the development of patent-free multimedia &#8230; but the actual recipient matters much less than the commitment.  By accumulating and periodically (and publicly) &#8220;losing&#8221; this money, Mozilla would remind us all about its commitment to freedom in the multimedia realm.  A similar scheme may be appropriate for Firefox Mobile if it is also configured for H.264 support.</p>
<p>Without a reminder of this kind, Mozilla risks becoming dangerously complacent and complicit to the cartel-controlled multimedia monopolies.  As long as H.264 support appears to serve Mozilla&#8217;s other goals, Mozilla&#8217;s commitment to multimedia freedom will remain uncomfortable, inconvenient, and tempting to forget.  Greater organizations have slid down off their ethical peaks, on paths paved all along with good intentions.</p>
<p>Most companies would not even consider a public and persistent admission of compromise, but Mozilla is not most companies.  Neither are the companies that produce free operating systems, and many other components of the free software ecosystem.  None of them should be ashamed to admit when they are forced to compromise their values and support enterprises that, on ethical grounds, they despise &#8230; but they <em>should</em> make their position clear, by committing to an Ethics Offset until they can escape from the compromise entirely.</p>
<p>*: Why is there no Wikipedia entry for &#8220;Curse Jar&#8221;!?<br />
**: Let&#8217;s <em>not</em> call it an <a href="http://en.wikipedia.org/wiki/Indulgence">indulgence</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2012/03/14/ethics-in-an-unethical-world-ethics-offsets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Route9.js</title>
		<link>http://bemasc.net/wordpress/2011/11/30/route9-js/</link>
		<comments>http://bemasc.net/wordpress/2011/11/30/route9-js/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 05:18:25 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=2468</guid>
		<description><![CDATA[I was really impressed by Michael Bebenita&#8217;s Broadway.js, the recent port of an H.264 decoder to pure Javascript using Emscripten, a LLVM-based C-to-JS converter &#8230; but of course this is the opposite of what we want! Who needs H.264? We &#8230; <a href="http://bemasc.net/wordpress/2011/11/30/route9-js/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was really impressed by Michael Bebenita&#8217;s <a href="https://github.com/mbebenita/Broadway">Broadway.js</a>, the recent port of an H.264 decoder to pure Javascript using<a href="http://emscripten.org"> Emscripten</a>, a LLVM-based C-to-JS converter &#8230; but of course this is the opposite of what we want!  Who needs H.264?  We want <a href="http://www.webmproject.org/">WebM</a>!</p>
<p>I&#8217;ve spent the past few weekends digging into Broadway.js, stripping out the H.264 bits and replacing them with libvpx and libnestegg.  Now it&#8217;s working, to a degree.  You can see it for yourself at <a href="http://people.xiph.org/~bens/route9/route9.html">the demo page</a> (so far tested only in Firefox 7&#8230;).</p>
<p>I&#8217;m not going to be able to take this much further &#8230; at least not right now.  It&#8217;s been a fun exercise though.  I invite all interested comers to read <a href="https://groups.google.com/a/webmproject.org/group/codec-devel/browse_thread/thread/632a2e3e51546ee6#">some more details</a> and then fork <a href="https://github.com/bemasc/Broadway">the repo</a>.</p>
<p>Take this thing, and make it your own.<br />
<span id="more-2468"></span><br />
Reactions: <a href="http://news.ycombinator.com/item?id=3295948">Hacker</a> <a href="http://news.ycombinator.com/item?id=3293852">News</a>, <a href="http://www.reddit.com/r/programming/comments/muy91/route9js_a_vp8webm_decoder_in_javascript/">r/programming</a>, and <a href="http://badassjs.com/post/13551173773/route9-js-a-vp8-webm-decoder-in-javascript#disqus_thread">BadassJS</a>, <a href="http://twitter.com/#!/search/route9%20js">Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2011/11/30/route9-js/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Evolution</title>
		<link>http://bemasc.net/wordpress/2011/08/05/evolution/</link>
		<comments>http://bemasc.net/wordpress/2011/08/05/evolution/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 17:12:19 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=2301</guid>
		<description><![CDATA[So I wrote this song, sort of. Maybe you&#8217;ll like it. YouTube version Sheet Music Reference files at Archive.org After about 6 years of covering pop songs in my a cappella groups, I really wanted to sing some original music. &#8230; <a href="http://bemasc.net/wordpress/2011/08/05/evolution/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So I wrote this song, sort of.  Maybe you&#8217;ll like it.</p>
<p><video controls="controls"><br />
  <source src="http://www.archive.org/download/EvolutiontheSong/evolution-small.ogv" type="video/ogg" /><br />
  <iframe width="560" height="349" src="http://www.youtube.com/embed/_QF6dB06c2I" frameborder="0" allowfullscreen></iframe><br />
</video></p>
<p><a href="http://www.youtube.com/watch?v=_QF6dB06c2I">YouTube version</a><br />
<a href="http://musescore.com/score/22593">Sheet Music</a><br />
<a href="http://www.archive.org/details/EvolutiontheSong">Reference files at Archive.org</a></p>
<p>After about 6 years of covering pop songs in my a cappella groups, I really wanted to sing some original music.  In part, I was motivated by the US&#8217;s aggressively restrictive copyright regime, which always prevented us from freely sharing recordings of our own performances.</p>
<p>I tried to write a song from scratch for a while, but it wasn&#8217;t working out, mostly because I don&#8217;t have anything interesting to say.  Then I struck upon the idea of using the text of an old out-of-copyright poem (which, because of the US&#8217;s effectively perpetual copyright, has to be very old indeed).  I started browsing through the <a href="http://en.wikisource.org/wiki/Portal:Poetry">poetry section</a> of <a href="http://en.wikisource.org/wiki/Main_Page">WikiSource</a>, until I stumbled across <a href="http://en.wikisource.org/wiki/Evolution_%28Smith%29">this brilliant 1895 poem</a> by <a href="http://en.wikipedia.org/wiki/Langdon_smith">Langdon Smith</a>.  The choice was clear.</p>
<p>I drew up a thoroughly derivative 4-part a cappella arrangement in <a href="http://musescore.org/">MuseScore</a>, and VoiceLab indulged me by adding it to the repertoire.  We&#8217;ve sung it twice so far, but the first time we didn&#8217;t have a good recording, and then this time I had to solve this <a href="http://jeff.ecchi.ca/blog/2011/07/25/automated-multicamera-clip-syncing/">audio-video alignment problem</a>&#8230; but now it&#8217;s here.</p>
<p>The recordings and sheet music are all CC0 dedicated to the public domain.  I would appreciate attribution as the arranger, but I find threats of legal action to be just as distasteful as plagiarism.  I wouldn&#8217;t want to do anything to discourage people from adopting and adapting the music as they see fit.  Maybe someone will make a recording with a soloist who can <em>really</em> sing!</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2011/08/05/evolution/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://www.archive.org/download/EvolutiontheSong/evolution-small.ogv" length="0" type="video/ogg" />
		</item>
		<item>
		<title>An Auto-Aligner for PiTiVi</title>
		<link>http://bemasc.net/wordpress/2011/07/26/an-auto-aligner-for-pitivi/</link>
		<comments>http://bemasc.net/wordpress/2011/07/26/an-auto-aligner-for-pitivi/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 04:12:03 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=2286</guid>
		<description><![CDATA[It&#8217;s rare to get exactly one recording of an a capella concert. Usually someone&#8217;s parents have a fancy but outdated camcorder, someone in the front row has a cell phone video with a great angle but terrible quality, and there&#8217;s &#8230; <a href="http://bemasc.net/wordpress/2011/07/26/an-auto-aligner-for-pitivi/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s rare to get exactly one recording of an a capella concert.  Usually someone&#8217;s parents have a fancy but outdated camcorder, someone in the front row has a cell phone video with a great angle but terrible quality, and there&#8217;s a beautiful audio-only recording, maybe straight from the mixing board.  All the recordings are independent, starting and stopping at different times.  Some are only one song long, or are broken into many short pieces.</p>
<p>If you want to combine all these inputs into a video that anyone could watch, you&#8217;ll first have to line them up correctly in a video editor.  This is a painful process of dragging clips around on the timeline with the mouse, trying to figure out if they&#8217;re in sync or not.  The usual trick to making this achievable is to look at the audio waveform visualization, but even so, the process can be tedious and irritating.</p>
<p>This year, when I got three recordings from the VoiceLab spring concert, I resolved to solve the problem once and for all.  I set about writing an automatic clip alignment algorithm as a patch to <a href="http://www.pitivi.org/">PiTiVi</a>, a beautiful (if not mature) free software video editor written in Python.</p>
<p>Today, after about two months of nights and weekends, the result is ready for testing in <a href="http://git.pitivi.org/?p=pitivi.git;a=summary">PiTiVi mainline</a>.  Jean-François Fortin Tam has a great <a href="http://jeff.ecchi.ca/blog/2011/07/25/automated-multicamera-clip-syncing/">writeup</a> explaining how it works from a user&#8217;s perspective.</p>
<p>I hadn&#8217;t looked into it until after the fact, but of course this is not the first auto-alignment function in a video editor.  Final Cut Pro appears to have a similar function built in, and there are also plug-ins such as &#8220;Plural Eyes&#8221; for many editors.  However, to the best of my knowledge, this is the first free implementation, and the first available on Linux.  Comparing features in PiTiVi vs. the proprietary giants, I think of this as &#8220;one down, 20,000 to go&#8221;.</p>
<p>I guess this is as good a place as any to talk about the algorithm, which is almost The Simplest Thing that could Possibly Work.  Alignment works by analyzing the audio tracks, relying on every video camera to have a microphone of its own.  The most direct approach might be to compute the cross-correlation of these audio tracks and look for the peak &#8230; but this could require storing multi-gigabyte audio files in memory, and performing impossibly large FFTs.  On computers of today, the direct approach is technologically infeasible.</p>
<p>The algorithm I settled on resembles the method a human uses when looking at the waveform view.  First, it breaks each input audio stream into 40 ms blocks and computes the mean absolute value of each block.  The resulting 25 Hz signal is the &#8220;volume envelope&#8221;.  The code subtracts the mean volume from each track&#8217;s envelope, then performs a cross-correlation between tracks and looks for the peak, which identifies the relative shift.  To avoid performing N^2 cross-correlations, one clip is selected as the fixed reference, and all others are compared to it.  The peak position is quantized to the block duration (creating an error of +/- 20ms), so to improve accuracy a parabolic fit is used to interpolate the true maximum.  I don&#8217;t know the exact residual error, but I expect it&#8217;s typically less than 5 ms, which should be plenty good enough, seeing as sound travels about 1 foot per ms.</p>
<p>My original intent was to compensate for clock skew as well, because all these recording devices are using independent sample clocks that are running at slightly different rates due to manufacturing variation.  There&#8217;s even code in the commit for a far more complex algorithm that can measure this clock skew.  At the moment, this code is disused, for two reasons: none of our test clips actually showed appreciable skew, and PiTiVi <a href="https://bugzilla.gnome.org/show_bug.cgi?id=593828">doesn&#8217;t actually support changing the speed of clips</a>, <a href="https://bugzilla.gnome.org/show_bug.cgi?id=636235">especially audio</a>.</p>
<p>If you want to help, just stop by the PiTiVi mailing list or IRC channel.  We can use more test clips, a real testing framework, a cancel button, UI improvements, conversion to C for speed, and all sorts of general bug squashing.  For this feature, and throughout PiTiVi, there&#8217;s always more to be done.  I&#8217;ve found the developer community to be extremely welcoming of new contributions &#8230; come and join us.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2011/07/26/an-auto-aligner-for-pitivi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Transparent Video with GStreamer</title>
		<link>http://bemasc.net/wordpress/2010/11/15/transparent-video-with-gstreamer/</link>
		<comments>http://bemasc.net/wordpress/2010/11/15/transparent-video-with-gstreamer/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 17:21:27 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1926</guid>
		<description><![CDATA[So you wrote a script to generate an animation with ImageMagick or something. You have a folder full of transparent PNGs, one for each frame. Now you want to do some alpha-channel compositing in gstreamer (e.g. with PiTiVi). Instead of &#8230; <a href="http://bemasc.net/wordpress/2010/11/15/transparent-video-with-gstreamer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So you wrote a script to generate an animation with ImageMagick or something.  You have a folder full of transparent PNGs, one for each frame.  Now you want to do some alpha-channel compositing in gstreamer (e.g. with PiTiVi).  Instead of having to shove around a huge pile of PNGs, you want a single movie file that contains them all, and retains the transparency.  So here&#8217;s what you do:</p>
<p><code>gst-launch-0.10 multifilesrc location=images%05d.png caps="image/png,framerate=1/1,pixel-aspect-ratio=1/1" num-buffers=95 ! pngdec ! videorate ! alphacolor ! "video/x-raw-yuv,format=(fourcc)AYUV" ! matroskamux ! filesink location=images_raw.mkv</code></p>
<p>Boom.  I just saved you my last two hours.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2010/11/15/transparent-video-with-gstreamer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stream Switching at FOMS</title>
		<link>http://bemasc.net/wordpress/2010/10/06/stream-switching-at-foms/</link>
		<comments>http://bemasc.net/wordpress/2010/10/06/stream-switching-at-foms/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 21:06:01 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1882</guid>
		<description><![CDATA[I spent Sunday and Monday at The Free and Open Media Summit Foundations of Open Media Software in NYC. The first day was held in a smallish meeting room at the Interactive Telecommunications Program in the Tisch school of NYU. &#8230; <a href="http://bemasc.net/wordpress/2010/10/06/stream-switching-at-foms/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I spent Sunday and Monday at <a href="http://www.foms-workshop.org/foms2010OVC/">The <del datetime="2010-10-06T21:06:25+00:00">Free and Open Media Summit</del> Foundations of Open Media Software</a> in NYC.  The first day was held in a smallish meeting room at the Interactive Telecommunications Program in the Tisch school of NYU.  The space had a fun hackerly atmosphere reminiscent of the Media Lab.  On Monday we moved to a boring and surprisingly unfashionable basement room at the Fashion Institute of Technology.</p>
<p>Having never attended FOMS before, I had little idea what to expect.  I vaguely imagined a lot of sitting around at tables writing code together.  Instead, we spent most of the two days in discussion groups.  The talking covered a wide variety of subjects, but a majority of the time was spent on a single topic, one of which I was only barely aware before Sunday morning: <a href="http://en.wikipedia.org/wiki/Adaptive_bit_rate">adaptive bitrate streaming</a>.</p>
<p>Adaptive bitrate streaming techniques go by many names, like &#8220;Microsoft Smooth Streaming&#8221;, &#8220;Apple HTTP Adaptive Streaming&#8221;, &#8220;Adobe Dynamic Streaming&#8221;, and &#8220;Free Software &#8230; uhh &#8230; hmm&#8221;.  They work in a variety of ways, but all ultimately achieve the same goal: allowing clients to switch between different streams as their available download throughput changes.  The trick, of course, is to do this without a pause during the transition.  Because internet connections almost never actually guarantee the available throughput, this sort of glitch-free adaptation is crucial if you want to build a satisfactory replacement Television.</p>
<p>The existing systems for adaptive streaming are all tied to proprietary patented codecs, and so we spent half of Saturday and most of Sunday building up a sketch of what an unencumbered adaptive streaming system would look like.  We didn&#8217;t manage to reach a complete consensus solution in 36 hours, but I think the discussions were productive nonetheless.  We did, in my opinion, reach consensus on a few important points:</p>
<ul>
<li>HTTP is a terrible way to stream video.</li>
<ul>
<li>Especially for live streams</li>
<li>Even more so when dealing with dumb servers that don&#8217;t know about video, and may even have incomplete, outdated implementations if HTTP</li>
</ul>
<li>We should do our adaptive streaming over HTTP.</li>
<ul>
<li>With support for live streams</li>
<li>Even on dumb servers</li>
</ul>
<li>Ogg Theora|Vorbis and WebM are the only stream types we care about.</li>
<li>We should build a solution that is basically universal across containers and codecs.</li>
</ul>
<p>The unresolved issues are important, but in the broad perspective they are technical minutiae, and the atmosphere was clearly such that no one was going to get upset if their branch of the decision tree was not taken.</p>
<p>The one thing I wish I had heard at any point during the discussion was a mention of any other related work on this problem.  With the imminent launch of Google TV, and I can easily imagine our design being nipped in the bud by an announcement from Mountain View.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2010/10/06/stream-switching-at-foms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Education, Geek to Geek</title>
		<link>http://bemasc.net/wordpress/2010/09/23/education-geek-to-geek/</link>
		<comments>http://bemasc.net/wordpress/2010/09/23/education-geek-to-geek/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 15:26:22 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>
		<category><![CDATA[sugar]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1856</guid>
		<description><![CDATA[Monty of Xiph.Org just put out a new video on the fundamentals of digital multimedia, hopefully the first of many. It&#8217;s a fun intro for anyone who&#8217;d like to know more about the foundations of modern audio/video technology, especially students. &#8230; <a href="http://bemasc.net/wordpress/2010/09/23/education-geek-to-geek/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Monty of Xiph.Org just put out a <a href="http://xiph.org/video/vid1.shtml">new video</a> on the fundamentals of digital multimedia, hopefully the first of many.  It&#8217;s a fun intro for anyone who&#8217;d like to know more about the foundations of modern audio/video technology, especially students.  I think it&#8217;s a good example of how the geeks of the world can and should work to raise new generations of geeks, worldwide.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2010/09/23/education-geek-to-geek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oh, Microsoft</title>
		<link>http://bemasc.net/wordpress/2010/05/19/oh-microsoft/</link>
		<comments>http://bemasc.net/wordpress/2010/05/19/oh-microsoft/#comments</comments>
		<pubDate>Wed, 19 May 2010 20:22:53 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1681</guid>
		<description><![CDATA[You are always good for a laugh. Before: In its HTML5 support, IE9 will support playback of H.264 video only. After: In its HTML5 support, IE9 will support playback of H.264 video as well as VP8 video when the user &#8230; <a href="http://bemasc.net/wordpress/2010/05/19/oh-microsoft/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>You are always good for a laugh.</p>
<p><a href="http://blogs.msdn.com/ie/archive/2010/04/29/html5-video.aspx"><br />
Before</a>:</p>
<blockquote><p>In its HTML5 support, IE9 will support playback of H.264 video only.</p></blockquote>
<p><a href="http://windowsteamblog.com/windows/b/bloggingwindows/archive/2010/05/19/another-follow-up-on-html5-video-in-ie9.aspx">After</a>:</p>
<blockquote><p>In its HTML5 support, IE9 will support playback of H.264 video as well as VP8 video when the user has installed a VP8 codec on Windows. </p></blockquote>
<p>Time between quotes: three weeks.  I feel sorry for the engineers.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2010/05/19/oh-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laptop!</title>
		<link>http://bemasc.net/wordpress/2010/05/10/laptop-2/</link>
		<comments>http://bemasc.net/wordpress/2010/05/10/laptop-2/#comments</comments>
		<pubDate>Mon, 10 May 2010 16:35:49 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1660</guid>
		<description><![CDATA[I have a laptop! My new Latitude 13n arrived at the office while I was away, and I picked it up today. It&#8217;s nicely designed, with a solid-feeling all-metal shell. I&#8217;m willing to pay the small weight penalty for rigidity. &#8230; <a href="http://bemasc.net/wordpress/2010/05/10/laptop-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have a laptop! My new Latitude 13n arrived at the office while I was away, and I picked it up today.</p>
<p>It&#8217;s nicely designed, with a solid-feeling all-metal shell.  I&#8217;m willing to pay the small weight penalty for rigidity.  The keyboard seems great so far, and the screen is crisp and bright.  The default subpixel fonts look beautiful.  It&#8217;s a true 16:9 widescreen like most laptops these days, and it feels cinematic to look at.  Dell has not tried very hard to minimize the bezel, which is 2-3 cm all around.  I certainly don&#8217;t have an aesthetic problem with this, though, and it makes room for a nice full-size keyboard and wrist-rest.</p>
<p>The system came with Dell&#8217;s Ubuntu 9.10.  There&#8217;s no Windows sticker or certificate of authenticity, but there is still an unfortunate Windows key.  The software configuration, after using it for 10 minutes, has its ups and downs.</p>
<p>On the plus side, it&#8217;s a decent basic fresh install of Ubuntu.  The only visible Dell-specific customization, and the only item on the desktop, is &#8220;Create Dell Recovery Media&#8221;, a program to create a USB stick (or CD if I had a CD drive) to restore the system software.  There&#8217;s also an Ubuntu Install CD in the box, but this isn&#8217;t hugely helpful for a machine with no optical drives.</p>
<p>The Fn keys, like brightness and volume controls, seem to be well-integrated with the software.  The wireless enable/disable seems to work as well, although the first time I tried it I got a kernel oops.  I was notified of the oops by an oops-reporter tray icon, which offered to report the oops to kerneloops.org, then failed because the kernel image was &#8220;not a valid Ubuntu package&#8221;, or something to that effect.</p>
<p>The default application choices seem a little odd, but they&#8217;re probably Ubuntu&#8217;s, not Dell&#8217;s.  The major list is pretty short: OO.o, GIMP, XSane, Empathy, Firefox, Evolution, Brasero, Rhythmbox, Tomboy, F-Spot, Bittorrent client, RDP client.</p>
<p>Intriguingly, the system seems to ship with no proprietary audio or video codecs, with the exception of the Adobe Flash 10 browser plugin, which is so far the only piece of non-free software I&#8217;ve identified on the system.  Theora and Vorbis are of course installed, both in gstreamer and Firefox.</p>
<p>The system has compositing enabled, but the graphics don&#8217;t seem to be running fast enough to produce smooth whizzing animations.  I&#8217;m surprised by this, given the Intel X4500 series GPU.  I suspect a driver upgrade would make this much better.  I can think of a few other minor issues too.  For example, the default spell checking language in this Firefox window is set to Austrian German (de_AT), despite my specifically selecting en_US during the first-boot configuration wizard.</p>
<p>I ordered the machine with a webcam, but the default install doesn&#8217;t contain any software with which to check that the camera is working.  &#8220;Ubuntu Software Center&#8221; shows Cheese but provides no option to install it until after first going to Synaptic and hitting &#8220;reload&#8221;.  It seems that the system ships with only the info for packages that are already installed, and Ubuntu Software Center has no way to retrieve updates.  This seems like a problematic design.  After installing Cheese, though, the camera does seem to work well.</p>
<p>The touchpad defaults to edge-scrolling mode, with an option in System -> Mouse Preferences for two-finger scrolling.  Unfortunately this option doesn&#8217;t actually work, even when configured via gpointing-device-settings.</p>
<p>Of course all of these niggles pale in comparison to the alternative, Windows.  Booting into a working Linux distro out of the box is a welcome improvement over the usual rigmarole.</p>
<p><strong>UPDATE:</strong> I clicked a big button that said something like &#8220;Upgrade to Ubuntu 10.04&#8243;, and when I woke up this morning these problems were improved.  No more kernel oops.  Windows swish smoothly.  Mouse controls no longer offer multi-touch, which is at least better than offering an option with no effect.  There&#8217;s also a video editor in the default install.  In short, it seems like a nice upgrade.  The inverse color theme, like the one I loved in Windows 3.1 at age 8, makes the laptop seems like a real infoweapon.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2010/05/10/laptop-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
