* issues with pulse plugin
@ 2007-11-08 22:21 Mike Gorse
2007-11-12 7:55 ` Takashi Iwai
0 siblings, 1 reply; 4+ messages in thread
From: Mike Gorse @ 2007-11-08 22:21 UTC (permalink / raw)
To: alsa-devel
I have run into what is basically another instance of bug 3470
(pulse_hw_params asserting because the stream is already initialized).
The application that I am working with is calling snd_pcm_hw_params each
time it plays a sample. The following patch makes things work for me
(actually the app still doesn't work because it uses poll() in a way that
is incompatible with the pulse plugin, but that is a separate issue, and I
don't know if it should be considered a bug in the plugin.)
--- pulse/pcm_pulse.c.orig 2007-11-08 15:13:12.000000000 -0500
+++ pulse/pcm_pulse.c 2007-11-08 15:13:12.000000000 -0500
@@ -497,7 +497,7 @@
assert(pcm->p);
//Resolving bugtrack ID 0003470
- if(!(base && snd_pcm_state(base) == SND_PCM_STATE_PREPARED))
+ if(!(base && (snd_pcm_state(base) == SND_PCM_STATE_PREPARED || snd_pcm_state(base) == SND_PCM_STATE_SETUP)))
assert(!pcm->stream);
pa_threaded_mainloop_lock(pcm->p->mainloop);
--
I couldn't add this to the bug because it was marked as resolved.
Any comments? Or is the app behaving in a way that is counter to the
specification?
Also, I'm still encountering bug 2601 (a separate assert failure that
happens if period_size == 0) even with the patch to pcm_ioplug.c. I think
that PERIOD_TIME and PERIODS need to be constrained; I added a couple of
comments to the bug.
Thanks,
-- Mike Gorse / AIM:linvortex / http://mgorse.freeshell.org --
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: issues with pulse plugin 2007-11-08 22:21 issues with pulse plugin Mike Gorse @ 2007-11-12 7:55 ` Takashi Iwai 2007-11-12 12:03 ` Mike Gorse 0 siblings, 1 reply; 4+ messages in thread From: Takashi Iwai @ 2007-11-12 7:55 UTC (permalink / raw) To: Mike Gorse; +Cc: alsa-devel At Thu, 8 Nov 2007 17:21:20 -0500 (EST), Mike Gorse wrote: > > I have run into what is basically another instance of bug 3470 > (pulse_hw_params asserting because the stream is already initialized). > The application that I am working with is calling snd_pcm_hw_params each > time it plays a sample. The following patch makes things work for me > (actually the app still doesn't work because it uses poll() in a way that > is incompatible with the pulse plugin, but that is a separate issue, and I > don't know if it should be considered a bug in the plugin.) > > --- pulse/pcm_pulse.c.orig 2007-11-08 15:13:12.000000000 -0500 > +++ pulse/pcm_pulse.c 2007-11-08 15:13:12.000000000 -0500 > @@ -497,7 +497,7 @@ > assert(pcm->p); > > //Resolving bugtrack ID 0003470 > - if(!(base && snd_pcm_state(base) == SND_PCM_STATE_PREPARED)) > + if(!(base && (snd_pcm_state(base) == SND_PCM_STATE_PREPARED || snd_pcm_state(base) == SND_PCM_STATE_SETUP))) > assert(!pcm->stream); > > pa_threaded_mainloop_lock(pcm->p->mainloop); > > -- I fixed it on HG tree now. > > I couldn't add this to the bug because it was marked as resolved. Can't you reopen (as feedback)? > Any comments? Or is the app behaving in a way that is counter to the > specification? > > Also, I'm still encountering bug 2601 (a separate assert failure that > happens if period_size == 0) even with the patch to pcm_ioplug.c. I think > that PERIOD_TIME and PERIODS need to be constrained; I added a couple of > comments to the bug. Hm, does it happen with the latest HG tree, too? Takashi ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: issues with pulse plugin 2007-11-12 7:55 ` Takashi Iwai @ 2007-11-12 12:03 ` Mike Gorse 2007-11-13 11:34 ` Takashi Iwai 0 siblings, 1 reply; 4+ messages in thread From: Mike Gorse @ 2007-11-12 12:03 UTC (permalink / raw) To: Takashi Iwai; +Cc: alsa-devel [-- Attachment #1: Type: TEXT/PLAIN, Size: 633 bytes --] Hi Takashi, > Can't you reopen (as feedback)? Oh, perhaps I could; I haven't used Mantis before and didn't look that carefully :( >> Also, I'm still encountering bug 2601 (a separate assert failure that >> happens if period_size == 0) even with the patch to pcm_ioplug.c. I think >> that PERIOD_TIME and PERIODS need to be constrained; I added a couple of >> comments to the bug. > > Hm, does it happen with the latest HG tree, too? Yes (at least with the latest hg tree that was accessible via hg-mirror a few minutes ago). I put a patch on the bug that does make things work. Test case attached (adapted from flite mostly) [-- Attachment #2: Type: TEXT/x-csrc, Size: 2815 bytes --] #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #include <unistd.h> #include <alsa/asoundlib.h> static int getAvailableFrames(snd_pcm_t *pcm, int *xrunOccurred) { snd_pcm_sframes_t framesAvail = snd_pcm_avail_update( pcm ); *xrunOccurred = 0; if( -EPIPE == framesAvail ) { *xrunOccurred = 1; framesAvail = 0; } return framesAvail; } static char *buf; snd_pcm_t *audio_open_alsa(const char *pcm_dev_name, int sps, int channels) { unsigned int real_rate; int err; unsigned long bufSz = 1411; snd_pcm_t *pcm_handle; snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK; snd_pcm_hw_params_t *hwparams; snd_pcm_format_t format; snd_pcm_access_t access = SND_PCM_ACCESS_RW_INTERLEAVED; /* Allocate the snd_pcm_hw_params_t structure on the stack. */ snd_pcm_hw_params_alloca(&hwparams); /* Open pcm device */ err = snd_pcm_open(&pcm_handle, pcm_dev_name, stream, 0); if (err < 0) { return NULL; } /* Init hwparams with full configuration space */ err = snd_pcm_hw_params_any(pcm_handle, hwparams); if (err < 0) { snd_pcm_close(pcm_handle); return NULL; } /* Set access mode */ err = snd_pcm_hw_params_set_access(pcm_handle, hwparams, access); if (err < 0) { snd_pcm_close(pcm_handle); return NULL; } format = SND_PCM_FORMAT_S16_LE; /* Set samble format */ err = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format); if (err <0) { snd_pcm_close(pcm_handle); return NULL; } /* Set sample rate near the disired rate */ real_rate = sps; err = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &real_rate, 0); if (err < 0) { snd_pcm_close(pcm_handle); return NULL; } /* Set number of channels */ assert(channels >0); err = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, channels); if (err < 0) { snd_pcm_close(pcm_handle); return NULL; } snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &bufSz); /* Commit hardware parameters */ err = snd_pcm_hw_params(pcm_handle, hwparams); if (err < 0) { snd_pcm_close(pcm_handle); return NULL; } /* Make sure the device is ready to accept data */ assert(snd_pcm_state(pcm_handle) == SND_PCM_STATE_PREPARED); return pcm_handle; } main(int argc, const char *argv[]) { snd_pcm_t *pcm; buf = (char *)malloc(1000000); pcm = audio_open_alsa("default", 22050, 1); int xrun; int result; pthread_t th; if (!pcm) { fprintf(stderr, "Couldn't open pcm\n"); exit(1); } unsigned long avail = snd_pcm_avail_update(pcm); if (avail > 100000) avail = 100000; result = snd_pcm_writei(pcm, buf, avail); } [-- Attachment #3: Type: text/plain, Size: 160 bytes --] _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: issues with pulse plugin 2007-11-12 12:03 ` Mike Gorse @ 2007-11-13 11:34 ` Takashi Iwai 0 siblings, 0 replies; 4+ messages in thread From: Takashi Iwai @ 2007-11-13 11:34 UTC (permalink / raw) To: Mike Gorse; +Cc: alsa-devel At Mon, 12 Nov 2007 07:03:17 -0500 (EST), Mike Gorse wrote: > > Hi Takashi, > > > Can't you reopen (as feedback)? > > Oh, perhaps I could; I haven't used Mantis before and didn't look that > carefully :( > > >> Also, I'm still encountering bug 2601 (a separate assert failure that > >> happens if period_size == 0) even with the patch to pcm_ioplug.c. I think > >> that PERIOD_TIME and PERIODS need to be constrained; I added a couple of > >> comments to the bug. > > > > Hm, does it happen with the latest HG tree, too? > > Yes (at least with the latest hg tree that was accessible via hg-mirror a > few minutes ago). I put a patch on the bug that does make things work. > Test case attached (adapted from flite mostly) Thanks. The addition of the two missing parameter constraints look sane to me. Now applied to HG tree. Takashi ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-11-13 15:22 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-11-08 22:21 issues with pulse plugin Mike Gorse 2007-11-12 7:55 ` Takashi Iwai 2007-11-12 12:03 ` Mike Gorse 2007-11-13 11:34 ` Takashi Iwai
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).