All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azure.media.kotlin.inputs.TransformOutputCustomPresetCodecH264VideoArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azure.media.kotlin.inputs

import com.pulumi.azure.media.inputs.TransformOutputCustomPresetCodecH264VideoArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property complexity The complexity of the encoding. Possible values are `Balanced`, `Speed` or `Quality`. Default to `Balanced`.
 * @property keyFrameInterval The distance between two key frames. The value should be non-zero in the range `0.5` to `20` seconds, specified in ISO 8601 format. Note that this setting is ignored if `sync_mode` is set to `Passthrough`, where the KeyFrameInterval value will follow the input source setting. Defaults to `PT2S`.
 * @property label The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file.
 * @property layers One or more `layer` blocks as defined below.
 * @property rateControlMode The rate control mode. Possible values are `ABR`, `CBR` or `CRF`. Default to `ABR`.
 * @property sceneChangeDetectionEnabled Whether the encoder should insert key frames at scene changes. This flag should be set to true only when the encoder is being configured to produce a single output video. Default to `false`.
 * @property stretchMode Specifies the resizing mode - how the input video will be resized to fit the desired output resolution(s). Possible values are `AutoFit`, `AutoSize` or `None`. Default to `AutoSize`.
 * @property syncMode Specifies the synchronization mode for the video. Possible values are `Auto`, `Cfr`, `Passthrough` or `Vfr`. Default to `Auto`.
 */
public data class TransformOutputCustomPresetCodecH264VideoArgs(
    public val complexity: Output? = null,
    public val keyFrameInterval: Output? = null,
    public val label: Output? = null,
    public val layers: Output>? = null,
    public val rateControlMode: Output? = null,
    public val sceneChangeDetectionEnabled: Output? = null,
    public val stretchMode: Output? = null,
    public val syncMode: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.media.inputs.TransformOutputCustomPresetCodecH264VideoArgs = com.pulumi.azure.media.inputs.TransformOutputCustomPresetCodecH264VideoArgs.builder()
        .complexity(complexity?.applyValue({ args0 -> args0 }))
        .keyFrameInterval(keyFrameInterval?.applyValue({ args0 -> args0 }))
        .label(label?.applyValue({ args0 -> args0 }))
        .layers(layers?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
        .rateControlMode(rateControlMode?.applyValue({ args0 -> args0 }))
        .sceneChangeDetectionEnabled(sceneChangeDetectionEnabled?.applyValue({ args0 -> args0 }))
        .stretchMode(stretchMode?.applyValue({ args0 -> args0 }))
        .syncMode(syncMode?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [TransformOutputCustomPresetCodecH264VideoArgs].
 */
@PulumiTagMarker
public class TransformOutputCustomPresetCodecH264VideoArgsBuilder internal constructor() {
    private var complexity: Output? = null

    private var keyFrameInterval: Output? = null

    private var label: Output? = null

    private var layers: Output>? = null

    private var rateControlMode: Output? = null

    private var sceneChangeDetectionEnabled: Output? = null

    private var stretchMode: Output? = null

    private var syncMode: Output? = null

    /**
     * @param value The complexity of the encoding. Possible values are `Balanced`, `Speed` or `Quality`. Default to `Balanced`.
     */
    @JvmName("gibhwjjwydpkrogi")
    public suspend fun complexity(`value`: Output) {
        this.complexity = value
    }

    /**
     * @param value The distance between two key frames. The value should be non-zero in the range `0.5` to `20` seconds, specified in ISO 8601 format. Note that this setting is ignored if `sync_mode` is set to `Passthrough`, where the KeyFrameInterval value will follow the input source setting. Defaults to `PT2S`.
     */
    @JvmName("lyuwfdrncrefkqea")
    public suspend fun keyFrameInterval(`value`: Output) {
        this.keyFrameInterval = value
    }

    /**
     * @param value The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file.
     */
    @JvmName("ttqgcffohmvcogcc")
    public suspend fun label(`value`: Output) {
        this.label = value
    }

    /**
     * @param value One or more `layer` blocks as defined below.
     */
    @JvmName("onsntgitdhgnkdic")
    public suspend fun layers(`value`: Output>) {
        this.layers = value
    }

    @JvmName("vrgmxsvvmmfdumvi")
    public suspend fun layers(vararg values: Output) {
        this.layers = Output.all(values.asList())
    }

    /**
     * @param values One or more `layer` blocks as defined below.
     */
    @JvmName("nlwgrykuvkbcuioj")
    public suspend fun layers(values: List>) {
        this.layers = Output.all(values)
    }

    /**
     * @param value The rate control mode. Possible values are `ABR`, `CBR` or `CRF`. Default to `ABR`.
     */
    @JvmName("ehxstummyivvtyrv")
    public suspend fun rateControlMode(`value`: Output) {
        this.rateControlMode = value
    }

    /**
     * @param value Whether the encoder should insert key frames at scene changes. This flag should be set to true only when the encoder is being configured to produce a single output video. Default to `false`.
     */
    @JvmName("bhttlwljvnnfgrdy")
    public suspend fun sceneChangeDetectionEnabled(`value`: Output) {
        this.sceneChangeDetectionEnabled = value
    }

    /**
     * @param value Specifies the resizing mode - how the input video will be resized to fit the desired output resolution(s). Possible values are `AutoFit`, `AutoSize` or `None`. Default to `AutoSize`.
     */
    @JvmName("xlxrgualdcilxpjs")
    public suspend fun stretchMode(`value`: Output) {
        this.stretchMode = value
    }

    /**
     * @param value Specifies the synchronization mode for the video. Possible values are `Auto`, `Cfr`, `Passthrough` or `Vfr`. Default to `Auto`.
     */
    @JvmName("qoovtqpuaepiixex")
    public suspend fun syncMode(`value`: Output) {
        this.syncMode = value
    }

    /**
     * @param value The complexity of the encoding. Possible values are `Balanced`, `Speed` or `Quality`. Default to `Balanced`.
     */
    @JvmName("nfmddowjdeqnlujf")
    public suspend fun complexity(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.complexity = mapped
    }

    /**
     * @param value The distance between two key frames. The value should be non-zero in the range `0.5` to `20` seconds, specified in ISO 8601 format. Note that this setting is ignored if `sync_mode` is set to `Passthrough`, where the KeyFrameInterval value will follow the input source setting. Defaults to `PT2S`.
     */
    @JvmName("gidobwnfslrhcvec")
    public suspend fun keyFrameInterval(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.keyFrameInterval = mapped
    }

    /**
     * @param value The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file.
     */
    @JvmName("mrlaivvbvgemcqii")
    public suspend fun label(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.label = mapped
    }

    /**
     * @param value One or more `layer` blocks as defined below.
     */
    @JvmName("aenakfvmuhijetdd")
    public suspend fun layers(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.layers = mapped
    }

    /**
     * @param argument One or more `layer` blocks as defined below.
     */
    @JvmName("xuenvjngboorlxkr")
    public suspend fun layers(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            TransformOutputCustomPresetCodecH264VideoLayerArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.layers = mapped
    }

    /**
     * @param argument One or more `layer` blocks as defined below.
     */
    @JvmName("dlaqtrxvtilhiekh")
    public suspend fun layers(vararg argument: suspend TransformOutputCustomPresetCodecH264VideoLayerArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            TransformOutputCustomPresetCodecH264VideoLayerArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.layers = mapped
    }

    /**
     * @param argument One or more `layer` blocks as defined below.
     */
    @JvmName("nchrtxvcfcehxnhe")
    public suspend fun layers(argument: suspend TransformOutputCustomPresetCodecH264VideoLayerArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            TransformOutputCustomPresetCodecH264VideoLayerArgsBuilder().applySuspend
                { argument() }.build(),
        )
        val mapped = of(toBeMapped)
        this.layers = mapped
    }

    /**
     * @param values One or more `layer` blocks as defined below.
     */
    @JvmName("alabutgdibtpsliw")
    public suspend fun layers(vararg values: TransformOutputCustomPresetCodecH264VideoLayerArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.layers = mapped
    }

    /**
     * @param value The rate control mode. Possible values are `ABR`, `CBR` or `CRF`. Default to `ABR`.
     */
    @JvmName("begvxrxuwqxftehg")
    public suspend fun rateControlMode(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.rateControlMode = mapped
    }

    /**
     * @param value Whether the encoder should insert key frames at scene changes. This flag should be set to true only when the encoder is being configured to produce a single output video. Default to `false`.
     */
    @JvmName("xeataeusbultjasp")
    public suspend fun sceneChangeDetectionEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sceneChangeDetectionEnabled = mapped
    }

    /**
     * @param value Specifies the resizing mode - how the input video will be resized to fit the desired output resolution(s). Possible values are `AutoFit`, `AutoSize` or `None`. Default to `AutoSize`.
     */
    @JvmName("yltxpmvpaxkrjvpk")
    public suspend fun stretchMode(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.stretchMode = mapped
    }

    /**
     * @param value Specifies the synchronization mode for the video. Possible values are `Auto`, `Cfr`, `Passthrough` or `Vfr`. Default to `Auto`.
     */
    @JvmName("aafncfuoatkatqwv")
    public suspend fun syncMode(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.syncMode = mapped
    }

    internal fun build(): TransformOutputCustomPresetCodecH264VideoArgs =
        TransformOutputCustomPresetCodecH264VideoArgs(
            complexity = complexity,
            keyFrameInterval = keyFrameInterval,
            label = label,
            layers = layers,
            rateControlMode = rateControlMode,
            sceneChangeDetectionEnabled = sceneChangeDetectionEnabled,
            stretchMode = stretchMode,
            syncMode = syncMode,
        )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy