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

commonMain.aws.sdk.kotlin.services.mediaconvert.model.XavcSettings.kt Maven / Gradle / Ivy

// Code generated by smithy-kotlin-codegen. DO NOT EDIT!

package aws.sdk.kotlin.services.mediaconvert.model



/**
 * Required when you set Codec to the value XAVC.
 */
public class XavcSettings private constructor(builder: Builder) {
    /**
     * Keep the default value, Auto, for this setting to have MediaConvert automatically apply the best types of quantization for your video content. When you want to apply your quantization settings manually, you must set Adaptive quantization to a value other than Auto. Use this setting to specify the strength of any adaptive quantization filters that you enable. If you don't want MediaConvert to do any adaptive quantization in this transcode, set Adaptive quantization to Off. Related settings: The value that you choose here applies to the following settings: Flicker adaptive quantization (flickerAdaptiveQuantization), Spatial adaptive quantization, and Temporal adaptive quantization.
     */
    public val adaptiveQuantization: aws.sdk.kotlin.services.mediaconvert.model.XavcAdaptiveQuantization? = builder.adaptiveQuantization
    /**
     * Optional. Choose a specific entropy encoding mode only when you want to override XAVC recommendations. If you choose the value auto, MediaConvert uses the mode that the XAVC file format specifies given this output's operating point.
     */
    public val entropyEncoding: aws.sdk.kotlin.services.mediaconvert.model.XavcEntropyEncoding? = builder.entropyEncoding
    /**
     * If you are using the console, use the Frame rate setting to specify the frame rate for this output. If you want to keep the same frame rate as the input video, choose Follow source. If you want to do frame rate conversion, choose a frame rate from the dropdown list. The framerates shown in the dropdown list are decimal approximations of fractions.
     */
    public val framerateControl: aws.sdk.kotlin.services.mediaconvert.model.XavcFramerateControl? = builder.framerateControl
    /**
     * Choose the method that you want MediaConvert to use when increasing or decreasing the frame rate. For numerically simple conversions, such as 60 fps to 30 fps: We recommend that you keep the default value, Drop duplicate. For numerically complex conversions, to avoid stutter: Choose Interpolate. This results in a smooth picture, but might introduce undesirable video artifacts. For complex frame rate conversions, especially if your source video has already been converted from its original cadence: Choose FrameFormer to do motion-compensated interpolation. FrameFormer uses the best conversion method frame by frame. Note that using FrameFormer increases the transcoding time and incurs a significant add-on cost. When you choose FrameFormer, your input video resolution must be at least 128x96.
     */
    public val framerateConversionAlgorithm: aws.sdk.kotlin.services.mediaconvert.model.XavcFramerateConversionAlgorithm? = builder.framerateConversionAlgorithm
    /**
     * When you use the API for transcode jobs that use frame rate conversion, specify the frame rate as a fraction. For example, 24000 / 1001 = 23.976 fps. Use FramerateDenominator to specify the denominator of this fraction. In this example, use 1001 for the value of FramerateDenominator. When you use the console for transcode jobs that use frame rate conversion, provide the value as a decimal number for Frame rate. In this example, specify 23.976.
     */
    public val framerateDenominator: kotlin.Int? = builder.framerateDenominator
    /**
     * When you use the API for transcode jobs that use frame rate conversion, specify the frame rate as a fraction. For example, 24000 / 1001 = 23.976 fps. Use FramerateNumerator to specify the numerator of this fraction. In this example, use 24000 for the value of FramerateNumerator. When you use the console for transcode jobs that use frame rate conversion, provide the value as a decimal number for Framerate. In this example, specify 23.976.
     */
    public val framerateNumerator: kotlin.Int? = builder.framerateNumerator
    /**
     * Specify the XAVC profile for this output. For more information, see the Sony documentation at https://www.xavc-info.org/. Note that MediaConvert doesn't support the interlaced video XAVC operating points for XAVC_HD_INTRA_CBG. To create an interlaced XAVC output, choose the profile XAVC_HD.
     */
    public val profile: aws.sdk.kotlin.services.mediaconvert.model.XavcProfile? = builder.profile
    /**
     * Ignore this setting unless your input frame rate is 23.976 or 24 frames per second (fps). Enable slow PAL to create a 25 fps output by relabeling the video frames and resampling your audio. Note that enabling this setting will slightly reduce the duration of your video. Related settings: You must also set Frame rate to 25.
     */
    public val slowPal: aws.sdk.kotlin.services.mediaconvert.model.XavcSlowPal? = builder.slowPal
    /**
     * Ignore this setting unless your downstream workflow requires that you specify it explicitly. Otherwise, we recommend that you adjust the softness of your output by using a lower value for the setting Sharpness or by enabling a noise reducer filter. The Softness setting specifies the quantization matrices that the encoder uses. Keep the default value, 0, for flat quantization. Choose the value 1 or 16 to use the default JVT softening quantization matricies from the H.264 specification. Choose a value from 17 to 128 to use planar interpolation. Increasing values from 17 to 128 result in increasing reduction of high-frequency data. The value 128 results in the softest video.
     */
    public val softness: kotlin.Int? = builder.softness
    /**
     * The best way to set up adaptive quantization is to keep the default value, Auto, for the setting Adaptive quantization. When you do so, MediaConvert automatically applies the best types of quantization for your video content. Include this setting in your JSON job specification only when you choose to change the default value for Adaptive quantization. For this setting, keep the default value, Enabled, to adjust quantization within each frame based on spatial variation of content complexity. When you enable this feature, the encoder uses fewer bits on areas that can sustain more distortion with no noticeable visual degradation and uses more bits on areas where any small distortion will be noticeable. For example, complex textured blocks are encoded with fewer bits and smooth textured blocks are encoded with more bits. Enabling this feature will almost always improve your video quality. Note, though, that this feature doesn't take into account where the viewer's attention is likely to be. If viewers are likely to be focusing their attention on a part of the screen with a lot of complex texture, you might choose to disable this feature. Related setting: When you enable spatial adaptive quantization, set the value for Adaptive quantization depending on your content. For homogeneous content, such as cartoons and video games, set it to Low. For content with a wider variety of textures, set it to High or Higher.
     */
    public val spatialAdaptiveQuantization: aws.sdk.kotlin.services.mediaconvert.model.XavcSpatialAdaptiveQuantization? = builder.spatialAdaptiveQuantization
    /**
     * The best way to set up adaptive quantization is to keep the default value, Auto, for the setting Adaptive quantization. When you do so, MediaConvert automatically applies the best types of quantization for your video content. Include this setting in your JSON job specification only when you choose to change the default value for Adaptive quantization. For this setting, keep the default value, Enabled, to adjust quantization within each frame based on temporal variation of content complexity. When you enable this feature, the encoder uses fewer bits on areas of the frame that aren't moving and uses more bits on complex objects with sharp edges that move a lot. For example, this feature improves the readability of text tickers on newscasts and scoreboards on sports matches. Enabling this feature will almost always improve your video quality. Note, though, that this feature doesn't take into account where the viewer's attention is likely to be. If viewers are likely to be focusing their attention on a part of the screen that doesn't have moving objects with sharp edges, such as sports athletes' faces, you might choose to disable this feature. Related setting: When you enable temporal adaptive quantization, adjust the strength of the filter with the setting Adaptive quantization.
     */
    public val temporalAdaptiveQuantization: aws.sdk.kotlin.services.mediaconvert.model.XavcTemporalAdaptiveQuantization? = builder.temporalAdaptiveQuantization
    /**
     * Required when you set Profile to the value XAVC_4K_INTRA_CBG.
     */
    public val xavc4kIntraCbgProfileSettings: aws.sdk.kotlin.services.mediaconvert.model.Xavc4kIntraCbgProfileSettings? = builder.xavc4kIntraCbgProfileSettings
    /**
     * Required when you set Profile to the value XAVC_4K_INTRA_VBR.
     */
    public val xavc4kIntraVbrProfileSettings: aws.sdk.kotlin.services.mediaconvert.model.Xavc4kIntraVbrProfileSettings? = builder.xavc4kIntraVbrProfileSettings
    /**
     * Required when you set Profile to the value XAVC_4K.
     */
    public val xavc4kProfileSettings: aws.sdk.kotlin.services.mediaconvert.model.Xavc4kProfileSettings? = builder.xavc4kProfileSettings
    /**
     * Required when you set Profile to the value XAVC_HD_INTRA_CBG.
     */
    public val xavcHdIntraCbgProfileSettings: aws.sdk.kotlin.services.mediaconvert.model.XavcHdIntraCbgProfileSettings? = builder.xavcHdIntraCbgProfileSettings
    /**
     * Required when you set Profile to the value XAVC_HD.
     */
    public val xavcHdProfileSettings: aws.sdk.kotlin.services.mediaconvert.model.XavcHdProfileSettings? = builder.xavcHdProfileSettings

    public companion object {
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.mediaconvert.model.XavcSettings = Builder().apply(block).build()
    }

    override fun toString(): kotlin.String = buildString {
        append("XavcSettings(")
        append("adaptiveQuantization=$adaptiveQuantization,")
        append("entropyEncoding=$entropyEncoding,")
        append("framerateControl=$framerateControl,")
        append("framerateConversionAlgorithm=$framerateConversionAlgorithm,")
        append("framerateDenominator=$framerateDenominator,")
        append("framerateNumerator=$framerateNumerator,")
        append("profile=$profile,")
        append("slowPal=$slowPal,")
        append("softness=$softness,")
        append("spatialAdaptiveQuantization=$spatialAdaptiveQuantization,")
        append("temporalAdaptiveQuantization=$temporalAdaptiveQuantization,")
        append("xavc4kIntraCbgProfileSettings=$xavc4kIntraCbgProfileSettings,")
        append("xavc4kIntraVbrProfileSettings=$xavc4kIntraVbrProfileSettings,")
        append("xavc4kProfileSettings=$xavc4kProfileSettings,")
        append("xavcHdIntraCbgProfileSettings=$xavcHdIntraCbgProfileSettings,")
        append("xavcHdProfileSettings=$xavcHdProfileSettings")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = adaptiveQuantization?.hashCode() ?: 0
        result = 31 * result + (entropyEncoding?.hashCode() ?: 0)
        result = 31 * result + (framerateControl?.hashCode() ?: 0)
        result = 31 * result + (framerateConversionAlgorithm?.hashCode() ?: 0)
        result = 31 * result + (framerateDenominator ?: 0)
        result = 31 * result + (framerateNumerator ?: 0)
        result = 31 * result + (profile?.hashCode() ?: 0)
        result = 31 * result + (slowPal?.hashCode() ?: 0)
        result = 31 * result + (softness ?: 0)
        result = 31 * result + (spatialAdaptiveQuantization?.hashCode() ?: 0)
        result = 31 * result + (temporalAdaptiveQuantization?.hashCode() ?: 0)
        result = 31 * result + (xavc4kIntraCbgProfileSettings?.hashCode() ?: 0)
        result = 31 * result + (xavc4kIntraVbrProfileSettings?.hashCode() ?: 0)
        result = 31 * result + (xavc4kProfileSettings?.hashCode() ?: 0)
        result = 31 * result + (xavcHdIntraCbgProfileSettings?.hashCode() ?: 0)
        result = 31 * result + (xavcHdProfileSettings?.hashCode() ?: 0)
        return result
    }

    override fun equals(other: kotlin.Any?): kotlin.Boolean {
        if (this === other) return true
        if (other == null || this::class != other::class) return false

        other as XavcSettings

        if (adaptiveQuantization != other.adaptiveQuantization) return false
        if (entropyEncoding != other.entropyEncoding) return false
        if (framerateControl != other.framerateControl) return false
        if (framerateConversionAlgorithm != other.framerateConversionAlgorithm) return false
        if (framerateDenominator != other.framerateDenominator) return false
        if (framerateNumerator != other.framerateNumerator) return false
        if (profile != other.profile) return false
        if (slowPal != other.slowPal) return false
        if (softness != other.softness) return false
        if (spatialAdaptiveQuantization != other.spatialAdaptiveQuantization) return false
        if (temporalAdaptiveQuantization != other.temporalAdaptiveQuantization) return false
        if (xavc4kIntraCbgProfileSettings != other.xavc4kIntraCbgProfileSettings) return false
        if (xavc4kIntraVbrProfileSettings != other.xavc4kIntraVbrProfileSettings) return false
        if (xavc4kProfileSettings != other.xavc4kProfileSettings) return false
        if (xavcHdIntraCbgProfileSettings != other.xavcHdIntraCbgProfileSettings) return false
        if (xavcHdProfileSettings != other.xavcHdProfileSettings) return false

        return true
    }

    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.mediaconvert.model.XavcSettings = Builder(this).apply(block).build()

    public class Builder {
        /**
         * Keep the default value, Auto, for this setting to have MediaConvert automatically apply the best types of quantization for your video content. When you want to apply your quantization settings manually, you must set Adaptive quantization to a value other than Auto. Use this setting to specify the strength of any adaptive quantization filters that you enable. If you don't want MediaConvert to do any adaptive quantization in this transcode, set Adaptive quantization to Off. Related settings: The value that you choose here applies to the following settings: Flicker adaptive quantization (flickerAdaptiveQuantization), Spatial adaptive quantization, and Temporal adaptive quantization.
         */
        public var adaptiveQuantization: aws.sdk.kotlin.services.mediaconvert.model.XavcAdaptiveQuantization? = null
        /**
         * Optional. Choose a specific entropy encoding mode only when you want to override XAVC recommendations. If you choose the value auto, MediaConvert uses the mode that the XAVC file format specifies given this output's operating point.
         */
        public var entropyEncoding: aws.sdk.kotlin.services.mediaconvert.model.XavcEntropyEncoding? = null
        /**
         * If you are using the console, use the Frame rate setting to specify the frame rate for this output. If you want to keep the same frame rate as the input video, choose Follow source. If you want to do frame rate conversion, choose a frame rate from the dropdown list. The framerates shown in the dropdown list are decimal approximations of fractions.
         */
        public var framerateControl: aws.sdk.kotlin.services.mediaconvert.model.XavcFramerateControl? = null
        /**
         * Choose the method that you want MediaConvert to use when increasing or decreasing the frame rate. For numerically simple conversions, such as 60 fps to 30 fps: We recommend that you keep the default value, Drop duplicate. For numerically complex conversions, to avoid stutter: Choose Interpolate. This results in a smooth picture, but might introduce undesirable video artifacts. For complex frame rate conversions, especially if your source video has already been converted from its original cadence: Choose FrameFormer to do motion-compensated interpolation. FrameFormer uses the best conversion method frame by frame. Note that using FrameFormer increases the transcoding time and incurs a significant add-on cost. When you choose FrameFormer, your input video resolution must be at least 128x96.
         */
        public var framerateConversionAlgorithm: aws.sdk.kotlin.services.mediaconvert.model.XavcFramerateConversionAlgorithm? = null
        /**
         * When you use the API for transcode jobs that use frame rate conversion, specify the frame rate as a fraction. For example, 24000 / 1001 = 23.976 fps. Use FramerateDenominator to specify the denominator of this fraction. In this example, use 1001 for the value of FramerateDenominator. When you use the console for transcode jobs that use frame rate conversion, provide the value as a decimal number for Frame rate. In this example, specify 23.976.
         */
        public var framerateDenominator: kotlin.Int? = null
        /**
         * When you use the API for transcode jobs that use frame rate conversion, specify the frame rate as a fraction. For example, 24000 / 1001 = 23.976 fps. Use FramerateNumerator to specify the numerator of this fraction. In this example, use 24000 for the value of FramerateNumerator. When you use the console for transcode jobs that use frame rate conversion, provide the value as a decimal number for Framerate. In this example, specify 23.976.
         */
        public var framerateNumerator: kotlin.Int? = null
        /**
         * Specify the XAVC profile for this output. For more information, see the Sony documentation at https://www.xavc-info.org/. Note that MediaConvert doesn't support the interlaced video XAVC operating points for XAVC_HD_INTRA_CBG. To create an interlaced XAVC output, choose the profile XAVC_HD.
         */
        public var profile: aws.sdk.kotlin.services.mediaconvert.model.XavcProfile? = null
        /**
         * Ignore this setting unless your input frame rate is 23.976 or 24 frames per second (fps). Enable slow PAL to create a 25 fps output by relabeling the video frames and resampling your audio. Note that enabling this setting will slightly reduce the duration of your video. Related settings: You must also set Frame rate to 25.
         */
        public var slowPal: aws.sdk.kotlin.services.mediaconvert.model.XavcSlowPal? = null
        /**
         * Ignore this setting unless your downstream workflow requires that you specify it explicitly. Otherwise, we recommend that you adjust the softness of your output by using a lower value for the setting Sharpness or by enabling a noise reducer filter. The Softness setting specifies the quantization matrices that the encoder uses. Keep the default value, 0, for flat quantization. Choose the value 1 or 16 to use the default JVT softening quantization matricies from the H.264 specification. Choose a value from 17 to 128 to use planar interpolation. Increasing values from 17 to 128 result in increasing reduction of high-frequency data. The value 128 results in the softest video.
         */
        public var softness: kotlin.Int? = null
        /**
         * The best way to set up adaptive quantization is to keep the default value, Auto, for the setting Adaptive quantization. When you do so, MediaConvert automatically applies the best types of quantization for your video content. Include this setting in your JSON job specification only when you choose to change the default value for Adaptive quantization. For this setting, keep the default value, Enabled, to adjust quantization within each frame based on spatial variation of content complexity. When you enable this feature, the encoder uses fewer bits on areas that can sustain more distortion with no noticeable visual degradation and uses more bits on areas where any small distortion will be noticeable. For example, complex textured blocks are encoded with fewer bits and smooth textured blocks are encoded with more bits. Enabling this feature will almost always improve your video quality. Note, though, that this feature doesn't take into account where the viewer's attention is likely to be. If viewers are likely to be focusing their attention on a part of the screen with a lot of complex texture, you might choose to disable this feature. Related setting: When you enable spatial adaptive quantization, set the value for Adaptive quantization depending on your content. For homogeneous content, such as cartoons and video games, set it to Low. For content with a wider variety of textures, set it to High or Higher.
         */
        public var spatialAdaptiveQuantization: aws.sdk.kotlin.services.mediaconvert.model.XavcSpatialAdaptiveQuantization? = null
        /**
         * The best way to set up adaptive quantization is to keep the default value, Auto, for the setting Adaptive quantization. When you do so, MediaConvert automatically applies the best types of quantization for your video content. Include this setting in your JSON job specification only when you choose to change the default value for Adaptive quantization. For this setting, keep the default value, Enabled, to adjust quantization within each frame based on temporal variation of content complexity. When you enable this feature, the encoder uses fewer bits on areas of the frame that aren't moving and uses more bits on complex objects with sharp edges that move a lot. For example, this feature improves the readability of text tickers on newscasts and scoreboards on sports matches. Enabling this feature will almost always improve your video quality. Note, though, that this feature doesn't take into account where the viewer's attention is likely to be. If viewers are likely to be focusing their attention on a part of the screen that doesn't have moving objects with sharp edges, such as sports athletes' faces, you might choose to disable this feature. Related setting: When you enable temporal adaptive quantization, adjust the strength of the filter with the setting Adaptive quantization.
         */
        public var temporalAdaptiveQuantization: aws.sdk.kotlin.services.mediaconvert.model.XavcTemporalAdaptiveQuantization? = null
        /**
         * Required when you set Profile to the value XAVC_4K_INTRA_CBG.
         */
        public var xavc4kIntraCbgProfileSettings: aws.sdk.kotlin.services.mediaconvert.model.Xavc4kIntraCbgProfileSettings? = null
        /**
         * Required when you set Profile to the value XAVC_4K_INTRA_VBR.
         */
        public var xavc4kIntraVbrProfileSettings: aws.sdk.kotlin.services.mediaconvert.model.Xavc4kIntraVbrProfileSettings? = null
        /**
         * Required when you set Profile to the value XAVC_4K.
         */
        public var xavc4kProfileSettings: aws.sdk.kotlin.services.mediaconvert.model.Xavc4kProfileSettings? = null
        /**
         * Required when you set Profile to the value XAVC_HD_INTRA_CBG.
         */
        public var xavcHdIntraCbgProfileSettings: aws.sdk.kotlin.services.mediaconvert.model.XavcHdIntraCbgProfileSettings? = null
        /**
         * Required when you set Profile to the value XAVC_HD.
         */
        public var xavcHdProfileSettings: aws.sdk.kotlin.services.mediaconvert.model.XavcHdProfileSettings? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.mediaconvert.model.XavcSettings) : this() {
            this.adaptiveQuantization = x.adaptiveQuantization
            this.entropyEncoding = x.entropyEncoding
            this.framerateControl = x.framerateControl
            this.framerateConversionAlgorithm = x.framerateConversionAlgorithm
            this.framerateDenominator = x.framerateDenominator
            this.framerateNumerator = x.framerateNumerator
            this.profile = x.profile
            this.slowPal = x.slowPal
            this.softness = x.softness
            this.spatialAdaptiveQuantization = x.spatialAdaptiveQuantization
            this.temporalAdaptiveQuantization = x.temporalAdaptiveQuantization
            this.xavc4kIntraCbgProfileSettings = x.xavc4kIntraCbgProfileSettings
            this.xavc4kIntraVbrProfileSettings = x.xavc4kIntraVbrProfileSettings
            this.xavc4kProfileSettings = x.xavc4kProfileSettings
            this.xavcHdIntraCbgProfileSettings = x.xavcHdIntraCbgProfileSettings
            this.xavcHdProfileSettings = x.xavcHdProfileSettings
        }

        @PublishedApi
        internal fun build(): aws.sdk.kotlin.services.mediaconvert.model.XavcSettings = XavcSettings(this)

        /**
         * construct an [aws.sdk.kotlin.services.mediaconvert.model.Xavc4kIntraCbgProfileSettings] inside the given [block]
         */
        public fun xavc4kIntraCbgProfileSettings(block: aws.sdk.kotlin.services.mediaconvert.model.Xavc4kIntraCbgProfileSettings.Builder.() -> kotlin.Unit) {
            this.xavc4kIntraCbgProfileSettings = aws.sdk.kotlin.services.mediaconvert.model.Xavc4kIntraCbgProfileSettings.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.mediaconvert.model.Xavc4kIntraVbrProfileSettings] inside the given [block]
         */
        public fun xavc4kIntraVbrProfileSettings(block: aws.sdk.kotlin.services.mediaconvert.model.Xavc4kIntraVbrProfileSettings.Builder.() -> kotlin.Unit) {
            this.xavc4kIntraVbrProfileSettings = aws.sdk.kotlin.services.mediaconvert.model.Xavc4kIntraVbrProfileSettings.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.mediaconvert.model.Xavc4kProfileSettings] inside the given [block]
         */
        public fun xavc4kProfileSettings(block: aws.sdk.kotlin.services.mediaconvert.model.Xavc4kProfileSettings.Builder.() -> kotlin.Unit) {
            this.xavc4kProfileSettings = aws.sdk.kotlin.services.mediaconvert.model.Xavc4kProfileSettings.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.mediaconvert.model.XavcHdIntraCbgProfileSettings] inside the given [block]
         */
        public fun xavcHdIntraCbgProfileSettings(block: aws.sdk.kotlin.services.mediaconvert.model.XavcHdIntraCbgProfileSettings.Builder.() -> kotlin.Unit) {
            this.xavcHdIntraCbgProfileSettings = aws.sdk.kotlin.services.mediaconvert.model.XavcHdIntraCbgProfileSettings.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.mediaconvert.model.XavcHdProfileSettings] inside the given [block]
         */
        public fun xavcHdProfileSettings(block: aws.sdk.kotlin.services.mediaconvert.model.XavcHdProfileSettings.Builder.() -> kotlin.Unit) {
            this.xavcHdProfileSettings = aws.sdk.kotlin.services.mediaconvert.model.XavcHdProfileSettings.invoke(block)
        }

        internal fun correctErrors(): Builder {
            return this
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy