自 2025 年 3 月 27 日起,我們建議您使用 android-latest-release
而非 aosp-main
建構及貢獻 AOSP。詳情請參閱「Android 開放原始碼計畫變更」。
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
audio_stream_out 結構參考資料
#include <
audio.h
>
|
struct
audio_stream
|
通用
|
|
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(*
|
pause
)(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()
不得封鎖,而是應快速傳回,並透過回呼通知 drain 完成。如果未呼叫
set_callback()
,則
drain()
必須在完成前封鎖。如果 type==AUDIO_DRAIN_ALL,則在播放所有先前寫入的資料後,排空作業就會完成。如果 type==AUDIO_DRAIN_EARLY_NOTIFY,則在播放目前音軌的所有資料之前,系統會立即完成耗盡作業,讓架構有時間執行無間斷的音軌切換。
在 stop() 和
flush()
呼叫時,排空作業必須立即傳回
如要實作卸載播放功能,則必須實作此函式。
定義位於檔案
audio.h
的
372
行。
通知音訊驅動程式清除佇列資料。在呼叫
flush()
之前,Stream 必須已暫停。
如要實作卸載播放功能,則必須實作此函式。
定義位於檔案
audio.h
的
380
行。
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 而非 N+M,且時間戳記應對應至 N 而非 N+M。未定義「最近」和「小」的定義。這些指標反映導入品質。
僅限 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
行。
在硬體中完成音訊混合時,請使用此方法。這個方法可做為與硬體的直接介面,讓您直接設定音量,而非透過架構。這個方法可能會產生多個 PCM 輸出或硬體加速轉碼器 (例如 MP3 或 AAC)。
定義位於檔案
audio.h
的
296
行。
ssize_t(* write)(struct
audio_stream_out
*stream, const void *buffer, size_t bytes)
|
將音訊緩衝區寫入驅動程式。傳回已寫入的位元組數,或負值 status_t。如果在發生錯誤之前,至少有一個影格已成功寫入,建議驅動程式傳回該成功 (短) 位元組計數,然後在後續呼叫中傳回錯誤。
如果先前已呼叫
set_callback()
來啟用非封鎖模式,則
write()
不允許封鎖。它只能寫入目前可放入驅動程式/硬體緩衝區的位元組數,然後傳回這個位元組數。如果這個值小於要求的寫入大小,則必須在驅動程式/硬體緩衝區有更多空間時呼叫回呼函式。
定義位於檔案
audio.h
的
311
行。
這個結構體的說明文件是由下列檔案產生:
-
hardware/libhardware/include/hardware/
audio.h
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2025-03-26 (世界標準時間)。
[[["容易理解","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 (世界標準時間)。"],[],[]]