2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
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 行
の定義。
ドライバ/ハードウェアによってバッファリングされたデータが再生されたときに通知をリクエストします。非ブロッキング モードを有効にするために
set_callback()
が以前に呼び出されている場合、
drain()
はブロックしないで、すぐに返す必要があります。ドレインの完了はコールバックを介して通知されます。
set_callback()
が呼び出されていない場合、
drain()
は完了するまでブロックする必要があります。type==AUDIO_DRAIN_ALL の場合、以前に書き込まれたデータがすべて再生されると、ドレインが完了します。type==AUDIO_DRAIN_EARLY_NOTIFY の場合、現在のトラックのすべてのデータが再生される直前にドレインが完了し、フレームワークがギャップレス トラック切り替えを行う時間ができます。
ドレインは、stop() と
flush()
の呼び出しで直ちに返す必要があります。
この関数の実装は、オフロード再生に必須です。
ファイル
audio.h
の
372 行
の定義。
キューに格納されたデータをフラッシュするよう音声ドライバに通知します。
flush()
を呼び出す前に、ストリームが一時停止されている必要があります。
この関数の実装は、オフロード再生に必須です。
ファイル
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)
|
再生を停止するようにオーディオ ドライバに通知しますが、キューに追加されたバッファはハードウェアによって保持されます。一時停止と再開を実装する際に役立ちます。サポートされていない場合は空の実装を、レイテンシがそれなりに大きいハードウェアの場合は実装する必要があります。一時停止状態のオーディオ ハードウェアは、電力を消費している可能性があります。ユーザーは、タイムアウト後に suspend を呼び出すことを検討できます。
この関数の実装は、オフロード再生に必須です。
ファイル
audio.h
の
345
行に定義されています。
一時停止した後に再生を再開するようオーディオ ドライバに通知します。一致する一時停止なしで呼び出された場合はエラーを返します。
この関数の実装は、オフロード再生に必須です。
ファイル
audio.h
の
353 行
の定義。
非ブロッキング書き込みとドレインの完了を通知するコールバック関数を設定します。この関数を呼び出すと、今後のすべての
write()
と
drain()
がノンブロッキングで、コールバックを使用して完了を通知することが暗黙的に示されます。
ファイル
audio.h
の
333
行に定義されています。
このメソッドは、オーディオ ミキシングがハードウェアで行われる場合に使用します。このメソッドはハードウェアとの直接インターフェースとして機能し、フレームワークを介さずに音量を直接設定できます。この方法では、複数の 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
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-03-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-03-26 UTC。"],[],[]]