mirror of
				https://github.com/alsa-project/alsa-tools.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	sound - fix .iface field of mixer control elements
This patch changes .iface to SNDRV_CTL_ELEM_IFACE_MIXER whre _PCM or _HWDEP was used in controls that are not associated with a specific PCM (sub)stream or hwdep device, and changes some controls that got inconsitent .iface values due to copy+paste errors. Furthermore, it makes sure that all control that do use _PCM or _HWDEP use the correct number in the .device field.
This commit is contained in:
		
							parent
							
								
									2ec6fcc317
								
							
						
					
					
						commit
						7fcbc9917e
					
				
					 11 changed files with 87 additions and 69 deletions
				
			
		| 
						 | 
					@ -32,10 +32,7 @@ static void setAebStatus(char *ctl_name, int val, int card_index)
 | 
				
			||||||
    snd_ctl_elem_value_alloca(&ctl);
 | 
					    snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
    snd_ctl_elem_id_alloca(&id);
 | 
					    snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
    snd_ctl_elem_id_set_name(id, ctl_name);
 | 
					    snd_ctl_elem_id_set_name(id, ctl_name);
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(id, 0);
 | 
					    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_device(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(id, 0);
 | 
					    snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(ctl, id);
 | 
					    snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
    snd_ctl_elem_value_set_integer(ctl, 0, val);
 | 
					    snd_ctl_elem_value_set_integer(ctl, 0, val);
 | 
				
			||||||
| 
						 | 
					@ -44,8 +41,13 @@ static void setAebStatus(char *ctl_name, int val, int card_index)
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
					    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
	fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
						snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
				
			||||||
	return;
 | 
						snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
 | 
						    fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
				
			||||||
 | 
						    snd_ctl_close(handle);
 | 
				
			||||||
 | 
						    return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    snd_ctl_close(handle);
 | 
					    snd_ctl_close(handle);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,10 +32,7 @@ static void setXlrStatus(char *ctl_name, int val, int card_index)
 | 
				
			||||||
    snd_ctl_elem_value_alloca(&ctl);
 | 
					    snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
    snd_ctl_elem_id_alloca(&id);
 | 
					    snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
    snd_ctl_elem_id_set_name(id, ctl_name);
 | 
					    snd_ctl_elem_id_set_name(id, ctl_name);
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(id, 0);
 | 
					    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_device(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(id, 0);
 | 
					    snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(ctl, id);
 | 
					    snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
    snd_ctl_elem_value_set_integer(ctl, 0, val);
 | 
					    snd_ctl_elem_value_set_integer(ctl, 0, val);
 | 
				
			||||||
| 
						 | 
					@ -44,8 +41,13 @@ static void setXlrStatus(char *ctl_name, int val, int card_index)
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
					    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
	fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
						snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
				
			||||||
	return;
 | 
						snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
 | 
						    fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
				
			||||||
 | 
						    snd_ctl_close(handle);
 | 
				
			||||||
 | 
						    return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    snd_ctl_close(handle);
 | 
					    snd_ctl_close(handle);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,10 +60,7 @@ void clock_source_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
	snd_ctl_elem_value_alloca(&ctl);
 | 
						snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
	snd_ctl_elem_id_alloca(&id);
 | 
						snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
	snd_ctl_elem_id_set_name(id, "Sample Clock Source");
 | 
						snd_ctl_elem_id_set_name(id, "Sample Clock Source");
 | 
				
			||||||
	snd_ctl_elem_id_set_numid(id, 0);
 | 
						snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
	snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_PCM);
 | 
					 | 
				
			||||||
	snd_ctl_elem_id_set_device(id, 0);
 | 
					 | 
				
			||||||
	snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
	snd_ctl_elem_id_set_index(id, 0);
 | 
						snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
	snd_ctl_elem_value_set_id(ctl, id);
 | 
						snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
	snd_ctl_elem_value_set_enumerated(ctl, 0, src);
 | 
						snd_ctl_elem_value_set_enumerated(ctl, 0, src);
 | 
				
			||||||
| 
						 | 
					@ -72,8 +69,13 @@ void clock_source_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	} 
 | 
						} 
 | 
				
			||||||
	if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
		fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
							snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_PCM);
 | 
				
			||||||
		return;
 | 
							snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
 | 
							if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
 | 
								fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
				
			||||||
 | 
								snd_ctl_close(handle);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	snd_ctl_close(handle);
 | 
						snd_ctl_close(handle);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,10 +43,7 @@ void input_level_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
    snd_ctl_elem_value_alloca(&ctl);
 | 
					    snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
    snd_ctl_elem_id_alloca(&id);
 | 
					    snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
    snd_ctl_elem_id_set_name(id, "AD Gain");
 | 
					    snd_ctl_elem_id_set_name(id, "AD Gain");
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(id, 0);
 | 
					    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_device(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(id, 0);
 | 
					    snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(ctl, id);
 | 
					    snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
    snd_ctl_elem_value_set_enumerated(ctl, 0, gain);
 | 
					    snd_ctl_elem_value_set_enumerated(ctl, 0, gain);
 | 
				
			||||||
| 
						 | 
					@ -55,8 +52,13 @@ void input_level_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
					    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
	fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
						snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
				
			||||||
	return;
 | 
						snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
 | 
						    fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
				
			||||||
 | 
						    snd_ctl_close(handle);
 | 
				
			||||||
 | 
						    return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    snd_ctl_close(handle);
 | 
					    snd_ctl_close(handle);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,10 +43,7 @@ void output_level_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
    snd_ctl_elem_value_alloca(&ctl);
 | 
					    snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
    snd_ctl_elem_id_alloca(&id);
 | 
					    snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
    snd_ctl_elem_id_set_name(id, "DA Gain");
 | 
					    snd_ctl_elem_id_set_name(id, "DA Gain");
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(id, 0);
 | 
					    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_device(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(id, 0);
 | 
					    snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(ctl, id);
 | 
					    snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
    snd_ctl_elem_value_set_enumerated(ctl, 0, gain);
 | 
					    snd_ctl_elem_value_set_enumerated(ctl, 0, gain);
 | 
				
			||||||
| 
						 | 
					@ -55,8 +52,13 @@ void output_level_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
					    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
	fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
						snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
				
			||||||
	return;
 | 
						snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
 | 
						    fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
				
			||||||
 | 
						    snd_ctl_close(handle);
 | 
				
			||||||
 | 
						    return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    snd_ctl_close(handle);
 | 
					    snd_ctl_close(handle);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,10 +43,7 @@ void phones_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
    snd_ctl_elem_value_alloca(&ctl);
 | 
					    snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
    snd_ctl_elem_id_alloca(&id);
 | 
					    snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
    snd_ctl_elem_id_set_name(id, "Phones Gain");
 | 
					    snd_ctl_elem_id_set_name(id, "Phones Gain");
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(id, 0);
 | 
					    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_device(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(id, 0);
 | 
					    snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(ctl, id);
 | 
					    snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
    snd_ctl_elem_value_set_enumerated(ctl, 0, gain);
 | 
					    snd_ctl_elem_value_set_enumerated(ctl, 0, gain);
 | 
				
			||||||
| 
						 | 
					@ -55,8 +52,13 @@ void phones_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
					    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
	fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
						snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
				
			||||||
	return;
 | 
						snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
 | 
						    fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
				
			||||||
 | 
						    snd_ctl_close(handle);
 | 
				
			||||||
 | 
						    return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    snd_ctl_close(handle);
 | 
					    snd_ctl_close(handle);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,10 +49,7 @@ void pref_sync_ref_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
    snd_ctl_elem_value_alloca(&ctl);
 | 
					    snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
    snd_ctl_elem_id_alloca(&id);
 | 
					    snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
    snd_ctl_elem_id_set_name(id, "Preferred Sync Reference");
 | 
					    snd_ctl_elem_id_set_name(id, "Preferred Sync Reference");
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(id, 0);
 | 
					    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_device(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(id, 0);
 | 
					    snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(ctl, id);
 | 
					    snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
    snd_ctl_elem_value_set_enumerated(ctl, 0, ref);
 | 
					    snd_ctl_elem_value_set_enumerated(ctl, 0, ref);
 | 
				
			||||||
| 
						 | 
					@ -61,8 +58,13 @@ void pref_sync_ref_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
					    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
	fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name); 
 | 
						snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
				
			||||||
	return;
 | 
						snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
 | 
						    fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name); 
 | 
				
			||||||
 | 
						    snd_ctl_close(handle);
 | 
				
			||||||
 | 
						    return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    snd_ctl_close(handle);
 | 
					    snd_ctl_close(handle);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,10 +45,7 @@ void spdif_in_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
    snd_ctl_elem_value_alloca(&ctl);
 | 
					    snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
    snd_ctl_elem_id_alloca(&id);
 | 
					    snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
    snd_ctl_elem_id_set_name(id, "IEC958 Input Connector");
 | 
					    snd_ctl_elem_id_set_name(id, "IEC958 Input Connector");
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(id, 0);
 | 
					    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_PCM);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_device(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(id, 0);
 | 
					    snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(ctl, id);
 | 
					    snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
    snd_ctl_elem_value_set_enumerated(ctl, 0, in);
 | 
					    snd_ctl_elem_value_set_enumerated(ctl, 0, in);
 | 
				
			||||||
| 
						 | 
					@ -57,8 +54,13 @@ void spdif_in_cb(Fl_Widget *w, void *arg)
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
					    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
	fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
						snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_PCM);
 | 
				
			||||||
	return;
 | 
						snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
 | 
						    fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
				
			||||||
 | 
						    snd_ctl_close(handle);
 | 
				
			||||||
 | 
						    return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    snd_ctl_close(handle);
 | 
					    snd_ctl_close(handle);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,10 +32,7 @@ static void setSpdifBit(char *ctl_name, int val, int card_index)
 | 
				
			||||||
    snd_ctl_elem_value_alloca(&ctl);
 | 
					    snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
    snd_ctl_elem_id_alloca(&id);
 | 
					    snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
    snd_ctl_elem_id_set_name(id, ctl_name);
 | 
					    snd_ctl_elem_id_set_name(id, ctl_name);
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(id, 0);
 | 
					    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_device(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(id, 0);
 | 
					    snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(ctl, id);
 | 
					    snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
    snd_ctl_elem_value_set_integer(ctl, 0, val);
 | 
					    snd_ctl_elem_value_set_integer(ctl, 0, val);
 | 
				
			||||||
| 
						 | 
					@ -44,8 +41,13 @@ static void setSpdifBit(char *ctl_name, int val, int card_index)
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
					    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
	fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
						snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
				
			||||||
	return;
 | 
						snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
 | 
						    fprintf(stderr, "Error accessing ctl interface on card %s\n", card_name);
 | 
				
			||||||
 | 
						    snd_ctl_close(handle);
 | 
				
			||||||
 | 
						    return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    snd_ctl_close(handle);
 | 
					    snd_ctl_close(handle);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -155,13 +155,14 @@ int HDSPMixerCard::getAutosyncSpeed()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    snd_ctl_elem_id_set_name(elemid, "System Sample Rate");
 | 
					    snd_ctl_elem_id_set_name(elemid, "System Sample Rate");
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(elemid, 16);
 | 
					    snd_ctl_elem_id_set_interface(elemid, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
    snd_ctl_elem_id_set_interface(elemid, SND_CTL_ELEM_IFACE_HWDEP);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_device(elemid, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(elemid, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(elemid, 0);
 | 
					    snd_ctl_elem_id_set_index(elemid, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(elemval, elemid);
 | 
					    snd_ctl_elem_value_set_id(elemval, elemid);
 | 
				
			||||||
    snd_ctl_elem_read(handle, elemval);
 | 
					    if (snd_ctl_elem_read(handle, elemval) < 0) {
 | 
				
			||||||
 | 
						snd_ctl_elem_id_set_interface(elemid, SND_CTL_ELEM_IFACE_HWDEP);
 | 
				
			||||||
 | 
						snd_ctl_elem_value_set_id(elemval, elemid);
 | 
				
			||||||
 | 
						snd_ctl_elem_read(handle, elemval);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    rate = snd_ctl_elem_value_get_integer(elemval, 0);
 | 
					    rate = snd_ctl_elem_value_get_integer(elemval, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    snd_ctl_close(handle);
 | 
					    snd_ctl_close(handle);
 | 
				
			||||||
| 
						 | 
					@ -187,13 +188,14 @@ int HDSPMixerCard::getSpeed()
 | 
				
			||||||
	return -1; 
 | 
						return -1; 
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    snd_ctl_elem_id_set_name(elemid, "Sample Clock Source");
 | 
					    snd_ctl_elem_id_set_name(elemid, "Sample Clock Source");
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(elemid, 11);
 | 
					    snd_ctl_elem_id_set_interface(elemid, SND_CTL_ELEM_IFACE_MIXER);
 | 
				
			||||||
    snd_ctl_elem_id_set_interface(elemid, SND_CTL_ELEM_IFACE_PCM);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_device(elemid, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(elemid, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(elemid, 0);
 | 
					    snd_ctl_elem_id_set_index(elemid, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(elemval, elemid);
 | 
					    snd_ctl_elem_value_set_id(elemval, elemid);
 | 
				
			||||||
    snd_ctl_elem_read(handle, elemval);
 | 
					    if (snd_ctl_elem_read(handle, elemval) < 0) {
 | 
				
			||||||
 | 
						snd_ctl_elem_id_set_interface(elemid, SND_CTL_ELEM_IFACE_PCM);
 | 
				
			||||||
 | 
						snd_ctl_elem_value_set_id(elemval, elemid);
 | 
				
			||||||
 | 
						snd_ctl_elem_read(handle, elemval);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    val = snd_ctl_elem_value_get_enumerated(elemval, 0);
 | 
					    val = snd_ctl_elem_value_get_enumerated(elemval, 0);
 | 
				
			||||||
    snd_ctl_close(handle);
 | 
					    snd_ctl_close(handle);
 | 
				
			||||||
    switch (val) {
 | 
					    switch (val) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -918,10 +918,8 @@ void HDSPMixerWindow::setGain(int in, int out, int value)
 | 
				
			||||||
    snd_ctl_elem_value_alloca(&ctl);
 | 
					    snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
    snd_ctl_elem_id_alloca(&id);
 | 
					    snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
    snd_ctl_elem_id_set_name(id, "Mixer");
 | 
					    snd_ctl_elem_id_set_name(id, "Mixer");
 | 
				
			||||||
    snd_ctl_elem_id_set_numid(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
					    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
				
			||||||
    snd_ctl_elem_id_set_device(id, 0);
 | 
					    snd_ctl_elem_id_set_device(id, 0);
 | 
				
			||||||
    snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
    snd_ctl_elem_id_set_index(id, 0);
 | 
					    snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
    snd_ctl_elem_value_set_id(ctl, id);
 | 
					    snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -966,10 +964,8 @@ void HDSPMixerWindow::setMixer(int idx, int src, int dst)
 | 
				
			||||||
	snd_ctl_elem_value_alloca(&ctl);
 | 
						snd_ctl_elem_value_alloca(&ctl);
 | 
				
			||||||
	snd_ctl_elem_id_alloca(&id);
 | 
						snd_ctl_elem_id_alloca(&id);
 | 
				
			||||||
	snd_ctl_elem_id_set_name(id, "Mixer");
 | 
						snd_ctl_elem_id_set_name(id, "Mixer");
 | 
				
			||||||
	snd_ctl_elem_id_set_numid(id, 0);
 | 
					 | 
				
			||||||
	snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
						snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
 | 
				
			||||||
	snd_ctl_elem_id_set_device(id, 0);
 | 
						snd_ctl_elem_id_set_device(id, 0);
 | 
				
			||||||
	snd_ctl_elem_id_set_subdevice(id, 0);
 | 
					 | 
				
			||||||
	snd_ctl_elem_id_set_index(id, 0);
 | 
						snd_ctl_elem_id_set_index(id, 0);
 | 
				
			||||||
	snd_ctl_elem_value_set_id(ctl, id);
 | 
						snd_ctl_elem_value_set_id(ctl, id);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -1009,6 +1005,7 @@ muted:
 | 
				
			||||||
	snd_ctl_elem_value_set_integer(ctl, 2, (int)left_val);
 | 
						snd_ctl_elem_value_set_integer(ctl, 2, (int)left_val);
 | 
				
			||||||
	if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
	    fprintf(stderr, "Alsa error: %s\n", snd_strerror(err));
 | 
						    fprintf(stderr, "Alsa error: %s\n", snd_strerror(err));
 | 
				
			||||||
 | 
						    snd_ctl_close(handle);
 | 
				
			||||||
	    return;
 | 
						    return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	snd_ctl_elem_value_set_integer(ctl, 0, src*cards[current_card]->playbacks_offset+cards[current_card]->channel_map[idx-1]);
 | 
						snd_ctl_elem_value_set_integer(ctl, 0, src*cards[current_card]->playbacks_offset+cards[current_card]->channel_map[idx-1]);
 | 
				
			||||||
| 
						 | 
					@ -1016,6 +1013,7 @@ muted:
 | 
				
			||||||
	snd_ctl_elem_value_set_integer(ctl, 2, (int)right_val);
 | 
						snd_ctl_elem_value_set_integer(ctl, 2, (int)right_val);
 | 
				
			||||||
	if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
						if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
 | 
				
			||||||
	    fprintf(stderr, "Alsa error: %s\n", snd_strerror(err));
 | 
						    fprintf(stderr, "Alsa error: %s\n", snd_strerror(err));
 | 
				
			||||||
 | 
						    snd_ctl_close(handle);
 | 
				
			||||||
	    return;
 | 
						    return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	snd_ctl_close(handle);
 | 
						snd_ctl_close(handle);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue