/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include
#include
#include
#include
#include
#include
#include
namespace Aws
{
namespace Utils
{
namespace Json
{
class JsonValue;
class JsonView;
} // namespace Json
} // namespace Utils
namespace MediaPackageVod
{
namespace Model
{
/**
* A Dynamic Adaptive Streaming over HTTP (DASH) packaging configuration.See
* Also:
AWS
* API Reference
*/
class DashPackage
{
public:
AWS_MEDIAPACKAGEVOD_API DashPackage();
AWS_MEDIAPACKAGEVOD_API DashPackage(Aws::Utils::Json::JsonView jsonValue);
AWS_MEDIAPACKAGEVOD_API DashPackage& operator=(Aws::Utils::Json::JsonView jsonValue);
AWS_MEDIAPACKAGEVOD_API Aws::Utils::Json::JsonValue Jsonize() const;
/**
* A list of DASH manifest configurations.
*/
inline const Aws::Vector& GetDashManifests() const{ return m_dashManifests; }
/**
* A list of DASH manifest configurations.
*/
inline bool DashManifestsHasBeenSet() const { return m_dashManifestsHasBeenSet; }
/**
* A list of DASH manifest configurations.
*/
inline void SetDashManifests(const Aws::Vector& value) { m_dashManifestsHasBeenSet = true; m_dashManifests = value; }
/**
* A list of DASH manifest configurations.
*/
inline void SetDashManifests(Aws::Vector&& value) { m_dashManifestsHasBeenSet = true; m_dashManifests = std::move(value); }
/**
* A list of DASH manifest configurations.
*/
inline DashPackage& WithDashManifests(const Aws::Vector& value) { SetDashManifests(value); return *this;}
/**
* A list of DASH manifest configurations.
*/
inline DashPackage& WithDashManifests(Aws::Vector&& value) { SetDashManifests(std::move(value)); return *this;}
/**
* A list of DASH manifest configurations.
*/
inline DashPackage& AddDashManifests(const DashManifest& value) { m_dashManifestsHasBeenSet = true; m_dashManifests.push_back(value); return *this; }
/**
* A list of DASH manifest configurations.
*/
inline DashPackage& AddDashManifests(DashManifest&& value) { m_dashManifestsHasBeenSet = true; m_dashManifests.push_back(std::move(value)); return *this; }
inline const DashEncryption& GetEncryption() const{ return m_encryption; }
inline bool EncryptionHasBeenSet() const { return m_encryptionHasBeenSet; }
inline void SetEncryption(const DashEncryption& value) { m_encryptionHasBeenSet = true; m_encryption = value; }
inline void SetEncryption(DashEncryption&& value) { m_encryptionHasBeenSet = true; m_encryption = std::move(value); }
inline DashPackage& WithEncryption(const DashEncryption& value) { SetEncryption(value); return *this;}
inline DashPackage& WithEncryption(DashEncryption&& value) { SetEncryption(std::move(value)); return *this;}
/**
* When includeEncoderConfigurationInSegments is set to true, MediaPackage places
* your encoder's Sequence Parameter Set (SPS), Picture Parameter Set (PPS), and
* Video Parameter Set (VPS) metadata in every video segment instead of in the init
* fragment. This lets you use different SPS/PPS/VPS settings for your assets
* during content playback.
*/
inline bool GetIncludeEncoderConfigurationInSegments() const{ return m_includeEncoderConfigurationInSegments; }
/**
* When includeEncoderConfigurationInSegments is set to true, MediaPackage places
* your encoder's Sequence Parameter Set (SPS), Picture Parameter Set (PPS), and
* Video Parameter Set (VPS) metadata in every video segment instead of in the init
* fragment. This lets you use different SPS/PPS/VPS settings for your assets
* during content playback.
*/
inline bool IncludeEncoderConfigurationInSegmentsHasBeenSet() const { return m_includeEncoderConfigurationInSegmentsHasBeenSet; }
/**
* When includeEncoderConfigurationInSegments is set to true, MediaPackage places
* your encoder's Sequence Parameter Set (SPS), Picture Parameter Set (PPS), and
* Video Parameter Set (VPS) metadata in every video segment instead of in the init
* fragment. This lets you use different SPS/PPS/VPS settings for your assets
* during content playback.
*/
inline void SetIncludeEncoderConfigurationInSegments(bool value) { m_includeEncoderConfigurationInSegmentsHasBeenSet = true; m_includeEncoderConfigurationInSegments = value; }
/**
* When includeEncoderConfigurationInSegments is set to true, MediaPackage places
* your encoder's Sequence Parameter Set (SPS), Picture Parameter Set (PPS), and
* Video Parameter Set (VPS) metadata in every video segment instead of in the init
* fragment. This lets you use different SPS/PPS/VPS settings for your assets
* during content playback.
*/
inline DashPackage& WithIncludeEncoderConfigurationInSegments(bool value) { SetIncludeEncoderConfigurationInSegments(value); return *this;}
/**
* When enabled, an I-Frame only stream will be included in the output.
*/
inline bool GetIncludeIframeOnlyStream() const{ return m_includeIframeOnlyStream; }
/**
* When enabled, an I-Frame only stream will be included in the output.
*/
inline bool IncludeIframeOnlyStreamHasBeenSet() const { return m_includeIframeOnlyStreamHasBeenSet; }
/**
* When enabled, an I-Frame only stream will be included in the output.
*/
inline void SetIncludeIframeOnlyStream(bool value) { m_includeIframeOnlyStreamHasBeenSet = true; m_includeIframeOnlyStream = value; }
/**
* When enabled, an I-Frame only stream will be included in the output.
*/
inline DashPackage& WithIncludeIframeOnlyStream(bool value) { SetIncludeIframeOnlyStream(value); return *this;}
/**
* 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
* Asset contains SCTE-35 ad markers.
*/
inline const Aws::Vector<__PeriodTriggersElement>& GetPeriodTriggers() const{ return m_periodTriggers; }
/**
* 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
* Asset contains SCTE-35 ad markers.
*/
inline bool PeriodTriggersHasBeenSet() const { return m_periodTriggersHasBeenSet; }
/**
* 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
* Asset contains SCTE-35 ad markers.
*/
inline void SetPeriodTriggers(const Aws::Vector<__PeriodTriggersElement>& value) { m_periodTriggersHasBeenSet = true; m_periodTriggers = value; }
/**
* 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
* Asset contains SCTE-35 ad markers.
*/
inline void SetPeriodTriggers(Aws::Vector<__PeriodTriggersElement>&& value) { m_periodTriggersHasBeenSet = true; m_periodTriggers = std::move(value); }
/**
* 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
* Asset contains SCTE-35 ad markers.
*/
inline DashPackage& WithPeriodTriggers(const Aws::Vector<__PeriodTriggersElement>& value) { SetPeriodTriggers(value); return *this;}
/**
* 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
* Asset contains SCTE-35 ad markers.
*/
inline DashPackage& WithPeriodTriggers(Aws::Vector<__PeriodTriggersElement>&& value) { SetPeriodTriggers(std::move(value)); return *this;}
/**
* 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
* Asset contains SCTE-35 ad markers.
*/
inline DashPackage& AddPeriodTriggers(const __PeriodTriggersElement& value) { m_periodTriggersHasBeenSet = true; m_periodTriggers.push_back(value); return *this; }
/**
* 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
* Asset contains SCTE-35 ad markers.
*/
inline DashPackage& AddPeriodTriggers(__PeriodTriggersElement&& value) { m_periodTriggersHasBeenSet = true; m_periodTriggers.push_back(std::move(value)); return *this; }
/**
* Duration (in seconds) of each segment. Actual segments will be
rounded to the
* nearest multiple of the source segment duration.
*/
inline int GetSegmentDurationSeconds() const{ return m_segmentDurationSeconds; }
/**
* Duration (in seconds) of each segment. Actual segments will be
rounded to the
* nearest multiple of the source segment duration.
*/
inline bool SegmentDurationSecondsHasBeenSet() const { return m_segmentDurationSecondsHasBeenSet; }
/**
* Duration (in seconds) of each segment. Actual segments will be
rounded to the
* nearest multiple of the source segment duration.
*/
inline void SetSegmentDurationSeconds(int value) { m_segmentDurationSecondsHasBeenSet = true; m_segmentDurationSeconds = value; }
/**
* Duration (in seconds) of each segment. Actual segments will be
rounded to the
* nearest multiple of the source segment duration.
*/
inline DashPackage& WithSegmentDurationSeconds(int value) { SetSegmentDurationSeconds(value); return *this;}
/**
* 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.
*/
inline const SegmentTemplateFormat& GetSegmentTemplateFormat() const{ return m_segmentTemplateFormat; }
/**
* 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.
*/
inline bool SegmentTemplateFormatHasBeenSet() const { return m_segmentTemplateFormatHasBeenSet; }
/**
* 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.
*/
inline void SetSegmentTemplateFormat(const SegmentTemplateFormat& value) { m_segmentTemplateFormatHasBeenSet = true; m_segmentTemplateFormat = value; }
/**
* 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.
*/
inline void SetSegmentTemplateFormat(SegmentTemplateFormat&& value) { m_segmentTemplateFormatHasBeenSet = true; m_segmentTemplateFormat = std::move(value); }
/**
* 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.
*/
inline DashPackage& WithSegmentTemplateFormat(const SegmentTemplateFormat& value) { SetSegmentTemplateFormat(value); return *this;}
/**
* 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.
*/
inline DashPackage& WithSegmentTemplateFormat(SegmentTemplateFormat&& value) { SetSegmentTemplateFormat(std::move(value)); return *this;}
private:
Aws::Vector m_dashManifests;
bool m_dashManifestsHasBeenSet = false;
DashEncryption m_encryption;
bool m_encryptionHasBeenSet = false;
bool m_includeEncoderConfigurationInSegments;
bool m_includeEncoderConfigurationInSegmentsHasBeenSet = false;
bool m_includeIframeOnlyStream;
bool m_includeIframeOnlyStreamHasBeenSet = false;
Aws::Vector<__PeriodTriggersElement> m_periodTriggers;
bool m_periodTriggersHasBeenSet = false;
int m_segmentDurationSeconds;
bool m_segmentDurationSecondsHasBeenSet = false;
SegmentTemplateFormat m_segmentTemplateFormat;
bool m_segmentTemplateFormatHasBeenSet = false;
};
} // namespace Model
} // namespace MediaPackageVod
} // namespace Aws