Just to add: (yes I know I didn't free the hwparams structure, but it is done in the rest of the code I cut)
the "speaker" device is virtual, generated with dmix on asound.conf: pcm.pcm1774 { type hw card 0 } ctl.pcm1774 { type hw card 0 }
pcm.buzzer { type dshare ipc_key 6678293 ipc_key_add_uid yes slave { pcm "hw:0,0" buffer_size 16384 period_time 2 period_size 1024 } bindings { 0 0 } }
pcm.speaker { type dshare ipc_key 6678293 ipc_key_add_uid yes slave { pcm "hw:0,0" buffer_size 16384 period_time 2 period_size 1024 } bindings { 0 1 } }
Fortini Matteo ha scritto:
Hi, I'm experiencing a very strange behavior.
I'm using alsa 1.0.18 on a powerpc platform.
If I run the following simple code from the main of a .c file, it works perfectly, but if I put into a shared .so library (libaudio.so), then I link the main with -laudio -lasound, then the hwparams structure is not filled with anything, while the alsa functions don't return any error.
Do you have any clue why this could happen?
TIA
############################################################ int play_sample(char *pcm_name, char *samplename) { int res; snd_pcm_t *pcm_handle; snd_pcm_hw_params_t *hwparams; const char *name= (pcm_name != NULL) ? pcm_name : "speaker";
if ( (res = snd_pcm_open(&pcm_handle, name, SND_PCM_STREAM_PLAYBACK,
0)) < 0) { fprintf(stderr, "Error opening PCM device %s\n", pcm_name); return 1; } else { printf ("snd_pcm_open returned %d\n", res); }
snd_pcm_hw_params_malloc(&hwparams); if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) { fprintf(stderr, "Can not configure this PCM device.\n"); return 1;
snd_pcm_close(pcm_handle); }
int main (void) { play_sample (NULL, "test_sound.wav);
return 0;
} ############################################################ _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel