Lines Matching full:ext
44 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_close() local
46 if (ext->callback->close) in snd_ctl_ext_close()
47 ext->callback->close(ext); in snd_ctl_ext_close()
53 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_nonblock() local
55 ext->nonblock = nonblock; in snd_ctl_ext_nonblock()
68 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_subscribe_events() local
71 return ext->subscribed; in snd_ctl_ext_subscribe_events()
72 ext->subscribed = !!subscribe; in snd_ctl_ext_subscribe_events()
73 if (ext->callback->subscribe_events) in snd_ctl_ext_subscribe_events()
74 ext->callback->subscribe_events(ext, subscribe); in snd_ctl_ext_subscribe_events()
80 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_card_info() local
83 info->card = ext->card_idx; in snd_ctl_ext_card_info()
84 memcpy(info->id, ext->id, sizeof(info->id)); in snd_ctl_ext_card_info()
85 memcpy(info->driver, ext->driver, sizeof(info->driver)); in snd_ctl_ext_card_info()
86 memcpy(info->name, ext->name, sizeof(info->name)); in snd_ctl_ext_card_info()
87 memcpy(info->longname, ext->longname, sizeof(info->longname)); in snd_ctl_ext_card_info()
88 memcpy(info->mixername, ext->mixername, sizeof(info->mixername)); in snd_ctl_ext_card_info()
94 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_elem_list() local
99 list->count = ext->callback->elem_count(ext); in snd_ctl_ext_elem_list()
107 ret = ext->callback->elem_list(ext, offset, ids); in snd_ctl_ext_elem_list()
118 static snd_ctl_ext_key_t get_elem(snd_ctl_ext_t *ext, snd_ctl_elem_id_t *id) in get_elem() argument
122 ext->callback->elem_list(ext, numid - 1, id); in get_elem()
126 return ext->callback->find_elem(ext, id); in get_elem()
131 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_elem_info() local
135 key = get_elem(ext, &info->id); in snd_ctl_ext_elem_info()
138 ret = ext->callback->get_attribute(ext, key, &type, &info->access, &info->count); in snd_ctl_ext_elem_info()
150 if (! ext->callback->get_integer_info) in snd_ctl_ext_elem_info()
152 ret = ext->callback->get_integer_info(ext, key, &info->value.integer.min, in snd_ctl_ext_elem_info()
157 if (! ext->callback->get_integer64_info) in snd_ctl_ext_elem_info()
161 ret = ext->callback->get_integer64_info(ext, key, in snd_ctl_ext_elem_info()
171 if (! ext->callback->get_enumerated_info) in snd_ctl_ext_elem_info()
173 ret = ext->callback->get_enumerated_info(ext, key, &info->value.enumerated.items); in snd_ctl_ext_elem_info()
174 ext->callback->get_enumerated_name(ext, key, info->value.enumerated.item, in snd_ctl_ext_elem_info()
184 if (ext->callback->free_key) in snd_ctl_ext_elem_info()
185 ext->callback->free_key(ext, key); in snd_ctl_ext_elem_info()
210 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_elem_read() local
215 key = get_elem(ext, &control->id); in snd_ctl_ext_elem_read()
218 ret = ext->callback->get_attribute(ext, key, &type, &access, &count); in snd_ctl_ext_elem_read()
225 if (! ext->callback->read_integer) in snd_ctl_ext_elem_read()
227 ret = ext->callback->read_integer(ext, key, control->value.integer.value); in snd_ctl_ext_elem_read()
230 if (! ext->callback->read_integer64) in snd_ctl_ext_elem_read()
232 ret = ext->callback->read_integer64(ext, key, in snd_ctl_ext_elem_read()
236 if (! ext->callback->read_enumerated) in snd_ctl_ext_elem_read()
238 ret = ext->callback->read_enumerated(ext, key, control->value.enumerated.item); in snd_ctl_ext_elem_read()
241 if (! ext->callback->read_bytes) in snd_ctl_ext_elem_read()
243 ret = ext->callback->read_bytes(ext, key, control->value.bytes.data, in snd_ctl_ext_elem_read()
247 if (! ext->callback->read_iec958) in snd_ctl_ext_elem_read()
249 ret = ext->callback->read_iec958(ext, key, (snd_aes_iec958_t *)&control->value.iec958); in snd_ctl_ext_elem_read()
256 if (ext->callback->free_key) in snd_ctl_ext_elem_read()
257 ext->callback->free_key(ext, key); in snd_ctl_ext_elem_read()
264 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_elem_write() local
269 key = get_elem(ext, &control->id); in snd_ctl_ext_elem_write()
272 ret = ext->callback->get_attribute(ext, key, &type, &access, &count); in snd_ctl_ext_elem_write()
279 if (! ext->callback->write_integer) in snd_ctl_ext_elem_write()
281 ret = ext->callback->write_integer(ext, key, control->value.integer.value); in snd_ctl_ext_elem_write()
284 if (! ext->callback->write_integer64) in snd_ctl_ext_elem_write()
286 ret = ext->callback->write_integer64(ext, key, (int64_t *)control->value.integer64.value); in snd_ctl_ext_elem_write()
289 if (! ext->callback->write_enumerated) in snd_ctl_ext_elem_write()
291 ret = ext->callback->write_enumerated(ext, key, control->value.enumerated.item); in snd_ctl_ext_elem_write()
294 if (! ext->callback->write_bytes) in snd_ctl_ext_elem_write()
296 ret = ext->callback->write_bytes(ext, key, control->value.bytes.data, in snd_ctl_ext_elem_write()
300 if (! ext->callback->write_iec958) in snd_ctl_ext_elem_write()
302 ret = ext->callback->write_iec958(ext, key, (snd_aes_iec958_t *)&control->value.iec958); in snd_ctl_ext_elem_write()
309 if (ext->callback->free_key) in snd_ctl_ext_elem_write()
310 ext->callback->free_key(ext, key); in snd_ctl_ext_elem_write()
331 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_elem_tlv() local
338 if (ext->version <= SNDRV_PROTOCOL_VERSION(1, 0, 0)) in snd_ctl_ext_elem_tlv()
343 ext->callback->elem_list(ext, numid - 1, &id); in snd_ctl_ext_elem_tlv()
347 key = ext->callback->find_elem(ext, &id); in snd_ctl_ext_elem_tlv()
351 ret = ext->callback->get_attribute(ext, key, &type, &access, &count); in snd_ctl_ext_elem_tlv()
360 return ext->tlv.c(ext, key, op_flag, numid, tlv, tlv_size); in snd_ctl_ext_elem_tlv()
364 len = ext->tlv.p[1] + 2 * sizeof(unsigned int); in snd_ctl_ext_elem_tlv()
367 memcpy(tlv, ext->tlv.p, len); in snd_ctl_ext_elem_tlv()
416 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_read() local
418 if (ext->callback->read_event) { in snd_ctl_ext_read()
420 return ext->callback->read_event(ext, &event->data.elem.id, &event->data.elem.mask); in snd_ctl_ext_read()
428 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_poll_descriptors_count() local
430 if (ext->callback->poll_descriptors_count) in snd_ctl_ext_poll_descriptors_count()
431 return ext->callback->poll_descriptors_count(ext); in snd_ctl_ext_poll_descriptors_count()
432 if (ext->poll_fd >= 0) in snd_ctl_ext_poll_descriptors_count()
439 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_poll_descriptors() local
441 if (ext->callback->poll_descriptors) in snd_ctl_ext_poll_descriptors()
442 return ext->callback->poll_descriptors(ext, pfds, space); in snd_ctl_ext_poll_descriptors()
443 if (ext->poll_fd < 0) in snd_ctl_ext_poll_descriptors()
446 pfds->fd = ext->poll_fd; in snd_ctl_ext_poll_descriptors()
455 snd_ctl_ext_t *ext = handle->private_data; in snd_ctl_ext_poll_revents() local
457 if (ext->callback->poll_revents) in snd_ctl_ext_poll_revents()
458 return ext->callback->poll_revents(ext, pfds, nfds, revents); in snd_ctl_ext_poll_revents()
541 snd_ctl_ext_t ext;
571 myctl->ext.version = SND_CTL_EXT_VERSION;
572 myctl->ext.card_idx = 0;
573 strcpy(myctl->ext.id, "Myctl");
574 strcpy(myctl->ext.name, "My Control");
575 strcpy(myctl->ext.longname, "My External Control for Foobar");
576 strcpy(myctl->ext.mixername, "My Control");
577 myctl->ext.callback = &my_own_callback;
578 myctl->ext.private_data = myctl;
581 err = snd_pcm_extplug_create(&myctl->ext, name, mode);
587 *phandle = myctl->ext.handle;
700 * \param ext the plugin handle
708 int snd_ctl_ext_create(snd_ctl_ext_t *ext, const char *name, int mode) in snd_ctl_ext_create() argument
713 if (ext->version < SNDRV_PROTOCOL_VERSION(1, 0, 0) || in snd_ctl_ext_create()
714 ext->version > SND_CTL_EXT_VERSION) { in snd_ctl_ext_create()
723 ext->handle = ctl; in snd_ctl_ext_create()
726 ctl->private_data = ext; in snd_ctl_ext_create()
727 ctl->poll_fd = ext->poll_fd; in snd_ctl_ext_create()
729 ext->nonblock = 1; in snd_ctl_ext_create()
736 * \param ext the plugin handle
739 int snd_ctl_ext_delete(snd_ctl_ext_t *ext) in snd_ctl_ext_delete() argument
741 return snd_ctl_close(ext->handle); in snd_ctl_ext_delete()