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

Side by Side Diff: webrtc/media/engine/webrtcvideoengine2.h

Issue 1711763003: New flag is_screencast in VideoOptions. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix OnLoadUpdate is_screencast check. Don't set FakeVideoCapturer into screencast mode in the video… Created 4 years, 9 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
« no previous file with comments | « webrtc/media/base/videoengine_unittest.h ('k') | webrtc/media/engine/webrtcvideoengine2.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) 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 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 }; 294 };
295 295
296 struct Dimensions { 296 struct Dimensions {
297 // Initial encoder configuration (QCIF, 176x144) frame (to ensure that 297 // Initial encoder configuration (QCIF, 176x144) frame (to ensure that
298 // hardware encoders can be initialized). This gives us low memory usage 298 // hardware encoders can be initialized). This gives us low memory usage
299 // but also makes it so configuration errors are discovered at the time we 299 // but also makes it so configuration errors are discovered at the time we
300 // apply the settings rather than when we get the first frame (waiting for 300 // apply the settings rather than when we get the first frame (waiting for
301 // the first frame to know that you gave a bad codec parameter could make 301 // the first frame to know that you gave a bad codec parameter could make
302 // debugging hard). 302 // debugging hard).
303 // TODO(pbos): Consider setting up encoders lazily. 303 // TODO(pbos): Consider setting up encoders lazily.
304 Dimensions() : width(176), height(144), is_screencast(false) {} 304 Dimensions() : width(176), height(144) {}
305 int width; 305 int width;
306 int height; 306 int height;
307 bool is_screencast;
308 }; 307 };
309 308
310 union VideoEncoderSettings { 309 union VideoEncoderSettings {
311 webrtc::VideoCodecH264 h264; 310 webrtc::VideoCodecH264 h264;
312 webrtc::VideoCodecVP8 vp8; 311 webrtc::VideoCodecVP8 vp8;
313 webrtc::VideoCodecVP9 vp9; 312 webrtc::VideoCodecVP9 vp9;
314 }; 313 };
315 314
316 static std::vector<webrtc::VideoStream> CreateVideoStreams( 315 static std::vector<webrtc::VideoStream> CreateVideoStreams(
317 const VideoCodec& codec, 316 const VideoCodec& codec,
318 const VideoOptions& options, 317 const VideoOptions& options,
319 int max_bitrate_bps, 318 int max_bitrate_bps,
320 size_t num_streams); 319 size_t num_streams);
321 static std::vector<webrtc::VideoStream> CreateSimulcastVideoStreams( 320 static std::vector<webrtc::VideoStream> CreateSimulcastVideoStreams(
322 const VideoCodec& codec, 321 const VideoCodec& codec,
323 const VideoOptions& options, 322 const VideoOptions& options,
324 int max_bitrate_bps, 323 int max_bitrate_bps,
325 size_t num_streams); 324 size_t num_streams);
326 325
327 void* ConfigureVideoEncoderSettings(const VideoCodec& codec, 326 void* ConfigureVideoEncoderSettings(const VideoCodec& codec)
328 const VideoOptions& options,
329 bool is_screencast)
330 EXCLUSIVE_LOCKS_REQUIRED(lock_); 327 EXCLUSIVE_LOCKS_REQUIRED(lock_);
331 328
332 AllocatedEncoder CreateVideoEncoder(const VideoCodec& codec) 329 AllocatedEncoder CreateVideoEncoder(const VideoCodec& codec)
333 EXCLUSIVE_LOCKS_REQUIRED(lock_); 330 EXCLUSIVE_LOCKS_REQUIRED(lock_);
334 void DestroyVideoEncoder(AllocatedEncoder* encoder) 331 void DestroyVideoEncoder(AllocatedEncoder* encoder)
335 EXCLUSIVE_LOCKS_REQUIRED(lock_); 332 EXCLUSIVE_LOCKS_REQUIRED(lock_);
336 void SetCodec(const VideoCodecSettings& codec) 333 void SetCodec(const VideoCodecSettings& codec)
337 EXCLUSIVE_LOCKS_REQUIRED(lock_); 334 EXCLUSIVE_LOCKS_REQUIRED(lock_);
338 void RecreateWebRtcStream() EXCLUSIVE_LOCKS_REQUIRED(lock_); 335 void RecreateWebRtcStream() EXCLUSIVE_LOCKS_REQUIRED(lock_);
339 webrtc::VideoEncoderConfig CreateVideoEncoderConfig( 336 webrtc::VideoEncoderConfig CreateVideoEncoderConfig(
340 const Dimensions& dimensions, 337 const Dimensions& dimensions,
341 const VideoCodec& codec) const EXCLUSIVE_LOCKS_REQUIRED(lock_); 338 const VideoCodec& codec) const EXCLUSIVE_LOCKS_REQUIRED(lock_);
342 void SetDimensions(int width, int height, bool is_screencast) 339 void SetDimensions(int width, int height)
343 EXCLUSIVE_LOCKS_REQUIRED(lock_); 340 EXCLUSIVE_LOCKS_REQUIRED(lock_);
344 341
345 rtc::ThreadChecker thread_checker_; 342 rtc::ThreadChecker thread_checker_;
346 rtc::AsyncInvoker invoker_; 343 rtc::AsyncInvoker invoker_;
347 rtc::Thread* worker_thread_; 344 rtc::Thread* worker_thread_;
348 const std::vector<uint32_t> ssrcs_; 345 const std::vector<uint32_t> ssrcs_;
349 const std::vector<SsrcGroup> ssrc_groups_; 346 const std::vector<SsrcGroup> ssrc_groups_;
350 webrtc::Call* const call_; 347 webrtc::Call* const call_;
351 rtc::VideoSinkWants sink_wants_; 348 rtc::VideoSinkWants sink_wants_;
352 // Counter used for deciding if the video resolution is currently 349 // Counter used for deciding if the video resolution is currently
353 // restricted by CPU usage. It is reset if |capturer_| is changed. 350 // restricted by CPU usage. It is reset if |capturer_| is changed.
354 int cpu_restricted_counter_; 351 int cpu_restricted_counter_;
355 // Total number of times resolution as been requested to be changed due to 352 // Total number of times resolution as been requested to be changed due to
356 // CPU adaptation. 353 // CPU adaptation.
357 int number_of_cpu_adapt_changes_; 354 int number_of_cpu_adapt_changes_;
358 VideoCapturer* capturer_; 355 VideoCapturer* capturer_;
359 WebRtcVideoEncoderFactory* const external_encoder_factory_ 356 WebRtcVideoEncoderFactory* const external_encoder_factory_
360 GUARDED_BY(lock_); 357 GUARDED_BY(lock_);
361 358
362 rtc::CriticalSection lock_; 359 rtc::CriticalSection lock_;
363 webrtc::VideoSendStream* stream_ GUARDED_BY(lock_); 360 webrtc::VideoSendStream* stream_ GUARDED_BY(lock_);
364 VideoSendStreamParameters parameters_ GUARDED_BY(lock_); 361 VideoSendStreamParameters parameters_ GUARDED_BY(lock_);
365 bool pending_encoder_reconfiguration_ GUARDED_BY(lock_); 362 bool pending_encoder_reconfiguration_ GUARDED_BY(lock_);
366 VideoEncoderSettings encoder_settings_ GUARDED_BY(lock_); 363 VideoEncoderSettings encoder_settings_ GUARDED_BY(lock_);
367 AllocatedEncoder allocated_encoder_ GUARDED_BY(lock_); 364 AllocatedEncoder allocated_encoder_ GUARDED_BY(lock_);
368 Dimensions last_dimensions_ GUARDED_BY(lock_); 365 Dimensions last_dimensions_ GUARDED_BY(lock_);
369 webrtc::VideoRotation last_rotation_ GUARDED_BY(lock_) = 366 webrtc::VideoRotation last_rotation_ GUARDED_BY(lock_) =
370 webrtc::kVideoRotation_0; 367 webrtc::kVideoRotation_0;
371 368
372 bool capturer_is_screencast_ GUARDED_BY(lock_);
373 bool sending_ GUARDED_BY(lock_); 369 bool sending_ GUARDED_BY(lock_);
374 bool muted_ GUARDED_BY(lock_); 370 bool muted_ GUARDED_BY(lock_);
375 371
376 // The timestamp of the first frame received 372 // The timestamp of the first frame received
377 // Used to generate the timestamps of subsequent frames 373 // Used to generate the timestamps of subsequent frames
378 int64_t first_frame_timestamp_ms_ GUARDED_BY(lock_); 374 int64_t first_frame_timestamp_ms_ GUARDED_BY(lock_);
379 375
380 // The timestamp of the last frame received 376 // The timestamp of the last frame received
381 // Used to generate timestamp for the black frame when capturer is removed 377 // Used to generate timestamp for the black frame when capturer is removed
382 int64_t last_frame_timestamp_ms_ GUARDED_BY(lock_); 378 int64_t last_frame_timestamp_ms_ GUARDED_BY(lock_);
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 webrtc::Call::Config::BitrateConfig bitrate_config_; 515 webrtc::Call::Config::BitrateConfig bitrate_config_;
520 // TODO(deadbeef): Don't duplicate information between 516 // TODO(deadbeef): Don't duplicate information between
521 // send_params/recv_params, rtp_extensions, options, etc. 517 // send_params/recv_params, rtp_extensions, options, etc.
522 VideoSendParameters send_params_; 518 VideoSendParameters send_params_;
523 VideoRecvParameters recv_params_; 519 VideoRecvParameters recv_params_;
524 }; 520 };
525 521
526 } // namespace cricket 522 } // namespace cricket
527 523
528 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ 524 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_
OLDNEW
« no previous file with comments | « webrtc/media/base/videoengine_unittest.h ('k') | webrtc/media/engine/webrtcvideoengine2.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698