Merge "Fix Stream Config creation on API 21/22/23" into androidx-main
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Streams.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Streams.kt
index 663ae3f..1c5b493 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Streams.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Streams.kt
@@ -18,6 +18,7 @@
 
 import android.hardware.camera2.params.OutputConfiguration
 import android.util.Size
+import androidx.annotation.RequiresApi
 
 /**
  * A [CameraStream] is used on a [CameraGraph] to control what outputs that graph produces.
@@ -130,19 +131,28 @@
                 size: Size,
                 format: StreamFormat,
                 camera: CameraId? = null,
-                outputType: OutputType = OutputType.SURFACE,
-                externalOutputConfig: OutputConfiguration? = null
+                outputType: OutputType = OutputType.SURFACE
             ): Config =
-                if (externalOutputConfig != null) {
-                    ExternalOutputConfig(size, format, camera, output = externalOutputConfig)
-                } else if (
+                if (
                     outputType == OutputType.SURFACE_TEXTURE ||
                     outputType == OutputType.SURFACE_VIEW
                 ) {
                     LazyOutputConfig(size, format, camera, outputType)
                 } else {
+                    check(outputType == OutputType.SURFACE)
                     SimpleOutputConfig(size, format, camera)
                 }
+
+            /** Create a stream configuration from an externally created [OutputConfiguration] */
+            @RequiresApi(24)
+            fun external(
+                size: Size,
+                format: StreamFormat,
+                camera: CameraId? = null,
+                externalOutputConfig: OutputConfiguration
+            ): Config {
+                return ExternalOutputConfig(size, format, camera, output = externalOutputConfig)
+            }
         }
 
         /**