Re: [pulseaudio-discuss] Moving sources and sinks

2008-05-06 Thread Tomas Carnecky
Lennart Poettering wrote:
 I could repeat here what I wrote in response to Nick
 Thompson. Complaining about Free Software is nothing that makes you
 any friends in the community.

Fine. I'm complaining. But let me tell you this. I dug through the Wine 
alsa driver, the alsa pulse plugin and the PA sources. I now pretty much 
know how these three components interact and where the problems are. I 
simply arrived at a point where I wasn't willing to dig any deeper. I'm 
simply not ready to study the codebase any more. I've seen my share. 
Enough to be able to create a fairly precise bug report. So I wrote to 
this mailinglist and asked for help. I didn't demand that you fix the 
bugs. I just wanted some advice. And to that I didn't get any response.

 I am not using wine myself, and haven't looked into fixing this. I had
 a quick peek into it though. They did almost everything wrong that you
 can do wrong if you care about supporting more than a single backend
 driver for your ALSA code. They made invalid assumptions about mixer
 tracks, they use the super-ugly and not-portable
 snd_async_add_pcm_handler() where it is almost guranteed that people
 get it wrong (because those handlers are run from signal handler
 context, which has some very special semantics, ranging from errno
 handling to a lot of other things) and a lot more. It is nearly
 impossible to write a backend for ALSA that works with applications
 like these. Basically, the task is to clean up WINE's ALSA use, before
 looking on the PA backend for libasound.

The async handler was removed last summer, as part of the driver rewrite 
in a GSoC2007 project. And a lot other fixes also went into the Wine 
alsa driver since then. Most of the issues have already been fixed. The 
mixer code still may be a bit unclean, but that has nothing to do with 
the audio playback problems. If you know of any other outstanding issues 
in the Wine driver (apart from the _delay() misuse), please tell the 
Wine folks or me, I'll gladly forward the mail to the current maintainer.

As the chances of including a native PA driver in Wine are zero, the 
focus is on improving the current Wine alsa driver and the alsa pulse 
plugin. That is what I'm trying to do.

tom
___
pulseaudio-discuss mailing list
pulseaudio-discuss@mail.0pointer.de
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] Moving sources and sinks

2008-05-04 Thread Tomas Carnecky
Colin Guthrie wrote:
 Tomas Carnecky wrote:
 Colin Guthrie wrote:
 I disagree that this community is unresponsive. You just have to be
 patient. Lennart is the main developer but he does not sit slavishly
 reading the mailing list and responding immediately. He'll usually have
 a big purge every couple weeks, but generally does respond to almost
 everyone who asks something, unless someone else has jumped in already.
 PulseAudio + Wine is still a big no-no. Like described in my earlier 
 mail to this mailing list (sent 24.2.2008) I've come to a point where I 
 don't know any further and asked for help. Nobody answered. Not even to 
 the ticket in PA trac or the ticket in the alsa bugtracker.

 Ubuntu now ships with PA enabled by default, which causes big troubles 
 for those wanting to play games under Wine. I know the best solution 
 would be to have a native PA driver in Wine, but that won't happen 
 anytime soon. There are bugs in the pulse alsa driver. Fixing those 
 shouldn't be such big problem for someone familiar with the inner 
 workings of PA.
 
 What are the bugs in the pulse alsa plugin you refer to? There are some
 feature limitations but they are typically down to what any ioplug
 plugin is capable of.

https://bugtrack.alsa-project.org/alsa-bug/view.php?id=2601 (see the 
comments made by wereHamster, that's me).

http://pulseaudio.org/ticket/198

 When I last looked at the wine alsa layer it was *really* nasty. It
 didn't even open the default device, it would instead try to open
 default:0 I think it was cleaned up a bit, but it should be very
 simple for someone to rewrite it or write a direct pulse driver. The
 main wine folks don't use PA so don't really care about this.
 
 If there is something in pulse that can be fixed, it shoudl be reported,
 but as tonnes of apps out there work fine with pulse+alsa, I suspect
 strongly (and this is based on actually having a quick peak at the code
 a while back) that the problems lie at the wine end.

There may be applications that work fine, but you only have to find a 
single app that works with native alsa and fails with alsa-pulse 
emulation to prove that there's a bug in your code. Wine is probably one 
of the more complex users of the alsa API, and therefore exposing bugs 
in alsa-pulse that other applications don't hit.

I have patched the Wine alsa driver and the alsa-pulse plugin and sound 
works for me, tested in World of Warcraft and foobar2000. The Wine patch 
maybe isn't necessary. But the patch to alsa-pulse is required, see my 
comments in the alsa bugtracker or the PA ticket.

tom

___
pulseaudio-discuss mailing list
pulseaudio-discuss@mail.0pointer.de
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] Moving sources and sinks

2008-05-04 Thread Tomas Carnecky
Colin Guthrie wrote:
 When I last looked at the wine alsa layer it was *really* nasty. It
 didn't even open the default device, it would instead try to open
 default:0 I think it was cleaned up a bit, but it should be very
 simple for someone to rewrite it or write a direct pulse driver. The
 main wine folks don't use PA so don't really care about this.

The reason why a native pulse audio won't be included in Wine anytime 
soon is this. The alsa audio driver in Wine used to be very bad. Lots of 
bugs in it etc. Last summer there was a GSoC project to fix the driver. 
That project was successful in that the driver now works. There 
basically aren't any problems with the Wine alsa driver anymore. Now 
that Wine has a working audio driver for Linux, they want to focus on 
that, rather then having a second driver that works only half-way.
There was someone who wrote a native pulse driver for Wine. 
Unfortunately I haven't see the code and I don't think the code was ever 
released. It probably sits in someones private repository. It would be 
possible to maintain the pulse driver in a separate repository. For 
example the ASIO driver for Wine is developed that way. And it works for 
the people who need that driver. However to merge the driver with 
'upstream', you'd have to prove that you are willing to maintain it, 
that it works perfectly and has no bugs in it. Otherwise they won't even 
consider including it.

tom
___
pulseaudio-discuss mailing list
pulseaudio-discuss@mail.0pointer.de
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] Moving sources and sinks

2008-05-04 Thread Tomas Carnecky
Nikolai Beier wrote:
 2008/5/4 Tomas Carnecky [EMAIL PROTECTED]:
 Colin Guthrie wrote:
   Tomas Carnecky wrote:
   Colin Guthrie wrote:
   I disagree that this community is unresponsive. You just have to be
   patient. Lennart is the main developer but he does not sit slavishly
   reading the mailing list and responding immediately. He'll usually have
   a big purge every couple weeks, but generally does respond to almost
   everyone who asks something, unless someone else has jumped in already.
   PulseAudio + Wine is still a big no-no. Like described in my earlier
   mail to this mailing list (sent 24.2.2008) I've come to a point where I
   don't know any further and asked for help. Nobody answered. Not even to
   the ticket in PA trac or the ticket in the alsa bugtracker.
  
   Ubuntu now ships with PA enabled by default, which causes big troubles
   for those wanting to play games under Wine. I know the best solution
   would be to have a native PA driver in Wine, but that won't happen
   anytime soon. There are bugs in the pulse alsa driver. Fixing those
   shouldn't be such big problem for someone familiar with the inner
   workings of PA.
  
   What are the bugs in the pulse alsa plugin you refer to? There are some
   feature limitations but they are typically down to what any ioplug
   plugin is capable of.

  https://bugtrack.alsa-project.org/alsa-bug/view.php?id=2601 (see the
  comments made by wereHamster, that's me).

  http://pulseaudio.org/ticket/198


   When I last looked at the wine alsa layer it was *really* nasty. It
   didn't even open the default device, it would instead try to open
   default:0 I think it was cleaned up a bit, but it should be very
   simple for someone to rewrite it or write a direct pulse driver. The
   main wine folks don't use PA so don't really care about this.
   
   If there is something in pulse that can be fixed, it shoudl be reported,
   but as tonnes of apps out there work fine with pulse+alsa, I suspect
   strongly (and this is based on actually having a quick peak at the code
   a while back) that the problems lie at the wine end.

  There may be applications that work fine, but you only have to find a
  single app that works with native alsa and fails with alsa-pulse
  emulation to prove that there's a bug in your code. Wine is probably one
  of the more complex users of the alsa API, and therefore exposing bugs
  in alsa-pulse that other applications don't hit.

  I have patched the Wine alsa driver and the alsa-pulse plugin and sound
  works for me, tested in World of Warcraft and foobar2000. The Wine patch
  maybe isn't necessary. But the patch to alsa-pulse is required, see my
  comments in the alsa bugtracker or the PA ticket.
 
 This case is a bit confusing. I have tried to look at the realted bug
 reports this morning. (nothing seemed to have happened since
 February).

Yeah, because I posted all I know, my patches etc, and I've been waiting 
for someone familiar with the inner workings of PA to comment on the 
issues. As I said, sound in Wine works for me, but the patches I'm using 
  I consider hacks and not a real solution.

 There are mentioned two patches for Wine that should fix some of the
 problems, like the bad hard coded defaults on names for default
 devices and volume controls. (here: pulseaudio.org/ticket/198 and
 winehq.org/pipermail/wine-patches/2008-February/050561.html ). I
 wonder if they are included now? (Really a question for people working
 on the wine code)

The first issue with the device names seems to be fixed. As of March 4, 
2008 Wine uses default instead of default:0. The only patch to Wine 
I'm using now is the one I posted to wine-patches. That one was not 
merged into Wine - I haven't asked why. I'm not even sure it's 
necessary. I'll test without my Wine patch to confirm that. But the 
biggest problem seems to be the delay/latency computation in the 
alsa-pulse plugin.

 What about Wines OSS and ESD output? If they work, it could be
 recommended to try these if alsa output does not work.

I disabled OSS support in my kernel, so I can't test paoss. It might 
work, but it would still be a workaround and not a real fix.

 Note that there are reported separate problems with DirectSound

Where did you see that? Where can I read more about that?

tom
___
pulseaudio-discuss mailing list
pulseaudio-discuss@mail.0pointer.de
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] Moving sources and sinks

2008-05-04 Thread Tomas Carnecky
Colin Guthrie wrote:
 Tomas Carnecky wrote:
 Colin Guthrie wrote:
 What are the bugs in the pulse alsa plugin you refer to? There are some
 feature limitations but they are typically down to what any ioplug
 plugin is capable of.
 https://bugtrack.alsa-project.org/alsa-bug/view.php?id=2601 (see the 
 comments made by wereHamster, that's me).

 http://pulseaudio.org/ticket/198
 
 To be honest I thought all of the patches on that bug were now in alsa
 repo their bugtracker is such a pain to work with, it's like trying
 to find a needle in a haystack :(
 
 All the recent comments were talking about speaker-test being at fault.
 I didn't realise there was still some issues with the actual alsa-plugin
 end. I guess I'll try and read through it again with a strong cup of
 coffee and see if I can understand it again. Not that I'd be able to do
 much about it but I would like to appreciate what is going on :)
 
 FWIW, I consider all patches on the alsa bug as being part of the
 plugin... I've not looked at our alsa repository for a while but as I
 say I thought they were all committed now.
 
 It may be worth posting a little prompt to the alsa mailing list.
 Takashi recently committed some of Sjoerd's pulse related stuff to HG,
 so a gentle prod would probably help (perhaps highlighting exactly which
 patches are required to save him wading through that alsa bug!)

I just looked at the current alsa-plugins code. Takashi fixed the 
symptoms, but not the cause of the bug(s). He removed the assertions. 
Errors now are propagated to the application instead of crashing the 
whole application. But the bug that is causing it still remains in the 
code. See comment number 0018163 in the alsa bugtracker. I fixed that in 
the patch I attached to the bug report. Anyhow, that patch fixes 
speaker-test. Wine however needs two additional changes.

First, alsa-pulse doesn't honor the 'start threshold', that is how much 
the application has to write until the pcm is automatically started. The 
alsa pulse plugin harcodes that to 'buffer_size - period_size' but Wine 
sets it to '1'. When Wine writes the first byte, it expects the pcm to 
start. There is a test in Wine where it writes very few data and then 
waits for it to be played. But PA never starts the pcm and Wine ends up 
in an endless loop. The 'start threshold' is part of the software params 
of an alsa pcm.

The second fix needed is for pulse_dealy(). As described in the 
pulseaudio.org ticket, there seems to be a rounding issue. The current 
code uses:
   lat = pa_stream_get_latency()
   delay = snd_pcm_bytes_to_frames(pa_usec_to_bytes(lat))
but I had to change it to:
   delay = snd_pcm_bytes_to_frames(ti-write_index-ti-read_index) - 3000

The '-3000' is needed. If I set it to less, then some of the Wine tests 
fail. Wine uses snd_pcm_delay() to find out how much has already been 
played. Without my change it can happen that snd_pcm_delay() never 
reaches the number of frames that have been written, even after a long time.

tom
___
pulseaudio-discuss mailing list
pulseaudio-discuss@mail.0pointer.de
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] Moving sources and sinks

2008-05-04 Thread Tomas Carnecky
Nikolai Beier wrote:
 Oh, now I looked at the bug reports and got confused again. Is this
 the key points? (Ses below:)
 
 == Wine and the alsa plugin for PulseAudio (alsa pulse plugin) ==
 PulseAudio normally takes control of the hardware through the device
 driver/ALSA. Thereby the hardware device in ALSA is blocked for
 other clients like Wine.

PA blocks access to the hardware. Therefore users are advised to create 
~/.asoundrc and add 'pcm.!default { type pulse }' to the file. Doing so, 
all applications which use alsa magically start using the alsa pulse 
plugin. Unfortunately the alsa pulse plugin has bugs, so some 
applications don't work. Wine is one of those applications.

 Perhaps Winealsa (the output driver for ALSA) needs direct hardware
 access? Or it is/was just coded that way, but does not need to be. Or
 it was never a problem?

Wine should not need hardware access. Maybe it mistakenly did in the 
past. But it should not. If it still does, then it needs to be fixed.

 Winealsa is now (may 4. 20008) fixed, so it uses the alsa device
 default instead of default:0 (or like numbers), and does not
 require a volume control called PCM but uses the default volume
 control.

Yes, that is correct. This part of the Wine alsa driver should now be fixed.

 Finally there are the delay problem(s).
 * wereHamster noted that the ALSA pulse plugin might set Wine in an
 endles loop. http://www.pulseaudio.org/ticket/198#comment:8

FYI, I'm wereHamster. I have a fix for that. I'll submit the patch after 
I figure out how to use mercurial.

 * Some have notices large delays (like one second), which is tracked
 back to some delay calculations in the ALSA pulse plugin.

I haven't come across this problem. Are there bug reports that track 
this issue?

 If a gamer wants lowest possible latency, and does not need any other
 app to play sound (like voice chats like Teamspeak), then they
 should use pasuspender.

Yes, pro-gamers most definitely want to do that. But for normal users 
the alsa pulse plugin should 'just work'. In my (subjective) tests, 
running World of Warcraft, I haven't found the PA latency to be much 
bigger then dmix.

tom
___
pulseaudio-discuss mailing list
pulseaudio-discuss@mail.0pointer.de
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss


Re: [pulseaudio-discuss] Moving sources and sinks

2008-05-03 Thread Tomas Carnecky
Colin Guthrie wrote:
 I disagree that this community is unresponsive. You just have to be
 patient. Lennart is the main developer but he does not sit slavishly
 reading the mailing list and responding immediately. He'll usually have
 a big purge every couple weeks, but generally does respond to almost
 everyone who asks something, unless someone else has jumped in already.

PulseAudio + Wine is still a big no-no. Like described in my earlier 
mail to this mailing list (sent 24.2.2008) I've come to a point where I 
don't know any further and asked for help. Nobody answered. Not even to 
the ticket in PA trac or the ticket in the alsa bugtracker.

Ubuntu now ships with PA enabled by default, which causes big troubles 
for those wanting to play games under Wine. I know the best solution 
would be to have a native PA driver in Wine, but that won't happen 
anytime soon. There are bugs in the pulse alsa driver. Fixing those 
shouldn't be such big problem for someone familiar with the inner 
workings of PA.

Sorry for hijacking the thread, but the community has been largely 
unresponsive to this particular issue. Just wanted to bring that up.

tom
___
pulseaudio-discuss mailing list
pulseaudio-discuss@mail.0pointer.de
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss


[pulseaudio-discuss] Issues with Wine and alsa pulse plugin

2008-02-24 Thread Tomas Carnecky
I've reached a point where I need some help from the PA developers to 
solve the problems. Basically there seems to be a problem with how the 
latency is calculated inside PA. I described the problems in [1] 
(comment #10). Any help how to solve it would be appreciated.

tom

[1] http://www.pulseaudio.org/ticket/198
___
pulseaudio-discuss mailing list
pulseaudio-discuss@mail.0pointer.de
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss