// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.media.inputs;

import com.pulumi.azure.media.inputs.TransformOutputBuiltinPresetPresetConfigurationArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class TransformOutputBuiltinPresetArgs extends com.pulumi.resources.ResourceArgs {

    public static final TransformOutputBuiltinPresetArgs Empty = new TransformOutputBuiltinPresetArgs();

    /**
     * A `present_configuration` block as defined below.
     * 
     */
    @Import(name="presetConfiguration")
    private @Nullable Output<TransformOutputBuiltinPresetPresetConfigurationArgs> presetConfiguration;

    /**
     * @return A `present_configuration` block as defined below.
     * 
     */
    public Optional<Output<TransformOutputBuiltinPresetPresetConfigurationArgs>> presetConfiguration() {
        return Optional.ofNullable(this.presetConfiguration);
    }

    /**
     * The built-in preset to be used for encoding videos. The Possible values are `AACGoodQualityAudio`, `AdaptiveStreaming`, `ContentAwareEncoding`, `ContentAwareEncodingExperimental`, `CopyAllBitrateNonInterleaved`, `DDGoodQualityAudio`, `H265AdaptiveStreaming`, `H265ContentAwareEncoding`, `H265SingleBitrate4K`, `H265SingleBitrate1080p`, `H265SingleBitrate720p`, `H264MultipleBitrate1080p`, `H264MultipleBitrateSD`, `H264MultipleBitrate720p`, `H264SingleBitrate1080p`, `H264SingleBitrateSD` and `H264SingleBitrate720p`.
     * 
     */
    @Import(name="presetName", required=true)
    private Output<String> presetName;

    /**
     * @return The built-in preset to be used for encoding videos. The Possible values are `AACGoodQualityAudio`, `AdaptiveStreaming`, `ContentAwareEncoding`, `ContentAwareEncodingExperimental`, `CopyAllBitrateNonInterleaved`, `DDGoodQualityAudio`, `H265AdaptiveStreaming`, `H265ContentAwareEncoding`, `H265SingleBitrate4K`, `H265SingleBitrate1080p`, `H265SingleBitrate720p`, `H264MultipleBitrate1080p`, `H264MultipleBitrateSD`, `H264MultipleBitrate720p`, `H264SingleBitrate1080p`, `H264SingleBitrateSD` and `H264SingleBitrate720p`.
     * 
     */
    public Output<String> presetName() {
        return this.presetName;
    }

    private TransformOutputBuiltinPresetArgs() {}

    private TransformOutputBuiltinPresetArgs(TransformOutputBuiltinPresetArgs $) {
        this.presetConfiguration = $.presetConfiguration;
        this.presetName = $.presetName;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(TransformOutputBuiltinPresetArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private TransformOutputBuiltinPresetArgs $;

        public Builder() {
            $ = new TransformOutputBuiltinPresetArgs();
        }

        public Builder(TransformOutputBuiltinPresetArgs defaults) {
            $ = new TransformOutputBuiltinPresetArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param presetConfiguration A `present_configuration` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder presetConfiguration(@Nullable Output<TransformOutputBuiltinPresetPresetConfigurationArgs> presetConfiguration) {
            $.presetConfiguration = presetConfiguration;
            return this;
        }

        /**
         * @param presetConfiguration A `present_configuration` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder presetConfiguration(TransformOutputBuiltinPresetPresetConfigurationArgs presetConfiguration) {
            return presetConfiguration(Output.of(presetConfiguration));
        }

        /**
         * @param presetName The built-in preset to be used for encoding videos. The Possible values are `AACGoodQualityAudio`, `AdaptiveStreaming`, `ContentAwareEncoding`, `ContentAwareEncodingExperimental`, `CopyAllBitrateNonInterleaved`, `DDGoodQualityAudio`, `H265AdaptiveStreaming`, `H265ContentAwareEncoding`, `H265SingleBitrate4K`, `H265SingleBitrate1080p`, `H265SingleBitrate720p`, `H264MultipleBitrate1080p`, `H264MultipleBitrateSD`, `H264MultipleBitrate720p`, `H264SingleBitrate1080p`, `H264SingleBitrateSD` and `H264SingleBitrate720p`.
         * 
         * @return builder
         * 
         */
        public Builder presetName(Output<String> presetName) {
            $.presetName = presetName;
            return this;
        }

        /**
         * @param presetName The built-in preset to be used for encoding videos. The Possible values are `AACGoodQualityAudio`, `AdaptiveStreaming`, `ContentAwareEncoding`, `ContentAwareEncodingExperimental`, `CopyAllBitrateNonInterleaved`, `DDGoodQualityAudio`, `H265AdaptiveStreaming`, `H265ContentAwareEncoding`, `H265SingleBitrate4K`, `H265SingleBitrate1080p`, `H265SingleBitrate720p`, `H264MultipleBitrate1080p`, `H264MultipleBitrateSD`, `H264MultipleBitrate720p`, `H264SingleBitrate1080p`, `H264SingleBitrateSD` and `H264SingleBitrate720p`.
         * 
         * @return builder
         * 
         */
        public Builder presetName(String presetName) {
            return presetName(Output.of(presetName));
        }

        public TransformOutputBuiltinPresetArgs build() {
            $.presetName = Objects.requireNonNull($.presetName, "expected parameter 'presetName' to be non-null");
            return $;
        }
    }

}
