_, elem_value = card.read_elem_value(elem_id, elem_value)
if isinstance(info, ALSACtl.ElemInfoSingleArray):
value_count = info.get_property('value-count')
- value = [0] * value_count
if info.get_property('elem-type') == ALSACtl.ElemType.BOOLEAN:
value = elem_value.get_bool()[:value_count]
elif info.get_property('elem-type') == ALSACtl.ElemType.INTEGER:
elif info.get_property('elem-type') == ALSACtl.ElemType.BYTES:
value = elem_value.get_bytes()[:value_count]
elif info.get_property('elem-type') == ALSACtl.ElemType.INTEGER64:
- value = elem_value.get_int64(value)
+ value = elem_value.get_int64()[:value_count]
print(value)
elif info.get_property('elem-type') == ALSACtl.ElemType.IEC60958:
channel_status = elem_value.get_channel_status()
"alsactl_elem_value_set_iec60958_user_data";
"alsactl_elem_value_set_iec60958_channel_status";
"alsactl_elem_value_set_int64";
- "alsactl_elem_value_get_int64";
"alsactl_elem_value_equal";
local:
*;
"alsactl_elem_value_get_bytes";
"alsactl_elem_value_get_iec60958_user_data";
"alsactl_elem_value_get_iec60958_channel_status";
+ "alsactl_elem_value_get_int64";
} ALSA_GOBJECT_0_2_0;
/**
* alsactl_elem_value_get_int64:
* @self: A [class@ElemValue].
- * @values: (array length=value_count)(inout): The array for values of integer64 type.
+ * @values: (array length=value_count) (out) (transfer none): The array for 64 bit signed integer
+ * values.
* @value_count: The number of values up to 64.
*
- * Copy the array for values of integer64 type from internal storage.
+ * Refer to the array for [enum@ElemType].INTEGER64 element in internal storage.
*/
-void alsactl_elem_value_get_int64(ALSACtlElemValue *self, gint64 *const *values, gsize *value_count)
+void alsactl_elem_value_get_int64(ALSACtlElemValue *self, const gint64 **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.integer64.value));
- for (i = 0; i < *value_count; ++i)
- (*values)[i] = (gint64)value->value.integer64.value[i];
+ *values = (const gint64 *)value->value.integer64.value;
+ *value_count = G_N_ELEMENTS(value->value.integer64.value);
}
/**
void alsactl_elem_value_set_int64(ALSACtlElemValue *self, const gint64 *values,
gsize value_count);
void alsactl_elem_value_get_int64(ALSACtlElemValue *self,
- gint64 *const *values, gsize *value_count);
+ const gint64 **values, gsize *value_count);
gboolean alsactl_elem_value_equal(const ALSACtlElemValue *self,
const ALSACtlElemValue *target);