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

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

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

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



/**
 * Settings related to your CMAF output package. For more information, see https://docs.aws.amazon.com/mediaconvert/latest/ug/outputs-file-ABR.html.
 */
public class CmafGroupSettings private constructor(builder: Builder) {
    /**
     * By default, the service creates one top-level .m3u8 HLS manifest and one top -level .mpd DASH manifest for each CMAF output group in your job. These default manifests reference every output in the output group. To create additional top-level manifests that reference a subset of the outputs in the output group, specify a list of them here. For each additional manifest that you specify, the service creates one HLS manifest and one DASH manifest.
     */
    public val additionalManifests: List? = builder.additionalManifests
    /**
     * A partial URI prefix that will be put in the manifest file at the top level BaseURL element. Can be used if streams are delivered from a different URL than the manifest file.
     */
    public val baseUrl: kotlin.String? = builder.baseUrl
    /**
     * Disable this setting only when your workflow requires the #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled and control caching in your video distribution set up. For example, use the Cache-Control http header.
     */
    public val clientCache: aws.sdk.kotlin.services.mediaconvert.model.CmafClientCache? = builder.clientCache
    /**
     * Specification to use (RFC-6381 or the default RFC-4281) during m3u8 playlist generation.
     */
    public val codecSpecification: aws.sdk.kotlin.services.mediaconvert.model.CmafCodecSpecification? = builder.codecSpecification
    /**
     * Specify how MediaConvert writes SegmentTimeline in your output DASH manifest. To write a SegmentTimeline in each video Representation: Keep the default value, Basic. To write a common SegmentTimeline in the video AdaptationSet: Choose Compact. Note that MediaConvert will still write a SegmentTimeline in any Representation that does not share a common timeline. To write a video AdaptationSet for each different output framerate, and a common SegmentTimeline in each AdaptationSet: Choose Distinct.
     */
    public val dashManifestStyle: aws.sdk.kotlin.services.mediaconvert.model.DashManifestStyle? = builder.dashManifestStyle
    /**
     * Use Destination to specify the S3 output location and the output filename base. Destination accepts format identifiers. If you do not specify the base filename in the URI, the service will use the filename of the input file. If your job has multiple inputs, the service uses the filename of the first input file.
     */
    public val destination: kotlin.String? = builder.destination
    /**
     * Settings associated with the destination. Will vary based on the type of destination
     */
    public val destinationSettings: aws.sdk.kotlin.services.mediaconvert.model.DestinationSettings? = builder.destinationSettings
    /**
     * DRM settings.
     */
    public val encryption: aws.sdk.kotlin.services.mediaconvert.model.CmafEncryptionSettings? = builder.encryption
    /**
     * Specify the length, in whole seconds, of the mp4 fragments. When you don't specify a value, MediaConvert defaults to 2. Related setting: Use Fragment length control to specify whether the encoder enforces this value strictly.
     */
    public val fragmentLength: kotlin.Int? = builder.fragmentLength
    /**
     * Specify whether MediaConvert generates images for trick play. Keep the default value, None, to not generate any images. Choose Thumbnail to generate tiled thumbnails. Choose Thumbnail and full frame to generate tiled thumbnails and full-resolution images of single frames. When you enable Write HLS manifest, MediaConvert creates a child manifest for each set of images that you generate and adds corresponding entries to the parent manifest. When you enable Write DASH manifest, MediaConvert adds an entry in the .mpd manifest for each set of images that you generate. A common application for these images is Roku trick mode. The thumbnails and full-frame images that MediaConvert creates with this feature are compatible with this Roku specification: https://developer.roku.com/docs/developer-program/media-playback/trick-mode/hls-and-dash.md
     */
    public val imageBasedTrickPlay: aws.sdk.kotlin.services.mediaconvert.model.CmafImageBasedTrickPlay? = builder.imageBasedTrickPlay
    /**
     * Tile and thumbnail settings applicable when imageBasedTrickPlay is ADVANCED
     */
    public val imageBasedTrickPlaySettings: aws.sdk.kotlin.services.mediaconvert.model.CmafImageBasedTrickPlaySettings? = builder.imageBasedTrickPlaySettings
    /**
     * When set to GZIP, compresses HLS playlist.
     */
    public val manifestCompression: aws.sdk.kotlin.services.mediaconvert.model.CmafManifestCompression? = builder.manifestCompression
    /**
     * Indicates whether the output manifest should use floating point values for segment duration.
     */
    public val manifestDurationFormat: aws.sdk.kotlin.services.mediaconvert.model.CmafManifestDurationFormat? = builder.manifestDurationFormat
    /**
     * Minimum time of initially buffered media that is needed to ensure smooth playout.
     */
    public val minBufferTime: kotlin.Int? = builder.minBufferTime
    /**
     * Keep this setting at the default value of 0, unless you are troubleshooting a problem with how devices play back the end of your video asset. If you know that player devices are hanging on the final segment of your video because the length of your final segment is too short, use this setting to specify a minimum final segment length, in seconds. Choose a value that is greater than or equal to 1 and less than your segment length. When you specify a value for this setting, the encoder will combine any final segment that is shorter than the length that you specify with the previous segment. For example, your segment length is 3 seconds and your final segment is .5 seconds without a minimum final segment length; when you set the minimum final segment length to 1, your final segment is 3.5 seconds.
     */
    public val minFinalSegmentLength: kotlin.Double? = builder.minFinalSegmentLength
    /**
     * Specify how the value for bandwidth is determined for each video Representation in your output MPD manifest. We recommend that you choose a MPD manifest bandwidth type that is compatible with your downstream player configuration. Max: Use the same value that you specify for Max bitrate in the video output, in bits per second. Average: Use the calculated average bitrate of the encoded video output, in bits per second.
     */
    public val mpdManifestBandwidthType: aws.sdk.kotlin.services.mediaconvert.model.CmafMpdManifestBandwidthType? = builder.mpdManifestBandwidthType
    /**
     * Specify whether your DASH profile is on-demand or main. When you choose Main profile, the service signals urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When you choose On-demand, the service signals urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose On-demand, you must also set the output group setting Segment control to Single file.
     */
    public val mpdProfile: aws.sdk.kotlin.services.mediaconvert.model.CmafMpdProfile? = builder.mpdProfile
    /**
     * Use this setting only when your output video stream has B-frames, which causes the initial presentation time stamp (PTS) to be offset from the initial decode time stamp (DTS). Specify how MediaConvert handles PTS when writing time stamps in output DASH manifests. Choose Match initial PTS when you want MediaConvert to use the initial PTS as the first time stamp in the manifest. Choose Zero-based to have MediaConvert ignore the initial PTS in the video stream and instead write the initial time stamp as zero in the manifest. For outputs that don't have B-frames, the time stamps in your DASH manifests start at zero regardless of your choice here.
     */
    public val ptsOffsetHandlingForBFrames: aws.sdk.kotlin.services.mediaconvert.model.CmafPtsOffsetHandlingForBFrames? = builder.ptsOffsetHandlingForBFrames
    /**
     * When set to SINGLE_FILE, a single output file is generated, which is internally segmented using the Fragment Length and Segment Length. When set to SEGMENTED_FILES, separate segment files will be created.
     */
    public val segmentControl: aws.sdk.kotlin.services.mediaconvert.model.CmafSegmentControl? = builder.segmentControl
    /**
     * Specify the length, in whole seconds, of each segment. When you don't specify a value, MediaConvert defaults to 10. Related settings: Use Segment length control to specify whether the encoder enforces this value strictly. Use Segment control to specify whether MediaConvert creates separate segment files or one content file that has metadata to mark the segment boundaries.
     */
    public val segmentLength: kotlin.Int? = builder.segmentLength
    /**
     * Specify how you want MediaConvert to determine the segment length. Choose Exact to have the encoder use the exact length that you specify with the setting Segment length. This might result in extra I-frames. Choose Multiple of GOP to have the encoder round up the segment lengths to match the next GOP boundary.
     */
    public val segmentLengthControl: aws.sdk.kotlin.services.mediaconvert.model.CmafSegmentLengthControl? = builder.segmentLengthControl
    /**
     * Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF tag of variant manifest.
     */
    public val streamInfResolution: aws.sdk.kotlin.services.mediaconvert.model.CmafStreamInfResolution? = builder.streamInfResolution
    /**
     * When set to LEGACY, the segment target duration is always rounded up to the nearest integer value above its current value in seconds. When set to SPEC\\_COMPLIANT, the segment target duration is rounded up to the nearest integer value if fraction seconds are greater than or equal to 0.5 (>= 0.5) and rounded down if less than 0.5 (< 0.5). You may need to use LEGACY if your client needs to ensure that the target duration is always longer than the actual duration of the segment. Some older players may experience interrupted playback when the actual duration of a track in a segment is longer than the target duration.
     */
    public val targetDurationCompatibilityMode: aws.sdk.kotlin.services.mediaconvert.model.CmafTargetDurationCompatibilityMode? = builder.targetDurationCompatibilityMode
    /**
     * Specify the video sample composition time offset mode in the output fMP4 TRUN box. For wider player compatibility, set Video composition offsets to Unsigned or leave blank. The earliest presentation time may be greater than zero, and sample composition time offsets will increment using unsigned integers. For strict fMP4 video and audio timing, set Video composition offsets to Signed. The earliest presentation time will be equal to zero, and sample composition time offsets will increment using signed integers.
     */
    public val videoCompositionOffsets: aws.sdk.kotlin.services.mediaconvert.model.CmafVideoCompositionOffsets? = builder.videoCompositionOffsets
    /**
     * When set to ENABLED, a DASH MPD manifest will be generated for this output.
     */
    public val writeDashManifest: aws.sdk.kotlin.services.mediaconvert.model.CmafWriteDashManifest? = builder.writeDashManifest
    /**
     * When set to ENABLED, an Apple HLS manifest will be generated for this output.
     */
    public val writeHlsManifest: aws.sdk.kotlin.services.mediaconvert.model.CmafWriteHlsManifest? = builder.writeHlsManifest
    /**
     * When you enable Precise segment duration in DASH manifests, your DASH manifest shows precise segment durations. The segment duration information appears inside the SegmentTimeline element, inside SegmentTemplate at the Representation level. When this feature isn't enabled, the segment durations in your DASH manifest are approximate. The segment duration information appears in the duration attribute of the SegmentTemplate element.
     */
    public val writeSegmentTimelineInRepresentation: aws.sdk.kotlin.services.mediaconvert.model.CmafWriteSegmentTimelineInRepresentation? = builder.writeSegmentTimelineInRepresentation

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

    override fun toString(): kotlin.String = buildString {
        append("CmafGroupSettings(")
        append("additionalManifests=$additionalManifests,")
        append("baseUrl=$baseUrl,")
        append("clientCache=$clientCache,")
        append("codecSpecification=$codecSpecification,")
        append("dashManifestStyle=$dashManifestStyle,")
        append("destination=$destination,")
        append("destinationSettings=$destinationSettings,")
        append("encryption=$encryption,")
        append("fragmentLength=$fragmentLength,")
        append("imageBasedTrickPlay=$imageBasedTrickPlay,")
        append("imageBasedTrickPlaySettings=$imageBasedTrickPlaySettings,")
        append("manifestCompression=$manifestCompression,")
        append("manifestDurationFormat=$manifestDurationFormat,")
        append("minBufferTime=$minBufferTime,")
        append("minFinalSegmentLength=$minFinalSegmentLength,")
        append("mpdManifestBandwidthType=$mpdManifestBandwidthType,")
        append("mpdProfile=$mpdProfile,")
        append("ptsOffsetHandlingForBFrames=$ptsOffsetHandlingForBFrames,")
        append("segmentControl=$segmentControl,")
        append("segmentLength=$segmentLength,")
        append("segmentLengthControl=$segmentLengthControl,")
        append("streamInfResolution=$streamInfResolution,")
        append("targetDurationCompatibilityMode=$targetDurationCompatibilityMode,")
        append("videoCompositionOffsets=$videoCompositionOffsets,")
        append("writeDashManifest=$writeDashManifest,")
        append("writeHlsManifest=$writeHlsManifest,")
        append("writeSegmentTimelineInRepresentation=$writeSegmentTimelineInRepresentation")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = additionalManifests?.hashCode() ?: 0
        result = 31 * result + (baseUrl?.hashCode() ?: 0)
        result = 31 * result + (clientCache?.hashCode() ?: 0)
        result = 31 * result + (codecSpecification?.hashCode() ?: 0)
        result = 31 * result + (dashManifestStyle?.hashCode() ?: 0)
        result = 31 * result + (destination?.hashCode() ?: 0)
        result = 31 * result + (destinationSettings?.hashCode() ?: 0)
        result = 31 * result + (encryption?.hashCode() ?: 0)
        result = 31 * result + (fragmentLength ?: 0)
        result = 31 * result + (imageBasedTrickPlay?.hashCode() ?: 0)
        result = 31 * result + (imageBasedTrickPlaySettings?.hashCode() ?: 0)
        result = 31 * result + (manifestCompression?.hashCode() ?: 0)
        result = 31 * result + (manifestDurationFormat?.hashCode() ?: 0)
        result = 31 * result + (minBufferTime ?: 0)
        result = 31 * result + (minFinalSegmentLength?.hashCode() ?: 0)
        result = 31 * result + (mpdManifestBandwidthType?.hashCode() ?: 0)
        result = 31 * result + (mpdProfile?.hashCode() ?: 0)
        result = 31 * result + (ptsOffsetHandlingForBFrames?.hashCode() ?: 0)
        result = 31 * result + (segmentControl?.hashCode() ?: 0)
        result = 31 * result + (segmentLength ?: 0)
        result = 31 * result + (segmentLengthControl?.hashCode() ?: 0)
        result = 31 * result + (streamInfResolution?.hashCode() ?: 0)
        result = 31 * result + (targetDurationCompatibilityMode?.hashCode() ?: 0)
        result = 31 * result + (videoCompositionOffsets?.hashCode() ?: 0)
        result = 31 * result + (writeDashManifest?.hashCode() ?: 0)
        result = 31 * result + (writeHlsManifest?.hashCode() ?: 0)
        result = 31 * result + (writeSegmentTimelineInRepresentation?.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 CmafGroupSettings

        if (additionalManifests != other.additionalManifests) return false
        if (baseUrl != other.baseUrl) return false
        if (clientCache != other.clientCache) return false
        if (codecSpecification != other.codecSpecification) return false
        if (dashManifestStyle != other.dashManifestStyle) return false
        if (destination != other.destination) return false
        if (destinationSettings != other.destinationSettings) return false
        if (encryption != other.encryption) return false
        if (fragmentLength != other.fragmentLength) return false
        if (imageBasedTrickPlay != other.imageBasedTrickPlay) return false
        if (imageBasedTrickPlaySettings != other.imageBasedTrickPlaySettings) return false
        if (manifestCompression != other.manifestCompression) return false
        if (manifestDurationFormat != other.manifestDurationFormat) return false
        if (minBufferTime != other.minBufferTime) return false
        if (minFinalSegmentLength != other.minFinalSegmentLength) return false
        if (mpdManifestBandwidthType != other.mpdManifestBandwidthType) return false
        if (mpdProfile != other.mpdProfile) return false
        if (ptsOffsetHandlingForBFrames != other.ptsOffsetHandlingForBFrames) return false
        if (segmentControl != other.segmentControl) return false
        if (segmentLength != other.segmentLength) return false
        if (segmentLengthControl != other.segmentLengthControl) return false
        if (streamInfResolution != other.streamInfResolution) return false
        if (targetDurationCompatibilityMode != other.targetDurationCompatibilityMode) return false
        if (videoCompositionOffsets != other.videoCompositionOffsets) return false
        if (writeDashManifest != other.writeDashManifest) return false
        if (writeHlsManifest != other.writeHlsManifest) return false
        if (writeSegmentTimelineInRepresentation != other.writeSegmentTimelineInRepresentation) return false

        return true
    }

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

    public class Builder {
        /**
         * By default, the service creates one top-level .m3u8 HLS manifest and one top -level .mpd DASH manifest for each CMAF output group in your job. These default manifests reference every output in the output group. To create additional top-level manifests that reference a subset of the outputs in the output group, specify a list of them here. For each additional manifest that you specify, the service creates one HLS manifest and one DASH manifest.
         */
        public var additionalManifests: List? = null
        /**
         * A partial URI prefix that will be put in the manifest file at the top level BaseURL element. Can be used if streams are delivered from a different URL than the manifest file.
         */
        public var baseUrl: kotlin.String? = null
        /**
         * Disable this setting only when your workflow requires the #EXT-X-ALLOW-CACHE:no tag. Otherwise, keep the default value Enabled and control caching in your video distribution set up. For example, use the Cache-Control http header.
         */
        public var clientCache: aws.sdk.kotlin.services.mediaconvert.model.CmafClientCache? = null
        /**
         * Specification to use (RFC-6381 or the default RFC-4281) during m3u8 playlist generation.
         */
        public var codecSpecification: aws.sdk.kotlin.services.mediaconvert.model.CmafCodecSpecification? = null
        /**
         * Specify how MediaConvert writes SegmentTimeline in your output DASH manifest. To write a SegmentTimeline in each video Representation: Keep the default value, Basic. To write a common SegmentTimeline in the video AdaptationSet: Choose Compact. Note that MediaConvert will still write a SegmentTimeline in any Representation that does not share a common timeline. To write a video AdaptationSet for each different output framerate, and a common SegmentTimeline in each AdaptationSet: Choose Distinct.
         */
        public var dashManifestStyle: aws.sdk.kotlin.services.mediaconvert.model.DashManifestStyle? = null
        /**
         * Use Destination to specify the S3 output location and the output filename base. Destination accepts format identifiers. If you do not specify the base filename in the URI, the service will use the filename of the input file. If your job has multiple inputs, the service uses the filename of the first input file.
         */
        public var destination: kotlin.String? = null
        /**
         * Settings associated with the destination. Will vary based on the type of destination
         */
        public var destinationSettings: aws.sdk.kotlin.services.mediaconvert.model.DestinationSettings? = null
        /**
         * DRM settings.
         */
        public var encryption: aws.sdk.kotlin.services.mediaconvert.model.CmafEncryptionSettings? = null
        /**
         * Specify the length, in whole seconds, of the mp4 fragments. When you don't specify a value, MediaConvert defaults to 2. Related setting: Use Fragment length control to specify whether the encoder enforces this value strictly.
         */
        public var fragmentLength: kotlin.Int? = null
        /**
         * Specify whether MediaConvert generates images for trick play. Keep the default value, None, to not generate any images. Choose Thumbnail to generate tiled thumbnails. Choose Thumbnail and full frame to generate tiled thumbnails and full-resolution images of single frames. When you enable Write HLS manifest, MediaConvert creates a child manifest for each set of images that you generate and adds corresponding entries to the parent manifest. When you enable Write DASH manifest, MediaConvert adds an entry in the .mpd manifest for each set of images that you generate. A common application for these images is Roku trick mode. The thumbnails and full-frame images that MediaConvert creates with this feature are compatible with this Roku specification: https://developer.roku.com/docs/developer-program/media-playback/trick-mode/hls-and-dash.md
         */
        public var imageBasedTrickPlay: aws.sdk.kotlin.services.mediaconvert.model.CmafImageBasedTrickPlay? = null
        /**
         * Tile and thumbnail settings applicable when imageBasedTrickPlay is ADVANCED
         */
        public var imageBasedTrickPlaySettings: aws.sdk.kotlin.services.mediaconvert.model.CmafImageBasedTrickPlaySettings? = null
        /**
         * When set to GZIP, compresses HLS playlist.
         */
        public var manifestCompression: aws.sdk.kotlin.services.mediaconvert.model.CmafManifestCompression? = null
        /**
         * Indicates whether the output manifest should use floating point values for segment duration.
         */
        public var manifestDurationFormat: aws.sdk.kotlin.services.mediaconvert.model.CmafManifestDurationFormat? = null
        /**
         * Minimum time of initially buffered media that is needed to ensure smooth playout.
         */
        public var minBufferTime: kotlin.Int? = null
        /**
         * Keep this setting at the default value of 0, unless you are troubleshooting a problem with how devices play back the end of your video asset. If you know that player devices are hanging on the final segment of your video because the length of your final segment is too short, use this setting to specify a minimum final segment length, in seconds. Choose a value that is greater than or equal to 1 and less than your segment length. When you specify a value for this setting, the encoder will combine any final segment that is shorter than the length that you specify with the previous segment. For example, your segment length is 3 seconds and your final segment is .5 seconds without a minimum final segment length; when you set the minimum final segment length to 1, your final segment is 3.5 seconds.
         */
        public var minFinalSegmentLength: kotlin.Double? = null
        /**
         * Specify how the value for bandwidth is determined for each video Representation in your output MPD manifest. We recommend that you choose a MPD manifest bandwidth type that is compatible with your downstream player configuration. Max: Use the same value that you specify for Max bitrate in the video output, in bits per second. Average: Use the calculated average bitrate of the encoded video output, in bits per second.
         */
        public var mpdManifestBandwidthType: aws.sdk.kotlin.services.mediaconvert.model.CmafMpdManifestBandwidthType? = null
        /**
         * Specify whether your DASH profile is on-demand or main. When you choose Main profile, the service signals urn:mpeg:dash:profile:isoff-main:2011 in your .mpd DASH manifest. When you choose On-demand, the service signals urn:mpeg:dash:profile:isoff-on-demand:2011 in your .mpd. When you choose On-demand, you must also set the output group setting Segment control to Single file.
         */
        public var mpdProfile: aws.sdk.kotlin.services.mediaconvert.model.CmafMpdProfile? = null
        /**
         * Use this setting only when your output video stream has B-frames, which causes the initial presentation time stamp (PTS) to be offset from the initial decode time stamp (DTS). Specify how MediaConvert handles PTS when writing time stamps in output DASH manifests. Choose Match initial PTS when you want MediaConvert to use the initial PTS as the first time stamp in the manifest. Choose Zero-based to have MediaConvert ignore the initial PTS in the video stream and instead write the initial time stamp as zero in the manifest. For outputs that don't have B-frames, the time stamps in your DASH manifests start at zero regardless of your choice here.
         */
        public var ptsOffsetHandlingForBFrames: aws.sdk.kotlin.services.mediaconvert.model.CmafPtsOffsetHandlingForBFrames? = null
        /**
         * When set to SINGLE_FILE, a single output file is generated, which is internally segmented using the Fragment Length and Segment Length. When set to SEGMENTED_FILES, separate segment files will be created.
         */
        public var segmentControl: aws.sdk.kotlin.services.mediaconvert.model.CmafSegmentControl? = null
        /**
         * Specify the length, in whole seconds, of each segment. When you don't specify a value, MediaConvert defaults to 10. Related settings: Use Segment length control to specify whether the encoder enforces this value strictly. Use Segment control to specify whether MediaConvert creates separate segment files or one content file that has metadata to mark the segment boundaries.
         */
        public var segmentLength: kotlin.Int? = null
        /**
         * Specify how you want MediaConvert to determine the segment length. Choose Exact to have the encoder use the exact length that you specify with the setting Segment length. This might result in extra I-frames. Choose Multiple of GOP to have the encoder round up the segment lengths to match the next GOP boundary.
         */
        public var segmentLengthControl: aws.sdk.kotlin.services.mediaconvert.model.CmafSegmentLengthControl? = null
        /**
         * Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF tag of variant manifest.
         */
        public var streamInfResolution: aws.sdk.kotlin.services.mediaconvert.model.CmafStreamInfResolution? = null
        /**
         * When set to LEGACY, the segment target duration is always rounded up to the nearest integer value above its current value in seconds. When set to SPEC\\_COMPLIANT, the segment target duration is rounded up to the nearest integer value if fraction seconds are greater than or equal to 0.5 (>= 0.5) and rounded down if less than 0.5 (< 0.5). You may need to use LEGACY if your client needs to ensure that the target duration is always longer than the actual duration of the segment. Some older players may experience interrupted playback when the actual duration of a track in a segment is longer than the target duration.
         */
        public var targetDurationCompatibilityMode: aws.sdk.kotlin.services.mediaconvert.model.CmafTargetDurationCompatibilityMode? = null
        /**
         * Specify the video sample composition time offset mode in the output fMP4 TRUN box. For wider player compatibility, set Video composition offsets to Unsigned or leave blank. The earliest presentation time may be greater than zero, and sample composition time offsets will increment using unsigned integers. For strict fMP4 video and audio timing, set Video composition offsets to Signed. The earliest presentation time will be equal to zero, and sample composition time offsets will increment using signed integers.
         */
        public var videoCompositionOffsets: aws.sdk.kotlin.services.mediaconvert.model.CmafVideoCompositionOffsets? = null
        /**
         * When set to ENABLED, a DASH MPD manifest will be generated for this output.
         */
        public var writeDashManifest: aws.sdk.kotlin.services.mediaconvert.model.CmafWriteDashManifest? = null
        /**
         * When set to ENABLED, an Apple HLS manifest will be generated for this output.
         */
        public var writeHlsManifest: aws.sdk.kotlin.services.mediaconvert.model.CmafWriteHlsManifest? = null
        /**
         * When you enable Precise segment duration in DASH manifests, your DASH manifest shows precise segment durations. The segment duration information appears inside the SegmentTimeline element, inside SegmentTemplate at the Representation level. When this feature isn't enabled, the segment durations in your DASH manifest are approximate. The segment duration information appears in the duration attribute of the SegmentTemplate element.
         */
        public var writeSegmentTimelineInRepresentation: aws.sdk.kotlin.services.mediaconvert.model.CmafWriteSegmentTimelineInRepresentation? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.mediaconvert.model.CmafGroupSettings) : this() {
            this.additionalManifests = x.additionalManifests
            this.baseUrl = x.baseUrl
            this.clientCache = x.clientCache
            this.codecSpecification = x.codecSpecification
            this.dashManifestStyle = x.dashManifestStyle
            this.destination = x.destination
            this.destinationSettings = x.destinationSettings
            this.encryption = x.encryption
            this.fragmentLength = x.fragmentLength
            this.imageBasedTrickPlay = x.imageBasedTrickPlay
            this.imageBasedTrickPlaySettings = x.imageBasedTrickPlaySettings
            this.manifestCompression = x.manifestCompression
            this.manifestDurationFormat = x.manifestDurationFormat
            this.minBufferTime = x.minBufferTime
            this.minFinalSegmentLength = x.minFinalSegmentLength
            this.mpdManifestBandwidthType = x.mpdManifestBandwidthType
            this.mpdProfile = x.mpdProfile
            this.ptsOffsetHandlingForBFrames = x.ptsOffsetHandlingForBFrames
            this.segmentControl = x.segmentControl
            this.segmentLength = x.segmentLength
            this.segmentLengthControl = x.segmentLengthControl
            this.streamInfResolution = x.streamInfResolution
            this.targetDurationCompatibilityMode = x.targetDurationCompatibilityMode
            this.videoCompositionOffsets = x.videoCompositionOffsets
            this.writeDashManifest = x.writeDashManifest
            this.writeHlsManifest = x.writeHlsManifest
            this.writeSegmentTimelineInRepresentation = x.writeSegmentTimelineInRepresentation
        }

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

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

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

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy