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

com.pulumi.azurenative.media.kotlin.inputs.H265VideoArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azurenative.media.kotlin.inputs

import com.pulumi.azurenative.media.inputs.H265VideoArgs.builder
import com.pulumi.azurenative.media.kotlin.enums.H265Complexity
import com.pulumi.azurenative.media.kotlin.enums.StretchMode
import com.pulumi.azurenative.media.kotlin.enums.VideoSyncMode
import com.pulumi.core.Either
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
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

/**
 * Describes all the properties for encoding a video with the H.265 codec.
 * @property complexity Tells the encoder how to choose its encoding settings.  Quality will provide for a higher compression ratio but at a higher cost and longer compute time.  Speed will produce a relatively larger file but is faster and more economical. The default value is Balanced.
 * @property keyFrameInterval The distance between two key frames. The value should be non-zero in the range [0.5, 20] seconds, specified in ISO 8601 format. The default is 2 seconds(PT2S). Note that this setting is ignored if VideoSyncMode.Passthrough is set, where the KeyFrameInterval value will follow the input source setting.
 * @property label An optional label for the codec. The label can be used to control muxing behavior.
 * @property layers The collection of output H.265 layers to be produced by the encoder.
 * @property odataType The discriminator for derived types.
 * Expected value is '#Microsoft.Media.H265Video'.
 * @property sceneChangeDetection Specifies whether or not the encoder should insert key frames at scene changes. If not specified, the default is false. This flag should be set to true only when the encoder is being configured to produce a single output video.
 * @property stretchMode The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
 * @property syncMode The Video Sync Mode
 */
public data class H265VideoArgs(
    public val complexity: Output>? = null,
    public val keyFrameInterval: Output? = null,
    public val label: Output? = null,
    public val layers: Output>? = null,
    public val odataType: Output,
    public val sceneChangeDetection: Output? = null,
    public val stretchMode: Output>? = null,
    public val syncMode: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.media.inputs.H265VideoArgs =
        com.pulumi.azurenative.media.inputs.H265VideoArgs.builder()
            .complexity(
                complexity?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .keyFrameInterval(keyFrameInterval?.applyValue({ args0 -> args0 }))
            .label(label?.applyValue({ args0 -> args0 }))
            .layers(layers?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
            .odataType(odataType.applyValue({ args0 -> args0 }))
            .sceneChangeDetection(sceneChangeDetection?.applyValue({ args0 -> args0 }))
            .stretchMode(
                stretchMode?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .syncMode(
                syncMode?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            ).build()
}

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

    private var keyFrameInterval: Output? = null

    private var label: Output? = null

    private var layers: Output>? = null

    private var odataType: Output? = null

    private var sceneChangeDetection: Output? = null

    private var stretchMode: Output>? = null

    private var syncMode: Output>? = null

    /**
     * @param value Tells the encoder how to choose its encoding settings.  Quality will provide for a higher compression ratio but at a higher cost and longer compute time.  Speed will produce a relatively larger file but is faster and more economical. The default value is Balanced.
     */
    @JvmName("nyoiqjawsxrxwore")
    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, 20] seconds, specified in ISO 8601 format. The default is 2 seconds(PT2S). Note that this setting is ignored if VideoSyncMode.Passthrough is set, where the KeyFrameInterval value will follow the input source setting.
     */
    @JvmName("tlslplnageeifgsx")
    public suspend fun keyFrameInterval(`value`: Output) {
        this.keyFrameInterval = value
    }

    /**
     * @param value An optional label for the codec. The label can be used to control muxing behavior.
     */
    @JvmName("hyisiltlcwpplubu")
    public suspend fun label(`value`: Output) {
        this.label = value
    }

    /**
     * @param value The collection of output H.265 layers to be produced by the encoder.
     */
    @JvmName("inagvxfhurxcadcp")
    public suspend fun layers(`value`: Output>) {
        this.layers = value
    }

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

    /**
     * @param values The collection of output H.265 layers to be produced by the encoder.
     */
    @JvmName("mgrsjuonekdcnfpy")
    public suspend fun layers(values: List>) {
        this.layers = Output.all(values)
    }

    /**
     * @param value The discriminator for derived types.
     * Expected value is '#Microsoft.Media.H265Video'.
     */
    @JvmName("bttcddpjnhnpnxsa")
    public suspend fun odataType(`value`: Output) {
        this.odataType = value
    }

    /**
     * @param value Specifies whether or not the encoder should insert key frames at scene changes. If not specified, the default is false. This flag should be set to true only when the encoder is being configured to produce a single output video.
     */
    @JvmName("oppjdtljbhjnphnb")
    public suspend fun sceneChangeDetection(`value`: Output) {
        this.sceneChangeDetection = value
    }

    /**
     * @param value The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
     */
    @JvmName("ovopxoxvoasqtdqr")
    public suspend fun stretchMode(`value`: Output>) {
        this.stretchMode = value
    }

    /**
     * @param value The Video Sync Mode
     */
    @JvmName("thfjytsywdtglkuu")
    public suspend fun syncMode(`value`: Output>) {
        this.syncMode = value
    }

    /**
     * @param value Tells the encoder how to choose its encoding settings.  Quality will provide for a higher compression ratio but at a higher cost and longer compute time.  Speed will produce a relatively larger file but is faster and more economical. The default value is Balanced.
     */
    @JvmName("tdhxbqsrgmrqatyc")
    public suspend fun complexity(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.complexity = mapped
    }

    /**
     * @param value Tells the encoder how to choose its encoding settings.  Quality will provide for a higher compression ratio but at a higher cost and longer compute time.  Speed will produce a relatively larger file but is faster and more economical. The default value is Balanced.
     */
    @JvmName("xefegpqciadmcetd")
    public fun complexity(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.complexity = mapped
    }

    /**
     * @param value Tells the encoder how to choose its encoding settings.  Quality will provide for a higher compression ratio but at a higher cost and longer compute time.  Speed will produce a relatively larger file but is faster and more economical. The default value is Balanced.
     */
    @JvmName("bpqtlltdrvrxwnlf")
    public fun complexity(`value`: H265Complexity) {
        val toBeMapped = Either.ofRight(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, 20] seconds, specified in ISO 8601 format. The default is 2 seconds(PT2S). Note that this setting is ignored if VideoSyncMode.Passthrough is set, where the KeyFrameInterval value will follow the input source setting.
     */
    @JvmName("rfxlyowmuxiobyod")
    public suspend fun keyFrameInterval(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.keyFrameInterval = mapped
    }

    /**
     * @param value An optional label for the codec. The label can be used to control muxing behavior.
     */
    @JvmName("uakynlpeuypvnyda")
    public suspend fun label(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.label = mapped
    }

    /**
     * @param value The collection of output H.265 layers to be produced by the encoder.
     */
    @JvmName("lexwouwywpyiikol")
    public suspend fun layers(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.layers = mapped
    }

    /**
     * @param argument The collection of output H.265 layers to be produced by the encoder.
     */
    @JvmName("yobayjojbnmlrogv")
    public suspend fun layers(argument: List Unit>) {
        val toBeMapped = argument.toList().map { H265LayerArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.layers = mapped
    }

    /**
     * @param argument The collection of output H.265 layers to be produced by the encoder.
     */
    @JvmName("vrswscdmkhieuxjv")
    public suspend fun layers(vararg argument: suspend H265LayerArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { H265LayerArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.layers = mapped
    }

    /**
     * @param argument The collection of output H.265 layers to be produced by the encoder.
     */
    @JvmName("kdyjdmecekhncmna")
    public suspend fun layers(argument: suspend H265LayerArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(H265LayerArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.layers = mapped
    }

    /**
     * @param values The collection of output H.265 layers to be produced by the encoder.
     */
    @JvmName("cadvmxaapaecahvt")
    public suspend fun layers(vararg values: H265LayerArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.layers = mapped
    }

    /**
     * @param value The discriminator for derived types.
     * Expected value is '#Microsoft.Media.H265Video'.
     */
    @JvmName("bqnataqteeilxnuq")
    public suspend fun odataType(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.odataType = mapped
    }

    /**
     * @param value Specifies whether or not the encoder should insert key frames at scene changes. If not specified, the default is false. This flag should be set to true only when the encoder is being configured to produce a single output video.
     */
    @JvmName("pgwrrlhukxytdoed")
    public suspend fun sceneChangeDetection(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sceneChangeDetection = mapped
    }

    /**
     * @param value The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
     */
    @JvmName("bcvdyibeohnxyhis")
    public suspend fun stretchMode(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.stretchMode = mapped
    }

    /**
     * @param value The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
     */
    @JvmName("nkaymlvcqfaarqle")
    public fun stretchMode(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.stretchMode = mapped
    }

    /**
     * @param value The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
     */
    @JvmName("xnqpvhcaubstoute")
    public fun stretchMode(`value`: StretchMode) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.stretchMode = mapped
    }

    /**
     * @param value The Video Sync Mode
     */
    @JvmName("rjvyhfobvunvhjeh")
    public suspend fun syncMode(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.syncMode = mapped
    }

    /**
     * @param value The Video Sync Mode
     */
    @JvmName("jfdhciprjgdiaaiq")
    public fun syncMode(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.syncMode = mapped
    }

    /**
     * @param value The Video Sync Mode
     */
    @JvmName("axflsikiyweqodgi")
    public fun syncMode(`value`: VideoSyncMode) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.syncMode = mapped
    }

    internal fun build(): H265VideoArgs = H265VideoArgs(
        complexity = complexity,
        keyFrameInterval = keyFrameInterval,
        label = label,
        layers = layers,
        odataType = odataType ?: throw PulumiNullFieldException("odataType"),
        sceneChangeDetection = sceneChangeDetection,
        stretchMode = stretchMode,
        syncMode = syncMode,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy