#include < audio.h >
audio_stream_out は、オーディオ出力ハードウェアの抽象化インターフェイスです。
オーディオ出力ハードウェア ドライバーのさまざまなプロパティに関する情報を提供します。
ファイルaudio.hの276行目の定義。
ドライバー/ハードウェアによってバッファされたデータが再生されたときの通知を要求します。非ブロッキング モードを有効にするためにset_callback() が以前に呼び出されている場合、 drain() はブロックしてはならず、代わりにすぐに戻り、ドレインの完了がコールバックを通じて通知される必要があります。 set_callback()が呼び出されなかった場合、 drain() は完了するまでブロックする必要があります。 type==AUDIO_DRAIN_ALL の場合、以前に書き込まれたすべてのデータが再生されるとドレインが完了します。 type==AUDIO_DRAIN_EARLY_NOTIFY の場合、フレームワークがギャップレス トラック切り替えを実行する時間を確保するために、現在のトラックのすべてのデータが再生される直前にドレインが完了します。
ドレインは stop() およびflash()呼び出し時にすぐに返される必要があります
オフロード再生にはこの関数の実装が必須です。
ファイルaudio.hの372行目の定義。
キューに入れられたデータをフラッシュするようにオーディオ ドライバーに通知します。 flash()を呼び出す前に、ストリームを一時停止しておく必要があります。
オフロード再生にはこの関数の実装が必須です。
ファイルaudio.hの380行目の定義。
オーディオ ハードウェア ドライバーの推定遅延をミリ秒単位で返します。
ファイル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の345行目の定義。
一時停止後に再生を再開するようにオーディオ ドライバーに通知します。一致する一時停止なしで呼び出された場合は、エラーを返します。
オフロード再生にはこの関数の実装が必須です。
ファイルaudio.hの353行目の定義。
ノンブロッキングライトとドレインの完了を通知するコールバック関数を設定します。この関数を呼び出すことは、今後のすべてのwrite()およびdump()が非ブロッキングであり、完了を通知するためにコールバックを使用する必要があることを意味します。
ファイルaudio.hの333行目の定義。
この方法は、オーディオ ミキシングがハードウェアで行われる場合に使用します。このメソッドはハードウェアとの直接インターフェイスとして機能し、フレームワークを介してボリュームを直接設定できるようにします。この方法では、複数の PCM 出力または MP3 や AAC などのハードウェア アクセラレーション コーデックが生成される場合があります。
ファイルaudio.hの296行目の定義。
ssize_t(* write)(struct audio_stream_out *stream, const void *buffer, size_t バイト) |
オーディオバッファをドライバーに書き込みます。書き込まれたバイト数、または負の status_t を返します。エラーが発生する前に少なくとも 1 つのフレームが正常に書き込まれた場合、ドライバーはその成功した (短い) バイト数を返し、その後の呼び出しでエラーを返すことが推奨されます。
set_callback() が以前に呼び出されて非ブロッキング モードが有効になっている場合、 write()はブロックできません。現在ドライバー/ハードウェア バッファーに収まるバイト数のみを書き込み、このバイト数を返す必要があります。これが要求された書き込みサイズより小さい場合は、ドライバー/ハードウェア バッファーに空き領域が増えたときにコールバック関数を呼び出す必要があります。
ファイルaudio.hの311行目の定義。
この構造体のドキュメントは次のファイルから生成されました。
- hardware/libhardware/include/hardware/ audio.h