語言

OutputConfiguration.EnableSurfaceSharing 方法

定義

啟用多個共享相同 OutputConfiguration 的表面

[Android.Runtime.Register("enableSurfaceSharing", "()V", "", ApiSince=26)]
public void EnableSurfaceSharing();
[<Android.Runtime.Register("enableSurfaceSharing", "()V", "", ApiSince=26)>]
member this.EnableSurfaceSharing : unit -> unit
屬性

備註

啟用多個共享相同 OutputConfiguration 的表面

在進階應用中,攝影機應用程式可能需要比 所 CameraDevice#createCaptureSession保證的組合更多的串流。 在這種情況下,可以將多個相容的表面附加到一個輸出配置,使其映射到同一個攝影機串流,並在可能的情況下共享記憶體緩衝區。 由於緩衝區共享,客戶在新增會修改輸入資料的表面輸出時,應謹慎。 若有此情況,攝影機用戶端應有額外機制來同步個別使用者間的讀寫存取。

以下兩種曲面是相容的:

<li> Surfaces 具有相同的大小、格式、dataSpace 和 Surface 原始類別。 在這種情況下, CameraDevice#createCaptureSessionByOutputConfigurations 保證成功。

<li> Surfaces 具有相同的大小、格式和資料空間,但 Surface 的原始類別不同,且通常不相容。 然而,在某些裝置上,底層攝影機裝置能為兩個表面使用相同的緩衝區配置。 唯一能發現是否正確的方法是建立一個帶有該輸出配置的擷取會話。 例如,若相機裝置在 SurfaceView/SurfaceTexture 與 MediaRecorder/MediaCodec 之間使用相同的私有緩衝區格式,則 CameraDevice#createCaptureSessionByOutputConfigurations 會成功。 否則,該方法將失敗。CameraCaptureSession.StateCallback#onConfigureFailed </ol>

要啟用曲面共享,必須在或CameraDevice#createCaptureSessionByOutputConfigurations之前CameraDevice#createReprocessableCaptureSessionByConfigurations呼叫此函數。 之後呼叫這個函式 CameraDevice#createCaptureSessionByOutputConfigurations 則沒有影響。

最多可共享 OutputConfiguration #getMaxSharedSurfaceCount 的表面。 支援的表面必須是 SurfaceTexture、SurfaceView、MediaRecorder、MediaCodec 或實作定義的 ImageReader。

此函式不得從由 所 #createInstancesForMultiResolutionOutput建立的 OutputConfigurations 中呼叫。

Java 文件 android.hardware.camera2.params.OutputConfiguration.enableSurfaceSharing()。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於