| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2014 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 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 }; | 292 }; |
| 293 | 293 |
| 294 struct Dimensions { | 294 struct Dimensions { |
| 295 // Initial encoder configuration (QCIF, 176x144) frame (to ensure that | 295 // Initial encoder configuration (QCIF, 176x144) frame (to ensure that |
| 296 // hardware encoders can be initialized). This gives us low memory usage | 296 // hardware encoders can be initialized). This gives us low memory usage |
| 297 // but also makes it so configuration errors are discovered at the time we | 297 // but also makes it so configuration errors are discovered at the time we |
| 298 // apply the settings rather than when we get the first frame (waiting for | 298 // apply the settings rather than when we get the first frame (waiting for |
| 299 // the first frame to know that you gave a bad codec parameter could make | 299 // the first frame to know that you gave a bad codec parameter could make |
| 300 // debugging hard). | 300 // debugging hard). |
| 301 // TODO(pbos): Consider setting up encoders lazily. | 301 // TODO(pbos): Consider setting up encoders lazily. |
| 302 Dimensions() : width(176), height(144), is_screencast(false) {} | 302 Dimensions() : width(176), height(144) {} |
| 303 int width; | 303 int width; |
| 304 int height; | 304 int height; |
| 305 bool is_screencast; | |
| 306 }; | 305 }; |
| 307 | 306 |
| 308 union VideoEncoderSettings { | 307 union VideoEncoderSettings { |
| 309 webrtc::VideoCodecH264 h264; | 308 webrtc::VideoCodecH264 h264; |
| 310 webrtc::VideoCodecVP8 vp8; | 309 webrtc::VideoCodecVP8 vp8; |
| 311 webrtc::VideoCodecVP9 vp9; | 310 webrtc::VideoCodecVP9 vp9; |
| 312 }; | 311 }; |
| 313 | 312 |
| 314 static std::vector<webrtc::VideoStream> CreateVideoStreams( | 313 static std::vector<webrtc::VideoStream> CreateVideoStreams( |
| 315 const VideoCodec& codec, | 314 const VideoCodec& codec, |
| 316 const VideoOptions& options, | 315 const VideoOptions& options, |
| 317 int max_bitrate_bps, | 316 int max_bitrate_bps, |
| 318 size_t num_streams); | 317 size_t num_streams); |
| 319 static std::vector<webrtc::VideoStream> CreateSimulcastVideoStreams( | 318 static std::vector<webrtc::VideoStream> CreateSimulcastVideoStreams( |
| 320 const VideoCodec& codec, | 319 const VideoCodec& codec, |
| 321 const VideoOptions& options, | 320 const VideoOptions& options, |
| 322 int max_bitrate_bps, | 321 int max_bitrate_bps, |
| 323 size_t num_streams); | 322 size_t num_streams); |
| 324 | 323 |
| 325 void* ConfigureVideoEncoderSettings(const VideoCodec& codec, | 324 void* ConfigureVideoEncoderSettings(const VideoCodec& codec) |
| 326 const VideoOptions& options, | |
| 327 bool is_screencast) | |
| 328 EXCLUSIVE_LOCKS_REQUIRED(lock_); | 325 EXCLUSIVE_LOCKS_REQUIRED(lock_); |
| 329 | 326 |
| 330 AllocatedEncoder CreateVideoEncoder(const VideoCodec& codec) | 327 AllocatedEncoder CreateVideoEncoder(const VideoCodec& codec) |
| 331 EXCLUSIVE_LOCKS_REQUIRED(lock_); | 328 EXCLUSIVE_LOCKS_REQUIRED(lock_); |
| 332 void DestroyVideoEncoder(AllocatedEncoder* encoder) | 329 void DestroyVideoEncoder(AllocatedEncoder* encoder) |
| 333 EXCLUSIVE_LOCKS_REQUIRED(lock_); | 330 EXCLUSIVE_LOCKS_REQUIRED(lock_); |
| 334 void SetCodecAndOptions(const VideoCodecSettings& codec, | 331 void SetCodecAndOptions(const VideoCodecSettings& codec) |
| 335 const VideoOptions& options) | |
| 336 EXCLUSIVE_LOCKS_REQUIRED(lock_); | 332 EXCLUSIVE_LOCKS_REQUIRED(lock_); |
| 337 void RecreateWebRtcStream() EXCLUSIVE_LOCKS_REQUIRED(lock_); | 333 void RecreateWebRtcStream() EXCLUSIVE_LOCKS_REQUIRED(lock_); |
| 338 webrtc::VideoEncoderConfig CreateVideoEncoderConfig( | 334 webrtc::VideoEncoderConfig CreateVideoEncoderConfig( |
| 339 const Dimensions& dimensions, | 335 const Dimensions& dimensions, |
| 340 const VideoCodec& codec) const EXCLUSIVE_LOCKS_REQUIRED(lock_); | 336 const VideoCodec& codec) const EXCLUSIVE_LOCKS_REQUIRED(lock_); |
| 341 void SetDimensions(int width, int height, bool is_screencast) | 337 void SetDimensions(int width, int height) |
| 342 EXCLUSIVE_LOCKS_REQUIRED(lock_); | 338 EXCLUSIVE_LOCKS_REQUIRED(lock_); |
| 343 | 339 |
| 344 const std::vector<uint32_t> ssrcs_; | 340 const std::vector<uint32_t> ssrcs_; |
| 345 const std::vector<SsrcGroup> ssrc_groups_; | 341 const std::vector<SsrcGroup> ssrc_groups_; |
| 346 webrtc::Call* const call_; | 342 webrtc::Call* const call_; |
| 347 rtc::VideoSinkWants sink_wants_; | 343 rtc::VideoSinkWants sink_wants_; |
| 348 WebRtcVideoEncoderFactory* const external_encoder_factory_ | 344 WebRtcVideoEncoderFactory* const external_encoder_factory_ |
| 349 GUARDED_BY(lock_); | 345 GUARDED_BY(lock_); |
| 350 | 346 |
| 351 rtc::CriticalSection lock_; | 347 rtc::CriticalSection lock_; |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 516 webrtc::Call::Config::BitrateConfig bitrate_config_; | 512 webrtc::Call::Config::BitrateConfig bitrate_config_; |
| 517 // TODO(deadbeef): Don't duplicate information between | 513 // TODO(deadbeef): Don't duplicate information between |
| 518 // send_params/recv_params, rtp_extensions, options, etc. | 514 // send_params/recv_params, rtp_extensions, options, etc. |
| 519 VideoSendParameters send_params_; | 515 VideoSendParameters send_params_; |
| 520 VideoRecvParameters recv_params_; | 516 VideoRecvParameters recv_params_; |
| 521 }; | 517 }; |
| 522 | 518 |
| 523 } // namespace cricket | 519 } // namespace cricket |
| 524 | 520 |
| 525 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ | 521 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ |
| OLD | NEW |