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/TimecodeConfigSource.h>
9 #include <utility>
10 
11 namespace Aws
12 {
13 namespace Utils
14 {
15 namespace Json
16 {
17   class JsonValue;
18   class JsonView;
19 } // namespace Json
20 } // namespace Utils
21 namespace MediaLive
22 {
23 namespace Model
24 {
25 
26   /**
27    * Timecode Config<p><h3>See Also:</h3>   <a
28    * href="http://docs.aws.amazon.com/goto/WebAPI/medialive-2017-10-14/TimecodeConfig">AWS
29    * API Reference</a></p>
30    */
31   class AWS_MEDIALIVE_API TimecodeConfig
32   {
33   public:
34     TimecodeConfig();
35     TimecodeConfig(Aws::Utils::Json::JsonView jsonValue);
36     TimecodeConfig& operator=(Aws::Utils::Json::JsonView jsonValue);
37     Aws::Utils::Json::JsonValue Jsonize() const;
38 
39 
40     /**
41      * Identifies the source for the timecode that will be associated with the events
42      * outputs.
43 -Embedded (embedded): Initialize the output timecode with timecode from
44      * the the source.  If no embedded timecode is detected in the source, the system
45      * falls back to using "Start at 0" (zerobased).
46 -System Clock (systemclock): Use
47      * the UTC time.
48 -Start at 0 (zerobased): The time of the first frame of the event
49      * will be 00:00:00:00.
50      */
GetSource()51     inline const TimecodeConfigSource& GetSource() const{ return m_source; }
52 
53     /**
54      * Identifies the source for the timecode that will be associated with the events
55      * outputs.
56 -Embedded (embedded): Initialize the output timecode with timecode from
57      * the the source.  If no embedded timecode is detected in the source, the system
58      * falls back to using "Start at 0" (zerobased).
59 -System Clock (systemclock): Use
60      * the UTC time.
61 -Start at 0 (zerobased): The time of the first frame of the event
62      * will be 00:00:00:00.
63      */
SourceHasBeenSet()64     inline bool SourceHasBeenSet() const { return m_sourceHasBeenSet; }
65 
66     /**
67      * Identifies the source for the timecode that will be associated with the events
68      * outputs.
69 -Embedded (embedded): Initialize the output timecode with timecode from
70      * the the source.  If no embedded timecode is detected in the source, the system
71      * falls back to using "Start at 0" (zerobased).
72 -System Clock (systemclock): Use
73      * the UTC time.
74 -Start at 0 (zerobased): The time of the first frame of the event
75      * will be 00:00:00:00.
76      */
SetSource(const TimecodeConfigSource & value)77     inline void SetSource(const TimecodeConfigSource& value) { m_sourceHasBeenSet = true; m_source = value; }
78 
79     /**
80      * Identifies the source for the timecode that will be associated with the events
81      * outputs.
82 -Embedded (embedded): Initialize the output timecode with timecode from
83      * the the source.  If no embedded timecode is detected in the source, the system
84      * falls back to using "Start at 0" (zerobased).
85 -System Clock (systemclock): Use
86      * the UTC time.
87 -Start at 0 (zerobased): The time of the first frame of the event
88      * will be 00:00:00:00.
89      */
SetSource(TimecodeConfigSource && value)90     inline void SetSource(TimecodeConfigSource&& value) { m_sourceHasBeenSet = true; m_source = std::move(value); }
91 
92     /**
93      * Identifies the source for the timecode that will be associated with the events
94      * outputs.
95 -Embedded (embedded): Initialize the output timecode with timecode from
96      * the the source.  If no embedded timecode is detected in the source, the system
97      * falls back to using "Start at 0" (zerobased).
98 -System Clock (systemclock): Use
99      * the UTC time.
100 -Start at 0 (zerobased): The time of the first frame of the event
101      * will be 00:00:00:00.
102      */
WithSource(const TimecodeConfigSource & value)103     inline TimecodeConfig& WithSource(const TimecodeConfigSource& value) { SetSource(value); return *this;}
104 
105     /**
106      * Identifies the source for the timecode that will be associated with the events
107      * outputs.
108 -Embedded (embedded): Initialize the output timecode with timecode from
109      * the the source.  If no embedded timecode is detected in the source, the system
110      * falls back to using "Start at 0" (zerobased).
111 -System Clock (systemclock): Use
112      * the UTC time.
113 -Start at 0 (zerobased): The time of the first frame of the event
114      * will be 00:00:00:00.
115      */
WithSource(TimecodeConfigSource && value)116     inline TimecodeConfig& WithSource(TimecodeConfigSource&& value) { SetSource(std::move(value)); return *this;}
117 
118 
119     /**
120      * Threshold in frames beyond which output timecode is resynchronized to the input
121      * timecode. Discrepancies below this threshold are permitted to avoid unnecessary
122      * discontinuities in the output timecode. No timecode sync when this is not
123      * specified.
124      */
GetSyncThreshold()125     inline int GetSyncThreshold() const{ return m_syncThreshold; }
126 
127     /**
128      * Threshold in frames beyond which output timecode is resynchronized to the input
129      * timecode. Discrepancies below this threshold are permitted to avoid unnecessary
130      * discontinuities in the output timecode. No timecode sync when this is not
131      * specified.
132      */
SyncThresholdHasBeenSet()133     inline bool SyncThresholdHasBeenSet() const { return m_syncThresholdHasBeenSet; }
134 
135     /**
136      * Threshold in frames beyond which output timecode is resynchronized to the input
137      * timecode. Discrepancies below this threshold are permitted to avoid unnecessary
138      * discontinuities in the output timecode. No timecode sync when this is not
139      * specified.
140      */
SetSyncThreshold(int value)141     inline void SetSyncThreshold(int value) { m_syncThresholdHasBeenSet = true; m_syncThreshold = value; }
142 
143     /**
144      * Threshold in frames beyond which output timecode is resynchronized to the input
145      * timecode. Discrepancies below this threshold are permitted to avoid unnecessary
146      * discontinuities in the output timecode. No timecode sync when this is not
147      * specified.
148      */
WithSyncThreshold(int value)149     inline TimecodeConfig& WithSyncThreshold(int value) { SetSyncThreshold(value); return *this;}
150 
151   private:
152 
153     TimecodeConfigSource m_source;
154     bool m_sourceHasBeenSet;
155 
156     int m_syncThreshold;
157     bool m_syncThresholdHasBeenSet;
158   };
159 
160 } // namespace Model
161 } // namespace MediaLive
162 } // namespace Aws
163