OLD | NEW |
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 |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 | 172 |
173 private: | 173 private: |
174 VideoCodecVP9 specifics_; | 174 VideoCodecVP9 specifics_; |
175 }; | 175 }; |
176 | 176 |
177 enum class ContentType { | 177 enum class ContentType { |
178 kRealtimeVideo, | 178 kRealtimeVideo, |
179 kScreen, | 179 kScreen, |
180 }; | 180 }; |
181 | 181 |
| 182 class VideoStreamFactoryInterface : public rtc::RefCountInterface { |
| 183 public: |
| 184 // An implementation should return a std::vector<VideoStream> with the |
| 185 // wanted VideoStream settings for the given video resolution. |
| 186 // The size of the vector may not be larger than |
| 187 // |encoder_config.number_of_streams|. |
| 188 virtual std::vector<VideoStream> CreateEncoderStreams( |
| 189 int width, |
| 190 int height, |
| 191 const VideoEncoderConfig& encoder_config) = 0; |
| 192 |
| 193 protected: |
| 194 virtual ~VideoStreamFactoryInterface() {} |
| 195 }; |
| 196 |
182 VideoEncoderConfig& operator=(VideoEncoderConfig&&) = default; | 197 VideoEncoderConfig& operator=(VideoEncoderConfig&&) = default; |
183 VideoEncoderConfig& operator=(const VideoEncoderConfig&) = delete; | 198 VideoEncoderConfig& operator=(const VideoEncoderConfig&) = delete; |
184 | 199 |
185 // Mostly used by tests. Avoid creating copies if you can. | 200 // Mostly used by tests. Avoid creating copies if you can. |
186 VideoEncoderConfig Copy() const { return VideoEncoderConfig(*this); } | 201 VideoEncoderConfig Copy() const { return VideoEncoderConfig(*this); } |
187 | 202 |
188 VideoEncoderConfig(); | 203 VideoEncoderConfig(); |
189 VideoEncoderConfig(VideoEncoderConfig&&) = default; | 204 VideoEncoderConfig(VideoEncoderConfig&&) = default; |
190 ~VideoEncoderConfig(); | 205 ~VideoEncoderConfig(); |
191 std::string ToString() const; | 206 std::string ToString() const; |
192 | 207 |
193 std::vector<VideoStream> streams; | 208 rtc::scoped_refptr<VideoStreamFactoryInterface> encoder_stream_factory; |
194 std::vector<SpatialLayer> spatial_layers; | 209 std::vector<SpatialLayer> spatial_layers; |
195 ContentType content_type; | 210 ContentType content_type; |
196 rtc::scoped_refptr<const EncoderSpecificSettings> encoder_specific_settings; | 211 rtc::scoped_refptr<const EncoderSpecificSettings> encoder_specific_settings; |
197 | 212 |
198 // Padding will be used up to this bitrate regardless of the bitrate produced | 213 // Padding will be used up to this bitrate regardless of the bitrate produced |
199 // by the encoder. Padding above what's actually produced by the encoder helps | 214 // by the encoder. Padding above what's actually produced by the encoder helps |
200 // maintaining a higher bitrate estimate. Padding will however not be sent | 215 // maintaining a higher bitrate estimate. Padding will however not be sent |
201 // unless the estimated bandwidth indicates that the link can handle it. | 216 // unless the estimated bandwidth indicates that the link can handle it. |
202 int min_transmit_bitrate_bps; | 217 int min_transmit_bitrate_bps; |
203 bool expect_encode_from_texture; | 218 int max_bitrate_bps; |
| 219 |
| 220 // Max number of encoded VideoStreams to produce. |
| 221 size_t number_of_streams; |
204 | 222 |
205 private: | 223 private: |
206 // Access to the copy constructor is private to force use of the Copy() | 224 // Access to the copy constructor is private to force use of the Copy() |
207 // method for those exceptional cases where we do use it. | 225 // method for those exceptional cases where we do use it. |
208 VideoEncoderConfig(const VideoEncoderConfig&) = default; | 226 VideoEncoderConfig(const VideoEncoderConfig&) = default; |
209 }; | 227 }; |
210 | 228 |
211 struct VideoDecoderH264Settings { | 229 struct VideoDecoderH264Settings { |
212 std::string sprop_parameter_sets; | 230 std::string sprop_parameter_sets; |
213 }; | 231 }; |
214 | 232 |
215 class DecoderSpecificSettings { | 233 class DecoderSpecificSettings { |
216 public: | 234 public: |
217 virtual ~DecoderSpecificSettings() {} | 235 virtual ~DecoderSpecificSettings() {} |
218 rtc::Optional<VideoDecoderH264Settings> h264_extra_settings; | 236 rtc::Optional<VideoDecoderH264Settings> h264_extra_settings; |
219 }; | 237 }; |
220 | 238 |
221 } // namespace webrtc | 239 } // namespace webrtc |
222 | 240 |
223 #endif // WEBRTC_CONFIG_H_ | 241 #endif // WEBRTC_CONFIG_H_ |
OLD | NEW |