struct usb_mixer_elem_list { struct usb_mixer_interface *mixer; struct usb_mixer_elem_list *next_id_elem; /* list of controls with same id */ struct snd_kcontrol *kctl; unsignedint id; bool is_std_info;
usb_mixer_elem_dump_func_t dump;
usb_mixer_elem_resume_func_t resume;
};
/* iterate over mixer element list of the given unit id */ #define for_each_mixer_elem(list, mixer, id) \ for ((list) = (mixer)->id_elems[id]; (list); (list) = (list)->next_id_elem) #define mixer_elem_list_to_info(list) \
container_of(list, struct usb_mixer_elem_info, head)
struct usb_mixer_elem_info { struct usb_mixer_elem_list head; unsignedint control; /* CS or ICN (high byte) */ unsignedint cmask; /* channel mask bitmap: 0 = master */ unsignedint idx_off; /* Control index offset */ unsignedint ch_readonly; unsignedint master_readonly; int channels; int val_type; int min, max, res; int max_exposed; /* control API exposes the value in 0..max_exposed */ int dBmin, dBmax; int cached; int cache_val[MAX_CHANNELS];
u8 initialized;
u8 min_mute; void *private_data;
};
int snd_usb_create_mixer(struct snd_usb_audio *chip, int ctrlif); void snd_usb_mixer_disconnect(struct usb_mixer_interface *mixer);
void snd_usb_mixer_notify_id(struct usb_mixer_interface *mixer, int unitid);
int snd_usb_mixer_set_ctl_value(struct usb_mixer_elem_info *cval, int request, int validx, int value_set);
int snd_usb_mixer_add_list(struct usb_mixer_elem_list *list, struct snd_kcontrol *kctl, bool is_std_info);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.