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/UdpContainerSettings.h>
9 #include <aws/medialive/model/OutputLocationRef.h>
10 #include <aws/medialive/model/FecOutputSettings.h>
11 #include <utility>
12 
13 namespace Aws
14 {
15 namespace Utils
16 {
17 namespace Json
18 {
19   class JsonValue;
20   class JsonView;
21 } // namespace Json
22 } // namespace Utils
23 namespace MediaLive
24 {
25 namespace Model
26 {
27 
28   /**
29    * Udp Output Settings<p><h3>See Also:</h3>   <a
30    * href="http://docs.aws.amazon.com/goto/WebAPI/medialive-2017-10-14/UdpOutputSettings">AWS
31    * API Reference</a></p>
32    */
33   class AWS_MEDIALIVE_API UdpOutputSettings
34   {
35   public:
36     UdpOutputSettings();
37     UdpOutputSettings(Aws::Utils::Json::JsonView jsonValue);
38     UdpOutputSettings& operator=(Aws::Utils::Json::JsonView jsonValue);
39     Aws::Utils::Json::JsonValue Jsonize() const;
40 
41 
42     /**
43      * UDP output buffering in milliseconds. Larger values increase latency through the
44      * transcoder but simultaneously assist the transcoder in maintaining a constant,
45      * low-jitter UDP/RTP output while accommodating clock recovery, input switching,
46      * input disruptions, picture reordering, etc.
47      */
GetBufferMsec()48     inline int GetBufferMsec() const{ return m_bufferMsec; }
49 
50     /**
51      * UDP output buffering in milliseconds. Larger values increase latency through the
52      * transcoder but simultaneously assist the transcoder in maintaining a constant,
53      * low-jitter UDP/RTP output while accommodating clock recovery, input switching,
54      * input disruptions, picture reordering, etc.
55      */
BufferMsecHasBeenSet()56     inline bool BufferMsecHasBeenSet() const { return m_bufferMsecHasBeenSet; }
57 
58     /**
59      * UDP output buffering in milliseconds. Larger values increase latency through the
60      * transcoder but simultaneously assist the transcoder in maintaining a constant,
61      * low-jitter UDP/RTP output while accommodating clock recovery, input switching,
62      * input disruptions, picture reordering, etc.
63      */
SetBufferMsec(int value)64     inline void SetBufferMsec(int value) { m_bufferMsecHasBeenSet = true; m_bufferMsec = value; }
65 
66     /**
67      * UDP output buffering in milliseconds. Larger values increase latency through the
68      * transcoder but simultaneously assist the transcoder in maintaining a constant,
69      * low-jitter UDP/RTP output while accommodating clock recovery, input switching,
70      * input disruptions, picture reordering, etc.
71      */
WithBufferMsec(int value)72     inline UdpOutputSettings& WithBufferMsec(int value) { SetBufferMsec(value); return *this;}
73 
74 
75 
GetContainerSettings()76     inline const UdpContainerSettings& GetContainerSettings() const{ return m_containerSettings; }
77 
78 
ContainerSettingsHasBeenSet()79     inline bool ContainerSettingsHasBeenSet() const { return m_containerSettingsHasBeenSet; }
80 
81 
SetContainerSettings(const UdpContainerSettings & value)82     inline void SetContainerSettings(const UdpContainerSettings& value) { m_containerSettingsHasBeenSet = true; m_containerSettings = value; }
83 
84 
SetContainerSettings(UdpContainerSettings && value)85     inline void SetContainerSettings(UdpContainerSettings&& value) { m_containerSettingsHasBeenSet = true; m_containerSettings = std::move(value); }
86 
87 
WithContainerSettings(const UdpContainerSettings & value)88     inline UdpOutputSettings& WithContainerSettings(const UdpContainerSettings& value) { SetContainerSettings(value); return *this;}
89 
90 
WithContainerSettings(UdpContainerSettings && value)91     inline UdpOutputSettings& WithContainerSettings(UdpContainerSettings&& value) { SetContainerSettings(std::move(value)); return *this;}
92 
93 
94     /**
95      * Destination address and port number for RTP or UDP packets. Can be unicast or
96      * multicast RTP or UDP (eg. rtp://239.10.10.10:5001 or udp://10.100.100.100:5002).
97      */
GetDestination()98     inline const OutputLocationRef& GetDestination() const{ return m_destination; }
99 
100     /**
101      * Destination address and port number for RTP or UDP packets. Can be unicast or
102      * multicast RTP or UDP (eg. rtp://239.10.10.10:5001 or udp://10.100.100.100:5002).
103      */
DestinationHasBeenSet()104     inline bool DestinationHasBeenSet() const { return m_destinationHasBeenSet; }
105 
106     /**
107      * Destination address and port number for RTP or UDP packets. Can be unicast or
108      * multicast RTP or UDP (eg. rtp://239.10.10.10:5001 or udp://10.100.100.100:5002).
109      */
SetDestination(const OutputLocationRef & value)110     inline void SetDestination(const OutputLocationRef& value) { m_destinationHasBeenSet = true; m_destination = value; }
111 
112     /**
113      * Destination address and port number for RTP or UDP packets. Can be unicast or
114      * multicast RTP or UDP (eg. rtp://239.10.10.10:5001 or udp://10.100.100.100:5002).
115      */
SetDestination(OutputLocationRef && value)116     inline void SetDestination(OutputLocationRef&& value) { m_destinationHasBeenSet = true; m_destination = std::move(value); }
117 
118     /**
119      * Destination address and port number for RTP or UDP packets. Can be unicast or
120      * multicast RTP or UDP (eg. rtp://239.10.10.10:5001 or udp://10.100.100.100:5002).
121      */
WithDestination(const OutputLocationRef & value)122     inline UdpOutputSettings& WithDestination(const OutputLocationRef& value) { SetDestination(value); return *this;}
123 
124     /**
125      * Destination address and port number for RTP or UDP packets. Can be unicast or
126      * multicast RTP or UDP (eg. rtp://239.10.10.10:5001 or udp://10.100.100.100:5002).
127      */
WithDestination(OutputLocationRef && value)128     inline UdpOutputSettings& WithDestination(OutputLocationRef&& value) { SetDestination(std::move(value)); return *this;}
129 
130 
131     /**
132      * Settings for enabling and adjusting Forward Error Correction on UDP outputs.
133      */
GetFecOutputSettings()134     inline const FecOutputSettings& GetFecOutputSettings() const{ return m_fecOutputSettings; }
135 
136     /**
137      * Settings for enabling and adjusting Forward Error Correction on UDP outputs.
138      */
FecOutputSettingsHasBeenSet()139     inline bool FecOutputSettingsHasBeenSet() const { return m_fecOutputSettingsHasBeenSet; }
140 
141     /**
142      * Settings for enabling and adjusting Forward Error Correction on UDP outputs.
143      */
SetFecOutputSettings(const FecOutputSettings & value)144     inline void SetFecOutputSettings(const FecOutputSettings& value) { m_fecOutputSettingsHasBeenSet = true; m_fecOutputSettings = value; }
145 
146     /**
147      * Settings for enabling and adjusting Forward Error Correction on UDP outputs.
148      */
SetFecOutputSettings(FecOutputSettings && value)149     inline void SetFecOutputSettings(FecOutputSettings&& value) { m_fecOutputSettingsHasBeenSet = true; m_fecOutputSettings = std::move(value); }
150 
151     /**
152      * Settings for enabling and adjusting Forward Error Correction on UDP outputs.
153      */
WithFecOutputSettings(const FecOutputSettings & value)154     inline UdpOutputSettings& WithFecOutputSettings(const FecOutputSettings& value) { SetFecOutputSettings(value); return *this;}
155 
156     /**
157      * Settings for enabling and adjusting Forward Error Correction on UDP outputs.
158      */
WithFecOutputSettings(FecOutputSettings && value)159     inline UdpOutputSettings& WithFecOutputSettings(FecOutputSettings&& value) { SetFecOutputSettings(std::move(value)); return *this;}
160 
161   private:
162 
163     int m_bufferMsec;
164     bool m_bufferMsecHasBeenSet;
165 
166     UdpContainerSettings m_containerSettings;
167     bool m_containerSettingsHasBeenSet;
168 
169     OutputLocationRef m_destination;
170     bool m_destinationHasBeenSet;
171 
172     FecOutputSettings m_fecOutputSettings;
173     bool m_fecOutputSettingsHasBeenSet;
174   };
175 
176 } // namespace Model
177 } // namespace MediaLive
178 } // namespace Aws
179