/// <summary>
        /// Retrieves an HTTP Live Streaming (HLS) URL for the stream. You can then open the URL
        /// in a browser or media player to view the stream contents.
        ///
        ///
        /// <para>
        /// You must specify either the <code>StreamName</code> or the <code>StreamARN</code>.
        /// </para>
        ///
        /// <para>
        /// An Amazon Kinesis video stream has the following requirements for providing data through
        /// HLS:
        /// </para>
        ///  <ul> <li>
        /// <para>
        /// The media type must be <code>video/h264</code>.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// Data retention must be greater than 0.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// The fragments must contain codec private data in the AVC (Advanced Video Coding) for
        /// H.264 format (<a href="https://www.iso.org/standard/55980.html">MPEG-4 specification
        /// ISO/IEC 14496-15</a>). For information about adapting stream data to a given format,
        /// see <a href="http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/latest/dg/producer-reference-nal.html">NAL
        /// Adaptation Flags</a>.
        /// </para>
        ///  </li> </ul>
        /// <para>
        /// Kinesis Video Streams HLS sessions contain fragments in the fragmented MPEG-4 form
        /// (also called fMP4 or CMAF), rather than the MPEG-2 form (also called TS chunks, which
        /// the HLS specification also supports). For more information about HLS fragment types,
        /// see the <a href="https://tools.ietf.org/html/draft-pantos-http-live-streaming-23">HLS
        /// specification</a>.
        /// </para>
        ///
        /// <para>
        /// The following procedure shows how to use HLS with Kinesis Video Streams:
        /// </para>
        ///  <ol> <li>
        /// <para>
        /// Get an endpoint using <a href="http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_GetDataEndpoint.html">GetDataEndpoint</a>,
        /// specifying <code>GET_HLS_STREAMING_SESSION_URL</code> for the <code>APIName</code>
        /// parameter.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// Retrieve the HLS URL using <code>GetHLSStreamingSessionURL</code>. Kinesis Video Streams
        /// creates an HLS streaming session to be used for accessing content in a stream using
        /// the HLS protocol. <code>GetHLSStreamingSessionURL</code> returns an authenticated
        /// URL (that includes an encrypted session token) for the session's HLS <i>master playlist</i>
        /// (the root resource needed for streaming with HLS).
        /// </para>
        ///  <note>
        /// <para>
        /// Don't share or store this token where an unauthorized entity could access it. The
        /// token provides access to the content of the stream. Safeguard the token with the same
        /// measures that you would use with your AWS credentials.
        /// </para>
        ///  </note>
        /// <para>
        /// The media that is made available through the playlist consists only of the requested
        /// stream, time range, and format. No other media data (such as frames outside the requested
        /// window or alternate bit rates) is made available.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// Provide the URL (containing the encrypted session token) for the HLS master playlist
        /// to a media player that supports the HLS protocol. Kinesis Video Streams makes the
        /// HLS media playlist, initialization fragment, and media fragments available through
        /// the master playlist URL. The initialization fragment contains the codec private data
        /// for the stream, and other data needed to set up the video decoder and renderer. The
        /// media fragments contain H.264-encoded video frames and time stamps.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// The media player receives the authenticated URL and requests stream metadata and media
        /// data normally. When the media player requests data, it calls the following actions:
        /// </para>
        ///  <ul> <li>
        /// <para>
        ///  <b>GetHLSMasterPlaylist:</b> Retrieves an HLS master playlist, which contains a URL
        /// for the <code>GetHLSMediaPlaylist</code> action, and additional metadata for the media
        /// player, including estimated bit rate and resolution.
        /// </para>
        ///  </li> <li>
        /// <para>
        ///  <b>GetHLSMediaPlaylist:</b> Retrieves an HLS media playlist, which contains a URL
        /// to access the MP4 initialization fragment with the <code>GetMP4InitFragment</code>
        /// action, and URLs to access the MP4 media fragments with the <code>GetMP4MediaFragment</code>
        /// actions. The HLS media playlist also contains metadata about the stream that the player
        /// needs to play it, such as whether the <code>PlaybackMode</code> is <code>LIVE</code>
        /// or <code>ON_DEMAND</code>. The HLS media playlist is typically static for sessions
        /// with a <code>PlaybackType</code> of <code>ON_DEMAND</code>. The HLS media playlist
        /// is continually updated with new fragments for sessions with a <code>PlaybackType</code>
        /// of <code>LIVE</code>.
        /// </para>
        ///  </li> <li>
        /// <para>
        ///  <b>GetMP4InitFragment:</b> Retrieves the MP4 initialization fragment. The media player
        /// typically loads the initialization fragment before loading any media fragments. This
        /// fragment contains the "<code>fytp</code>" and "<code>moov</code>" MP4 atoms, and the
        /// child atoms that are needed to initialize the media player decoder.
        /// </para>
        ///
        /// <para>
        /// The initialization fragment does not correspond to a fragment in a Kinesis video stream.
        /// It contains only the codec private data for the stream, which the media player needs
        /// to decode video frames.
        /// </para>
        ///  </li> <li>
        /// <para>
        ///  <b>GetMP4MediaFragment:</b> Retrieves MP4 media fragments. These fragments contain
        /// the "<code>moof</code>" and "<code>mdat</code>" MP4 atoms and their child atoms, containing
        /// the encoded fragment's video frames and their time stamps.
        /// </para>
        ///  <note>
        /// <para>
        /// After the first media fragment is made available in a streaming session, any fragments
        /// that don't contain the same codec private data are excluded in the HLS media playlist.
        /// Therefore, the codec private data does not change between fragments in a session.
        /// </para>
        ///  </note>
        /// <para>
        /// Data retrieved with this action is billable. See <a href="aws.amazon.comkinesis/video-streams/pricing/">Pricing</a>
        /// for details.
        /// </para>
        ///  </li> </ul> </li> </ol> <note>
        /// <para>
        /// The following restrictions apply to HLS sessions:
        /// </para>
        ///  <ul> <li>
        /// <para>
        /// A streaming session URL should not be shared between players. The service might throttle
        /// a session if multiple media players are sharing it. For connection limits, see <a
        /// href="http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html">Kinesis
        /// Video Streams Limits</a>.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// A Kinesis video stream can have a maximum of five active HLS streaming sessions. If
        /// a new session is created when the maximum number of sessions is already active, the
        /// oldest (earliest created) session is closed. The number of active <code>GetMedia</code>
        /// connections on a Kinesis video stream does not count against this limit, and the number
        /// of active HLS sessions does not count against the active <code>GetMedia</code> connection
        /// limit.
        /// </para>
        ///  </li> </ul> </note>
        /// <para>
        /// You can monitor the amount of data that the media player consumes by monitoring the
        /// <code>GetMP4MediaFragment.OutgoingBytes</code> Amazon CloudWatch metric. For information
        /// about using CloudWatch to monitor Kinesis Video Streams, see <a href="http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/monitoring.html">Monitoring
        /// Kinesis Video Streams</a>. For pricing information, see <a href="https://aws.amazon.com/kinesis/video-streams/pricing/">Amazon
        /// Kinesis Video Streams Pricing</a> and <a href="https://aws.amazon.com/pricing/">AWS
        /// Pricing</a>. Charges for both HLS sessions and outgoing AWS data apply.
        /// </para>
        ///
        /// <para>
        /// For more information about HLS, see <a href="https://developer.apple.com/streaming/">HTTP
        /// Live Streaming</a> on the <a href="https://developer.apple.com">Apple Developer site</a>.
        /// </para>
        /// </summary>
        /// <param name="request">Container for the necessary parameters to execute the GetHLSStreamingSessionURL service method.</param>
        ///
        /// <returns>The response from the GetHLSStreamingSessionURL service method, as returned by KinesisVideoArchivedMedia.</returns>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.ClientLimitExceededException">
        /// Kinesis Video Streams has throttled the request because you have exceeded the limit
        /// of allowed client calls. Try making the call later.
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.InvalidArgumentException">
        /// A specified parameter exceeds its restrictions, is not supported, or can't be used.
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.InvalidCodecPrivateDataException">
        /// The Codec Private Data in the video stream is not valid for this operation.
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.MissingCodecPrivateDataException">
        /// No Codec Private Data was found in the video stream.
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.NoDataRetentionException">
        /// A <code>PlaybackMode</code> of <code>ON_DEMAND</code> was requested for a stream that
        /// does not retain data (that is, has a <code>DataRetentionInHours</code> of 0).
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.NotAuthorizedException">
        /// Status Code: 403, The caller is not authorized to perform an operation on the given
        /// stream, or the token has expired.
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.ResourceNotFoundException">
        /// <code>GetMedia</code> throws this error when Kinesis Video Streams can't find the
        /// stream that you specified.
        ///
        ///
        /// <para>
        ///  <code>GetHLSStreamingSessionURL</code> throws this error if a session with a <code>PlaybackMode</code>
        /// of <code>ON_DEMAND</code> is requested for a stream that has no fragments within the
        /// requested time range, or if a session with a <code>PlaybackMode</code> of <code>LIVE</code>
        /// is requested for a stream that has no fragments within the last 30 seconds.
        /// </para>
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.UnsupportedStreamMediaTypeException">
        /// An HLS streaming session was requested for a stream with a media type that is not
        /// <code>video/h264</code>.
        /// </exception>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetHLSStreamingSessionURL">REST API Reference for GetHLSStreamingSessionURL Operation</seealso>
        public virtual GetHLSStreamingSessionURLResponse GetHLSStreamingSessionURL(GetHLSStreamingSessionURLRequest request)
        {
            var marshaller   = GetHLSStreamingSessionURLRequestMarshaller.Instance;
            var unmarshaller = GetHLSStreamingSessionURLResponseUnmarshaller.Instance;

            return(Invoke <GetHLSStreamingSessionURLRequest, GetHLSStreamingSessionURLResponse>(request, marshaller, unmarshaller));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initiates the asynchronous execution of the GetHLSStreamingSessionURL operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the GetHLSStreamingSessionURL operation on AmazonKinesisVideoArchivedMediaClient.</param>
        /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param>
        /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.</param>
        ///
        /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetHLSStreamingSessionURL
        ///         operation.</returns>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetHLSStreamingSessionURL">REST API Reference for GetHLSStreamingSessionURL Operation</seealso>
        public virtual IAsyncResult BeginGetHLSStreamingSessionURL(GetHLSStreamingSessionURLRequest request, AsyncCallback callback, object state)
        {
            var marshaller   = GetHLSStreamingSessionURLRequestMarshaller.Instance;
            var unmarshaller = GetHLSStreamingSessionURLResponseUnmarshaller.Instance;

            return(BeginInvoke <GetHLSStreamingSessionURLRequest>(request, marshaller, unmarshaller,
                                                                  callback, state));
        }
        /// <summary>
        /// Retrieves an HTTP Live Streaming (HLS) URL for the stream. You can then open the URL
        /// in a browser or media player to view the stream contents.
        ///
        ///
        /// <para>
        /// You must specify either the <code>StreamName</code> or the <code>StreamARN</code>.
        /// </para>
        ///
        /// <para>
        /// An Amazon Kinesis video stream has the following requirements for providing data through
        /// HLS:
        /// </para>
        ///  <ul> <li>
        /// <para>
        /// The media type must be <code>video/h264</code>.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// Data retention must be greater than 0.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// The fragments must contain codec private data in the AVC (Advanced Video Coding) for
        /// H.264 format (<a href="https://www.iso.org/standard/55980.html">MPEG-4 specification
        /// ISO/IEC 14496-15</a>). For information about adapting stream data to a given format,
        /// see <a href="http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/latest/dg/producer-reference-nal.html">NAL
        /// Adaptation Flags</a>.
        /// </para>
        ///  </li> </ul>
        /// <para>
        /// Kinesis Video Streams HLS sessions contain fragments in the fragmented MPEG-4 form
        /// (also called fMP4 or CMAF), rather than the MPEG-2 form (also called TS chunks, which
        /// the HLS specification also supports). For more information about HLS fragment types,
        /// see the <a href="https://tools.ietf.org/html/draft-pantos-http-live-streaming-23">HLS
        /// specification</a>.
        /// </para>
        ///
        /// <para>
        /// The following procedure shows how to use HLS with Kinesis Video Streams:
        /// </para>
        ///  <ol> <li>
        /// <para>
        /// Get an endpoint using <a href="http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_GetDataEndpoint.html">GetDataEndpoint</a>,
        /// specifying <code>GET_HLS_STREAMING_SESSION_URL</code> for the <code>APIName</code>
        /// parameter.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// Retrieve the HLS URL using <code>GetHLSStreamingSessionURL</code>. Kinesis Video Streams
        /// creates an HLS streaming session to be used for accessing content in a stream using
        /// the HLS protocol. <code>GetHLSStreamingSessionURL</code> returns an authenticated
        /// URL (that includes an encrypted session token) for the session's HLS <i>master playlist</i>
        /// (the root resource needed for streaming with HLS).
        /// </para>
        ///  <note>
        /// <para>
        /// Don't share or store this token where an unauthorized entity could access it. The
        /// token provides access to the content of the stream. Safeguard the token with the same
        /// measures that you would use with your AWS credentials.
        /// </para>
        ///  </note>
        /// <para>
        /// The media that is made available through the playlist consists only of the requested
        /// stream, time range, and format. No other media data (such as frames outside the requested
        /// window or alternate bit rates) is made available.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// Provide the URL (containing the encrypted session token) for the HLS master playlist
        /// to a media player that supports the HLS protocol. Kinesis Video Streams makes the
        /// HLS media playlist, initialization fragment, and media fragments available through
        /// the master playlist URL. The initialization fragment contains the codec private data
        /// for the stream, and other data needed to set up the video decoder and renderer. The
        /// media fragments contain H.264-encoded video frames and time stamps.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// The media player receives the authenticated URL and requests stream metadata and media
        /// data normally. When the media player requests data, it calls the following actions:
        /// </para>
        ///  <ul> <li>
        /// <para>
        ///  <b>GetHLSMasterPlaylist:</b> Retrieves an HLS master playlist, which contains a URL
        /// for the <code>GetHLSMediaPlaylist</code> action, and additional metadata for the media
        /// player, including estimated bit rate and resolution.
        /// </para>
        ///  </li> <li>
        /// <para>
        ///  <b>GetHLSMediaPlaylist:</b> Retrieves an HLS media playlist, which contains a URL
        /// to access the MP4 initialization fragment with the <code>GetMP4InitFragment</code>
        /// action, and URLs to access the MP4 media fragments with the <code>GetMP4MediaFragment</code>
        /// actions. The HLS media playlist also contains metadata about the stream that the player
        /// needs to play it, such as whether the <code>PlaybackMode</code> is <code>LIVE</code>
        /// or <code>ON_DEMAND</code>. The HLS media playlist is typically static for sessions
        /// with a <code>PlaybackType</code> of <code>ON_DEMAND</code>. The HLS media playlist
        /// is continually updated with new fragments for sessions with a <code>PlaybackType</code>
        /// of <code>LIVE</code>.
        /// </para>
        ///  </li> <li>
        /// <para>
        ///  <b>GetMP4InitFragment:</b> Retrieves the MP4 initialization fragment. The media player
        /// typically loads the initialization fragment before loading any media fragments. This
        /// fragment contains the "<code>fytp</code>" and "<code>moov</code>" MP4 atoms, and the
        /// child atoms that are needed to initialize the media player decoder.
        /// </para>
        ///
        /// <para>
        /// The initialization fragment does not correspond to a fragment in a Kinesis video stream.
        /// It contains only the codec private data for the stream, which the media player needs
        /// to decode video frames.
        /// </para>
        ///  </li> <li>
        /// <para>
        ///  <b>GetMP4MediaFragment:</b> Retrieves MP4 media fragments. These fragments contain
        /// the "<code>moof</code>" and "<code>mdat</code>" MP4 atoms and their child atoms, containing
        /// the encoded fragment's video frames and their time stamps.
        /// </para>
        ///  <note>
        /// <para>
        /// After the first media fragment is made available in a streaming session, any fragments
        /// that don't contain the same codec private data are excluded in the HLS media playlist.
        /// Therefore, the codec private data does not change between fragments in a session.
        /// </para>
        ///  </note>
        /// <para>
        /// Data retrieved with this action is billable. See <a href="aws.amazon.comkinesis/video-streams/pricing/">Pricing</a>
        /// for details.
        /// </para>
        ///  </li> </ul> </li> </ol> <note>
        /// <para>
        /// The following restrictions apply to HLS sessions:
        /// </para>
        ///  <ul> <li>
        /// <para>
        /// A streaming session URL should not be shared between players. The service might throttle
        /// a session if multiple media players are sharing it. For connection limits, see <a
        /// href="http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html">Kinesis
        /// Video Streams Limits</a>.
        /// </para>
        ///  </li> <li>
        /// <para>
        /// A Kinesis video stream can have a maximum of five active HLS streaming sessions. If
        /// a new session is created when the maximum number of sessions is already active, the
        /// oldest (earliest created) session is closed. The number of active <code>GetMedia</code>
        /// connections on a Kinesis video stream does not count against this limit, and the number
        /// of active HLS sessions does not count against the active <code>GetMedia</code> connection
        /// limit.
        /// </para>
        ///  </li> </ul> </note>
        /// <para>
        /// You can monitor the amount of data that the media player consumes by monitoring the
        /// <code>GetMP4MediaFragment.OutgoingBytes</code> Amazon CloudWatch metric. For information
        /// about using CloudWatch to monitor Kinesis Video Streams, see <a href="http://docs.aws.amazon.com/kinesisvideostreams/latest/dg/monitoring.html">Monitoring
        /// Kinesis Video Streams</a>. For pricing information, see <a href="https://aws.amazon.com/kinesis/video-streams/pricing/">Amazon
        /// Kinesis Video Streams Pricing</a> and <a href="https://aws.amazon.com/pricing/">AWS
        /// Pricing</a>. Charges for both HLS sessions and outgoing AWS data apply.
        /// </para>
        ///
        /// <para>
        /// For more information about HLS, see <a href="https://developer.apple.com/streaming/">HTTP
        /// Live Streaming</a> on the <a href="https://developer.apple.com">Apple Developer site</a>.
        /// </para>
        /// </summary>
        /// <param name="request">Container for the necessary parameters to execute the GetHLSStreamingSessionURL service method.</param>
        ///
        /// <returns>The response from the GetHLSStreamingSessionURL service method, as returned by KinesisVideoArchivedMedia.</returns>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.ClientLimitExceededException">
        /// Kinesis Video Streams has throttled the request because you have exceeded the limit
        /// of allowed client calls. Try making the call later.
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.InvalidArgumentException">
        /// A specified parameter exceeds its restrictions, is not supported, or can't be used.
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.InvalidCodecPrivateDataException">
        /// The Codec Private Data in the video stream is not valid for this operation.
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.MissingCodecPrivateDataException">
        /// No Codec Private Data was found in the video stream.
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.NoDataRetentionException">
        /// A <code>PlaybackMode</code> of <code>ON_DEMAND</code> was requested for a stream that
        /// does not retain data (that is, has a <code>DataRetentionInHours</code> of 0).
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.NotAuthorizedException">
        /// Status Code: 403, The caller is not authorized to perform an operation on the given
        /// stream, or the token has expired.
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.ResourceNotFoundException">
        /// <code>GetMedia</code> throws this error when Kinesis Video Streams can't find the
        /// stream that you specified.
        ///
        ///
        /// <para>
        ///  <code>GetHLSStreamingSessionURL</code> throws this error if a session with a <code>PlaybackMode</code>
        /// of <code>ON_DEMAND</code> is requested for a stream that has no fragments within the
        /// requested time range, or if a session with a <code>PlaybackMode</code> of <code>LIVE</code>
        /// is requested for a stream that has no fragments within the last 30 seconds.
        /// </para>
        /// </exception>
        /// <exception cref="Amazon.KinesisVideoArchivedMedia.Model.UnsupportedStreamMediaTypeException">
        /// An HLS streaming session was requested for a stream with a media type that is not
        /// <code>video/h264</code>.
        /// </exception>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetHLSStreamingSessionURL">REST API Reference for GetHLSStreamingSessionURL Operation</seealso>
        public virtual GetHLSStreamingSessionURLResponse GetHLSStreamingSessionURL(GetHLSStreamingSessionURLRequest request)
        {
            var options = new InvokeOptions();

            options.RequestMarshaller    = GetHLSStreamingSessionURLRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetHLSStreamingSessionURLResponseUnmarshaller.Instance;

            return(Invoke <GetHLSStreamingSessionURLResponse>(request, options));
        }
        /// <summary>
        /// Initiates the asynchronous execution of the GetHLSStreamingSessionURL operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the GetHLSStreamingSessionURL operation on AmazonKinesisVideoArchivedMediaClient.</param>
        /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param>
        /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.</param>
        ///
        /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetHLSStreamingSessionURL
        ///         operation.</returns>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetHLSStreamingSessionURL">REST API Reference for GetHLSStreamingSessionURL Operation</seealso>
        public virtual IAsyncResult BeginGetHLSStreamingSessionURL(GetHLSStreamingSessionURLRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();

            options.RequestMarshaller    = GetHLSStreamingSessionURLRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetHLSStreamingSessionURLResponseUnmarshaller.Instance;

            return(BeginInvoke(request, options, callback, state));
        }
        /// <summary>
        /// Initiates the asynchronous execution of the GetHLSStreamingSessionURL operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the GetHLSStreamingSessionURL operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/kinesis-video-archived-media-2017-09-30/GetHLSStreamingSessionURL">REST API Reference for GetHLSStreamingSessionURL Operation</seealso>
        public virtual Task <GetHLSStreamingSessionURLResponse> GetHLSStreamingSessionURLAsync(GetHLSStreamingSessionURLRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = GetHLSStreamingSessionURLRequestMarshaller.Instance;
            var unmarshaller = GetHLSStreamingSessionURLResponseUnmarshaller.Instance;

            return(InvokeAsync <GetHLSStreamingSessionURLRequest, GetHLSStreamingSessionURLResponse>(request, marshaller,
                                                                                                     unmarshaller, cancellationToken));
        }