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/AacCodingMode.h>
9 #include <aws/medialive/model/AacInputType.h>
10 #include <aws/medialive/model/AacProfile.h>
11 #include <aws/medialive/model/AacRateControlMode.h>
12 #include <aws/medialive/model/AacRawFormat.h>
13 #include <aws/medialive/model/AacSpec.h>
14 #include <aws/medialive/model/AacVbrQuality.h>
15 #include <utility>
16 
17 namespace Aws
18 {
19 namespace Utils
20 {
21 namespace Json
22 {
23   class JsonValue;
24   class JsonView;
25 } // namespace Json
26 } // namespace Utils
27 namespace MediaLive
28 {
29 namespace Model
30 {
31 
32   /**
33    * Aac Settings<p><h3>See Also:</h3>   <a
34    * href="http://docs.aws.amazon.com/goto/WebAPI/medialive-2017-10-14/AacSettings">AWS
35    * API Reference</a></p>
36    */
37   class AWS_MEDIALIVE_API AacSettings
38   {
39   public:
40     AacSettings();
41     AacSettings(Aws::Utils::Json::JsonView jsonValue);
42     AacSettings& operator=(Aws::Utils::Json::JsonView jsonValue);
43     Aws::Utils::Json::JsonValue Jsonize() const;
44 
45 
46     /**
47      * Average bitrate in bits/second. Valid values depend on rate control mode and
48      * profile.
49      */
GetBitrate()50     inline double GetBitrate() const{ return m_bitrate; }
51 
52     /**
53      * Average bitrate in bits/second. Valid values depend on rate control mode and
54      * profile.
55      */
BitrateHasBeenSet()56     inline bool BitrateHasBeenSet() const { return m_bitrateHasBeenSet; }
57 
58     /**
59      * Average bitrate in bits/second. Valid values depend on rate control mode and
60      * profile.
61      */
SetBitrate(double value)62     inline void SetBitrate(double value) { m_bitrateHasBeenSet = true; m_bitrate = value; }
63 
64     /**
65      * Average bitrate in bits/second. Valid values depend on rate control mode and
66      * profile.
67      */
WithBitrate(double value)68     inline AacSettings& WithBitrate(double value) { SetBitrate(value); return *this;}
69 
70 
71     /**
72      * Mono, Stereo, or 5.1 channel layout. Valid values depend on rate control mode
73      * and profile. The adReceiverMix setting receives a stereo description plus
74      * control track and emits a mono AAC encode of the description track, with control
75      * data emitted in the PES header as per ETSI TS 101 154 Annex E.
76      */
GetCodingMode()77     inline const AacCodingMode& GetCodingMode() const{ return m_codingMode; }
78 
79     /**
80      * Mono, Stereo, or 5.1 channel layout. Valid values depend on rate control mode
81      * and profile. The adReceiverMix setting receives a stereo description plus
82      * control track and emits a mono AAC encode of the description track, with control
83      * data emitted in the PES header as per ETSI TS 101 154 Annex E.
84      */
CodingModeHasBeenSet()85     inline bool CodingModeHasBeenSet() const { return m_codingModeHasBeenSet; }
86 
87     /**
88      * Mono, Stereo, or 5.1 channel layout. Valid values depend on rate control mode
89      * and profile. The adReceiverMix setting receives a stereo description plus
90      * control track and emits a mono AAC encode of the description track, with control
91      * data emitted in the PES header as per ETSI TS 101 154 Annex E.
92      */
SetCodingMode(const AacCodingMode & value)93     inline void SetCodingMode(const AacCodingMode& value) { m_codingModeHasBeenSet = true; m_codingMode = value; }
94 
95     /**
96      * Mono, Stereo, or 5.1 channel layout. Valid values depend on rate control mode
97      * and profile. The adReceiverMix setting receives a stereo description plus
98      * control track and emits a mono AAC encode of the description track, with control
99      * data emitted in the PES header as per ETSI TS 101 154 Annex E.
100      */
SetCodingMode(AacCodingMode && value)101     inline void SetCodingMode(AacCodingMode&& value) { m_codingModeHasBeenSet = true; m_codingMode = std::move(value); }
102 
103     /**
104      * Mono, Stereo, or 5.1 channel layout. Valid values depend on rate control mode
105      * and profile. The adReceiverMix setting receives a stereo description plus
106      * control track and emits a mono AAC encode of the description track, with control
107      * data emitted in the PES header as per ETSI TS 101 154 Annex E.
108      */
WithCodingMode(const AacCodingMode & value)109     inline AacSettings& WithCodingMode(const AacCodingMode& value) { SetCodingMode(value); return *this;}
110 
111     /**
112      * Mono, Stereo, or 5.1 channel layout. Valid values depend on rate control mode
113      * and profile. The adReceiverMix setting receives a stereo description plus
114      * control track and emits a mono AAC encode of the description track, with control
115      * data emitted in the PES header as per ETSI TS 101 154 Annex E.
116      */
WithCodingMode(AacCodingMode && value)117     inline AacSettings& WithCodingMode(AacCodingMode&& value) { SetCodingMode(std::move(value)); return *this;}
118 
119 
120     /**
121      * Set to "broadcasterMixedAd" when input contains pre-mixed main audio + AD
122      * (narration) as a stereo pair.  The Audio Type field (audioType) will be set to
123      * 3, which signals to downstream systems that this stream contains "broadcaster
124      * mixed AD". Note that the input received by the encoder must contain pre-mixed
125      * audio; the encoder does not perform the mixing. The values in audioTypeControl
126      * and audioType (in AudioDescription) are ignored when set to
127      * broadcasterMixedAd.
128 
129 Leave set to "normal" when input does not contain pre-mixed
130      * audio + AD.
131      */
GetInputType()132     inline const AacInputType& GetInputType() const{ return m_inputType; }
133 
134     /**
135      * Set to "broadcasterMixedAd" when input contains pre-mixed main audio + AD
136      * (narration) as a stereo pair.  The Audio Type field (audioType) will be set to
137      * 3, which signals to downstream systems that this stream contains "broadcaster
138      * mixed AD". Note that the input received by the encoder must contain pre-mixed
139      * audio; the encoder does not perform the mixing. The values in audioTypeControl
140      * and audioType (in AudioDescription) are ignored when set to
141      * broadcasterMixedAd.
142 
143 Leave set to "normal" when input does not contain pre-mixed
144      * audio + AD.
145      */
InputTypeHasBeenSet()146     inline bool InputTypeHasBeenSet() const { return m_inputTypeHasBeenSet; }
147 
148     /**
149      * Set to "broadcasterMixedAd" when input contains pre-mixed main audio + AD
150      * (narration) as a stereo pair.  The Audio Type field (audioType) will be set to
151      * 3, which signals to downstream systems that this stream contains "broadcaster
152      * mixed AD". Note that the input received by the encoder must contain pre-mixed
153      * audio; the encoder does not perform the mixing. The values in audioTypeControl
154      * and audioType (in AudioDescription) are ignored when set to
155      * broadcasterMixedAd.
156 
157 Leave set to "normal" when input does not contain pre-mixed
158      * audio + AD.
159      */
SetInputType(const AacInputType & value)160     inline void SetInputType(const AacInputType& value) { m_inputTypeHasBeenSet = true; m_inputType = value; }
161 
162     /**
163      * Set to "broadcasterMixedAd" when input contains pre-mixed main audio + AD
164      * (narration) as a stereo pair.  The Audio Type field (audioType) will be set to
165      * 3, which signals to downstream systems that this stream contains "broadcaster
166      * mixed AD". Note that the input received by the encoder must contain pre-mixed
167      * audio; the encoder does not perform the mixing. The values in audioTypeControl
168      * and audioType (in AudioDescription) are ignored when set to
169      * broadcasterMixedAd.
170 
171 Leave set to "normal" when input does not contain pre-mixed
172      * audio + AD.
173      */
SetInputType(AacInputType && value)174     inline void SetInputType(AacInputType&& value) { m_inputTypeHasBeenSet = true; m_inputType = std::move(value); }
175 
176     /**
177      * Set to "broadcasterMixedAd" when input contains pre-mixed main audio + AD
178      * (narration) as a stereo pair.  The Audio Type field (audioType) will be set to
179      * 3, which signals to downstream systems that this stream contains "broadcaster
180      * mixed AD". Note that the input received by the encoder must contain pre-mixed
181      * audio; the encoder does not perform the mixing. The values in audioTypeControl
182      * and audioType (in AudioDescription) are ignored when set to
183      * broadcasterMixedAd.
184 
185 Leave set to "normal" when input does not contain pre-mixed
186      * audio + AD.
187      */
WithInputType(const AacInputType & value)188     inline AacSettings& WithInputType(const AacInputType& value) { SetInputType(value); return *this;}
189 
190     /**
191      * Set to "broadcasterMixedAd" when input contains pre-mixed main audio + AD
192      * (narration) as a stereo pair.  The Audio Type field (audioType) will be set to
193      * 3, which signals to downstream systems that this stream contains "broadcaster
194      * mixed AD". Note that the input received by the encoder must contain pre-mixed
195      * audio; the encoder does not perform the mixing. The values in audioTypeControl
196      * and audioType (in AudioDescription) are ignored when set to
197      * broadcasterMixedAd.
198 
199 Leave set to "normal" when input does not contain pre-mixed
200      * audio + AD.
201      */
WithInputType(AacInputType && value)202     inline AacSettings& WithInputType(AacInputType&& value) { SetInputType(std::move(value)); return *this;}
203 
204 
205     /**
206      * AAC Profile.
207      */
GetProfile()208     inline const AacProfile& GetProfile() const{ return m_profile; }
209 
210     /**
211      * AAC Profile.
212      */
ProfileHasBeenSet()213     inline bool ProfileHasBeenSet() const { return m_profileHasBeenSet; }
214 
215     /**
216      * AAC Profile.
217      */
SetProfile(const AacProfile & value)218     inline void SetProfile(const AacProfile& value) { m_profileHasBeenSet = true; m_profile = value; }
219 
220     /**
221      * AAC Profile.
222      */
SetProfile(AacProfile && value)223     inline void SetProfile(AacProfile&& value) { m_profileHasBeenSet = true; m_profile = std::move(value); }
224 
225     /**
226      * AAC Profile.
227      */
WithProfile(const AacProfile & value)228     inline AacSettings& WithProfile(const AacProfile& value) { SetProfile(value); return *this;}
229 
230     /**
231      * AAC Profile.
232      */
WithProfile(AacProfile && value)233     inline AacSettings& WithProfile(AacProfile&& value) { SetProfile(std::move(value)); return *this;}
234 
235 
236     /**
237      * Rate Control Mode.
238      */
GetRateControlMode()239     inline const AacRateControlMode& GetRateControlMode() const{ return m_rateControlMode; }
240 
241     /**
242      * Rate Control Mode.
243      */
RateControlModeHasBeenSet()244     inline bool RateControlModeHasBeenSet() const { return m_rateControlModeHasBeenSet; }
245 
246     /**
247      * Rate Control Mode.
248      */
SetRateControlMode(const AacRateControlMode & value)249     inline void SetRateControlMode(const AacRateControlMode& value) { m_rateControlModeHasBeenSet = true; m_rateControlMode = value; }
250 
251     /**
252      * Rate Control Mode.
253      */
SetRateControlMode(AacRateControlMode && value)254     inline void SetRateControlMode(AacRateControlMode&& value) { m_rateControlModeHasBeenSet = true; m_rateControlMode = std::move(value); }
255 
256     /**
257      * Rate Control Mode.
258      */
WithRateControlMode(const AacRateControlMode & value)259     inline AacSettings& WithRateControlMode(const AacRateControlMode& value) { SetRateControlMode(value); return *this;}
260 
261     /**
262      * Rate Control Mode.
263      */
WithRateControlMode(AacRateControlMode && value)264     inline AacSettings& WithRateControlMode(AacRateControlMode&& value) { SetRateControlMode(std::move(value)); return *this;}
265 
266 
267     /**
268      * Sets LATM / LOAS AAC output for raw containers.
269      */
GetRawFormat()270     inline const AacRawFormat& GetRawFormat() const{ return m_rawFormat; }
271 
272     /**
273      * Sets LATM / LOAS AAC output for raw containers.
274      */
RawFormatHasBeenSet()275     inline bool RawFormatHasBeenSet() const { return m_rawFormatHasBeenSet; }
276 
277     /**
278      * Sets LATM / LOAS AAC output for raw containers.
279      */
SetRawFormat(const AacRawFormat & value)280     inline void SetRawFormat(const AacRawFormat& value) { m_rawFormatHasBeenSet = true; m_rawFormat = value; }
281 
282     /**
283      * Sets LATM / LOAS AAC output for raw containers.
284      */
SetRawFormat(AacRawFormat && value)285     inline void SetRawFormat(AacRawFormat&& value) { m_rawFormatHasBeenSet = true; m_rawFormat = std::move(value); }
286 
287     /**
288      * Sets LATM / LOAS AAC output for raw containers.
289      */
WithRawFormat(const AacRawFormat & value)290     inline AacSettings& WithRawFormat(const AacRawFormat& value) { SetRawFormat(value); return *this;}
291 
292     /**
293      * Sets LATM / LOAS AAC output for raw containers.
294      */
WithRawFormat(AacRawFormat && value)295     inline AacSettings& WithRawFormat(AacRawFormat&& value) { SetRawFormat(std::move(value)); return *this;}
296 
297 
298     /**
299      * Sample rate in Hz. Valid values depend on rate control mode and profile.
300      */
GetSampleRate()301     inline double GetSampleRate() const{ return m_sampleRate; }
302 
303     /**
304      * Sample rate in Hz. Valid values depend on rate control mode and profile.
305      */
SampleRateHasBeenSet()306     inline bool SampleRateHasBeenSet() const { return m_sampleRateHasBeenSet; }
307 
308     /**
309      * Sample rate in Hz. Valid values depend on rate control mode and profile.
310      */
SetSampleRate(double value)311     inline void SetSampleRate(double value) { m_sampleRateHasBeenSet = true; m_sampleRate = value; }
312 
313     /**
314      * Sample rate in Hz. Valid values depend on rate control mode and profile.
315      */
WithSampleRate(double value)316     inline AacSettings& WithSampleRate(double value) { SetSampleRate(value); return *this;}
317 
318 
319     /**
320      * Use MPEG-2 AAC audio instead of MPEG-4 AAC audio for raw or MPEG-2 Transport
321      * Stream containers.
322      */
GetSpec()323     inline const AacSpec& GetSpec() const{ return m_spec; }
324 
325     /**
326      * Use MPEG-2 AAC audio instead of MPEG-4 AAC audio for raw or MPEG-2 Transport
327      * Stream containers.
328      */
SpecHasBeenSet()329     inline bool SpecHasBeenSet() const { return m_specHasBeenSet; }
330 
331     /**
332      * Use MPEG-2 AAC audio instead of MPEG-4 AAC audio for raw or MPEG-2 Transport
333      * Stream containers.
334      */
SetSpec(const AacSpec & value)335     inline void SetSpec(const AacSpec& value) { m_specHasBeenSet = true; m_spec = value; }
336 
337     /**
338      * Use MPEG-2 AAC audio instead of MPEG-4 AAC audio for raw or MPEG-2 Transport
339      * Stream containers.
340      */
SetSpec(AacSpec && value)341     inline void SetSpec(AacSpec&& value) { m_specHasBeenSet = true; m_spec = std::move(value); }
342 
343     /**
344      * Use MPEG-2 AAC audio instead of MPEG-4 AAC audio for raw or MPEG-2 Transport
345      * Stream containers.
346      */
WithSpec(const AacSpec & value)347     inline AacSettings& WithSpec(const AacSpec& value) { SetSpec(value); return *this;}
348 
349     /**
350      * Use MPEG-2 AAC audio instead of MPEG-4 AAC audio for raw or MPEG-2 Transport
351      * Stream containers.
352      */
WithSpec(AacSpec && value)353     inline AacSettings& WithSpec(AacSpec&& value) { SetSpec(std::move(value)); return *this;}
354 
355 
356     /**
357      * VBR Quality Level - Only used if rateControlMode is VBR.
358      */
GetVbrQuality()359     inline const AacVbrQuality& GetVbrQuality() const{ return m_vbrQuality; }
360 
361     /**
362      * VBR Quality Level - Only used if rateControlMode is VBR.
363      */
VbrQualityHasBeenSet()364     inline bool VbrQualityHasBeenSet() const { return m_vbrQualityHasBeenSet; }
365 
366     /**
367      * VBR Quality Level - Only used if rateControlMode is VBR.
368      */
SetVbrQuality(const AacVbrQuality & value)369     inline void SetVbrQuality(const AacVbrQuality& value) { m_vbrQualityHasBeenSet = true; m_vbrQuality = value; }
370 
371     /**
372      * VBR Quality Level - Only used if rateControlMode is VBR.
373      */
SetVbrQuality(AacVbrQuality && value)374     inline void SetVbrQuality(AacVbrQuality&& value) { m_vbrQualityHasBeenSet = true; m_vbrQuality = std::move(value); }
375 
376     /**
377      * VBR Quality Level - Only used if rateControlMode is VBR.
378      */
WithVbrQuality(const AacVbrQuality & value)379     inline AacSettings& WithVbrQuality(const AacVbrQuality& value) { SetVbrQuality(value); return *this;}
380 
381     /**
382      * VBR Quality Level - Only used if rateControlMode is VBR.
383      */
WithVbrQuality(AacVbrQuality && value)384     inline AacSettings& WithVbrQuality(AacVbrQuality&& value) { SetVbrQuality(std::move(value)); return *this;}
385 
386   private:
387 
388     double m_bitrate;
389     bool m_bitrateHasBeenSet;
390 
391     AacCodingMode m_codingMode;
392     bool m_codingModeHasBeenSet;
393 
394     AacInputType m_inputType;
395     bool m_inputTypeHasBeenSet;
396 
397     AacProfile m_profile;
398     bool m_profileHasBeenSet;
399 
400     AacRateControlMode m_rateControlMode;
401     bool m_rateControlModeHasBeenSet;
402 
403     AacRawFormat m_rawFormat;
404     bool m_rawFormatHasBeenSet;
405 
406     double m_sampleRate;
407     bool m_sampleRateHasBeenSet;
408 
409     AacSpec m_spec;
410     bool m_specHasBeenSet;
411 
412     AacVbrQuality m_vbrQuality;
413     bool m_vbrQualityHasBeenSet;
414   };
415 
416 } // namespace Model
417 } // namespace MediaLive
418 } // namespace Aws
419