elif info.get_property('elem-type') == ALSACtl.ElemType.ENUMERATED:
value = elem_value.get_enum()[:value_count]
elif info.get_property('elem-type') == ALSACtl.ElemType.BYTES:
- value = elem_value.get_bytes(value)
+ value = elem_value.get_bytes()[:value_count]
elif info.get_property('elem-type') == ALSACtl.ElemType.INTEGER64:
value = elem_value.get_int64(value)
print(value)
"alsactl_elem_value_set_int";
"alsactl_elem_value_set_enum";
"alsactl_elem_value_set_bytes";
- "alsactl_elem_value_get_bytes";
"alsactl_elem_value_set_iec60958_user_data";
"alsactl_elem_value_get_iec60958_user_data";
"alsactl_elem_value_set_iec60958_channel_status";
"alsactl_elem_value_get_bool";
"alsactl_elem_value_get_int";
"alsactl_elem_value_get_enum";
+ "alsactl_elem_value_get_bytes";
} ALSA_GOBJECT_0_2_0;
/**
* alsactl_elem_value_get_bytes:
* @self: A [class@ElemValue].
- * @values: (array length=value_count)(inout): The array for values of bytes type.
- * @value_count: The number of values up to 512.
+ * @values: (array length=value_count) (out) (transfer none): The array for 8 bit unsigned integer
+ * values.
+ * @value_count: (out): The number of values up to 512.
*
- * Copy the array for values of bytes type into internal storage.
+ * Refer to the array specific to [enum@ElemType].BYTES element in internal storage.
*/
-void alsactl_elem_value_get_bytes(ALSACtlElemValue *self, guint8 *const *values, gsize *value_count)
+void alsactl_elem_value_get_bytes(ALSACtlElemValue *self, const guint8 **values, gsize *value_count)
{
ALSACtlElemValuePrivate *priv;
struct snd_ctl_elem_value *value;
- int i;
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
g_return_if_fail(value_count != NULL);
value = &priv->value;
- *value_count = MIN(*value_count, G_N_ELEMENTS(value->value.bytes.data));
- for (i = 0; i < *value_count; ++i)
- (*values)[i] = (guint8)value->value.bytes.data[i];
+ *values = value->value.bytes.data;
+ *value_count = G_N_ELEMENTS(value->value.bytes.data);
}
/**
void alsactl_elem_value_set_bytes(ALSACtlElemValue *self,
const guint8 *values, gsize value_count);
void alsactl_elem_value_get_bytes(ALSACtlElemValue *self,
- guint8 *const *values, gsize *value_count);
+ const guint8 **values, gsize *value_count);
void alsactl_elem_value_set_iec60958_channel_status(ALSACtlElemValue *self,
const guint8 *status, gsize length);