1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/medialive/MediaLive_EXPORTS.h>
8 #include <aws/medialive/model/HlsH265PackagingType.h>
9 #include <aws/medialive/model/HlsSettings.h>
10 #include <aws/core/utils/memory/stl/AWSString.h>
11 #include <utility>
12 
13 namespace Aws
14 {
15 namespace Utils
16 {
17 namespace Json
18 {
19   class JsonValue;
20   class JsonView;
21 } // namespace Json
22 } // namespace Utils
23 namespace MediaLive
24 {
25 namespace Model
26 {
27 
28   /**
29    * Hls Output Settings<p><h3>See Also:</h3>   <a
30    * href="http://docs.aws.amazon.com/goto/WebAPI/medialive-2017-10-14/HlsOutputSettings">AWS
31    * API Reference</a></p>
32    */
33   class AWS_MEDIALIVE_API HlsOutputSettings
34   {
35   public:
36     HlsOutputSettings();
37     HlsOutputSettings(Aws::Utils::Json::JsonView jsonValue);
38     HlsOutputSettings& operator=(Aws::Utils::Json::JsonView jsonValue);
39     Aws::Utils::Json::JsonValue Jsonize() const;
40 
41 
42     /**
43      * Only applicable when this output is referencing an H.265 video
44      * description.
45 Specifies whether MP4 segments should be packaged as HEV1 or HVC1.
46      */
GetH265PackagingType()47     inline const HlsH265PackagingType& GetH265PackagingType() const{ return m_h265PackagingType; }
48 
49     /**
50      * Only applicable when this output is referencing an H.265 video
51      * description.
52 Specifies whether MP4 segments should be packaged as HEV1 or HVC1.
53      */
H265PackagingTypeHasBeenSet()54     inline bool H265PackagingTypeHasBeenSet() const { return m_h265PackagingTypeHasBeenSet; }
55 
56     /**
57      * Only applicable when this output is referencing an H.265 video
58      * description.
59 Specifies whether MP4 segments should be packaged as HEV1 or HVC1.
60      */
SetH265PackagingType(const HlsH265PackagingType & value)61     inline void SetH265PackagingType(const HlsH265PackagingType& value) { m_h265PackagingTypeHasBeenSet = true; m_h265PackagingType = value; }
62 
63     /**
64      * Only applicable when this output is referencing an H.265 video
65      * description.
66 Specifies whether MP4 segments should be packaged as HEV1 or HVC1.
67      */
SetH265PackagingType(HlsH265PackagingType && value)68     inline void SetH265PackagingType(HlsH265PackagingType&& value) { m_h265PackagingTypeHasBeenSet = true; m_h265PackagingType = std::move(value); }
69 
70     /**
71      * Only applicable when this output is referencing an H.265 video
72      * description.
73 Specifies whether MP4 segments should be packaged as HEV1 or HVC1.
74      */
WithH265PackagingType(const HlsH265PackagingType & value)75     inline HlsOutputSettings& WithH265PackagingType(const HlsH265PackagingType& value) { SetH265PackagingType(value); return *this;}
76 
77     /**
78      * Only applicable when this output is referencing an H.265 video
79      * description.
80 Specifies whether MP4 segments should be packaged as HEV1 or HVC1.
81      */
WithH265PackagingType(HlsH265PackagingType && value)82     inline HlsOutputSettings& WithH265PackagingType(HlsH265PackagingType&& value) { SetH265PackagingType(std::move(value)); return *this;}
83 
84 
85     /**
86      * Settings regarding the underlying stream. These settings are different for
87      * audio-only outputs.
88      */
GetHlsSettings()89     inline const HlsSettings& GetHlsSettings() const{ return m_hlsSettings; }
90 
91     /**
92      * Settings regarding the underlying stream. These settings are different for
93      * audio-only outputs.
94      */
HlsSettingsHasBeenSet()95     inline bool HlsSettingsHasBeenSet() const { return m_hlsSettingsHasBeenSet; }
96 
97     /**
98      * Settings regarding the underlying stream. These settings are different for
99      * audio-only outputs.
100      */
SetHlsSettings(const HlsSettings & value)101     inline void SetHlsSettings(const HlsSettings& value) { m_hlsSettingsHasBeenSet = true; m_hlsSettings = value; }
102 
103     /**
104      * Settings regarding the underlying stream. These settings are different for
105      * audio-only outputs.
106      */
SetHlsSettings(HlsSettings && value)107     inline void SetHlsSettings(HlsSettings&& value) { m_hlsSettingsHasBeenSet = true; m_hlsSettings = std::move(value); }
108 
109     /**
110      * Settings regarding the underlying stream. These settings are different for
111      * audio-only outputs.
112      */
WithHlsSettings(const HlsSettings & value)113     inline HlsOutputSettings& WithHlsSettings(const HlsSettings& value) { SetHlsSettings(value); return *this;}
114 
115     /**
116      * Settings regarding the underlying stream. These settings are different for
117      * audio-only outputs.
118      */
WithHlsSettings(HlsSettings && value)119     inline HlsOutputSettings& WithHlsSettings(HlsSettings&& value) { SetHlsSettings(std::move(value)); return *this;}
120 
121 
122     /**
123      * String concatenated to the end of the destination filename. Accepts \"Format
124      * Identifiers\":#formatIdentifierParameters.
125      */
GetNameModifier()126     inline const Aws::String& GetNameModifier() const{ return m_nameModifier; }
127 
128     /**
129      * String concatenated to the end of the destination filename. Accepts \"Format
130      * Identifiers\":#formatIdentifierParameters.
131      */
NameModifierHasBeenSet()132     inline bool NameModifierHasBeenSet() const { return m_nameModifierHasBeenSet; }
133 
134     /**
135      * String concatenated to the end of the destination filename. Accepts \"Format
136      * Identifiers\":#formatIdentifierParameters.
137      */
SetNameModifier(const Aws::String & value)138     inline void SetNameModifier(const Aws::String& value) { m_nameModifierHasBeenSet = true; m_nameModifier = value; }
139 
140     /**
141      * String concatenated to the end of the destination filename. Accepts \"Format
142      * Identifiers\":#formatIdentifierParameters.
143      */
SetNameModifier(Aws::String && value)144     inline void SetNameModifier(Aws::String&& value) { m_nameModifierHasBeenSet = true; m_nameModifier = std::move(value); }
145 
146     /**
147      * String concatenated to the end of the destination filename. Accepts \"Format
148      * Identifiers\":#formatIdentifierParameters.
149      */
SetNameModifier(const char * value)150     inline void SetNameModifier(const char* value) { m_nameModifierHasBeenSet = true; m_nameModifier.assign(value); }
151 
152     /**
153      * String concatenated to the end of the destination filename. Accepts \"Format
154      * Identifiers\":#formatIdentifierParameters.
155      */
WithNameModifier(const Aws::String & value)156     inline HlsOutputSettings& WithNameModifier(const Aws::String& value) { SetNameModifier(value); return *this;}
157 
158     /**
159      * String concatenated to the end of the destination filename. Accepts \"Format
160      * Identifiers\":#formatIdentifierParameters.
161      */
WithNameModifier(Aws::String && value)162     inline HlsOutputSettings& WithNameModifier(Aws::String&& value) { SetNameModifier(std::move(value)); return *this;}
163 
164     /**
165      * String concatenated to the end of the destination filename. Accepts \"Format
166      * Identifiers\":#formatIdentifierParameters.
167      */
WithNameModifier(const char * value)168     inline HlsOutputSettings& WithNameModifier(const char* value) { SetNameModifier(value); return *this;}
169 
170 
171     /**
172      * String concatenated to end of segment filenames.
173      */
GetSegmentModifier()174     inline const Aws::String& GetSegmentModifier() const{ return m_segmentModifier; }
175 
176     /**
177      * String concatenated to end of segment filenames.
178      */
SegmentModifierHasBeenSet()179     inline bool SegmentModifierHasBeenSet() const { return m_segmentModifierHasBeenSet; }
180 
181     /**
182      * String concatenated to end of segment filenames.
183      */
SetSegmentModifier(const Aws::String & value)184     inline void SetSegmentModifier(const Aws::String& value) { m_segmentModifierHasBeenSet = true; m_segmentModifier = value; }
185 
186     /**
187      * String concatenated to end of segment filenames.
188      */
SetSegmentModifier(Aws::String && value)189     inline void SetSegmentModifier(Aws::String&& value) { m_segmentModifierHasBeenSet = true; m_segmentModifier = std::move(value); }
190 
191     /**
192      * String concatenated to end of segment filenames.
193      */
SetSegmentModifier(const char * value)194     inline void SetSegmentModifier(const char* value) { m_segmentModifierHasBeenSet = true; m_segmentModifier.assign(value); }
195 
196     /**
197      * String concatenated to end of segment filenames.
198      */
WithSegmentModifier(const Aws::String & value)199     inline HlsOutputSettings& WithSegmentModifier(const Aws::String& value) { SetSegmentModifier(value); return *this;}
200 
201     /**
202      * String concatenated to end of segment filenames.
203      */
WithSegmentModifier(Aws::String && value)204     inline HlsOutputSettings& WithSegmentModifier(Aws::String&& value) { SetSegmentModifier(std::move(value)); return *this;}
205 
206     /**
207      * String concatenated to end of segment filenames.
208      */
WithSegmentModifier(const char * value)209     inline HlsOutputSettings& WithSegmentModifier(const char* value) { SetSegmentModifier(value); return *this;}
210 
211   private:
212 
213     HlsH265PackagingType m_h265PackagingType;
214     bool m_h265PackagingTypeHasBeenSet;
215 
216     HlsSettings m_hlsSettings;
217     bool m_hlsSettingsHasBeenSet;
218 
219     Aws::String m_nameModifier;
220     bool m_nameModifierHasBeenSet;
221 
222     Aws::String m_segmentModifier;
223     bool m_segmentModifierHasBeenSet;
224   };
225 
226 } // namespace Model
227 } // namespace MediaLive
228 } // namespace Aws
229