Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(625)

Side by Side Diff: webrtc/common_types.h

Issue 2294243003: git cl format on common_types.h. (Closed)
Patch Set: misc Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #ifndef WEBRTC_COMMON_TYPES_H_ 11 #ifndef WEBRTC_COMMON_TYPES_H_
12 #define WEBRTC_COMMON_TYPES_H_ 12 #define WEBRTC_COMMON_TYPES_H_
13 13
14 #include <assert.h> 14 #include <assert.h>
15 #include <stddef.h> 15 #include <stddef.h>
16 #include <string.h> 16 #include <string.h>
17 17
18 #include <string> 18 #include <string>
19 #include <vector> 19 #include <vector>
20 20
21 #include "webrtc/typedefs.h" 21 #include "webrtc/typedefs.h"
22 22
23 #if defined(_MSC_VER) 23 #if defined(_MSC_VER)
24 // Disable "new behavior: elements of array will be default initialized" 24 // Disable "new behavior: elements of array will be default initialized"
25 // warning. Affects OverUseDetectorOptions. 25 // warning. Affects OverUseDetectorOptions.
26 #pragma warning(disable:4351) 26 #pragma warning(disable : 4351)
27 #endif 27 #endif
28 28
29 #ifdef WEBRTC_EXPORT 29 #ifdef WEBRTC_EXPORT
30 #define WEBRTC_DLLEXPORT _declspec(dllexport) 30 #define WEBRTC_DLLEXPORT _declspec(dllexport)
31 #elif WEBRTC_DLL 31 #elif WEBRTC_DLL
32 #define WEBRTC_DLLEXPORT _declspec(dllimport) 32 #define WEBRTC_DLLEXPORT _declspec(dllimport)
33 #else 33 #else
34 #define WEBRTC_DLLEXPORT 34 #define WEBRTC_DLLEXPORT
35 #endif 35 #endif
36 36
(...skipping 30 matching lines...) Expand all
67 virtual int Read(void* buf, size_t len) = 0; 67 virtual int Read(void* buf, size_t len) = 0;
68 }; 68 };
69 69
70 class OutStream : public RewindableStream { 70 class OutStream : public RewindableStream {
71 public: 71 public:
72 // Writes |len| bytes from |buf| to file. The actual writing may happen 72 // Writes |len| bytes from |buf| to file. The actual writing may happen
73 // some time later. Call Flush() to force a write. 73 // some time later. Call Flush() to force a write.
74 virtual bool Write(const void* buf, size_t len) = 0; 74 virtual bool Write(const void* buf, size_t len) = 0;
75 }; 75 };
76 76
77 enum TraceModule 77 enum TraceModule {
78 { 78 kTraceUndefined = 0,
79 kTraceUndefined = 0, 79 // not a module, triggered from the engine code
80 // not a module, triggered from the engine code 80 kTraceVoice = 0x0001,
81 kTraceVoice = 0x0001, 81 // not a module, triggered from the engine code
82 // not a module, triggered from the engine code 82 kTraceVideo = 0x0002,
83 kTraceVideo = 0x0002, 83 // not a module, triggered from the utility code
84 // not a module, triggered from the utility code 84 kTraceUtility = 0x0003,
85 kTraceUtility = 0x0003, 85 kTraceRtpRtcp = 0x0004,
86 kTraceRtpRtcp = 0x0004, 86 kTraceTransport = 0x0005,
87 kTraceTransport = 0x0005, 87 kTraceSrtp = 0x0006,
88 kTraceSrtp = 0x0006, 88 kTraceAudioCoding = 0x0007,
89 kTraceAudioCoding = 0x0007, 89 kTraceAudioMixerServer = 0x0008,
90 kTraceAudioMixerServer = 0x0008, 90 kTraceAudioMixerClient = 0x0009,
91 kTraceAudioMixerClient = 0x0009, 91 kTraceFile = 0x000a,
92 kTraceFile = 0x000a, 92 kTraceAudioProcessing = 0x000b,
93 kTraceAudioProcessing = 0x000b, 93 kTraceVideoCoding = 0x0010,
94 kTraceVideoCoding = 0x0010, 94 kTraceVideoMixer = 0x0011,
95 kTraceVideoMixer = 0x0011, 95 kTraceAudioDevice = 0x0012,
96 kTraceAudioDevice = 0x0012, 96 kTraceVideoRenderer = 0x0014,
97 kTraceVideoRenderer = 0x0014, 97 kTraceVideoCapture = 0x0015,
98 kTraceVideoCapture = 0x0015, 98 kTraceRemoteBitrateEstimator = 0x0017,
99 kTraceRemoteBitrateEstimator = 0x0017,
100 }; 99 };
101 100
102 enum TraceLevel 101 enum TraceLevel {
103 { 102 kTraceNone = 0x0000, // no trace
104 kTraceNone = 0x0000, // no trace 103 kTraceStateInfo = 0x0001,
105 kTraceStateInfo = 0x0001, 104 kTraceWarning = 0x0002,
106 kTraceWarning = 0x0002, 105 kTraceError = 0x0004,
107 kTraceError = 0x0004, 106 kTraceCritical = 0x0008,
108 kTraceCritical = 0x0008, 107 kTraceApiCall = 0x0010,
109 kTraceApiCall = 0x0010, 108 kTraceDefault = 0x00ff,
110 kTraceDefault = 0x00ff,
111 109
112 kTraceModuleCall = 0x0020, 110 kTraceModuleCall = 0x0020,
113 kTraceMemory = 0x0100, // memory info 111 kTraceMemory = 0x0100, // memory info
114 kTraceTimer = 0x0200, // timing info 112 kTraceTimer = 0x0200, // timing info
115 kTraceStream = 0x0400, // "continuous" stream of data 113 kTraceStream = 0x0400, // "continuous" stream of data
116 114
117 // used for debug purposes 115 // used for debug purposes
118 kTraceDebug = 0x0800, // debug 116 kTraceDebug = 0x0800, // debug
119 kTraceInfo = 0x1000, // debug info 117 kTraceInfo = 0x1000, // debug info
120 118
121 // Non-verbose level used by LS_INFO of logging.h. Do not use directly. 119 // Non-verbose level used by LS_INFO of logging.h. Do not use directly.
122 kTraceTerseInfo = 0x2000, 120 kTraceTerseInfo = 0x2000,
123 121
124 kTraceAll = 0xffff 122 kTraceAll = 0xffff
125 }; 123 };
126 124
127 // External Trace API 125 // External Trace API
128 class TraceCallback { 126 class TraceCallback {
129 public: 127 public:
130 virtual void Print(TraceLevel level, const char* message, int length) = 0; 128 virtual void Print(TraceLevel level, const char* message, int length) = 0;
131 129
132 protected: 130 protected:
133 virtual ~TraceCallback() {} 131 virtual ~TraceCallback() {}
134 TraceCallback() {} 132 TraceCallback() {}
135 }; 133 };
136 134
137 enum FileFormats 135 enum FileFormats {
138 { 136 kFileFormatWavFile = 1,
139 kFileFormatWavFile = 1, 137 kFileFormatCompressedFile = 2,
140 kFileFormatCompressedFile = 2, 138 kFileFormatPreencodedFile = 4,
141 kFileFormatPreencodedFile = 4, 139 kFileFormatPcm16kHzFile = 7,
142 kFileFormatPcm16kHzFile = 7, 140 kFileFormatPcm8kHzFile = 8,
143 kFileFormatPcm8kHzFile = 8, 141 kFileFormatPcm32kHzFile = 9
144 kFileFormatPcm32kHzFile = 9
145 }; 142 };
146 143
147 enum ProcessingTypes 144 enum ProcessingTypes {
148 { 145 kPlaybackPerChannel = 0,
149 kPlaybackPerChannel = 0, 146 kPlaybackAllChannelsMixed,
150 kPlaybackAllChannelsMixed, 147 kRecordingPerChannel,
151 kRecordingPerChannel, 148 kRecordingAllChannelsMixed,
152 kRecordingAllChannelsMixed, 149 kRecordingPreprocessing
153 kRecordingPreprocessing
154 }; 150 };
155 151
156 enum FrameType { 152 enum FrameType {
157 kEmptyFrame = 0, 153 kEmptyFrame = 0,
158 kAudioFrameSpeech = 1, 154 kAudioFrameSpeech = 1,
159 kAudioFrameCN = 2, 155 kAudioFrameCN = 2,
160 kVideoFrameKey = 3, 156 kVideoFrameKey = 3,
161 kVideoFrameDelta = 4, 157 kVideoFrameDelta = 4,
162 }; 158 };
163 159
164 // Statistics for an RTCP channel 160 // Statistics for an RTCP channel
165 struct RtcpStatistics { 161 struct RtcpStatistics {
166 RtcpStatistics() 162 RtcpStatistics()
167 : fraction_lost(0), 163 : fraction_lost(0),
168 cumulative_lost(0), 164 cumulative_lost(0),
169 extended_max_sequence_number(0), 165 extended_max_sequence_number(0),
170 jitter(0) {} 166 jitter(0) {}
171 167
172 uint8_t fraction_lost; 168 uint8_t fraction_lost;
173 uint32_t cumulative_lost; 169 uint32_t cumulative_lost;
174 uint32_t extended_max_sequence_number; 170 uint32_t extended_max_sequence_number;
175 uint32_t jitter; 171 uint32_t jitter;
176 }; 172 };
177 173
178 class RtcpStatisticsCallback { 174 class RtcpStatisticsCallback {
179 public: 175 public:
180 virtual ~RtcpStatisticsCallback() {} 176 virtual ~RtcpStatisticsCallback() {}
181 177
182 virtual void StatisticsUpdated(const RtcpStatistics& statistics, 178 virtual void StatisticsUpdated(const RtcpStatistics& statistics,
183 uint32_t ssrc) = 0; 179 uint32_t ssrc) = 0;
184 virtual void CNameChanged(const char* cname, uint32_t ssrc) = 0; 180 virtual void CNameChanged(const char* cname, uint32_t ssrc) = 0;
185 }; 181 };
186 182
187 // Statistics for RTCP packet types. 183 // Statistics for RTCP packet types.
188 struct RtcpPacketTypeCounter { 184 struct RtcpPacketTypeCounter {
189 RtcpPacketTypeCounter() 185 RtcpPacketTypeCounter()
190 : first_packet_time_ms(-1), 186 : first_packet_time_ms(-1),
191 nack_packets(0), 187 nack_packets(0),
192 fir_packets(0), 188 fir_packets(0),
193 pli_packets(0), 189 pli_packets(0),
194 nack_requests(0), 190 nack_requests(0),
195 unique_nack_requests(0) {} 191 unique_nack_requests(0) {}
196 192
197 void Add(const RtcpPacketTypeCounter& other) { 193 void Add(const RtcpPacketTypeCounter& other) {
198 nack_packets += other.nack_packets; 194 nack_packets += other.nack_packets;
199 fir_packets += other.fir_packets; 195 fir_packets += other.fir_packets;
200 pli_packets += other.pli_packets; 196 pli_packets += other.pli_packets;
201 nack_requests += other.nack_requests; 197 nack_requests += other.nack_requests;
202 unique_nack_requests += other.unique_nack_requests; 198 unique_nack_requests += other.unique_nack_requests;
203 if (other.first_packet_time_ms != -1 && 199 if (other.first_packet_time_ms != -1 &&
204 (other.first_packet_time_ms < first_packet_time_ms || 200 (other.first_packet_time_ms < first_packet_time_ms ||
205 first_packet_time_ms == -1)) { 201 first_packet_time_ms == -1)) {
206 // Use oldest time. 202 // Use oldest time.
207 first_packet_time_ms = other.first_packet_time_ms; 203 first_packet_time_ms = other.first_packet_time_ms;
208 } 204 }
209 } 205 }
210 206
211 void Subtract(const RtcpPacketTypeCounter& other) { 207 void Subtract(const RtcpPacketTypeCounter& other) {
212 nack_packets -= other.nack_packets; 208 nack_packets -= other.nack_packets;
213 fir_packets -= other.fir_packets; 209 fir_packets -= other.fir_packets;
214 pli_packets -= other.pli_packets; 210 pli_packets -= other.pli_packets;
215 nack_requests -= other.nack_requests; 211 nack_requests -= other.nack_requests;
216 unique_nack_requests -= other.unique_nack_requests; 212 unique_nack_requests -= other.unique_nack_requests;
217 if (other.first_packet_time_ms != -1 && 213 if (other.first_packet_time_ms != -1 &&
218 (other.first_packet_time_ms > first_packet_time_ms || 214 (other.first_packet_time_ms > first_packet_time_ms ||
219 first_packet_time_ms == -1)) { 215 first_packet_time_ms == -1)) {
220 // Use youngest time. 216 // Use youngest time.
221 first_packet_time_ms = other.first_packet_time_ms; 217 first_packet_time_ms = other.first_packet_time_ms;
222 } 218 }
223 } 219 }
224 220
225 int64_t TimeSinceFirstPacketInMs(int64_t now_ms) const { 221 int64_t TimeSinceFirstPacketInMs(int64_t now_ms) const {
226 return (first_packet_time_ms == -1) ? -1 : (now_ms - first_packet_time_ms); 222 return (first_packet_time_ms == -1) ? -1 : (now_ms - first_packet_time_ms);
227 } 223 }
228 224
229 int UniqueNackRequestsInPercent() const { 225 int UniqueNackRequestsInPercent() const {
230 if (nack_requests == 0) { 226 if (nack_requests == 0) {
231 return 0; 227 return 0;
232 } 228 }
233 return static_cast<int>( 229 return static_cast<int>((unique_nack_requests * 100.0f / nack_requests) +
234 (unique_nack_requests * 100.0f / nack_requests) + 0.5f); 230 0.5f);
235 } 231 }
236 232
237 int64_t first_packet_time_ms; // Time when first packet is sent/received. 233 int64_t first_packet_time_ms; // Time when first packet is sent/received.
238 uint32_t nack_packets; // Number of RTCP NACK packets. 234 uint32_t nack_packets; // Number of RTCP NACK packets.
239 uint32_t fir_packets; // Number of RTCP FIR packets. 235 uint32_t fir_packets; // Number of RTCP FIR packets.
240 uint32_t pli_packets; // Number of RTCP PLI packets. 236 uint32_t pli_packets; // Number of RTCP PLI packets.
241 uint32_t nack_requests; // Number of NACKed RTP packets. 237 uint32_t nack_requests; // Number of NACKed RTP packets.
242 uint32_t unique_nack_requests; // Number of unique NACKed RTP packets. 238 uint32_t unique_nack_requests; // Number of unique NACKed RTP packets.
243 }; 239 };
244 240
245 class RtcpPacketTypeCounterObserver { 241 class RtcpPacketTypeCounterObserver {
246 public: 242 public:
247 virtual ~RtcpPacketTypeCounterObserver() {} 243 virtual ~RtcpPacketTypeCounterObserver() {}
248 virtual void RtcpPacketTypesCounterUpdated( 244 virtual void RtcpPacketTypesCounterUpdated(
249 uint32_t ssrc, 245 uint32_t ssrc,
250 const RtcpPacketTypeCounter& packet_counter) = 0; 246 const RtcpPacketTypeCounter& packet_counter) = 0;
251 }; 247 };
252 248
253 // Rate statistics for a stream. 249 // Rate statistics for a stream.
254 struct BitrateStatistics { 250 struct BitrateStatistics {
255 BitrateStatistics() : bitrate_bps(0), packet_rate(0) {} 251 BitrateStatistics() : bitrate_bps(0), packet_rate(0) {}
256 252
257 uint32_t bitrate_bps; // Bitrate in bits per second. 253 uint32_t bitrate_bps; // Bitrate in bits per second.
258 uint32_t packet_rate; // Packet rate in packets per second. 254 uint32_t packet_rate; // Packet rate in packets per second.
259 }; 255 };
260 256
261 // Callback, used to notify an observer whenever new rates have been estimated. 257 // Callback, used to notify an observer whenever new rates have been estimated.
262 class BitrateStatisticsObserver { 258 class BitrateStatisticsObserver {
263 public: 259 public:
264 virtual ~BitrateStatisticsObserver() {} 260 virtual ~BitrateStatisticsObserver() {}
265 261
266 virtual void Notify(uint32_t total_bitrate_bps, 262 virtual void Notify(uint32_t total_bitrate_bps,
267 uint32_t retransmit_bitrate_bps, 263 uint32_t retransmit_bitrate_bps,
268 uint32_t ssrc) = 0; 264 uint32_t ssrc) = 0;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 int pltype; 308 int pltype;
313 char plname[RTP_PAYLOAD_NAME_SIZE]; 309 char plname[RTP_PAYLOAD_NAME_SIZE];
314 int plfreq; 310 int plfreq;
315 int pacsize; 311 int pacsize;
316 size_t channels; 312 size_t channels;
317 int rate; // bits/sec unlike {start,min,max}Bitrate elsewhere in this file! 313 int rate; // bits/sec unlike {start,min,max}Bitrate elsewhere in this file!
318 314
319 bool operator==(const CodecInst& other) const { 315 bool operator==(const CodecInst& other) const {
320 return pltype == other.pltype && 316 return pltype == other.pltype &&
321 (STR_CASE_CMP(plname, other.plname) == 0) && 317 (STR_CASE_CMP(plname, other.plname) == 0) &&
322 plfreq == other.plfreq && 318 plfreq == other.plfreq && pacsize == other.pacsize &&
323 pacsize == other.pacsize && 319 channels == other.channels && rate == other.rate;
324 channels == other.channels &&
325 rate == other.rate;
326 } 320 }
327 321
328 bool operator!=(const CodecInst& other) const { 322 bool operator!=(const CodecInst& other) const { return !(*this == other); }
329 return !(*this == other);
330 }
331 }; 323 };
332 324
333 // RTP 325 // RTP
334 enum {kRtpCsrcSize = 15}; // RFC 3550 page 13 326 enum { kRtpCsrcSize = 15 }; // RFC 3550 page 13
335 327
336 enum PayloadFrequencies 328 enum PayloadFrequencies {
337 { 329 kFreq8000Hz = 8000,
338 kFreq8000Hz = 8000, 330 kFreq16000Hz = 16000,
339 kFreq16000Hz = 16000, 331 kFreq32000Hz = 32000
340 kFreq32000Hz = 32000
341 }; 332 };
342 333
343 enum VadModes // degree of bandwidth reduction 334 // Degree of bandwidth reduction.
344 { 335 enum VadModes {
345 kVadConventional = 0, // lowest reduction 336 kVadConventional = 0, // lowest reduction
346 kVadAggressiveLow, 337 kVadAggressiveLow,
347 kVadAggressiveMid, 338 kVadAggressiveMid,
348 kVadAggressiveHigh // highest reduction 339 kVadAggressiveHigh // highest reduction
349 }; 340 };
350 341
351 struct NetworkStatistics // NETEQ statistics 342 // NETEQ statistics.
352 { 343 struct NetworkStatistics {
353 // current jitter buffer size in ms 344 // current jitter buffer size in ms
354 uint16_t currentBufferSize; 345 uint16_t currentBufferSize;
355 // preferred (optimal) buffer size in ms 346 // preferred (optimal) buffer size in ms
356 uint16_t preferredBufferSize; 347 uint16_t preferredBufferSize;
357 // adding extra delay due to "peaky jitter" 348 // adding extra delay due to "peaky jitter"
358 bool jitterPeaksFound; 349 bool jitterPeaksFound;
359 // Loss rate (network + late); fraction between 0 and 1, scaled to Q14. 350 // Loss rate (network + late); fraction between 0 and 1, scaled to Q14.
360 uint16_t currentPacketLossRate; 351 uint16_t currentPacketLossRate;
361 // Late loss rate; fraction between 0 and 1, scaled to Q14. 352 // Late loss rate; fraction between 0 and 1, scaled to Q14.
362 uint16_t currentDiscardRate; 353 uint16_t currentDiscardRate;
363 // fraction (of original stream) of synthesized audio inserted through 354 // fraction (of original stream) of synthesized audio inserted through
364 // expansion (in Q14) 355 // expansion (in Q14)
365 uint16_t currentExpandRate; 356 uint16_t currentExpandRate;
366 // fraction (of original stream) of synthesized speech inserted through 357 // fraction (of original stream) of synthesized speech inserted through
367 // expansion (in Q14) 358 // expansion (in Q14)
368 uint16_t currentSpeechExpandRate; 359 uint16_t currentSpeechExpandRate;
369 // fraction of synthesized speech inserted through pre-emptive expansion 360 // fraction of synthesized speech inserted through pre-emptive expansion
370 // (in Q14) 361 // (in Q14)
371 uint16_t currentPreemptiveRate; 362 uint16_t currentPreemptiveRate;
372 // fraction of data removed through acceleration (in Q14) 363 // fraction of data removed through acceleration (in Q14)
373 uint16_t currentAccelerateRate; 364 uint16_t currentAccelerateRate;
374 // fraction of data coming from secondary decoding (in Q14) 365 // fraction of data coming from secondary decoding (in Q14)
375 uint16_t currentSecondaryDecodedRate; 366 uint16_t currentSecondaryDecodedRate;
376 // clock-drift in parts-per-million (negative or positive) 367 // clock-drift in parts-per-million (negative or positive)
377 int32_t clockDriftPPM; 368 int32_t clockDriftPPM;
378 // average packet waiting time in the jitter buffer (ms) 369 // average packet waiting time in the jitter buffer (ms)
379 int meanWaitingTimeMs; 370 int meanWaitingTimeMs;
380 // median packet waiting time in the jitter buffer (ms) 371 // median packet waiting time in the jitter buffer (ms)
381 int medianWaitingTimeMs; 372 int medianWaitingTimeMs;
382 // min packet waiting time in the jitter buffer (ms) 373 // min packet waiting time in the jitter buffer (ms)
383 int minWaitingTimeMs; 374 int minWaitingTimeMs;
384 // max packet waiting time in the jitter buffer (ms) 375 // max packet waiting time in the jitter buffer (ms)
385 int maxWaitingTimeMs; 376 int maxWaitingTimeMs;
386 // added samples in off mode due to packet loss 377 // added samples in off mode due to packet loss
387 size_t addedSamples; 378 size_t addedSamples;
388 }; 379 };
389 380
390 // Statistics for calls to AudioCodingModule::PlayoutData10Ms(). 381 // Statistics for calls to AudioCodingModule::PlayoutData10Ms().
391 struct AudioDecodingCallStats { 382 struct AudioDecodingCallStats {
392 AudioDecodingCallStats() 383 AudioDecodingCallStats()
393 : calls_to_silence_generator(0), 384 : calls_to_silence_generator(0),
394 calls_to_neteq(0), 385 calls_to_neteq(0),
395 decoded_normal(0), 386 decoded_normal(0),
396 decoded_plc(0), 387 decoded_plc(0),
397 decoded_cng(0), 388 decoded_cng(0),
398 decoded_plc_cng(0) {} 389 decoded_plc_cng(0) {}
399 390
400 int calls_to_silence_generator; // Number of calls where silence generated, 391 int calls_to_silence_generator; // Number of calls where silence generated,
401 // and NetEq was disengaged from decoding. 392 // and NetEq was disengaged from decoding.
402 int calls_to_neteq; // Number of calls to NetEq. 393 int calls_to_neteq; // Number of calls to NetEq.
403 int decoded_normal; // Number of calls where audio RTP packet decoded. 394 int decoded_normal; // Number of calls where audio RTP packet decoded.
404 int decoded_plc; // Number of calls resulted in PLC. 395 int decoded_plc; // Number of calls resulted in PLC.
405 int decoded_cng; // Number of calls where comfort noise generated due to DTX. 396 int decoded_cng; // Number of calls where comfort noise generated due to DTX.
406 int decoded_plc_cng; // Number of calls resulted where PLC faded to CNG. 397 int decoded_plc_cng; // Number of calls resulted where PLC faded to CNG.
407 }; 398 };
408 399
409 enum NsModes // type of Noise Suppression 400 // Type of Noise Suppression.
410 { 401 enum NsModes {
411 kNsUnchanged = 0, // previously set mode 402 kNsUnchanged = 0, // previously set mode
412 kNsDefault, // platform default 403 kNsDefault, // platform default
413 kNsConference, // conferencing default 404 kNsConference, // conferencing default
414 kNsLowSuppression, // lowest suppression 405 kNsLowSuppression, // lowest suppression
415 kNsModerateSuppression, 406 kNsModerateSuppression,
416 kNsHighSuppression, 407 kNsHighSuppression,
417 kNsVeryHighSuppression, // highest suppression 408 kNsVeryHighSuppression, // highest suppression
418 }; 409 };
419 410
420 enum AgcModes // type of Automatic Gain Control 411 // Type of Automatic Gain Control.
421 { 412 enum AgcModes {
422 kAgcUnchanged = 0, // previously set mode 413 kAgcUnchanged = 0, // previously set mode
423 kAgcDefault, // platform default 414 kAgcDefault, // platform default
424 // adaptive mode for use when analog volume control exists (e.g. for 415 // adaptive mode for use when analog volume control exists (e.g. for
425 // PC softphone) 416 // PC softphone)
426 kAgcAdaptiveAnalog, 417 kAgcAdaptiveAnalog,
427 // scaling takes place in the digital domain (e.g. for conference servers 418 // scaling takes place in the digital domain (e.g. for conference servers
428 // and embedded devices) 419 // and embedded devices)
429 kAgcAdaptiveDigital, 420 kAgcAdaptiveDigital,
430 // can be used on embedded devices where the capture signal level 421 // can be used on embedded devices where the capture signal level
431 // is predictable 422 // is predictable
432 kAgcFixedDigital 423 kAgcFixedDigital
433 }; 424 };
434 425
435 // EC modes 426 // Type of Echo Control.
436 enum EcModes // type of Echo Control 427 enum EcModes {
437 { 428 kEcUnchanged = 0, // previously set mode
438 kEcUnchanged = 0, // previously set mode 429 kEcDefault, // platform default
439 kEcDefault, // platform default 430 kEcConference, // conferencing default (aggressive AEC)
440 kEcConference, // conferencing default (aggressive AEC) 431 kEcAec, // Acoustic Echo Cancellation
441 kEcAec, // Acoustic Echo Cancellation 432 kEcAecm, // AEC mobile
442 kEcAecm, // AEC mobile
443 }; 433 };
444 434
445 // AECM modes 435 // Mode of AECM.
446 enum AecmModes // mode of AECM 436 enum AecmModes {
447 { 437 kAecmQuietEarpieceOrHeadset = 0,
448 kAecmQuietEarpieceOrHeadset = 0, 438 // Quiet earpiece or headset use
449 // Quiet earpiece or headset use 439 kAecmEarpiece, // most earpiece use
450 kAecmEarpiece, // most earpiece use 440 kAecmLoudEarpiece, // Loud earpiece or quiet speakerphone use
451 kAecmLoudEarpiece, // Loud earpiece or quiet speakerphone use 441 kAecmSpeakerphone, // most speakerphone use (default)
452 kAecmSpeakerphone, // most speakerphone use (default) 442 kAecmLoudSpeakerphone // Loud speakerphone
453 kAecmLoudSpeakerphone // Loud speakerphone
454 }; 443 };
455 444
456 // AGC configuration parameters 445 // AGC configuration parameters
457 struct AgcConfig 446 struct AgcConfig {
458 { 447 unsigned short targetLeveldBOv;
459 unsigned short targetLeveldBOv; 448 unsigned short digitalCompressionGaindB;
460 unsigned short digitalCompressionGaindB; 449 bool limiterEnable;
461 bool limiterEnable;
462 }; 450 };
463 451
464 enum StereoChannel 452 enum StereoChannel { kStereoLeft = 0, kStereoRight, kStereoBoth };
465 {
466 kStereoLeft = 0,
467 kStereoRight,
468 kStereoBoth
469 };
470 453
471 // Audio device layers 454 // Audio device layers
472 enum AudioLayers 455 enum AudioLayers {
473 { 456 kAudioPlatformDefault = 0,
474 kAudioPlatformDefault = 0, 457 kAudioWindowsWave = 1,
475 kAudioWindowsWave = 1, 458 kAudioWindowsCore = 2,
476 kAudioWindowsCore = 2, 459 kAudioLinuxAlsa = 3,
477 kAudioLinuxAlsa = 3, 460 kAudioLinuxPulse = 4
478 kAudioLinuxPulse = 4
479 }; 461 };
480 462
481 // ================================================================== 463 // ==================================================================
482 // Video specific types 464 // Video specific types
483 // ================================================================== 465 // ==================================================================
484 466
485 // Raw video types 467 // Raw video types
486 enum RawVideoType 468 enum RawVideoType {
487 { 469 kVideoI420 = 0,
488 kVideoI420 = 0, 470 kVideoYV12 = 1,
489 kVideoYV12 = 1, 471 kVideoYUY2 = 2,
490 kVideoYUY2 = 2, 472 kVideoUYVY = 3,
491 kVideoUYVY = 3, 473 kVideoIYUV = 4,
492 kVideoIYUV = 4, 474 kVideoARGB = 5,
493 kVideoARGB = 5, 475 kVideoRGB24 = 6,
494 kVideoRGB24 = 6, 476 kVideoRGB565 = 7,
495 kVideoRGB565 = 7, 477 kVideoARGB4444 = 8,
496 kVideoARGB4444 = 8, 478 kVideoARGB1555 = 9,
497 kVideoARGB1555 = 9, 479 kVideoMJPEG = 10,
498 kVideoMJPEG = 10, 480 kVideoNV12 = 11,
499 kVideoNV12 = 11, 481 kVideoNV21 = 12,
500 kVideoNV21 = 12, 482 kVideoBGRA = 13,
501 kVideoBGRA = 13, 483 kVideoUnknown = 99
502 kVideoUnknown = 99
503 }; 484 };
504 485
505 // Video codec 486 // Video codec
506 enum { kConfigParameterSize = 128}; 487 enum { kConfigParameterSize = 128 };
507 enum { kPayloadNameSize = 32}; 488 enum { kPayloadNameSize = 32 };
508 enum { kMaxSimulcastStreams = 4}; 489 enum { kMaxSimulcastStreams = 4 };
509 enum { kMaxSpatialLayers = 5 }; 490 enum { kMaxSpatialLayers = 5 };
510 enum { kMaxTemporalStreams = 4}; 491 enum { kMaxTemporalStreams = 4 };
511 492
512 enum VideoCodecComplexity 493 enum VideoCodecComplexity {
513 { 494 kComplexityNormal = 0,
514 kComplexityNormal = 0, 495 kComplexityHigh = 1,
515 kComplexityHigh = 1, 496 kComplexityHigher = 2,
516 kComplexityHigher = 2, 497 kComplexityMax = 3
517 kComplexityMax = 3
518 }; 498 };
519 499
520 enum VideoCodecProfile 500 enum VideoCodecProfile { kProfileBase = 0x00, kProfileMain = 0x01 };
521 {
522 kProfileBase = 0x00,
523 kProfileMain = 0x01
524 };
525 501
526 enum VP8ResilienceMode { 502 enum VP8ResilienceMode {
527 kResilienceOff, // The stream produced by the encoder requires a 503 kResilienceOff, // The stream produced by the encoder requires a
528 // recovery frame (typically a key frame) to be 504 // recovery frame (typically a key frame) to be
529 // decodable after a packet loss. 505 // decodable after a packet loss.
530 kResilientStream, // A stream produced by the encoder is resilient to 506 kResilientStream, // A stream produced by the encoder is resilient to
531 // packet losses, but packets within a frame subsequent 507 // packet losses, but packets within a frame subsequent
532 // to a loss can't be decoded. 508 // to a loss can't be decoded.
533 kResilientFrames // Same as kResilientStream but with added resilience 509 kResilientFrames // Same as kResilientStream but with added resilience
534 // within a frame. 510 // within a frame.
535 }; 511 };
536 512
537 class TemporalLayersFactory; 513 class TemporalLayersFactory;
538 // VP8 specific 514 // VP8 specific
539 struct VideoCodecVP8 { 515 struct VideoCodecVP8 {
540 bool pictureLossIndicationOn; 516 bool pictureLossIndicationOn;
541 bool feedbackModeOn; 517 bool feedbackModeOn;
542 VideoCodecComplexity complexity; 518 VideoCodecComplexity complexity;
543 VP8ResilienceMode resilience; 519 VP8ResilienceMode resilience;
544 unsigned char numberOfTemporalLayers; 520 unsigned char numberOfTemporalLayers;
545 bool denoisingOn; 521 bool denoisingOn;
546 bool errorConcealmentOn; 522 bool errorConcealmentOn;
547 bool automaticResizeOn; 523 bool automaticResizeOn;
548 bool frameDroppingOn; 524 bool frameDroppingOn;
549 int keyFrameInterval; 525 int keyFrameInterval;
550 const TemporalLayersFactory* tl_factory; 526 const TemporalLayersFactory* tl_factory;
551 }; 527 };
552 528
553 // VP9 specific. 529 // VP9 specific.
554 struct VideoCodecVP9 { 530 struct VideoCodecVP9 {
555 VideoCodecComplexity complexity; 531 VideoCodecComplexity complexity;
556 int resilience; 532 int resilience;
557 unsigned char numberOfTemporalLayers; 533 unsigned char numberOfTemporalLayers;
558 bool denoisingOn; 534 bool denoisingOn;
559 bool frameDroppingOn; 535 bool frameDroppingOn;
560 int keyFrameInterval; 536 int keyFrameInterval;
561 bool adaptiveQpMode; 537 bool adaptiveQpMode;
562 bool automaticResizeOn; 538 bool automaticResizeOn;
563 unsigned char numberOfSpatialLayers; 539 unsigned char numberOfSpatialLayers;
564 bool flexibleMode; 540 bool flexibleMode;
565 }; 541 };
566 542
567 // H264 specific. 543 // H264 specific.
568 struct VideoCodecH264 { 544 struct VideoCodecH264 {
569 VideoCodecProfile profile; 545 VideoCodecProfile profile;
570 bool frameDroppingOn; 546 bool frameDroppingOn;
571 int keyFrameInterval; 547 int keyFrameInterval;
572 // These are NULL/0 if not externally negotiated. 548 // These are NULL/0 if not externally negotiated.
573 const uint8_t* spsData; 549 const uint8_t* spsData;
574 size_t spsLen; 550 size_t spsLen;
575 const uint8_t* ppsData; 551 const uint8_t* ppsData;
576 size_t ppsLen; 552 size_t ppsLen;
577 }; 553 };
578 554
579 // Video codec types 555 // Video codec types
580 enum VideoCodecType { 556 enum VideoCodecType {
581 kVideoCodecVP8, 557 kVideoCodecVP8,
582 kVideoCodecVP9, 558 kVideoCodecVP9,
583 kVideoCodecH264, 559 kVideoCodecH264,
584 kVideoCodecI420, 560 kVideoCodecI420,
585 kVideoCodecRED, 561 kVideoCodecRED,
586 kVideoCodecULPFEC, 562 kVideoCodecULPFEC,
587 kVideoCodecGeneric, 563 kVideoCodecGeneric,
588 kVideoCodecUnknown 564 kVideoCodecUnknown
589 }; 565 };
590 566
591 union VideoCodecUnion { 567 union VideoCodecUnion {
592 VideoCodecVP8 VP8; 568 VideoCodecVP8 VP8;
593 VideoCodecVP9 VP9; 569 VideoCodecVP9 VP9;
594 VideoCodecH264 H264; 570 VideoCodecH264 H264;
595 }; 571 };
596 572
597
598 // Simulcast is when the same stream is encoded multiple times with different 573 // Simulcast is when the same stream is encoded multiple times with different
599 // settings such as resolution. 574 // settings such as resolution.
600 struct SimulcastStream { 575 struct SimulcastStream {
601 unsigned short width; 576 unsigned short width;
602 unsigned short height; 577 unsigned short height;
603 unsigned char numberOfTemporalLayers; 578 unsigned char numberOfTemporalLayers;
604 unsigned int maxBitrate; // kilobits/sec. 579 unsigned int maxBitrate; // kilobits/sec.
605 unsigned int targetBitrate; // kilobits/sec. 580 unsigned int targetBitrate; // kilobits/sec.
606 unsigned int minBitrate; // kilobits/sec. 581 unsigned int minBitrate; // kilobits/sec.
607 unsigned int qpMax; // minimum quality 582 unsigned int qpMax; // minimum quality
608 }; 583 };
609 584
610 struct SpatialLayer { 585 struct SpatialLayer {
611 int scaling_factor_num; 586 int scaling_factor_num;
612 int scaling_factor_den; 587 int scaling_factor_den;
613 int target_bitrate_bps; 588 int target_bitrate_bps;
614 // TODO(ivica): Add max_quantizer and min_quantizer? 589 // TODO(ivica): Add max_quantizer and min_quantizer?
615 }; 590 };
616 591
617 enum VideoCodecMode { 592 enum VideoCodecMode { kRealtimeVideo, kScreensharing };
618 kRealtimeVideo,
619 kScreensharing
620 };
621 593
622 // Common video codec properties 594 // Common video codec properties
623 struct VideoCodec { 595 struct VideoCodec {
624 VideoCodecType codecType; 596 VideoCodecType codecType;
625 char plName[kPayloadNameSize]; 597 char plName[kPayloadNameSize];
626 unsigned char plType; 598 unsigned char plType;
627 599
628 unsigned short width; 600 unsigned short width;
629 unsigned short height; 601 unsigned short height;
630 602
631 unsigned int startBitrate; // kilobits/sec. 603 unsigned int startBitrate; // kilobits/sec.
632 unsigned int maxBitrate; // kilobits/sec. 604 unsigned int maxBitrate; // kilobits/sec.
633 unsigned int minBitrate; // kilobits/sec. 605 unsigned int minBitrate; // kilobits/sec.
634 unsigned int targetBitrate; // kilobits/sec. 606 unsigned int targetBitrate; // kilobits/sec.
635 607
636 unsigned char maxFramerate; 608 unsigned char maxFramerate;
637 609
638 VideoCodecUnion codecSpecific; 610 VideoCodecUnion codecSpecific;
639 611
640 unsigned int qpMax; 612 unsigned int qpMax;
641 unsigned char numberOfSimulcastStreams; 613 unsigned char numberOfSimulcastStreams;
642 SimulcastStream simulcastStream[kMaxSimulcastStreams]; 614 SimulcastStream simulcastStream[kMaxSimulcastStreams];
643 SpatialLayer spatialLayers[kMaxSpatialLayers]; 615 SpatialLayer spatialLayers[kMaxSpatialLayers];
644 616
645 VideoCodecMode mode; 617 VideoCodecMode mode;
646 bool expect_encode_from_texture; 618 bool expect_encode_from_texture;
647 619
648 bool operator==(const VideoCodec& other) const = delete; 620 bool operator==(const VideoCodec& other) const = delete;
649 bool operator!=(const VideoCodec& other) const = delete; 621 bool operator!=(const VideoCodec& other) const = delete;
650 }; 622 };
651 623
652 // Bandwidth over-use detector options. These are used to drive 624 // Bandwidth over-use detector options. These are used to drive
653 // experimentation with bandwidth estimation parameters. 625 // experimentation with bandwidth estimation parameters.
654 // See modules/remote_bitrate_estimator/overuse_detector.h 626 // See modules/remote_bitrate_estimator/overuse_detector.h
655 struct OverUseDetectorOptions { 627 struct OverUseDetectorOptions {
656 OverUseDetectorOptions() 628 OverUseDetectorOptions()
657 : initial_slope(8.0/512.0), 629 : initial_slope(8.0 / 512.0),
658 initial_offset(0), 630 initial_offset(0),
659 initial_e(), 631 initial_e(),
660 initial_process_noise(), 632 initial_process_noise(),
661 initial_avg_noise(0.0), 633 initial_avg_noise(0.0),
662 initial_var_noise(50) { 634 initial_var_noise(50) {
663 initial_e[0][0] = 100; 635 initial_e[0][0] = 100;
664 initial_e[1][1] = 1e-1; 636 initial_e[1][1] = 1e-1;
665 initial_e[0][1] = initial_e[1][0] = 0; 637 initial_e[0][1] = initial_e[1][0] = 0;
666 initial_process_noise[0] = 1e-13; 638 initial_process_noise[0] = 1e-13;
667 initial_process_noise[1] = 1e-3; 639 initial_process_noise[1] = 1e-3;
668 } 640 }
669 double initial_slope; 641 double initial_slope;
670 double initial_offset; 642 double initial_offset;
671 double initial_e[2][2]; 643 double initial_e[2][2];
672 double initial_process_noise[2]; 644 double initial_process_noise[2];
673 double initial_avg_noise; 645 double initial_avg_noise;
674 double initial_var_noise; 646 double initial_var_noise;
675 }; 647 };
676 648
677 // This structure will have the information about when packet is actually 649 // This structure will have the information about when packet is actually
678 // received by socket. 650 // received by socket.
679 struct PacketTime { 651 struct PacketTime {
680 PacketTime() : timestamp(-1), not_before(-1) {} 652 PacketTime() : timestamp(-1), not_before(-1) {}
681 PacketTime(int64_t timestamp, int64_t not_before) 653 PacketTime(int64_t timestamp, int64_t not_before)
682 : timestamp(timestamp), not_before(not_before) { 654 : timestamp(timestamp), not_before(not_before) {}
683 }
684 655
685 int64_t timestamp; // Receive time after socket delivers the data. 656 int64_t timestamp; // Receive time after socket delivers the data.
686 int64_t not_before; // Earliest possible time the data could have arrived, 657 int64_t not_before; // Earliest possible time the data could have arrived,
687 // indicating the potential error in the |timestamp| 658 // indicating the potential error in the |timestamp|
688 // value,in case the system is busy. 659 // value,in case the system is busy.
689 // For example, the time of the last select() call. 660 // For example, the time of the last select() call.
690 // If unknown, this value will be set to zero. 661 // If unknown, this value will be set to zero.
691 }; 662 };
692 663
693 // Minimum and maximum playout delay values from capture to render. 664 // Minimum and maximum playout delay values from capture to render.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 uint8_t numCSRCs; 715 uint8_t numCSRCs;
745 uint32_t arrOfCSRCs[kRtpCsrcSize]; 716 uint32_t arrOfCSRCs[kRtpCsrcSize];
746 size_t paddingLength; 717 size_t paddingLength;
747 size_t headerLength; 718 size_t headerLength;
748 int payload_type_frequency; 719 int payload_type_frequency;
749 RTPHeaderExtension extension; 720 RTPHeaderExtension extension;
750 }; 721 };
751 722
752 struct RtpPacketCounter { 723 struct RtpPacketCounter {
753 RtpPacketCounter() 724 RtpPacketCounter()
754 : header_bytes(0), 725 : header_bytes(0), payload_bytes(0), padding_bytes(0), packets(0) {}
755 payload_bytes(0),
756 padding_bytes(0),
757 packets(0) {}
758 726
759 void Add(const RtpPacketCounter& other) { 727 void Add(const RtpPacketCounter& other) {
760 header_bytes += other.header_bytes; 728 header_bytes += other.header_bytes;
761 payload_bytes += other.payload_bytes; 729 payload_bytes += other.payload_bytes;
762 padding_bytes += other.padding_bytes; 730 padding_bytes += other.padding_bytes;
763 packets += other.packets; 731 packets += other.packets;
764 } 732 }
765 733
766 void Subtract(const RtpPacketCounter& other) { 734 void Subtract(const RtpPacketCounter& other) {
767 assert(header_bytes >= other.header_bytes); 735 assert(header_bytes >= other.header_bytes);
(...skipping 26 matching lines...) Expand all
794 762
795 // Data usage statistics for a (rtp) stream. 763 // Data usage statistics for a (rtp) stream.
796 struct StreamDataCounters { 764 struct StreamDataCounters {
797 StreamDataCounters(); 765 StreamDataCounters();
798 766
799 void Add(const StreamDataCounters& other) { 767 void Add(const StreamDataCounters& other) {
800 transmitted.Add(other.transmitted); 768 transmitted.Add(other.transmitted);
801 retransmitted.Add(other.retransmitted); 769 retransmitted.Add(other.retransmitted);
802 fec.Add(other.fec); 770 fec.Add(other.fec);
803 if (other.first_packet_time_ms != -1 && 771 if (other.first_packet_time_ms != -1 &&
804 (other.first_packet_time_ms < first_packet_time_ms || 772 (other.first_packet_time_ms < first_packet_time_ms ||
805 first_packet_time_ms == -1)) { 773 first_packet_time_ms == -1)) {
806 // Use oldest time. 774 // Use oldest time.
807 first_packet_time_ms = other.first_packet_time_ms; 775 first_packet_time_ms = other.first_packet_time_ms;
808 } 776 }
809 } 777 }
810 778
811 void Subtract(const StreamDataCounters& other) { 779 void Subtract(const StreamDataCounters& other) {
812 transmitted.Subtract(other.transmitted); 780 transmitted.Subtract(other.transmitted);
813 retransmitted.Subtract(other.retransmitted); 781 retransmitted.Subtract(other.retransmitted);
814 fec.Subtract(other.fec); 782 fec.Subtract(other.fec);
815 if (other.first_packet_time_ms != -1 && 783 if (other.first_packet_time_ms != -1 &&
816 (other.first_packet_time_ms > first_packet_time_ms || 784 (other.first_packet_time_ms > first_packet_time_ms ||
817 first_packet_time_ms == -1)) { 785 first_packet_time_ms == -1)) {
818 // Use youngest time. 786 // Use youngest time.
819 first_packet_time_ms = other.first_packet_time_ms; 787 first_packet_time_ms = other.first_packet_time_ms;
820 } 788 }
821 } 789 }
822 790
823 int64_t TimeSinceFirstPacketInMs(int64_t now_ms) const { 791 int64_t TimeSinceFirstPacketInMs(int64_t now_ms) const {
824 return (first_packet_time_ms == -1) ? -1 : (now_ms - first_packet_time_ms); 792 return (first_packet_time_ms == -1) ? -1 : (now_ms - first_packet_time_ms);
825 } 793 }
826 794
827 // Returns the number of bytes corresponding to the actual media payload (i.e. 795 // Returns the number of bytes corresponding to the actual media payload (i.e.
828 // RTP headers, padding, retransmissions and fec packets are excluded). 796 // RTP headers, padding, retransmissions and fec packets are excluded).
829 // Note this function does not have meaning for an RTX stream. 797 // Note this function does not have meaning for an RTX stream.
830 size_t MediaPayloadBytes() const { 798 size_t MediaPayloadBytes() const {
831 return transmitted.payload_bytes - retransmitted.payload_bytes - 799 return transmitted.payload_bytes - retransmitted.payload_bytes -
832 fec.payload_bytes; 800 fec.payload_bytes;
833 } 801 }
834 802
835 int64_t first_packet_time_ms; // Time when first packet is sent/received. 803 int64_t first_packet_time_ms; // Time when first packet is sent/received.
836 RtpPacketCounter transmitted; // Number of transmitted packets/bytes. 804 RtpPacketCounter transmitted; // Number of transmitted packets/bytes.
837 RtpPacketCounter retransmitted; // Number of retransmitted packets/bytes. 805 RtpPacketCounter retransmitted; // Number of retransmitted packets/bytes.
838 RtpPacketCounter fec; // Number of redundancy packets/bytes. 806 RtpPacketCounter fec; // Number of redundancy packets/bytes.
839 }; 807 };
840 808
841 // Callback, called whenever byte/packet counts have been updated. 809 // Callback, called whenever byte/packet counts have been updated.
842 class StreamDataCountersCallback { 810 class StreamDataCountersCallback {
843 public: 811 public:
844 virtual ~StreamDataCountersCallback() {} 812 virtual ~StreamDataCountersCallback() {}
845 813
846 virtual void DataCountersUpdated(const StreamDataCounters& counters, 814 virtual void DataCountersUpdated(const StreamDataCounters& counters,
847 uint32_t ssrc) = 0; 815 uint32_t ssrc) = 0;
848 }; 816 };
849 817
850 // RTCP mode to use. Compound mode is described by RFC 4585 and reduced-size 818 // RTCP mode to use. Compound mode is described by RFC 4585 and reduced-size
851 // RTCP mode is described by RFC 5506. 819 // RTCP mode is described by RFC 5506.
852 enum class RtcpMode { kOff, kCompound, kReducedSize }; 820 enum class RtcpMode { kOff, kCompound, kReducedSize };
853 821
854 enum NetworkState { 822 enum NetworkState {
855 kNetworkUp, 823 kNetworkUp,
856 kNetworkDown, 824 kNetworkDown,
857 }; 825 };
858 826
859 } // namespace webrtc 827 } // namespace webrtc
860 828
861 #endif // WEBRTC_COMMON_TYPES_H_ 829 #endif // WEBRTC_COMMON_TYPES_H_
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698