/** * 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 AWS_MEDIAPACKAGEVOD_API DashPackage { public: DashPackage(); DashPackage(Aws::Utils::Json::JsonView jsonValue); DashPackage& operator=(Aws::Utils::Json::JsonView jsonValue); 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;} /** * 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; DashEncryption m_encryption; bool m_encryptionHasBeenSet; Aws::Vector<__PeriodTriggersElement> m_periodTriggers; bool m_periodTriggersHasBeenSet; int m_segmentDurationSeconds; bool m_segmentDurationSecondsHasBeenSet; SegmentTemplateFormat m_segmentTemplateFormat; bool m_segmentTemplateFormatHasBeenSet; }; } // namespace Model } // namespace MediaPackageVod } // namespace Aws