audio_stream_out 構造体リファレンス

audio_stream_out 構造体リファレンス

#include < audio.h >

データ フィールド

struct audio_stream   common
 
uint32_t(* get_latency )(const struct audio_stream_out *stream)
 
int(*  set_volume )(struct audio_stream_out *stream, float left, float right)
 
ssize_t(*  write )(struct audio_stream_out *stream, const void *buffer, size_t bytes)
 
int(*  get_render_position )(const struct audio_stream_out *stream, uint32_t *dsp_frames)
 
int(*  get_next_write_timestamp )(const struct audio_stream_out *stream, int64_t *timestamp)
 
int(*  set_callback )(struct audio_stream_out *stream, stream_callback_t callback, void *cookie)
 
int(*  paused )(struct audio_stream_out *stream)
 
int(*  resume )(struct audio_stream_out *stream)
 
int(*  drain )(struct audio_stream_out *stream, audio_drain_type_t type)
 
int(*  flush )(struct audio_stream_out *stream)
 
int(*  get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp)
 

詳細な説明

audio_stream_out は、オーディオ出力ハードウェアの抽象化インターフェースです。

音声出力ハードウェア ドライバのさまざまなプロパティに関する情報を提供します。

ファイル audio.h 276 行 の定義。

フィールドのドキュメント

struct audio_stream common

音声ストリーミング出力の一般的な方法。この構造体のユーザーは、 audio_stream audio_stream_out を参照していることが判明しているコンテキストで、 audio_stream audio_stream_out ポインタにキャストするため、このメンバーは audio_stream_out の最初のメンバーである必要があります。

ファイル audio.h 282 行 の定義。

int(* drain)(struct audio_stream_out *stream, audio_drain_type_t type)

ドライバ/ハードウェアによってバッファリングされたデータが再生されたときに通知をリクエストします。非ブロッキング モードを有効にするために set_callback() が以前に呼び出されている場合、 drain() はブロックしないで、すぐに返す必要があります。ドレインの完了はコールバックを介して通知されます。 set_callback() が呼び出されていない場合、 drain() は完了するまでブロックする必要があります。type==AUDIO_DRAIN_ALL の場合、以前に書き込まれたデータがすべて再生されると、ドレインが完了します。type==AUDIO_DRAIN_EARLY_NOTIFY の場合、現在のトラックのすべてのデータが再生される直前にドレインが完了し、フレームワークがギャップレス トラック切り替えを行う時間ができます。

ドレインは、stop() と flush() の呼び出しで直ちに返す必要があります。

この関数の実装は、オフロード再生に必須です。

ファイル audio.h 372 行 の定義。

int(* flush)(struct audio_stream_out *stream)

キューに格納されたデータをフラッシュするよう音声ドライバに通知します。 flush() を呼び出す前に、ストリームが一時停止されている必要があります。

この関数の実装は、オフロード再生に必須です。

ファイル audio.h 380 行 の定義。

uint32_t(* get_latency)(const struct audio_stream_out *stream)

オーディオ ハードウェア ドライバの推定レイテンシをミリ秒単位で返します。

ファイル audio.h 287 行 の定義。

int(* get_next_write_timestamp)(const struct audio_stream_out *stream, int64_t *timestamp)

音声ドライバへの次回の書き込みが行われるローカル時刻を取得します。単位はマイクロ秒で、エポックはローカル オーディオ HAL によって決まります。

ファイル audio.h 324 行に定義されています。

int(* get_presentation_position)(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp)

外部オブザーバーに提示されたオーディオ フレームの最近のカウントを返します。書き込まれたがまだパイプライン内にあるフレームは除外されます。出力がスタンバイ状態になっても、カウントはゼロにリセットされません。また、このプレゼンテーション カウント時点の CLOCK_MONOTONIC の値も返します。返されるカウントは「最近」のものですが、必ずしも可能な限り最新の値である必要はありません。ただし、関連付けられた時間は、返されたカウントに対応している必要があります。例: N+M 個のフレームが表示されたものとします(M は「小さい」数)。その場合は、N+M ではなく N を返すことが許可され、タイムスタンプは N+M ではなく N に対応している必要があります。「最近」と「小規模」という用語は定義されていません。実装の品質を反映しています。

3.0 以降のみ。

ファイル audio.h 398 行 の定義。

int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames)

ファイル audio.h 317 行 の定義。

int(* pause)(struct audio_stream_out *stream)

再生を停止するようにオーディオ ドライバに通知しますが、キューに追加されたバッファはハードウェアによって保持されます。一時停止と再開を実装する際に役立ちます。サポートされていない場合は空の実装を、レイテンシがそれなりに大きいハードウェアの場合は実装する必要があります。一時停止状態のオーディオ ハードウェアは、電力を消費している可能性があります。ユーザーは、タイムアウト後に suspend を呼び出すことを検討できます。

この関数の実装は、オフロード再生に必須です。

ファイル audio.h 345 行に定義されています。

int(* resume)(struct audio_stream_out *stream)

一時停止した後に再生を再開するようオーディオ ドライバに通知します。一致する一時停止なしで呼び出された場合はエラーを返します。

この関数の実装は、オフロード再生に必須です。

ファイル audio.h 353 行 の定義。

int(* set_callback)(struct audio_stream_out *stream, stream_callback_t callback, void *cookie)

非ブロッキング書き込みとドレインの完了を通知するコールバック関数を設定します。この関数を呼び出すと、今後のすべての write() drain() がノンブロッキングで、コールバックを使用して完了を通知することが暗黙的に示されます。

ファイル audio.h 333 行に定義されています。

int(* set_volume)(struct audio_stream_out *stream, float left, float right)

このメソッドは、オーディオ ミキシングがハードウェアで行われる場合に使用します。このメソッドはハードウェアとの直接インターフェースとして機能し、フレームワークを介さずに音量を直接設定できます。この方法では、複数の PCM 出力またはハードウェア アクセラレーション コーデック(MP3 や AAC など)が生成される場合があります。

ファイル audio.h 296 行 の定義。

ssize_t(* write)(struct audio_stream_out *stream, const void *buffer, size_t bytes)

オーディオ バッファをドライバに書き込みます。書き込まれたバイト数、または負の status_t を返します。エラーが発生する前に 1 つ以上のフレームが正常に書き込まれた場合は、その正常な(短い)バイト数をドライバが返してから、後続の呼び出しでエラーを返すことをおすすめします。

非ブロッキング モードを有効にするために set_callback() が以前に呼び出されている場合、 write() はブロックできません。ドライバー/ハードウェア バッファに現在収まるバイト数のみ書き込み、このバイト数を返す必要があります。これがリクエストされた書き込みサイズより小さい場合は、ドライバ/ハードウェア バッファで使用可能なスペースが増えたときにコールバック関数を呼び出す必要があります。

ファイル audio.h 311 行に定義されています。


この構造体のドキュメントは、次のファイルから生成されました。
  • hardware/libhardware/include/hardware/ audio.h