enum snd_pcm_state_t
SND_PCM_STATE_OPEN | 開いている。 snd_pcm_open() 後。 |
---|---|
SND_PCM_STATE_SETUP | 構成がインストールされた。 snd_pcm_prepare() を待機している。 |
SND_PCM_STATE_PREPARED | 開始する準備ができている。 |
SND_PCM_STATE_RUNNING | 実行されている。 snd_pcm_drop() または snd_pcm_drain() で停止できる。 |
SND_PCM_STATE_XRUN | アンダーラン (再生) またはオーバーラン (録音) 状態。 読み書き時に -EPIPE が返った場合は、この状態である。 回復するには、snd_pcm_recover() を実行する。 |
SND_PCM_STATE_DRAINING | drain で停止を待っている |
SND_PCM_STATE_PAUSED | snd_pcm_pause() による一時停止中 |
SND_PCM_STATE_SUSPENDED | ハードウェアがサスペンド状態。 snd_pcm_resume() で再開できる。 |
SND_PCM_STATE_DISCONNECTED | ハードウェアが切断されている |
SND_PCM_STATE_PRIVATE1 | ライブラリ内部で使われる値 |
typedef struct _snd_pcm_audio_tstamp_report { unsigned int valid:1; unsigned int actual_type:4; unsigned int accuracy_report:1; unsigned int accuracy; } snd_pcm_audio_tstamp_report_t;
タイムスタンプのレポート
vaild
下位互換性のための値
actual_type
ハードウェアが、要求されたタイムスタンプをサポートできなかった場合の、実際のタイプ
accuracy_report
accuracy が不明の場合は 0。accuracy フィールドが有効な場合は 1
accuracy
ナノ秒単位で、最大 4.29 秒、別のフィールドにパックされる
typedef struct _snd_pcm_audio_tstamp_config { unsigned int type_requested:4; unsigned int report_delay:1; } snd_pcm_audio_tstamp_config_t;
タイムスタンプの設定
type_requested
要求されたオーディオスタンプのタイプ
report_delay
A/D または D/A に合計遅延を追加する
ステータス
snd_pcm_state_t snd_pcm_state(snd_pcm_t *pcm);
snd_pcm_status() を呼び出さずに、PCM 状態のみを取得する。
戻り値
常に snd_pcm_state_t の1つを返す。負のエラーコードが返されることはない。
snd_pcm_status_t
取得
void snd_pcm_status_get_trigger_tstamp(const snd_pcm_status_t *obj, snd_timestamp_t *ptr);
トリガータイムスタンプを取得。
トリガーとは、PCM の状態遷移 (停止から実行へ、またはその逆) を意味する。
これは一時停止や中断にも適用される。
つまり、タイムスタンプには、ストリームが開始されたときや停止されたときの時刻が含まれる。
トリガーとは、PCM の状態遷移 (停止から実行へ、またはその逆) を意味する。
これは一時停止や中断にも適用される。
つまり、タイムスタンプには、ストリームが開始されたときや停止されたときの時刻が含まれる。
void snd_pcm_status_get_trigger_htstamp(const snd_pcm_status_t *obj, snd_htimestamp_t *ptr);
トリガータイムスタンプ(高解像度)を取得
void snd_pcm_status_get_htstamp(const snd_pcm_status_t *obj, snd_htimestamp_t *ptr);
現在のタイムスタンプ(高解像度)を取得
void snd_pcm_status_get_audio_htstamp(const snd_pcm_status_t *obj, snd_htimestamp_t *ptr);
現在のオーディオタイムスタンプ(高解像度)を取得
void snd_pcm_status_get_driver_htstamp(const snd_pcm_status_t *obj, snd_htimestamp_t *ptr);
現在のドライバタイムスタンプ(高解像度)を取得。
ドライバによってステータスが生成された時刻。
通常のタイムスタンプとは異なる場合がある。
ドライバによってステータスが生成された時刻。
通常のタイムスタンプとは異なる場合がある。
void snd_pcm_status_get_audio_htstamp_report(const snd_pcm_status_t *obj, snd_pcm_audio_tstamp_report_t *audio_tstamp_report);
オーディオタイムスタンプのレポートを取得
snd_pcm_sframes_t snd_pcm_status_get_delay(const snd_pcm_status_t *obj);
レイテンシをフレーム単位で取得。
delay は、現在のアプリケーションフレームの位置と、サウンドフレームの位置の間の距離。
通常の状況では、正でバッファサイズより小さく、再生が不足している場合は負になり、録音がオーバーランしている場合はバッファサイズより大きくなる。
delay は、現在のアプリケーションフレームの位置と、サウンドフレームの位置の間の距離。
通常の状況では、正でバッファサイズより小さく、再生が不足している場合は負になり、録音がオーバーランしている場合はバッファサイズより大きくなる。
snd_pcm_uframes_t snd_pcm_status_get_avail(const snd_pcm_status_t *obj);
有効なフレーム数を取得
戻り値
読み書きの準備が出来ているフレーム数
snd_pcm_uframes_t snd_pcm_status_get_avail_max(const snd_pcm_status_t *obj);
最後の snd_pcm_status() 呼び出し後、使用可能なフレームの最大数を取得。
この値は、snd_pcm_status 呼び出し間の、利用可能なフレームのピークを返す。
この値は、snd_pcm_status 呼び出し間の、利用可能なフレームのピークを返す。
snd_pcm_uframes_t snd_pcm_status_get_overrange(const snd_pcm_status_t *obj);
前回の呼び出し以降の、ADC 範囲外検出の回数を取得。
セット