typedef struct snd_aes_iec958 { unsigned char status[24]; unsigned char subcode[147]; unsigned char pad; unsigned char dig_subframe[4]; } snd_aes_iec958_t;
IEC958 データの構造体
status
AES/IEC958 チャンネルステータスビット
subcode
AES/IEC958 サブコードビット
pad
余白バイト
dig_subframe
AES/IEC958 サブフレームビット
読み書き
int snd_ctl_elem_read(snd_ctl_t *ctl, snd_ctl_elem_value_t *data);
サウンドカードから情報を読み込み、要素の値を取得する。
この関数を呼び出す前に、要素の識別子をセットする必要がある。
この関数を呼び出す前に、要素の識別子をセットする必要がある。
戻り値
0 で成功、負の値でエラーコード
int snd_ctl_elem_write(snd_ctl_t *ctl, snd_ctl_elem_value_t *data);
新しい要素値を書き込む。
この関数を呼び出す前に、要素の識別子と値を設定する必要がある。
この関数を呼び出す前に、要素の識別子と値を設定する必要がある。
戻り値
0 で成功。
正の値で、値が変更された時に成功。
負の値でエラーコード
正の値で、値が変更された時に成功。
負の値でエラーコード
int snd_ctl_ascii_value_parse(snd_ctl_t *handle, snd_ctl_elem_value_t *dst, snd_ctl_elem_info_t *info, const char *value);
ASCII文字列を要素の値として解析
dst
要素の値が返る。
※切り替えコマンドの場合、dst には現在の状態をセットしておくこと (値を取得するには snd_ctl_elem_read を使う)。
※切り替えコマンドの場合、dst には現在の状態をセットしておくこと (値を取得するには snd_ctl_elem_read を使う)。
info
要素の情報が返る。
value
解析する文字列
戻り値
0 で成功、負の値でエラーコード
操作
int snd_ctl_elem_value_compare(snd_ctl_elem_value_t *left, const snd_ctl_elem_value_t *right);
バイトで比較
戻り値
0 で同じ。それ以外は memcmp の戻り値
要素の識別子をセット
void snd_ctl_elem_value_set_interface(snd_ctl_elem_value_t *obj, snd_ctl_elem_iface_t val);
要素のインターフェイスをセット
要素の識別子を取得
snd_ctl_elem_iface_t snd_ctl_elem_value_get_interface(const snd_ctl_elem_value_t *obj);
要素のインターフェイスを取得
値を取得
int snd_ctl_elem_value_get_boolean(const snd_ctl_elem_value_t *obj, unsigned int idx);
BOOLEAN の場合、メンバの真偽値を取得する。
idx
メンバのインデックス
long snd_ctl_elem_value_get_integer(const snd_ctl_elem_value_t *obj, unsigned int idx);
INTEGER の場合、数値を取得。
long long snd_ctl_elem_value_get_integer64(const snd_ctl_elem_value_t *obj, unsigned int idx);
INTEGER64 の場合、64bit 数値を取得。
unsigned int snd_ctl_elem_value_get_enumerated(const snd_ctl_elem_value_t *obj, unsigned int idx);
ENUMERATED の場合、アクティブなアイテムのインデックスを取得。
unsigned char snd_ctl_elem_value_get_byte(const snd_ctl_elem_value_t *obj, unsigned int idx);
BYTES の場合、単一のバイト値を取得。
void snd_ctl_elem_value_get_iec958(const snd_ctl_elem_value_t *obj, snd_aes_iec958_t *ptr);
IEC958 の場合、IEC958 データを取得。
IEC958 データはメンバがなく、単体の情報である。
IEC958 データはメンバがなく、単体の情報である。
ptr
IEC958 データの構造体
値のセット
void snd_ctl_elem_value_set_boolean(snd_ctl_elem_value_t *obj, unsigned int idx, long val);
BOOLEAN の場合、真偽値をセット
void snd_ctl_elem_value_set_integer(snd_ctl_elem_value_t *obj, unsigned int idx, long val);
INTEGER の場合、数値をセット
void snd_ctl_elem_value_set_integer64(snd_ctl_elem_value_t *obj, unsigned int idx, long long val);
INTEGER64 の場合、64bit数値をセット
void snd_ctl_elem_value_set_enumerated(snd_ctl_elem_value_t *obj, unsigned int idx, unsigned int val);
ENUMERATED の場合、列挙型のインデックスをセット
void snd_ctl_elem_value_set_byte(snd_ctl_elem_value_t *obj, unsigned int idx, unsigned char val);
BYTES の場合、単一のバイトをセット