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/core/utils/memory/stl/AWSVector.h>
9 #include <aws/medialive/model/InputDeblockFilter.h>
10 #include <aws/medialive/model/InputDenoiseFilter.h>
11 #include <aws/medialive/model/InputFilter.h>
12 #include <aws/medialive/model/NetworkInputSettings.h>
13 #include <aws/medialive/model/Smpte2038DataPreference.h>
14 #include <aws/medialive/model/InputSourceEndBehavior.h>
15 #include <aws/medialive/model/VideoSelector.h>
16 #include <aws/medialive/model/AudioSelector.h>
17 #include <aws/medialive/model/CaptionSelector.h>
18 #include <utility>
19 
20 namespace Aws
21 {
22 namespace Utils
23 {
24 namespace Json
25 {
26   class JsonValue;
27   class JsonView;
28 } // namespace Json
29 } // namespace Utils
30 namespace MediaLive
31 {
32 namespace Model
33 {
34 
35   /**
36    * Live Event input parameters. There can be multiple inputs in a single Live
37    * Event.<p><h3>See Also:</h3>   <a
38    * href="http://docs.aws.amazon.com/goto/WebAPI/medialive-2017-10-14/InputSettings">AWS
39    * API Reference</a></p>
40    */
41   class AWS_MEDIALIVE_API InputSettings
42   {
43   public:
44     InputSettings();
45     InputSettings(Aws::Utils::Json::JsonView jsonValue);
46     InputSettings& operator=(Aws::Utils::Json::JsonView jsonValue);
47     Aws::Utils::Json::JsonValue Jsonize() const;
48 
49 
50     /**
51      * Used to select the audio stream to decode for inputs that have multiple
52      * available.
53      */
GetAudioSelectors()54     inline const Aws::Vector<AudioSelector>& GetAudioSelectors() const{ return m_audioSelectors; }
55 
56     /**
57      * Used to select the audio stream to decode for inputs that have multiple
58      * available.
59      */
AudioSelectorsHasBeenSet()60     inline bool AudioSelectorsHasBeenSet() const { return m_audioSelectorsHasBeenSet; }
61 
62     /**
63      * Used to select the audio stream to decode for inputs that have multiple
64      * available.
65      */
SetAudioSelectors(const Aws::Vector<AudioSelector> & value)66     inline void SetAudioSelectors(const Aws::Vector<AudioSelector>& value) { m_audioSelectorsHasBeenSet = true; m_audioSelectors = value; }
67 
68     /**
69      * Used to select the audio stream to decode for inputs that have multiple
70      * available.
71      */
SetAudioSelectors(Aws::Vector<AudioSelector> && value)72     inline void SetAudioSelectors(Aws::Vector<AudioSelector>&& value) { m_audioSelectorsHasBeenSet = true; m_audioSelectors = std::move(value); }
73 
74     /**
75      * Used to select the audio stream to decode for inputs that have multiple
76      * available.
77      */
WithAudioSelectors(const Aws::Vector<AudioSelector> & value)78     inline InputSettings& WithAudioSelectors(const Aws::Vector<AudioSelector>& value) { SetAudioSelectors(value); return *this;}
79 
80     /**
81      * Used to select the audio stream to decode for inputs that have multiple
82      * available.
83      */
WithAudioSelectors(Aws::Vector<AudioSelector> && value)84     inline InputSettings& WithAudioSelectors(Aws::Vector<AudioSelector>&& value) { SetAudioSelectors(std::move(value)); return *this;}
85 
86     /**
87      * Used to select the audio stream to decode for inputs that have multiple
88      * available.
89      */
AddAudioSelectors(const AudioSelector & value)90     inline InputSettings& AddAudioSelectors(const AudioSelector& value) { m_audioSelectorsHasBeenSet = true; m_audioSelectors.push_back(value); return *this; }
91 
92     /**
93      * Used to select the audio stream to decode for inputs that have multiple
94      * available.
95      */
AddAudioSelectors(AudioSelector && value)96     inline InputSettings& AddAudioSelectors(AudioSelector&& value) { m_audioSelectorsHasBeenSet = true; m_audioSelectors.push_back(std::move(value)); return *this; }
97 
98 
99     /**
100      * Used to select the caption input to use for inputs that have multiple available.
101      */
GetCaptionSelectors()102     inline const Aws::Vector<CaptionSelector>& GetCaptionSelectors() const{ return m_captionSelectors; }
103 
104     /**
105      * Used to select the caption input to use for inputs that have multiple available.
106      */
CaptionSelectorsHasBeenSet()107     inline bool CaptionSelectorsHasBeenSet() const { return m_captionSelectorsHasBeenSet; }
108 
109     /**
110      * Used to select the caption input to use for inputs that have multiple available.
111      */
SetCaptionSelectors(const Aws::Vector<CaptionSelector> & value)112     inline void SetCaptionSelectors(const Aws::Vector<CaptionSelector>& value) { m_captionSelectorsHasBeenSet = true; m_captionSelectors = value; }
113 
114     /**
115      * Used to select the caption input to use for inputs that have multiple available.
116      */
SetCaptionSelectors(Aws::Vector<CaptionSelector> && value)117     inline void SetCaptionSelectors(Aws::Vector<CaptionSelector>&& value) { m_captionSelectorsHasBeenSet = true; m_captionSelectors = std::move(value); }
118 
119     /**
120      * Used to select the caption input to use for inputs that have multiple available.
121      */
WithCaptionSelectors(const Aws::Vector<CaptionSelector> & value)122     inline InputSettings& WithCaptionSelectors(const Aws::Vector<CaptionSelector>& value) { SetCaptionSelectors(value); return *this;}
123 
124     /**
125      * Used to select the caption input to use for inputs that have multiple available.
126      */
WithCaptionSelectors(Aws::Vector<CaptionSelector> && value)127     inline InputSettings& WithCaptionSelectors(Aws::Vector<CaptionSelector>&& value) { SetCaptionSelectors(std::move(value)); return *this;}
128 
129     /**
130      * Used to select the caption input to use for inputs that have multiple available.
131      */
AddCaptionSelectors(const CaptionSelector & value)132     inline InputSettings& AddCaptionSelectors(const CaptionSelector& value) { m_captionSelectorsHasBeenSet = true; m_captionSelectors.push_back(value); return *this; }
133 
134     /**
135      * Used to select the caption input to use for inputs that have multiple available.
136      */
AddCaptionSelectors(CaptionSelector && value)137     inline InputSettings& AddCaptionSelectors(CaptionSelector&& value) { m_captionSelectorsHasBeenSet = true; m_captionSelectors.push_back(std::move(value)); return *this; }
138 
139 
140     /**
141      * Enable or disable the deblock filter when filtering.
142      */
GetDeblockFilter()143     inline const InputDeblockFilter& GetDeblockFilter() const{ return m_deblockFilter; }
144 
145     /**
146      * Enable or disable the deblock filter when filtering.
147      */
DeblockFilterHasBeenSet()148     inline bool DeblockFilterHasBeenSet() const { return m_deblockFilterHasBeenSet; }
149 
150     /**
151      * Enable or disable the deblock filter when filtering.
152      */
SetDeblockFilter(const InputDeblockFilter & value)153     inline void SetDeblockFilter(const InputDeblockFilter& value) { m_deblockFilterHasBeenSet = true; m_deblockFilter = value; }
154 
155     /**
156      * Enable or disable the deblock filter when filtering.
157      */
SetDeblockFilter(InputDeblockFilter && value)158     inline void SetDeblockFilter(InputDeblockFilter&& value) { m_deblockFilterHasBeenSet = true; m_deblockFilter = std::move(value); }
159 
160     /**
161      * Enable or disable the deblock filter when filtering.
162      */
WithDeblockFilter(const InputDeblockFilter & value)163     inline InputSettings& WithDeblockFilter(const InputDeblockFilter& value) { SetDeblockFilter(value); return *this;}
164 
165     /**
166      * Enable or disable the deblock filter when filtering.
167      */
WithDeblockFilter(InputDeblockFilter && value)168     inline InputSettings& WithDeblockFilter(InputDeblockFilter&& value) { SetDeblockFilter(std::move(value)); return *this;}
169 
170 
171     /**
172      * Enable or disable the denoise filter when filtering.
173      */
GetDenoiseFilter()174     inline const InputDenoiseFilter& GetDenoiseFilter() const{ return m_denoiseFilter; }
175 
176     /**
177      * Enable or disable the denoise filter when filtering.
178      */
DenoiseFilterHasBeenSet()179     inline bool DenoiseFilterHasBeenSet() const { return m_denoiseFilterHasBeenSet; }
180 
181     /**
182      * Enable or disable the denoise filter when filtering.
183      */
SetDenoiseFilter(const InputDenoiseFilter & value)184     inline void SetDenoiseFilter(const InputDenoiseFilter& value) { m_denoiseFilterHasBeenSet = true; m_denoiseFilter = value; }
185 
186     /**
187      * Enable or disable the denoise filter when filtering.
188      */
SetDenoiseFilter(InputDenoiseFilter && value)189     inline void SetDenoiseFilter(InputDenoiseFilter&& value) { m_denoiseFilterHasBeenSet = true; m_denoiseFilter = std::move(value); }
190 
191     /**
192      * Enable or disable the denoise filter when filtering.
193      */
WithDenoiseFilter(const InputDenoiseFilter & value)194     inline InputSettings& WithDenoiseFilter(const InputDenoiseFilter& value) { SetDenoiseFilter(value); return *this;}
195 
196     /**
197      * Enable or disable the denoise filter when filtering.
198      */
WithDenoiseFilter(InputDenoiseFilter && value)199     inline InputSettings& WithDenoiseFilter(InputDenoiseFilter&& value) { SetDenoiseFilter(std::move(value)); return *this;}
200 
201 
202     /**
203      * Adjusts the magnitude of filtering from 1 (minimal) to 5 (strongest).
204      */
GetFilterStrength()205     inline int GetFilterStrength() const{ return m_filterStrength; }
206 
207     /**
208      * Adjusts the magnitude of filtering from 1 (minimal) to 5 (strongest).
209      */
FilterStrengthHasBeenSet()210     inline bool FilterStrengthHasBeenSet() const { return m_filterStrengthHasBeenSet; }
211 
212     /**
213      * Adjusts the magnitude of filtering from 1 (minimal) to 5 (strongest).
214      */
SetFilterStrength(int value)215     inline void SetFilterStrength(int value) { m_filterStrengthHasBeenSet = true; m_filterStrength = value; }
216 
217     /**
218      * Adjusts the magnitude of filtering from 1 (minimal) to 5 (strongest).
219      */
WithFilterStrength(int value)220     inline InputSettings& WithFilterStrength(int value) { SetFilterStrength(value); return *this;}
221 
222 
223     /**
224      * Turns on the filter for this input. MPEG-2 inputs have the deblocking filter
225      * enabled by default.
226 1) auto - filtering will be applied depending on input
227      * type/quality
228 2) disabled - no filtering will be applied to the input
229 3) forced -
230      * filtering will be applied regardless of input type
231      */
GetInputFilter()232     inline const InputFilter& GetInputFilter() const{ return m_inputFilter; }
233 
234     /**
235      * Turns on the filter for this input. MPEG-2 inputs have the deblocking filter
236      * enabled by default.
237 1) auto - filtering will be applied depending on input
238      * type/quality
239 2) disabled - no filtering will be applied to the input
240 3) forced -
241      * filtering will be applied regardless of input type
242      */
InputFilterHasBeenSet()243     inline bool InputFilterHasBeenSet() const { return m_inputFilterHasBeenSet; }
244 
245     /**
246      * Turns on the filter for this input. MPEG-2 inputs have the deblocking filter
247      * enabled by default.
248 1) auto - filtering will be applied depending on input
249      * type/quality
250 2) disabled - no filtering will be applied to the input
251 3) forced -
252      * filtering will be applied regardless of input type
253      */
SetInputFilter(const InputFilter & value)254     inline void SetInputFilter(const InputFilter& value) { m_inputFilterHasBeenSet = true; m_inputFilter = value; }
255 
256     /**
257      * Turns on the filter for this input. MPEG-2 inputs have the deblocking filter
258      * enabled by default.
259 1) auto - filtering will be applied depending on input
260      * type/quality
261 2) disabled - no filtering will be applied to the input
262 3) forced -
263      * filtering will be applied regardless of input type
264      */
SetInputFilter(InputFilter && value)265     inline void SetInputFilter(InputFilter&& value) { m_inputFilterHasBeenSet = true; m_inputFilter = std::move(value); }
266 
267     /**
268      * Turns on the filter for this input. MPEG-2 inputs have the deblocking filter
269      * enabled by default.
270 1) auto - filtering will be applied depending on input
271      * type/quality
272 2) disabled - no filtering will be applied to the input
273 3) forced -
274      * filtering will be applied regardless of input type
275      */
WithInputFilter(const InputFilter & value)276     inline InputSettings& WithInputFilter(const InputFilter& value) { SetInputFilter(value); return *this;}
277 
278     /**
279      * Turns on the filter for this input. MPEG-2 inputs have the deblocking filter
280      * enabled by default.
281 1) auto - filtering will be applied depending on input
282      * type/quality
283 2) disabled - no filtering will be applied to the input
284 3) forced -
285      * filtering will be applied regardless of input type
286      */
WithInputFilter(InputFilter && value)287     inline InputSettings& WithInputFilter(InputFilter&& value) { SetInputFilter(std::move(value)); return *this;}
288 
289 
290     /**
291      * Input settings.
292      */
GetNetworkInputSettings()293     inline const NetworkInputSettings& GetNetworkInputSettings() const{ return m_networkInputSettings; }
294 
295     /**
296      * Input settings.
297      */
NetworkInputSettingsHasBeenSet()298     inline bool NetworkInputSettingsHasBeenSet() const { return m_networkInputSettingsHasBeenSet; }
299 
300     /**
301      * Input settings.
302      */
SetNetworkInputSettings(const NetworkInputSettings & value)303     inline void SetNetworkInputSettings(const NetworkInputSettings& value) { m_networkInputSettingsHasBeenSet = true; m_networkInputSettings = value; }
304 
305     /**
306      * Input settings.
307      */
SetNetworkInputSettings(NetworkInputSettings && value)308     inline void SetNetworkInputSettings(NetworkInputSettings&& value) { m_networkInputSettingsHasBeenSet = true; m_networkInputSettings = std::move(value); }
309 
310     /**
311      * Input settings.
312      */
WithNetworkInputSettings(const NetworkInputSettings & value)313     inline InputSettings& WithNetworkInputSettings(const NetworkInputSettings& value) { SetNetworkInputSettings(value); return *this;}
314 
315     /**
316      * Input settings.
317      */
WithNetworkInputSettings(NetworkInputSettings && value)318     inline InputSettings& WithNetworkInputSettings(NetworkInputSettings&& value) { SetNetworkInputSettings(std::move(value)); return *this;}
319 
320 
321     /**
322      * Specifies whether to extract applicable ancillary data from a SMPTE-2038 source
323      * in this input. Applicable data types are captions, timecode, AFD, and SCTE-104
324      * messages.
325 - PREFER: Extract from SMPTE-2038 if present in this input, otherwise
326      * extract from another source (if any).
327 - IGNORE: Never extract any ancillary data
328      * from SMPTE-2038.
329      */
GetSmpte2038DataPreference()330     inline const Smpte2038DataPreference& GetSmpte2038DataPreference() const{ return m_smpte2038DataPreference; }
331 
332     /**
333      * Specifies whether to extract applicable ancillary data from a SMPTE-2038 source
334      * in this input. Applicable data types are captions, timecode, AFD, and SCTE-104
335      * messages.
336 - PREFER: Extract from SMPTE-2038 if present in this input, otherwise
337      * extract from another source (if any).
338 - IGNORE: Never extract any ancillary data
339      * from SMPTE-2038.
340      */
Smpte2038DataPreferenceHasBeenSet()341     inline bool Smpte2038DataPreferenceHasBeenSet() const { return m_smpte2038DataPreferenceHasBeenSet; }
342 
343     /**
344      * Specifies whether to extract applicable ancillary data from a SMPTE-2038 source
345      * in this input. Applicable data types are captions, timecode, AFD, and SCTE-104
346      * messages.
347 - PREFER: Extract from SMPTE-2038 if present in this input, otherwise
348      * extract from another source (if any).
349 - IGNORE: Never extract any ancillary data
350      * from SMPTE-2038.
351      */
SetSmpte2038DataPreference(const Smpte2038DataPreference & value)352     inline void SetSmpte2038DataPreference(const Smpte2038DataPreference& value) { m_smpte2038DataPreferenceHasBeenSet = true; m_smpte2038DataPreference = value; }
353 
354     /**
355      * Specifies whether to extract applicable ancillary data from a SMPTE-2038 source
356      * in this input. Applicable data types are captions, timecode, AFD, and SCTE-104
357      * messages.
358 - PREFER: Extract from SMPTE-2038 if present in this input, otherwise
359      * extract from another source (if any).
360 - IGNORE: Never extract any ancillary data
361      * from SMPTE-2038.
362      */
SetSmpte2038DataPreference(Smpte2038DataPreference && value)363     inline void SetSmpte2038DataPreference(Smpte2038DataPreference&& value) { m_smpte2038DataPreferenceHasBeenSet = true; m_smpte2038DataPreference = std::move(value); }
364 
365     /**
366      * Specifies whether to extract applicable ancillary data from a SMPTE-2038 source
367      * in this input. Applicable data types are captions, timecode, AFD, and SCTE-104
368      * messages.
369 - PREFER: Extract from SMPTE-2038 if present in this input, otherwise
370      * extract from another source (if any).
371 - IGNORE: Never extract any ancillary data
372      * from SMPTE-2038.
373      */
WithSmpte2038DataPreference(const Smpte2038DataPreference & value)374     inline InputSettings& WithSmpte2038DataPreference(const Smpte2038DataPreference& value) { SetSmpte2038DataPreference(value); return *this;}
375 
376     /**
377      * Specifies whether to extract applicable ancillary data from a SMPTE-2038 source
378      * in this input. Applicable data types are captions, timecode, AFD, and SCTE-104
379      * messages.
380 - PREFER: Extract from SMPTE-2038 if present in this input, otherwise
381      * extract from another source (if any).
382 - IGNORE: Never extract any ancillary data
383      * from SMPTE-2038.
384      */
WithSmpte2038DataPreference(Smpte2038DataPreference && value)385     inline InputSettings& WithSmpte2038DataPreference(Smpte2038DataPreference&& value) { SetSmpte2038DataPreference(std::move(value)); return *this;}
386 
387 
388     /**
389      * Loop input if it is a file. This allows a file input to be streamed
390      * indefinitely.
391      */
GetSourceEndBehavior()392     inline const InputSourceEndBehavior& GetSourceEndBehavior() const{ return m_sourceEndBehavior; }
393 
394     /**
395      * Loop input if it is a file. This allows a file input to be streamed
396      * indefinitely.
397      */
SourceEndBehaviorHasBeenSet()398     inline bool SourceEndBehaviorHasBeenSet() const { return m_sourceEndBehaviorHasBeenSet; }
399 
400     /**
401      * Loop input if it is a file. This allows a file input to be streamed
402      * indefinitely.
403      */
SetSourceEndBehavior(const InputSourceEndBehavior & value)404     inline void SetSourceEndBehavior(const InputSourceEndBehavior& value) { m_sourceEndBehaviorHasBeenSet = true; m_sourceEndBehavior = value; }
405 
406     /**
407      * Loop input if it is a file. This allows a file input to be streamed
408      * indefinitely.
409      */
SetSourceEndBehavior(InputSourceEndBehavior && value)410     inline void SetSourceEndBehavior(InputSourceEndBehavior&& value) { m_sourceEndBehaviorHasBeenSet = true; m_sourceEndBehavior = std::move(value); }
411 
412     /**
413      * Loop input if it is a file. This allows a file input to be streamed
414      * indefinitely.
415      */
WithSourceEndBehavior(const InputSourceEndBehavior & value)416     inline InputSettings& WithSourceEndBehavior(const InputSourceEndBehavior& value) { SetSourceEndBehavior(value); return *this;}
417 
418     /**
419      * Loop input if it is a file. This allows a file input to be streamed
420      * indefinitely.
421      */
WithSourceEndBehavior(InputSourceEndBehavior && value)422     inline InputSettings& WithSourceEndBehavior(InputSourceEndBehavior&& value) { SetSourceEndBehavior(std::move(value)); return *this;}
423 
424 
425     /**
426      * Informs which video elementary stream to decode for input types that have
427      * multiple available.
428      */
GetVideoSelector()429     inline const VideoSelector& GetVideoSelector() const{ return m_videoSelector; }
430 
431     /**
432      * Informs which video elementary stream to decode for input types that have
433      * multiple available.
434      */
VideoSelectorHasBeenSet()435     inline bool VideoSelectorHasBeenSet() const { return m_videoSelectorHasBeenSet; }
436 
437     /**
438      * Informs which video elementary stream to decode for input types that have
439      * multiple available.
440      */
SetVideoSelector(const VideoSelector & value)441     inline void SetVideoSelector(const VideoSelector& value) { m_videoSelectorHasBeenSet = true; m_videoSelector = value; }
442 
443     /**
444      * Informs which video elementary stream to decode for input types that have
445      * multiple available.
446      */
SetVideoSelector(VideoSelector && value)447     inline void SetVideoSelector(VideoSelector&& value) { m_videoSelectorHasBeenSet = true; m_videoSelector = std::move(value); }
448 
449     /**
450      * Informs which video elementary stream to decode for input types that have
451      * multiple available.
452      */
WithVideoSelector(const VideoSelector & value)453     inline InputSettings& WithVideoSelector(const VideoSelector& value) { SetVideoSelector(value); return *this;}
454 
455     /**
456      * Informs which video elementary stream to decode for input types that have
457      * multiple available.
458      */
WithVideoSelector(VideoSelector && value)459     inline InputSettings& WithVideoSelector(VideoSelector&& value) { SetVideoSelector(std::move(value)); return *this;}
460 
461   private:
462 
463     Aws::Vector<AudioSelector> m_audioSelectors;
464     bool m_audioSelectorsHasBeenSet;
465 
466     Aws::Vector<CaptionSelector> m_captionSelectors;
467     bool m_captionSelectorsHasBeenSet;
468 
469     InputDeblockFilter m_deblockFilter;
470     bool m_deblockFilterHasBeenSet;
471 
472     InputDenoiseFilter m_denoiseFilter;
473     bool m_denoiseFilterHasBeenSet;
474 
475     int m_filterStrength;
476     bool m_filterStrengthHasBeenSet;
477 
478     InputFilter m_inputFilter;
479     bool m_inputFilterHasBeenSet;
480 
481     NetworkInputSettings m_networkInputSettings;
482     bool m_networkInputSettingsHasBeenSet;
483 
484     Smpte2038DataPreference m_smpte2038DataPreference;
485     bool m_smpte2038DataPreferenceHasBeenSet;
486 
487     InputSourceEndBehavior m_sourceEndBehavior;
488     bool m_sourceEndBehaviorHasBeenSet;
489 
490     VideoSelector m_videoSelector;
491     bool m_videoSelectorHasBeenSet;
492   };
493 
494 } // namespace Model
495 } // namespace MediaLive
496 } // namespace Aws
497