コード例 #1
0
ファイル: wmmixer-alsa.c プロジェクト: bbidulock/dockapps
void setVol(int left, int right)
{
	int err;
	callbacks();
	cure->element.data.volume1.pvoices[0]=convert_range(left,0,100,cure->info.data.volume1.prange[0].min,cure->info.data.volume1.prange[0].max);
	if(cure->element.data.volume1.pvoices[0]>cure->info.data.volume1.prange[0].max)
		cure->element.data.volume1.pvoices[0]=cure->info.data.volume1.prange[0].max;
	if(cure->element.data.volume1.pvoices[0]<cure->info.data.volume1.prange[0].min)
		cure->element.data.volume1.pvoices[0]=cure->info.data.volume1.prange[0].min;
	cure->element.data.volume1.pvoices[1]=convert_range(right,0,100,cure->info.data.volume1.prange[1].min,cure->info.data.volume1.prange[1].max);
	if(cure->element.data.volume1.pvoices[1]>cure->info.data.volume1.prange[1].max)
		cure->element.data.volume1.pvoices[1]=cure->info.data.volume1.prange[1].max;
	if((err=snd_mixer_element_write(mixer_handle,&cure->element))<0)
		fprintf(stderr,"Mixer element write error: %s\n",snd_strerror(err));
	return;
}
コード例 #2
0
ファイル: ad_alsa.c プロジェクト: 10v/cmusphinx
static int
setlevels(int card, int device)
{
    snd_mixer_t *handle;
    snd_mixer_element_t element;
    int idx;
    int err;

    if ((err = snd_mixer_open(&handle, card, device)) < 0) { 
	fprintf(stderr, "open failed: %s\n", snd_strerror(err)); 
	return -1;
    } 
    memset((void *)&element, '\0', sizeof(element));
    strcpy(element.eid.name, "MIC Input Switch");
    element.eid.index = 0;
    element.eid.type = SND_MIXER_ETYPE_SWITCH1;
    err = snd_mixer_element_build(handle, &element);
    if (err < 0) {
	fprintf(stderr, "error building input switch element: %s\n",snd_strerror(err));
	snd_mixer_close(handle); 
	return -1;
    }
    /* This is a bit ugly and hardcoded, should be fixed when the ad layer
       API is a bit richer. SNL */
    for (idx = 0; idx < element.data.switch1.sw; idx++)
	snd_mixer_set_bit(element.data.switch1.psw, idx, 1);
    err = snd_mixer_element_write(handle, &element);
    if (err < 0) {
	fprintf(stderr, "error writing switch element: %s\n",snd_strerror(err));
	snd_mixer_close(handle);
	return -1;
    }
    snd_mixer_element_free(&element);
    snd_mixer_close(handle); 
    return 0;
}