audio_stream_out結構參考

audio_stream_out結構參考

#include < audio.h >

資料欄位

結構體audio_stream常見的
uint32_t(* get_latency )(const struct audio_stream_out *stream)
整數(* set_volume )(struct audio_stream_out *stream, 向左浮動, 向右浮動)
大小_t(*)(struct audio_stream_out *stream, const void *buffer, size_t bytes)
整數(* get_render_position )(const struct audio_stream_out *stream,uint32_t *dsp_frames)
整數(* get_next_write_timestamp )(const struct audio_stream_out *stream,int64_t *timestamp)
整數(* set_callback )(結構audio_stream_out *stream, stream_callback_t回調,void *cookie)
整數(*暫停)(結構audio_stream_out *流)
整數(*恢復)(結構audio_stream_out *流)
整數(*漏極)(結構audio_stream_out *流, audio_drain_type_t型別)
整數(*刷新)(結構audio_stream_out *流)
整數(* get_presentation_position )(const struct audio_stream_out *stream,uint64_t *frames,struct timespec *timestamp)

詳細說明

audio_stream_out是音訊輸出硬體的抽象介面。

它提供有關音訊輸出硬體驅動程式的各種屬性的資訊。

定義位於檔案audio.h的第276行。

現場文檔

結構體audio_stream公共

音訊流輸出的常用方法。這必須audio_stream_out的第一個成員,因為該結構的使用者將在已知audio_stream引用audio_stream_out的上下文中將audio_stream強制轉換為audio_stream_out指標。

定義位於檔案audio.h的第282行。

int(* 汲極)(結構audio_stream_out *流, audio_drain_type_t類型)

當驅動程式/硬體緩衝的資料已播放時請求通知。如果先前已呼叫set_callback()來啟用非阻塞模式,則rain()不得阻塞,而是應快速返回,並透過回呼通知drain完成。如果set_callback()尚未被調用, drain()必須阻塞直到完成。如果 type==AUDIO_DRAIN_ALL,則在播放所有先前寫入的資料後,排水完成。如果 type==AUDIO_DRAIN_EARLY_NOTIFY,則在當前軌道的所有資料播放完畢之前不久,排水就會完成,以便框架有時間執行無縫軌道切換。

Drain 必須在 stop() 和lush()呼叫後立即返回

對於卸載播放來說,必須實現此功能。

定義位於檔案audio.h的第372行。

int(*刷新)(結構audio_stream_out *流)

通知音訊驅動程式刷新排隊的資料。在呼叫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.h324行的定義。

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的第317行。

int(* 暫停)(struct audio_stream_out *stream)

通知音訊驅動程式停止播放,但排隊的緩衝區由硬體保留。對於實現暫停/恢復很有用。如果不支持,則應為具有重要延遲的硬體實現空實現。在暫停狀態下,音訊硬體可能仍在使用電源。用戶可以考慮在超時後呼叫掛起。

對於卸載播放來說,必須實現此功能。

定義位於檔案audio.h的第345行。

int(*恢復)(結構audio_stream_out *stream)

通知音訊驅動程式在暫停後恢復播放。如果呼叫時沒有匹配暫停,則傳回錯誤。

對於卸載播放來說,必須實現此功能。

定義位於檔案audio.h的第353行。

int(* set_callback)(結構audio_stream_out *stream, stream_callback_t回調,void *cookie)

設定通知非阻塞寫入和耗盡完成的回調函數。呼叫此函數意味著所有未來的write()rain()都必須是非阻塞的,並使用回調來表示完成。

定義位於檔案audio.h的第333行。

int(* set_volume)(struct audio_stream_out *stream, 向左浮動, 向右浮動)

在硬體中完成音訊混合的情況下使用此方法。此方法作為與硬體的直接接口,允許您直接設定音量,而不是透過框架。此方法可能會產生多個 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