PulseAudio:ストリーム(1)

作成
pa_stream_newストリームの作成
pa_stream_new_with_proplistプロパティを指定して、ストリーム作成
pa_stream_new_extendedストリーム作成 (拡張)
参照カウント
pa_stream_ref参照カウンタを+1
pa_stream_unref参照カウンタを-1
接続
pa_stream_connect_playback再生用にシンクに接続する
pa_stream_connect_record録音用にソースに接続する
pa_stream_disconnectシンク/ソースから切断
情報取得
pa_stream_get_state現在の状態を取得
pa_stream_get_contextコンテキストを取得
pa_stream_get_indexシンク入力/ソース出力のインデックスを取得
pa_stream_get_device_indexシンク/ソースのインデックスを取得
pa_stream_get_device_nameシンク/ソースの名前を取得
pa_stream_is_suspendedシンク/ソースが一時停止中か
pa_stream_is_corked停止中か
読み書き
pa_stream_begin_writeデータの書き込みを準備
pa_stream_cancel_writeデータの書き込みをキャンセル
pa_stream_write再生データを書き込む
pa_stream_write_ext_freeデータを書き込む
pa_stream_peekデータを読み込む
pa_stream_drop録音データを削除する
pa_stream_writable_size書き込み可能なバイト数を返す
pa_stream_readable_size読み込み可能なバイト数を返す
pa_stream_drain再生ストリームの排出
pa_stream_update_timing_infoタイミング情報の更新
コールバック
pa_stream_set_state_callbackストリームの状態変化時のコールバックをセット
pa_stream_set_write_callbackストリームにデータが書き込み可能になった時のコールバックをセット
pa_stream_set_read_callbackストリームから読み込み可能になった時のコールバックをセット
pa_stream_set_overflow_callback(再生)バッファオーバーフロー時のコールバックをセット
pa_stream_set_underflow_callback(再生)バッファアンダーフロー時のコールバックをセット
pa_stream_set_started_callback(再生)再生開始時のコールバックをセット
pa_stream_set_latency_update_callback遅延情報の更新時のコールバックをセット
pa_stream_set_moved_callback別のシンク/ソースに移動した時のコールバックをセット
pa_stream_set_suspended_callbackシンク/ソースの一時停止/再開時のコールバックをセット
pa_stream_set_event_callbackイベント受信時のコールバックをセット
pa_stream_set_buffer_attr_callbackサーバーのバッファ属性が変更された時のコールバックをセット
操作
pa_stream_cork再生の一時停止/再開
pa_stream_flushストリームのバッファをフラッシュ
pa_stream_prebufプリバッファリングを有効にする
pa_stream_trigger再生をすぐに開始させる
情報
pa_stream_set_nameストリームの名前を変更
pa_stream_get_underflow_indexアンダーフローの位置を返す
pa_stream_get_time現在の時間を返す
pa_stream_get_latencyレイテンシを取得
pa_stream_get_timing_infoタイミング情報を取得
pa_stream_get_sample_specサンプルスペックを取得
pa_stream_get_channel_mapチャンネルマップを取得
pa_stream_get_format_infoフォーマット情報を取得
pa_stream_get_buffer_attrバッファ属性を取得
pa_stream_set_buffer_attrバッファ属性を変更
pa_stream_update_sample_rateサンプルレートを変更
pa_stream_proplist_updateプロパティリストに追加
pa_stream_proplist_removeプロパティリストの項目を削除
pa_stream_set_monitor_stream特定のシンク入力のみを監視
pa_stream_get_monitor_stream監視中のシンク入力インデックスを返す
作成
pa_stream *pa_stream_new(pa_context *c, const char *name, const pa_sample_spec *ss, const pa_channel_map *map);
指定された名前とサンプルスペックで、まだ接続されていない、新しいストリームを作成する。
PCM 専用。
name
ストリームの名前(音量調整アプリなどで表示される)
ss
サンプルスペック
map
チャンネルマップ。NULL でデフォルト
pa_stream *pa_stream_new_with_proplist(pa_context *c, const char *name,
    const pa_sample_spec *ss, const pa_channel_map *map, pa_proplist *p);
プロパティを指定して、ストリーム作成
pa_stream *pa_stream_new_extended(pa_context *c, const char *name,
    pa_format_info *const *formats, unsigned int n_formats, pa_proplist *p);
複数のフォーマット情報を指定して、新しい未接続のストリームを作成する。
接続するときに、サーバーは最も適切なフォーマットを選択する。
PCM と圧縮オーディオに対応。
formats
フォーマットの配列
n_formats
formats 配列の数
参照カウント
pa_stream *pa_stream_ref(pa_stream *s);
参照カウンタを+1
void pa_stream_unref(pa_stream *s);
参照カウンタを-1
接続
int pa_stream_connect_playback(pa_stream *s, const char *dev, const pa_buffer_attr *attr,
    pa_stream_flags_t flags, const pa_cvolume *volume, pa_stream *sync_stream);
ストリームを、再生用にシンクに接続する。

dev と volume に NULL を渡し、flags で PA_STREAM_START_MUTED と PA_STREAM_START_UNMUTED を設定しないことを推奨する。
(これらのオプションが、ユーザー入力または構成に直接依存する場合は除く)

このルールに従うと、サウンドサーバーは、サーバー側のポリシー、ヒューリスティック、および以前の使用から保存された情報に基づいて、デバイス(シンク/ソース)、音量、ミュートのステータスを自動的に選択する。
また、サーバーは、ストリームを受け入れるために、オーディオデバイスを再構成する場合がある。

0.9.20 より前では、volume 引数が、シンクの現在の音量に対して、相対的か絶対的かは、定義されていなかった。
0.9.20 以降では、シンクがフラットボリュームモードの場合は絶対ボリュームで、それ以外は相対ボリューム。
したがって、ここで渡される volume は、pa_context_set_sink_input_volume() に渡される音量と、常に同じセマンティクスを持つようになる。
pa_context_get_sink_info_by_name() によって、特定のシンクに対して、フラットボリュームモードが有効になっているかどうかを確認できる。

5.0 以降では、ストリームに複数のチャンネルがある場合でも、一つの音量のみを指定できる。その場合、すべてのチャンネルに同じ音量が適用される。
dev
接続するシンクの名前。NULL でサーバーが選択する
attr
バッファリング属性。NULL でデフォルト
flags
フラグ。

PA_STREAM_NOFLAGSフラグなし (0)
PA_STREAM_START_CORKEDストリームを停止状態で作成する。
再生を開始するには、明示的な pa_stream_cork() が必要。
PA_STREAM_INTERPOLATE_TIMINGタイミング情報の時間を補間する。
pa_stream_get_latency() と pa_stream_get_time() は、最後のタイミング情報を取得してから経過したローカル時間に基づいて、現在の記録/再生時間を推定しようとする。
このオプションを使用すると、現在の再生/記録時間が必要な場合に、ラウンドトリップ全体を必要としないという利点がある。
このオプションを PA_STREAM_AUTO_TIMING_UPDATE と組み合わせると、非常に効果的。
PA_STREAM_NOT_MONOTONIC時間を単調に増加させない。
このオプションを有効にすると、pa_stream_get_time() は、呼び出しごとに時間が増加するとは限らない。
以前の時間より前の値が返る可能性があるが、時間を早める原因となる、不適切なトランスポート遅延の推定を待機せずに、すばやく修正できるという利点がある。
(このフラグは、0.9.11 より前では PA_STREAM_NOT_MONOTONOUS という名前だった。互換性の理由から、古い名前もまだ定義されている)
PA_STREAM_AUTO_TIMING_UPDATEタイミング情報の更新要求が、定期的に自動で行われる。
PA_STREAM_NO_REMAP_CHANNELSチャンネルを、名前で再マップせず、単にインデックスでマップする。
PA_STREAM_NO_REMIX_CHANNELS を意味する。
PA_STREAM_NO_REMIX_CHANNELS名前でチャンネルを再マップする場合、関連するチャンネルに、アップミックスまたはダウンミックスしない。
デバイスの一致するチャンネルに、1:1 でコピーする。
PA_STREAM_FIX_FORMATこのストリームが接続されているシンク/デバイスの、サンプルスペックを使用する。
ストリーム作成時のサンプルスペックは無視されるが、PulseAudio へのヒントとして渡すため、有効な値が必要。
これを使用する場合は、ストリームの作成後、pa_stream_get_sample_spec() を使用して、実際に選択されたサンプルスペックを参照する必要がある。
また、手動バッファメトリックを指定した場合は、変更されたフレームサイズを補正するために、pa_stream_set_buffer_attr() を使用して、更新することを推奨する。

pa_stream_new_extended() を使用してストリームを作成する場合、このフラグは効果がない。
PCM エンコード時、サーバーにサンプルスペックを選択させたい場合は、関数の formats 引数で、サンプル形式を指定しないこと。
PA_STREAM_FIX_RATEシンクのサンプルレートを使用して、サンプルスペックに含まれるレートを無視する。

pa_stream_new_extended() を使用してストリームを作成する場合、このフラグは効果がない。
PCM エンコード時、サーバーにサンプルレートを選択させたい場合は、関数の formats 引数で、レートを指定しないこと。
PA_STREAM_FIX_CHANNELSシンクのチャンネル数とチャンネルマップを使用し、関数に渡されたサンプルスペックと、チャンネルマップに含まれるチャンネル数とマップを無視する。

pa_stream_new_extended() を使用してストリームを作成する場合、このフラグは効果がない。
PCM エンコード時、サーバーにチャンネル数とチャンネルマップを選択させたい場合は、関数の formats 引数で、チャンネルの情報を指定しないこと。
PA_STREAM_DONT_MOVEこのストリームを、別のシンク/デバイスに移動することを許可しない。
PA_STREAM_FIX_* フラグのいずれかを使用していて、ストリームが異なるサンプルスペック/チャンネルマップを持つ、別のシンク/ソースに移動された場合に発生する可能性があるリサンプリングが行われないようにする場合に役立つ。
PA_STREAM_VARIABLE_RATEpa_stream_update_sample_rate() を使用して、再生中にサンプリングレートを動的に変更できるようにする。
PA_STREAM_PEAK_DETECT再サンプリングする代わりに、ピークを見つける
PA_STREAM_START_MUTEDミュート状態で作成する。
PA_STREAM_START_UNMUTED も PA_STREAM_START_MUTED も設定されていない場合、ミュートするかどうかは、サーバーが選択する。
PA_STREAM_ADJUST_LATENCY要求されたバッファ情報に基づいて、シンク/ソースのレイテンシを調整し、それに応じてバッファ情報を調整する。
このオプションは、PA_STREAM_EARLY_REQUESTS と同時に指定することはできない。
PA_STREAM_EARLY_REQUESTS「クラシック」ハードウェアデバイスの、フラグメントスタイルの再生モデルに依存する、レガシークライアントの互換モードを有効にする。
このオプションが設定されている場合、バッファメトリックの minreq 値は新しい意味を持ちます。
つまり、この値よりも少ない、新しいデータを要求する要求が、クライアントに対して行われないことを指定するだけでなく、この制限に達すると、すぐに要求が生成されることを保証する。
このフラグは、フラグメントベースの再生モデルとの互換性を維持する必要があり、クライアントアプリケーションが可能な限り遅い時点まで遅延されるデータ要求を処理できない、ごくわずかな状況でのみ設定する必要がある (通常、これらはデバイス自体でスリープする代わりに、再生ループで usleep() または同様の呼び出しを使用するプログラム)。
このオプションは、PA_STREAM_ADJUST_LATENCY と同時に指定することはできない。
PA_STREAM_DONT_INHIBIT_AUTO_SUSPENDこのストリームが接続されているデバイス (シンク/ソース)を、自動的に一時停止 (suspend) するかどうかをチェックするときに、このストリームは考慮されない。
PA_STREAM_START_UNMUTEDミュート解除状態で作成する。
PA_STREAM_FAIL_ON_SUSPENDこのストリームが接続されているシンク/ソースが、このストリームの作成中に一時停止 (suspend) された場合、ストリームは失敗する。
このストリームの作成中に、シンク/ソースが一時停止されている場合は、このストリームが終了していることを確認する必要がある。
PA_STREAM_RELATIVE_VOLUMEこのストリームの作成時に、引数で volume が渡された場合、それを、シンクの現在の音量に対する相対的なものとして扱い、絶対的な音量として扱わない。
これを指定しない場合、シンクがフラットボリュームモードの場合は、音量は絶対的なものとして扱われ、それ以外の場合は相対的なものとして扱われる。
PA_STREAM_PASSTHROUGHパススルーシンクによってレンダリングされるコンテンツに、タグを付けるために使用される。
データはそのまま残され、再フォーマットや再サンプリングは行われない。
volume
初期音量。NULL でデフォルト
sync_stream
指定したストリームと同期させる。スタンドアロン・ストリームの場合は NULL。
戻り値
成功時は 0
int pa_stream_connect_record(pa_stream *s, const char *dev, const pa_buffer_attr *attr, pa_stream_flags_t flags);
ストリームを、録音用にソースに接続する。
dev
接続するソースの名前。NULL で、サーバーが選択
戻り値
成功時は 0
int pa_stream_disconnect(pa_stream *s);
シンク/ソースから切断
戻り値
成功時は 0
情報取得
pa_stream_state_t pa_stream_get_state(const pa_stream *p);
現在の状態を取得
pa_context *pa_stream_get_context(const pa_stream *p);
コンテキストを取得
uint32_t pa_stream_get_index(const pa_stream *s);
サーバー内でこのストリームが識別されるための、シンク入力またはソース出力のインデックスを返す。
pa_context_get_sink_input_info() や pa_context_get_source_output_info() などの関数で使う。
失敗した場合は PA_INVALID_INDEX を返す。
uint32_t pa_stream_get_device_index(const pa_stream *s);
サーバー内でこのストリームが接続されている、シンクまたはソースのインデックスを返す。
pa_context_get_sink_info_by_index() や pa_context_get_source_info_by_index() などの関数で使う。

ストリームは、別のシンク/ソースに移動される可能性があるので注意。
失敗すると PA_INVALID_INDEX を返す。
const char *pa_stream_get_device_name(const pa_stream *s);
サーバー内でこのストリームが接続されている、シンクまたはソースの名前を返す。
pa_context_get_sink_info_by_name() や pa_context_get_source_info_by_name() などの関数で使う。
int pa_stream_is_suspended(const pa_stream *s);
このストリームが接続されているシンクまたはソースが、一時停止されている場合は 1 を返す。
そうでない場合は 0、エラーの場合は負の値。
サーバーが ver 0.9.8 より古い場合、-PA_ERR_NOTSUPPORTED を返す。
int pa_stream_is_corked(const pa_stream *s);
停止中か
戻り値
ストリームが停止中なら 1、そうでなければ 0、エラー時は負の値。
読み書き
int pa_stream_begin_write(pa_stream *p, void **data, size_t *nbytes);
再生用に、サーバーへのデータの書き込みを準備する。
この関数は、メモリのコピーを最適化するために使用できるので、pa_stream_write() を呼び出す前に、この関数を使うことを推奨する。

返されたポインタにデータを書き込んだ後、pa_stream_write() を呼び出すと、実際に書き込みが実行される。
pa_stream_begin_write() の後は、時間を掛けずに pa_stream_write() を行う必要がある。

pa_stream_write() を呼び出すことなく、pa_stream_begin_write() をキャンセルしたい場合は、pa_stream_cancel_write() を使う。
write や cancel の前に、この関数を2回呼び出すと、まったく同じポインタと nbytes 値が返される。
data
データを書き込むためのポインタが返る。エラー時は NULL になる。
write または cancel の後は、このメモリへのアクセスは無効となる。
nbytes
書き込みたいバイト数をセットしておく。
関数が戻ると、実際に書き込み可能な最大バイト数が返る。
値に (size_t)-1 を指定した場合、サイズが自動的に選択される(推奨)。
返されたバイト数を超えるメモリへのアクセスは無効となる。
戻り値
成功時は 0、それ以外はエラー
int pa_stream_cancel_write(pa_stream *p);
pa_stream_begin_write() による書き込みの準備をキャンセルする。
メモリ上にすでにセットされたすべてのデータは削除される。

pa_stream_begin_write() の後、pa_stream_cancel_write() も pa_stream_write() も呼び出されていない場合にのみ、有効。

この呼び出し後に、pa_stream_begin_write() によって返されたメモリにアクセスすることはできない。また、メモリを解放する必要はない。
戻り値
成功時は 0
int pa_stream_write(pa_stream *p, const void *data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek);

typedef void (*pa_free_cb_t)(void *p);
サーバーに再生用のデータを書き込む。

ほとんどのアプリケーションでは、offset と seek の値を、それぞれ 0 と PA_SEEK_RELATIVE にするのが一般的。
呼び出しが成功すると、書き込み位置は、このデータチャンクが書き込まれた位置の、後の位置になる。

メモリコピーを最適化する方法として、この呼び出しの前に pa_stream_begin_write() を呼び出し、その呼び出しによって返されたメモリ領域に、データを直接配置することができる。
そのメモリ領域のポインタを pa_stream_write() に渡す。
pa_stream_write() 後、そのメモリ領域にはアクセスできなくなる。この場合、そのメモリ領域を解放する必要はない。
pa_stream_begin_write() によって返されたメモリ領域には、部分的に書き込むことができる。
nbytes
書き込むデータのバイト数。
ストリームのサンプルスペックの、フレームサイズの倍数であること。
free_cb
すべてのデータが書き込まれたときに呼び出される、コールバック関数。
NULL の場合、データは内部バッファにコピーされる。
それ以外の場合、data ポインタが保持され、データはコピーされない。
pa_stream_begin_write() で取得した領域の場合は、NULL。
offset
書き込むオフセット位置
seek
シークモード。

PA_SEEK_RELATIVE : 現在の書き込み位置を基準にする。
PA_SEEK_ABSOLUTE : バッファキューの先頭を基準にする。
PA_SEEK_RELATIVE_ON_READ : 現在の読み込み位置を基準にする。
PA_SEEK_RELATIVE_END : バッファキューの現在の末尾を基準にする。
戻り値
成功時は 0
int pa_stream_write_ext_free(pa_stream *p, const void *data, size_t nbytes, pa_free_cb_t free_cb, void *free_cb_data, int64_t offset, pa_seek_mode_t seek);
//ver 6.0
データを書き込む。
pa_stream_write() と同じだが、free_cb のコールバックが呼び出されるとき、引数に data が渡される代わりに、free_cb_data が渡される。
int pa_stream_peek(pa_stream *p, const void **data, size_t *nbytes);
バッファから次のフラグメントを読み込む (録音用)。

pa_stream_drop() を使用すると、バッファからデータを削除し、読み込み位置を前に移動する。
バッファが空の場合は、pa_stream_drop() を呼ばないようにすること。
ただし、データに穴がある場合は、呼び出す。
data
読み込んだデータのバッファ位置が返る。
バッファの読み込み位置にデータがない場合や、バッファが空の場合、NULL になる。
nbytes
データのバイト数が返る (バッファ情報の fragsize より、小さい or 大きい場合がある)。
データがない場合、0 になる。
記録したデータに穴がある場合、穴の長さが入る。
戻り値
成功の場合は 0、エラーの場合は負の値。
int pa_stream_drop(pa_stream *p);
録音ストリーム上の、現在のフラグメントを削除する。
pa_stream_peek() を呼び出さずに行うのは、無効。
戻り値
成功時 0
size_t pa_stream_writable_size(const pa_stream *p);
サーバーに対して書き込むことができるバイト数を返す。

buffer_attr.maxlength バイトまでなら、このサイズを超えて書き込むことができる。
ただし、ストリームの遅延が、buffer_attr.tlength よりも高くなるため、通常は望ましくない。
戻り値
エラー時、(size_t)-1
size_t pa_stream_readable_size(const pa_stream *p);
pa_stream_peek() で読み込むことができるバイト数を返す。
実際にはある程度読み込み可能な状態でも、fragsize を基準にして、一定程度データが溜まるまでは 0 を返す。
戻り値
エラー時、(size_t)-1
pa_operation *pa_stream_drain(pa_stream *s, pa_stream_success_cb_t cb, void *userdata);
再生ストリームの排出。
バッファ内のすべてのオーディオが再生され、再生バッファが空になったときに、通知を受けるために使用する。
一度に発行できるドレイン操作は、ストリームごとに1つだけ。
pa_operation *pa_stream_update_timing_info(pa_stream *p, pa_stream_success_cb_t cb, void *userdata);
ストリームのタイミング情報の更新を要求する。
生のタイミングデータにアクセスするには、pa_stream_get_timing_info() を使用し、クリーンアップされた値を取得するには、pa_stream_get_time() または pa_stream_get_latency() を使用する。
コールバック
void pa_stream_set_state_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata);
ストリームの状態が変化するたびに呼び出される、コールバック関数を設定する。
void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata);
新しいデータをストリームに書き込めるようになった時に呼び出される、コールバック関数を設定する。
void pa_stream_set_read_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata);
ストリームから新しいデータが利用可能になったときに呼び出される、コールバック関数を設定。
void pa_stream_set_overflow_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
バッファオーバーフローが発生したときに呼び出される、コールバック関数を設定 (再生ストリームのみ)
void pa_stream_set_underflow_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
バッファアンダーフローが発生したときに呼び出される、コールバック関数を設定 (再生ストリームのみ)
void pa_stream_set_started_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
アンダーラン後、または、初回起動時に、サーバーが再生を開始するときに呼び出される、コールバック関数を設定。
これは、オーディオが再び流れていることを通知するだけで、オーディオがすでにスピーカーに到達したことを示すものではない。
(再生ストリームのみ)
void pa_stream_set_latency_update_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
遅延情報の更新が発生するたびに呼び出される、コールバック関数を設定。
PA_STREAM_AUTO_TIMING_UPDATE が ON の場合のみ。
void pa_stream_set_moved_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
ストリームが、別のシンク/ソースに移動されるたびに呼び出される、コールバック関数を設定。
新しいシンク/ソースを照会するには、pa_stream_get_device_name() または pa_stream_get_device_index() を使用する。
void pa_stream_set_suspended_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
このストリームが接続されているシンク/ソースが、一時停止または再開されるたびに呼び出される、コールバック関数を設定。
pa_stream_is_suspended() を使用して、新しい状態を取得できる。

ストリームが別のシンク/ソースに移動されると、このステータスも変更される可能性があるので、注意。
したがって、この関数を呼び出す場合は、pa_stream_set_moved_callback() も呼び出す必要がある。
void pa_stream_set_event_callback(pa_stream *p, pa_stream_event_cb_t cb, void *userdata);
メタ/ポリシー制御イベントを受信するたびに呼び出される、コールバック関数を設定。
void pa_stream_set_buffer_attr_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
サーバー側のバッファ属性が変更されるたびに呼び出されるコールバック関数を設定。

ストリームが別のシンク/ソースに移動されると、バッファ属性が変更される可能性があるので、注意。
したがって、これを使用する場合は、pa_stream_set_moved_callback() も使用する必要がある。
操作
pa_operation *pa_stream_cork(pa_stream *s, int b, pa_stream_success_cb_t cb, void *userdata);
このストリームの再生を、一時停止または再開する。
再生ストリームと録音ストリームの両方で使用できる。

一時停止/再開の操作は、可能な限り迅速に実行される。
停止の直後に再開が続いたり、その逆の場合、出力されるストリームには、実際には影響がない可能性がある。
pa_stream_is_corked() を使用して、状態を確認できる。

通常、ストリームは停止ではない状態で作成される。
ストリームを接続するときに、PA_STREAM_START_CORKED のフラグを ON にすると、ストリームは一時停止状態で作成される。
b
1 で一時停止、0 で再開
pa_operation *pa_stream_flush(pa_stream *s, pa_stream_success_cb_t cb, void *userdata);
このストリームの、再生/録音バッファをフラッシュする。
これにより、バッファ内のすべてのオーディオデータが破棄される。
ほとんどの場合、この関数の代わりに、pa_stream_write() の seek 引数を使用する方が適切。
pa_operation *pa_stream_prebuf(pa_stream *s, pa_stream_success_cb_t cb, void *userdata);
pa_buffer_attr 構造体で prebuf の値が指定されている場合、プリバッファリングを有効にする。
(再生ストリームのみ)
pa_operation *pa_stream_trigger(pa_stream *s, pa_stream_success_cb_t cb, void *userdata);
このストリームの再生を、すぐに開始するよう要求する。
プリバッファリングは一時的に無効になる。
(再生ストリームのみ)
情報
pa_operation *pa_stream_set_name(pa_stream *s, const char *name, pa_stream_success_cb_t cb, void *userdata);
ストリームの名前を変更
int64_t pa_stream_get_underflow_index(const pa_stream *p);
最後にアンダーフローが発生した時のバッファの位置を返す。
アンダーフローのコールバック内で使用すると、現在のアンダーフローに関する情報を取得できる。
(再生ストリームのみ)
戻り値
情報が不明な場合は -1 (アンダーフローが発生していない場合、またはサーバーが 1.0 より古い場合)
int pa_stream_get_time(pa_stream *s, pa_usec_t *r_usec);
現在の再生/録音時間を返す。
これは、pa_stream_get_timing_info() によって返される、タイミング情報構造体のデータに基づいている。
返される時間は、サウンドカードクロックドメインにあり、通常はシステムクロックとはわずかに異なる速度で実行される。

この関数は通常、タイミング情報の更新が受信された場合にのみ、新しいデータを返す。
タイミング補間が要求された場合 (PA_STREAM_INTERPOLATE_TIMING) のみ、タイミング情報が取得されてから経過したローカル時間に基づいて、最後のタイミング更新のデータを使用して、現在の再生/録音時間を推定する。

この関数によって返される時間値は、単調に増加することが保証されている (返される値は、常に最後の呼び出しによって返される値以上になる)。
この動作は、PA_STREAM_NOT_MONOTONIC を使用して無効にできる。
これは、トランスポート遅延の誤った推定を、より適切に処理するために、望ましい場合があるが、アプリケーションが時間の「逆方向」の進行を処理できない場合は、予期しない影響が生じる可能性がある。

PA_STREAM_INTERPOLATE_TIMING による補間は、オーディオクロックに関連付けられた UI 操作の滑らかさを向上させるために、正確な時間グラフよりも「滑らかな」時間グラフを優先する。
正確さが重要な場合は、pa_stream_get_timing_info() のデータに基づいてタイミングを自分で推定するか、補間されたタイミングをまったく使用せずに、常に pa_stream_update_timing_info() を使用して、最新のタイミングを参照する必要がある。
戻り値
成功時 0。エラー時は負の値。
タイミング情報がまだ受信されていない場合、-PA_ERR_NODATA。
int pa_stream_get_latency(pa_stream *s, pa_usec_t *r_usec, int *negative);
現在書き込まれているデータが、実際にハードウェア上で再生されるまでの時間を返す。

この関数は pa_stream_get_time() に基づいている。
返される時間は、サウンドカードクロックドメインにあり、通常はシステムクロックとはわずかに異なる速度で実行される。
r_usec
遅延時間が返る。
ストリームが監視ストリームの場合、結果は負になることがある (キャプチャされたサンプルはまだ再生されていない)。この場合、*negative は 1 になる。
negative
負の値の場合、1 が設定される
戻り値
成功時 0。
タイミング情報がまだ受信されていない場合、-PA_ERR_NODATA。
const pa_timing_info *pa_stream_get_timing_info(pa_stream *s);
最新のタイミング情報を返す。

返されたポインタは、タイミング構造の、内部読み取り専用インスタンスを参照する。
このデータの更新は、pa_stream_update_timing_info() を使用して要求する。

タイミング情報が受信されていない場合 (pa_stream_update_timing_info() を実行していない、または PA_STREAM_AUTO_TIMING_UPDATE が OFF)、この関数は NULL を返す。

write_index は、タイミング更新が受信されたときだけではなく、pa_stream_write() の呼び出しごとに更新される。
const pa_sample_spec *pa_stream_get_sample_spec(pa_stream *s);
ストリームのサンプルスペックのポインタを返す。
const pa_channel_map *pa_stream_get_channel_map(pa_stream *s);
チャンネルマップを取得
const pa_format_info *pa_stream_get_format_info(const pa_stream *s);
フォーマット情報を取得
const pa_buffer_attr *pa_stream_get_buffer_attr(pa_stream *s);
サーバー側でストリームごとに設定されているバッファ属性を返す。
これは、pa_stream_connect_record(), pa_stream_connect_playback() の引数で指定された値とは異なる場合がある。
この呼び出しは、PA_STREAM_ADJUST_LATENCY が​​ ON かどうかに関係なく、常に実際のバッファ属性を返す。
pa_operation *pa_stream_set_buffer_attr(pa_stream *s, const pa_buffer_attr *attr, pa_stream_success_cb_t cb, void *userdata);
ストリームの接続後に、バッファ属性を変更する。

サーバーは、要求されたものとは異なるバッファ属性を選択する可能性がある。
コールバックが呼び出された後は、pa_stream_get_buffer_attr() で情報を取得できる。

PA_STREAM_ADJUST_LATENCY が​​設定されているかどうかによって、呼び出しのセマンティクスが若干異なることに注意すること。
pa_operation *pa_stream_update_sample_rate(pa_stream *s, uint32_t rate, pa_stream_success_cb_t cb, void *userdata);
再生中に、ストリームのサンプリングレートを変更する。
この関数を使用する場合は、pa_stream_connect_playback() の flags で PA_STREAM_VARIABLE_RATE を ON にする必要がある。
ストリームが正常に接続され、サーバーが 0.9.8 以上である場合にのみ有効。
pa_operation *pa_stream_proplist_update(pa_stream *s, pa_update_mode_t mode, pa_proplist *p, pa_stream_success_cb_t cb, void *userdata);
このストリームの、シンク入力/ソース出力のプロパティリストを更新し、新しいエントリを追加する。

このストリームを、適切なデバイスにルーティングするために、その情報が使用される可能性があるため、事後的にこの関数を使用するのではなく、できるだけ多くのプロパティを、最初に pa_stream_new_with_proplist() で設定することを強く推奨する。
pa_operation *pa_stream_proplist_remove(pa_stream *s, const char *const keys[], pa_stream_success_cb_t cb, void *userdata);
このストリームの、シンク入力/ソース出力のプロパティリストを更新し、エントリを削除する。
int pa_stream_set_monitor_stream(pa_stream *s, uint32_t sink_input_idx);
[モニターソースに接続された録音ストリームの場合]
シンクの、特定のシンク入力のみを監視する。
※この関数は、pa_stream_connect_record() が呼び出される前に呼び出す必要がある。
戻り値
成功時 0、エラー時は負の値
uint32_t pa_stream_get_monitor_stream(const pa_stream *s);
以前に pa_stream_set_monitor_stream() で設定された、シンク入力インデックスを返す。
失敗した場合は PA_INVALID_INDEX を返す。