工作階段參數

工作階段參數功能可讓相機用戶端 主動設定要求參數子集,也就是 參數。使用這項 功能,您的 HAL 實作會在 而非第一個擷取要求,因此串流設定階段 根據值來準備及建構內部管道 效率極高

在 Android 10 中,您可以使用 選用的工作階段重新設定查詢功能 內部工作階段參數重新設定邏輯。若需更多資訊,請參閲 工作階段重新設定查詢

範例和來源

參照工作階段參數實作已包含在 CameraHal: 這個 HAL 使用舊版 Hal API。 繫結化 實作相機 HIDL API 的 CameraHal 必須使用個別 HIDL sessionParams 項目,即可存取任何新的連入工作階段參數。

相機用戶端可以藉由呼叫 getAvailableSessionKeys()敬上 最終透過設定 setSessionParameters()

實作

您的 CameraHal 實作必須填入 ANDROID_REQUEST_AVAILABLE_SESSION_KEYS敬上 並透過相對應的靜態相機中繼資料提供子集 ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS, 包含難以依每個影格套用的鍵清單 在擷取工作階段生命週期內修改時,可能會發生非預期的延遲。

常見範例包括需要耗時硬體的參數 重新設定或變更內部相機管道控制工作階段 仍可在擷取要求中進行 tex 參數,但用戶端應該瞭解 導致應用程式出現延遲情形

架構會監控所有傳入要求,若偵測到 工作階段參數的值,會在內部重新設定相機。而 串流設定會傳送至 CameraHal,再加入更新後的工作階段 參數值,以便進一步設定相機管道 效率極高

自訂

您可在已填入資料的可用工作階段參數清單中定義代碼 CameraHal 側邊。如果 CameraHal 離開 可用的工作階段參數清單空白。

驗證

CTS 包含下列測試工作階段參數的新案例:

一般來說,如果特定參數屬於工作階段索引鍵清單的一部分, 目前值會納入串流期間傳遞的工作階段參數中 HAL 層的設定

請務必謹慎選取工作階段參數。數值不應變動 或經常變更串流設定 (如果有的話)。會變更的參數 例如擷取意圖,則較不適合加入 工作階段參數清單可能會導致 CTS 因內部過大而失敗 重新設定

工作階段重新設定查詢

Android 10 推出了選用工作階段 重新設定查詢功能 調整工作階段產生的內部串流設定後,進一步提升成效 調整參數值可能會降低成效。為瞭解決這個問題 HIDL ICameraDeviceSession敬上 3.5 以上版本支援 isReconfigurationRequired。 方法,可讓您精細地控制內部工作階段參數 重新設定邏輯只要使用這個方法,就能重新設定串流 或剛好需要時

isReconfigurationRequired 的引數 提供每個待處理工作階段參數的必要資訊 以便進行各種裝置專屬的自訂設定。

這項功能僅在相機服務和相機 HAL 中實作。有 不是公開的 API實作這項功能之後,相機用戶端應該 可在使用工作階段參數時改善效能。

實作

如要支援工作階段重新設定查詢,您必須先實作 isReconfigurationRequired敬上 這個方法,檢查新版本是否需要重新設定串流 工作階段參數值

如果用戶端變更了任何廣告工作階段參數值,相機 架構會呼叫 isReconfigurationRequired 方法。HAL 會根據特定值來判斷 必須重新設定串流。如果 HAL 傳回 false,表示相機 架構會略過內部重新設定。如果 HAL 傳回 true, 架構會重新設定串流,並傳送新的工作階段參數值 。

架構可在一段時間內呼叫 isReconfigurationRequired 方法 將包含新參數的要求提交至 HAL 之後 可以在提交前取消作業因此,HAL 不得使用 方法呼叫來變更其行為。

HAL 實作必須符合下列需求條件:

  • 架構必須可以呼叫 isReconfigurationRequired 方法 啟動的工作階段
  • 待處理相機要求的效能不會受到影響。於 尤其是一般相機拍攝時,不會發生任何故障或延遲的情況 以及串流

裝置和 HAL 實作必須達到下列效能 規定:

  • 不得變更硬體和軟體的攝影機設定。
  • 攝影機效能不會受到任何使用者明顯影響。

isReconfigurationRequired 方法會使用下列引數:

  • oldSessionParams:前一個工作階段的工作階段參數。 通常是現有的工作階段參數。
  • newSessionParams:用戶端設定的新工作階段參數。

預期的傳回狀態碼如下:

  • OK:已成功重新設定必要查詢。
  • METHOD_NOT_SUPPORTED:相機裝置不支援 重新設定查詢。
  • INTERNAL_ERROR:無法完成重新設定查詢,原因如下: 發生內部錯誤。

傳回值如下:

  • true:必須重新設定串流。
  • false:不需要重新設定串流。

為了忽略工作階段重新設定查詢,HAL 會傳回 METHOD_NOT_SUPPORTEDfalse。這會產生預設攝影機服務 每個工作階段參數都會觸發串流重新設定行為 變更。

驗證

您可以使用 VTS 測試來驗證工作階段重新設定查詢功能 案件 CameraHidlTest#configureStreamsWithSessionParameters