[pulseaudio-discuss] paprefs port setting

Nico pulseaudio-discuss at nicohood.de
Mon Oct 31 18:25:52 UTC 2016


On 10/31/2016 04:49 PM, Tanu Kaskinen wrote:
> On Mon, 2016-10-31 at 15:02 +0100, NicoHood wrote:
>> Hye,
>>
>> I am currently actively using pulseaudio for streaming audio over
>> network. I found RTP the most promesing method for me. However there is
>> a problem I ran into which I'd like to solve. I've also prepared a
>> possible solution.
>>
>> My goal is to stream music via RTP and paprefs. Quick setup on the
>> sender side and quick setup on the receiver side if also pulse+paprefs
>> is used. Now my receiver is a raspberry pi which uses kodi + alsa as
>> pulse is too slow on it for some reason (general lag, even for local
>> playback). But kodi also can playback an RTP stream directly:
>>
>> Create a file named pulse.strm with the content: rtp://@224.0.0.56:46400
>> Now the problem is that the port always changes, as paprefs does not set
>> any specific port. The module it uses is module-rtp-send:
>> https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#index38h3
>>
>> I am wondering if you can set the default port for this module globally
>> via config file. If not the only way to fix this issue is to provide a
>> way for paprefs to use a fixed port. Due to the fact that the source
>> port is always random and the pulse sink listens to all ports it would
>> not matter much if the sender would always send with a fixed port. Using
>> a fixed port is simple to patch and works for me:
>>
>> Just change line 537 of paprefs.cc to the following:
>>
>> changeSet.set(PA_GCONF_PATH_MODULES"/rtp-send/args1",
>> Glib::ustring(loopbackEnabled ? "source=rtp.monitor loop=1 port=46400" :
>> "source=rtp.monitor loop=0 port=46400"));
>>
>> Now paprefs creates a sender with the same port. You may want to use a
>> different port, but basically that'd solve the problem. And existing
>> setups would still work.
>>
>> Is there a way to get this fix applied? Or are there any other
>> suggestions? FYI: the same also applies to vlc playback, not only kodi.
> The first question comes to mind is why do we randomize the port in the
> first place? Is it for security reasons or what? Given that the port is
> selected from a pool of only 256 ports, the reason is probably not
> really security-related. Maybe it's to make conflicts unlikely if two
> computers in a network load module-rtp-send?
>
> Ideally paprefs would let the user choose between a random port or a
> manually selected one. Would you be willing to implement this? If not,
> changing paprefs to just pick one port as you suggested would probably
> still be an improvement over the status quo. The UI should indicate
> what the port is, though.
>
> paprefs should also detect the situation where the gconf key is still
> set to the old value (i.e. no port in the module argument list) and
> change it to the new value automatically.
>
So I installed the legacy glade gtk2 tool and edited the source a bit.
It does not seem to be super complicated. However I am wondering how to
design the gui, as we should keep things simple and intuitive. I have
the following options:
* Add a checkbox to use a fixed port xyz
* Add a checkbox + textentry for a fixed user selectable port
* Add a checkbox + dropdown menu for a fixed user selectable port of a list

The first one is quite simple and suit everyones needs.
The second I am worrying about the text->number conversion and the
update of the module. As the user types you'd update the module over and
over which is bad. and the user could input invalid ports.
The last one seems to be the most promesing. A few options to possibly
also have different streams inside your LAN while still keeping the
options simple for the user. We could provide like 10 selectable ports
or so.

Any opinions on that?

Cheers,
Nico


More information about the pulseaudio-discuss mailing list