此功能引入了一組方法,允許相機客戶端在捕獲會話處於活動狀態且相機流正在進行時動態添加和刪除輸出表面。新的輸出可以映射到特定的、用戶選擇的共享攝像機流。添加表面後,可以隨時將其移除。
一般的想法是在幾個輸出表面內共享與特定相機流相關的緩衝區。當緩衝區準備好在消費者端進行進一步處理時,內部參考計數器會跟踪緩衝區。當所有消費者完成各自的任務時,緩衝區就會出列並可供相機使用。
圖 1.緩衝區共享
圖 1 描繪了一個示例場景,其中相機流 2 處理的緩衝區由相機服務內的專用共享輸出流內的流拆分器組件動態附加和分離、引用計數和管理。
示例和來源
此功能的核心實現可以在Camera3StreamSplitter
模塊中找到。有關此功能的文檔可以在開發人員參考中找到:
執行
相機 HAL 端不需要實現,因為此功能是在框架端實現的。
驗證
您的實現必須通過涵蓋MultiViewTest模塊和本機 API 的本機 JNI 庫的此功能的 CTS 案例。