/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace KinesisVideoArchivedMedia { namespace Model { /** *

Contains the range of timestamps for the requested media, and the source of * the timestamps.

See Also:

AWS * API Reference

*/ class DASHFragmentSelector { public: AWS_KINESISVIDEOARCHIVEDMEDIA_API DASHFragmentSelector(); AWS_KINESISVIDEOARCHIVEDMEDIA_API DASHFragmentSelector(Aws::Utils::Json::JsonView jsonValue); AWS_KINESISVIDEOARCHIVEDMEDIA_API DASHFragmentSelector& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_KINESISVIDEOARCHIVEDMEDIA_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The source of the timestamps for the requested media.

When * FragmentSelectorType is set to PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is ON_DEMAND or * LIVE_REPLAY, the first fragment ingested with a producer timestamp * within the specified FragmentSelector$TimestampRange is included in the * media playlist. In addition, the fragments with producer timestamps within the * TimestampRange ingested immediately following the first fragment * (up to the GetDASHStreamingSessionURLInput$MaxManifestFragmentResults * value) are included.

Fragments that have duplicate producer timestamps * are deduplicated. This means that if producers are producing a stream of * fragments with producer timestamps that are approximately equal to the true * clock time, the MPEG-DASH manifest will contain all of the fragments within the * requested timestamp range. If some fragments are ingested within the same time * range and very different points in time, only the oldest ingested collection of * fragments are returned.

When FragmentSelectorType is set to * PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is LIVE, the * producer timestamps are used in the MP4 fragments and for deduplication. But the * most recently ingested fragments based on server timestamps are included in the * MPEG-DASH manifest. This means that even if fragments ingested in the past have * producer timestamps with values now, they are not included in the HLS media * playlist.

The default is SERVER_TIMESTAMP.

*/ inline const DASHFragmentSelectorType& GetFragmentSelectorType() const{ return m_fragmentSelectorType; } /** *

The source of the timestamps for the requested media.

When * FragmentSelectorType is set to PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is ON_DEMAND or * LIVE_REPLAY, the first fragment ingested with a producer timestamp * within the specified FragmentSelector$TimestampRange is included in the * media playlist. In addition, the fragments with producer timestamps within the * TimestampRange ingested immediately following the first fragment * (up to the GetDASHStreamingSessionURLInput$MaxManifestFragmentResults * value) are included.

Fragments that have duplicate producer timestamps * are deduplicated. This means that if producers are producing a stream of * fragments with producer timestamps that are approximately equal to the true * clock time, the MPEG-DASH manifest will contain all of the fragments within the * requested timestamp range. If some fragments are ingested within the same time * range and very different points in time, only the oldest ingested collection of * fragments are returned.

When FragmentSelectorType is set to * PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is LIVE, the * producer timestamps are used in the MP4 fragments and for deduplication. But the * most recently ingested fragments based on server timestamps are included in the * MPEG-DASH manifest. This means that even if fragments ingested in the past have * producer timestamps with values now, they are not included in the HLS media * playlist.

The default is SERVER_TIMESTAMP.

*/ inline bool FragmentSelectorTypeHasBeenSet() const { return m_fragmentSelectorTypeHasBeenSet; } /** *

The source of the timestamps for the requested media.

When * FragmentSelectorType is set to PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is ON_DEMAND or * LIVE_REPLAY, the first fragment ingested with a producer timestamp * within the specified FragmentSelector$TimestampRange is included in the * media playlist. In addition, the fragments with producer timestamps within the * TimestampRange ingested immediately following the first fragment * (up to the GetDASHStreamingSessionURLInput$MaxManifestFragmentResults * value) are included.

Fragments that have duplicate producer timestamps * are deduplicated. This means that if producers are producing a stream of * fragments with producer timestamps that are approximately equal to the true * clock time, the MPEG-DASH manifest will contain all of the fragments within the * requested timestamp range. If some fragments are ingested within the same time * range and very different points in time, only the oldest ingested collection of * fragments are returned.

When FragmentSelectorType is set to * PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is LIVE, the * producer timestamps are used in the MP4 fragments and for deduplication. But the * most recently ingested fragments based on server timestamps are included in the * MPEG-DASH manifest. This means that even if fragments ingested in the past have * producer timestamps with values now, they are not included in the HLS media * playlist.

The default is SERVER_TIMESTAMP.

*/ inline void SetFragmentSelectorType(const DASHFragmentSelectorType& value) { m_fragmentSelectorTypeHasBeenSet = true; m_fragmentSelectorType = value; } /** *

The source of the timestamps for the requested media.

When * FragmentSelectorType is set to PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is ON_DEMAND or * LIVE_REPLAY, the first fragment ingested with a producer timestamp * within the specified FragmentSelector$TimestampRange is included in the * media playlist. In addition, the fragments with producer timestamps within the * TimestampRange ingested immediately following the first fragment * (up to the GetDASHStreamingSessionURLInput$MaxManifestFragmentResults * value) are included.

Fragments that have duplicate producer timestamps * are deduplicated. This means that if producers are producing a stream of * fragments with producer timestamps that are approximately equal to the true * clock time, the MPEG-DASH manifest will contain all of the fragments within the * requested timestamp range. If some fragments are ingested within the same time * range and very different points in time, only the oldest ingested collection of * fragments are returned.

When FragmentSelectorType is set to * PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is LIVE, the * producer timestamps are used in the MP4 fragments and for deduplication. But the * most recently ingested fragments based on server timestamps are included in the * MPEG-DASH manifest. This means that even if fragments ingested in the past have * producer timestamps with values now, they are not included in the HLS media * playlist.

The default is SERVER_TIMESTAMP.

*/ inline void SetFragmentSelectorType(DASHFragmentSelectorType&& value) { m_fragmentSelectorTypeHasBeenSet = true; m_fragmentSelectorType = std::move(value); } /** *

The source of the timestamps for the requested media.

When * FragmentSelectorType is set to PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is ON_DEMAND or * LIVE_REPLAY, the first fragment ingested with a producer timestamp * within the specified FragmentSelector$TimestampRange is included in the * media playlist. In addition, the fragments with producer timestamps within the * TimestampRange ingested immediately following the first fragment * (up to the GetDASHStreamingSessionURLInput$MaxManifestFragmentResults * value) are included.

Fragments that have duplicate producer timestamps * are deduplicated. This means that if producers are producing a stream of * fragments with producer timestamps that are approximately equal to the true * clock time, the MPEG-DASH manifest will contain all of the fragments within the * requested timestamp range. If some fragments are ingested within the same time * range and very different points in time, only the oldest ingested collection of * fragments are returned.

When FragmentSelectorType is set to * PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is LIVE, the * producer timestamps are used in the MP4 fragments and for deduplication. But the * most recently ingested fragments based on server timestamps are included in the * MPEG-DASH manifest. This means that even if fragments ingested in the past have * producer timestamps with values now, they are not included in the HLS media * playlist.

The default is SERVER_TIMESTAMP.

*/ inline DASHFragmentSelector& WithFragmentSelectorType(const DASHFragmentSelectorType& value) { SetFragmentSelectorType(value); return *this;} /** *

The source of the timestamps for the requested media.

When * FragmentSelectorType is set to PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is ON_DEMAND or * LIVE_REPLAY, the first fragment ingested with a producer timestamp * within the specified FragmentSelector$TimestampRange is included in the * media playlist. In addition, the fragments with producer timestamps within the * TimestampRange ingested immediately following the first fragment * (up to the GetDASHStreamingSessionURLInput$MaxManifestFragmentResults * value) are included.

Fragments that have duplicate producer timestamps * are deduplicated. This means that if producers are producing a stream of * fragments with producer timestamps that are approximately equal to the true * clock time, the MPEG-DASH manifest will contain all of the fragments within the * requested timestamp range. If some fragments are ingested within the same time * range and very different points in time, only the oldest ingested collection of * fragments are returned.

When FragmentSelectorType is set to * PRODUCER_TIMESTAMP and * GetDASHStreamingSessionURLInput$PlaybackMode is LIVE, the * producer timestamps are used in the MP4 fragments and for deduplication. But the * most recently ingested fragments based on server timestamps are included in the * MPEG-DASH manifest. This means that even if fragments ingested in the past have * producer timestamps with values now, they are not included in the HLS media * playlist.

The default is SERVER_TIMESTAMP.

*/ inline DASHFragmentSelector& WithFragmentSelectorType(DASHFragmentSelectorType&& value) { SetFragmentSelectorType(std::move(value)); return *this;} /** *

The start and end of the timestamp range for the requested media.

This * value should not be present if PlaybackType is * LIVE.

*/ inline const DASHTimestampRange& GetTimestampRange() const{ return m_timestampRange; } /** *

The start and end of the timestamp range for the requested media.

This * value should not be present if PlaybackType is * LIVE.

*/ inline bool TimestampRangeHasBeenSet() const { return m_timestampRangeHasBeenSet; } /** *

The start and end of the timestamp range for the requested media.

This * value should not be present if PlaybackType is * LIVE.

*/ inline void SetTimestampRange(const DASHTimestampRange& value) { m_timestampRangeHasBeenSet = true; m_timestampRange = value; } /** *

The start and end of the timestamp range for the requested media.

This * value should not be present if PlaybackType is * LIVE.

*/ inline void SetTimestampRange(DASHTimestampRange&& value) { m_timestampRangeHasBeenSet = true; m_timestampRange = std::move(value); } /** *

The start and end of the timestamp range for the requested media.

This * value should not be present if PlaybackType is * LIVE.

*/ inline DASHFragmentSelector& WithTimestampRange(const DASHTimestampRange& value) { SetTimestampRange(value); return *this;} /** *

The start and end of the timestamp range for the requested media.

This * value should not be present if PlaybackType is * LIVE.

*/ inline DASHFragmentSelector& WithTimestampRange(DASHTimestampRange&& value) { SetTimestampRange(std::move(value)); return *this;} private: DASHFragmentSelectorType m_fragmentSelectorType; bool m_fragmentSelectorTypeHasBeenSet = false; DASHTimestampRange m_timestampRange; bool m_timestampRangeHasBeenSet = false; }; } // namespace Model } // namespace KinesisVideoArchivedMedia } // namespace Aws