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/Vc3FramerateControl.h>
9 #include <aws/mediaconvert/model/Vc3FramerateConversionAlgorithm.h>
10 #include <aws/mediaconvert/model/Vc3InterlaceMode.h>
11 #include <aws/mediaconvert/model/Vc3ScanTypeConversionMode.h>
12 #include <aws/mediaconvert/model/Vc3SlowPal.h>
13 #include <aws/mediaconvert/model/Vc3Telecine.h>
14 #include <aws/mediaconvert/model/Vc3Class.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 MediaConvert
28 {
29 namespace Model
30 {
31 
32   /**
33    * Required when you set (Codec) under (VideoDescription)>(CodecSettings) to the
34    * value VC3<p><h3>See Also:</h3>   <a
35    * href="http://docs.aws.amazon.com/goto/WebAPI/mediaconvert-2017-08-29/Vc3Settings">AWS
36    * API Reference</a></p>
37    */
38   class AWS_MEDIACONVERT_API Vc3Settings
39   {
40   public:
41     Vc3Settings();
42     Vc3Settings(Aws::Utils::Json::JsonView jsonValue);
43     Vc3Settings& operator=(Aws::Utils::Json::JsonView jsonValue);
44     Aws::Utils::Json::JsonValue Jsonize() const;
45 
46 
47     /**
48      * If you are using the console, use the Framerate setting to specify the frame
49      * rate for this output. If you want to keep the same frame rate as the input
50      * video, choose Follow source. If you want to do frame rate conversion, choose a
51      * frame rate from the dropdown list or choose Custom. The framerates shown in the
52      * dropdown list are decimal approximations of fractions. If you choose Custom,
53      * specify your frame rate as a fraction. If you are creating your transcoding job
54      * specification as a JSON file without the console, use FramerateControl to
55      * specify which value the service uses for the frame rate for this output. Choose
56      * INITIALIZE_FROM_SOURCE if you want the service to use the frame rate from the
57      * input. Choose SPECIFIED if you want the service to use the frame rate you
58      * specify in the settings FramerateNumerator and FramerateDenominator.
59      */
GetFramerateControl()60     inline const Vc3FramerateControl& GetFramerateControl() const{ return m_framerateControl; }
61 
62     /**
63      * If you are using the console, use the Framerate setting to specify the frame
64      * rate for this output. If you want to keep the same frame rate as the input
65      * video, choose Follow source. If you want to do frame rate conversion, choose a
66      * frame rate from the dropdown list or choose Custom. The framerates shown in the
67      * dropdown list are decimal approximations of fractions. If you choose Custom,
68      * specify your frame rate as a fraction. If you are creating your transcoding job
69      * specification as a JSON file without the console, use FramerateControl to
70      * specify which value the service uses for the frame rate for this output. Choose
71      * INITIALIZE_FROM_SOURCE if you want the service to use the frame rate from the
72      * input. Choose SPECIFIED if you want the service to use the frame rate you
73      * specify in the settings FramerateNumerator and FramerateDenominator.
74      */
FramerateControlHasBeenSet()75     inline bool FramerateControlHasBeenSet() const { return m_framerateControlHasBeenSet; }
76 
77     /**
78      * If you are using the console, use the Framerate setting to specify the frame
79      * rate for this output. If you want to keep the same frame rate as the input
80      * video, choose Follow source. If you want to do frame rate conversion, choose a
81      * frame rate from the dropdown list or choose Custom. The framerates shown in the
82      * dropdown list are decimal approximations of fractions. If you choose Custom,
83      * specify your frame rate as a fraction. If you are creating your transcoding job
84      * specification as a JSON file without the console, use FramerateControl to
85      * specify which value the service uses for the frame rate for this output. Choose
86      * INITIALIZE_FROM_SOURCE if you want the service to use the frame rate from the
87      * input. Choose SPECIFIED if you want the service to use the frame rate you
88      * specify in the settings FramerateNumerator and FramerateDenominator.
89      */
SetFramerateControl(const Vc3FramerateControl & value)90     inline void SetFramerateControl(const Vc3FramerateControl& value) { m_framerateControlHasBeenSet = true; m_framerateControl = value; }
91 
92     /**
93      * If you are using the console, use the Framerate setting to specify the frame
94      * rate for this output. If you want to keep the same frame rate as the input
95      * video, choose Follow source. If you want to do frame rate conversion, choose a
96      * frame rate from the dropdown list or choose Custom. The framerates shown in the
97      * dropdown list are decimal approximations of fractions. If you choose Custom,
98      * specify your frame rate as a fraction. If you are creating your transcoding job
99      * specification as a JSON file without the console, use FramerateControl to
100      * specify which value the service uses for the frame rate for this output. Choose
101      * INITIALIZE_FROM_SOURCE if you want the service to use the frame rate from the
102      * input. Choose SPECIFIED if you want the service to use the frame rate you
103      * specify in the settings FramerateNumerator and FramerateDenominator.
104      */
SetFramerateControl(Vc3FramerateControl && value)105     inline void SetFramerateControl(Vc3FramerateControl&& value) { m_framerateControlHasBeenSet = true; m_framerateControl = std::move(value); }
106 
107     /**
108      * If you are using the console, use the Framerate setting to specify the frame
109      * rate for this output. If you want to keep the same frame rate as the input
110      * video, choose Follow source. If you want to do frame rate conversion, choose a
111      * frame rate from the dropdown list or choose Custom. The framerates shown in the
112      * dropdown list are decimal approximations of fractions. If you choose Custom,
113      * specify your frame rate as a fraction. If you are creating your transcoding job
114      * specification as a JSON file without the console, use FramerateControl to
115      * specify which value the service uses for the frame rate for this output. Choose
116      * INITIALIZE_FROM_SOURCE if you want the service to use the frame rate from the
117      * input. Choose SPECIFIED if you want the service to use the frame rate you
118      * specify in the settings FramerateNumerator and FramerateDenominator.
119      */
WithFramerateControl(const Vc3FramerateControl & value)120     inline Vc3Settings& WithFramerateControl(const Vc3FramerateControl& value) { SetFramerateControl(value); return *this;}
121 
122     /**
123      * If you are using the console, use the Framerate setting to specify the frame
124      * rate for this output. If you want to keep the same frame rate as the input
125      * video, choose Follow source. If you want to do frame rate conversion, choose a
126      * frame rate from the dropdown list or choose Custom. The framerates shown in the
127      * dropdown list are decimal approximations of fractions. If you choose Custom,
128      * specify your frame rate as a fraction. If you are creating your transcoding job
129      * specification as a JSON file without the console, use FramerateControl to
130      * specify which value the service uses for the frame rate for this output. Choose
131      * INITIALIZE_FROM_SOURCE if you want the service to use the frame rate from the
132      * input. Choose SPECIFIED if you want the service to use the frame rate you
133      * specify in the settings FramerateNumerator and FramerateDenominator.
134      */
WithFramerateControl(Vc3FramerateControl && value)135     inline Vc3Settings& WithFramerateControl(Vc3FramerateControl&& value) { SetFramerateControl(std::move(value)); return *this;}
136 
137 
138     /**
139      * Choose the method that you want MediaConvert to use when increasing or
140      * decreasing the frame rate. We recommend using drop duplicate (DUPLICATE_DROP)
141      * for numerically simple conversions, such as 60 fps to 30 fps. For numerically
142      * complex conversions, you can use interpolate (INTERPOLATE) to avoid stutter.
143      * This results in a smooth picture, but might introduce undesirable video
144      * artifacts. For complex frame rate conversions, especially if your source video
145      * has already been converted from its original cadence, use FrameFormer
146      * (FRAMEFORMER) to do motion-compensated interpolation. FrameFormer chooses the
147      * best conversion method frame by frame. Note that using FrameFormer increases the
148      * transcoding time and incurs a significant add-on cost.
149      */
GetFramerateConversionAlgorithm()150     inline const Vc3FramerateConversionAlgorithm& GetFramerateConversionAlgorithm() const{ return m_framerateConversionAlgorithm; }
151 
152     /**
153      * Choose the method that you want MediaConvert to use when increasing or
154      * decreasing the frame rate. We recommend using drop duplicate (DUPLICATE_DROP)
155      * for numerically simple conversions, such as 60 fps to 30 fps. For numerically
156      * complex conversions, you can use interpolate (INTERPOLATE) to avoid stutter.
157      * This results in a smooth picture, but might introduce undesirable video
158      * artifacts. For complex frame rate conversions, especially if your source video
159      * has already been converted from its original cadence, use FrameFormer
160      * (FRAMEFORMER) to do motion-compensated interpolation. FrameFormer chooses the
161      * best conversion method frame by frame. Note that using FrameFormer increases the
162      * transcoding time and incurs a significant add-on cost.
163      */
FramerateConversionAlgorithmHasBeenSet()164     inline bool FramerateConversionAlgorithmHasBeenSet() const { return m_framerateConversionAlgorithmHasBeenSet; }
165 
166     /**
167      * Choose the method that you want MediaConvert to use when increasing or
168      * decreasing the frame rate. We recommend using drop duplicate (DUPLICATE_DROP)
169      * for numerically simple conversions, such as 60 fps to 30 fps. For numerically
170      * complex conversions, you can use interpolate (INTERPOLATE) to avoid stutter.
171      * This results in a smooth picture, but might introduce undesirable video
172      * artifacts. For complex frame rate conversions, especially if your source video
173      * has already been converted from its original cadence, use FrameFormer
174      * (FRAMEFORMER) to do motion-compensated interpolation. FrameFormer chooses the
175      * best conversion method frame by frame. Note that using FrameFormer increases the
176      * transcoding time and incurs a significant add-on cost.
177      */
SetFramerateConversionAlgorithm(const Vc3FramerateConversionAlgorithm & value)178     inline void SetFramerateConversionAlgorithm(const Vc3FramerateConversionAlgorithm& value) { m_framerateConversionAlgorithmHasBeenSet = true; m_framerateConversionAlgorithm = value; }
179 
180     /**
181      * Choose the method that you want MediaConvert to use when increasing or
182      * decreasing the frame rate. We recommend using drop duplicate (DUPLICATE_DROP)
183      * for numerically simple conversions, such as 60 fps to 30 fps. For numerically
184      * complex conversions, you can use interpolate (INTERPOLATE) to avoid stutter.
185      * This results in a smooth picture, but might introduce undesirable video
186      * artifacts. For complex frame rate conversions, especially if your source video
187      * has already been converted from its original cadence, use FrameFormer
188      * (FRAMEFORMER) to do motion-compensated interpolation. FrameFormer chooses the
189      * best conversion method frame by frame. Note that using FrameFormer increases the
190      * transcoding time and incurs a significant add-on cost.
191      */
SetFramerateConversionAlgorithm(Vc3FramerateConversionAlgorithm && value)192     inline void SetFramerateConversionAlgorithm(Vc3FramerateConversionAlgorithm&& value) { m_framerateConversionAlgorithmHasBeenSet = true; m_framerateConversionAlgorithm = std::move(value); }
193 
194     /**
195      * Choose the method that you want MediaConvert to use when increasing or
196      * decreasing the frame rate. We recommend using drop duplicate (DUPLICATE_DROP)
197      * for numerically simple conversions, such as 60 fps to 30 fps. For numerically
198      * complex conversions, you can use interpolate (INTERPOLATE) to avoid stutter.
199      * This results in a smooth picture, but might introduce undesirable video
200      * artifacts. For complex frame rate conversions, especially if your source video
201      * has already been converted from its original cadence, use FrameFormer
202      * (FRAMEFORMER) to do motion-compensated interpolation. FrameFormer chooses the
203      * best conversion method frame by frame. Note that using FrameFormer increases the
204      * transcoding time and incurs a significant add-on cost.
205      */
WithFramerateConversionAlgorithm(const Vc3FramerateConversionAlgorithm & value)206     inline Vc3Settings& WithFramerateConversionAlgorithm(const Vc3FramerateConversionAlgorithm& value) { SetFramerateConversionAlgorithm(value); return *this;}
207 
208     /**
209      * Choose the method that you want MediaConvert to use when increasing or
210      * decreasing the frame rate. We recommend using drop duplicate (DUPLICATE_DROP)
211      * for numerically simple conversions, such as 60 fps to 30 fps. For numerically
212      * complex conversions, you can use interpolate (INTERPOLATE) to avoid stutter.
213      * This results in a smooth picture, but might introduce undesirable video
214      * artifacts. For complex frame rate conversions, especially if your source video
215      * has already been converted from its original cadence, use FrameFormer
216      * (FRAMEFORMER) to do motion-compensated interpolation. FrameFormer chooses the
217      * best conversion method frame by frame. Note that using FrameFormer increases the
218      * transcoding time and incurs a significant add-on cost.
219      */
WithFramerateConversionAlgorithm(Vc3FramerateConversionAlgorithm && value)220     inline Vc3Settings& WithFramerateConversionAlgorithm(Vc3FramerateConversionAlgorithm&& value) { SetFramerateConversionAlgorithm(std::move(value)); return *this;}
221 
222 
223     /**
224      * When you use the API for transcode jobs that use frame rate conversion, specify
225      * the frame rate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use
226      * FramerateDenominator to specify the denominator of this fraction. In this
227      * example, use 1001 for the value of FramerateDenominator. When you use the
228      * console for transcode jobs that use frame rate conversion, provide the value as
229      * a decimal number for Framerate. In this example, specify 23.976.
230      */
GetFramerateDenominator()231     inline int GetFramerateDenominator() const{ return m_framerateDenominator; }
232 
233     /**
234      * When you use the API for transcode jobs that use frame rate conversion, specify
235      * the frame rate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use
236      * FramerateDenominator to specify the denominator of this fraction. In this
237      * example, use 1001 for the value of FramerateDenominator. When you use the
238      * console for transcode jobs that use frame rate conversion, provide the value as
239      * a decimal number for Framerate. In this example, specify 23.976.
240      */
FramerateDenominatorHasBeenSet()241     inline bool FramerateDenominatorHasBeenSet() const { return m_framerateDenominatorHasBeenSet; }
242 
243     /**
244      * When you use the API for transcode jobs that use frame rate conversion, specify
245      * the frame rate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use
246      * FramerateDenominator to specify the denominator of this fraction. In this
247      * example, use 1001 for the value of FramerateDenominator. When you use the
248      * console for transcode jobs that use frame rate conversion, provide the value as
249      * a decimal number for Framerate. In this example, specify 23.976.
250      */
SetFramerateDenominator(int value)251     inline void SetFramerateDenominator(int value) { m_framerateDenominatorHasBeenSet = true; m_framerateDenominator = value; }
252 
253     /**
254      * When you use the API for transcode jobs that use frame rate conversion, specify
255      * the frame rate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use
256      * FramerateDenominator to specify the denominator of this fraction. In this
257      * example, use 1001 for the value of FramerateDenominator. When you use the
258      * console for transcode jobs that use frame rate conversion, provide the value as
259      * a decimal number for Framerate. In this example, specify 23.976.
260      */
WithFramerateDenominator(int value)261     inline Vc3Settings& WithFramerateDenominator(int value) { SetFramerateDenominator(value); return *this;}
262 
263 
264     /**
265      * When you use the API for transcode jobs that use frame rate conversion, specify
266      * the frame rate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use
267      * FramerateNumerator to specify the numerator of this fraction. In this example,
268      * use 24000 for the value of FramerateNumerator. When you use the console for
269      * transcode jobs that use frame rate conversion, provide the value as a decimal
270      * number for Framerate. In this example, specify 23.976.
271      */
GetFramerateNumerator()272     inline int GetFramerateNumerator() const{ return m_framerateNumerator; }
273 
274     /**
275      * When you use the API for transcode jobs that use frame rate conversion, specify
276      * the frame rate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use
277      * FramerateNumerator to specify the numerator of this fraction. In this example,
278      * use 24000 for the value of FramerateNumerator. When you use the console for
279      * transcode jobs that use frame rate conversion, provide the value as a decimal
280      * number for Framerate. In this example, specify 23.976.
281      */
FramerateNumeratorHasBeenSet()282     inline bool FramerateNumeratorHasBeenSet() const { return m_framerateNumeratorHasBeenSet; }
283 
284     /**
285      * When you use the API for transcode jobs that use frame rate conversion, specify
286      * the frame rate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use
287      * FramerateNumerator to specify the numerator of this fraction. In this example,
288      * use 24000 for the value of FramerateNumerator. When you use the console for
289      * transcode jobs that use frame rate conversion, provide the value as a decimal
290      * number for Framerate. In this example, specify 23.976.
291      */
SetFramerateNumerator(int value)292     inline void SetFramerateNumerator(int value) { m_framerateNumeratorHasBeenSet = true; m_framerateNumerator = value; }
293 
294     /**
295      * When you use the API for transcode jobs that use frame rate conversion, specify
296      * the frame rate as a fraction. For example,  24000 / 1001 = 23.976 fps. Use
297      * FramerateNumerator to specify the numerator of this fraction. In this example,
298      * use 24000 for the value of FramerateNumerator. When you use the console for
299      * transcode jobs that use frame rate conversion, provide the value as a decimal
300      * number for Framerate. In this example, specify 23.976.
301      */
WithFramerateNumerator(int value)302     inline Vc3Settings& WithFramerateNumerator(int value) { SetFramerateNumerator(value); return *this;}
303 
304 
305     /**
306      * Optional. Choose the scan line type for this output. If you don't specify a
307      * value, MediaConvert will create a progressive output.
308      */
GetInterlaceMode()309     inline const Vc3InterlaceMode& GetInterlaceMode() const{ return m_interlaceMode; }
310 
311     /**
312      * Optional. Choose the scan line type for this output. If you don't specify a
313      * value, MediaConvert will create a progressive output.
314      */
InterlaceModeHasBeenSet()315     inline bool InterlaceModeHasBeenSet() const { return m_interlaceModeHasBeenSet; }
316 
317     /**
318      * Optional. Choose the scan line type for this output. If you don't specify a
319      * value, MediaConvert will create a progressive output.
320      */
SetInterlaceMode(const Vc3InterlaceMode & value)321     inline void SetInterlaceMode(const Vc3InterlaceMode& value) { m_interlaceModeHasBeenSet = true; m_interlaceMode = value; }
322 
323     /**
324      * Optional. Choose the scan line type for this output. If you don't specify a
325      * value, MediaConvert will create a progressive output.
326      */
SetInterlaceMode(Vc3InterlaceMode && value)327     inline void SetInterlaceMode(Vc3InterlaceMode&& value) { m_interlaceModeHasBeenSet = true; m_interlaceMode = std::move(value); }
328 
329     /**
330      * Optional. Choose the scan line type for this output. If you don't specify a
331      * value, MediaConvert will create a progressive output.
332      */
WithInterlaceMode(const Vc3InterlaceMode & value)333     inline Vc3Settings& WithInterlaceMode(const Vc3InterlaceMode& value) { SetInterlaceMode(value); return *this;}
334 
335     /**
336      * Optional. Choose the scan line type for this output. If you don't specify a
337      * value, MediaConvert will create a progressive output.
338      */
WithInterlaceMode(Vc3InterlaceMode && value)339     inline Vc3Settings& WithInterlaceMode(Vc3InterlaceMode&& value) { SetInterlaceMode(std::move(value)); return *this;}
340 
341 
342     /**
343      * Use this setting for interlaced outputs, when your output frame rate is half of
344      * your input frame rate. In this situation, choose Optimized interlacing
345      * (INTERLACED_OPTIMIZE) to create a better quality interlaced output. In this
346      * case, each progressive frame from the input corresponds to an interlaced field
347      * in the output. Keep the default value, Basic interlacing (INTERLACED), for all
348      * other output frame rates. With basic interlacing, MediaConvert performs any
349      * frame rate conversion first and then interlaces the frames. When you choose
350      * Optimized interlacing and you set your output frame rate to a value that isn't
351      * suitable for optimized interlacing, MediaConvert automatically falls back to
352      * basic interlacing. Required settings: To use optimized interlacing, you must set
353      * Telecine (telecine) to None (NONE) or Soft (SOFT). You can't use optimized
354      * interlacing for hard telecine outputs. You must also set Interlace mode
355      * (interlaceMode) to a value other than Progressive (PROGRESSIVE).
356      */
GetScanTypeConversionMode()357     inline const Vc3ScanTypeConversionMode& GetScanTypeConversionMode() const{ return m_scanTypeConversionMode; }
358 
359     /**
360      * Use this setting for interlaced outputs, when your output frame rate is half of
361      * your input frame rate. In this situation, choose Optimized interlacing
362      * (INTERLACED_OPTIMIZE) to create a better quality interlaced output. In this
363      * case, each progressive frame from the input corresponds to an interlaced field
364      * in the output. Keep the default value, Basic interlacing (INTERLACED), for all
365      * other output frame rates. With basic interlacing, MediaConvert performs any
366      * frame rate conversion first and then interlaces the frames. When you choose
367      * Optimized interlacing and you set your output frame rate to a value that isn't
368      * suitable for optimized interlacing, MediaConvert automatically falls back to
369      * basic interlacing. Required settings: To use optimized interlacing, you must set
370      * Telecine (telecine) to None (NONE) or Soft (SOFT). You can't use optimized
371      * interlacing for hard telecine outputs. You must also set Interlace mode
372      * (interlaceMode) to a value other than Progressive (PROGRESSIVE).
373      */
ScanTypeConversionModeHasBeenSet()374     inline bool ScanTypeConversionModeHasBeenSet() const { return m_scanTypeConversionModeHasBeenSet; }
375 
376     /**
377      * Use this setting for interlaced outputs, when your output frame rate is half of
378      * your input frame rate. In this situation, choose Optimized interlacing
379      * (INTERLACED_OPTIMIZE) to create a better quality interlaced output. In this
380      * case, each progressive frame from the input corresponds to an interlaced field
381      * in the output. Keep the default value, Basic interlacing (INTERLACED), for all
382      * other output frame rates. With basic interlacing, MediaConvert performs any
383      * frame rate conversion first and then interlaces the frames. When you choose
384      * Optimized interlacing and you set your output frame rate to a value that isn't
385      * suitable for optimized interlacing, MediaConvert automatically falls back to
386      * basic interlacing. Required settings: To use optimized interlacing, you must set
387      * Telecine (telecine) to None (NONE) or Soft (SOFT). You can't use optimized
388      * interlacing for hard telecine outputs. You must also set Interlace mode
389      * (interlaceMode) to a value other than Progressive (PROGRESSIVE).
390      */
SetScanTypeConversionMode(const Vc3ScanTypeConversionMode & value)391     inline void SetScanTypeConversionMode(const Vc3ScanTypeConversionMode& value) { m_scanTypeConversionModeHasBeenSet = true; m_scanTypeConversionMode = value; }
392 
393     /**
394      * Use this setting for interlaced outputs, when your output frame rate is half of
395      * your input frame rate. In this situation, choose Optimized interlacing
396      * (INTERLACED_OPTIMIZE) to create a better quality interlaced output. In this
397      * case, each progressive frame from the input corresponds to an interlaced field
398      * in the output. Keep the default value, Basic interlacing (INTERLACED), for all
399      * other output frame rates. With basic interlacing, MediaConvert performs any
400      * frame rate conversion first and then interlaces the frames. When you choose
401      * Optimized interlacing and you set your output frame rate to a value that isn't
402      * suitable for optimized interlacing, MediaConvert automatically falls back to
403      * basic interlacing. Required settings: To use optimized interlacing, you must set
404      * Telecine (telecine) to None (NONE) or Soft (SOFT). You can't use optimized
405      * interlacing for hard telecine outputs. You must also set Interlace mode
406      * (interlaceMode) to a value other than Progressive (PROGRESSIVE).
407      */
SetScanTypeConversionMode(Vc3ScanTypeConversionMode && value)408     inline void SetScanTypeConversionMode(Vc3ScanTypeConversionMode&& value) { m_scanTypeConversionModeHasBeenSet = true; m_scanTypeConversionMode = std::move(value); }
409 
410     /**
411      * Use this setting for interlaced outputs, when your output frame rate is half of
412      * your input frame rate. In this situation, choose Optimized interlacing
413      * (INTERLACED_OPTIMIZE) to create a better quality interlaced output. In this
414      * case, each progressive frame from the input corresponds to an interlaced field
415      * in the output. Keep the default value, Basic interlacing (INTERLACED), for all
416      * other output frame rates. With basic interlacing, MediaConvert performs any
417      * frame rate conversion first and then interlaces the frames. When you choose
418      * Optimized interlacing and you set your output frame rate to a value that isn't
419      * suitable for optimized interlacing, MediaConvert automatically falls back to
420      * basic interlacing. Required settings: To use optimized interlacing, you must set
421      * Telecine (telecine) to None (NONE) or Soft (SOFT). You can't use optimized
422      * interlacing for hard telecine outputs. You must also set Interlace mode
423      * (interlaceMode) to a value other than Progressive (PROGRESSIVE).
424      */
WithScanTypeConversionMode(const Vc3ScanTypeConversionMode & value)425     inline Vc3Settings& WithScanTypeConversionMode(const Vc3ScanTypeConversionMode& value) { SetScanTypeConversionMode(value); return *this;}
426 
427     /**
428      * Use this setting for interlaced outputs, when your output frame rate is half of
429      * your input frame rate. In this situation, choose Optimized interlacing
430      * (INTERLACED_OPTIMIZE) to create a better quality interlaced output. In this
431      * case, each progressive frame from the input corresponds to an interlaced field
432      * in the output. Keep the default value, Basic interlacing (INTERLACED), for all
433      * other output frame rates. With basic interlacing, MediaConvert performs any
434      * frame rate conversion first and then interlaces the frames. When you choose
435      * Optimized interlacing and you set your output frame rate to a value that isn't
436      * suitable for optimized interlacing, MediaConvert automatically falls back to
437      * basic interlacing. Required settings: To use optimized interlacing, you must set
438      * Telecine (telecine) to None (NONE) or Soft (SOFT). You can't use optimized
439      * interlacing for hard telecine outputs. You must also set Interlace mode
440      * (interlaceMode) to a value other than Progressive (PROGRESSIVE).
441      */
WithScanTypeConversionMode(Vc3ScanTypeConversionMode && value)442     inline Vc3Settings& WithScanTypeConversionMode(Vc3ScanTypeConversionMode&& value) { SetScanTypeConversionMode(std::move(value)); return *this;}
443 
444 
445     /**
446      * Ignore this setting unless your input frame rate is 23.976 or 24 frames per
447      * second (fps). Enable slow PAL to create a 25 fps output by relabeling the video
448      * frames and resampling your audio. Note that enabling this setting will slightly
449      * reduce the duration of your video. Related settings: You must also set Framerate
450      * to 25. In your JSON job specification, set (framerateControl) to (SPECIFIED),
451      * (framerateNumerator) to 25 and (framerateDenominator) to 1.
452      */
GetSlowPal()453     inline const Vc3SlowPal& GetSlowPal() const{ return m_slowPal; }
454 
455     /**
456      * Ignore this setting unless your input frame rate is 23.976 or 24 frames per
457      * second (fps). Enable slow PAL to create a 25 fps output by relabeling the video
458      * frames and resampling your audio. Note that enabling this setting will slightly
459      * reduce the duration of your video. Related settings: You must also set Framerate
460      * to 25. In your JSON job specification, set (framerateControl) to (SPECIFIED),
461      * (framerateNumerator) to 25 and (framerateDenominator) to 1.
462      */
SlowPalHasBeenSet()463     inline bool SlowPalHasBeenSet() const { return m_slowPalHasBeenSet; }
464 
465     /**
466      * Ignore this setting unless your input frame rate is 23.976 or 24 frames per
467      * second (fps). Enable slow PAL to create a 25 fps output by relabeling the video
468      * frames and resampling your audio. Note that enabling this setting will slightly
469      * reduce the duration of your video. Related settings: You must also set Framerate
470      * to 25. In your JSON job specification, set (framerateControl) to (SPECIFIED),
471      * (framerateNumerator) to 25 and (framerateDenominator) to 1.
472      */
SetSlowPal(const Vc3SlowPal & value)473     inline void SetSlowPal(const Vc3SlowPal& value) { m_slowPalHasBeenSet = true; m_slowPal = value; }
474 
475     /**
476      * Ignore this setting unless your input frame rate is 23.976 or 24 frames per
477      * second (fps). Enable slow PAL to create a 25 fps output by relabeling the video
478      * frames and resampling your audio. Note that enabling this setting will slightly
479      * reduce the duration of your video. Related settings: You must also set Framerate
480      * to 25. In your JSON job specification, set (framerateControl) to (SPECIFIED),
481      * (framerateNumerator) to 25 and (framerateDenominator) to 1.
482      */
SetSlowPal(Vc3SlowPal && value)483     inline void SetSlowPal(Vc3SlowPal&& value) { m_slowPalHasBeenSet = true; m_slowPal = std::move(value); }
484 
485     /**
486      * Ignore this setting unless your input frame rate is 23.976 or 24 frames per
487      * second (fps). Enable slow PAL to create a 25 fps output by relabeling the video
488      * frames and resampling your audio. Note that enabling this setting will slightly
489      * reduce the duration of your video. Related settings: You must also set Framerate
490      * to 25. In your JSON job specification, set (framerateControl) to (SPECIFIED),
491      * (framerateNumerator) to 25 and (framerateDenominator) to 1.
492      */
WithSlowPal(const Vc3SlowPal & value)493     inline Vc3Settings& WithSlowPal(const Vc3SlowPal& value) { SetSlowPal(value); return *this;}
494 
495     /**
496      * Ignore this setting unless your input frame rate is 23.976 or 24 frames per
497      * second (fps). Enable slow PAL to create a 25 fps output by relabeling the video
498      * frames and resampling your audio. Note that enabling this setting will slightly
499      * reduce the duration of your video. Related settings: You must also set Framerate
500      * to 25. In your JSON job specification, set (framerateControl) to (SPECIFIED),
501      * (framerateNumerator) to 25 and (framerateDenominator) to 1.
502      */
WithSlowPal(Vc3SlowPal && value)503     inline Vc3Settings& WithSlowPal(Vc3SlowPal&& value) { SetSlowPal(std::move(value)); return *this;}
504 
505 
506     /**
507      * When you do frame rate conversion from 23.976 frames per second (fps) to 29.97
508      * fps, and your output scan type is interlaced, you can optionally enable hard
509      * telecine (HARD) to create a smoother picture. When you keep the default value,
510      * None (NONE), MediaConvert does a standard frame rate conversion to 29.97 without
511      * doing anything with the field polarity to create a smoother picture.
512      */
GetTelecine()513     inline const Vc3Telecine& GetTelecine() const{ return m_telecine; }
514 
515     /**
516      * When you do frame rate conversion from 23.976 frames per second (fps) to 29.97
517      * fps, and your output scan type is interlaced, you can optionally enable hard
518      * telecine (HARD) to create a smoother picture. When you keep the default value,
519      * None (NONE), MediaConvert does a standard frame rate conversion to 29.97 without
520      * doing anything with the field polarity to create a smoother picture.
521      */
TelecineHasBeenSet()522     inline bool TelecineHasBeenSet() const { return m_telecineHasBeenSet; }
523 
524     /**
525      * When you do frame rate conversion from 23.976 frames per second (fps) to 29.97
526      * fps, and your output scan type is interlaced, you can optionally enable hard
527      * telecine (HARD) to create a smoother picture. When you keep the default value,
528      * None (NONE), MediaConvert does a standard frame rate conversion to 29.97 without
529      * doing anything with the field polarity to create a smoother picture.
530      */
SetTelecine(const Vc3Telecine & value)531     inline void SetTelecine(const Vc3Telecine& value) { m_telecineHasBeenSet = true; m_telecine = value; }
532 
533     /**
534      * When you do frame rate conversion from 23.976 frames per second (fps) to 29.97
535      * fps, and your output scan type is interlaced, you can optionally enable hard
536      * telecine (HARD) to create a smoother picture. When you keep the default value,
537      * None (NONE), MediaConvert does a standard frame rate conversion to 29.97 without
538      * doing anything with the field polarity to create a smoother picture.
539      */
SetTelecine(Vc3Telecine && value)540     inline void SetTelecine(Vc3Telecine&& value) { m_telecineHasBeenSet = true; m_telecine = std::move(value); }
541 
542     /**
543      * When you do frame rate conversion from 23.976 frames per second (fps) to 29.97
544      * fps, and your output scan type is interlaced, you can optionally enable hard
545      * telecine (HARD) to create a smoother picture. When you keep the default value,
546      * None (NONE), MediaConvert does a standard frame rate conversion to 29.97 without
547      * doing anything with the field polarity to create a smoother picture.
548      */
WithTelecine(const Vc3Telecine & value)549     inline Vc3Settings& WithTelecine(const Vc3Telecine& value) { SetTelecine(value); return *this;}
550 
551     /**
552      * When you do frame rate conversion from 23.976 frames per second (fps) to 29.97
553      * fps, and your output scan type is interlaced, you can optionally enable hard
554      * telecine (HARD) to create a smoother picture. When you keep the default value,
555      * None (NONE), MediaConvert does a standard frame rate conversion to 29.97 without
556      * doing anything with the field polarity to create a smoother picture.
557      */
WithTelecine(Vc3Telecine && value)558     inline Vc3Settings& WithTelecine(Vc3Telecine&& value) { SetTelecine(std::move(value)); return *this;}
559 
560 
561     /**
562      * Specify the VC3 class to choose the quality characteristics for this output. VC3
563      * class, together with the settings Framerate (framerateNumerator and
564      * framerateDenominator) and Resolution (height and width), determine your output
565      * bitrate. For example, say that your video resolution is 1920x1080 and your
566      * framerate is 29.97. Then Class 145 (CLASS_145) gives you an output with a
567      * bitrate of approximately 145 Mbps and Class 220 (CLASS_220) gives you and output
568      * with a bitrate of approximately 220 Mbps. VC3 class also specifies the color bit
569      * depth of your output.
570      */
GetVc3Class()571     inline const Vc3Class& GetVc3Class() const{ return m_vc3Class; }
572 
573     /**
574      * Specify the VC3 class to choose the quality characteristics for this output. VC3
575      * class, together with the settings Framerate (framerateNumerator and
576      * framerateDenominator) and Resolution (height and width), determine your output
577      * bitrate. For example, say that your video resolution is 1920x1080 and your
578      * framerate is 29.97. Then Class 145 (CLASS_145) gives you an output with a
579      * bitrate of approximately 145 Mbps and Class 220 (CLASS_220) gives you and output
580      * with a bitrate of approximately 220 Mbps. VC3 class also specifies the color bit
581      * depth of your output.
582      */
Vc3ClassHasBeenSet()583     inline bool Vc3ClassHasBeenSet() const { return m_vc3ClassHasBeenSet; }
584 
585     /**
586      * Specify the VC3 class to choose the quality characteristics for this output. VC3
587      * class, together with the settings Framerate (framerateNumerator and
588      * framerateDenominator) and Resolution (height and width), determine your output
589      * bitrate. For example, say that your video resolution is 1920x1080 and your
590      * framerate is 29.97. Then Class 145 (CLASS_145) gives you an output with a
591      * bitrate of approximately 145 Mbps and Class 220 (CLASS_220) gives you and output
592      * with a bitrate of approximately 220 Mbps. VC3 class also specifies the color bit
593      * depth of your output.
594      */
SetVc3Class(const Vc3Class & value)595     inline void SetVc3Class(const Vc3Class& value) { m_vc3ClassHasBeenSet = true; m_vc3Class = value; }
596 
597     /**
598      * Specify the VC3 class to choose the quality characteristics for this output. VC3
599      * class, together with the settings Framerate (framerateNumerator and
600      * framerateDenominator) and Resolution (height and width), determine your output
601      * bitrate. For example, say that your video resolution is 1920x1080 and your
602      * framerate is 29.97. Then Class 145 (CLASS_145) gives you an output with a
603      * bitrate of approximately 145 Mbps and Class 220 (CLASS_220) gives you and output
604      * with a bitrate of approximately 220 Mbps. VC3 class also specifies the color bit
605      * depth of your output.
606      */
SetVc3Class(Vc3Class && value)607     inline void SetVc3Class(Vc3Class&& value) { m_vc3ClassHasBeenSet = true; m_vc3Class = std::move(value); }
608 
609     /**
610      * Specify the VC3 class to choose the quality characteristics for this output. VC3
611      * class, together with the settings Framerate (framerateNumerator and
612      * framerateDenominator) and Resolution (height and width), determine your output
613      * bitrate. For example, say that your video resolution is 1920x1080 and your
614      * framerate is 29.97. Then Class 145 (CLASS_145) gives you an output with a
615      * bitrate of approximately 145 Mbps and Class 220 (CLASS_220) gives you and output
616      * with a bitrate of approximately 220 Mbps. VC3 class also specifies the color bit
617      * depth of your output.
618      */
WithVc3Class(const Vc3Class & value)619     inline Vc3Settings& WithVc3Class(const Vc3Class& value) { SetVc3Class(value); return *this;}
620 
621     /**
622      * Specify the VC3 class to choose the quality characteristics for this output. VC3
623      * class, together with the settings Framerate (framerateNumerator and
624      * framerateDenominator) and Resolution (height and width), determine your output
625      * bitrate. For example, say that your video resolution is 1920x1080 and your
626      * framerate is 29.97. Then Class 145 (CLASS_145) gives you an output with a
627      * bitrate of approximately 145 Mbps and Class 220 (CLASS_220) gives you and output
628      * with a bitrate of approximately 220 Mbps. VC3 class also specifies the color bit
629      * depth of your output.
630      */
WithVc3Class(Vc3Class && value)631     inline Vc3Settings& WithVc3Class(Vc3Class&& value) { SetVc3Class(std::move(value)); return *this;}
632 
633   private:
634 
635     Vc3FramerateControl m_framerateControl;
636     bool m_framerateControlHasBeenSet;
637 
638     Vc3FramerateConversionAlgorithm m_framerateConversionAlgorithm;
639     bool m_framerateConversionAlgorithmHasBeenSet;
640 
641     int m_framerateDenominator;
642     bool m_framerateDenominatorHasBeenSet;
643 
644     int m_framerateNumerator;
645     bool m_framerateNumeratorHasBeenSet;
646 
647     Vc3InterlaceMode m_interlaceMode;
648     bool m_interlaceModeHasBeenSet;
649 
650     Vc3ScanTypeConversionMode m_scanTypeConversionMode;
651     bool m_scanTypeConversionModeHasBeenSet;
652 
653     Vc3SlowPal m_slowPal;
654     bool m_slowPalHasBeenSet;
655 
656     Vc3Telecine m_telecine;
657     bool m_telecineHasBeenSet;
658 
659     Vc3Class m_vc3Class;
660     bool m_vc3ClassHasBeenSet;
661   };
662 
663 } // namespace Model
664 } // namespace MediaConvert
665 } // namespace Aws
666