<?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>Arun Raghavan &#187; pulseaudio</title>
	<atom:link href="http://arunraghavan.net/tag/pulseaudio/feed/" rel="self" type="application/rss+xml" />
	<link>http://arunraghavan.net</link>
	<description>Extremely pithy tagline here</description>
	<lastBuildDate>Thu, 11 Apr 2013 11:34:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>PulseAudio in GSoC 2013</title>
		<link>http://arunraghavan.net/2013/04/pulseaudio-in-gsoc-2013/</link>
		<comments>http://arunraghavan.net/2013/04/pulseaudio-in-gsoc-2013/#comments</comments>
		<pubDate>Thu, 11 Apr 2013 11:34:48 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1426</guid>
		<description><![CDATA[That&#8217;s right &#8212; PulseAudio will be participating in the Google Summer of Code again this year! We had a great set of students and projects last year, and you&#8217;ve already seen some their work in the last release. There are some more details on how to get involved on the mailing list. We&#8217;re looking forward [...]]]></description>
				<content:encoded><![CDATA[<p>That&#8217;s right &#8212; PulseAudio will be participating in the Google Summer of Code again this year! We had a great set of students and projects last year, and you&#8217;ve already seen some their work in the last release.</p>

<p>There are some more details on <a href="http://lists.freedesktop.org/archives/pulseaudio-discuss/2013-April/016899.html">how to get involved</a> on the mailing list. We&#8217;re looking forward to having another set of smart and enthusiastic new contributors this year!</p>

<p>p.s.: Mentors and students from organisations (GStreamer and BlueZ, for example), do feel free to get in touch with us if you have ideas for projects related to PulseAudio that overlap with those other projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2013/04/pulseaudio-in-gsoc-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PulseAudio 3.0</title>
		<link>http://arunraghavan.net/2012/12/pulseaudio-3-0/</link>
		<comments>http://arunraghavan.net/2012/12/pulseaudio-3-0/#comments</comments>
		<pubDate>Tue, 18 Dec 2012 07:57:46 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1412</guid>
		<description><![CDATA[Yay, we just released PulseAudio 3.0! I&#8217;m not going to rehash the changelog that you can find in the release announcement as well as the longer release notes. I would like to thank the 36 contributors over the last 6 months who have made this release what it is and continue to demonstrate what a [...]]]></description>
				<content:encoded><![CDATA[<p>Yay, we just released PulseAudio 3.0! I&#8217;m not going to rehash the changelog that you can find in the <a href="http://lists.freedesktop.org/archives/pulseaudio-discuss/2012-December/015692.html">release announcement</a> as well as the longer <a href="http://www.freedesktop.org/wiki/Software/PulseAudio/Notes/3.0">release notes</a>.</p>

<p>I would like to thank the 36 contributors over the last 6 months who have made this release what it is and continue to demonstrate what a vibrant community we have!</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/12/pulseaudio-3-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PulseConf 2012: Report</title>
		<link>http://arunraghavan.net/2012/11/pulseconf-2012-report/</link>
		<comments>http://arunraghavan.net/2012/11/pulseconf-2012-report/#comments</comments>
		<pubDate>Tue, 06 Nov 2012 11:04:22 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1380</guid>
		<description><![CDATA[For those of you who missed my previous updates, we recently organised a PulseAudio miniconference in Copenhagen, Denmark last week. The organisation of all this was spearheaded by ALSA and PulseAudio hacker, David Henningsson. The good folks organising the Ubuntu Developer Summit / Linaro Connect were kind enough to allow us to colocate this event. [...]]]></description>
				<content:encoded><![CDATA[<p>For those of you who missed my previous updates, we recently organised a PulseAudio miniconference in Copenhagen, Denmark last week. The organisation of all this was spearheaded by ALSA and PulseAudio hacker, <a href="http://voices.canonical.com/david.henningsson/">David Henningsson</a>. The good folks organising the Ubuntu Developer Summit / Linaro Connect were kind enough to allow us to colocate this event. A big thanks to both of them for making this possible!</p>

<div id="attachment_1381" class="wp-caption aligncenter" style="width: 550px"><a href="http://arunraghavan.net/wp-content/uploads/pulseconf.jpg"><img src="http://arunraghavan.net/wp-content/uploads/pulseconf-e1352181077652-943x1024.jpg" alt="The room where the first PulseAudio conference took place" title="PulseConf Room" width="540" height="586" class="size-large wp-image-1381" /></a><p class="wp-caption-text">The room where the first PulseAudio conference took place</p></div>

<p>The conference was attended by the four current active PulseAudio developers: <a href="http://colin.guthr.ie/">Colin Guthrie</a>, Tanu Kaskinen, David Henningsson, and myself. We were joined by long-time contributors Janos Kovacs and Jaska Uimonen from Intel, <a href="http://www.themuso.com/">Luke Yelavich</a>, Conor Curran and Michał Sawicz.</p>

<p>We started the conference at around 9:30 am on November 2nd, and actually managed to keep to the final <a href="http://lists.freedesktop.org/archives/pulseaudio-discuss/2012-November/015135.html">schedule</a>(!), so I&#8217;m going to break this report down into sub-topics for each item which will hopefully make for easier reading than an essay. I&#8217;ve also put up some photos from the conference on the <a href="https://plus.google.com/events/c203cr2jfibmc7tcemci11pgbq4">Google+ event</a>.</p>

<h3>Mission and Vision</h3>

<p>We started off with a broad topic &#8212; what each of our personal visions/goals for the project are. Interestingly, two main themes emerged: having the most seamless desktop user experience possible, and making sure we are well-suited to the embedded world.</p>

<p>Most of us expressed interest in making sure that users of various desktops had a smooth, hassle-free audio experience. In the ideal case, they would never need to find out what PulseAudio is!</p>

<p>Orthogonally, a number of us are also very interested in making PulseAudio a strong contender in the embedded space (mobile phones, tablets, set top boxes, cars, and so forth). While we already find PulseAudio being used in some of these, there are areas where we can do better (more in later topics).</p>

<p>There was some reservation expressed about other, less-used features such as network playback being ignored because of this focus. The conclusion after some discussion was that this would not be the case, as a number of embedded use-cases do make use of these and other &#8220;fringe&#8221; features.</p>

<h3>Increasing patch bandwidth</h3>

<p>Contributors to PulseAudio will be aware that our patch queue has been growing for the last few months due to lack of developer time. We discussed several ways to deal with this problem, the most promising of which was a periodic triage meeting.</p>

<p>We will be setting up a rotating schedule where each of us will organise a meeting every 2 weeks (the period might change as we implement things) where we can go over outstanding patches and hopefully clear backlog. Colin has agreed to set up the first of these.</p>

<h3>Routing infrastructure</h3>

<p>Next on the agenda was a presentation by Janos Kovacs about the work they&#8217;ve been doing at Intel with enhancing the PulseAudio&#8217;s routing infrastructure. These are being built from the perspective of <acronym title="In-Vehicle Infotainment">IVI</acronym> systems (i.e., cars) which typically have fairly complex use cases involving multiple concurrent devices and users. The slides for the talk will be put up here shortly (<em>edit: slides are now <a href="/downloads/janos-pulseaudio-copenhagen.pdf">available</a></em>).</p>

<p>The talk was mingled with a Q&amp;A type discussion with Janos and Jaska. The first item of discussion was consolidating Colin&#8217;s priority-based routing ideas into the proposed infrastructure. The broad thinking was that the ideas were broadly compatible and should be implementable in the new model.</p>

<p>There was also some discussion on merging the module-combine-sink functionality into PulseAudio&#8217;s core, in order to make 1:N routing easier. Some alternatives using te <tt>module-filter-*</tt> were proposed. Further discussion will likely be required before this is resolved.</p>

<p>The next steps for this work are for Jaska and Janos to break up the code into smaller logical bits so that we can start to review the concepts and code in detail and work towards eventually merging as much as makes sense upstream.</p>

<h3>Low latency</h3>

<p>This session was taken up against the background of improving latency for games on the desktop (although it does have other applications). The indicated required latency for games was given as 16 ms (corresponding to a frame rate of 60 fps). A number of ideas to deal with the problem were brought up.</p>

<p>Firstly, it was suggested that the <tt>maxlength</tt> buffer attribute when setting up streams could be used to signal a hard limit on stream latency &#8212; the client signals that it will prefer an underrun, over a latency above maxlength.</p>

<p>Another long-standing item was to investigate the cause of underruns as we lower latency on the stream &#8212; David has already begun taking this up on the LKML.</p>

<p>Finally, another long-standing issue is the buffer attribute adjustment done during stream setup. This is not very well-suited to low-latency applications. David and I will be looking at this in coming days.</p>

<h3>Merging per-user and system modes</h3>

<p>Tanu led the topic of finding a way to deal with use-cases such as <acronym title="Music Player Daemon"><tt>mpd</tt></acronym> or multi-user systems, where access to the PulseAudio daemon of the active user by another user might be desired. Multiple suggestions were put forward, though a definite conclusion was not reached, as further thought is required.</p>

<p>Tanu&#8217;s suggestion was a split between a per-user daemon to manage tasks such as per-user configuration, and a system-wide daemon to manage the actual audio resources. The rationale being that the hardware itself is a common resource and could be handled by a non-user-specific daemon instance. This approach has the advantage of having a single entity in charge of the hardware, which keeps a part of the implementation simpler. The disadvantage is that we will either sacrifice security (arbitrary users can &#8220;eavesdrop&#8221; using the machine&#8217;s mic), or security infrastructure will need to be added to decide what users are allowed what access.</p>

<p>I suggested that since these are broadly fringe use-cases, we should document how users can configure the system by hand for these purposes, the crux of the argument being that our architecture should be dictated by the main use-cases, and not the ancillary ones. The disadvantage of this approach is, of course, that configuration is harder for the minority that wishes multi-user access to the hardware.</p>

<p>Colin suggested a mechanism for users to be able to request access from an &#8220;active&#8221; PulseAudio daemon, which could trigger approval by the corresponding &#8220;active&#8221; user. The communication mechanism could be the D-Bus system bus between user daemons, and Ștefan Săftescu&#8217;s Google Summer of Code work to allow desktop notifications to be triggered from PulseAudio could be used to get to request authorisation.</p>

<p>David suggested that we could use the per-user/system-wide split, modified somewhat to introduce the concept of a &#8220;system-wide&#8221; card. This would be a device that is configured as being available to the whole system, and thus explicitly marked as not having any privacy guarantees.</p>

<p>In both the above cases, discussion continued about deciding how the access control would be handled, and this remains open.</p>

<p>We will be continuing to look at this problem until consensus emerges.</p>

<h3>Improving (laptop) surround sound</h3>

<p>The next topic dealt with being able to deal with laptops with a built-in 2.1 channel set up. The background of this is that there are a number of laptops with stereo speakers and a subwoofer. These are usually used as stereo devices with the subwoofer implicitly being fed data by the audio controller in some hardware-dependent way.</p>

<p>The possibility of exposing this hardware more accurately was discussed. Some investigation is required to see how things are currently exposed for various hardware (my MacBook Pro exposes the subwoofer as a surround control, for example). We need to deal with correctly exposing the hardware at the ALSA layer, and then using that correctly in PulseAudio profiles.</p>

<p>This led to a discussion of how we could handle profiles for these. Ideally, we would have a stereo profile with the hardware dealing with upmixing, and a 2.1 profile that would be automatically triggered when a stream with an LFE channel was presented. This is a general problem while dealing with surround output on HDMI as well, and needs further thought as it complicates routing.</p>

<h3>Testing</h3>

<p>I gave a rousing speech about writing more tests using some of the new improvements to our testing framework. Much cheering and acknowledgement ensued.</p>

<p><em>Ed.: some literary liberties might have been taken in this section</em></p>

<h3>Unified cross-distribution ALSA configuration</h3>

<p>I missed a large part of this unfortunately, but the crux if the discussion was around unifying cross-distribution sound configuration for those who wish to disable PulseAudio.</p>

<h3>Base volumes</h3>

<p>The next topic we took up was base volumes, and whether they are useful to most end users. For those unfamiliar with the concept, we sometimes see sinks/sources where which support volume controls going to > 0dB (which is the no=attenuation point). We provide the maximum allowed gain in ALSA as the maximum volume, and suggest that UIs show a marker for the base volume.</p>

<p>It was felt that this concept was irrelevant, and probably confusing to most end users, and that we suggest that UIs do not show this information any more.</p>

<p>Relatedly, it was decided that having a per-port maximum volume configuration would be useful, so as to allow users to deal with hardware where the output might get too loud.</p>

<h3>Devices with dynamic capabilities (HDMI)</h3>

<p>Our next topic of discussion was finding a way to deal with devices such as those HDMI ports where the capabilities of the device could change at run time (for example, when you plug out a monitor and plug in a home theater receiver).</p>

<p>A few ideas to deal with this were discussed, and the best one seemed to be David&#8217;s proposal to always have a separate card for each HDMI device. The addition of dynamic profiles could then be exploited to only make profiles available when an actual device is plugged in (and conversely removed when the device is plugged out).</p>

<h3>Splitting of configuration</h3>

<p>It was suggested that we could split our current configuration files into three categories: core, policy and hardware adaptation. This was met with approval all-around, and the pre-existing ability to read configuration from subdirectories could be reused.</p>

<p>Another feature that was desired was the ability to ship multiple configurations for different hardware adaptations with a single package and have the correct one selected based on the hardware being run on. We did not know of a standard, architecture-independent way to determine hardware adaptation, so it was felt that the first step toward solving this problem would be to find or create such a mechanism. This could either then be used to set up configuration correctly in early boot, or by PulseAudio for do runtime configuration selection.</p>

<p>Relatedly, moving all distributed configuration to <tt>/usr/share/...</tt>, with overrides in <tt>/etc/pulse/...</tt> and <tt>$HOME</tt> were suggested.</p>

<h3>Better drain/underrun reporting</h3>

<p>David volunteered to implement a per-sink-input timer for accurately determining when drain was completed, rather than waiting for the period of the entire buffer as we currently do. Unsurprisingly, no objections were raised to this solution to the long-standing issue.</p>

<p>In a similar vein, redefining the underflow event to mean a real device underflow (rather than the client-side buffer running empty) was suggested. After some discussion, we agreed that a separate event for device underruns would likely be better.</p>

<h3>Beer</h3>

<p>We called it a day at this point and dispersed beer-wards.</p>

<div id="attachment_1390" class="wp-caption aligncenter" style="width: 550px"><a href="http://arunraghavan.net/wp-content/uploads/pulseconf-hackers.jpg"><img src="http://arunraghavan.net/wp-content/uploads/pulseconf-hackers-1024x577.jpg" alt="PulseConf Hackers" title="PulseConf Hackers" width="540" height="304" class="size-large wp-image-1390" /></a><p class="wp-caption-text">Our valiant attendees after a day of plotting the future of PulseAudio</p></div>

<h3>User experience</h3>

<p>David very kindly invited us to spend a day after the conference hacking at his house in Lund, Sweden, just a short hop away from Copenhagen. We spent a short while in the morning talking about one last item on the agenda &#8212; helping to build a more seamless user experience. The idea was to figure out some tools to help users with problems quickly converge on what problem they might be facing (or help developers do the same). We looked at the Ubuntu apport audio debugging tool that David has written, and will try to adopt it for more general use across distributions.</p>

<h3>Hacking</h3>

<p>The rest of the day was spent in more discussions on topics from the previous day, poring over code for some specific problems, and rolling out the first release candidate for the upcoming 3.0 release.</p>

<h3>And cut!</h3>

<p>I am very happy that this conference happened, and am looking forward to being able to do it again next year. As you can see from the length of this post, there are lot of things happening in this part of the stack, and lots more yet to come. It was excellent meeting all the fellow PulseAudio hackers, and my thanks to all of them for making it.</p>

<p>Finally, I wouldn&#8217;t be sitting here writing this report without support from Collabora, who sponsored my travel to the conference, so it&#8217;s fitting that I end this with a shout-out to them. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/11/pulseconf-2012-report/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>grsec and PulseAudio (and Gentoo)</title>
		<link>http://arunraghavan.net/2012/10/grsec-and-pulseaudio/</link>
		<comments>http://arunraghavan.net/2012/10/grsec-and-pulseaudio/#comments</comments>
		<pubDate>Tue, 30 Oct 2012 08:49:50 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1366</guid>
		<description><![CDATA[This problem seems to bite some of our hardened users a couple of times a year, so thought I&#8217;d blog about it. If you are using grsec and PulseAudio, you must not enable CONFIG_GRKERNSEC_SYSFS_RESTRICT in your kernel, else autodetection of your cards will fail. PulseAudio&#8217;s module-udev-detect needs to access /sys to discover what cards are [...]]]></description>
				<content:encoded><![CDATA[<p>This problem seems to bite some of our hardened users a couple of times a year, so thought I&#8217;d blog about it. If you are using grsec and PulseAudio, you must <em>not</em> enable <tt>CONFIG_GRKERNSEC_SYSFS_RESTRICT</tt> in your kernel, else autodetection of your cards will fail.</p>

<p>PulseAudio&#8217;s module-udev-detect needs to access /sys to discover what cards are available on the system, and that kernel option disallows this for anyone but root.</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/10/grsec-and-pulseaudio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PulseConf Schedule</title>
		<link>http://arunraghavan.net/2012/10/pulseconf-schedule/</link>
		<comments>http://arunraghavan.net/2012/10/pulseconf-schedule/#comments</comments>
		<pubDate>Mon, 29 Oct 2012 12:45:47 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[pulseaudio]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1360</guid>
		<description><![CDATA[David has now published a tentative schedule for the PulseAudio Mini-conference (I&#8217;m just going to call it PulseConf &#8212; so much easier on the tongue). For the lazy, these are some of the topics we&#8217;ll be covering: Vision and mission &#8212; where we are and where we want to be Improving our patch review process [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://voices.canonical.com/david.henningsson/">David</a> has now published a tentative <a href="http://lists.freedesktop.org/archives/pulseaudio-discuss/2012-October/015012.html">schedule</a> for the PulseAudio Mini-conference (I&#8217;m just going to call it PulseConf &#8212; so much easier on the tongue).</p>

<p>For the lazy, these are some of the topics we&#8217;ll be covering:</p>

<ul>
<li>Vision and mission &#8212; where we are and where we want to be</li>
<li>Improving our patch review process</li>
<li>Routing infrastructure</li>
<li>Improving low latency behaviour</li>
<li>Revisiting system- and user-modes</li>
<li>Devices with dynamic capabilities</li>
<li>Improving surround sound behaviour</li>
<li>Separating configuration for hardware adaptation</li>
<li>Better drain/underrun reporting behaviour</li>
</ul>

<p>Phew &#8212; and there are more topics that we probably will not have time to deal with!</p>

<p>For those of you who cannot attend, the Linaro Connect folks (who are graciously hosting us) are planning on running Google+ Hangouts for their sessions. Hopefully we should be able to do the same for our proceedings. Watch this space for details!</p>

<p><em>p.s.: A big thank you to my employer <a href="http://www.collabora.com/">Collabora</a> for sponsoring my travel to the conference.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/10/pulseconf-schedule/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PulseConf!</title>
		<link>http://arunraghavan.net/2012/10/pulseconf/</link>
		<comments>http://arunraghavan.net/2012/10/pulseconf/#comments</comments>
		<pubDate>Thu, 04 Oct 2012 08:41:01 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1356</guid>
		<description><![CDATA[For those of you who missed it, your friendly neighbourhood PulseAudio hackers are converging on Copenhagen in a month to discuss, plan and hack on the future of PulseAudio. We&#8217;re doing this for the first time, so I&#8217;m super-excited! David has posted details so if this is of interest to you, you should definitely join [...]]]></description>
				<content:encoded><![CDATA[<p>For those of you who missed it, your friendly neighbourhood PulseAudio hackers are converging on Copenhagen in a month to discuss, plan and hack on the future of PulseAudio.</p>

<p>We&#8217;re doing this for the first time, so I&#8217;m super-excited! David has <a href="http://voices.canonical.com/david.henningsson/2012/10/04/pulseaudio-conference-less-than-a-month-away/">posted details</a> so if this is of interest to you, you should definitely join us!</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/10/pulseconf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PulseAudio 2.0: Twice The Goodness!</title>
		<link>http://arunraghavan.net/2012/05/pulseaudio-2-0-twice-the-goodness/</link>
		<comments>http://arunraghavan.net/2012/05/pulseaudio-2-0-twice-the-goodness/#comments</comments>
		<pubDate>Sat, 12 May 2012 10:50:34 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1333</guid>
		<description><![CDATA[That&#8217;s right, it&#8217;s finally out! Thanks go out to all our contributors for the great work (there&#8217;s too many &#8212; see the shortlog!). The highlights of the release follow. Head over to the announcement or release notes for more details. Dynamic sample rate switching by Pierre-Louis Bossart: This makes PulseAudio even more power efficient. Jack [...]]]></description>
				<content:encoded><![CDATA[<p>That&#8217;s right, it&#8217;s finally out! Thanks go out to all our contributors for the great work (there&#8217;s too many &#8212; see the shortlog!). The highlights of the release follow. Head over to the <a href="http://lists.freedesktop.org/archives/pulseaudio-discuss/2012-May/013538.html">announcement</a> or <a href="http://www.freedesktop.org/wiki/Software/PulseAudio/Notes/2.0">release notes</a> for more details.</p>

<ul>
<li><p>Dynamic sample rate switching by Pierre-Louis Bossart: This makes PulseAudio even more power efficient.</p></li>
<li><p>Jack detection by David Henningsson: Separate volumes for your laptop speakers and headphones, and more stuff coming soon.</p></li>
<li><p>Major echo canceller improvements by me: Based on the <tt>WebRTC.org</tt> audio processing library, we now do better echo cancellation, remove the need to fiddle with the mic volume knob and have fixed <acronym title="Acoustic Echo Cancellation">AEC</acronym> between laptop speakers and a USB webcam mic.</p></li>
<li><p>A virtual surround module by Niels Ole Salscheider: Try it out for some virtual surround sound shininess!</p></li>
<li><p>Support for Xen guests by Giorgos Boutsiouki: Should make audio virtualisation in guests more efficient.</p></li>
</ul>

<p><a href="http://arunraghavan.net/wp-content/uploads/pa-releases.jpg"><img src="http://arunraghavan.net/wp-content/uploads/pa-releases-239x300.jpg" alt="We don&#039;t always make a release, but when we do, it&#039;s awesome" title="pa-releases" width="239" height="300" class="aligncenter size-medium wp-image-1334" /></a></p>

<p>Special thanks from me to <a href="http://www.collabora.com/projects/pulseaudio/">Collabora</a> for giving me some time for upstream work.</p>

<p>Packages are available on Gentoo, Arch, and probably soon on other distributions if they&#8217;re not already there.</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/05/pulseaudio-2-0-twice-the-goodness/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Androidifying your autotools build the easy way</title>
		<link>http://arunraghavan.net/2012/05/androidifying-your-autotools-build-the-easy-way/</link>
		<comments>http://arunraghavan.net/2012/05/androidifying-your-autotools-build-the-easy-way/#comments</comments>
		<pubDate>Tue, 01 May 2012 19:48:15 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[pulseaudio]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1329</guid>
		<description><![CDATA[Derek Foreman has finally written up a nice blog post about his Androgenizer tool, which we&#8217;ve used for porting PulseAudio, GStreamer, Wayland, Telepathy and most of their dependencies to Android. If you&#8217;ve got an autotools-based project that you&#8217;d like to build on Android, whether on the NDK or system-wide this is really useful.]]></description>
				<content:encoded><![CDATA[<p><a href="http://derekforeman.blogspot.ca/">Derek Foreman</a> has finally written up a nice blog post about his <a href="http://cgit.collabora.com/git/android/androgenizer.git/tree/README.txt">Androgenizer</a> tool, which we&#8217;ve used for porting PulseAudio, GStreamer, Wayland, Telepathy and most of their dependencies to Android.</p>

<p>If you&#8217;ve got an autotools-based project that you&#8217;d like to build on Android, whether on the NDK or system-wide this is <em>really</em> useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/05/androidifying-your-autotools-build-the-easy-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PulseAudio on Android: Part 2</title>
		<link>http://arunraghavan.net/2012/04/pulseaudio-on-android-part-2/</link>
		<comments>http://arunraghavan.net/2012/04/pulseaudio-on-android-part-2/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 10:35:27 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[pulseaudio]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1300</guid>
		<description><![CDATA[Some of you might&#8217;ve noticed that there has been a bunch of work happening here at Collabora on making cool open source technologies such as GStreamer, Telepathy, Wayland and of course, PulseAudio available on Android. Since my last blog post on this subject, I got some time to start looking at replacing AudioFlinger (recap: that&#8217;s [...]]]></description>
				<content:encoded><![CDATA[<p>Some of you might&#8217;ve noticed that there has been a bunch of work happening here at <a href="http://www.collabora.com/services/android/">Collabora</a> on making cool open source technologies such as <a href="http://gstreamer.freedesktop.org/modules/gst-android.html">GStreamer</a>, Telepathy, <a href="http://ppaalanen.blogspot.in/2012/04/first-light-from-weston-on-android.html">Wayland</a> and of course, <a href="http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/">PulseAudio</a> available on Android.</p>

<p>Since my last blog post on this subject, I got some time to start looking at replacing AudioFlinger (recap: that&#8217;s Android&#8217;s native audio subsystem) with PulseAudio (recap: that&#8217;s the awesome Linux audio subsystem). This work can be broken up into 3 parts: playback, capture, and policy. The roles of playback and capture are obvious. For those who aren&#8217;t aware of system internals, the policy bits take care of audio routing, volumes, and other such things. For example, audio should play out of your headphones if they&#8217;re plugged in, off Bluetooth if you&#8217;ve got a headset paired, or the speakers if nothing&#8217;s plugged in. Also, depending on the device, the output volume might change based on the current output path.</p>

<p>I started by looking at solving the playback problem first. I&#8217;ve got the first 80% of this done (as we all know, the second 80% takes at least as long ;) ). This is done by replacing the native <tt>AudioTrack</tt> playback API with a simple wrapper that translates into the <tt>libpulse</tt> PulseAudio client API. There&#8217;s bits of the API that seem to be rarely used(loops and markers, primarily), and I&#8217;ve not gotten around to those yet. Basic playback works quite well, and here&#8217;s a video showing this. (<em>Note: this and the next video will be served with yummy HTML5 goodness if you enabled the <a href="http://youtube.com/html5">YouTube HTML5 beta</a></em>).</p>

<iframe class="youtube-player" type="text/html" width="480" height="274" src="http://www.youtube.com/embed/h9fxmOaW2Bw" frameborder="0" allowfullscreen></iframe>

<p>(if the video doesn&#8217;t appear, you can <a href="http://www.youtube.com/watch?v=h9fxmOaW2Bw">watch it on YouTube</a>)</p>

<p>Users of PulseAudio might have spotted that this now frees us up to do some fairly nifty things. One such thing is getting remote playback for free. For a long time now, there has been support for streaming audio between devices running PulseAudio. I wrote up a quick app to show this working on the Galaxy Nexus as well. Again, seeing this working is a lot more impressive than me describing it here, so here&#8217;s another video:</p>

<iframe class="youtube-player" type="text/html" width="480" height="274" src="http://www.youtube.com/embed/o5-phFVfZnQ" frameborder="0" allowfullscreen></iframe>

<p>(if the video doesn&#8217;t appear, you can <a href="http://www.youtube.com/watch?v=o5-phFVfZnQ">watch it on YouTube</a>)</p>

<p>This is all clearly work in progress, but you can find the code for the AudioTrack wrapper as <a href="http://people.collabora.com/~arun/android/frameworks-base-0001-First-stab-at-a-libpulse-based-AudioTrack-API.patch">a patch</a> for now. This will be a properly integrated tree that you can just pull and easily integrate into your Android build when it&#8217;s done. The PA Output Switcher app code is also available in <a href="http://cgit.collabora.com/git/user/arun/pa-output-switcher.git">a git repository</a>.</p>

<p>I&#8217;m hoping to be able to continue hacking on the capture and policy bits. The latter, especially, promises to be involved, since there isn&#8217;t always a 1:1 mapping between AudioFlinger and PulseAudio concepts. Nothing insurmountable, though. :) Watch this space for more updates as I wade through the next bit.</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/04/pulseaudio-on-android-part-2/feed/</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
		<item>
		<title>PulseAudio in Google Summer of Code 2012</title>
		<link>http://arunraghavan.net/2012/04/pulseaudio-in-google-summer-of-code-2012/</link>
		<comments>http://arunraghavan.net/2012/04/pulseaudio-in-google-summer-of-code-2012/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 12:27:43 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[pulseaudio]]></category>
		<category><![CDATA[soc]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1297</guid>
		<description><![CDATA[If you&#8217;re a student participating in this year&#8217;s edition of Google Summer of Code and want to get your hands dirty with some fun low-level hacking, here&#8217;s a quick reminder that PulseAudio is a participating organisation for the first time, and we have some nice ideas for you to hack on. The deadline for applications [...]]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;re a student participating in this year&#8217;s edition of Google Summer of Code and want to get your hands dirty with some fun low-level hacking, here&#8217;s a quick reminder that PulseAudio is a participating organisation for the first time, and we have some <a href="http://www.freedesktop.org/wiki/Software/PulseAudio/GSoC2012">nice ideas</a> for you to hack on.</p>

<p>The deadline for applications is 2 days away, so get those applications in soon! If you&#8217;ve got questions, feel free to drop by #pulseaudio on the Freenode IRC network and ping us. (I&#8217;m <tt>Ford_Prefect</tt> there for those who don&#8217;t know)</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/04/pulseaudio-in-google-summer-of-code-2012/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Gentoo: PulseAudio + ALSA update</title>
		<link>http://arunraghavan.net/2012/02/gentoo-pulseaudio-alsa-update/</link>
		<comments>http://arunraghavan.net/2012/02/gentoo-pulseaudio-alsa-update/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 05:01:27 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1274</guid>
		<description><![CDATA[For a long time now, fellow-Gentoo&#8217;ers have had to edit /etc/asound.conf or ~/.asoundrc to make programs that talk directly to ALSA go through PulseAudio. Most other distributions ship configuration that automatically probes to see if PulseAudio is running and use that if avaialble, else fall back to the actual hardware. We did that too, but [...]]]></description>
				<content:encoded><![CDATA[<p>For a long time now, fellow-Gentoo&#8217;ers have had to edit <tt>/etc/asound.conf</tt> or <tt>~/.asoundrc</tt> to make programs that talk directly to ALSA go through PulseAudio. Most other distributions ship configuration that automatically probes to see if PulseAudio is running and use that if avaialble, else fall back to the actual hardware. We did that too, but the configuration wasn&#8217;t used, and when you did try to use it, broke in mysterious ways.</p>

<p>I finally got around to actually figuring out the problem and fixing it, so if you have custom configuration to do all this, you should now be able to remove it after emerge&#8217;ing <tt>media-plugins/alsa-plugins-1.0.25-r1</tt> or later with the <tt>pulseaudio</tt> USE flag. With the next PulseAudio bump, we&#8217;ll be depending on this to make the out-of-the-box experience a lot more seamless.</p>

<p>This took much longer to get done than it should have, but we&#8217;ve finally caught up. :)</p>

<p><em>[Props to Mart Raudsepp (leio) for prodding me into doing this.]</em></p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/02/gentoo-pulseaudio-alsa-update/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>PulseAudio vs. AudioFlinger: Fight!</title>
		<link>http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/</link>
		<comments>http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 12:22:30 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pulseaudio]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1189</guid>
		<description><![CDATA[I&#8217;ve been meaning to try this for a while, and we&#8217;ve heard a number of requests from the community as well. Recently, I got some time here at Collabora to give it a go &#8212; that is, to get PulseAudio running on an Android device and see how it compares with Android&#8217;s AudioFlinger. The Contenders [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been meaning to try this for a while, and we&#8217;ve heard a number of requests from the community as well. Recently, I got some time here at <a href="http://www.collabora.com/projects/pulseaudio">Collabora</a> to give it a go &#8212; that is, to get PulseAudio running on an Android device and see how it compares with Android&#8217;s AudioFlinger.</p>

<h2>The Contenders</h2>

<p>Let&#8217;s introduce our contenders first. For those who don&#8217;t know, <a href="http://pulseaudio.org/">PulseAudio</a> is pretty much a de-facto standard part of the Linux audio stack. It sits on top of <acronym title="Advanced Linux Sound Architecture">ALSA</acronym> which provides a unified way to talk to the audio hardware and provides a number of handy features that are useful on desktops and embedded devices. I won&#8217;t rehash all of these, but this includes a nice modular framework, a bunch of power saving features, flexible routing, and lots more. PulseAudio runs as a daemon, and clients usually use the <tt>libpulse</tt> library to communicate with it.</p>

<p>In the other corner, we have Android&#8217;s native audio system &#8212; AudioFlinger. AudioFlinger was written from scratch for Android. It provides an API for playback/recording as well as a control mechanism for implementing policy. It does not depend on ALSA, but instead allows for a sort of <acronym title="Hardware Abstraction Layer">HAL</acronym> that vendors can implement any way they choose. Applications generally play audio via layers built on top of AudioFlinger. Even if you write a native application, it would use <a href="http://www.khronos.org/opensles/">OpenSL ES</a> implementation which goes through AudioFlinger. The actual service runs as a thread of the <tt>mediaserver</tt> daemon, but this is merely an implementation detail.</p>

<p><em>Note: all my comments about AudioFlinger and Android in general are based on documentation and code for Android 4.0 (Ice Cream Sandwich).</em></p>

<h2>The Arena</h2>

<p>My test-bed for the tests was the <a href="http://en.wikipedia.org/wiki/Galaxy_Nexus">Galaxy Nexus</a> running Android 4.0 which we shall just abbreviate to ICS. I picked ICS since it is the current platform on which Google is building, and hopefully represents the latest and greatest in AudioFlinger development. The Galaxy Nexus runs a Texas Instruments OMAP4 processor, which is also really convenient since this chip has pretty good support for running stock Linux (read on to see how useful this was).</p>

<h2>Preparations</h2>

<p>The first step in getting PulseAudio on Android was deciding between using the Android <acronym title="Native Development Kit">NDK</acronym> like a regular application or integrate into the base Android system. I chose the latter &#8212; even though this was a little more work initially, it made more sense in the long run since PulseAudio really belongs to the base-system.</p>

<p>The next task was to get the required dependencies ported to Android. Fortunately, a lot of the ground work for this was already done by some of the awesome folks at Collabora. Derek Foreman&#8217;s <a href="http://cgit.collabora.com/git/user/derek/androgenizer.git/"><tt>androgenizer</tt></a> tool is incredibly handy for converting an <tt>autotools</tt>-based build to Android&#8211;friendly makefiles. With Reynaldo Verdejo and Alessandro Decina&#8217;s prior work on <a href="http://gstreamer.freedesktop.org/modules/gst-android.html">GStreamer for Android</a> as a reference, things got even easier.</p>

<p>The most painful bit was <tt>libltdl</tt>, which we use for dynamically loading modules. Once this was done, the other dependencies were quite straightforward to port over. As a bonus, the Android source already ships an optimised version of Speex which we use for resampling, and it was easy to reuse this as well.</p>

<p>As I mentioned earlier, vendors can choose how they implement their audio abstraction layer. On the Galaxy Nexus, this is built on top of standard ALSA drivers, and the HAL talks to the drivers via a minimalist <a href="https://github.com/tinyalsa">tinyalsa</a> library. My first hope was to use this, but there was a whole bunch of functions missing that PulseAudio needed. The next approach was to use <a href="http://www.alsa-project.org/main/index.php/SALSA-Library">salsa-lib</a>, which is a stripped down version of the ALSA library written for embedded devices. This too had some missing functions, but these were fewer and easy to implement (and are now <a href="http://git.kernel.org/?p=linux/kernel/git/tiwai/salsa-lib.git;a=commit;h=8485a2bdc725b531794f277cd3e37973a8524830">upstream</a>).</p>

<p>Now if only life were that simple. :) I got PulseAudio running on the Galaxy Nexus with <tt>salsa-lib</tt>, and even got sound out of the HDMI port. Nothing from the speakers though (they&#8217;re driven by a TI <a href="http://www.ti.com/product/twl6040">twl6040</a> codec). Just to verify, I decided to port the full <tt>alsa-lib</tt> and <tt>alsa-utils</tt> packages to debug what&#8217;s happening (by this time, I&#8217;m familiar enough with <tt>androgenizer</tt> for all this to be a breeze). Still no luck. Finally, with some pointers from the kind folks at TI (thanks Liam!), I got current <acronym title="Use Case Manager">UCM</acronym> configuration files for OMAP4 boards, and some work-in-progress patches to add UCM support to PulseAudio, and after a couple of minor fixes, wham! We have output. :)</p>

<p><em>(For those who don&#8217;t know about UCM &#8212; embedded chips are quite different from desktops and expose a huge amount of functionality via ALSA mixer controls. UCM is an effort to have a standard, meaningful way for applications and users to use these.)</em></p>

<p>In production, it might be handy to write light-weight UCM support for <tt>salsa-lib</tt> or just convert the UCM configuration into PulseAudio path/profile configuration (bonus points if it&#8217;s an automated tool). For our purposes, though, just using <tt>alsa-lib</tt> is good enough.</p>

<p>To make the comparison fair, I wrote a simple test program that reads raw PCM S16LE data from a file and plays it via the <tt>AudioTrack</tt> interface provided by AudioFlinger or the PulseAudio <a href="http://freedesktop.org/software/pulseaudio/doxygen/async.html">Asynchronous API</a>. Tests were run with the brightness fixed, wifi off, and USB port connected to my laptop (for adb shell access).</p>

<p>All tests were run with the CPU frequency pegged at 350 MHz and with 44.1 and 48 kHz samples. Five readings were recorded, and the median value was finally taken.</p>

<h2>Round 1: CPU</h2>

<p>First, let&#8217;s take a look at how the two compare in terms of CPU usage. The numbers below are the percentage CPU usage taken as the sum of all threads of the audio server process and the audio thread in the client application using <tt>top</tt> (which is why the granularity is limited to an integer percentage).</p>

<table>
<colgroup span="2"/>
<colgroup span="2"/>
<tr> <th colspan="2">44.1 kHz</th> <th colspan="2">48 kHz</th> </tr>
<tr> <th>AF</th> <th>PA</th> <th>AF</th> <th>PA</th> </tr>
<tr> <td>1%</td> <td>1%</td> <td>2%</td> <td>0%</td> </tr>
</table>

<p>At 44.1 kHz, the two are essentially the same. Both cases are causing resampling to occur (the native sample rate for the device is 48 kHz). Resampling is done using the Speex library, and we&#8217;re seeing minuscule amounts of CPU usage even at 350 MHz, so it&#8217;s clear that the NEON optimisations are really paying off here.</p>

<p>The astute reader would have noticed that since the device&#8217; native sample rate is 48 kHz, the CPU usage for 48 kHz playback should be less than for 44.1 kHz. This is true with PulseAudio, but not with AudioFlinger! The reason for this little quirk is that AudioFlinger provides 44.1 kHz samples to the HAL (which means the stream is resampled there), and then the HAL needs to resample it again to 48 kHz to bring it to the device&#8217; native rate. From what I can tell, this is a matter of convention with regards to what audio HALs should expect from AudioFlinger (do correct me if I&#8217;m mistaken about the rationale).</p>

<p>So round 1 leans slightly in favour of PulseAudio.</p>

<h2>Round 2: Memory</h2>

<p>Comparing the memory consumption of the server process is a bit meaningless, because the AudioFlinger daemon thread shares an address space with the rest of the <tt>mediaserver</tt> process. For the curious, the resident set size was: AudioFlinger &#8212; 6,796 KB, PulseAudio &#8212; 3,024 KB. Again, this doesn&#8217;t really mean much.</p>

<p>We can, however, compare the client process&#8217; memory consumption. This is <acronym title="Resident Set Size">RSS</acronym> in kilobytes, measured using <tt>top</tt>.</p>

<table>
<colgroup span="2"/>
<colgroup span="2"/>
<tr> <th colspan="2">44.1 kHz</th> <th colspan="2">48 kHz</th> </tr>
<tr> <th>AF</th> <th>PA</th> <th>AF</th> <th>PA</th> </tr>
<tr> <td>2600 kB</td> <td>3020 kB</td> <td>2604 kB</td> <td>3020 kB</td> </tr>
</table>

<p>The memory consumption is comparable between the two, but leans in favour of AudioFlinger.</p>

<h2>Round 3: Power</h2>

<p>I didn&#8217;t have access to a power monitor, so I decided to use a couple of indirect metrics to compare power utilisation. The first of these is <a href="http://www.lesswatts.org/projects/powertop/">PowerTOP</a>, which is actually a Linux desktop tool for monitoring various power metrics. Happily, someone had already <a href="https://gitorious.org/android/powertop">ported PowerTOP to Android</a>. The tool reports, among other things, the number of wakeups-from-idle per second for the processor as a whole, and on a per-process basis. Since there are multiple threads involved, and PowerTOP&#8217;s per-process measurements are somewhat cryptic to add up, I used the global wakeups-from-idle per second. The &#8220;Idle&#8221; value counts the number of wakeups when nothing is happening. The actual value is very likely so high because the device is connected to my laptop in USB debugging mode (lots of wakeups from USB, and the device is prevented from going into a full sleep).</p>

<table>
<colgroup span="1"/>
<colgroup span="2"/>
<colgroup span="2"/>
<tr> <th></th> <th colspan="2">44.1 kHz</th> <th colspan="2">48 kHz</th> </tr>
<tr> <th>Idle</th> <th>AF</th> <th>PA</th> <th>AF</th> <th>PA</th> </tr>
<tr> <td>79.6</td> <td>107.8</td> <td>87.3</td> <td>108.5</td> <td>85.7</td> </tr>
</table>

<p>The second, similar, data point is the number of interrupts per second reported by <tt>vmstat</tt>. These corroborate the numbers above:</p>

<table>
<colgroup span="1"/>
<colgroup span="2"/>
<colgroup span="2"/>
<tr> <th></th> <th colspan="2">44.1 kHz</th> <th colspan="2">48 kHz</th> </tr>
<tr> <th>Idle</th> <th>AF</th> <th>PA</th> <th>AF</th> <th>PA</th> </tr>
<tr> <td>190</td> <td>266</td> <td>215</td> <td>284</td> <td>207</td> </tr>
</table>

<p>PulseAudio&#8217;s power-saving features are clearly highlighted in this comparison. AudioFlinger causes <em>about three times the number of wakeups per second</em> that PulseAudio does. Things might actually be worse on older hardware with less optimised drivers than the Galaxy Nexus (I&#8217;d appreciate reports from running similar tests on a Nexus S or any other device with ALSA support to confirm this).</p>

<p>For those of you who aren&#8217;t familiar with PulseAudio, the reason we manage to get these savings is our timer-based scheduling mode. In this mode, we fill up the hardware buffer as much as possible and go to sleep (disabling ALSA interrupts while we&#8217;re at it, if possibe). We only wake up when the buffer is nearing empty, and fill it up again. More details can be found in this old <a href="http://0pointer.de/blog/projects/pulse-glitch-free.html">blog post by Lennart</a>.</p>

<h2>Round 4: Latency</h2>

<p>I&#8217;ve only had the Galaxy Nexus to actually try this out with, but I&#8217;m pretty certain I&#8217;m not the only person seeing <a href="http://code.google.com/p/android/issues/detail?id=3434">latency issues on Android</a>. On the Galaxy Nexus, for example, the best latency I can get appears to be 176 ms. This is pretty high for certain types of applications, particularly ones that generate tones based on user input.</p>

<p>With PulseAudio, where we dynamically adjust buffering based on what clients request, I was able to drive down the total buffering to approximately 20 ms (too much lower, and we started getting dropouts). There is likely room for improvement here, and it is something on my todo list, but even out-of-the-box, we&#8217;re doing quite well.</p>

<h2>Round 5: Features</h2>

<p>With the hard numbers out of the way, I&#8217;d like to talk a little bit about what else PulseAudio brings to the table. In addition to a playback/record API, AudioFlinger provides mechanism for enforcing various bits of policy such as volumes and setting the &#8220;active&#8221; device amongst others. PulseAudio exposes similar functionality, some as part of the client API and the rest via the core API exposed to modules.</p>

<p>From <acronym title="System-on-Chip">SoC</acronym> vendors&#8217; perspective, it is often necessary to support both Android and standard Linux on the same chip. Being able to focus only on good quality ALSA drivers and knowing that this will ensure quality on both these systems would be a definite advantage in this case.</p>

<p>The current Android system leaves power management to the audio HAL. This means that each vendor needs to implement this themselves. Letting PulseAudio manage the hardware based on requested latencies and policy gives us a single point of control, greatly simplifying the task of power-management and avoiding code duplication.</p>

<p>There are a number of features that PulseAudio provides that can be useful in the various scenarios where Android is used. For example, we support transparently streaming audio over the network, which could be a handy way of supporting playing audio from your phone on your TV completely transparently and out-of-the-box. We also support compressed formats (AC3, DTS, etc.) which the ongoing Android-on-your-TV efforts could likely take advantage of.</p>

<p><em>Edit: As someone pointed out on LWN, I missed one thing &#8212; AudioFlinger has an effect API that we do not yet have in PulseAudio. It&#8217;s something I&#8217;d definitely like to see added to PulseAudio in the future.</em></p>

<h2>Ding! Ding! Ding!</h2>

<p>That pretty much concludes the comparison of these two audio daemons. Since the Android-side code is somewhat under-documented, I&#8217;d welcome comments from readers who are familiar with the code and history of AudioFlinger.</p>

<p>I&#8217;m in the process of pushing all the patches I&#8217;ve had to write to the various upstream projects. A number of these are merely build system patches to integrate with the Android build system, and I&#8217;m hoping projects are open to these. Instructions on building this code will be available on the <a href="http://www.pulseaudio.org/wiki/Android">PulseAudio Android wiki page</a>.</p>

<p>For future work, it would be interesting to write a wrapper on top of PulseAudio that exposes the AudioFlinger audio and policy APIs &#8212; this would basically let us run PulseAudio as a drop-in AudioFlinger replacement. In addition, there are potential performance benefits that can be derived from using Android-specific infrastructure such as Binder (for <acronym title="Inter-Process Communication">IPC</acronym>) and <tt>ashmem</tt> (for transferring audio blocks as shared memory segments, something we support on desktops using the standard Linux SHM mechanism which is not available on Android).</p>

<p>If you&#8217;re an OEM who is interested in this work, you can get in touch with us &#8212; details are on the <a href="http://www.collabora.com/contact/">Collabora website</a>.</p>

<p>I hope this is useful to some of you out there!</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/feed/</wfw:commentRss>
		<slash:comments>77</slash:comments>
		</item>
		<item>
		<title>Talk video from GstConf 2011</title>
		<link>http://arunraghavan.net/2011/11/talk-video-from-gstconf-2011/</link>
		<comments>http://arunraghavan.net/2011/11/talk-video-from-gstconf-2011/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 13:50:43 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1182</guid>
		<description><![CDATA[For those of you who were interested but couldn&#8217;t make it to the GStreamer Conference this year, the cool folks at Ubicast have got the talk videos up (can be streamed or downloaded). Among these is my talk about recent developments in the PulseAudio world.]]></description>
				<content:encoded><![CDATA[<p>For those of you who were interested but couldn&#8217;t make it to the GStreamer Conference this year, the cool folks at Ubicast have got the <a href="http://gstconf.ubicast.tv/channels/#conferences2011">talk videos up</a> (can be streamed or downloaded).</p>

<p>Among these is <a href="http://gstconf.ubicast.tv/videos/latest-developments-in-pulse-audio/">my talk</a> about recent developments in the PulseAudio world.</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2011/11/talk-video-from-gstconf-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>i&#8217;m in yur analog gain, controlling it</title>
		<link>http://arunraghavan.net/2011/11/im-in-yur-analog-gain-controlling-it/</link>
		<comments>http://arunraghavan.net/2011/11/im-in-yur-analog-gain-controlling-it/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 19:13:00 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[pulseaudio]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1169</guid>
		<description><![CDATA[Longish day, but I did want to post something fun before going to sleep &#8212; I just pushed out patches to hook up the WebRTC folks&#8217; analog gain control to PulseAudio. So your mic will automatically adjust the input level based on how loud you&#8217;re speaking. It&#8217;s quite quick to adapt if you&#8217;re too loud, [...]]]></description>
				<content:encoded><![CDATA[<p>Longish day, but I did want to post something fun before going to sleep &#8212; I just pushed out patches to hook up the WebRTC folks&#8217; analog gain control to PulseAudio. So your mic will automatically adjust the input level based on how loud you&#8217;re speaking. It&#8217;s quite quick to adapt if you&#8217;re too loud, but a bit slow when the input signal is too soft. This isn&#8217;t bad, since the former is a much bigger problem than the latter.</p>

<p>Also, we&#8217;ve switched to the WebRTC canceller as the default canceller (you can still choose the Speex canceller manually, though). Overall, the quality is pretty good. I&#8217;d do a demo, but it&#8217;s effectively had zero learning time in my tests, so we&#8217;re not too far from a stage where this is a feature that, <em>if we&#8217;re doing it right you won&#8217;t notice it exists</em>.</p>

<p>There lot&#8217;s of things, big and small that need to be added and tweaked, but this does go some way towards bringing a hassle-free VoIP experience on Linux closer to reality. Once again, kudos to the folks at Google for the great work and for opening up this code. Also a shout-out to fellow <a href="http://www.collabora.com">Collaboran</a> <a href="http://sjoerd.luon.net/blog/">Sjoerd Simons</a> for bouncing ideas and giving me those much-needed respites from talking to myself. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2011/11/im-in-yur-analog-gain-controlling-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Notes from the Prague Audio BoFs</title>
		<link>http://arunraghavan.net/2011/11/notes-from-the-prague-audio-bofs/</link>
		<comments>http://arunraghavan.net/2011/11/notes-from-the-prague-audio-bofs/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 07:06:13 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1123</guid>
		<description><![CDATA[As I&#8217;d blogged about last week, we had a couple of Audio BoF sessions last week. Here&#8217;s a summary of what was discussed. I&#8217;ve collected items in relevance order rather than chronological order to make for easier reading. I think I have everything covered, I&#8217;ll update this post if one of the attendees points out [...]]]></description>
				<content:encoded><![CDATA[<p>As I&#8217;d blogged about last week, we had a couple of Audio <acronym title="Birds of a Feather">BoF</acronym> sessions last week. Here&#8217;s a summary of what was discussed. I&#8217;ve collected items in relevance order rather than chronological order to make for easier reading. I think I have everything covered, I&#8217;ll update this post if one of the attendees points out something I missed or got wrong.</p>

<ul>
<li><p><strong>Surround</strong>: There were a number of topics that came up with regards to multichannel/surround support:</p>

<ul>
<li><p>There seems to be some lack of uniformity of channel maps, particularly in non-HDA hardware. While it was agreed that this should be fixed, we need some directed testing and bug reports to actually be able to fix this.</p></li>
<li><p>Multichannel mixers, while theoretically supported, are not actually exposed by any current drivers. It was suggested that these could be exposed without breaking existing applications by having new MC mixers exposed with device names corresponding to the surround PCM device (like &#8220;surround51&#8243;).</p></li>
<li><p>We need a way to query channel maps on a given PCM. This will be implemented as a new ALSA API which could be called after the PCM is opened. (<em>AI: Takashi</em>)</p></li>
<li><p>It would be good to have a way to configure the channel map as well (if supported by the hardware?). The suggestion was to do this as was done in PulseAudio, where an arbitrary channel map could be specified. (NB: is there hardware that supports multiple/arbitrary channel maps? If yes, how do we handle this?)</p></li>
</ul></li>
<li><p><strong>Routing</strong>: Unsurprisingly, we came back to the problem of building a simplified mixer graph for PulseAudio.</p>

<ul>
<li><p>The current status is that ALSA builds a simplified mixer for use by userspace, and PulseAudio further simplifies this by means of some name-based guessing.</p></li>
<li><p>PulseAudio would ideally like a simplified version of the original mixer graph, but something more complete than what we get now</p></li>
<li><p>However, since PulseAudio has fairly unique requirements of what information it wants, it probably makes sense to have ALSA provide the entire graph and leave the simplification task to PulseAudio (discussion on this approach continues)</p></li>
<li><p>There was no consensus on who would do this or how this should be done (creating a new serialisation format, exposing what HDA provides, adding node metadata to ALSA mixer controls, or something else altogether)</p></li>
<li><p>As an interim step, it was agreed that it would be possible to provide ordering in the simplified ALSA mixer (that is, add metadata to the control to signal what control comes &#8220;before&#8221; it and what comes &#8220;after&#8221; it). This should go some way in making the PA mixer simplification logic simpler and more robust. (<em>AI: Takashi</em>)</p></li>
</ul></li>
<li><p><strong>HDMI</strong>: A couple of things came up in discussion about the status of HDMI.</p>

<ul>
<li><p>There was a question about the reliability of <acronym title="EDID-like data">ELD</acronym> information as this will be used more in future versions of PulseAudio. There did not appear to be conclusive evidence in either direction, so we will probably assume that it is reliable and deal with reliability problems as they arise.</p></li>
<li><p>It was mentioned that it might be desirable to only expose the ALSA device if a receiver is plugged in. This had been mooted earlier as something to do in PulseAudio as an alternative. One thing to consider with this approach is dealing with a device switch on the receiver side. Doing this without a notification to userspace was generally agreed to be a bad idea.</p></li>
</ul></li>
<li><p><strong>Jack detection</strong>: The long-standing debate on exposing jacks as input devices or ALSA controls came to a conclusion, with the resolution being that jacks would be exposed as ALSA controls. This requires a change in the kernel (and potentially alsa-lib?) which should not be too complex. Actual buttons (such as volume/mute control) will continue to be input devices. Once this is done, the pending jack detection patches will be adapted to use the new interface. (<em>AI: Takashi (patches are in a branch already!), David</em>)</p></li>
<li><p><strong>UCM</strong>: Another long-standing issue was the merging of the ALSA UCM patches into PulseAudio. Most of the problems thus far had been due to an incomplete understanding of how ALSA and PA concepts mapped to each other. Some consensus was arrived at in this regard after a lengthy discussion:</p>

<ul>
<li><p>As is the case now, every ALSA PCM maps to a PA sink</p></li>
<li><p>Each UCM verb maps to a PA card profile</p></li>
<li><p>Each combination of UCM devices that can be used concurrently maps to a PA port</p></li>
<li><p>Each UCM modifier is mapped to an intended role on the corresponding sink</p></li>
</ul>

<p>The code should (as is in the patches currently submitted) be part of the PA ALSA module, and there will be changes required to use the UCM-specified mixer list instead of PA&#8217;s guessing mechanism. (<em>AI: ???</em>)</p>

<p>(NB: It was mentioned that PulseAudio needs to support multiple intended roles for a sink/source. This is actually already supported &#8212; the intended roles property is a whitespace-separated list of roles)</p>

<p>(NB2: There was further discussion with the Linaro folks this week about the UCM bits, and there&#8217;s likely going to be an IRC/phone gathering to clarify things further in the near future)</p></li>
<li><p><strong>GStreamer latency settings</strong>: We currently do not actually use PulseAudio&#8217;s power saving features from GStreamer for <a href="http://arunraghavan.net/2011/05/more-pulseaudio-power-goodness/">several reasons</a>. Suggestions to over come this were mooted. While no definite agreement was reached, one suggestion was to add a &#8220;powersave&#8221; profile to pulsesink that chose higher latency/buffer-time values. Players would need to set this if they are not using features that break when these values are raised.</p></li>
<li><p><strong>Corking</strong>: The statelessness of current the corking mechanism was discussed in one session, and between the PulseAudio developers later. The problem is that we need to be able to track cork/uncork reasons more closely. This would give us more metadata that is needed to make policy decisions without breaking streams. Particularly, for example, if PA corks a music stream due to an incoming call, then the user plays, then pauses music, and then the call ends, we must not uncork the music stream. We intend to deal with this with two changes:</p>

<ul>
<li><p>We need to add a per-cause cork/uncork request count</p></li>
<li><p>We need to associate a &#8220;generation&#8221; with cork/uncork requests, so certain conditions (such as user intervention) can bump the generation counter, and uncork requests corresponding to old cork requests will be ignored</p></li>
</ul>

<p>This will make it possible to track the various bits of state we need to do the right thing for cases like the one mentioned before.</p></li>
</ul>

<p>So that&#8217;s that &#8212; lots of things discussed, lots of things to do! Thanks to everyone who came for participating.</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2011/11/notes-from-the-prague-audio-bofs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PragueAudio</title>
		<link>http://arunraghavan.net/2011/10/pragueaudio/</link>
		<comments>http://arunraghavan.net/2011/10/pragueaudio/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 22:23:31 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1117</guid>
		<description><![CDATA[For those who are in Prague for GstConf, LinuxCon, ELCE, etc. &#8212; don&#8217;t forget we&#8217;ve a couple of interesting audio-related things happening: Today (Tuesday), at 4 pm, I&#8217;ll be talking about recent developments in PulseAudio Tomorrow (Wednesday), at 11am, we&#8217;re continuing the Audio BoF that I had mentioned earlier (since we ran out of time [...]]]></description>
				<content:encoded><![CDATA[<p>For those who are in Prague for GstConf, LinuxCon, ELCE, etc. &#8212; don&#8217;t forget we&#8217;ve a couple of interesting audio-related things happening:</p>

<ul>
<li>Today (Tuesday), at 4 pm, I&#8217;ll be talking about <a href="http://gstreamer.freedesktop.org/conference/speakers.html#raghavan">recent developments in PulseAudio</a></li>
<li>Tomorrow (Wednesday), at 11am, we&#8217;re continuing the Audio BoF that I had <a href="http://arunraghavan.net/2011/10/more-conferences-than-you-can-shake-a-stick-at/">mentioned earlier</a> (since we ran out of time on Sunday)</li>
</ul>

<p>If you&#8217;re around and interested, do drop in!</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2011/10/pragueaudio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PulseAudio 1.1 (the echo release?)</title>
		<link>http://arunraghavan.net/2011/10/pulseaudio-1-1-the-echo-release/</link>
		<comments>http://arunraghavan.net/2011/10/pulseaudio-1-1-the-echo-release/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 03:22:51 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1111</guid>
		<description><![CDATA[Yep, if we keep this up, it could even become a habit! PulseAudio 1.1 is out. It&#8217;s mostly a bunch of bug fixes on top of 1.0. Most important of these are fixes for: a libpulse dependency on libsamplerate (if enabled) which would make our LGPL license invalid, broken Skype audio capture (because we changed [...]]]></description>
				<content:encoded><![CDATA[<p>Yep, if we keep this up, it could even become a habit!</p>

<p>PulseAudio 1.1 is out. It&#8217;s mostly a bunch of bug fixes on top of 1.0. Most important of these are fixes for: a <tt>libpulse</tt> dependency on libsamplerate (if enabled) which would make our LGPL license invalid, broken Skype audio capture (because we changed from a 3 number version to 2 numbers), broken startup without a DBus session bus running, and not going crazy on USB disconnects.</p>

<p>This should be a very safe upgrade, so <a href="http://lists.freedesktop.org/archives/pulseaudio-discuss/2011-October/011898.html">grab it while it&#8217;s hot</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2011/10/pulseaudio-1-1-the-echo-release/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Alternate sample rates</title>
		<link>http://arunraghavan.net/2011/10/alternate-sample-rates/</link>
		<comments>http://arunraghavan.net/2011/10/alternate-sample-rates/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 04:34:35 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[pulseaudio]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1101</guid>
		<description><![CDATA[I&#8217;ve just pushed a bunch of patches by Pierre-Louis Bossart that can have a pretty decent CPU/power impact. These introduce the concept of an &#8220;alternate sample rate&#8221;. Currently, PulseAudio runs all your devices at a default sample rate, which is set to 44.1 kHz on most systems (this can be configured). All streams running at [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve just pushed a bunch of patches by Pierre-Louis Bossart that can have a pretty decent CPU/power impact. These introduce the concept of an &#8220;alternate sample rate&#8221;.</p>

<p>Currently, PulseAudio runs all your devices at a default sample rate, which is set to 44.1 kHz on most systems (this can be configured). All streams running at different sample rates are resampled to this sample rate. Pierre&#8217;s patches add an alternate sample rate that we try to switch to under certain circumstances if it means that we can save on resampling cost. This would happen if the stream uses exactly the alternate sample rate, or some integral-or-so multiple of it.</p>

<p>The default value for the alternate sample rate is 48 kHz. So if you&#8217;re playing a movie off a DVD where the audio track is typically a 48 kHz stream, and your card supports it, we switch to 48 kHz and avoid resampling altogether. Similarly, while making voice calls, common sample rates are 8, 16, and 32 kHz. These can be resampled to 48 kHz much faster than to 44.1 kHz.</p>

<p>Now for the big caveat &#8212; this won&#8217;t work if there&#8217;s any other stream connected to your sink/source. So if your music player is playing (or even paused) when you get that voip call, we can&#8217;t update the rate. This situation can probably be improved by at least allowing corked streams have their sample rate change (so having some random stream connected but not playing &#8212; I&#8217;m looking at you, Flash! &#8212; won&#8217;t block rate updates altogether). Hopefully we&#8217;ll get this fixed before this feature is released in PulseAudio 2.0.</p>

<p>Thanks to Pierre for all his work on this, and to my company, <a href="http://www.collabora.com/projects/pulseaudio">Collabora</a>, for giving me some time for upstream work!</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2011/10/alternate-sample-rates/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>More conferences than you can shake a stick at</title>
		<link>http://arunraghavan.net/2011/10/more-conferences-than-you-can-shake-a-stick-at/</link>
		<comments>http://arunraghavan.net/2011/10/more-conferences-than-you-can-shake-a-stick-at/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 04:34:26 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[pulseaudio]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1085</guid>
		<description><![CDATA[Prague is an interesting place to be at this time of the year &#8212; next week it&#8217;s playing host to the Real Time Linux Workshop. The week after that, we have the Kernel Summit, GStreamer Conference, Embedded Linux Conference Europe and LinuxCon Europe. I&#8217;m going to be at the last 3, and there&#8217;s some great [...]]]></description>
				<content:encoded><![CDATA[<p>Prague is an interesting place to be at this time of the year &#8212; next week it&#8217;s playing host to the Real Time Linux Workshop. The week after that, we have the Kernel Summit, GStreamer Conference, Embedded Linux Conference Europe and LinuxCon Europe. I&#8217;m going to be at the last 3, and there&#8217;s some great audio stuff happening!</p>

<p>On the evening of Oct 23rd, we&#8217;re having an Audio BoF to discuss pending issues that cut across the stack &#8212; ALSA, PulseAudio, GStreamer and any other similar bits that people have complaints about.</p>

<p>Then there&#8217;s <a href="http://gstreamer.freedesktop.org/conference/">GstConf</a>, where there are going to be <a href="http://gstreamer.freedesktop.org/conference/gstreamer-conference-timetable.html">a bunch of awesome talks</a>. Also included is a <a href="http://gstreamer.freedesktop.org/conference/speakers.html#raghavan">talk</a> by yours truly about recent developments in the PulseAudio world.</p>

<p>At some point during that week, possibly Oct 26th morning, plans are afoot to have an ALSA BoF to discuss the state and future of the HDA driver.</p>

<p>There are also rumours of excellent beer that will need to be scrupulously verified. ;)</p>

<p>It&#8217;s going to be a pretty exciting week!</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2011/10/more-conferences-than-you-can-shake-a-stick-at/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>1.w00t!</title>
		<link>http://arunraghavan.net/2011/09/1-w00t/</link>
		<comments>http://arunraghavan.net/2011/09/1-w00t/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 15:33:28 +0000</pubDate>
		<dc:creator>Arun</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[collabora]]></category>
		<category><![CDATA[f/oss]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[pulseaudio]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://arunraghavan.net/?p=1076</guid>
		<description><![CDATA[As Colin Guthrie reports, PulseAudio 1.0 is now out the door! There&#8217;s a lot of new things in the release, and we should be getting a much more regular release schedule going. Head over to the full release notes for more details. A lot of people have contributed to this release and thanks to them [...]]]></description>
				<content:encoded><![CDATA[<p>As <a href="http://colin.guthr.ie/2011/09/one-point-oh/">Colin Guthrie reports</a>, PulseAudio 1.0 is now out the door! There&#8217;s a lot of new things in the release, and we should be getting a much more regular release schedule going. Head over to the <a href="http://www.freedesktop.org/wiki/Software/PulseAudio/Notes/1.0">full release notes</a> for more details.</p>

<p>A lot of people have contributed to this release and thanks to them all. Special props to Colin all the patch-herding, tireless help, and code ninjutsu!</p>

<p>p.s.: Gentoo packages are already available, of course. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://arunraghavan.net/2011/09/1-w00t/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
