1 /* 2 * Copyright 2020 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package androidx.camera.camera2.pipe.integration 17 18 import android.content.Context 19 import androidx.annotation.RestrictTo 20 import androidx.camera.camera2.pipe.CameraPipe 21 import androidx.camera.camera2.pipe.integration.adapter.CameraFactoryProvider 22 import androidx.camera.camera2.pipe.integration.adapter.CameraSurfaceAdapter 23 import androidx.camera.camera2.pipe.integration.adapter.CameraUseCaseAdapter 24 import androidx.camera.core.CameraXConfig 25 import androidx.camera.core.impl.CameraThreadConfig 26 27 /** Convenience class for generating a pre-populated CameraPipe based [CameraXConfig]. */ 28 public class CameraPipeConfig private constructor() { 29 public companion object { 30 /** Creates a [CameraXConfig] containing a default CameraPipe implementation for CameraX. */ 31 @JvmStatic defaultConfignull32 public fun defaultConfig(): CameraXConfig { 33 return from() 34 } 35 36 /** Creates a [CameraXConfig] using a pre-existing [CameraPipe] instance. */ 37 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) 38 @JvmStatic fromnull39 public fun from( 40 sharedCameraPipe: CameraPipe? = null, 41 sharedAppContext: Context? = null, 42 sharedThreadConfig: CameraThreadConfig? = null 43 ): CameraXConfig { 44 val cameraFactoryProvider = 45 CameraFactoryProvider(sharedCameraPipe, sharedAppContext, sharedThreadConfig) 46 return CameraXConfig.Builder() 47 .setCameraFactoryProvider(cameraFactoryProvider) 48 .setDeviceSurfaceManagerProvider(::CameraSurfaceAdapter) 49 .setUseCaseConfigFactoryProvider(::CameraUseCaseAdapter) 50 .setConfigImplType(CameraXConfig.CAMERAX_CONFIG_IMPL_TYPE_PIPE) 51 .build() 52 } 53 } 54 } 55