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