自 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-07-27 (世界標準時間)。
  
  
  
    
      [[["容易理解","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-07-27 (世界標準時間)。"],[],[]]