enum snd_pcm_tstamp_t
タイムスタンプモード
SND_PCM_TSTAMP_NONE
タイムスタンプなし
SND_PCM_TSTAMP_ENABLE
ハードウェア位置の更新ごとにタイムスタンプを更新。
ピリオドの境界でタイムスタンプが取得される。
ピリオドの境界でタイムスタンプが取得される。
SND_PCM_TSTAMP_MMAP
SND_PCM_TSTAMP_ENABLE と同等だが、旧バージョンとの互換性のためだけに使う
snd_pcm_tstamp_type_t
タイムスタンプタイプ
SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY
gettimeofday 相当
SND_PCM_TSTAMP_TYPE_MONOTONIC
posix_clock_monotonic 相当
SND_PCM_TSTAMP_TYPE_MONOTONIC_RAW
monotonic_raw (no NTP)
ソフトウェア構成
int snd_pcm_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t *params);
ソフトウェア構成をインストールする。
ソフトウェアパラメータは、ストリームの実行中でも変更できる。
ソフトウェアパラメータは、ストリームの実行中でも変更できる。
戻り値
0 で成功、負でエラーコード。
int snd_pcm_sw_params_current(snd_pcm_t *pcm, snd_pcm_sw_params_t *params);
現在のソフトウェア構成を取得
戻り値
0 で成功、負でエラーコード。
snd_pcm_sw_params_t
取得
int snd_pcm_sw_params_get_boundary(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
リングポインタの境界を取得
val
フレーム単位の位置
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_get_tstamp_mode(const snd_pcm_sw_params_t *params, snd_pcm_tstamp_t *val);
タイムスタンプモードを取得
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_get_tstamp_type(const snd_pcm_sw_params_t *params, snd_pcm_tstamp_type_t *val);
タイムスタンプタイプを取得
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_get_avail_min(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
利用可能な最小フレームを取得
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_get_period_event(const snd_pcm_sw_params_t *params, int *val);
ピリオドイベントの有効/無効の取得
val
0 で無効、1 で有効
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_get_start_threshold(const snd_pcm_sw_params_t *paramsm, snd_pcm_uframes_t *val);
自動的に開始するしきい値の取得
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_get_stop_threshold(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
自動停止のしきい値を取得
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_get_silence_threshold(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
無音のしきい値の取得
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_get_silence_size(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
無音のサイズを取得。
val
無音のフレームサイズ (0 で無効)
戻り値
0 で成功、負の値でエラーコード
セット
int snd_pcm_sw_params_set_tstamp_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_tstamp_t val);
タイムスタンプモードをセット
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_set_tstamp_type(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_tstamp_type_t val);
タイムスタンプタイプをセット
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_set_avail_min(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
利用可能な最小フレームをセット。
PCM ストリームが、別の読み込み/書き込み操作、または poll イベントの準備ができていると見なされる、しきい値。
※これは、OSS ウェイクアップ ポイントの設定に似ている。
val の有効な値は、特定のハードウェアによって決まる。
ほとんどのサウンドカードは、2 の累乗のフレーム数 (つまり、512、1024、2048) のみを受け入れることができる。
これを高解像度のタイマーとして使用することはできない。
サウンドカードのハードウェアが、割り込みを発生させる頻度に制限される。
PCM ストリームが、別の読み込み/書き込み操作、または poll イベントの準備ができていると見なされる、しきい値。
※これは、OSS ウェイクアップ ポイントの設定に似ている。
val の有効な値は、特定のハードウェアによって決まる。
ほとんどのサウンドカードは、2 の累乗のフレーム数 (つまり、512、1024、2048) のみを受け入れることができる。
これを高解像度のタイマーとして使用することはできない。
サウンドカードのハードウェアが、割り込みを発生させる頻度に制限される。
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_set_period_event(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, int val);
ピリオドイベントの有効/無効をセット
val
0 で無効、1 で有効。
有効になっている場合、poll(select) のウェイクアップイベントが発生する。
有効になっている場合、poll(select) のウェイクアップイベントが発生する。
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_set_start_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
自動開始のしきい値をセット。
PCM が開始されていない状態で、リングバッファ内に指定値以上のフレーム数が存在する場合、自動的に PCM を開始する。
手動で開始したい場合は、より大きな値を指定する。
PCM が開始されていない状態で、リングバッファ内に指定値以上のフレーム数が存在する場合、自動的に PCM を開始する。
手動で開始したい場合は、より大きな値を指定する。
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_set_stop_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
自動停止のしきい値をセット。
読み書き可能なフレーム数が、しきい値以上の場合、PCM は SND_PCM_STATE_XRUN 状態で、自動的に停止する。
停止しきい値が、ソフトウェア構成の境界値に等しい場合、自動停止は無効になる (デバイスはリングバッファ内で無限ループを実行する)。
読み書き可能なフレーム数が、しきい値以上の場合、PCM は SND_PCM_STATE_XRUN 状態で、自動的に停止する。
停止しきい値が、ソフトウェア構成の境界値に等しい場合、自動停止は無効になる (デバイスはリングバッファ内で無限ループを実行する)。
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_set_silence_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
無音のしきい値をセット。
再生でアンダーランが発生する可能性のある時に使う。
再生時のアンダーランが、この無音しきい値に近い場合、再生バッファの一部が、無音に上書きされる。
再生でアンダーランが発生する可能性のある時に使う。
再生時のアンダーランが、この無音しきい値に近い場合、再生バッファの一部が、無音に上書きされる。
戻り値
0 で成功、負の値でエラーコード
int snd_pcm_sw_params_set_silence_size(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
無音のフレームサイズをセット。
再生時のアンダーランが、無音しきい値に近い場合、再生バッファの一部が無音で上書きされる。
drain 無音 (snd_pcm_hw_params_get_drain_silence) が無効になっている場合、これはドレインにも適用される。
つまり、ドレイン終了が無音しきい値に近い場合も、無音が書き込まれる。
この値が、境界 (boundary) と同じか、それより大きい場合は、特殊なケースとなる。
リングバッファの未使用部分 (最初に書き込まれたサンプルは変更されない) は、開始時に無音で埋められる。
その後、処理されたばかりのサンプル領域のみが無音で埋められる。
※silent_threshold は 0 に設定する必要がある。
再生時のアンダーランが、無音しきい値に近い場合、再生バッファの一部が無音で上書きされる。
drain 無音 (snd_pcm_hw_params_get_drain_silence) が無効になっている場合、これはドレインにも適用される。
つまり、ドレイン終了が無音しきい値に近い場合も、無音が書き込まれる。
この値が、境界 (boundary) と同じか、それより大きい場合は、特殊なケースとなる。
リングバッファの未使用部分 (最初に書き込まれたサンプルは変更されない) は、開始時に無音で埋められる。
その後、処理されたばかりのサンプル領域のみが無音で埋められる。
※silent_threshold は 0 に設定する必要がある。
val
0 で無効
戻り値
0 で成功、負の値でエラーコード