Re: [pulseaudio-discuss] GSoC ideas

2013-04-29 Thread Tanu Kaskinen
On Mon, 2013-04-29 at 12:35 +0200, David Henningsson wrote:
> On 04/29/2013 12:18 PM, Tanu Kaskinen wrote:
> > On Fri, 2013-04-26 at 16:40 +0200, David Henningsson wrote:
> >> I tried to google a bit for how long latency Wifi really has, and at
> >> least this [1] link points to a second or two not being too unusual.
> >>
> >> And seconds of latency is an annoyance even over Wifi.
> >
> > Sure, but I think it would still be in many cases better than occasional
> > drop-outs. To me TCP seems better than UDP for raw PCM data in pretty
> > much all cases, except when there is a hard requirement for an upper
> > limit in latency.
> 
> I admit that I don't know much about network latency, but my impression 
> is that we have different people who every now and then drop into our 
> IRC channel asking why there are several seconds of latency for a simple 
> network connection, and they are not happy with it.

Hmm, for some reason my impression is that the most common complaint is
that the audio is choppy if it works at all. I don't remember much
complaints about latency, except maybe someone has at some point
complained that when the audio starts to work, the latency is something
really crazy, tens of seconds (but my memory is really fuzzy about
that).

> >> Right. Then it sounds like an encrypted connection would make more
> >> sense, e g an ssh tunnel that would already cover for both passwords,
> >> keys and what not. However, if that means an additional ssh library to
> >> depend on...
> >
> > Can you clarify your position? It sounds like you're arguing for two
> > things:
> >
> >   * We should not implement password support before encryption support,
> > because they may not be completely orthogonal. For example, if we choose
> > SSH tunnels as the encryption solution, we may get password
> > authentication for free (I have doubts about that, but I don't know the
> > capabilities of SSH well enough to argue).
> >
> >   * We should never implement encryption, because that introduces a
> > dependency on a crypto library (implementing crypto ourselves is out of
> > question, I think we can agree that much).
> >
> > Those two statements are in conflict: if we will never implement
> > encryption, it doesn't make sense to argue that password authentication
> > should wait for encryption support. I probably misunderstood you.
> 
> Well; having given this a second or two of thought, I think the best 
> option would be if we had existing support outside PulseAudio. SSH 
> tunnels can be made by ssh without explicit support within PulseAudio. 
> It is also something long wanted to have ssh forwarding of the 
> PulseAudio protocol, just like the X protocol.

Can that work with auto-detected remote servers in a user-friendly way?
Let's say that you connect to a new network (imagine Alexander's
hackerspace network) with a remote server advertising PulseAudio
capability. It would be nice if pavucontrol showed that there's a remote
server available, but it requires a password before its services can be
used.

-- 
Tanu

-
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.
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] GSoC ideas

2013-04-29 Thread David Henningsson

On 04/27/2013 05:12 AM, Arun Raghavan wrote:

On Fri, 2013-04-26 at 16:40 +0200, David Henningsson wrote:
[...]

- 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.


Eh? I've never heard of adding Lua scripting before,


Hmm, it was discussed briefly in PulseConf (at downstairs, before the
event officially started). My recollection is that Janos brought up the
topic, and me and Arun ended up agreeing that it would be a good thing
to have (for example, it makes it easier for users to implement whatever
strange policies they may want to have). You apparently weren't present,
I'm not sure about Colin.

For what it's worth, I remember Lua scripting is also something that
Lennart wanted to do for a long time, but never got around to it.


and I'm very much
against adding yet another dependency to PulseAudio without a very very
VERY good reason.

That said; it looks like liblua 5.1 is part of ubuntu-desktop already,
so that particular dependency would not cause too much trouble in
desktop scenarios much, but it would still bloat embedded scenarios,
which is bad enough.


So make it an optional feature, problem solved?


Well, it depends. If we start to use Lua ourselves, and ship Lua scripts
as our recommended way to do something, it's optional in theory but not
in practice.


Or, to look at this from another angle - what's wrong with shell
scripting? What things are there that you can't do with shell scripting
today that Lua would solve?


Executing code synchronously in a hook is one thing that will never be
available via shell scripting.

That said, Alexander's original idea was "simplified way for scripting
pulseaudio and doing basic event handling". That doesn't necessarily
mean server-side scripting. I don't think we currently provide very nice
tools for client-side scripting either, so e.g. a Python library would
be one possible project.


It seems to me that in either case (client-side or server-side), this
should be provided as some type of C API, rather than messing with a
different language. Then people can implement their stuff in what
language they want (since C bindings are available for most common
languages).


Practically speaking, this does not work. You end up with a large set of
poorly supported bindings, instead of one really well-support language
(see: GNOME).


Well, that really well-supported language would be C, if that's what the 
API was in.
Also, we could make a C header that was clean enough for most of the 
auto-binding-generator tools to be able to process, if that helps.



I think having an embedded scripting language makes a lot of sense (Lua
is a popular choice for embedded interpreters because it's
light-weight). We repeatedly run into embedded cases where people need
to write their custom policy modules. Having a mechanism to script this
instead of writing C would make things easier.


I don't know Lua much, but for me it would definitely be harder, not 
easier, because


 1) I would have to learn a new language. And while learning the basics 
of a language is not that hard, finding and understanding all its quirks 
in its implementations is really time consuming (and that's what you 
need in order to track down bugs).


 2) I would have one more dependency on PulseAudio, that needs to be 
maintained, a potential source of bugs, version transitions, etc.


 3) There is always an efficiency cost when switching between 
languages, in this case, jumping back and forth between the Lua 
interpreter and the PulseAudio compiled code.


 4) If I write a module, I have access to the core and all sub-objects. 
We would typically choose some subset if we were to write some lua 
bindings. (If we were to do a stable C API for modules, that would 
probably also be some subset, so this argument is more a comparison to 
the current situation.)



--
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] GSoC ideas

2013-04-29 Thread David Henningsson

On 04/29/2013 12:18 PM, Tanu Kaskinen wrote:

On Fri, 2013-04-26 at 16:40 +0200, David Henningsson wrote:

On 04/26/2013 03:37 PM, Tanu Kaskinen wrote:

On Fri, 2013-04-26 at 14:54 +0200, David Henningsson wrote:

On 04/26/2013 12:48 PM, Tanu Kaskinen wrote:

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.


I'd like to see a rewrite of module-tunnel-sink to use the libpulse API
instead of doing the protocol stuff directly.


+1


...and in extension, perhaps a module-tunnel-detect that would load the
same amount of module-tunnel-cards, module-tunnel-sinks and
module-tunnel-sources as are present on the remote instance. But that is
just a wild idea at the moment.


I agree that this would be good. We don't currently have
module-tunnel-card, but we should. module-zeroconf-detect is already
used for detecting remote stuff, so I don't know if we need any new
module-tunnel-detect module.


Sure, if module-zeroconf-detect can be configured to follow a specific 
server, that would work. I haven't investigated the zeroconf stuff much.



I also think that wifi + TCP + low latency is a very hard thing to
achieve reliably. The question is if it is possible at all, and if not,
what the options are. Arun didn't seem very happy about improving RTP
support in PulseAudio.


At least one option should be to not insist on low latency (IIRC the
latency is now hardcoded to 150 ms). Streaming music over wifi has no
need for low latency.


I tried to google a bit for how long latency Wifi really has, and at
least this [1] link points to a second or two not being too unusual.

And seconds of latency is an annoyance even over Wifi.


Sure, but I think it would still be in many cases better than occasional
drop-outs. To me TCP seems better than UDP for raw PCM data in pretty
much all cases, except when there is a hard requirement for an upper
limit in latency.


I admit that I don't know much about network latency, but my impression 
is that we have different people who every now and then drop into our 
IRC channel asking why there are several seconds of latency for a simple 
network connection, and they are not happy with it.



- 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.


Somebody last year tried something popup-like, but it's not easy trying
to get that right with all Desktop Environments.

I'm not seeing the use case for having PulseAudio handle passwords. Can
somebody enlighten me?


I'd imagine it's easier (or at least more intuitive) to run "pactl
set-password-for-remote-clients correcthorsebatterystaple"

Re: [pulseaudio-discuss] GSoC ideas

2013-04-29 Thread Tanu Kaskinen
On Fri, 2013-04-26 at 16:40 +0200, Alexander Couzens wrote:
> On Fri, 26 Apr 2013 14:54:19 +0200
> David Henningsson  wrote:
> 
> > On 04/26/2013 12:48 PM, Tanu Kaskinen wrote:
> 
> > > Making module-tunnel-sink reliable would be very welcome.
> > I'd like to see a rewrite of module-tunnel-sink to use the libpulse API 
> > instead of doing the protocol stuff directly.
> A rewrite could work much better for a project plan?

I think this would be a good project.

-- 
Tanu

-
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.
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] GSoC ideas

2013-04-29 Thread Tanu Kaskinen
On Fri, 2013-04-26 at 16:40 +0200, David Henningsson wrote:
> On 04/26/2013 03:37 PM, Tanu Kaskinen wrote:
> > On Fri, 2013-04-26 at 14:54 +0200, David Henningsson wrote:
> >> On 04/26/2013 12:48 PM, Tanu Kaskinen wrote:
> >>> 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.
> >>
> >> I'd like to see a rewrite of module-tunnel-sink to use the libpulse API
> >> instead of doing the protocol stuff directly.
> >
> > +1
> 
> ...and in extension, perhaps a module-tunnel-detect that would load the 
> same amount of module-tunnel-cards, module-tunnel-sinks and 
> module-tunnel-sources as are present on the remote instance. But that is 
> just a wild idea at the moment.

I agree that this would be good. We don't currently have
module-tunnel-card, but we should. module-zeroconf-detect is already
used for detecting remote stuff, so I don't know if we need any new
module-tunnel-detect module.

> >> I also think that wifi + TCP + low latency is a very hard thing to
> >> achieve reliably. The question is if it is possible at all, and if not,
> >> what the options are. Arun didn't seem very happy about improving RTP
> >> support in PulseAudio.
> >
> > At least one option should be to not insist on low latency (IIRC the
> > latency is now hardcoded to 150 ms). Streaming music over wifi has no
> > need for low latency.
> 
> I tried to google a bit for how long latency Wifi really has, and at 
> least this [1] link points to a second or two not being too unusual.
> 
> And seconds of latency is an annoyance even over Wifi.

Sure, but I think it would still be in many cases better than occasional
drop-outs. To me TCP seems better than UDP for raw PCM data in pretty
much all cases, except when there is a hard requirement for an upper
limit in latency.

>  - 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.
> >>
> >> Somebody last year tried something popup-like, but it's not easy trying
> >> to get that right with all Desktop Environments.
> >>
> >> I'm not seeing the use case for having PulseAudio handle passwords. Can
> >> somebody enlighten me?
> >
> > I'd imagine it's easier (or at least more intuitive) to run "pactl
> > set-password-for-remote-clients correcth

Re: [pulseaudio-discuss] GSoC ideas

2013-04-26 Thread Arun Raghavan
On Fri, 2013-04-26 at 16:40 +0200, David Henningsson wrote:
[...]
>  - 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.
> >>
> >> Eh? I've never heard of adding Lua scripting before,
> >
> > Hmm, it was discussed briefly in PulseConf (at downstairs, before the
> > event officially started). My recollection is that Janos brought up the
> > topic, and me and Arun ended up agreeing that it would be a good thing
> > to have (for example, it makes it easier for users to implement whatever
> > strange policies they may want to have). You apparently weren't present,
> > I'm not sure about Colin.
> >
> > For what it's worth, I remember Lua scripting is also something that
> > Lennart wanted to do for a long time, but never got around to it.
> >
> >> and I'm very much
> >> against adding yet another dependency to PulseAudio without a very very
> >> VERY good reason.
> >>
> >> That said; it looks like liblua 5.1 is part of ubuntu-desktop already,
> >> so that particular dependency would not cause too much trouble in
> >> desktop scenarios much, but it would still bloat embedded scenarios,
> >> which is bad enough.
> >
> > So make it an optional feature, problem solved?
> 
> Well, it depends. If we start to use Lua ourselves, and ship Lua scripts 
> as our recommended way to do something, it's optional in theory but not 
> in practice.
> 
> >> Or, to look at this from another angle - what's wrong with shell
> >> scripting? What things are there that you can't do with shell scripting
> >> today that Lua would solve?
> >
> > Executing code synchronously in a hook is one thing that will never be
> > available via shell scripting.
> >
> > That said, Alexander's original idea was "simplified way for scripting
> > pulseaudio and doing basic event handling". That doesn't necessarily
> > mean server-side scripting. I don't think we currently provide very nice
> > tools for client-side scripting either, so e.g. a Python library would
> > be one possible project.
> 
> It seems to me that in either case (client-side or server-side), this 
> should be provided as some type of C API, rather than messing with a 
> different language. Then people can implement their stuff in what 
> language they want (since C bindings are available for most common 
> languages).

Practically speaking, this does not work. You end up with a large set of
poorly supported bindings, instead of one really well-support language
(see: GNOME).

I think having an embedded scripting language makes a lot of sense (Lua
is a popular choice for embedded interpreters because it's
light-weight). We repeatedly run into embedded cases where people need
to write their custom policy modules. Having a mechanism to script this
instead of writing C would make things easier.

-- Arun

___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] GSoC ideas

2013-04-26 Thread Arun Raghavan
On Fri, 2013-04-26 at 22:05 +0200, Thomas Martitz wrote:
> Am 26.04.2013 14:54, schrieb David Henningsson:
> >>>
> >>> 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.
> >
> > I'd like to see a rewrite of module-tunnel-sink to use the libpulse 
> > API instead of doing the protocol stuff directly.
> >
> > I also think that wifi + TCP + low latency is a very hard thing to 
> > achieve reliably. The question is if it is possible at all, and if 
> > not, what the options are. Arun didn't seem very happy about improving 
> > RTP support in PulseAudio. 
> 
> 
> How could you possibly be unhappy about "improving RTP support"? Right 
> now it's basically unusable (for me, anyway) due to this problem/bug: 
> https://bugs.freedesktop.org/show_bug.cgi?id=44777

I'd be delighted to have better RTP support. But I think it is somewhat
misguided to try to maintain a mature RTP stack within PulseAudio. Full
post is at:

http://lists.freedesktop.org/archives/pulseaudio-discuss/2013-March/016667.html

Summary of that: it makes much more sense to reuse something mature like
GStreamer's RTP elements for a large number of reasons such as active
maintenance and easy support for compressed output.

-- Arun

___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] GSoC ideas

2013-04-26 Thread Alexander Couzens
On Fri, 26 Apr 2013 22:05:03 +0200
Thomas Martitz  wrote:

> How could you possibly be unhappy about "improving RTP support"? Right 
> now it's basically unusable (for me, anyway) due to this problem/bug: 
> https://bugs.freedesktop.org/show_bug.cgi?id=44777
Is has nothing to do with the flood of packages by pulse. This problem is 
located on your routers/APs because most routers does not support IGMP_snooping 
and/or changing multicastrates or basicrates (wifi settings).

This is a bug within your router setup (or a feature however you name it). If 
you raise multicast or basicrate(on most systems raising basicrate will also 
raise multicast) and/or enable igmp_snooping @ router it will works perfect. 
But this will not work on most routers and APs, because they neither support 
igmp snooping nor configurable basicrates or mcastrates. But raising basicrate 
affects your range of your network, because multicast and broadcast packages 
are handled on the same way. Raising this rate will force all client to be in 
the range, where they can receive packets with that rate.
That is the trade off changing these rates. I'm using 12mbit/s for nearby all 
setup.

Greetings,
Alex
-- 
Alexander Couzens

mail: lyn...@base45.de
sip/jabber: lyn...@c-base.org
mobile: +4915123277221
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] GSoC ideas

2013-04-26 Thread Thomas Martitz

Am 26.04.2013 14:54, schrieb David Henningsson:


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.


I'd like to see a rewrite of module-tunnel-sink to use the libpulse 
API instead of doing the protocol stuff directly.


I also think that wifi + TCP + low latency is a very hard thing to 
achieve reliably. The question is if it is possible at all, and if 
not, what the options are. Arun didn't seem very happy about improving 
RTP support in PulseAudio. 



How could you possibly be unhappy about "improving RTP support"? Right 
now it's basically unusable (for me, anyway) due to this problem/bug: 
https://bugs.freedesktop.org/show_bug.cgi?id=44777


Best regards.
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] GSoC ideas

2013-04-26 Thread Alexander Couzens
On Fri, 26 Apr 2013 14:54:19 +0200
David Henningsson  wrote:

> On 04/26/2013 12:48 PM, Tanu Kaskinen wrote:

> > Making module-tunnel-sink reliable would be very welcome.
> I'd like to see a rewrite of module-tunnel-sink to use the libpulse API 
> instead of doing the protocol stuff directly.
A rewrite could work much better for a project plan?

> I also think that wifi + TCP + low latency is a very hard thing to 
> achieve reliably. The question is if it is possible at all, and if not, 
> what the options are. Arun didn't seem very happy about improving RTP 
> support in PulseAudio.
replace low latency with reliable latency and it can work.
 
> >> - Implementing profiles for different environments. The user can
> >> define a profile for home, work, [...]. Main sink, group of sink
> >> (combine sinks).
Let say location environments. Another interesting question is,
how to define a location? Proof me wrong, but Linux does not 
have a location service which tells us in which environment we are? Like 
windows doing it 
for networks.

> >> - Simplified way for scripting pulseaudio and doing basic event
> >> handling. Normal (power) user should script their soundsystem.
> That said; it looks like liblua 5.1 is part of ubuntu-desktop already, 
> so that particular dependency would not cause too much trouble in 
> desktop scenarios much, but it would still bloat embedded scenarios, 
> which is bad enough.
We have already d-bus as optional dependency :). Just do a lua as module? Just 
try to be 
generic enought to add other scripting languages.

> Or, to look at this from another angle - what's wrong with shell 
> scripting? What things are there that you can't do with shell scripting 
> today that Lua would solve?
I don't like shell scripting. Especially because of escaping-hell. How should 
shell scripting work? It does not gives us a solution 
for the events. From where we get events?

> >> - 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
> >
> > We could also discuss how to add encryption support to PulseAudio.
> 
> Somebody last year tried something popup-like, but it's not easy trying 
> to get that right with all Desktop Environments.
I would look for ssh-agent-helpers and how they integrate into all Desktop 
Environments.
Don't think we should discuss here about what is the best or suitable 
encryption.

> I'm not seeing the use case for having PulseAudio handle passwords. Can 
> somebody enlighten me?
In bigger networks than home networks, a co-working space, hackerspace or at 
work, you want to allow certain people to access
one pulseserver, but not everybody. You can only allow it by one cookie or do 
it over ip-acl. But using ip-acl for 
dynamic ip address is horrible. A cookie is far to long complex.

I would like to start from bottom up. First we need a good mod-tunnel, before 
it make sense for me to start with most of the other tasks.
-- 
Alexander Couzens

mail: lyn...@base45.de
sip/jabber: lyn...@c-base.org
mobile: +4915123277221
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] GSoC ideas

2013-04-26 Thread David Henningsson

On 04/26/2013 03:37 PM, Tanu Kaskinen wrote:

On Fri, 2013-04-26 at 14:54 +0200, David Henningsson wrote:

On 04/26/2013 12:48 PM, Tanu Kaskinen wrote:

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.


I'd like to see a rewrite of module-tunnel-sink to use the libpulse API
instead of doing the protocol stuff directly.


+1


...and in extension, perhaps a module-tunnel-detect that would load the 
same amount of module-tunnel-cards, module-tunnel-sinks and 
module-tunnel-sources as are present on the remote instance. But that is 
just a wild idea at the moment.



I also think that wifi + TCP + low latency is a very hard thing to
achieve reliably. The question is if it is possible at all, and if not,
what the options are. Arun didn't seem very happy about improving RTP
support in PulseAudio.


At least one option should be to not insist on low latency (IIRC the
latency is now hardcoded to 150 ms). Streaming music over wifi has no
need for low latency.


I tried to google a bit for how long latency Wifi really has, and at 
least this [1] link points to a second or two not being too unusual.


And seconds of latency is an annoyance even over Wifi.


- 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).


Profiles, in PulseAudio today, is a concept related to the number of
channels a sink/source currently has. If we continue to call this
"profiles", it's guaranteed to be confusion.


Good point. We could call the things discussed here "configuration
presets" (too wide scope?) or "routing presets" (too narrow scope?) or
"policy presets" (too obscure term?).


- 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.


Eh? I've never heard of adding Lua scripting before,


Hmm, it was discussed briefly in PulseConf (at downstairs, before the
event officially started). My recollection is that Janos brought up the
topic, and me and Arun ended up agreeing that it would be a good thing
to have (for example, it makes it easier for users to implement whatever
strange policies they may want to have). You apparently weren't present,
I'm not sure about Colin.

For what it's worth, I remember Lua scripting is also something that
Lennart wanted to do for a long time, but never got around to it.


and I'm very much
against adding yet another dependency to PulseAudio without a very very
VERY good reason.

That said; it looks like liblua 5.1 is part of ubuntu-desktop already,
so that particular dependency would not cause t

Re: [pulseaudio-discuss] GSoC ideas

2013-04-26 Thread Tanu Kaskinen
On Fri, 2013-04-26 at 14:54 +0200, David Henningsson wrote:
> On 04/26/2013 12:48 PM, Tanu Kaskinen wrote:
> > 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.
> 
> I'd like to see a rewrite of module-tunnel-sink to use the libpulse API 
> instead of doing the protocol stuff directly.

+1

> I also think that wifi + TCP + low latency is a very hard thing to 
> achieve reliably. The question is if it is possible at all, and if not, 
> what the options are. Arun didn't seem very happy about improving RTP 
> support in PulseAudio.

At least one option should be to not insist on low latency (IIRC the
latency is now hardcoded to 150 ms). Streaming music over wifi has no
need for low latency.

> >> - 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).
> 
> Profiles, in PulseAudio today, is a concept related to the number of 
> channels a sink/source currently has. If we continue to call this 
> "profiles", it's guaranteed to be confusion.

Good point. We could call the things discussed here "configuration
presets" (too wide scope?) or "routing presets" (too narrow scope?) or
"policy presets" (too obscure term?).

> >> - 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.
> 
> Eh? I've never heard of adding Lua scripting before,

Hmm, it was discussed briefly in PulseConf (at downstairs, before the
event officially started). My recollection is that Janos brought up the
topic, and me and Arun ended up agreeing that it would be a good thing
to have (for example, it makes it easier for users to implement whatever
strange policies they may want to have). You apparently weren't present,
I'm not sure about Colin.

For what it's worth, I remember Lua scripting is also something that
Lennart wanted to do for a long time, but never got around to it.

> and I'm very much 
> against adding yet another dependency to PulseAudio without a very very 
> VERY good reason.
> 
> That said; it looks like liblua 5.1 is part of ubuntu-desktop already, 
> so that particular dependency would not cause too much trouble in 
> desktop scenarios much, but it would still bloat embedded scenarios, 
> which is bad enough.

So make it an optional feature, problem solved?

> Or, to look at 

Re: [pulseaudio-discuss] GSoC ideas

2013-04-26 Thread David Henningsson

On 04/26/2013 12:48 PM, Tanu Kaskinen wrote:

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.


I'd like to see a rewrite of module-tunnel-sink to use the libpulse API 
instead of doing the protocol stuff directly.


I also think that wifi + TCP + low latency is a very hard thing to 
achieve reliably. The question is if it is possible at all, and if not, 
what the options are. Arun didn't seem very happy about improving RTP 
support in PulseAudio.



- 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).


Profiles, in PulseAudio today, is a concept related to the number of 
channels a sink/source currently has. If we continue to call this 
"profiles", it's guaranteed to be confusion.



- 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.


Eh? I've never heard of adding Lua scripting before, and I'm very much 
against adding yet another dependency to PulseAudio without a very very 
VERY good reason.


That said; it looks like liblua 5.1 is part of ubuntu-desktop already, 
so that particular dependency would not cause too much trouble in 
desktop scenarios much, but it would still bloat embedded scenarios, 
which is bad enough.


Or, to look at this from another angle - what's wrong with shell 
scripting? What things are there that you can't do with shell scripting 
today that Lua would solve?



- 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.


Somebody last year tried something popup-like, but it's not easy trying 
to get that right with all Desktop Environments.


I'm not seeing the use case for having PulseAudio handle passwords. Can 
somebody enlighten me?



--
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic
___
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedeskto

Re: [pulseaudio-discuss] GSoC ideas

2013-04-26 Thread Tanu Kaskinen
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