<gh_stars>0// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;

namespace TencentCloudIAC.PulumiPackage.Tencentcloud.Mps
{
    /// <summary>
    /// Provides a resource to create a mps adaptive_dynamic_streaming_template
    /// 
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using Pulumi;
    /// using Tencentcloud = TencentCloudIAC.PulumiPackage.Tencentcloud;
    /// 
    /// class MyStack : Stack
    /// {
    ///     public MyStack()
    ///     {
    ///         var adaptiveDynamicStreamingTemplate = new Tencentcloud.Mps.AdaptiveDynamicStreamingTemplate("adaptiveDynamicStreamingTemplate", new Tencentcloud.Mps.AdaptiveDynamicStreamingTemplateArgs
    ///         {
    ///             Comment = "terrraform test",
    ///             DisableHigherVideoBitrate = 0,
    ///             DisableHigherVideoResolution = 1,
    ///             Format = "HLS",
    ///             StreamInfos = 
    ///             {
    ///                 new Tencentcloud.Mps.Inputs.AdaptiveDynamicStreamingTemplateStreamInfoArgs
    ///                 {
    ///                     Audio = new Tencentcloud.Mps.Inputs.AdaptiveDynamicStreamingTemplateStreamInfoAudioArgs
    ///                     {
    ///                         AudioChannel = 1,
    ///                         Bitrate = 55,
    ///                         Codec = "libmp3lame",
    ///                         SampleRate = 32000,
    ///                     },
    ///                     RemoveAudio = 0,
    ///                     RemoveVideo = 0,
    ///                     Video = new Tencentcloud.Mps.Inputs.AdaptiveDynamicStreamingTemplateStreamInfoVideoArgs
    ///                     {
    ///                         Bitrate = 245,
    ///                         Codec = "libx264",
    ///                         FillType = "black",
    ///                         Fps = 30,
    ///                         Gop = 0,
    ///                         Height = 135,
    ///                         ResolutionAdaptive = "open",
    ///                         Vcrf = 0,
    ///                         Width = 145,
    ///                     },
    ///                 },
    ///                 new Tencentcloud.Mps.Inputs.AdaptiveDynamicStreamingTemplateStreamInfoArgs
    ///                 {
    ///                     Audio = new Tencentcloud.Mps.Inputs.AdaptiveDynamicStreamingTemplateStreamInfoAudioArgs
    ///                     {
    ///                         AudioChannel = 2,
    ///                         Bitrate = 60,
    ///                         Codec = "libfdk_aac",
    ///                         SampleRate = 32000,
    ///                     },
    ///                     RemoveAudio = 0,
    ///                     RemoveVideo = 0,
    ///                     Video = new Tencentcloud.Mps.Inputs.AdaptiveDynamicStreamingTemplateStreamInfoVideoArgs
    ///                     {
    ///                         Bitrate = 400,
    ///                         Codec = "libx264",
    ///                         FillType = "black",
    ///                         Fps = 40,
    ///                         Gop = 0,
    ///                         Height = 150,
    ///                         ResolutionAdaptive = "open",
    ///                         Vcrf = 0,
    ///                         Width = 160,
    ///                     },
    ///                 },
    ///             },
    ///         });
    ///     }
    /// 
    /// }
    /// ```
    /// 
    /// ## Import
    /// 
    /// mps adaptive_dynamic_streaming_template can be imported using the id, e.g.
    /// 
    /// ```sh
    ///  $ pulumi import tencentcloud:Mps/adaptiveDynamicStreamingTemplate:AdaptiveDynamicStreamingTemplate adaptive_dynamic_streaming_template adaptive_dynamic_streaming_template_id
    /// ```
    /// </summary>
    [TencentcloudResourceType("tencentcloud:Mps/adaptiveDynamicStreamingTemplate:AdaptiveDynamicStreamingTemplate")]
    public partial class AdaptiveDynamicStreamingTemplate : Pulumi.CustomResource
    {
        /// <summary>
        /// Template description information, length limit: 256 characters.
        /// </summary>
        [Output("comment")]
        public Output<string?> Comment { get; private set; } = null!;

        /// <summary>
        /// Whether to prohibit video from low bit rate to high bit rate, value range:0: no.1: yes.Default value: 0.
        /// </summary>
        [Output("disableHigherVideoBitrate")]
        public Output<int?> DisableHigherVideoBitrate { get; private set; } = null!;

        /// <summary>
        /// Whether to prohibit the conversion of video resolution to high resolution, value range:0: no.1: yes.Default value: 0.
        /// </summary>
        [Output("disableHigherVideoResolution")]
        public Output<int?> DisableHigherVideoResolution { get; private set; } = null!;

        /// <summary>
        /// Adaptive transcoding format, value range:HLS, MPEG-DASH.
        /// </summary>
        [Output("format")]
        public Output<string> Format { get; private set; } = null!;

        /// <summary>
        /// Template name, length limit: 64 characters.
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// Convert adaptive code stream to output sub-stream parameter information, and output up to 10 sub-streams.Note: The frame rate of each sub-stream must be consistent; if not, the frame rate of the first sub-stream is used as the output frame rate.
        /// </summary>
        [Output("streamInfos")]
        public Output<ImmutableArray<Outputs.AdaptiveDynamicStreamingTemplateStreamInfo>> StreamInfos { get; private set; } = null!;


        /// <summary>
        /// Create a AdaptiveDynamicStreamingTemplate resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public AdaptiveDynamicStreamingTemplate(string name, AdaptiveDynamicStreamingTemplateArgs args, CustomResourceOptions? options = null)
            : base("tencentcloud:Mps/adaptiveDynamicStreamingTemplate:AdaptiveDynamicStreamingTemplate", name, args ?? new AdaptiveDynamicStreamingTemplateArgs(), MakeResourceOptions(options, ""))
        {
        }

        private AdaptiveDynamicStreamingTemplate(string name, Input<string> id, AdaptiveDynamicStreamingTemplateState? state = null, CustomResourceOptions? options = null)
            : base("tencentcloud:Mps/adaptiveDynamicStreamingTemplate:AdaptiveDynamicStreamingTemplate", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/tencentcloudstack",
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing AdaptiveDynamicStreamingTemplate resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static AdaptiveDynamicStreamingTemplate Get(string name, Input<string> id, AdaptiveDynamicStreamingTemplateState? state = null, CustomResourceOptions? options = null)
        {
            return new AdaptiveDynamicStreamingTemplate(name, id, state, options);
        }
    }

    public sealed class AdaptiveDynamicStreamingTemplateArgs : Pulumi.ResourceArgs
    {
        /// <summary>
        /// Template description information, length limit: 256 characters.
        /// </summary>
        [Input("comment")]
        public Input<string>? Comment { get; set; }

        /// <summary>
        /// Whether to prohibit video from low bit rate to high bit rate, value range:0: no.1: yes.Default value: 0.
        /// </summary>
        [Input("disableHigherVideoBitrate")]
        public Input<int>? DisableHigherVideoBitrate { get; set; }

        /// <summary>
        /// Whether to prohibit the conversion of video resolution to high resolution, value range:0: no.1: yes.Default value: 0.
        /// </summary>
        [Input("disableHigherVideoResolution")]
        public Input<int>? DisableHigherVideoResolution { get; set; }

        /// <summary>
        /// Adaptive transcoding format, value range:HLS, MPEG-DASH.
        /// </summary>
        [Input("format", required: true)]
        public Input<string> Format { get; set; } = null!;

        /// <summary>
        /// Template name, length limit: 64 characters.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        [Input("streamInfos", required: true)]
        private InputList<Inputs.AdaptiveDynamicStreamingTemplateStreamInfoArgs>? _streamInfos;

        /// <summary>
        /// Convert adaptive code stream to output sub-stream parameter information, and output up to 10 sub-streams.Note: The frame rate of each sub-stream must be consistent; if not, the frame rate of the first sub-stream is used as the output frame rate.
        /// </summary>
        public InputList<Inputs.AdaptiveDynamicStreamingTemplateStreamInfoArgs> StreamInfos
        {
            get => _streamInfos ?? (_streamInfos = new InputList<Inputs.AdaptiveDynamicStreamingTemplateStreamInfoArgs>());
            set => _streamInfos = value;
        }

        public AdaptiveDynamicStreamingTemplateArgs()
        {
        }
    }

    public sealed class AdaptiveDynamicStreamingTemplateState : Pulumi.ResourceArgs
    {
        /// <summary>
        /// Template description information, length limit: 256 characters.
        /// </summary>
        [Input("comment")]
        public Input<string>? Comment { get; set; }

        /// <summary>
        /// Whether to prohibit video from low bit rate to high bit rate, value range:0: no.1: yes.Default value: 0.
        /// </summary>
        [Input("disableHigherVideoBitrate")]
        public Input<int>? DisableHigherVideoBitrate { get; set; }

        /// <summary>
        /// Whether to prohibit the conversion of video resolution to high resolution, value range:0: no.1: yes.Default value: 0.
        /// </summary>
        [Input("disableHigherVideoResolution")]
        public Input<int>? DisableHigherVideoResolution { get; set; }

        /// <summary>
        /// Adaptive transcoding format, value range:HLS, MPEG-DASH.
        /// </summary>
        [Input("format")]
        public Input<string>? Format { get; set; }

        /// <summary>
        /// Template name, length limit: 64 characters.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        [Input("streamInfos")]
        private InputList<Inputs.AdaptiveDynamicStreamingTemplateStreamInfoGetArgs>? _streamInfos;

        /// <summary>
        /// Convert adaptive code stream to output sub-stream parameter information, and output up to 10 sub-streams.Note: The frame rate of each sub-stream must be consistent; if not, the frame rate of the first sub-stream is used as the output frame rate.
        /// </summary>
        public InputList<Inputs.AdaptiveDynamicStreamingTemplateStreamInfoGetArgs> StreamInfos
        {
            get => _streamInfos ?? (_streamInfos = new InputList<Inputs.AdaptiveDynamicStreamingTemplateStreamInfoGetArgs>());
            set => _streamInfos = value;
        }

        public AdaptiveDynamicStreamingTemplateState()
        {
        }
    }
}
