/*
 * 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
}
