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

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

There is a newer version: 2.82.0
Show newest version
// *** 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.azurenative.media.inputs;

import com.pulumi.azurenative.media.enums.H265Complexity;
import com.pulumi.azurenative.media.enums.StretchMode;
import com.pulumi.azurenative.media.enums.VideoSyncMode;
import com.pulumi.azurenative.media.inputs.H265LayerArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.core.internal.Codegen;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


/**
 * Describes all the properties for encoding a video with the H.265 codec.
 * 
 */
public final class H265VideoArgs extends com.pulumi.resources.ResourceArgs {

    public static final H265VideoArgs Empty = new H265VideoArgs();

    /**
     * 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.
     * 
     */
    @Import(name="complexity")
    private @Nullable Output> complexity;

    /**
     * @return 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.
     * 
     */
    public Optional>> complexity() {
        return Optional.ofNullable(this.complexity);
    }

    /**
     * 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.
     * 
     */
    @Import(name="keyFrameInterval")
    private @Nullable Output keyFrameInterval;

    /**
     * @return 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.
     * 
     */
    public Optional> keyFrameInterval() {
        return Optional.ofNullable(this.keyFrameInterval);
    }

    /**
     * An optional label for the codec. The label can be used to control muxing behavior.
     * 
     */
    @Import(name="label")
    private @Nullable Output label;

    /**
     * @return An optional label for the codec. The label can be used to control muxing behavior.
     * 
     */
    public Optional> label() {
        return Optional.ofNullable(this.label);
    }

    /**
     * The collection of output H.265 layers to be produced by the encoder.
     * 
     */
    @Import(name="layers")
    private @Nullable Output> layers;

    /**
     * @return The collection of output H.265 layers to be produced by the encoder.
     * 
     */
    public Optional>> layers() {
        return Optional.ofNullable(this.layers);
    }

    /**
     * The discriminator for derived types.
     * Expected value is '#Microsoft.Media.H265Video'.
     * 
     */
    @Import(name="odataType", required=true)
    private Output odataType;

    /**
     * @return The discriminator for derived types.
     * Expected value is '#Microsoft.Media.H265Video'.
     * 
     */
    public Output odataType() {
        return this.odataType;
    }

    /**
     * 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.
     * 
     */
    @Import(name="sceneChangeDetection")
    private @Nullable Output sceneChangeDetection;

    /**
     * @return 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.
     * 
     */
    public Optional> sceneChangeDetection() {
        return Optional.ofNullable(this.sceneChangeDetection);
    }

    /**
     * The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
     * 
     */
    @Import(name="stretchMode")
    private @Nullable Output> stretchMode;

    /**
     * @return The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
     * 
     */
    public Optional>> stretchMode() {
        return Optional.ofNullable(this.stretchMode);
    }

    /**
     * The Video Sync Mode
     * 
     */
    @Import(name="syncMode")
    private @Nullable Output> syncMode;

    /**
     * @return The Video Sync Mode
     * 
     */
    public Optional>> syncMode() {
        return Optional.ofNullable(this.syncMode);
    }

    private H265VideoArgs() {}

    private H265VideoArgs(H265VideoArgs $) {
        this.complexity = $.complexity;
        this.keyFrameInterval = $.keyFrameInterval;
        this.label = $.label;
        this.layers = $.layers;
        this.odataType = $.odataType;
        this.sceneChangeDetection = $.sceneChangeDetection;
        this.stretchMode = $.stretchMode;
        this.syncMode = $.syncMode;
    }

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

    public static final class Builder {
        private H265VideoArgs $;

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

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

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder complexity(@Nullable Output> complexity) {
            $.complexity = complexity;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder complexity(Either complexity) {
            return complexity(Output.of(complexity));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder complexity(String complexity) {
            return complexity(Either.ofLeft(complexity));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder complexity(H265Complexity complexity) {
            return complexity(Either.ofRight(complexity));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder keyFrameInterval(@Nullable Output keyFrameInterval) {
            $.keyFrameInterval = keyFrameInterval;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder keyFrameInterval(String keyFrameInterval) {
            return keyFrameInterval(Output.of(keyFrameInterval));
        }

        /**
         * @param label An optional label for the codec. The label can be used to control muxing behavior.
         * 
         * @return builder
         * 
         */
        public Builder label(@Nullable Output label) {
            $.label = label;
            return this;
        }

        /**
         * @param label An optional label for the codec. The label can be used to control muxing behavior.
         * 
         * @return builder
         * 
         */
        public Builder label(String label) {
            return label(Output.of(label));
        }

        /**
         * @param layers The collection of output H.265 layers to be produced by the encoder.
         * 
         * @return builder
         * 
         */
        public Builder layers(@Nullable Output> layers) {
            $.layers = layers;
            return this;
        }

        /**
         * @param layers The collection of output H.265 layers to be produced by the encoder.
         * 
         * @return builder
         * 
         */
        public Builder layers(List layers) {
            return layers(Output.of(layers));
        }

        /**
         * @param layers The collection of output H.265 layers to be produced by the encoder.
         * 
         * @return builder
         * 
         */
        public Builder layers(H265LayerArgs... layers) {
            return layers(List.of(layers));
        }

        /**
         * @param odataType The discriminator for derived types.
         * Expected value is '#Microsoft.Media.H265Video'.
         * 
         * @return builder
         * 
         */
        public Builder odataType(Output odataType) {
            $.odataType = odataType;
            return this;
        }

        /**
         * @param odataType The discriminator for derived types.
         * Expected value is '#Microsoft.Media.H265Video'.
         * 
         * @return builder
         * 
         */
        public Builder odataType(String odataType) {
            return odataType(Output.of(odataType));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder sceneChangeDetection(@Nullable Output sceneChangeDetection) {
            $.sceneChangeDetection = sceneChangeDetection;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder sceneChangeDetection(Boolean sceneChangeDetection) {
            return sceneChangeDetection(Output.of(sceneChangeDetection));
        }

        /**
         * @param stretchMode The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
         * 
         * @return builder
         * 
         */
        public Builder stretchMode(@Nullable Output> stretchMode) {
            $.stretchMode = stretchMode;
            return this;
        }

        /**
         * @param stretchMode The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
         * 
         * @return builder
         * 
         */
        public Builder stretchMode(Either stretchMode) {
            return stretchMode(Output.of(stretchMode));
        }

        /**
         * @param stretchMode The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
         * 
         * @return builder
         * 
         */
        public Builder stretchMode(String stretchMode) {
            return stretchMode(Either.ofLeft(stretchMode));
        }

        /**
         * @param stretchMode The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize
         * 
         * @return builder
         * 
         */
        public Builder stretchMode(StretchMode stretchMode) {
            return stretchMode(Either.ofRight(stretchMode));
        }

        /**
         * @param syncMode The Video Sync Mode
         * 
         * @return builder
         * 
         */
        public Builder syncMode(@Nullable Output> syncMode) {
            $.syncMode = syncMode;
            return this;
        }

        /**
         * @param syncMode The Video Sync Mode
         * 
         * @return builder
         * 
         */
        public Builder syncMode(Either syncMode) {
            return syncMode(Output.of(syncMode));
        }

        /**
         * @param syncMode The Video Sync Mode
         * 
         * @return builder
         * 
         */
        public Builder syncMode(String syncMode) {
            return syncMode(Either.ofLeft(syncMode));
        }

        /**
         * @param syncMode The Video Sync Mode
         * 
         * @return builder
         * 
         */
        public Builder syncMode(VideoSyncMode syncMode) {
            return syncMode(Either.ofRight(syncMode));
        }

        public H265VideoArgs build() {
            $.odataType = Codegen.stringProp("odataType").output().arg($.odataType).require();
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy