blob: d28243db3e6b40d4b8edaa531e4eee3f79885b65 [file] [log] [blame]
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +00001/*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
pbos@webrtc.org1ecee9a2013-05-29 11:34:32 +000011#ifndef WEBRTC_VIDEO_ENGINE_NEW_INCLUDE_CONFIG_H_
12#define WEBRTC_VIDEO_ENGINE_NEW_INCLUDE_CONFIG_H_
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000013
14#include <string>
15
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000016namespace webrtc {
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000017namespace newapi {
18
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000019struct RtpStatistics {
pbos@webrtc.orgeceb5322013-05-28 08:04:45 +000020 RtpStatistics()
21 : ssrc(0),
22 fraction_loss(0),
23 cumulative_loss(0),
24 extended_max_sequence_number(0) {}
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000025 uint32_t ssrc;
26 int fraction_loss;
27 int cumulative_loss;
28 int extended_max_sequence_number;
29 std::string c_name;
30};
31
pbos@webrtc.orgeceb5322013-05-28 08:04:45 +000032// RTCP mode to use. Compound mode is described by RFC 4585 and reduced-size
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000033// RTCP mode is described by RFC 5506.
34enum RtcpMode {
35 kRtcpCompound,
36 kRtcpReducedSize
37};
38
39// Settings for NACK, see RFC 4585 for details.
40struct NackConfig {
pbos@webrtc.orgeceb5322013-05-28 08:04:45 +000041 NackConfig() : rtp_history_ms(0) {}
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000042 // Send side: the time RTP packets are stored for retransmissions.
43 // Receive side: the time the receiver is prepared to wait for
44 // retransmissions.
pbos@webrtc.orgeceb5322013-05-28 08:04:45 +000045 // Set to '0' to disable.
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000046 int rtp_history_ms;
47};
48
49// Settings for forward error correction, see RFC 5109 for details. Set the
50// payload types to '-1' to disable.
51struct FecConfig {
pbos@webrtc.orgeceb5322013-05-28 08:04:45 +000052 FecConfig() : ulpfec_payload_type(-1), red_payload_type(-1) {}
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000053 // Payload type used for ULPFEC packets.
54 int ulpfec_payload_type;
55
56 // Payload type used for RED packets.
57 int red_payload_type;
58};
59
60// Settings for RTP retransmission payload format, see RFC 4588 for details.
61struct RtxConfig {
pbos@webrtc.orgeceb5322013-05-28 08:04:45 +000062 RtxConfig() : ssrc(0), rtx_payload_type(0), video_payload_type(0) {}
63 // SSRC to use for the RTX stream.
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000064 uint32_t ssrc;
65
66 // Payload type to use for the RTX stream.
67 int rtx_payload_type;
68
69 // Original video payload this RTX stream is used for.
70 int video_payload_type;
71};
72
73// RTP header extension to use for the video stream, see RFC 5285.
74struct RtpExtension {
pbos@webrtc.orgeceb5322013-05-28 08:04:45 +000075 RtpExtension() : id(0) {}
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000076 // TODO(mflodman) Add API to query supported extensions.
77 std::string name;
78 int id;
79};
mflodman@webrtc.org65f995a2013-04-18 12:02:52 +000080} // namespace newapi
81} // namespace webrtc
82
pbos@webrtc.org1ecee9a2013-05-29 11:34:32 +000083#endif // WEBRTC_VIDEO_ENGINE_NEW_INCLUDE_CONFIG_H_