[pulseaudio-discuss] PulseAudio questions
Nikita V. Youshchenko
yoush at cs.msu.su
Tue Aug 28 02:39:58 PDT 2007
> If I understand correctly you are running PA on top of some SunRay
> specific OSS emulation? This looks like an issue in that emulation to
> me. According to the OSS docs reads/writes to the OSS devices are
> always guaranteed to be multiples of the frame sizes in size. And
> apparently that guarantee is not valid for these machines?
SunRay software creates audio device files for each connected terminal:
root at sunraysrv:/tmp/SUNWut/dev/utaudio> ls -l | grep -- -5
crw------- 1 nikita users 14, 3 2007-08-22 17:53 utdsp-5
prw------- 1 nikita users 0 2007-08-22 17:53 utdsp-5stat
crw------- 1 nikita users 14, 0 2007-08-22 17:53 utmix-5
These devices are serviced by a kernel module, utadem.ko, which is included
with SunRay server software. Module comes with sources, so I may try to
check what happens with data written to the device.
Most OSS software does not have issues with these devices. PA is the first
one. Although I did not try many :)
> > - when user starts mplayer within session, 'session-side' pulseaudio
> > server crashes at top of pa_memblockq_drop() on
> > assert(length % bq->base == 0);
> Seems to be the same issue here. Both asserts make sure that the data
> is properly aligned to fram sizes. And apparently this is not
> guaranteed to be true when read/written from the OSS devices.
> > I tried to comment out both asserts, and without those looks like
> > everything works.
> > However, I guess that asserts are there for a reason? What is a
> > better fix?
> It is very difficult to debug this from here. I think the workaround
> in PA would be far from trivial.
I'm willing to help debugging. What should I do/check/etc ?
> > 2. When applications within session are playing short sounds, it
> > sounds like last very short fragment (0.1 sec or so) of eash sound is
> > played at the beginning of the next sound. Looks like somewhere a
> > buffer is not flushed at sound end, so data collected there is passed
> > to audio hardware when new sound if being played.
> > Any comments on this?
> Sounds like a classic esd bug. Someone mentioned that SunRay would be
> using esd for audio, is that right? If so, you're currently having the
> ESD experience. It's probably the best idea to replace ESD entirely by
This happens also with a PC/linux terminal. Just reproduces with the
Termimal runs a pulseaudio daemon what talks to local audio hardware (via
alsa) and listens with module-native-protocol-tcp
Application server runs a pulseaudio daemon that listens through
module-native-protocol-unix and forwards data to terminal with
Applications play audio with 'paplay'.
So only pulseaudio (and terminal-side alsa hardware) is involved. No esd.
> > 3. It will be very useful to implement completely transparent audio
> > migration, such that apps playing 'long' sounds will not notice that
> > user disconnected and then reconnected from other terminal, but will
> > transparantly continue playing.
> > >From pulseaudio point of view, audio sink on 'session' pulseaudio
> > > server
> > may disappear, and then - probably after some minutes - a new 'sink'
> > may appear. And same with source.
> > Is it possible to script pulseaudio server somehow such that
> > applications running in the session won't notice anything?
> I am working on som more transparent network support in PA. Something
> like a beefed up tunnel sink with zeroconf support. There's already
> module-rescue-streams which moves streams to a different sink if a sink
> Stay tuned.
Great, will look into module-rescue-streams.
> > 4. Is there any audio mixer application that may run within KDE's
> > panel, and control audio volume in this configuration.
> > KDE's kmix talks to ALSA directly. I was able to fool it by writing in
> > alsa configuration file that ctl 'hw' is 'type pulse', and it even
> > worked. But real 'hw' device has parameters, so my hack resulted in
> > kmix recognized 32 mixers :).
> 32 mixers? How come? Please explain?
nikita at desktopvm:~> cat /tmp/xxx
nikita at desktopvm:~> ALSA_CONFIG_PATH=/tmp/xxx kmix --nofork
And see how many mixer it finds. Oh, there are not 32, only 20 :)
Looks like kmix tries to open different ALSA mixers, and with such a config
all those are opened successfully and forwarded to pulseaudio.
> > Maybe it is possible to set up things such that 'hw' only with
> > particular parameters is 'type pulse', and with all other parameters
> > it is non-existent? Or just use another mixer app which is more
> > pulseaudio-friendly (but still runs in KDE panel!)
> I am sorry. I have no experience with KDE. Presumably you can use the
> combination of padevchooser and pavucontrol.
The question was more about ALSA than about KDE.
Probably I may write something in the alsa configuration file that ctl hw
only with particular parameters will be forwarded to pulse, and all others
will be reported as non-existent.
More information about the pulseaudio-discuss