[alsa-devel] Alsa not working when linked to a library

Fortini Matteo matteo.fortini at mta.it
Fri Sep 25 19:10:36 CEST 2009


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 at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
>   




More information about the Alsa-devel mailing list