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/mediaconvert/MediaConvert_EXPORTS.h>
8 #include <aws/mediaconvert/model/CmfcSettings.h>
9 #include <aws/mediaconvert/model/ContainerType.h>
10 #include <aws/mediaconvert/model/F4vSettings.h>
11 #include <aws/mediaconvert/model/M2tsSettings.h>
12 #include <aws/mediaconvert/model/M3u8Settings.h>
13 #include <aws/mediaconvert/model/MovSettings.h>
14 #include <aws/mediaconvert/model/Mp4Settings.h>
15 #include <aws/mediaconvert/model/MpdSettings.h>
16 #include <aws/mediaconvert/model/MxfSettings.h>
17 #include <utility>
18 
19 namespace Aws
20 {
21 namespace Utils
22 {
23 namespace Json
24 {
25   class JsonValue;
26   class JsonView;
27 } // namespace Json
28 } // namespace Utils
29 namespace MediaConvert
30 {
31 namespace Model
32 {
33 
34   /**
35    * Container specific settings.<p><h3>See Also:</h3>   <a
36    * href="http://docs.aws.amazon.com/goto/WebAPI/mediaconvert-2017-08-29/ContainerSettings">AWS
37    * API Reference</a></p>
38    */
39   class AWS_MEDIACONVERT_API ContainerSettings
40   {
41   public:
42     ContainerSettings();
43     ContainerSettings(Aws::Utils::Json::JsonView jsonValue);
44     ContainerSettings& operator=(Aws::Utils::Json::JsonView jsonValue);
45     Aws::Utils::Json::JsonValue Jsonize() const;
46 
47 
48     /**
49      * These settings relate to the fragmented MP4 container for the segments in your
50      * CMAF outputs.
51      */
GetCmfcSettings()52     inline const CmfcSettings& GetCmfcSettings() const{ return m_cmfcSettings; }
53 
54     /**
55      * These settings relate to the fragmented MP4 container for the segments in your
56      * CMAF outputs.
57      */
CmfcSettingsHasBeenSet()58     inline bool CmfcSettingsHasBeenSet() const { return m_cmfcSettingsHasBeenSet; }
59 
60     /**
61      * These settings relate to the fragmented MP4 container for the segments in your
62      * CMAF outputs.
63      */
SetCmfcSettings(const CmfcSettings & value)64     inline void SetCmfcSettings(const CmfcSettings& value) { m_cmfcSettingsHasBeenSet = true; m_cmfcSettings = value; }
65 
66     /**
67      * These settings relate to the fragmented MP4 container for the segments in your
68      * CMAF outputs.
69      */
SetCmfcSettings(CmfcSettings && value)70     inline void SetCmfcSettings(CmfcSettings&& value) { m_cmfcSettingsHasBeenSet = true; m_cmfcSettings = std::move(value); }
71 
72     /**
73      * These settings relate to the fragmented MP4 container for the segments in your
74      * CMAF outputs.
75      */
WithCmfcSettings(const CmfcSettings & value)76     inline ContainerSettings& WithCmfcSettings(const CmfcSettings& value) { SetCmfcSettings(value); return *this;}
77 
78     /**
79      * These settings relate to the fragmented MP4 container for the segments in your
80      * CMAF outputs.
81      */
WithCmfcSettings(CmfcSettings && value)82     inline ContainerSettings& WithCmfcSettings(CmfcSettings&& value) { SetCmfcSettings(std::move(value)); return *this;}
83 
84 
85     /**
86      * Container for this output. Some containers require a container settings object.
87      * If not specified, the default object will be created.
88      */
GetContainer()89     inline const ContainerType& GetContainer() const{ return m_container; }
90 
91     /**
92      * Container for this output. Some containers require a container settings object.
93      * If not specified, the default object will be created.
94      */
ContainerHasBeenSet()95     inline bool ContainerHasBeenSet() const { return m_containerHasBeenSet; }
96 
97     /**
98      * Container for this output. Some containers require a container settings object.
99      * If not specified, the default object will be created.
100      */
SetContainer(const ContainerType & value)101     inline void SetContainer(const ContainerType& value) { m_containerHasBeenSet = true; m_container = value; }
102 
103     /**
104      * Container for this output. Some containers require a container settings object.
105      * If not specified, the default object will be created.
106      */
SetContainer(ContainerType && value)107     inline void SetContainer(ContainerType&& value) { m_containerHasBeenSet = true; m_container = std::move(value); }
108 
109     /**
110      * Container for this output. Some containers require a container settings object.
111      * If not specified, the default object will be created.
112      */
WithContainer(const ContainerType & value)113     inline ContainerSettings& WithContainer(const ContainerType& value) { SetContainer(value); return *this;}
114 
115     /**
116      * Container for this output. Some containers require a container settings object.
117      * If not specified, the default object will be created.
118      */
WithContainer(ContainerType && value)119     inline ContainerSettings& WithContainer(ContainerType&& value) { SetContainer(std::move(value)); return *this;}
120 
121 
122     /**
123      * Settings for F4v container
124      */
GetF4vSettings()125     inline const F4vSettings& GetF4vSettings() const{ return m_f4vSettings; }
126 
127     /**
128      * Settings for F4v container
129      */
F4vSettingsHasBeenSet()130     inline bool F4vSettingsHasBeenSet() const { return m_f4vSettingsHasBeenSet; }
131 
132     /**
133      * Settings for F4v container
134      */
SetF4vSettings(const F4vSettings & value)135     inline void SetF4vSettings(const F4vSettings& value) { m_f4vSettingsHasBeenSet = true; m_f4vSettings = value; }
136 
137     /**
138      * Settings for F4v container
139      */
SetF4vSettings(F4vSettings && value)140     inline void SetF4vSettings(F4vSettings&& value) { m_f4vSettingsHasBeenSet = true; m_f4vSettings = std::move(value); }
141 
142     /**
143      * Settings for F4v container
144      */
WithF4vSettings(const F4vSettings & value)145     inline ContainerSettings& WithF4vSettings(const F4vSettings& value) { SetF4vSettings(value); return *this;}
146 
147     /**
148      * Settings for F4v container
149      */
WithF4vSettings(F4vSettings && value)150     inline ContainerSettings& WithF4vSettings(F4vSettings&& value) { SetF4vSettings(std::move(value)); return *this;}
151 
152 
153     /**
154      * MPEG-2 TS container settings. These apply to outputs in a File output group when
155      * the output's container (ContainerType) is MPEG-2 Transport Stream (M2TS). In
156      * these assets, data is organized by the program map table (PMT). Each transport
157      * stream program contains subsets of data, including audio, video, and metadata.
158      * Each of these subsets of data has a numerical label called a packet identifier
159      * (PID). Each transport stream program corresponds to one MediaConvert output. The
160      * PMT lists the types of data in a program along with their PID. Downstream
161      * systems and players use the program map table to look up the PID for each type
162      * of data it accesses and then uses the PIDs to locate specific data within the
163      * asset.
164      */
GetM2tsSettings()165     inline const M2tsSettings& GetM2tsSettings() const{ return m_m2tsSettings; }
166 
167     /**
168      * MPEG-2 TS container settings. These apply to outputs in a File output group when
169      * the output's container (ContainerType) is MPEG-2 Transport Stream (M2TS). In
170      * these assets, data is organized by the program map table (PMT). Each transport
171      * stream program contains subsets of data, including audio, video, and metadata.
172      * Each of these subsets of data has a numerical label called a packet identifier
173      * (PID). Each transport stream program corresponds to one MediaConvert output. The
174      * PMT lists the types of data in a program along with their PID. Downstream
175      * systems and players use the program map table to look up the PID for each type
176      * of data it accesses and then uses the PIDs to locate specific data within the
177      * asset.
178      */
M2tsSettingsHasBeenSet()179     inline bool M2tsSettingsHasBeenSet() const { return m_m2tsSettingsHasBeenSet; }
180 
181     /**
182      * MPEG-2 TS container settings. These apply to outputs in a File output group when
183      * the output's container (ContainerType) is MPEG-2 Transport Stream (M2TS). In
184      * these assets, data is organized by the program map table (PMT). Each transport
185      * stream program contains subsets of data, including audio, video, and metadata.
186      * Each of these subsets of data has a numerical label called a packet identifier
187      * (PID). Each transport stream program corresponds to one MediaConvert output. The
188      * PMT lists the types of data in a program along with their PID. Downstream
189      * systems and players use the program map table to look up the PID for each type
190      * of data it accesses and then uses the PIDs to locate specific data within the
191      * asset.
192      */
SetM2tsSettings(const M2tsSettings & value)193     inline void SetM2tsSettings(const M2tsSettings& value) { m_m2tsSettingsHasBeenSet = true; m_m2tsSettings = value; }
194 
195     /**
196      * MPEG-2 TS container settings. These apply to outputs in a File output group when
197      * the output's container (ContainerType) is MPEG-2 Transport Stream (M2TS). In
198      * these assets, data is organized by the program map table (PMT). Each transport
199      * stream program contains subsets of data, including audio, video, and metadata.
200      * Each of these subsets of data has a numerical label called a packet identifier
201      * (PID). Each transport stream program corresponds to one MediaConvert output. The
202      * PMT lists the types of data in a program along with their PID. Downstream
203      * systems and players use the program map table to look up the PID for each type
204      * of data it accesses and then uses the PIDs to locate specific data within the
205      * asset.
206      */
SetM2tsSettings(M2tsSettings && value)207     inline void SetM2tsSettings(M2tsSettings&& value) { m_m2tsSettingsHasBeenSet = true; m_m2tsSettings = std::move(value); }
208 
209     /**
210      * MPEG-2 TS container settings. These apply to outputs in a File output group when
211      * the output's container (ContainerType) is MPEG-2 Transport Stream (M2TS). In
212      * these assets, data is organized by the program map table (PMT). Each transport
213      * stream program contains subsets of data, including audio, video, and metadata.
214      * Each of these subsets of data has a numerical label called a packet identifier
215      * (PID). Each transport stream program corresponds to one MediaConvert output. The
216      * PMT lists the types of data in a program along with their PID. Downstream
217      * systems and players use the program map table to look up the PID for each type
218      * of data it accesses and then uses the PIDs to locate specific data within the
219      * asset.
220      */
WithM2tsSettings(const M2tsSettings & value)221     inline ContainerSettings& WithM2tsSettings(const M2tsSettings& value) { SetM2tsSettings(value); return *this;}
222 
223     /**
224      * MPEG-2 TS container settings. These apply to outputs in a File output group when
225      * the output's container (ContainerType) is MPEG-2 Transport Stream (M2TS). In
226      * these assets, data is organized by the program map table (PMT). Each transport
227      * stream program contains subsets of data, including audio, video, and metadata.
228      * Each of these subsets of data has a numerical label called a packet identifier
229      * (PID). Each transport stream program corresponds to one MediaConvert output. The
230      * PMT lists the types of data in a program along with their PID. Downstream
231      * systems and players use the program map table to look up the PID for each type
232      * of data it accesses and then uses the PIDs to locate specific data within the
233      * asset.
234      */
WithM2tsSettings(M2tsSettings && value)235     inline ContainerSettings& WithM2tsSettings(M2tsSettings&& value) { SetM2tsSettings(std::move(value)); return *this;}
236 
237 
238     /**
239      * These settings relate to the MPEG-2 transport stream (MPEG2-TS) container for
240      * the MPEG2-TS segments in your HLS outputs.
241      */
GetM3u8Settings()242     inline const M3u8Settings& GetM3u8Settings() const{ return m_m3u8Settings; }
243 
244     /**
245      * These settings relate to the MPEG-2 transport stream (MPEG2-TS) container for
246      * the MPEG2-TS segments in your HLS outputs.
247      */
M3u8SettingsHasBeenSet()248     inline bool M3u8SettingsHasBeenSet() const { return m_m3u8SettingsHasBeenSet; }
249 
250     /**
251      * These settings relate to the MPEG-2 transport stream (MPEG2-TS) container for
252      * the MPEG2-TS segments in your HLS outputs.
253      */
SetM3u8Settings(const M3u8Settings & value)254     inline void SetM3u8Settings(const M3u8Settings& value) { m_m3u8SettingsHasBeenSet = true; m_m3u8Settings = value; }
255 
256     /**
257      * These settings relate to the MPEG-2 transport stream (MPEG2-TS) container for
258      * the MPEG2-TS segments in your HLS outputs.
259      */
SetM3u8Settings(M3u8Settings && value)260     inline void SetM3u8Settings(M3u8Settings&& value) { m_m3u8SettingsHasBeenSet = true; m_m3u8Settings = std::move(value); }
261 
262     /**
263      * These settings relate to the MPEG-2 transport stream (MPEG2-TS) container for
264      * the MPEG2-TS segments in your HLS outputs.
265      */
WithM3u8Settings(const M3u8Settings & value)266     inline ContainerSettings& WithM3u8Settings(const M3u8Settings& value) { SetM3u8Settings(value); return *this;}
267 
268     /**
269      * These settings relate to the MPEG-2 transport stream (MPEG2-TS) container for
270      * the MPEG2-TS segments in your HLS outputs.
271      */
WithM3u8Settings(M3u8Settings && value)272     inline ContainerSettings& WithM3u8Settings(M3u8Settings&& value) { SetM3u8Settings(std::move(value)); return *this;}
273 
274 
275     /**
276      * These settings relate to your QuickTime MOV output container.
277      */
GetMovSettings()278     inline const MovSettings& GetMovSettings() const{ return m_movSettings; }
279 
280     /**
281      * These settings relate to your QuickTime MOV output container.
282      */
MovSettingsHasBeenSet()283     inline bool MovSettingsHasBeenSet() const { return m_movSettingsHasBeenSet; }
284 
285     /**
286      * These settings relate to your QuickTime MOV output container.
287      */
SetMovSettings(const MovSettings & value)288     inline void SetMovSettings(const MovSettings& value) { m_movSettingsHasBeenSet = true; m_movSettings = value; }
289 
290     /**
291      * These settings relate to your QuickTime MOV output container.
292      */
SetMovSettings(MovSettings && value)293     inline void SetMovSettings(MovSettings&& value) { m_movSettingsHasBeenSet = true; m_movSettings = std::move(value); }
294 
295     /**
296      * These settings relate to your QuickTime MOV output container.
297      */
WithMovSettings(const MovSettings & value)298     inline ContainerSettings& WithMovSettings(const MovSettings& value) { SetMovSettings(value); return *this;}
299 
300     /**
301      * These settings relate to your QuickTime MOV output container.
302      */
WithMovSettings(MovSettings && value)303     inline ContainerSettings& WithMovSettings(MovSettings&& value) { SetMovSettings(std::move(value)); return *this;}
304 
305 
306     /**
307      * These settings relate to your MP4 output container. You can create audio only
308      * outputs with this container. For more information, see
309      * https://docs.aws.amazon.com/mediaconvert/latest/ug/supported-codecs-containers-audio-only.html#output-codecs-and-containers-supported-for-audio-only.
310      */
GetMp4Settings()311     inline const Mp4Settings& GetMp4Settings() const{ return m_mp4Settings; }
312 
313     /**
314      * These settings relate to your MP4 output container. You can create audio only
315      * outputs with this container. For more information, see
316      * https://docs.aws.amazon.com/mediaconvert/latest/ug/supported-codecs-containers-audio-only.html#output-codecs-and-containers-supported-for-audio-only.
317      */
Mp4SettingsHasBeenSet()318     inline bool Mp4SettingsHasBeenSet() const { return m_mp4SettingsHasBeenSet; }
319 
320     /**
321      * These settings relate to your MP4 output container. You can create audio only
322      * outputs with this container. For more information, see
323      * https://docs.aws.amazon.com/mediaconvert/latest/ug/supported-codecs-containers-audio-only.html#output-codecs-and-containers-supported-for-audio-only.
324      */
SetMp4Settings(const Mp4Settings & value)325     inline void SetMp4Settings(const Mp4Settings& value) { m_mp4SettingsHasBeenSet = true; m_mp4Settings = value; }
326 
327     /**
328      * These settings relate to your MP4 output container. You can create audio only
329      * outputs with this container. For more information, see
330      * https://docs.aws.amazon.com/mediaconvert/latest/ug/supported-codecs-containers-audio-only.html#output-codecs-and-containers-supported-for-audio-only.
331      */
SetMp4Settings(Mp4Settings && value)332     inline void SetMp4Settings(Mp4Settings&& value) { m_mp4SettingsHasBeenSet = true; m_mp4Settings = std::move(value); }
333 
334     /**
335      * These settings relate to your MP4 output container. You can create audio only
336      * outputs with this container. For more information, see
337      * https://docs.aws.amazon.com/mediaconvert/latest/ug/supported-codecs-containers-audio-only.html#output-codecs-and-containers-supported-for-audio-only.
338      */
WithMp4Settings(const Mp4Settings & value)339     inline ContainerSettings& WithMp4Settings(const Mp4Settings& value) { SetMp4Settings(value); return *this;}
340 
341     /**
342      * These settings relate to your MP4 output container. You can create audio only
343      * outputs with this container. For more information, see
344      * https://docs.aws.amazon.com/mediaconvert/latest/ug/supported-codecs-containers-audio-only.html#output-codecs-and-containers-supported-for-audio-only.
345      */
WithMp4Settings(Mp4Settings && value)346     inline ContainerSettings& WithMp4Settings(Mp4Settings&& value) { SetMp4Settings(std::move(value)); return *this;}
347 
348 
349     /**
350      * These settings relate to the fragmented MP4 container for the segments in your
351      * DASH outputs.
352      */
GetMpdSettings()353     inline const MpdSettings& GetMpdSettings() const{ return m_mpdSettings; }
354 
355     /**
356      * These settings relate to the fragmented MP4 container for the segments in your
357      * DASH outputs.
358      */
MpdSettingsHasBeenSet()359     inline bool MpdSettingsHasBeenSet() const { return m_mpdSettingsHasBeenSet; }
360 
361     /**
362      * These settings relate to the fragmented MP4 container for the segments in your
363      * DASH outputs.
364      */
SetMpdSettings(const MpdSettings & value)365     inline void SetMpdSettings(const MpdSettings& value) { m_mpdSettingsHasBeenSet = true; m_mpdSettings = value; }
366 
367     /**
368      * These settings relate to the fragmented MP4 container for the segments in your
369      * DASH outputs.
370      */
SetMpdSettings(MpdSettings && value)371     inline void SetMpdSettings(MpdSettings&& value) { m_mpdSettingsHasBeenSet = true; m_mpdSettings = std::move(value); }
372 
373     /**
374      * These settings relate to the fragmented MP4 container for the segments in your
375      * DASH outputs.
376      */
WithMpdSettings(const MpdSettings & value)377     inline ContainerSettings& WithMpdSettings(const MpdSettings& value) { SetMpdSettings(value); return *this;}
378 
379     /**
380      * These settings relate to the fragmented MP4 container for the segments in your
381      * DASH outputs.
382      */
WithMpdSettings(MpdSettings && value)383     inline ContainerSettings& WithMpdSettings(MpdSettings&& value) { SetMpdSettings(std::move(value)); return *this;}
384 
385 
386     /**
387      * These settings relate to your MXF output container.
388      */
GetMxfSettings()389     inline const MxfSettings& GetMxfSettings() const{ return m_mxfSettings; }
390 
391     /**
392      * These settings relate to your MXF output container.
393      */
MxfSettingsHasBeenSet()394     inline bool MxfSettingsHasBeenSet() const { return m_mxfSettingsHasBeenSet; }
395 
396     /**
397      * These settings relate to your MXF output container.
398      */
SetMxfSettings(const MxfSettings & value)399     inline void SetMxfSettings(const MxfSettings& value) { m_mxfSettingsHasBeenSet = true; m_mxfSettings = value; }
400 
401     /**
402      * These settings relate to your MXF output container.
403      */
SetMxfSettings(MxfSettings && value)404     inline void SetMxfSettings(MxfSettings&& value) { m_mxfSettingsHasBeenSet = true; m_mxfSettings = std::move(value); }
405 
406     /**
407      * These settings relate to your MXF output container.
408      */
WithMxfSettings(const MxfSettings & value)409     inline ContainerSettings& WithMxfSettings(const MxfSettings& value) { SetMxfSettings(value); return *this;}
410 
411     /**
412      * These settings relate to your MXF output container.
413      */
WithMxfSettings(MxfSettings && value)414     inline ContainerSettings& WithMxfSettings(MxfSettings&& value) { SetMxfSettings(std::move(value)); return *this;}
415 
416   private:
417 
418     CmfcSettings m_cmfcSettings;
419     bool m_cmfcSettingsHasBeenSet;
420 
421     ContainerType m_container;
422     bool m_containerHasBeenSet;
423 
424     F4vSettings m_f4vSettings;
425     bool m_f4vSettingsHasBeenSet;
426 
427     M2tsSettings m_m2tsSettings;
428     bool m_m2tsSettingsHasBeenSet;
429 
430     M3u8Settings m_m3u8Settings;
431     bool m_m3u8SettingsHasBeenSet;
432 
433     MovSettings m_movSettings;
434     bool m_movSettingsHasBeenSet;
435 
436     Mp4Settings m_mp4Settings;
437     bool m_mp4SettingsHasBeenSet;
438 
439     MpdSettings m_mpdSettings;
440     bool m_mpdSettingsHasBeenSet;
441 
442     MxfSettings m_mxfSettings;
443     bool m_mxfSettingsHasBeenSet;
444   };
445 
446 } // namespace Model
447 } // namespace MediaConvert
448 } // namespace Aws
449