[pulseaudio-discuss] GSoC ideas

Tanu Kaskinen tanu.kaskinen at intel.com
Fri Apr 26 03:48:37 PDT 2013

On Fri, 2013-04-26 at 05:05 +0200, Alexander Couzens wrote:
> Hello,
> I would like to work on pulseaudio as gsoc student this year.
> Can you give me some feedback about my ideas, please?
> I'm working with pulse for a while and this is how I'm using it:
> -1-
> We have an announcements system at c-base my local hackerspace.
> It's a multi speaker setup based on OpenWrt and Ubuntu.
> - sender is a Ubuntu x86 system. it plays hourly time announcement +
> samples
> - receivers are mips32 based routers, arm systems, x86
> This system announce every hour. Got a tts + jsonrpc interface to play
> soundfiles.
> The receiver disappear from time to time. (module-tunnel-sink lacks a
> reconnect feature).
> Also in future this setup should support playing sounds on a random
> group of speakers.
> -2-
> I'm using it at home
> - remote home system: speakers connected to 1 pulseaudio server +
> laptop as sender
>  |- receiver announce themself via avahi/bonjour
>  |- sender: laptop use them as sink
> Pulseaudio should recognize your environment (how? or let the user
> choose which environment-profile apply). 
> Different locations, different audio setup. At work you want to move
> only mplayer/vlc/.. stream to 
> the remote sink. At home, maybe you want to move all streams over to a
> good amplifier.
> Playing video doesn't work reliable. Playing soundfiles works better,
> but not perfect.
> My ideas for a gsoc application:
> - Fix network sinks. Try to move a stream to network sink and back
> moments later it will run into problems.
>     e.g. mplayer just stop playing and hang. My job would be
> additional testing and fixing upcoming bugs in pulseaudio.

Making module-tunnel-sink reliable would be very welcome. Estimating the
amount of work is hard, though, when you don't know what exactly are the
root causes for the bugs, which makes writing the project plan hard too.

> - Implementing profiles for different environments. The user can
> define a profile for home, work, [...]. Main sink, group of sink
> (combine sinks)

I can imagine that there are many users who would benefit from this. We
plan to have major changes to how routing (and other) policy is handled,
and it's not clear to me yet what the end result will look like. Our
general goal is to make things Just Work with minimal (preferably zero)
user configuration, but I'd imagine that it wouldn't be a problem to
have the possibility to have support also for user-configurable sets of
static policy rules (which is what profiles are). I don't know Murphy[1]
well enough yet to be sure, but it might be better to implement such
profiles in Murphy.

I'm a bit hesitant about making this a GSoC project. We could have a
"profile module" based on the current routing system, but I'm not sure
that the module would be long-lived.

[1] https://01.org/murphy/

> - Classify streams to route them based on properties. Music streams
> should be routed to the
>    (remote) music sink, but system sounds should not.

Different routing based on the media.role property is already
implemented by module-stream-restore and works out-of-the box.

> - Missing gui for profiles and/or properties. New qtgui? or extend
> pavucontrol.
> - Simplified way for scripting pulseaudio and doing basic event
> handling. Normal (power) user should script their soundsystem.

I believe there's general agreement that we want Lua scripting in
PulseAudio. I think this would be a very good GSoC project.

> - authentication - add password based authentication. it can be either
> a password or a password to add your cookie to the authorized_cookies.
> Also a request + response system would be good. Implement it as popup

Authentication without encryption is very questionable security-wise.
Perhaps it's still useful, though? I would presume that in many cases
it's sufficient that it's not trivial for any random person to gain
access to the server and mess with things. The current cookie-based
authentication isn't any more secure anyway, so a password-based
authentication would just be a more convenient way to achieve roughly
the same level of security.

We could also discuss how to add encryption support to PulseAudio.

>  - 'Do you like to grant access to ...'. Extend the native protocol
> for this.
> - mod-tunnel should support multicast dynamic, but configurable. Mcast
> support of cheap APs(most DSL/Cable Routers) are limited to 1
> mbit/s(wifi broadcast rate, which also affects multicast) and most of
> them doesn't support IGMP.

module-tunnel-sink creates a local proxy for a remote sink. I don't
think it's a "tunnel" any more if you use multicast. If you need
multicast, we already have module-rtp-send, or if RTP isn't what you
want, a new module could be created. I'm generally very unenthusiastic
about multicast, though. I'm ignorant about the subject; I'm not aware
of any important use cases for multicast, so to me its purpose seems to
be just to make things difficult. Please educate me, why is multicast
important for any PulseAudio user?

> What would be suitable for a good application?

There were ideas for several summers :) I like the scripting support
idea the most, but feel free to pick anything that interests you.


Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki 
Business Identity Code: 0357606 - 4 
Domiciled in Helsinki 

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

More information about the pulseaudio-discuss mailing list