// *** 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.aws.medialive.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Double;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ChannelEncoderSettingsAudioDescriptionAudioNormalizationSettingsArgs Empty = new ChannelEncoderSettingsAudioDescriptionAudioNormalizationSettingsArgs();

    /**
     * Audio normalization algorithm to use. itu17701 conforms to the CALM Act specification, itu17702 to the EBU R-128 specification.
     * 
     */
    @Import(name="algorithm")
    private @Nullable Output<String> algorithm;

    /**
     * @return Audio normalization algorithm to use. itu17701 conforms to the CALM Act specification, itu17702 to the EBU R-128 specification.
     * 
     */
    public Optional<Output<String>> algorithm() {
        return Optional.ofNullable(this.algorithm);
    }

    /**
     * Algorithm control for the audio description.
     * 
     */
    @Import(name="algorithmControl")
    private @Nullable Output<String> algorithmControl;

    /**
     * @return Algorithm control for the audio description.
     * 
     */
    public Optional<Output<String>> algorithmControl() {
        return Optional.ofNullable(this.algorithmControl);
    }

    /**
     * Target LKFS (loudness) to adjust volume to.
     * 
     */
    @Import(name="targetLkfs")
    private @Nullable Output<Double> targetLkfs;

    /**
     * @return Target LKFS (loudness) to adjust volume to.
     * 
     */
    public Optional<Output<Double>> targetLkfs() {
        return Optional.ofNullable(this.targetLkfs);
    }

    private ChannelEncoderSettingsAudioDescriptionAudioNormalizationSettingsArgs() {}

    private ChannelEncoderSettingsAudioDescriptionAudioNormalizationSettingsArgs(ChannelEncoderSettingsAudioDescriptionAudioNormalizationSettingsArgs $) {
        this.algorithm = $.algorithm;
        this.algorithmControl = $.algorithmControl;
        this.targetLkfs = $.targetLkfs;
    }

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

    public static final class Builder {
        private ChannelEncoderSettingsAudioDescriptionAudioNormalizationSettingsArgs $;

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

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

        /**
         * @param algorithm Audio normalization algorithm to use. itu17701 conforms to the CALM Act specification, itu17702 to the EBU R-128 specification.
         * 
         * @return builder
         * 
         */
        public Builder algorithm(@Nullable Output<String> algorithm) {
            $.algorithm = algorithm;
            return this;
        }

        /**
         * @param algorithm Audio normalization algorithm to use. itu17701 conforms to the CALM Act specification, itu17702 to the EBU R-128 specification.
         * 
         * @return builder
         * 
         */
        public Builder algorithm(String algorithm) {
            return algorithm(Output.of(algorithm));
        }

        /**
         * @param algorithmControl Algorithm control for the audio description.
         * 
         * @return builder
         * 
         */
        public Builder algorithmControl(@Nullable Output<String> algorithmControl) {
            $.algorithmControl = algorithmControl;
            return this;
        }

        /**
         * @param algorithmControl Algorithm control for the audio description.
         * 
         * @return builder
         * 
         */
        public Builder algorithmControl(String algorithmControl) {
            return algorithmControl(Output.of(algorithmControl));
        }

        /**
         * @param targetLkfs Target LKFS (loudness) to adjust volume to.
         * 
         * @return builder
         * 
         */
        public Builder targetLkfs(@Nullable Output<Double> targetLkfs) {
            $.targetLkfs = targetLkfs;
            return this;
        }

        /**
         * @param targetLkfs Target LKFS (loudness) to adjust volume to.
         * 
         * @return builder
         * 
         */
        public Builder targetLkfs(Double targetLkfs) {
            return targetLkfs(Output.of(targetLkfs));
        }

        public ChannelEncoderSettingsAudioDescriptionAudioNormalizationSettingsArgs build() {
            return $;
        }
    }

}
