- Backport upstream fixes: 0001-ucm-substitution-remove-duplicate-allow_empty-assign.patch 0002-ucm-fix-parse_get_safe_name-safe-name-must-be-checke.patch 0003-ucm-substitute-the-merged-tree-completely.patch 0004-ctl-improve-documentation-for-identifier-of-control-.patch 0005-pcm-dmix-make-lockless-operation-optional.patch 0006-pcm-dmix-Fix-semaphore-usage-with-lockless-operation.patch 0007-pcm-iec958-implement-HDMI-HBR-audio-formatting.patch 0008-pcm-iec958-set-channel-status-bits-according-to-rate.patch 0009-conf-pcm-USB-Added-S-PDIF-fix-for-Asus-Xonar-SE.patch 0010-control-ctlparse-fix-enum-values-in-or.patch 0011-conf-USB-Audio-Disable-IEC958-on-Lenovo-ThinkStation.patch 0012-pcm-dmix-fix-access-to-sum-buffer-in-non-interleaved.patch 0014-control-Add-documentation-for-snd_ctl_elem_list_.patch 0015-conf-quote-also-strings-with-and-characters-in-strin.patch 0016-topology-decode-Fix-channel-map-memory-allocation.patch 0017-topology-decode-Fix-infinite-loop-in-decoding-enum-c.patch 0018-topology-decode-Remove-decoding-values-for-enum-cont.patch 0019-topology-decode-Add-enum-control-texts-as-separate-e.patch 0020-topology-decode-Fix-printing-texts-section.patch 0021-topology-decode-Change-declaration-of-enum-decoding-.patch 0022-topology-decode-Fix-decoding-PCM-formats-and-rates.patch 0023-topology-decode-Print-sig_bits-field-in-PCM-capabili.patch 0024-topology-decode-Add-DAI-name-printing.patch 0025-topology-Make-buffer-for-saving-dynamic-size.patch 0026-topology-return-correct-value-in-tplg_save_printf.patch 0027-topology-fix-some-gcc10-warnings-labs-signess.patch 0028-topology-fix-sort_config.patch 0029-topology-fix-the-unaligned-access.patch 0030-topology-improve-the-printf-buffer-management.patch OBS-URL: https://build.opensuse.org/request/show/836375 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa?expand=0&rev=281
829 lines
29 KiB
Diff
829 lines
29 KiB
Diff
From c1e72460de5ddcfdc8b93e73952c6fe9d6f60591 Mon Sep 17 00:00:00 2001
|
|
From: "Tanjeff-N. Moos" <tanjeff@cccmz.de>
|
|
Date: Wed, 2 Sep 2020 11:27:27 +0200
|
|
Subject: [PATCH 32/32] control: Add documentation for snd_ctl_elem_value_*.
|
|
|
|
Signed-off-by: Tanjeff-N. Moos <tanjeff@cccmz.de>
|
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
---
|
|
include/control.h | 61 ++++++-
|
|
src/control/control.c | 454 +++++++++++++++++++++++++++++++++-----------------
|
|
2 files changed, 357 insertions(+), 158 deletions(-)
|
|
|
|
diff --git a/include/control.h b/include/control.h
|
|
index 9deec6f3dee4..8766f44097ea 100644
|
|
--- a/include/control.h
|
|
+++ b/include/control.h
|
|
@@ -130,7 +130,53 @@ typedef struct _snd_ctl_elem_list snd_ctl_elem_list_t;
|
|
/** CTL element info container */
|
|
typedef struct _snd_ctl_elem_info snd_ctl_elem_info_t;
|
|
|
|
-/** CTL element value container */
|
|
+/** CTL element value container
|
|
+ *
|
|
+ * Contains the value(s) (i.e. members) of a single element. All
|
|
+ * values of a given element are of the same type.
|
|
+ *
|
|
+ * \par Memory management
|
|
+ *
|
|
+ * To access a value, a snd_ctl_elem_value_t must be allocated using
|
|
+ * snd_ctl_elem_value_alloca() or snd_ctl_elem_value_malloc(). When
|
|
+ * using the latter, it must be freed again using
|
|
+ * snd_ctl_elem_value_free().
|
|
+ *
|
|
+ * \par Identifier
|
|
+ *
|
|
+ * Then, the ID must be filled. It is sufficient to fill only the
|
|
+ * numid, if known. Otherwise, interface type, device, subdevice,
|
|
+ * name, index must all be given. The following functions can be used
|
|
+ * to fill the ID:
|
|
+ *
|
|
+ * - snd_ctl_elem_value_set_id(): Set the ID. Requires an
|
|
+ * snd_ctl_elem_id_t object.
|
|
+ * - snd_ctl_elem_value_set_numid(): Set the numid.
|
|
+ * - Or use all of the following:
|
|
+ *
|
|
+ * - snd_ctl_elem_value_set_interface()
|
|
+ * - snd_ctl_elem_value_set_device()
|
|
+ * - snd_ctl_elem_value_set_subdevice()
|
|
+ * - snd_ctl_elem_value_set_name()
|
|
+ * - snd_ctl_elem_value_set_index()
|
|
+ *
|
|
+ * When communicating with the driver (snd_ctl_elem_read(),
|
|
+ * snd_ctl_elem_write()), and the numid was given, the interface,
|
|
+ * device, ... are filled (even if you set the before). When the numid
|
|
+ * is unset (i.e. it is 0), it is filled.
|
|
+ *
|
|
+ * \par Communicating with the driver
|
|
+ *
|
|
+ * After the value container was created and filled with the ID of the
|
|
+ * desired element, the value(s) can be fetched from the driver (and
|
|
+ * thus from the hardware) or written to the driver.
|
|
+ *
|
|
+ * To fetch a value, use snd_ctl_elem_read(). Thereafter, use the
|
|
+ * snd_ctl_elem_value_get_*() functions to obtain the actual value.
|
|
+ *
|
|
+ * To write a new value, first use a snd_ctl_elem_value_set_*() to set
|
|
+ * it, then call snd_ctl_elem_write() to write it to the driver.
|
|
+ */
|
|
typedef struct _snd_ctl_elem_value snd_ctl_elem_value_t;
|
|
|
|
/** CTL event container */
|
|
@@ -529,11 +575,20 @@ int snd_ctl_elem_add_iec958(snd_ctl_t *ctl, const snd_ctl_elem_id_t *id);
|
|
int snd_ctl_elem_remove(snd_ctl_t *ctl, snd_ctl_elem_id_t *id);
|
|
|
|
size_t snd_ctl_elem_value_sizeof(void);
|
|
+
|
|
/** \hideinitializer
|
|
- * \brief allocate an invalid #snd_ctl_elem_value_t using standard alloca
|
|
- * \param ptr returned pointer
|
|
+ * \brief Allocate an invalid #snd_ctl_elem_value_t on the stack.
|
|
+ *
|
|
+ * Allocate space for a value object on the stack. The allocated
|
|
+ * memory need not be freed, because is on the stack.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for details.
|
|
+ *
|
|
+ * \param ptr Pointer to a snd_ctl_elem_value_t pointer. The address
|
|
+ * of the allocated space will returned here.
|
|
*/
|
|
#define snd_ctl_elem_value_alloca(ptr) __snd_alloca(ptr, snd_ctl_elem_value)
|
|
+
|
|
int snd_ctl_elem_value_malloc(snd_ctl_elem_value_t **ptr);
|
|
void snd_ctl_elem_value_free(snd_ctl_elem_value_t *obj);
|
|
void snd_ctl_elem_value_clear(snd_ctl_elem_value_t *obj);
|
|
diff --git a/src/control/control.c b/src/control/control.c
|
|
index 497a5399b7e6..08058c067e28 100644
|
|
--- a/src/control/control.c
|
|
+++ b/src/control/control.c
|
|
@@ -38,32 +38,39 @@ also an interface for notifying about control and structure changes.
|
|
In ALSA control feature, each sound card can have control elements. The elements
|
|
are managed according to below model.
|
|
|
|
- - element set
|
|
+ - Element set
|
|
+
|
|
- A set of elements with the same attribute (i.e. name, get/put operations).
|
|
Some element sets can be added to a sound card by drivers in kernel and
|
|
userspace applications.
|
|
- - element
|
|
+
|
|
+ - Element
|
|
+
|
|
- A control element might be a master volume control, for example, or a
|
|
read-only indicator, such as a sync status. An element has a type (e.g.
|
|
- INTEGER or BOOLEAN) and - depending on the type - min/max values, a step
|
|
- size, a set of possible values (for enums), etc.
|
|
- - member
|
|
+ SNDRV_CTL_ELEM_TYPE_INTEGER or SNDRV_CTL_ELEM_TYPE_BOOLEAN) and - depending
|
|
+ on the type - min/max values, a step size, a set of possible values (for
|
|
+ enums), etc.
|
|
+
|
|
+ - Member
|
|
|
|
- - An element includes one or more member(s) to have a value. For
|
|
- example, a stereo volume control element has two members (for
|
|
- left/right). The members share the same properties (e.g. both
|
|
- volume controls have the same min/max values). The value of each
|
|
- member can be changed by both of userspace applications and
|
|
- drivers in kernel.
|
|
+ - An element usually includes one or more member(s) to have a value. For
|
|
+ example, a stereo volume control element has two members (for left/right),
|
|
+ while a mono volume has only one member. The member count can be obtained
|
|
+ using snd_ctl_elem_info_get_count(). Elements of type
|
|
+ "SNDRV_CTL_ELEM_TYPE_BYTES" or "SNDRV_CTL_ELEM_TYPE_IEC958" have no members
|
|
+ at all (and thus no member count), they have just a single value. The
|
|
+ members share the same properties (e.g. both volume control members have
|
|
+ the same min/max values). The value of each member can be changed by both
|
|
+ of userspace applications and drivers in kernel.
|
|
|
|
|
|
-\section identifying_elements Identifying the Elements
|
|
+\section identifying_elements Identifying Elements
|
|
|
|
Each element has the following identifying properties:
|
|
|
|
- The numid (a numeric identifier, assigned when the sound card is
|
|
detected, constant while the sound card is kept connected)
|
|
-
|
|
- The interface type (e.g. MIXER, CARD or PCM)
|
|
- The device
|
|
- The subdevice
|
|
@@ -95,10 +102,10 @@ on. In addition, these functions can report the identifying
|
|
properties. E.g. when the element is addressed using its numid, the
|
|
functions complements the name, index, etc.
|
|
|
|
-To access the values of a control, use the snd_ctl_elem_value*()
|
|
-functions. These allow to get and set the actual values or
|
|
-settings. It is also possible to get and set the ID values (such as
|
|
-the numid or the name).
|
|
+To access the members (i.e. values) of a control, use the
|
|
+snd_ctl_elem_value*() functions. These allow to get and set the
|
|
+actual values or settings. It is also possible to get and set the ID
|
|
+values (such as the numid or the name).
|
|
|
|
|
|
\section element_sets Element Sets
|
|
@@ -931,10 +938,19 @@ int snd_ctl_elem_remove(snd_ctl_t *ctl, snd_ctl_elem_id_t *id)
|
|
}
|
|
|
|
/**
|
|
- * \brief Get CTL element value
|
|
- * \param ctl CTL handle
|
|
- * \param data Data of an element.
|
|
- * \return 0 on success otherwise a negative error code
|
|
+ * \brief Get CTL element value.
|
|
+ *
|
|
+ * Read information from sound card. You must set the ID of the
|
|
+ * element before calling this function.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for details.
|
|
+ *
|
|
+ * \param ctl CTL handle.
|
|
+ * \param data The element value. The ID must be set before calling
|
|
+ * the function, and the actual value will be returned
|
|
+ * here.
|
|
+ *
|
|
+ * \return 0 on success otherwise a negative error code.
|
|
*/
|
|
int snd_ctl_elem_read(snd_ctl_t *ctl, snd_ctl_elem_value_t *data)
|
|
{
|
|
@@ -943,9 +959,16 @@ int snd_ctl_elem_read(snd_ctl_t *ctl, snd_ctl_elem_value_t *data)
|
|
}
|
|
|
|
/**
|
|
- * \brief Set CTL element value
|
|
- * \param ctl CTL handle
|
|
- * \param data Data of an element.
|
|
+ * \brief Set CTL element value.
|
|
+ *
|
|
+ * Write new value(s) to the sound card. You must set the ID and the
|
|
+ * value of the element before calling this function.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for details.
|
|
+ *
|
|
+ * \param ctl CTL handle.
|
|
+ * \param data The new value.
|
|
+ *
|
|
* \retval 0 on success
|
|
* \retval >0 on success when value was changed
|
|
* \retval <0 a negative error code
|
|
@@ -2877,9 +2900,16 @@ size_t snd_ctl_elem_value_sizeof()
|
|
}
|
|
|
|
/**
|
|
- * \brief Allocate an invalid #snd_ctl_elem_value_t using standard malloc(3).
|
|
- * \param ptr Returned pointer for data of an element.
|
|
- * \return 0 on success otherwise negative error code.
|
|
+ * \brief Allocate an invalid #snd_ctl_elem_value_t on the heap.
|
|
+ *
|
|
+ * Allocate space for a value object on the head. The allocated memory
|
|
+ * must be freed using snd_ctl_elem_value_free().
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for details.
|
|
+ *
|
|
+ * \param ptr Pointer to a snd_ctl_elem_value_t pointer. The address
|
|
+ * of the allocated space will be returned here.
|
|
+ * \return 0 on success, otherwise a negative error code.
|
|
*/
|
|
int snd_ctl_elem_value_malloc(snd_ctl_elem_value_t **ptr)
|
|
{
|
|
@@ -2891,8 +2921,10 @@ int snd_ctl_elem_value_malloc(snd_ctl_elem_value_t **ptr)
|
|
}
|
|
|
|
/**
|
|
- * \brief Frees a previously allocated data of an element.
|
|
- * \param obj Data of an element.
|
|
+ * \brief Free an #snd_ctl_elem_value_t previously allocated using
|
|
+ * snd_ctl_elem_value_malloc().
|
|
+ *
|
|
+ * \param obj Pointer to the snd_ctl_elem_value_t.
|
|
*/
|
|
void snd_ctl_elem_value_free(snd_ctl_elem_value_t *obj)
|
|
{
|
|
@@ -2901,6 +2933,9 @@ void snd_ctl_elem_value_free(snd_ctl_elem_value_t *obj)
|
|
|
|
/**
|
|
* \brief Clear given data of an element.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for details.
|
|
+ *
|
|
* \param obj Data of an element.
|
|
*/
|
|
void snd_ctl_elem_value_clear(snd_ctl_elem_value_t *obj)
|
|
@@ -2909,7 +2944,7 @@ void snd_ctl_elem_value_clear(snd_ctl_elem_value_t *obj)
|
|
}
|
|
|
|
/**
|
|
- * \brief Copy two data of elements.
|
|
+ * \brief Bitwise copy of a snd_ctl_elem_value_t value.
|
|
* \param dst Pointer to destination.
|
|
* \param src Pointer to source.
|
|
*/
|
|
@@ -2921,9 +2956,10 @@ void snd_ctl_elem_value_copy(snd_ctl_elem_value_t *dst,
|
|
}
|
|
|
|
/**
|
|
- * \brief Compare one data of an element to the other.
|
|
- * \param left Pointer to first data.
|
|
- * \param right Pointer to second data.
|
|
+ * \brief Compare two snd_ctl_elem_value_t values, bytewise.
|
|
+ *
|
|
+ * \param left First value.
|
|
+ * \param right Second value.
|
|
* \return 0 on match, less than or greater than otherwise, see memcmp(3).
|
|
*/
|
|
int snd_ctl_elem_value_compare(snd_ctl_elem_value_t *left,
|
|
@@ -2934,9 +2970,13 @@ int snd_ctl_elem_value_compare(snd_ctl_elem_value_t *left,
|
|
}
|
|
|
|
/**
|
|
- * \brief Get element identifier from given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \param ptr Pointer for element identifier.
|
|
+ * \brief Get the element identifier from the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \param ptr Pointer to an identifier object. The identifier is
|
|
+ * stored there.
|
|
*/
|
|
void snd_ctl_elem_value_get_id(const snd_ctl_elem_value_t *obj, snd_ctl_elem_id_t *ptr)
|
|
{
|
|
@@ -2945,9 +2985,12 @@ void snd_ctl_elem_value_get_id(const snd_ctl_elem_value_t *obj, snd_ctl_elem_id_
|
|
}
|
|
|
|
/**
|
|
- * \brief Get element numeric identifier from given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \return Element numeric identifier.
|
|
+ * \brief Get the identifiers 'numid' part from the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \return The numid.
|
|
*/
|
|
unsigned int snd_ctl_elem_value_get_numid(const snd_ctl_elem_value_t *obj)
|
|
{
|
|
@@ -2956,10 +2999,12 @@ unsigned int snd_ctl_elem_value_get_numid(const snd_ctl_elem_value_t *obj)
|
|
}
|
|
|
|
/**
|
|
- * \brief Get interface part of element identifier from given data of an
|
|
- * element.
|
|
- * \param obj Data of an element.
|
|
- * \return Interface part of element identifier.
|
|
+ * \brief Get the identifiers 'interface' part from the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \return The interface part of element identifier.
|
|
*/
|
|
snd_ctl_elem_iface_t snd_ctl_elem_value_get_interface(const snd_ctl_elem_value_t *obj)
|
|
{
|
|
@@ -2968,9 +3013,12 @@ snd_ctl_elem_iface_t snd_ctl_elem_value_get_interface(const snd_ctl_elem_value_t
|
|
}
|
|
|
|
/**
|
|
- * \brief Get device part of element identifier from given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \return Device part of element identifier.
|
|
+ * \brief Get the identifiers 'device' part from the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \return The device part of element identifier.
|
|
*/
|
|
unsigned int snd_ctl_elem_value_get_device(const snd_ctl_elem_value_t *obj)
|
|
{
|
|
@@ -2979,10 +3027,12 @@ unsigned int snd_ctl_elem_value_get_device(const snd_ctl_elem_value_t *obj)
|
|
}
|
|
|
|
/**
|
|
- * \brief Get subdevice part of element identifier from given data of an
|
|
- * element.
|
|
- * \param obj Data of an element.
|
|
- * \return Subdevice part of element identifier.
|
|
+ * \brief Get the identifiers 'subdevice' part from the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \return The subdevice part of element identifier.
|
|
*/
|
|
unsigned int snd_ctl_elem_value_get_subdevice(const snd_ctl_elem_value_t *obj)
|
|
{
|
|
@@ -2991,9 +3041,12 @@ unsigned int snd_ctl_elem_value_get_subdevice(const snd_ctl_elem_value_t *obj)
|
|
}
|
|
|
|
/**
|
|
- * \brief Get name part of element identifier from given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \return Name part of element identifier.
|
|
+ * \brief Get the identifiers 'name' part from the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \return The "name" part of element identifier.
|
|
*/
|
|
const char *snd_ctl_elem_value_get_name(const snd_ctl_elem_value_t *obj)
|
|
{
|
|
@@ -3002,9 +3055,12 @@ const char *snd_ctl_elem_value_get_name(const snd_ctl_elem_value_t *obj)
|
|
}
|
|
|
|
/**
|
|
- * \brief Get index part of element identifier from given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \return Index part of element identifier.
|
|
+ * \brief Get the identifiers 'index' part from the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \return The index part of element identifier.
|
|
*/
|
|
unsigned int snd_ctl_elem_value_get_index(const snd_ctl_elem_value_t *obj)
|
|
{
|
|
@@ -3012,10 +3068,14 @@ unsigned int snd_ctl_elem_value_get_index(const snd_ctl_elem_value_t *obj)
|
|
return obj->id.index;
|
|
}
|
|
|
|
+
|
|
/**
|
|
- * \brief Set element identifier to given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \param ptr Pointer to an element identifier.
|
|
+ * \brief Set the element identifier within the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \param ptr The new identifier.
|
|
*/
|
|
void snd_ctl_elem_value_set_id(snd_ctl_elem_value_t *obj, const snd_ctl_elem_id_t *ptr)
|
|
{
|
|
@@ -3024,9 +3084,12 @@ void snd_ctl_elem_value_set_id(snd_ctl_elem_value_t *obj, const snd_ctl_elem_id_
|
|
}
|
|
|
|
/**
|
|
- * \brief Set numeric identifier to given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \param val Value for numeric identifier.
|
|
+ * \brief Set the identifiers 'numid' part within the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \param val The new numid.
|
|
*/
|
|
void snd_ctl_elem_value_set_numid(snd_ctl_elem_value_t *obj, unsigned int val)
|
|
{
|
|
@@ -3035,9 +3098,12 @@ void snd_ctl_elem_value_set_numid(snd_ctl_elem_value_t *obj, unsigned int val)
|
|
}
|
|
|
|
/**
|
|
- * \brief Set interface part of element identifier to given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \param val Value for interface part of element identifier.
|
|
+ * \brief Set the identifiers 'interface' part within the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \param val The new interface.
|
|
*/
|
|
void snd_ctl_elem_value_set_interface(snd_ctl_elem_value_t *obj, snd_ctl_elem_iface_t val)
|
|
{
|
|
@@ -3046,9 +3112,12 @@ void snd_ctl_elem_value_set_interface(snd_ctl_elem_value_t *obj, snd_ctl_elem_if
|
|
}
|
|
|
|
/**
|
|
- * \brief Set device part of element identifier to given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \param val Value for device part of element identifier.
|
|
+ * \brief Set the identifiers 'device' part within the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \param val The new device.
|
|
*/
|
|
void snd_ctl_elem_value_set_device(snd_ctl_elem_value_t *obj, unsigned int val)
|
|
{
|
|
@@ -3057,9 +3126,12 @@ void snd_ctl_elem_value_set_device(snd_ctl_elem_value_t *obj, unsigned int val)
|
|
}
|
|
|
|
/**
|
|
- * \brief Set subdevice part of element identifier to given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \param val Value for subdevice part of element identifier.
|
|
+ * \brief Set the identifiers 'subdevice' part within the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \param val The new subdevice.
|
|
*/
|
|
void snd_ctl_elem_value_set_subdevice(snd_ctl_elem_value_t *obj, unsigned int val)
|
|
{
|
|
@@ -3068,9 +3140,12 @@ void snd_ctl_elem_value_set_subdevice(snd_ctl_elem_value_t *obj, unsigned int va
|
|
}
|
|
|
|
/**
|
|
- * \brief Set name part of element identifier to given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \param val Value for name part of element identifier,
|
|
+ * \brief Set the identifiers 'name' part within the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \param val The new name.
|
|
*/
|
|
void snd_ctl_elem_value_set_name(snd_ctl_elem_value_t *obj, const char *val)
|
|
{
|
|
@@ -3079,9 +3154,12 @@ void snd_ctl_elem_value_set_name(snd_ctl_elem_value_t *obj, const char *val)
|
|
}
|
|
|
|
/**
|
|
- * \brief Set index part of element identifier to given data of an element.
|
|
- * \param obj Data of an element.
|
|
- * \param val Value for index part of element identifier.
|
|
+ * \brief Set the identifiers 'index' part within the given element value.
|
|
+ *
|
|
+ * See snd_ctl_elem_value_t for more details.
|
|
+ *
|
|
+ * \param obj The element value.
|
|
+ * \param val The new index.
|
|
*/
|
|
void snd_ctl_elem_value_set_index(snd_ctl_elem_value_t *obj, unsigned int val)
|
|
{
|
|
@@ -3090,12 +3168,16 @@ void snd_ctl_elem_value_set_index(snd_ctl_elem_value_t *obj, unsigned int val)
|
|
}
|
|
|
|
/**
|
|
- * \brief Get value of a specified member from given data as an element of
|
|
- * boolean type.
|
|
- * \param obj Data of an element.
|
|
- * \param idx Index of member in the element.
|
|
- * \return Value for the member.
|
|
- */
|
|
+ * \brief Get an element members value.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_BOOLEAN. It
|
|
+ * returns the value of one member. See \ref snd_ctl_elem_value_t and \ref
|
|
+ * control for more details.
|
|
+ *
|
|
+ * \param obj The element value object
|
|
+ * \param idx The index of the member.
|
|
+ * \return The members value.
|
|
+ */
|
|
int snd_ctl_elem_value_get_boolean(const snd_ctl_elem_value_t *obj, unsigned int idx)
|
|
{
|
|
assert(obj);
|
|
@@ -3104,12 +3186,16 @@ int snd_ctl_elem_value_get_boolean(const snd_ctl_elem_value_t *obj, unsigned int
|
|
}
|
|
|
|
/**
|
|
- * \brief Get value of a specified member from given data as an element of
|
|
- * integer type.
|
|
- * \param obj Data of an element.
|
|
- * \param idx Index of member in the element.
|
|
- * \return Value for the member.
|
|
- */
|
|
+ * \brief Get an element members value.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_INTEGER. It
|
|
+ * returns the value of one member. See \ref snd_ctl_elem_value_t and \ref
|
|
+ * control for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param idx The index of the member.
|
|
+ * \return The members value.
|
|
+ */
|
|
long snd_ctl_elem_value_get_integer(const snd_ctl_elem_value_t *obj, unsigned int idx)
|
|
{
|
|
assert(obj);
|
|
@@ -3118,12 +3204,16 @@ long snd_ctl_elem_value_get_integer(const snd_ctl_elem_value_t *obj, unsigned in
|
|
}
|
|
|
|
/**
|
|
- * \brief Get value of a specified member from given data as an element of
|
|
- * integer64 type.
|
|
- * \param obj Data of an element.
|
|
- * \param idx Index of member in the element.
|
|
- * \return Value for the member.
|
|
- */
|
|
+ * \brief Get an element members value.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_INTEGER64. It
|
|
+ * returns the value of one member. See \ref snd_ctl_elem_value_t and \ref
|
|
+ * control for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param idx The index of the member.
|
|
+ * \return The members value.
|
|
+ */
|
|
long long snd_ctl_elem_value_get_integer64(const snd_ctl_elem_value_t *obj, unsigned int idx)
|
|
{
|
|
assert(obj);
|
|
@@ -3132,12 +3222,16 @@ long long snd_ctl_elem_value_get_integer64(const snd_ctl_elem_value_t *obj, unsi
|
|
}
|
|
|
|
/**
|
|
- * \brief Get value of a specified member from given data as an element of
|
|
- * enumerated type.
|
|
- * \param obj Data of an element.
|
|
- * \param idx Index of member in the element.
|
|
- * \return Value for the member. This is an index of name set in the element.
|
|
- */
|
|
+ * \brief Get an element members value.
|
|
+ *
|
|
+ * Use this function if the element is of type
|
|
+ * SNDRV_CTL_ELEM_TYPE_ENUMERATED. It returns the index of the active item. See
|
|
+ * \ref snd_ctl_elem_value_t and \ref control for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param idx The index of the requested member.
|
|
+ * \return The index of the active item.
|
|
+ */
|
|
unsigned int snd_ctl_elem_value_get_enumerated(const snd_ctl_elem_value_t *obj, unsigned int idx)
|
|
{
|
|
assert(obj);
|
|
@@ -3146,12 +3240,16 @@ unsigned int snd_ctl_elem_value_get_enumerated(const snd_ctl_elem_value_t *obj,
|
|
}
|
|
|
|
/**
|
|
- * \brief Get value of a specified member from given data as an element of
|
|
- * bytes type.
|
|
- * \param obj Data of an element.
|
|
- * \param idx Index of member in the element.
|
|
- * \return Value for the member.
|
|
- */
|
|
+ * \brief Get an element members value.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_BYTE. It
|
|
+ * returns the value of one member. See \ref snd_ctl_elem_value_t and \ref
|
|
+ * control for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param idx The index of the member.
|
|
+ * \return The members value.
|
|
+ */
|
|
unsigned char snd_ctl_elem_value_get_byte(const snd_ctl_elem_value_t *obj, unsigned int idx)
|
|
{
|
|
assert(obj);
|
|
@@ -3160,12 +3258,16 @@ unsigned char snd_ctl_elem_value_get_byte(const snd_ctl_elem_value_t *obj, unsig
|
|
}
|
|
|
|
/**
|
|
- * \brief Set value of a specified member to given data as an element of
|
|
- * boolean type.
|
|
- * \param obj Data of an element.
|
|
- * \param idx Index of member in the element.
|
|
- * \param val Value for the member.
|
|
- */
|
|
+ * \brief Set an element members value.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_BOOLEAN. It
|
|
+ * sets the value of one member. See \ref snd_ctl_elem_value_t and \ref control
|
|
+ * for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param idx The index of the member.
|
|
+ * \param val The new value.
|
|
+ */
|
|
void snd_ctl_elem_value_set_boolean(snd_ctl_elem_value_t *obj, unsigned int idx, long val)
|
|
{
|
|
assert(obj);
|
|
@@ -3174,12 +3276,16 @@ void snd_ctl_elem_value_set_boolean(snd_ctl_elem_value_t *obj, unsigned int idx,
|
|
}
|
|
|
|
/**
|
|
- * \brief Set value of a specified member to given data as an element of
|
|
- * integer type.
|
|
- * \param obj Data of an element.
|
|
- * \param idx Index of member in the element.
|
|
- * \param val Value for the member.
|
|
- */
|
|
+ * \brief Set an element members value.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_INTEGER. It
|
|
+ * sets the value of one member. See \ref snd_ctl_elem_value_t and \ref control
|
|
+ * for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param idx The index of the member.
|
|
+ * \param val The new value.
|
|
+ */
|
|
void snd_ctl_elem_value_set_integer(snd_ctl_elem_value_t *obj, unsigned int idx, long val)
|
|
{
|
|
assert(obj);
|
|
@@ -3188,12 +3294,16 @@ void snd_ctl_elem_value_set_integer(snd_ctl_elem_value_t *obj, unsigned int idx,
|
|
}
|
|
|
|
/**
|
|
- * \brief Set value of a specified member to given data as an element of
|
|
- * integer64 type.
|
|
- * \param obj Data of an element.
|
|
- * \param idx Index of member in the element.
|
|
- * \param val Value for the member.
|
|
- */
|
|
+ * \brief Set an element members value.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_INTEGER64. It
|
|
+ * sets the value of one member. See \ref snd_ctl_elem_value_t and \ref control
|
|
+ * for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param idx The index of the member.
|
|
+ * \param val The new value.
|
|
+ */
|
|
void snd_ctl_elem_value_set_integer64(snd_ctl_elem_value_t *obj, unsigned int idx, long long val)
|
|
{
|
|
assert(obj);
|
|
@@ -3202,12 +3312,16 @@ void snd_ctl_elem_value_set_integer64(snd_ctl_elem_value_t *obj, unsigned int id
|
|
}
|
|
|
|
/**
|
|
- * \brief Set value of a specified member to given data as an element of
|
|
- * enumerated type.
|
|
- * \param obj Data of an element.
|
|
- * \param idx Index of member in the element.
|
|
- * \param val Value for the member.
|
|
- */
|
|
+ * \brief Set an element members value.
|
|
+ *
|
|
+ * Use this function if the element is of type
|
|
+ * SNDRV_CTL_ELEM_TYPE_ENUMERATED. It activates the specified item. See \ref
|
|
+ * snd_ctl_elem_value_t and \ref control for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param idx The index of the requested member.
|
|
+ * \param val The new index of the item to be activated.
|
|
+ */
|
|
void snd_ctl_elem_value_set_enumerated(snd_ctl_elem_value_t *obj, unsigned int idx, unsigned int val)
|
|
{
|
|
assert(obj);
|
|
@@ -3216,12 +3330,16 @@ void snd_ctl_elem_value_set_enumerated(snd_ctl_elem_value_t *obj, unsigned int i
|
|
}
|
|
|
|
/**
|
|
- * \brief Set value for a specified member to given data as an element of byte
|
|
- * type.
|
|
- * \param obj Data of an element.
|
|
- * \param idx Index of member in the element.
|
|
- * \param val Value for the member.
|
|
- */
|
|
+ * \brief Set an element members value.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_BYTE. It
|
|
+ * sets the value of one member. See \ref snd_ctl_elem_value_t and \ref control
|
|
+ * for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param idx The index of the member.
|
|
+ * \param val The new value.
|
|
+ */
|
|
void snd_ctl_elem_value_set_byte(snd_ctl_elem_value_t *obj, unsigned int idx, unsigned char val)
|
|
{
|
|
assert(obj);
|
|
@@ -3230,10 +3348,17 @@ void snd_ctl_elem_value_set_byte(snd_ctl_elem_value_t *obj, unsigned int idx, un
|
|
}
|
|
|
|
/**
|
|
- * \brief Set values to given data as an element of bytes type.
|
|
- * \param obj Data of an element.
|
|
- * \param data Pointer for byte array.
|
|
- * \param size The number of bytes included in the memory block.
|
|
+ * \brief Replace the data stored within the element.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_BYTES. It
|
|
+ * replaces the data stored in the element. Note that "bytes" elements don't
|
|
+ * have members. They have only one single block of data.
|
|
+ *
|
|
+ * See \ref snd_ctl_elem_value_t and \ref control for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param data Pointer to the new data.
|
|
+ * \param size The size of the new data, in bytes.
|
|
*/
|
|
void snd_ctl_elem_set_bytes(snd_ctl_elem_value_t *obj, void *data, size_t size)
|
|
{
|
|
@@ -3243,10 +3368,17 @@ void snd_ctl_elem_set_bytes(snd_ctl_elem_value_t *obj, void *data, size_t size)
|
|
}
|
|
|
|
/**
|
|
- * \brief Get memory block from given data as an element of bytes type.
|
|
- * \param obj Data of an element.
|
|
- * \return Pointer for byte array.
|
|
- */
|
|
+ * \brief Get the data stored within the element.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_BYTES. It
|
|
+ * returns the data stored in the element. Note that "bytes" elements don't have
|
|
+ * members. They have only one single block of data.
|
|
+ *
|
|
+ * See \ref snd_ctl_elem_value_t and \ref control for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \return Pointer to the elements data.
|
|
+ */
|
|
const void * snd_ctl_elem_value_get_bytes(const snd_ctl_elem_value_t *obj)
|
|
{
|
|
assert(obj);
|
|
@@ -3254,11 +3386,17 @@ const void * snd_ctl_elem_value_get_bytes(const snd_ctl_elem_value_t *obj)
|
|
}
|
|
|
|
/**
|
|
- * \brief Get value from given data to given pointer as an element of IEC958
|
|
- * type.
|
|
- * \param obj Data of an element.
|
|
- * \param ptr Pointer to IEC958 data.
|
|
- */
|
|
+ * \brief Get an elements IEC958 data.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_IEC958. Note that
|
|
+ * "IEC958" elements don't have members. They have only one single
|
|
+ * IEC958 information block.
|
|
+ *
|
|
+ * See \ref snd_ctl_elem_value_t and \ref control for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param ptr Pointer to an IEC958 structure. The data is stored there.
|
|
+ */
|
|
void snd_ctl_elem_value_get_iec958(const snd_ctl_elem_value_t *obj, snd_aes_iec958_t *ptr)
|
|
{
|
|
assert(obj && ptr);
|
|
@@ -3266,11 +3404,17 @@ void snd_ctl_elem_value_get_iec958(const snd_ctl_elem_value_t *obj, snd_aes_iec9
|
|
}
|
|
|
|
/**
|
|
- * \brief Set value from given pointer to given data as an element of IEC958
|
|
- * type.
|
|
- * \param obj Data of an element.
|
|
- * \param ptr Pointer to IEC958 data.
|
|
- */
|
|
+ * \brief Set an elements IEC958 data.
|
|
+ *
|
|
+ * Use this function if the element is of type SNDRV_CTL_ELEM_TYPE_IEC958. Note
|
|
+ * that "IEC958" elements don't have members. They have only one single IEC958
|
|
+ * information block.
|
|
+ *
|
|
+ * See \ref snd_ctl_elem_value_t and \ref control for more details.
|
|
+ *
|
|
+ * \param obj The element value object.
|
|
+ * \param ptr Pointer to the new IEC958 data.
|
|
+ */
|
|
void snd_ctl_elem_value_set_iec958(snd_ctl_elem_value_t *obj, const snd_aes_iec958_t *ptr)
|
|
{
|
|
assert(obj && ptr);
|
|
--
|
|
2.16.4
|
|
|