ALSA:コントロール(要素の値)

snd_aes_iec958_tIEC958 データの構造体
読み書き
snd_ctl_elem_read要素の値を取得する
snd_ctl_elem_write要素の値を書き込む
snd_ctl_ascii_value_parseASCII文字列を要素の値として解析
操作
snd_ctl_elem_value_sizeofsnd_ctl_elem_value_t のサイズ取得
snd_ctl_elem_value_mallocsnd_ctl_elem_value_t の確保
snd_ctl_elem_value_freesnd_ctl_elem_value_t の解放
snd_ctl_elem_value_clearクリア
snd_ctl_elem_value_copy複製
snd_ctl_elem_value_compareバイトで比較
要素の識別子をセット
snd_ctl_elem_value_set_id要素の識別子をセット
snd_ctl_elem_value_set_numid要素の numid をセット
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要素のインデックスをセット
要素の識別子を取得
snd_ctl_elem_value_get_id要素の識別子を取得
snd_ctl_elem_value_get_numid要素の numid を取得
snd_ctl_elem_value_get_interface要素のインターフェイスを取得
snd_ctl_elem_value_get_device要素のデバイスを取得
snd_ctl_elem_value_get_subdevice要素のサブデバイスを取得
snd_ctl_elem_value_get_name要素の名前を取得
snd_ctl_elem_value_get_index要素のインデックスを取得
値を取得
snd_ctl_elem_value_get_boolean真偽値を取得
snd_ctl_elem_value_get_integer数値を取得
snd_ctl_elem_value_get_integer6464bit数値を取得
snd_ctl_elem_value_get_enumerated列挙型の現在のインデックスを取得
snd_ctl_elem_value_get_byte単一のバイト値を取得
snd_ctl_elem_value_get_bytesバイトデータを取得
snd_ctl_elem_value_get_iec958IEC958 データの取得
値のセット
snd_ctl_elem_value_set_boolean真偽値をセット
snd_ctl_elem_value_set_integer数値をセット
snd_ctl_elem_value_set_integer6464bit数値をセット
snd_ctl_elem_value_set_enumerated列挙型のインデックスをセット
snd_ctl_elem_value_set_byte単一のバイトをセット
snd_ctl_elem_set_bytesバイトデータをセット
snd_ctl_elem_value_set_iec958IEC958 データのセット
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 を使う)。
info
要素の情報が返る。
value
解析する文字列
戻り値
0 で成功、負の値でエラーコード
操作
size_t snd_ctl_elem_value_sizeof(void);
snd_ctl_elem_value_t のサイズ取得
int snd_ctl_elem_value_malloc(snd_ctl_elem_value_t **ptr);
snd_ctl_elem_value_t の確保
void snd_ctl_elem_value_free(snd_ctl_elem_value_t *obj);
snd_ctl_elem_value_t の解放
void snd_ctl_elem_value_clear(snd_ctl_elem_value_t *obj);
クリア
void snd_ctl_elem_value_copy(snd_ctl_elem_value_t *dst, const snd_ctl_elem_value_t *src);
複製
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_id(snd_ctl_elem_value_t *obj, const snd_ctl_elem_id_t *ptr);
要素の識別子をセット
void snd_ctl_elem_value_set_numid(snd_ctl_elem_value_t *obj, unsigned int val);
要素の numid をセット
void snd_ctl_elem_value_set_interface(snd_ctl_elem_value_t *obj, snd_ctl_elem_iface_t val);
要素のインターフェイスをセット
void snd_ctl_elem_value_set_device(snd_ctl_elem_value_t *obj, unsigned int val);
要素のデバイスをセット
void snd_ctl_elem_value_set_subdevice(snd_ctl_elem_value_t *obj, unsigned int val);
要素のサブデバイスをセット
void snd_ctl_elem_value_set_name(snd_ctl_elem_value_t *obj, const char *val);
要素の名前をセット
void snd_ctl_elem_value_set_index(snd_ctl_elem_value_t *obj, unsigned int val);
要素のインデックスをセット
要素の識別子を取得
void snd_ctl_elem_value_get_id(const snd_ctl_elem_value_t *obj, snd_ctl_elem_id_t *ptr);
要素の識別子を取得
unsigned int snd_ctl_elem_value_get_numid(const snd_ctl_elem_value_t *obj);
要素の numid を取得
snd_ctl_elem_iface_t snd_ctl_elem_value_get_interface(const snd_ctl_elem_value_t *obj);
要素のインターフェイスを取得
unsigned int snd_ctl_elem_value_get_device(const snd_ctl_elem_value_t *obj);
要素のデバイスを取得
unsigned int snd_ctl_elem_value_get_subdevice(const snd_ctl_elem_value_t *obj);
要素のサブデバイスを取得
const char *snd_ctl_elem_value_get_name(const snd_ctl_elem_value_t *obj);
要素の名前を取得
unsigned int snd_ctl_elem_value_get_index(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 の場合、単一のバイト値を取得。
const void *snd_ctl_elem_value_get_bytes(const snd_ctl_elem_value_t *obj);
BYTES の場合、バイトデータを取得。
void snd_ctl_elem_value_get_iec958(const snd_ctl_elem_value_t *obj, snd_aes_iec958_t *ptr);
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 の場合、単一のバイトをセット
void snd_ctl_elem_set_bytes(snd_ctl_elem_value_t *obj, void *data, size_t size);
BYTES の場合、バイトデータをセット。
void snd_ctl_elem_value_set_iec958(snd_ctl_elem_value_t *obj, const snd_aes_iec958_t *ptr);
IEC958 の場合、IEC958 データをセット。