blob: 988cc06acfdd198761f6cfe3f75e4a2b3dd60014 [file] [log] [blame]
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package androidx.camera.camera2.pipe
import android.util.Size
@Suppress("EXPERIMENTAL_FEATURE_WARNING")
inline class StreamId(val value: Int) {
override fun toString() = "Stream-$value"
}
/**
* A Stream is an identifier for a specific stream as well as the properties that were used to
* create this stream instance. This allows StreamConfig's to be used to build multiple
* [CameraGraph]'s while enforcing that each [Stream] will only work with that specific camera
* [CameraGraph] instance.
*/
interface Stream {
val id: StreamId
val size: Size
val format: StreamFormat
val camera: CameraId
val type: StreamType
}
/**
* Configuration object that provides the parameters for a specific input / output stream on Camera.
*/
class StreamConfig(
val size: Size,
val format: StreamFormat,
val camera: CameraId,
val type: StreamType,
val deferrable: Boolean = true
)
/**
* Camera2 allows the camera to be configured with outputs that are not immediately available.
* This allows the camera to configure the internal pipeline with additional information about
* the surface that has not yet been provided to the camera.
*/
enum class StreamType {
SURFACE,
SURFACE_VIEW,
SURFACE_TEXTURE
}