PulseAudio:サーバー操作

enum pa_device_port_typeポートタイプ列挙型
イベント
pa_context_subscribeサーバーイベントの通知を設定
pa_context_set_subscribe_callbackサーバーイベントのコールバックをセット
サーバー情報
pa_context_get_server_infoサーバー情報を取得
struct pa_server_infoサーバー情報構造体
クライアント
pa_context_get_client_info
pa_context_get_client_info_list
クライアントの情報取得
struct pa_client_infoクライアント情報の構造体
pa_context_kill_clientクライアントを削除
メモリ
pa_context_statメモリの情報取得
struct pa_stat_infoメモリ情報の構造体
サンプルキャッシュ
pa_context_get_sample_info_by_name
pa_context_get_sample_info_by_index
pa_context_get_sample_info_list
サンプルの情報取得
struct pa_sample_infoサンプル情報の構造体
メッセージ
pa_context_send_message_to_objectメッセージを送信
モジュール
pa_context_get_module_info
pa_context_get_module_info_list
モジュールの情報取得
struct pa_module_infoモジュールの情報構造体
pa_context_load_moduleモジュールをロード
pa_context_unload_moduleモジュールをアンロード
カード
pa_context_get_card_info_by_index
pa_context_get_card_info_by_name
pa_context_get_card_info_list
カード情報を取得
struct pa_card_infoカード情報
struct pa_card_profile_info2カード情報 (プロファイル)
struct pa_card_port_infoカード情報 (ポート)
pa_context_set_card_profile_by_index
pa_context_set_card_profile_by_name
カードのプロファイルを設定
pa_context_set_port_latency_offsetポートのレイテンシオフセットをセット
シンク
pa_context_get_sink_info_by_index
pa_context_get_sink_info_by_name
pa_context_get_sink_info_list
シンクの情報を取得
struct pa_sink_infoシンクの情報構造体
struct pa_sink_port_infoシンク情報 (ポート)
pa_context_set_sink_volume_by_index
pa_context_set_sink_volume_by_name
シンクのボリュームを設定
pa_context_set_sink_mute_by_index
pa_context_set_sink_mute_by_name
シンクのミュートを設定
pa_context_set_sink_port_by_index
pa_context_set_sink_port_by_name
シンクのポートを設定
pa_context_suspend_sink_by_name
pa_context_suspend_sink_by_index
シンクを一時停止/再開
ソース
pa_context_get_source_info_by_index
pa_context_get_source_info_by_name
pa_context_get_source_info_list
ソースの情報を取得
struct pa_source_infoソース情報
struct pa_source_port_infoソース情報 (ポート)
pa_context_set_source_volume_by_index
pa_context_set_source_volume_by_name
ソースのボリュームを設定
pa_context_set_source_mute_by_index
pa_context_set_source_mute_by_name
ソースのミュートを設定
pa_context_set_source_port_by_index
pa_context_set_source_port_by_name
ソースのポートを設定
pa_context_suspend_source_by_name
pa_context_suspend_source_by_index
ソースを一時停止/再開
シンク入力
pa_context_get_sink_input_info
pa_context_get_sink_input_info_list
シンク入力の情報取得
struct pa_sink_input_infoシンク入力の情報構造体
pa_context_move_sink_input_by_name
pa_context_move_sink_input_by_index
シンク入力を違うシンクに移動
pa_context_set_sink_input_volumeシンク入力の音量をセット
pa_context_set_sink_input_muteシンク入力のミュートを設定
pa_context_kill_sink_inputシンク入力を削除
ソース出力
pa_context_get_source_output_info
pa_context_get_source_output_info_list
ソース出力の情報を取得
struct pa_source_output_infoソース出力の情報構造体
pa_context_move_source_output_by_name
pa_context_move_source_output_by_index
ソース出力を別のソースに移動
pa_context_set_source_output_volumeソース出力の音量をセット
pa_context_set_source_output_muteソース出力をミュート
pa_context_kill_source_outputソース出力を削除
eol 引数があるコールバック関数の場合、複数回コールバックが呼ばれる。
単一の情報を要求した場合でも、2回来ることになる。

データがある場合、eol = 0。
データの終了時、i = NULL, eol > 0。
エラー時、i = NULL, eol < 0。
//ver 14.0
typedef enum pa_device_port_type {
    PA_DEVICE_PORT_TYPE_UNKNOWN = 0,
    PA_DEVICE_PORT_TYPE_AUX = 1,
    PA_DEVICE_PORT_TYPE_SPEAKER = 2,
    PA_DEVICE_PORT_TYPE_HEADPHONES = 3,
    PA_DEVICE_PORT_TYPE_LINE = 4,
    PA_DEVICE_PORT_TYPE_MIC = 5,
    PA_DEVICE_PORT_TYPE_HEADSET = 6,
    PA_DEVICE_PORT_TYPE_HANDSET = 7,
    PA_DEVICE_PORT_TYPE_EARPIECE = 8,
    PA_DEVICE_PORT_TYPE_SPDIF = 9,
    PA_DEVICE_PORT_TYPE_HDMI = 10,
    PA_DEVICE_PORT_TYPE_TV = 11,
    PA_DEVICE_PORT_TYPE_RADIO = 12,
    PA_DEVICE_PORT_TYPE_VIDEO = 13,
    PA_DEVICE_PORT_TYPE_USB = 14,
    PA_DEVICE_PORT_TYPE_BLUETOOTH = 15,
    PA_DEVICE_PORT_TYPE_PORTABLE = 16,
    PA_DEVICE_PORT_TYPE_HANDSFREE = 17,
    PA_DEVICE_PORT_TYPE_CAR = 18,
    PA_DEVICE_PORT_TYPE_HIFI = 19,
    PA_DEVICE_PORT_TYPE_PHONE = 20,
    PA_DEVICE_PORT_TYPE_NETWORK = 21,
    PA_DEVICE_PORT_TYPE_ANALOG = 22,
} pa_device_port_type_t;
ポートタイプ列挙型
イベント
pa_operation *pa_context_subscribe(pa_context *c, pa_subscription_mask_t m, pa_context_success_cb_t cb, void *userdata);
サーバーイベントの通知を設定する。
m
イベントマスク。

PA_SUBSCRIPTION_MASK_NULLイベントなし
PA_SUBSCRIPTION_MASK_SINKシンクイベント
PA_SUBSCRIPTION_MASK_SOURCEソースイベント
PA_SUBSCRIPTION_MASK_SINK_INPUTシンク入力イベント
PA_SUBSCRIPTION_MASK_SOURCE_OUTPUTソース出力イベント
PA_SUBSCRIPTION_MASK_MODULEモジュールイベント
PA_SUBSCRIPTION_MASK_CLIENTクライアントイベント
PA_SUBSCRIPTION_MASK_SAMPLE_CACHEサンプルキャッシュイベント
PA_SUBSCRIPTION_MASK_SERVER他のグローバルなサーバー変更
PA_SUBSCRIPTION_MASK_AUTOLOAD-
PA_SUBSCRIPTION_MASK_CARDカードイベント
PA_SUBSCRIPTION_MASK_ALLすべてのイベント
void pa_context_set_subscribe_callback(pa_context *c, pa_context_subscribe_cb_t cb, void *userdata);

typedef void (*pa_context_subscribe_cb_t)(pa_context *c, pa_subscription_event_type_t t, uint32_t idx, void *userdata);
サーバーイベントのコールバックをセット
t
イベントのタイプ。
2つの値が格納されているため、マスクで分離させる。

イベントタイプ
PA_SUBSCRIPTION_EVENT_SINKシンク
PA_SUBSCRIPTION_EVENT_SOURCEソース
PA_SUBSCRIPTION_EVENT_SINK_INPUTシンク入力
PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUTソース出力
PA_SUBSCRIPTION_EVENT_MODULEモジュール
PA_SUBSCRIPTION_EVENT_CLIENTクライアント
PA_SUBSCRIPTION_EVENT_SAMPLE_CACHEサンプルキャッシュ
PA_SUBSCRIPTION_EVENT_SERVERグローバルなサーバーの変更。
PA_SUBSCRIPTION_EVENT_CHANGE の時のみ発生。
PA_SUBSCRIPTION_EVENT_AUTOLOAD-
PA_SUBSCRIPTION_EVENT_CARDカード
操作
PA_SUBSCRIPTION_EVENT_NEW (0)新しいオブジェクトが作成された
PA_SUBSCRIPTION_EVENT_CHANGE (0x10)オブジェクトのプロパティが変更された
PA_SUBSCRIPTION_EVENT_REMOVE (0x20)オブジェクトが除外された
マスク
PA_SUBSCRIPTION_EVENT_FACILITY_MASKイベント値から、イベントタイプを抽出するためのマスク
PA_SUBSCRIPTION_EVENT_TYPE_MASKイベント値から、操作のタイプを抽出するためのマスク
サーバー情報
pa_operation *pa_context_get_server_info(pa_context *c, pa_server_info_cb_t cb, void *userdata);

typedef void (*pa_server_info_cb_t)(pa_context *c, const pa_server_info *i, void *userdata);
サーバー情報を取得
typedef struct pa_server_info {
    const char *user_name;
    const char *host_name;
    const char *server_version;
    const char *server_name;
    pa_sample_spec sample_spec;
    const char *default_sink_name;
    const char *default_source_name;
    uint32_t cookie;
    pa_channel_map channel_map;
} pa_server_info;
サーバー情報構造体
user_name
ユーザー名
host_name
ホスト名
server_version
バージョン文字列
server_name
サーバー名
sample_spec
デフォルトのサンプルスペック
default_sink_name
デフォルトのシンク名
default_source_name
デフォルトのソース名
cookie
PulseAudio インスタンスのランダムクッキー
channel_map
デフォルトのチャンネルマップ
クライアント
pa_operation *pa_context_get_client_info(pa_context *c, uint32_t idx, pa_client_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_client_info_list(pa_context *c, pa_client_info_cb_t cb, void *userdata);

typedef void (*pa_client_info_cb_t)(pa_context *c, const pa_client_info *i, int eol, void *userdata);
クライアントの情報取得
typedef struct pa_client_info {
    uint32_t index;
    const char *name;
    uint32_t owner_module;
    const char *driver;
    pa_proplist *proplist;
} pa_client_info;
クライアント情報の構造体
index
このクライアントのインデックス
name
クライアント名
owner_module
所有モジュールのインデックス、または PA_INVALID_INDEX
driver
ドライバ名
proplist
プロパティリスト
pa_operation *pa_context_kill_client(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata);
クライアントを削除
メモリ
pa_operation *pa_context_stat(pa_context *c, pa_stat_info_cb_t cb, void *userdata);

typedef void (*pa_stat_info_cb_t)(pa_context *c, const pa_stat_info *i, void *userdata);
メモリの情報取得
typedef struct pa_stat_info {
    uint32_t memblock_total;
    uint32_t memblock_total_size;
    uint32_t memblock_allocated;
    uint32_t memblock_allocated_size;
    uint32_t scache_size;
} pa_stat_info;
メモリ情報の構造体
memblock_total
現在確保されているメモリブロック
memblock_total_size
現在確保されているメモリブロックの合計サイズ
memblock_allocated
デーモンの存続期間中に割り当てられたメモリブロック
memblock_allocated_size
デーモンの存続期間中に割り当てられたすべてのメモリブロックの、合計サイズ
scache_size
すべてのサンプルキャッシュエントリの合計サイズ
サンプルキャッシュ
pa_operation *pa_context_get_sample_info_by_name(pa_context *c, const char *name, pa_sample_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_sample_info_by_index(pa_context *c, uint32_t idx, pa_sample_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_sample_info_list(pa_context *c, pa_sample_info_cb_t cb, void *userdata);

typedef void (*pa_sample_info_cb_t)(pa_context *c, const pa_sample_info *i, int eol, void *userdata);
キャッシュされているサンプルの情報を取得する。
typedef struct pa_sample_info {
    uint32_t index;
    const char *name;
    pa_cvolume volume;
    pa_sample_spec sample_spec;
    pa_channel_map channel_map;
    pa_usec_t duration;
    uint32_t bytes;
    int lazy;
    const char *filename;
    pa_proplist *proplist;
} pa_sample_info;
サンプル情報の構造体
index
インデックス番号
name
名前
volume
デフォルトの音量
sample_spec
サンプルスペック
channel_map
チャンネルマップ
duration
長さ (マイクロ秒)
bytes
サンプルのバイト数
lazy
レイテンシキャッシュの場合は 0 以外
filename
これがレイテンシキャッシュの場合、要求に応じてロードされる、サウンドファイルのファイル名
proplist
プロパティリスト
メッセージ
pa_operation *pa_context_send_message_to_object(pa_context *c, const char *recipient_name, const char *message,
    const char *message_parameters, pa_context_string_cb_t cb, void *userdata);

typedef void (*pa_context_string_cb_t)(pa_context *c, int success, char *response, void *userdata);
メッセージハンドラを登録したオブジェクトに、メッセージを送信する。(ver 15.0)
モジュール
pa_operation *pa_context_get_module_info(pa_context *c, uint32_t idx, pa_module_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_module_info_list(pa_context *c, pa_module_info_cb_t cb, void *userdata);

typedef void (*pa_module_info_cb_t)(pa_context *c, const pa_module_info *i, int eol, void *userdata);
モジュールの情報取得
typedef struct pa_module_info {
    uint32_t index;
    const char *name,
        *argument;
    uint32_t n_used;
    int auto_unload;
    pa_proplist *proplist;
} pa_module_info;
モジュールの情報構造体
index
インデックス
name
名前
argument
引数の文字列
n_used
使用カウンタまたは PA_INVALID_INDEX
pa_operation *pa_context_load_module(pa_context *c, const char *name, const char *argument, pa_context_index_cb_t cb, void *userdata);

typedef void (*pa_context_index_cb_t)(pa_context *c, uint32_t idx, void *userdata);
モジュールをロード
pa_operation *pa_context_unload_module(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata);
モジュールをアンロード
カード
pa_operation *pa_context_get_card_info_by_index(pa_context *c, uint32_t idx, pa_card_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_card_info_by_name(pa_context *c, const char *name, pa_card_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_card_info_list(pa_context *c, pa_card_info_cb_t cb, void *userdata);

typedef void (*pa_card_info_cb_t)(pa_context *c, const pa_card_info *i, int eol, void *userdata);
カード情報を取得
typedef struct pa_card_info {
    uint32_t index;
    const char *name;
    uint32_t owner_module;
    const char *driver;
    uint32_t n_profiles;
    pa_card_profile_info *profiles; //廃止
    pa_card_profile_info *active_profile; //廃止
    pa_proplist *proplist;
    uint32_t n_ports;
    pa_card_port_info **ports;
    pa_card_profile_info2 **profiles2;
    pa_card_profile_info2 *active_profile2;
} pa_card_info;
カード情報
index
インデックス番号
name
名前
owner_module
所有モジュールのインデックス、または PA_INVALID_INDEX
driver
ドライバ名
n_profiles
プロファイル配列の数
profiles
[廃止] profiles2 に置き換え
active_profile
[廃止] active_profile2 に置き換え
proplist
プロパティリスト
n_ports
ポート配列の数
ports
ポート配列または NULL
profiles2
利用可能なプロファイルのポインタの配列、または NULL
active_profile2
アクティブなプロファイルのポインタ。
profiles2 の配列内の一つのポインタ、または NULL。
typedef struct pa_card_profile_info2 {
    const char *name;
    const char *description;
    uint32_t n_sinks;
    uint32_t n_sources;
    uint32_t priority;
    int available;
} pa_card_profile_info2;
カード情報 (プロファイル)
name
プロファイル名
description
プロファイルの詳細説明
n_sinks
このプロファイルが作成するシンクの数
n_sources
このプロファイルが作成するソースの数
priority
優先度。値が高いほど、デフォルトに近い
available
このプロファイルが使用できるか。

0 の場合、使用不可。
0 以外の場合でも、プロファイルを有効にした時、何らかの有用性が得られるという保証はない。
サーバー側では、プロファイルが確実に役に立たない理由を認識していない。
typedef struct pa_card_port_info {
    const char *name;
    const char *description;
    uint32_t priority;
    int available;
    int direction;
    uint32_t n_profiles;
    pa_card_profile_info **profiles; //廃止
    pa_proplist *proplist;
    int64_t latency_offset;
    pa_card_profile_info2 **profiles2;
    const char *availability_group;
    uint32_t type;
} pa_card_port_info;
カード情報 (ポート)
name
ポート名
description
ポートの詳細説明
priority
優先度。高いほどデフォルトに近い
available
このポートが実際に使用できるかを示す、pa_port_available 列挙型。

PA_PORT_AVAILABLE_UNKNOWN : 端子の接続判定をサポートしていない。
PA_PORT_AVAILABLE_NO : 使用できない。端子が接続されていない場合がある。
PA_PORT_AVAILABLE_YES : 使用可能。
direction
このポートの方向を示す、pa_direction 列挙型。

PA_DIRECTION_OUTPUT : 出力
PA_DIRECTION_INPUT : 入力
n_profiles
プロファイルの数
profiles
[廃止]
proplist
プロパティリスト
latency_offset
ポートがアクティブなときに、シンク/ソースのレイテンシに追加される、オフセット
profiles2
このポートが使用できるプロファイルの、ポインタの配列。または NULL
availability_group
可用性ステータスを相互に共有する、ポートのグループ識別子 [ver 14.0]
type
ポートタイプ (pa_device_port_type) [ver 14.0]
pa_operation *pa_context_set_card_profile_by_index(pa_context *c, uint32_t idx,
    const char *profile, pa_context_success_cb_t cb, void *userdata);

pa_operation *pa_context_set_card_profile_by_name(pa_context *c, const char *name,
    const char *profile, pa_context_success_cb_t cb, void *userdata);

typedef void (*pa_context_success_cb_t)(pa_context *c, int success, void *userdata);
サーバーでアクティブになっているプロファイルを変更する。
idx/name
カードのインデックス/名前
profile
設定するプロファイル名
pa_operation *pa_context_set_port_latency_offset(pa_context *c, const char *card_name, const char *port_name,
    int64_t offset, pa_context_success_cb_t cb, void *userdata);
//ver 5.0
ポートのレイテンシオフセットをセット
シンク
pa_operation *pa_context_get_sink_info_by_index(pa_context *c, uint32_t idx, pa_sink_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_sink_info_by_name(pa_context *c, const char *name, pa_sink_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_sink_info_list(pa_context *c, pa_sink_info_cb_t cb, void *userdata);

typedef void (*pa_sink_info_cb_t)(pa_context *c, const pa_sink_info *i, int eol, void *userdata);
シンクの情報を取得。
index はインデックス、name は名前から、list はすべてのシンク。
typedef struct pa_sink_info {
    const char *name;
    uint32_t index;
    const char *description;
    pa_sample_spec sample_spec;
    pa_channel_map channel_map;
    uint32_t owner_module;
    pa_cvolume volume;
    int mute;
    uint32_t monitor_source;
    const char *monitor_source_name;
    pa_usec_t latency;
    const char *driver;
    pa_sink_flags_t flags;
    pa_proplist *proplist;
    pa_usec_t configured_latency;
    pa_volume_t base_volume;
    pa_sink_state_t state;
    uint32_t n_volume_steps;
    uint32_t card;
    uint32_t n_ports;
    pa_sink_port_info **ports;
    pa_sink_port_info *active_port;
    uint8_t n_formats;
    pa_format_info **formats;
} pa_sink_info;
シンクの情報構造体
name
シンク名
index
インデックス
description
シンクの詳細説明
sample_spec
サンプルスペック
channel_map
チャンネルマップ
owner_module
このシンクの所有モジュールのインデックス、または PA_INVALID_INDEX
volume
音量
mute
ミュートか
monitor_source
このシンクに接続されている、モニターソースのインデックス
monitor_source_name
このシンクに接続されている、モニターソースの名前
latency
出力バッファ内のキューに入れられたオーディオの長さ(マイクロ秒)
driver
ドライバ名
flags
フラグ。

PA_SINK_NOFLAGS (0): フラグなし。
PA_SINK_HW_VOLUME_CTRL: ハードウェア音量コントロールをサポートしている。これは動的フラグであり、シンクが初期化された後、実行時に変更される可能性がある。
PA_SINK_LATENCY: レイテンシ要求をサポート。
PA_SINK_HARDWARE: 仮想/ソフトウェアなシンクではなく、ハードウェアシンク。
PA_SINK_NETWORK: ネットワーク化されたシンク。
PA_SINK_HW_MUTE_CTRL: ハードウェアのミュート操作をサポート。※動的フラグ
PA_SINK_DECIBEL_VOLUME: 音量は、pa_sw_volume_to_dB() で dB に変換できる。※動的
PA_SINK_FLAT_VOLUME: フラットボリュームモード。接続されているすべての入力の音量が、常に最大になる。
PA_SINK_DYNAMIC_LATENCY: レイテンシは、接続されたストリームの要求に応じて、動的に調整できる。
PA_SINK_SET_FORMATS: 接続されたハードウェアが、サポートするフォーマットを設定できる。これを行うための実際の機能は、拡張機能によって提供される場合がある。
proplist
プロパティリスト
configured_latency
このデバイスに設定されているレイテンシ(マイクロ秒)
base_volume
出力デバイスのコンテキストで増幅/減衰されていないボリュームを指す、ベースボリューム
state
状態フラグ。

PA_SINK_INVALID_STATE: サーバーが、シンク状態の取得をサポートしていない。
PA_SINK_RUNNING: 実行中で、シンクが再生中。少なくとも1つの、停止されていないシンク入力によって使用されている。
PA_SINK_IDLE: アイドル状態。シンクは再生できるが、停止中でないシンク入力が接続されていない。
PA_SINK_SUSPENDED: 一時停止。シンクアクセスを閉じることができる。
n_volume_steps
任意の音量値をサポートしない場合の、ボリュームステップの数
card
カードのインデックス番号、または PA_INVALID_INDEX
n_ports
ports 配列の個数
ports
シンクのポート情報のポインタの配列、または NULL
active_port
現在アクティブなポートのポインタ。
ports 配列内の一つのポインタ、または NULL
n_formats
formats 配列の個数
formats
シンクがサポートしているフォーマット情報のポインタの配列
typedef struct pa_sink_port_info {
    const char *name;
    const char *description;
    uint32_t priority;
    int available;
    const char *availability_group;
    uint32_t type;
} pa_sink_port_info;
シンク情報 (ポート)
name
ポート名
description
ポートの詳細説明
priority
優先度。この値が高いほど、デフォルトに近い。
available
このポートが使用可能かを示すフラグ (pa_port_available 列挙型)
availability_group
available の状態を相互に共有する、ポートのグループの識別子名 [ver 14.0]。
NULL の場合、ポートはグループの一部ではない。

特に、3.5mm プラグのヘッドフォン/ヘッドセット/マイクに使用され、ハードウェアが正確に何が差し込まれたかを認識できない場合を処理するためのもの。
この状況では、それらすべてのデバイスのポートが available を共有し、PulseAudio は実際にどれが接続されているかを知ることができないため、一部のアプリケーションは、ユーザーに何が接続されたかを尋ねる必要がある。
そのようなアプリケーションは、すべてのカードのポートのリストを取得し、availability_group 値を比較する。
同じグループを持つポートは、どのデバイスが接続されたかを判断するために、ユーザーからの選択が必要なポートである。
その後、アプリケーションは、ユーザーが選択したポートをアクティブにする必要がある。

グループ ID は、不透明な ID として扱う必要がある。
文字列は ALSA コントロール名のように見えるかもしれないが、アプリケーションはそのような関係を仮定してはならない。
グループの命名規則は、警告なしに変更される可能性がある。

1つのグループに、入力ポートと出力ポートの両方を含めることができるため、pa_sink_port_info の代わりに pa_card_port_info を使用して、グループ化を行う必要があるが、誰かが便利だと思う場合に備えて、このフィールドは pa_sink_port_info (および pa_source_port_info) にも複製される。
type
ポートタイプ (pa_device_port_type 列挙型) [ver 14.0]
pa_operation *pa_context_set_sink_volume_by_index(pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata);
pa_operation *pa_context_set_sink_volume_by_name(pa_context *c, const char *name, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata);

typedef void (*pa_context_success_cb_t)(pa_context *c, int success, void *userdata);
シンクのボリュームを設定
pa_operation *pa_context_set_sink_mute_by_index(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata);
pa_operation *pa_context_set_sink_mute_by_name(pa_context *c, const char *name, int mute, pa_context_success_cb_t cb, void *userdata);
シンクのミュートを設定
pa_operation *pa_context_set_sink_port_by_index(pa_context *c, uint32_t idx, const char *port, pa_context_success_cb_t cb, void *userdata);
pa_operation *pa_context_set_sink_port_by_name(pa_context *c, const char *name, const char *port, pa_context_success_cb_t cb, void *userdata);
シンクのポートを設定
pa_operation *pa_context_suspend_sink_by_name(pa_context *c, const char *sink_name, int suspend, pa_context_success_cb_t cb, void *userdata);
pa_operation *pa_context_suspend_sink_by_index(pa_context *c, uint32_t idx, int suspend, pa_context_success_cb_t cb, void *userdata);
シンクを一時停止/再開
idx
PA_INVALID_INDEX の場合、すべてのシンクが一時停止。
ソース
pa_operation *pa_context_get_source_info_by_index(pa_context *c, uint32_t idx, pa_source_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_source_info_by_name(pa_context *c, const char *name, pa_source_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_source_info_list(pa_context *c, pa_source_info_cb_t cb, void *userdata);

typedef void (*pa_source_info_cb_t)(pa_context *c, const pa_source_info *i, int eol, void *userdata);
ソースの情報を取得
typedef struct pa_source_info {
    const char *name;
    uint32_t index;
    const char *description;
    pa_sample_spec sample_spec;
    pa_channel_map channel_map;
    uint32_t owner_module;
    pa_cvolume volume;
    int mute;
    uint32_t monitor_of_sink;
    const char *monitor_of_sink_name;
    pa_usec_t latency;
    const char *driver;
    pa_source_flags_t flags;
    pa_proplist *proplist;
    pa_usec_t configured_latency;
    pa_volume_t base_volume;
    pa_source_state_t state;
    uint32_t n_volume_steps;
    uint32_t card;
    uint32_t n_ports;
    pa_source_port_info **ports;
    pa_source_port_info *active_port;
    uint8_t n_formats;
    pa_format_info **formats;
} pa_source_info;
ソース情報
name
ソース名
index
ソースのインデックス
description
ソースの詳細説明
sample_spec
サンプルスペック
channel_map
チャンネルマップ
owner_module
所有モジュールのインデックス、または PA_INVALID_INDEX
volume
ソースの音量
mute
ミュートか
monitor_of_sink
モニターソースの場合は、所有しているシンクのインデックス。それ以外の場合は PA_INVALID_INDEX
monitor_of_sink_name
所有しているシンクの名前、または NULL
latency
このソースの録音バッファ内にあるデータの時間(マイクロ秒)
driver
ドライバ名
flags
フラグ。

PA_SOURCE_NOFLAGS
PA_SOURCE_HW_VOLUME_CTRL
PA_SOURCE_LATENCY
PA_SOURCE_HARDWARE
PA_SOURCE_NETWORK
PA_SOURCE_HW_MUTE_CTRL
PA_SOURCE_DECIBEL_VOLUME
PA_SOURCE_DYNAMIC_LATENCY
PA_SOURCE_FLAT_VOLUME
proplist
プロパティリスト
configured_latency
このデバイスに設定されているレイテンシ(マイクロ秒)
base_volume
入力デバイスのコンテキストで増幅/減衰されていないボリュームを指す、ベースボリューム
state
状態フラグ。

PA_SOURCE_INVALID_STATE
PA_SOURCE_RUNNING
PA_SOURCE_IDLE
PA_SOURCE_SUSPENDED
n_volume_steps
任意ボリュームをサポートしない場合の、ボリュームステップ数
card
カードのインデックスまたは PA_INVALID_INDEX
n_ports
ports の配列数
ports
ソースのポート情報のポインタの配列、または NULL
active_port
アクティブなポートのポインタ。
ports 配列内の一つのポインタ、または NULL
n_formats
formats の配列数
formats
サポートしているフォーマットのポインタの配列
typedef struct pa_source_port_info {
    const char *name;
    const char *description;
    uint32_t priority;
    int available;
    const char *availability_group;
    uint32_t type;
} pa_source_port_info;
ソース情報 (ポート)
pa_operation *pa_context_set_source_volume_by_index(pa_context *c, uint32_t idx,
    const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata);

pa_operation *pa_context_set_source_volume_by_name(pa_context *c, const char *name,
    const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata);
ソースのボリュームを設定
pa_operation *pa_context_set_source_mute_by_index(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata);
pa_operation *pa_context_set_source_mute_by_name(pa_context *c, const char *name, int mute, pa_context_success_cb_t cb, void *userdata);
ソースのミュートを設定
pa_operation *pa_context_set_source_port_by_index(pa_context *c, uint32_t idx, const char *port, pa_context_success_cb_t cb, void *userdata);
pa_operation *pa_context_set_source_port_by_name(pa_context *c, const char *name, const char *port, pa_context_success_cb_t cb, void *userdata);
ソースのポートを設定
pa_operation *pa_context_suspend_source_by_name(pa_context *c, const char *source_name, int suspend, pa_context_success_cb_t cb, void *userdata);
pa_operation *pa_context_suspend_source_by_index(pa_context *c, uint32_t idx, int suspend, pa_context_success_cb_t cb, void *userdata);
ソースを一時停止/再開
シンク入力
pa_operation *pa_context_get_sink_input_info(pa_context *c, uint32_t idx, pa_sink_input_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_sink_input_info_list(pa_context *c, pa_sink_input_info_cb_t cb, void *userdata);

typedef void (*pa_sink_input_info_cb_t)(pa_context *c, const pa_sink_input_info *i, int eol, void *userdata);
シンク入力の情報取得
typedef struct pa_sink_input_info {
    uint32_t index;
    const char *name;
    uint32_t owner_module;
    uint32_t client;
    uint32_t sink;
    pa_sample_spec sample_spec;
    pa_channel_map channel_map;
    pa_cvolume volume;
    pa_usec_t buffer_usec;
    pa_usec_t sink_usec;
    const char *resample_method;
    const char *driver;
    int mute;
    pa_proplist *proplist;
    int corked;
    int has_volume;
    int volume_writable;
    pa_format_info *format;
} pa_sink_input_info;
シンク入力の情報構造体
index
シンク入力のインデックス
name
名前。
クライアントが設定したストリーム名。
client
このシンク入力が属するクライアントのインデックス。
どのクライアントにも属していない場合は PA_INVALID_INDEX。
sink
接続されているシンクのインデックス
buffer_usec
シンク入力のバッファのレイテンシ(マイクロ秒)
sink_usec
シンクデバイスのレイテンシ(マイクロ秒)
resample_method
このシンク入力で使用される再サンプリング方法の文字列
has_volume
ストリームに独自の音量があるか。
0 の場合、volume メンバの値は未定義。
volume_writable
独自の音量を設定できるか。
0 の場合でも音量は変更できるが、実際には適用されない。
pa_operation *pa_context_move_sink_input_by_name(pa_context *c, uint32_t idx,
    const char *sink_name, pa_context_success_cb_t cb, void *userdata);

pa_operation *pa_context_move_sink_input_by_index(pa_context *c, uint32_t idx,
    uint32_t sink_idx, pa_context_success_cb_t cb, void *userdata);
シンク入力を違うシンクに移動
pa_operation *pa_context_set_sink_input_volume(pa_context *c, uint32_t idx,
    const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata);

typedef void (*pa_context_success_cb_t)(pa_context *c, int success, void *userdata);
シンク入力の音量をセット
pa_operation *pa_context_set_sink_input_mute(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata);

typedef void (*pa_context_success_cb_t)(pa_context *c, int success, void *userdata);
シンク入力のミュートを設定
pa_operation *pa_context_kill_sink_input(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata);
シンク入力を削除
ソース出力
pa_operation *pa_context_get_source_output_info(pa_context *c, uint32_t idx, pa_source_output_info_cb_t cb, void *userdata);
pa_operation *pa_context_get_source_output_info_list(pa_context *c, pa_source_output_info_cb_t cb, void *userdata);

typedef void (*pa_source_output_info_cb_t)(pa_context *c, const pa_source_output_info *i, int eol, void *userdata);
ソース出力の情報を取得
typedef struct pa_source_output_info {
    uint32_t index;
    const char *name;
    uint32_t owner_module;
    uint32_t client;
    uint32_t source;
    pa_sample_spec sample_spec;
    pa_channel_map channel_map;
    pa_usec_t buffer_usec;
    pa_usec_t source_usec;
    const char *resample_method;
    const char *driver;
    pa_proplist *proplist;
    int corked;
    pa_cvolume volume;
    int mute;
    int has_volume;
    int volume_writable;
    pa_format_info *format;
} pa_source_output_info;
ソース出力の情報構造体
pa_operation *pa_context_move_source_output_by_name(pa_context *c, uint32_t idx, const char *source_name, pa_context_success_cb_t cb, void *userdata);
pa_operation *pa_context_move_source_output_by_index(pa_context *c, uint32_t idx, uint32_t source_idx, pa_context_success_cb_t cb, void *userdata);
ソース出力を別のソースに移動
pa_operation *pa_context_set_source_output_volume(pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata);
ソース出力の音量をセット
pa_operation *pa_context_set_source_output_mute(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata);
ソース出力をミュート
pa_operation *pa_context_kill_source_output(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata);
ソース出力を削除