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

commonMain.aws.sdk.kotlin.services.mediapackage.model.DashPackage.kt Maven / Gradle / Ivy

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

package aws.sdk.kotlin.services.mediapackage.model

import aws.smithy.kotlin.runtime.SdkDsl

/**
 * A Dynamic Adaptive Streaming over HTTP (DASH) packaging configuration.
 */
public class DashPackage private constructor(builder: Builder) {
    /**
     * A list of SCTE-35 message types that are treated as ad markers in the output. If empty, no ad markers are output. Specify multiple items to create ad markers for all of the included message types.
     */
    public val adTriggers: List? = builder.adTriggers
    /**
     * This setting allows the delivery restriction flags on SCTE-35 segmentation descriptors to determine whether a message signals an ad. Choosing "NONE" means no SCTE-35 messages become ads. Choosing "RESTRICTED" means SCTE-35 messages of the types specified in AdTriggers that contain delivery restrictions will be treated as ads. Choosing "UNRESTRICTED" means SCTE-35 messages of the types specified in AdTriggers that do not contain delivery restrictions will be treated as ads. Choosing "BOTH" means all SCTE-35 messages of the types specified in AdTriggers will be treated as ads. Note that Splice Insert messages do not have these flags and are always treated as ads if specified in AdTriggers.
     */
    public val adsOnDeliveryRestrictions: aws.sdk.kotlin.services.mediapackage.model.AdsOnDeliveryRestrictions? = builder.adsOnDeliveryRestrictions
    /**
     * A Dynamic Adaptive Streaming over HTTP (DASH) encryption configuration.
     */
    public val encryption: aws.sdk.kotlin.services.mediapackage.model.DashEncryption? = builder.encryption
    /**
     * When enabled, an I-Frame only stream will be included in the output.
     */
    public val includeIframeOnlyStream: kotlin.Boolean? = builder.includeIframeOnlyStream
    /**
     * Determines the position of some tags in the Media Presentation Description (MPD). When set to FULL, elements like SegmentTemplate and ContentProtection are included in each Representation. When set to COMPACT, duplicate elements are combined and presented at the AdaptationSet level. When set to DRM_TOP_LEVEL_COMPACT, content protection elements are placed the MPD level and referenced at the AdaptationSet level.
     */
    public val manifestLayout: aws.sdk.kotlin.services.mediapackage.model.ManifestLayout? = builder.manifestLayout
    /**
     * Time window (in seconds) contained in each manifest.
     */
    public val manifestWindowSeconds: kotlin.Int? = builder.manifestWindowSeconds
    /**
     * Minimum duration (in seconds) that a player will buffer media before starting the presentation.
     */
    public val minBufferTimeSeconds: kotlin.Int? = builder.minBufferTimeSeconds
    /**
     * Minimum duration (in seconds) between potential changes to the Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD).
     */
    public val minUpdatePeriodSeconds: kotlin.Int? = builder.minUpdatePeriodSeconds
    /**
     * A list of triggers that controls when the outgoing Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD) will be partitioned into multiple periods. If empty, the content will not be partitioned into more than one period. If the list contains "ADS", new periods will be created where the Channel source contains SCTE-35 ad markers.
     */
    public val periodTriggers: List? = builder.periodTriggers
    /**
     * The Dynamic Adaptive Streaming over HTTP (DASH) profile type. When set to "HBBTV_1_5", HbbTV 1.5 compliant output is enabled. When set to "DVB-DASH_2014", DVB-DASH 2014 compliant output is enabled.
     */
    public val profile: aws.sdk.kotlin.services.mediapackage.model.Profile? = builder.profile
    /**
     * Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.
     */
    public val segmentDurationSeconds: kotlin.Int? = builder.segmentDurationSeconds
    /**
     * Determines the type of SegmentTemplate included in the Media Presentation Description (MPD). When set to NUMBER_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Number$ media URLs. When set to TIME_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Time$ media URLs. When set to NUMBER_WITH_DURATION, only a duration is included in each SegmentTemplate, with $Number$ media URLs.
     */
    public val segmentTemplateFormat: aws.sdk.kotlin.services.mediapackage.model.SegmentTemplateFormat? = builder.segmentTemplateFormat
    /**
     * A StreamSelection configuration.
     */
    public val streamSelection: aws.sdk.kotlin.services.mediapackage.model.StreamSelection? = builder.streamSelection
    /**
     * Duration (in seconds) to delay live content before presentation.
     */
    public val suggestedPresentationDelaySeconds: kotlin.Int? = builder.suggestedPresentationDelaySeconds
    /**
     * Determines the type of UTCTiming included in the Media Presentation Description (MPD)
     */
    public val utcTiming: aws.sdk.kotlin.services.mediapackage.model.UtcTiming? = builder.utcTiming
    /**
     * Specifies the value attribute of the UTCTiming field when utcTiming is set to HTTP-ISO, HTTP-HEAD or HTTP-XSDATE
     */
    public val utcTimingUri: kotlin.String? = builder.utcTimingUri

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

    override fun toString(): kotlin.String = buildString {
        append("DashPackage(")
        append("adTriggers=$adTriggers,")
        append("adsOnDeliveryRestrictions=$adsOnDeliveryRestrictions,")
        append("encryption=$encryption,")
        append("includeIframeOnlyStream=$includeIframeOnlyStream,")
        append("manifestLayout=$manifestLayout,")
        append("manifestWindowSeconds=$manifestWindowSeconds,")
        append("minBufferTimeSeconds=$minBufferTimeSeconds,")
        append("minUpdatePeriodSeconds=$minUpdatePeriodSeconds,")
        append("periodTriggers=$periodTriggers,")
        append("profile=$profile,")
        append("segmentDurationSeconds=$segmentDurationSeconds,")
        append("segmentTemplateFormat=$segmentTemplateFormat,")
        append("streamSelection=$streamSelection,")
        append("suggestedPresentationDelaySeconds=$suggestedPresentationDelaySeconds,")
        append("utcTiming=$utcTiming,")
        append("utcTimingUri=$utcTimingUri")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = adTriggers?.hashCode() ?: 0
        result = 31 * result + (adsOnDeliveryRestrictions?.hashCode() ?: 0)
        result = 31 * result + (encryption?.hashCode() ?: 0)
        result = 31 * result + (includeIframeOnlyStream?.hashCode() ?: 0)
        result = 31 * result + (manifestLayout?.hashCode() ?: 0)
        result = 31 * result + (manifestWindowSeconds ?: 0)
        result = 31 * result + (minBufferTimeSeconds ?: 0)
        result = 31 * result + (minUpdatePeriodSeconds ?: 0)
        result = 31 * result + (periodTriggers?.hashCode() ?: 0)
        result = 31 * result + (profile?.hashCode() ?: 0)
        result = 31 * result + (segmentDurationSeconds ?: 0)
        result = 31 * result + (segmentTemplateFormat?.hashCode() ?: 0)
        result = 31 * result + (streamSelection?.hashCode() ?: 0)
        result = 31 * result + (suggestedPresentationDelaySeconds ?: 0)
        result = 31 * result + (utcTiming?.hashCode() ?: 0)
        result = 31 * result + (utcTimingUri?.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 DashPackage

        if (adTriggers != other.adTriggers) return false
        if (adsOnDeliveryRestrictions != other.adsOnDeliveryRestrictions) return false
        if (encryption != other.encryption) return false
        if (includeIframeOnlyStream != other.includeIframeOnlyStream) return false
        if (manifestLayout != other.manifestLayout) return false
        if (manifestWindowSeconds != other.manifestWindowSeconds) return false
        if (minBufferTimeSeconds != other.minBufferTimeSeconds) return false
        if (minUpdatePeriodSeconds != other.minUpdatePeriodSeconds) return false
        if (periodTriggers != other.periodTriggers) return false
        if (profile != other.profile) return false
        if (segmentDurationSeconds != other.segmentDurationSeconds) return false
        if (segmentTemplateFormat != other.segmentTemplateFormat) return false
        if (streamSelection != other.streamSelection) return false
        if (suggestedPresentationDelaySeconds != other.suggestedPresentationDelaySeconds) return false
        if (utcTiming != other.utcTiming) return false
        if (utcTimingUri != other.utcTimingUri) return false

        return true
    }

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

    @SdkDsl
    public class Builder {
        /**
         * A list of SCTE-35 message types that are treated as ad markers in the output. If empty, no ad markers are output. Specify multiple items to create ad markers for all of the included message types.
         */
        public var adTriggers: List? = null
        /**
         * This setting allows the delivery restriction flags on SCTE-35 segmentation descriptors to determine whether a message signals an ad. Choosing "NONE" means no SCTE-35 messages become ads. Choosing "RESTRICTED" means SCTE-35 messages of the types specified in AdTriggers that contain delivery restrictions will be treated as ads. Choosing "UNRESTRICTED" means SCTE-35 messages of the types specified in AdTriggers that do not contain delivery restrictions will be treated as ads. Choosing "BOTH" means all SCTE-35 messages of the types specified in AdTriggers will be treated as ads. Note that Splice Insert messages do not have these flags and are always treated as ads if specified in AdTriggers.
         */
        public var adsOnDeliveryRestrictions: aws.sdk.kotlin.services.mediapackage.model.AdsOnDeliveryRestrictions? = null
        /**
         * A Dynamic Adaptive Streaming over HTTP (DASH) encryption configuration.
         */
        public var encryption: aws.sdk.kotlin.services.mediapackage.model.DashEncryption? = null
        /**
         * When enabled, an I-Frame only stream will be included in the output.
         */
        public var includeIframeOnlyStream: kotlin.Boolean? = null
        /**
         * Determines the position of some tags in the Media Presentation Description (MPD). When set to FULL, elements like SegmentTemplate and ContentProtection are included in each Representation. When set to COMPACT, duplicate elements are combined and presented at the AdaptationSet level. When set to DRM_TOP_LEVEL_COMPACT, content protection elements are placed the MPD level and referenced at the AdaptationSet level.
         */
        public var manifestLayout: aws.sdk.kotlin.services.mediapackage.model.ManifestLayout? = null
        /**
         * Time window (in seconds) contained in each manifest.
         */
        public var manifestWindowSeconds: kotlin.Int? = null
        /**
         * Minimum duration (in seconds) that a player will buffer media before starting the presentation.
         */
        public var minBufferTimeSeconds: kotlin.Int? = null
        /**
         * Minimum duration (in seconds) between potential changes to the Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD).
         */
        public var minUpdatePeriodSeconds: kotlin.Int? = null
        /**
         * A list of triggers that controls when the outgoing Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD) will be partitioned into multiple periods. If empty, the content will not be partitioned into more than one period. If the list contains "ADS", new periods will be created where the Channel source contains SCTE-35 ad markers.
         */
        public var periodTriggers: List? = null
        /**
         * The Dynamic Adaptive Streaming over HTTP (DASH) profile type. When set to "HBBTV_1_5", HbbTV 1.5 compliant output is enabled. When set to "DVB-DASH_2014", DVB-DASH 2014 compliant output is enabled.
         */
        public var profile: aws.sdk.kotlin.services.mediapackage.model.Profile? = null
        /**
         * Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.
         */
        public var segmentDurationSeconds: kotlin.Int? = null
        /**
         * Determines the type of SegmentTemplate included in the Media Presentation Description (MPD). When set to NUMBER_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Number$ media URLs. When set to TIME_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Time$ media URLs. When set to NUMBER_WITH_DURATION, only a duration is included in each SegmentTemplate, with $Number$ media URLs.
         */
        public var segmentTemplateFormat: aws.sdk.kotlin.services.mediapackage.model.SegmentTemplateFormat? = null
        /**
         * A StreamSelection configuration.
         */
        public var streamSelection: aws.sdk.kotlin.services.mediapackage.model.StreamSelection? = null
        /**
         * Duration (in seconds) to delay live content before presentation.
         */
        public var suggestedPresentationDelaySeconds: kotlin.Int? = null
        /**
         * Determines the type of UTCTiming included in the Media Presentation Description (MPD)
         */
        public var utcTiming: aws.sdk.kotlin.services.mediapackage.model.UtcTiming? = null
        /**
         * Specifies the value attribute of the UTCTiming field when utcTiming is set to HTTP-ISO, HTTP-HEAD or HTTP-XSDATE
         */
        public var utcTimingUri: kotlin.String? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.mediapackage.model.DashPackage) : this() {
            this.adTriggers = x.adTriggers
            this.adsOnDeliveryRestrictions = x.adsOnDeliveryRestrictions
            this.encryption = x.encryption
            this.includeIframeOnlyStream = x.includeIframeOnlyStream
            this.manifestLayout = x.manifestLayout
            this.manifestWindowSeconds = x.manifestWindowSeconds
            this.minBufferTimeSeconds = x.minBufferTimeSeconds
            this.minUpdatePeriodSeconds = x.minUpdatePeriodSeconds
            this.periodTriggers = x.periodTriggers
            this.profile = x.profile
            this.segmentDurationSeconds = x.segmentDurationSeconds
            this.segmentTemplateFormat = x.segmentTemplateFormat
            this.streamSelection = x.streamSelection
            this.suggestedPresentationDelaySeconds = x.suggestedPresentationDelaySeconds
            this.utcTiming = x.utcTiming
            this.utcTimingUri = x.utcTimingUri
        }

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

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

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy