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

Side by Side Diff: webrtc/call/video_config.h

Issue 3004723002: Move RtpExtension to api/ directory and config.h/.cc to call/. (Closed)
Patch Set: Rebase Created 3 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 // TODO(pbos): Move Config from common.h to here. 11 #ifndef WEBRTC_CALL_VIDEO_CONFIG_H_
12 12 #define WEBRTC_CALL_VIDEO_CONFIG_H_
13 #ifndef WEBRTC_CONFIG_H_
14 #define WEBRTC_CONFIG_H_
15 13
16 #include <string> 14 #include <string>
17 #include <vector> 15 #include <vector>
18 16
19 #include "webrtc/common_types.h" 17 #include "webrtc/common_types.h"
20 #include "webrtc/rtc_base/basictypes.h" 18 #include "webrtc/rtc_base/basictypes.h"
21 #include "webrtc/rtc_base/optional.h" 19 #include "webrtc/rtc_base/optional.h"
22 #include "webrtc/rtc_base/refcount.h" 20 #include "webrtc/rtc_base/refcount.h"
23 #include "webrtc/rtc_base/scoped_ref_ptr.h" 21 #include "webrtc/rtc_base/scoped_ref_ptr.h"
24 #include "webrtc/typedefs.h" 22 #include "webrtc/typedefs.h"
25 23
26 namespace webrtc { 24 namespace webrtc {
27 25
28 // Settings for NACK, see RFC 4585 for details.
29 struct NackConfig {
30 NackConfig() : rtp_history_ms(0) {}
31 std::string ToString() const;
32 // Send side: the time RTP packets are stored for retransmissions.
33 // Receive side: the time the receiver is prepared to wait for
34 // retransmissions.
35 // Set to '0' to disable.
36 int rtp_history_ms;
37 };
38
39 // Settings for ULPFEC forward error correction.
40 // Set the payload types to '-1' to disable.
41 struct UlpfecConfig {
42 UlpfecConfig()
43 : ulpfec_payload_type(-1),
44 red_payload_type(-1),
45 red_rtx_payload_type(-1) {}
46 std::string ToString() const;
47 bool operator==(const UlpfecConfig& other) const;
48
49 // Payload type used for ULPFEC packets.
50 int ulpfec_payload_type;
51
52 // Payload type used for RED packets.
53 int red_payload_type;
54
55 // RTX payload type for RED payload.
56 int red_rtx_payload_type;
57 };
58
59 // RTP header extension, see RFC 5285.
60 struct RtpExtension {
61 RtpExtension() {}
62 RtpExtension(const std::string& uri, int id) : uri(uri), id(id) {}
63 RtpExtension(const std::string& uri, int id, bool encrypt) : uri(uri),
64 id(id), encrypt(encrypt) {}
65 std::string ToString() const;
66 bool operator==(const RtpExtension& rhs) const {
67 return uri == rhs.uri && id == rhs.id && encrypt == rhs.encrypt;
68 }
69 static bool IsSupportedForAudio(const std::string& uri);
70 static bool IsSupportedForVideo(const std::string& uri);
71 // Return "true" if the given RTP header extension URI may be encrypted.
72 static bool IsEncryptionSupported(const std::string& uri);
73
74 // Returns the named header extension if found among all extensions,
75 // nullptr otherwise.
76 static const RtpExtension* FindHeaderExtensionByUri(
77 const std::vector<RtpExtension>& extensions,
78 const std::string& uri);
79
80 // Return a list of RTP header extensions with the non-encrypted extensions
81 // removed if both the encrypted and non-encrypted extension is present for
82 // the same URI.
83 static std::vector<RtpExtension> FilterDuplicateNonEncrypted(
84 const std::vector<RtpExtension>& extensions);
85
86 // Header extension for audio levels, as defined in:
87 // http://tools.ietf.org/html/draft-ietf-avtext-client-to-mixer-audio-level-03
88 static const char kAudioLevelUri[];
89 static const int kAudioLevelDefaultId;
90
91 // Header extension for RTP timestamp offset, see RFC 5450 for details:
92 // http://tools.ietf.org/html/rfc5450
93 static const char kTimestampOffsetUri[];
94 static const int kTimestampOffsetDefaultId;
95
96 // Header extension for absolute send time, see url for details:
97 // http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
98 static const char kAbsSendTimeUri[];
99 static const int kAbsSendTimeDefaultId;
100
101 // Header extension for coordination of video orientation, see url for
102 // details:
103 // http://www.etsi.org/deliver/etsi_ts/126100_126199/126114/12.07.00_60/ts_126 114v120700p.pdf
104 static const char kVideoRotationUri[];
105 static const int kVideoRotationDefaultId;
106
107 // Header extension for video content type. E.g. default or screenshare.
108 static const char kVideoContentTypeUri[];
109 static const int kVideoContentTypeDefaultId;
110
111 // Header extension for video timing.
112 static const char kVideoTimingUri[];
113 static const int kVideoTimingDefaultId;
114
115 // Header extension for transport sequence number, see url for details:
116 // http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions
117 static const char kTransportSequenceNumberUri[];
118 static const int kTransportSequenceNumberDefaultId;
119
120 static const char kPlayoutDelayUri[];
121 static const int kPlayoutDelayDefaultId;
122
123 // Encryption of Header Extensions, see RFC 6904 for details:
124 // https://tools.ietf.org/html/rfc6904
125 static const char kEncryptHeaderExtensionsUri[];
126
127 // Inclusive min and max IDs for one-byte header extensions, per RFC5285.
128 static const int kMinId;
129 static const int kMaxId;
130
131 std::string uri;
132 int id = 0;
133 bool encrypt = false;
134 };
135
136 struct VideoStream { 26 struct VideoStream {
137 VideoStream(); 27 VideoStream();
138 ~VideoStream(); 28 ~VideoStream();
139 std::string ToString() const; 29 std::string ToString() const;
140 30
141 size_t width; 31 size_t width;
142 size_t height; 32 size_t height;
143 int max_framerate; 33 int max_framerate;
144 34
145 int min_bitrate_bps; 35 int min_bitrate_bps;
(...skipping 24 matching lines...) Expand all
170 class EncoderSpecificSettings : public rtc::RefCountInterface { 60 class EncoderSpecificSettings : public rtc::RefCountInterface {
171 public: 61 public:
172 // TODO(pbos): Remove FillEncoderSpecificSettings as soon as VideoCodec is 62 // TODO(pbos): Remove FillEncoderSpecificSettings as soon as VideoCodec is
173 // not in use and encoder implementations ask for codec-specific structs 63 // not in use and encoder implementations ask for codec-specific structs
174 // directly. 64 // directly.
175 void FillEncoderSpecificSettings(VideoCodec* codec_struct) const; 65 void FillEncoderSpecificSettings(VideoCodec* codec_struct) const;
176 66
177 virtual void FillVideoCodecVp8(VideoCodecVP8* vp8_settings) const; 67 virtual void FillVideoCodecVp8(VideoCodecVP8* vp8_settings) const;
178 virtual void FillVideoCodecVp9(VideoCodecVP9* vp9_settings) const; 68 virtual void FillVideoCodecVp9(VideoCodecVP9* vp9_settings) const;
179 virtual void FillVideoCodecH264(VideoCodecH264* h264_settings) const; 69 virtual void FillVideoCodecH264(VideoCodecH264* h264_settings) const;
70
180 private: 71 private:
181 ~EncoderSpecificSettings() override {} 72 ~EncoderSpecificSettings() override {}
182 friend class VideoEncoderConfig; 73 friend class VideoEncoderConfig;
183 }; 74 };
184 75
185 class H264EncoderSpecificSettings : public EncoderSpecificSettings { 76 class H264EncoderSpecificSettings : public EncoderSpecificSettings {
186 public: 77 public:
187 explicit H264EncoderSpecificSettings(const VideoCodecH264& specifics); 78 explicit H264EncoderSpecificSettings(const VideoCodecH264& specifics);
188 void FillVideoCodecH264(VideoCodecH264* h264_settings) const override; 79 void FillVideoCodecH264(VideoCodecH264* h264_settings) const override;
189 80
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 size_t number_of_streams; 147 size_t number_of_streams;
257 148
258 private: 149 private:
259 // Access to the copy constructor is private to force use of the Copy() 150 // Access to the copy constructor is private to force use of the Copy()
260 // method for those exceptional cases where we do use it. 151 // method for those exceptional cases where we do use it.
261 VideoEncoderConfig(const VideoEncoderConfig&); 152 VideoEncoderConfig(const VideoEncoderConfig&);
262 }; 153 };
263 154
264 } // namespace webrtc 155 } // namespace webrtc
265 156
266 #endif // WEBRTC_CONFIG_H_ 157 #endif // WEBRTC_CALL_VIDEO_CONFIG_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698