aws-sdk-ivs 1.110.0

AWS SDK for Amazon Interactive Video Service
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>Object specifying a channel.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct Channel {
    /// <p>Channel ARN.</p>
    pub arn: ::std::option::Option<::std::string::String>,
    /// <p>Channel name.</p>
    pub name: ::std::option::Option<::std::string::String>,
    /// <p>Channel latency mode. Use <code>NORMAL</code> to broadcast and deliver live video up to Full HD. Use <code>LOW</code> for near-real-time interaction with viewers. Default: <code>LOW</code>.</p>
    pub latency_mode: ::std::option::Option<crate::types::ChannelLatencyMode>,
    /// <p>Channel type, which determines the allowable resolution and bitrate. <i>If you exceed the allowable input resolution or bitrate, the stream probably will disconnect immediately.</i> Default: <code>STANDARD</code>. For details, see <a href="https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/channel-types.html">Channel Types</a>.</p>
    pub r#type: ::std::option::Option<crate::types::ChannelType>,
    /// <p>Recording-configuration ARN. A valid ARN value here both specifies the ARN and enables recording. Default: "" (empty string, recording is disabled).</p>
    pub recording_configuration_arn: ::std::option::Option<::std::string::String>,
    /// <p>Channel ingest endpoint, part of the definition of an ingest server, used when you set up streaming software.</p>
    pub ingest_endpoint: ::std::option::Option<::std::string::String>,
    /// <p>Channel playback URL.</p>
    pub playback_url: ::std::option::Option<::std::string::String>,
    /// <p>Whether the channel is private (enabled for playback authorization). Default: <code>false</code>.</p>
    pub authorized: bool,
    /// <p>Tags attached to the resource. Array of 1-50 maps, each of the form <code>string:string (key:value)</code>. See <a href="https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html">Best practices and strategies</a> in <i>Tagging Amazon Web Services Resources and Tag Editor</i> for details, including restrictions that apply to tags and "Tag naming limits and requirements"; Amazon IVS has no service-specific constraints beyond what is documented there.</p>
    pub tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    /// <p>Whether the channel allows insecure RTMP ingest. Default: <code>false</code>.</p>
    pub insecure_ingest: bool,
    /// <p>Optional transcode preset for the channel. This is selectable only for <code>ADVANCED_HD</code> and <code>ADVANCED_SD</code> channel types. For those channel types, the default <code>preset</code> is <code>HIGHER_BANDWIDTH_DELIVERY</code>. For other channel types (<code>BASIC</code> and <code>STANDARD</code>), <code>preset</code> is the empty string (<code>""</code>).</p>
    pub preset: ::std::option::Option<crate::types::TranscodePreset>,
    /// <p>Specifies the endpoint and optional passphrase for streaming with the SRT protocol.</p>
    pub srt: ::std::option::Option<crate::types::Srt>,
    /// <p>Playback-restriction-policy ARN. A valid ARN value here both specifies the ARN and enables playback restriction. Default: "" (empty string, no playback restriction policy is applied).</p>
    pub playback_restriction_policy_arn: ::std::option::Option<::std::string::String>,
    /// <p>Object specifying multitrack input configuration. Default: no multitrack input configuration is specified.</p>
    pub multitrack_input_configuration: ::std::option::Option<crate::types::MultitrackInputConfiguration>,
    /// <p>Indicates which content-packaging format is used (MPEG-TS or fMP4). If <code>multitrackInputConfiguration</code> is specified and <code>enabled</code> is <code>true</code>, then <code>containerFormat</code> is required and must be set to <code>FRAGMENTED_MP4</code>. Otherwise, <code>containerFormat</code> may be set to <code>TS</code> or <code>FRAGMENTED_MP4</code>. Default: <code>TS</code>.</p>
    pub container_format: ::std::option::Option<crate::types::ContainerFormat>,
    /// <p>ARN of the ad configuration associated with the channel.</p>
    pub ad_configuration_arn: ::std::option::Option<::std::string::String>,
}
impl Channel {
    /// <p>Channel ARN.</p>
    pub fn arn(&self) -> ::std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>Channel name.</p>
    pub fn name(&self) -> ::std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>Channel latency mode. Use <code>NORMAL</code> to broadcast and deliver live video up to Full HD. Use <code>LOW</code> for near-real-time interaction with viewers. Default: <code>LOW</code>.</p>
    pub fn latency_mode(&self) -> ::std::option::Option<&crate::types::ChannelLatencyMode> {
        self.latency_mode.as_ref()
    }
    /// <p>Channel type, which determines the allowable resolution and bitrate. <i>If you exceed the allowable input resolution or bitrate, the stream probably will disconnect immediately.</i> Default: <code>STANDARD</code>. For details, see <a href="https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/channel-types.html">Channel Types</a>.</p>
    pub fn r#type(&self) -> ::std::option::Option<&crate::types::ChannelType> {
        self.r#type.as_ref()
    }
    /// <p>Recording-configuration ARN. A valid ARN value here both specifies the ARN and enables recording. Default: "" (empty string, recording is disabled).</p>
    pub fn recording_configuration_arn(&self) -> ::std::option::Option<&str> {
        self.recording_configuration_arn.as_deref()
    }
    /// <p>Channel ingest endpoint, part of the definition of an ingest server, used when you set up streaming software.</p>
    pub fn ingest_endpoint(&self) -> ::std::option::Option<&str> {
        self.ingest_endpoint.as_deref()
    }
    /// <p>Channel playback URL.</p>
    pub fn playback_url(&self) -> ::std::option::Option<&str> {
        self.playback_url.as_deref()
    }
    /// <p>Whether the channel is private (enabled for playback authorization). Default: <code>false</code>.</p>
    pub fn authorized(&self) -> bool {
        self.authorized
    }
    /// <p>Tags attached to the resource. Array of 1-50 maps, each of the form <code>string:string (key:value)</code>. See <a href="https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html">Best practices and strategies</a> in <i>Tagging Amazon Web Services Resources and Tag Editor</i> for details, including restrictions that apply to tags and "Tag naming limits and requirements"; Amazon IVS has no service-specific constraints beyond what is documented there.</p>
    pub fn tags(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        self.tags.as_ref()
    }
    /// <p>Whether the channel allows insecure RTMP ingest. Default: <code>false</code>.</p>
    pub fn insecure_ingest(&self) -> bool {
        self.insecure_ingest
    }
    /// <p>Optional transcode preset for the channel. This is selectable only for <code>ADVANCED_HD</code> and <code>ADVANCED_SD</code> channel types. For those channel types, the default <code>preset</code> is <code>HIGHER_BANDWIDTH_DELIVERY</code>. For other channel types (<code>BASIC</code> and <code>STANDARD</code>), <code>preset</code> is the empty string (<code>""</code>).</p>
    pub fn preset(&self) -> ::std::option::Option<&crate::types::TranscodePreset> {
        self.preset.as_ref()
    }
    /// <p>Specifies the endpoint and optional passphrase for streaming with the SRT protocol.</p>
    pub fn srt(&self) -> ::std::option::Option<&crate::types::Srt> {
        self.srt.as_ref()
    }
    /// <p>Playback-restriction-policy ARN. A valid ARN value here both specifies the ARN and enables playback restriction. Default: "" (empty string, no playback restriction policy is applied).</p>
    pub fn playback_restriction_policy_arn(&self) -> ::std::option::Option<&str> {
        self.playback_restriction_policy_arn.as_deref()
    }
    /// <p>Object specifying multitrack input configuration. Default: no multitrack input configuration is specified.</p>
    pub fn multitrack_input_configuration(&self) -> ::std::option::Option<&crate::types::MultitrackInputConfiguration> {
        self.multitrack_input_configuration.as_ref()
    }
    /// <p>Indicates which content-packaging format is used (MPEG-TS or fMP4). If <code>multitrackInputConfiguration</code> is specified and <code>enabled</code> is <code>true</code>, then <code>containerFormat</code> is required and must be set to <code>FRAGMENTED_MP4</code>. Otherwise, <code>containerFormat</code> may be set to <code>TS</code> or <code>FRAGMENTED_MP4</code>. Default: <code>TS</code>.</p>
    pub fn container_format(&self) -> ::std::option::Option<&crate::types::ContainerFormat> {
        self.container_format.as_ref()
    }
    /// <p>ARN of the ad configuration associated with the channel.</p>
    pub fn ad_configuration_arn(&self) -> ::std::option::Option<&str> {
        self.ad_configuration_arn.as_deref()
    }
}
impl Channel {
    /// Creates a new builder-style object to manufacture [`Channel`](crate::types::Channel).
    pub fn builder() -> crate::types::builders::ChannelBuilder {
        crate::types::builders::ChannelBuilder::default()
    }
}

/// A builder for [`Channel`](crate::types::Channel).
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
#[non_exhaustive]
pub struct ChannelBuilder {
    pub(crate) arn: ::std::option::Option<::std::string::String>,
    pub(crate) name: ::std::option::Option<::std::string::String>,
    pub(crate) latency_mode: ::std::option::Option<crate::types::ChannelLatencyMode>,
    pub(crate) r#type: ::std::option::Option<crate::types::ChannelType>,
    pub(crate) recording_configuration_arn: ::std::option::Option<::std::string::String>,
    pub(crate) ingest_endpoint: ::std::option::Option<::std::string::String>,
    pub(crate) playback_url: ::std::option::Option<::std::string::String>,
    pub(crate) authorized: ::std::option::Option<bool>,
    pub(crate) tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    pub(crate) insecure_ingest: ::std::option::Option<bool>,
    pub(crate) preset: ::std::option::Option<crate::types::TranscodePreset>,
    pub(crate) srt: ::std::option::Option<crate::types::Srt>,
    pub(crate) playback_restriction_policy_arn: ::std::option::Option<::std::string::String>,
    pub(crate) multitrack_input_configuration: ::std::option::Option<crate::types::MultitrackInputConfiguration>,
    pub(crate) container_format: ::std::option::Option<crate::types::ContainerFormat>,
    pub(crate) ad_configuration_arn: ::std::option::Option<::std::string::String>,
}
impl ChannelBuilder {
    /// <p>Channel ARN.</p>
    pub fn arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.arn = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>Channel ARN.</p>
    pub fn set_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.arn = input;
        self
    }
    /// <p>Channel ARN.</p>
    pub fn get_arn(&self) -> &::std::option::Option<::std::string::String> {
        &self.arn
    }
    /// <p>Channel name.</p>
    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.name = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>Channel name.</p>
    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.name = input;
        self
    }
    /// <p>Channel name.</p>
    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.name
    }
    /// <p>Channel latency mode. Use <code>NORMAL</code> to broadcast and deliver live video up to Full HD. Use <code>LOW</code> for near-real-time interaction with viewers. Default: <code>LOW</code>.</p>
    pub fn latency_mode(mut self, input: crate::types::ChannelLatencyMode) -> Self {
        self.latency_mode = ::std::option::Option::Some(input);
        self
    }
    /// <p>Channel latency mode. Use <code>NORMAL</code> to broadcast and deliver live video up to Full HD. Use <code>LOW</code> for near-real-time interaction with viewers. Default: <code>LOW</code>.</p>
    pub fn set_latency_mode(mut self, input: ::std::option::Option<crate::types::ChannelLatencyMode>) -> Self {
        self.latency_mode = input;
        self
    }
    /// <p>Channel latency mode. Use <code>NORMAL</code> to broadcast and deliver live video up to Full HD. Use <code>LOW</code> for near-real-time interaction with viewers. Default: <code>LOW</code>.</p>
    pub fn get_latency_mode(&self) -> &::std::option::Option<crate::types::ChannelLatencyMode> {
        &self.latency_mode
    }
    /// <p>Channel type, which determines the allowable resolution and bitrate. <i>If you exceed the allowable input resolution or bitrate, the stream probably will disconnect immediately.</i> Default: <code>STANDARD</code>. For details, see <a href="https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/channel-types.html">Channel Types</a>.</p>
    pub fn r#type(mut self, input: crate::types::ChannelType) -> Self {
        self.r#type = ::std::option::Option::Some(input);
        self
    }
    /// <p>Channel type, which determines the allowable resolution and bitrate. <i>If you exceed the allowable input resolution or bitrate, the stream probably will disconnect immediately.</i> Default: <code>STANDARD</code>. For details, see <a href="https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/channel-types.html">Channel Types</a>.</p>
    pub fn set_type(mut self, input: ::std::option::Option<crate::types::ChannelType>) -> Self {
        self.r#type = input;
        self
    }
    /// <p>Channel type, which determines the allowable resolution and bitrate. <i>If you exceed the allowable input resolution or bitrate, the stream probably will disconnect immediately.</i> Default: <code>STANDARD</code>. For details, see <a href="https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/channel-types.html">Channel Types</a>.</p>
    pub fn get_type(&self) -> &::std::option::Option<crate::types::ChannelType> {
        &self.r#type
    }
    /// <p>Recording-configuration ARN. A valid ARN value here both specifies the ARN and enables recording. Default: "" (empty string, recording is disabled).</p>
    pub fn recording_configuration_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.recording_configuration_arn = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>Recording-configuration ARN. A valid ARN value here both specifies the ARN and enables recording. Default: "" (empty string, recording is disabled).</p>
    pub fn set_recording_configuration_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.recording_configuration_arn = input;
        self
    }
    /// <p>Recording-configuration ARN. A valid ARN value here both specifies the ARN and enables recording. Default: "" (empty string, recording is disabled).</p>
    pub fn get_recording_configuration_arn(&self) -> &::std::option::Option<::std::string::String> {
        &self.recording_configuration_arn
    }
    /// <p>Channel ingest endpoint, part of the definition of an ingest server, used when you set up streaming software.</p>
    pub fn ingest_endpoint(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.ingest_endpoint = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>Channel ingest endpoint, part of the definition of an ingest server, used when you set up streaming software.</p>
    pub fn set_ingest_endpoint(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.ingest_endpoint = input;
        self
    }
    /// <p>Channel ingest endpoint, part of the definition of an ingest server, used when you set up streaming software.</p>
    pub fn get_ingest_endpoint(&self) -> &::std::option::Option<::std::string::String> {
        &self.ingest_endpoint
    }
    /// <p>Channel playback URL.</p>
    pub fn playback_url(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.playback_url = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>Channel playback URL.</p>
    pub fn set_playback_url(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.playback_url = input;
        self
    }
    /// <p>Channel playback URL.</p>
    pub fn get_playback_url(&self) -> &::std::option::Option<::std::string::String> {
        &self.playback_url
    }
    /// <p>Whether the channel is private (enabled for playback authorization). Default: <code>false</code>.</p>
    pub fn authorized(mut self, input: bool) -> Self {
        self.authorized = ::std::option::Option::Some(input);
        self
    }
    /// <p>Whether the channel is private (enabled for playback authorization). Default: <code>false</code>.</p>
    pub fn set_authorized(mut self, input: ::std::option::Option<bool>) -> Self {
        self.authorized = input;
        self
    }
    /// <p>Whether the channel is private (enabled for playback authorization). Default: <code>false</code>.</p>
    pub fn get_authorized(&self) -> &::std::option::Option<bool> {
        &self.authorized
    }
    /// Adds a key-value pair to `tags`.
    ///
    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
    ///
    /// <p>Tags attached to the resource. Array of 1-50 maps, each of the form <code>string:string (key:value)</code>. See <a href="https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html">Best practices and strategies</a> in <i>Tagging Amazon Web Services Resources and Tag Editor</i> for details, including restrictions that apply to tags and "Tag naming limits and requirements"; Amazon IVS has no service-specific constraints beyond what is documented there.</p>
    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
        let mut hash_map = self.tags.unwrap_or_default();
        hash_map.insert(k.into(), v.into());
        self.tags = ::std::option::Option::Some(hash_map);
        self
    }
    /// <p>Tags attached to the resource. Array of 1-50 maps, each of the form <code>string:string (key:value)</code>. See <a href="https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html">Best practices and strategies</a> in <i>Tagging Amazon Web Services Resources and Tag Editor</i> for details, including restrictions that apply to tags and "Tag naming limits and requirements"; Amazon IVS has no service-specific constraints beyond what is documented there.</p>
    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
        self.tags = input;
        self
    }
    /// <p>Tags attached to the resource. Array of 1-50 maps, each of the form <code>string:string (key:value)</code>. See <a href="https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html">Best practices and strategies</a> in <i>Tagging Amazon Web Services Resources and Tag Editor</i> for details, including restrictions that apply to tags and "Tag naming limits and requirements"; Amazon IVS has no service-specific constraints beyond what is documented there.</p>
    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        &self.tags
    }
    /// <p>Whether the channel allows insecure RTMP ingest. Default: <code>false</code>.</p>
    pub fn insecure_ingest(mut self, input: bool) -> Self {
        self.insecure_ingest = ::std::option::Option::Some(input);
        self
    }
    /// <p>Whether the channel allows insecure RTMP ingest. Default: <code>false</code>.</p>
    pub fn set_insecure_ingest(mut self, input: ::std::option::Option<bool>) -> Self {
        self.insecure_ingest = input;
        self
    }
    /// <p>Whether the channel allows insecure RTMP ingest. Default: <code>false</code>.</p>
    pub fn get_insecure_ingest(&self) -> &::std::option::Option<bool> {
        &self.insecure_ingest
    }
    /// <p>Optional transcode preset for the channel. This is selectable only for <code>ADVANCED_HD</code> and <code>ADVANCED_SD</code> channel types. For those channel types, the default <code>preset</code> is <code>HIGHER_BANDWIDTH_DELIVERY</code>. For other channel types (<code>BASIC</code> and <code>STANDARD</code>), <code>preset</code> is the empty string (<code>""</code>).</p>
    pub fn preset(mut self, input: crate::types::TranscodePreset) -> Self {
        self.preset = ::std::option::Option::Some(input);
        self
    }
    /// <p>Optional transcode preset for the channel. This is selectable only for <code>ADVANCED_HD</code> and <code>ADVANCED_SD</code> channel types. For those channel types, the default <code>preset</code> is <code>HIGHER_BANDWIDTH_DELIVERY</code>. For other channel types (<code>BASIC</code> and <code>STANDARD</code>), <code>preset</code> is the empty string (<code>""</code>).</p>
    pub fn set_preset(mut self, input: ::std::option::Option<crate::types::TranscodePreset>) -> Self {
        self.preset = input;
        self
    }
    /// <p>Optional transcode preset for the channel. This is selectable only for <code>ADVANCED_HD</code> and <code>ADVANCED_SD</code> channel types. For those channel types, the default <code>preset</code> is <code>HIGHER_BANDWIDTH_DELIVERY</code>. For other channel types (<code>BASIC</code> and <code>STANDARD</code>), <code>preset</code> is the empty string (<code>""</code>).</p>
    pub fn get_preset(&self) -> &::std::option::Option<crate::types::TranscodePreset> {
        &self.preset
    }
    /// <p>Specifies the endpoint and optional passphrase for streaming with the SRT protocol.</p>
    pub fn srt(mut self, input: crate::types::Srt) -> Self {
        self.srt = ::std::option::Option::Some(input);
        self
    }
    /// <p>Specifies the endpoint and optional passphrase for streaming with the SRT protocol.</p>
    pub fn set_srt(mut self, input: ::std::option::Option<crate::types::Srt>) -> Self {
        self.srt = input;
        self
    }
    /// <p>Specifies the endpoint and optional passphrase for streaming with the SRT protocol.</p>
    pub fn get_srt(&self) -> &::std::option::Option<crate::types::Srt> {
        &self.srt
    }
    /// <p>Playback-restriction-policy ARN. A valid ARN value here both specifies the ARN and enables playback restriction. Default: "" (empty string, no playback restriction policy is applied).</p>
    pub fn playback_restriction_policy_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.playback_restriction_policy_arn = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>Playback-restriction-policy ARN. A valid ARN value here both specifies the ARN and enables playback restriction. Default: "" (empty string, no playback restriction policy is applied).</p>
    pub fn set_playback_restriction_policy_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.playback_restriction_policy_arn = input;
        self
    }
    /// <p>Playback-restriction-policy ARN. A valid ARN value here both specifies the ARN and enables playback restriction. Default: "" (empty string, no playback restriction policy is applied).</p>
    pub fn get_playback_restriction_policy_arn(&self) -> &::std::option::Option<::std::string::String> {
        &self.playback_restriction_policy_arn
    }
    /// <p>Object specifying multitrack input configuration. Default: no multitrack input configuration is specified.</p>
    pub fn multitrack_input_configuration(mut self, input: crate::types::MultitrackInputConfiguration) -> Self {
        self.multitrack_input_configuration = ::std::option::Option::Some(input);
        self
    }
    /// <p>Object specifying multitrack input configuration. Default: no multitrack input configuration is specified.</p>
    pub fn set_multitrack_input_configuration(mut self, input: ::std::option::Option<crate::types::MultitrackInputConfiguration>) -> Self {
        self.multitrack_input_configuration = input;
        self
    }
    /// <p>Object specifying multitrack input configuration. Default: no multitrack input configuration is specified.</p>
    pub fn get_multitrack_input_configuration(&self) -> &::std::option::Option<crate::types::MultitrackInputConfiguration> {
        &self.multitrack_input_configuration
    }
    /// <p>Indicates which content-packaging format is used (MPEG-TS or fMP4). If <code>multitrackInputConfiguration</code> is specified and <code>enabled</code> is <code>true</code>, then <code>containerFormat</code> is required and must be set to <code>FRAGMENTED_MP4</code>. Otherwise, <code>containerFormat</code> may be set to <code>TS</code> or <code>FRAGMENTED_MP4</code>. Default: <code>TS</code>.</p>
    pub fn container_format(mut self, input: crate::types::ContainerFormat) -> Self {
        self.container_format = ::std::option::Option::Some(input);
        self
    }
    /// <p>Indicates which content-packaging format is used (MPEG-TS or fMP4). If <code>multitrackInputConfiguration</code> is specified and <code>enabled</code> is <code>true</code>, then <code>containerFormat</code> is required and must be set to <code>FRAGMENTED_MP4</code>. Otherwise, <code>containerFormat</code> may be set to <code>TS</code> or <code>FRAGMENTED_MP4</code>. Default: <code>TS</code>.</p>
    pub fn set_container_format(mut self, input: ::std::option::Option<crate::types::ContainerFormat>) -> Self {
        self.container_format = input;
        self
    }
    /// <p>Indicates which content-packaging format is used (MPEG-TS or fMP4). If <code>multitrackInputConfiguration</code> is specified and <code>enabled</code> is <code>true</code>, then <code>containerFormat</code> is required and must be set to <code>FRAGMENTED_MP4</code>. Otherwise, <code>containerFormat</code> may be set to <code>TS</code> or <code>FRAGMENTED_MP4</code>. Default: <code>TS</code>.</p>
    pub fn get_container_format(&self) -> &::std::option::Option<crate::types::ContainerFormat> {
        &self.container_format
    }
    /// <p>ARN of the ad configuration associated with the channel.</p>
    pub fn ad_configuration_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.ad_configuration_arn = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>ARN of the ad configuration associated with the channel.</p>
    pub fn set_ad_configuration_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.ad_configuration_arn = input;
        self
    }
    /// <p>ARN of the ad configuration associated with the channel.</p>
    pub fn get_ad_configuration_arn(&self) -> &::std::option::Option<::std::string::String> {
        &self.ad_configuration_arn
    }
    /// Consumes the builder and constructs a [`Channel`](crate::types::Channel).
    pub fn build(self) -> crate::types::Channel {
        crate::types::Channel {
            arn: self.arn,
            name: self.name,
            latency_mode: self.latency_mode,
            r#type: self.r#type,
            recording_configuration_arn: self.recording_configuration_arn,
            ingest_endpoint: self.ingest_endpoint,
            playback_url: self.playback_url,
            authorized: self.authorized.unwrap_or_default(),
            tags: self.tags,
            insecure_ingest: self.insecure_ingest.unwrap_or_default(),
            preset: self.preset,
            srt: self.srt,
            playback_restriction_policy_arn: self.playback_restriction_policy_arn,
            multitrack_input_configuration: self.multitrack_input_configuration,
            container_format: self.container_format,
            ad_configuration_arn: self.ad_configuration_arn,
        }
    }
}