單一生產者多個消費者相機緩衝區傳輸

此功能引入了一組方法,允許相機用戶端在捕獲會話處於活動狀態並且相機流正在進行時動態添加和刪除輸出表面。新的輸出可以對應到特定的、使用者選擇的共用攝影機串流。添加表面後,可以隨時將其刪除。

總體思路是在多個輸出表面中共享與特定相機流關聯的緩衝區。當緩衝區準備好在消費者端進行進一步處理時,內部參考計數器會追蹤緩衝區。當所有消費者完成各自的任務時,緩衝區就會出隊並可供相機使用。

緩衝區共享

圖 1.緩衝區共享

圖 1 描述了一個範例場景,其中由相機流 2 處理的緩衝區動態附加和分離、引用計數,並由相機服務內專用共享輸出流內的流拆分器元件進行管理。

範例和來源

此功能的核心實作可以在Camera3StreamSplitter模組中找到。有關此功能的文件可以在開發人員參考中找到:

執行

Camera HAL 端不需要實現,因為此功能是在框架端實現的。

驗證

您的實作必須透過覆寫來自MultiViewTest模組和本機 API 的本機 JNI 庫的此功能的 CTS 案例。