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

Side by Side Diff: webrtc/media/base/codec.h

Issue 2481193002: Provide move semantic for cricket::Codec and subclasses (Closed)
Patch Set: Remove some faulty test. Created 4 years, 1 month 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 | webrtc/media/base/codec.cc » ('j') | 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) 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2004 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
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 std::string name; 67 std::string name;
68 int clockrate; 68 int clockrate;
69 CodecParameterMap params; 69 CodecParameterMap params;
70 FeedbackParams feedback_params; 70 FeedbackParams feedback_params;
71 71
72 // Creates a codec with the given parameters. 72 // Creates a codec with the given parameters.
73 Codec(int id, const std::string& name, int clockrate); 73 Codec(int id, const std::string& name, int clockrate);
74 // Creates an empty codec. 74 // Creates an empty codec.
75 Codec(); 75 Codec();
76 Codec(const Codec& c); 76 Codec(const Codec& c);
77 Codec(Codec&& c);
77 virtual ~Codec(); 78 virtual ~Codec();
78 79
79 // Indicates if this codec is compatible with the specified codec. 80 // Indicates if this codec is compatible with the specified codec.
80 bool Matches(const Codec& codec) const; 81 bool Matches(const Codec& codec) const;
81 82
82 // Find the parameter for |name| and write the value to |out|. 83 // Find the parameter for |name| and write the value to |out|.
83 bool GetParam(const std::string& name, std::string* out) const; 84 bool GetParam(const std::string& name, std::string* out) const;
84 bool GetParam(const std::string& name, int* out) const; 85 bool GetParam(const std::string& name, int* out) const;
85 86
86 void SetParam(const std::string& name, const std::string& value); 87 void SetParam(const std::string& name, const std::string& value);
87 void SetParam(const std::string& name, int value); 88 void SetParam(const std::string& name, int value);
88 89
89 // It is safe to input a non-existent parameter. 90 // It is safe to input a non-existent parameter.
90 // Returns true if the parameter existed, false if it did not exist. 91 // Returns true if the parameter existed, false if it did not exist.
91 bool RemoveParam(const std::string& name); 92 bool RemoveParam(const std::string& name);
92 93
93 bool HasFeedbackParam(const FeedbackParam& param) const; 94 bool HasFeedbackParam(const FeedbackParam& param) const;
94 void AddFeedbackParam(const FeedbackParam& param); 95 void AddFeedbackParam(const FeedbackParam& param);
95 96
96 // Filter |this| feedbacks params such that only those shared by both |this| 97 // Filter |this| feedbacks params such that only those shared by both |this|
97 // and |other| are kept. 98 // and |other| are kept.
98 void IntersectFeedbackParams(const Codec& other); 99 void IntersectFeedbackParams(const Codec& other);
99 100
100 virtual webrtc::RtpCodecParameters ToCodecParameters() const; 101 virtual webrtc::RtpCodecParameters ToCodecParameters() const;
101 102
102 Codec& operator=(const Codec& c); 103 Codec& operator=(const Codec& c);
104 Codec& operator=(Codec&& c);
103 105
104 bool operator==(const Codec& c) const; 106 bool operator==(const Codec& c) const;
105 107
106 bool operator!=(const Codec& c) const { 108 bool operator!=(const Codec& c) const {
107 return !(*this == c); 109 return !(*this == c);
108 } 110 }
109 }; 111 };
110 112
111 struct AudioCodec : public Codec { 113 struct AudioCodec : public Codec {
112 int bitrate; 114 int bitrate;
113 size_t channels; 115 size_t channels;
114 116
115 // Creates a codec with the given parameters. 117 // Creates a codec with the given parameters.
116 AudioCodec(int id, 118 AudioCodec(int id,
117 const std::string& name, 119 const std::string& name,
118 int clockrate, 120 int clockrate,
119 int bitrate, 121 int bitrate,
120 size_t channels); 122 size_t channels);
121 // Creates an empty codec. 123 // Creates an empty codec.
122 AudioCodec(); 124 AudioCodec();
123 AudioCodec(const AudioCodec& c); 125 AudioCodec(const AudioCodec& c);
126 AudioCodec(AudioCodec&& c);
124 virtual ~AudioCodec() = default; 127 virtual ~AudioCodec() = default;
125 128
126 // Indicates if this codec is compatible with the specified codec. 129 // Indicates if this codec is compatible with the specified codec.
127 bool Matches(const AudioCodec& codec) const; 130 bool Matches(const AudioCodec& codec) const;
128 131
129 std::string ToString() const; 132 std::string ToString() const;
130 133
131 webrtc::RtpCodecParameters ToCodecParameters() const override; 134 webrtc::RtpCodecParameters ToCodecParameters() const override;
132 135
133 AudioCodec& operator=(const AudioCodec& c); 136 AudioCodec& operator=(const AudioCodec& c);
137 AudioCodec& operator=(AudioCodec&& c);
134 138
135 bool operator==(const AudioCodec& c) const; 139 bool operator==(const AudioCodec& c) const;
136 140
137 bool operator!=(const AudioCodec& c) const { 141 bool operator!=(const AudioCodec& c) const {
138 return !(*this == c); 142 return !(*this == c);
139 } 143 }
140 }; 144 };
141 145
142 struct VideoCodec : public Codec { 146 struct VideoCodec : public Codec {
143 // Creates a codec with the given parameters. 147 // Creates a codec with the given parameters.
144 VideoCodec(int id, const std::string& name); 148 VideoCodec(int id, const std::string& name);
145 // Creates a codec with the given name and empty id. 149 // Creates a codec with the given name and empty id.
146 explicit VideoCodec(const std::string& name); 150 explicit VideoCodec(const std::string& name);
147 // Creates an empty codec. 151 // Creates an empty codec.
148 VideoCodec(); 152 VideoCodec();
149 VideoCodec(const VideoCodec& c); 153 VideoCodec(const VideoCodec& c);
154 VideoCodec(VideoCodec&& c);
150 virtual ~VideoCodec() = default; 155 virtual ~VideoCodec() = default;
151 156
152 std::string ToString() const; 157 std::string ToString() const;
153 158
154 VideoCodec& operator=(const VideoCodec& c); 159 VideoCodec& operator=(const VideoCodec& c);
160 VideoCodec& operator=(VideoCodec&& c);
155 161
156 bool operator==(const VideoCodec& c) const; 162 bool operator==(const VideoCodec& c) const;
157 163
158 bool operator!=(const VideoCodec& c) const { 164 bool operator!=(const VideoCodec& c) const {
159 return !(*this == c); 165 return !(*this == c);
160 } 166 }
161 167
162 static VideoCodec CreateRtxCodec(int rtx_payload_type, 168 static VideoCodec CreateRtxCodec(int rtx_payload_type,
163 int associated_payload_type); 169 int associated_payload_type);
164 170
165 enum CodecType { 171 enum CodecType {
166 CODEC_VIDEO, 172 CODEC_VIDEO,
167 CODEC_RED, 173 CODEC_RED,
168 CODEC_ULPFEC, 174 CODEC_ULPFEC,
169 CODEC_RTX, 175 CODEC_RTX,
170 }; 176 };
171 177
172 CodecType GetCodecType() const; 178 CodecType GetCodecType() const;
173 // Validates a VideoCodec's payload type, dimensions and bitrates etc. If they 179 // Validates a VideoCodec's payload type, dimensions and bitrates etc. If they
174 // don't make sense (such as max < min bitrate), and error is logged and 180 // don't make sense (such as max < min bitrate), and error is logged and
175 // ValidateCodecFormat returns false. 181 // ValidateCodecFormat returns false.
176 bool ValidateCodecFormat() const; 182 bool ValidateCodecFormat() const;
177 }; 183 };
178 184
179 struct DataCodec : public Codec { 185 struct DataCodec : public Codec {
180 DataCodec(int id, const std::string& name); 186 DataCodec(int id, const std::string& name);
181 DataCodec(); 187 DataCodec();
182 DataCodec(const DataCodec& c); 188 DataCodec(const DataCodec& c);
189 DataCodec(DataCodec&& c);
183 virtual ~DataCodec() = default; 190 virtual ~DataCodec() = default;
184 191
185 DataCodec& operator=(const DataCodec& c); 192 DataCodec& operator=(const DataCodec& c);
193 DataCodec& operator=(DataCodec&& c);
186 194
187 std::string ToString() const; 195 std::string ToString() const;
188 }; 196 };
189 197
190 // Get the codec setting associated with |payload_type|. If there 198 // Get the codec setting associated with |payload_type|. If there
191 // is no codec associated with that payload type it returns false. 199 // is no codec associated with that payload type it returns false.
192 template <class Codec> 200 template <class Codec>
193 bool FindCodecById(const std::vector<Codec>& codecs, 201 bool FindCodecById(const std::vector<Codec>& codecs,
194 int payload_type, 202 int payload_type,
195 Codec* codec_out) { 203 Codec* codec_out) {
(...skipping 11 matching lines...) Expand all
207 webrtc::VideoCodecType CodecTypeFromName(const std::string& name); 215 webrtc::VideoCodecType CodecTypeFromName(const std::string& name);
208 bool HasNack(const Codec& codec); 216 bool HasNack(const Codec& codec);
209 bool HasRemb(const Codec& codec); 217 bool HasRemb(const Codec& codec);
210 bool HasTransportCc(const Codec& codec); 218 bool HasTransportCc(const Codec& codec);
211 bool IsCodecSupported(const std::vector<VideoCodec>& supported_codecs, 219 bool IsCodecSupported(const std::vector<VideoCodec>& supported_codecs,
212 const VideoCodec& codec); 220 const VideoCodec& codec);
213 221
214 } // namespace cricket 222 } // namespace cricket
215 223
216 #endif // WEBRTC_MEDIA_BASE_CODEC_H_ 224 #endif // WEBRTC_MEDIA_BASE_CODEC_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/media/base/codec.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698