audio_stream_out 結構參考資料

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 行。

欄位說明文件

struct audio_stream common

音訊串流輸出常用方法。這個 必須是 audio_stream_out 的第一個成員,因為這個結構的使用者會在已知 audio_stream 參照 audio_stream_out 的情況下,將 audio_stream 投放至 audio_stream_out 指標。

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

int(* drain)(struct audio_stream_out *stream, audio_drain_type_t type)

在驅動程式/硬體緩衝的資料播放時,要求通知。如果先前已呼叫 set_callback() 來啟用非封鎖模式,則 drain() 不得封鎖,而是應快速傳回,並透過回呼通知 drain 完成。如果未呼叫 set_callback() ,則 drain() 必須在完成前封鎖。如果 type==AUDIO_DRAIN_ALL,則在播放所有先前寫入的資料後,排空作業就會完成。如果 type==AUDIO_DRAIN_EARLY_NOTIFY,則在播放目前音軌的所有資料之前,系統會立即完成耗盡作業,讓架構有時間執行無間斷的音軌切換。

在 stop() 和 flush() 呼叫時,排空作業必須立即傳回

如要實作卸載播放功能,則必須實作此函式。

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

int(* flush)(struct audio_stream_out *stream)

通知音訊驅動程式清除佇列資料。在呼叫 flush() 之前,Stream 必須已暫停。

如要實作卸載播放功能,則必須實作此函式。

定義位於檔案 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.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 317 行。

int(* pause)(struct audio_stream_out *stream)

通知音訊驅動程式停止播放,但硬體會保留已排入佇列的緩衝區。這對於實作暫停/繼續播放功能非常實用。不過,如果硬體不支援,則應實作空白實作項目,以便實作非瑣碎延遲的硬體。在暫停狀態下,音訊硬體仍可能會耗用電力。使用者可考慮在逾時後呼叫 suspend。

如要實作卸載播放功能,則必須實作此函式。

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

int(* resume)(struct audio_stream_out *stream)

通知音訊驅動程式在暫停後繼續播放。如果未在相符的暫停期間呼叫,則會傳回錯誤。

如要實作卸載播放功能,則必須實作此函式。

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

int(* set_callback)(struct audio_stream_out *stream, stream_callback_t callback, void *cookie)

設定回呼函式,用於通知非阻斷寫入和排空作業完成。呼叫這個函式表示日後所有 write() drain() 都必須是非阻斷式,並使用回呼來傳送完成信號。

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

int(* set_volume)(struct audio_stream_out *stream, float left, float right)

在硬體中完成音訊混合時,請使用此方法。這個方法可做為與硬體的直接介面,讓您直接設定音量,而非透過架構。這個方法可能會產生多個 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