透過集合功能整理內容
你可以依據偏好儲存及分類內容。
audio_stream_out結構參考
#include < audio.h >
audio_stream_out是音訊輸出硬體的抽象介面。
它提供有關音訊輸出硬體驅動程式的各種屬性的資訊。
定義位於檔案audio.h的第276行。
當驅動程式/硬體緩衝的資料已播放時請求通知。如果先前已呼叫set_callback()來啟用非阻塞模式,則rain()不得阻塞,而是應快速返回,並透過回呼通知drain完成。如果set_callback()尚未被調用, drain()必須阻塞直到完成。如果 type==AUDIO_DRAIN_ALL,則在播放所有先前寫入的資料後,排水完成。如果 type==AUDIO_DRAIN_EARLY_NOTIFY,則在當前軌道的所有資料播放完畢之前不久,排水就會完成,以便框架有時間執行無縫軌道切換。
Drain 必須在 stop() 和lush()呼叫後立即返回
對於卸載播放來說,必須實現此功能。
定義位於檔案audio.h的第372行。
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) |
通知音訊驅動程式停止播放,但排隊的緩衝區由硬體保留。對於實現暫停/恢復很有用。如果不支持,則應為具有重要延遲的硬體實現空實現。在暫停狀態下,音訊硬體可能仍在使用電源。用戶可以考慮在超時後呼叫掛起。
對於卸載播放來說,必須實現此功能。
定義位於檔案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行。
該結構的文檔是從以下文件產生的:
- 硬體/libhardware/include/hardware/audio.h
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2023-12-01 (世界標準時間)。
[[["容易理解","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"]],["上次更新時間:2023-12-01 (世界標準時間)。"],[],[]]