| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 cricket::VideoOptions* options) { | 287 cricket::VideoOptions* options) { |
| 288 bool all_valid = true; | 288 bool all_valid = true; |
| 289 | 289 |
| 290 all_valid &= ExtractOption(all_constraints, | 290 all_valid &= ExtractOption(all_constraints, |
| 291 MediaConstraintsInterface::kNoiseReduction, | 291 MediaConstraintsInterface::kNoiseReduction, |
| 292 &(options->video_noise_reduction)); | 292 &(options->video_noise_reduction)); |
| 293 | 293 |
| 294 return all_valid; | 294 return all_valid; |
| 295 } | 295 } |
| 296 | 296 |
| 297 class FrameInputWrapper : public cricket::VideoRenderer { | |
| 298 public: | |
| 299 explicit FrameInputWrapper(cricket::VideoCapturer* capturer) | |
| 300 : capturer_(capturer) { | |
| 301 ASSERT(capturer_ != NULL); | |
| 302 } | |
| 303 | |
| 304 virtual ~FrameInputWrapper() {} | |
| 305 | |
| 306 // VideoRenderer implementation. | |
| 307 bool RenderFrame(const cricket::VideoFrame* frame) override { | |
| 308 if (!capturer_->IsRunning()) { | |
| 309 return true; | |
| 310 } | |
| 311 | |
| 312 // This signal will be made on media engine render thread. The clients | |
| 313 // of this signal should have no assumptions on what thread this signal | |
| 314 // come from. | |
| 315 capturer_->SignalVideoFrame(capturer_, frame); | |
| 316 return true; | |
| 317 } | |
| 318 | |
| 319 private: | |
| 320 cricket::VideoCapturer* capturer_; | |
| 321 | |
| 322 RTC_DISALLOW_COPY_AND_ASSIGN(FrameInputWrapper); | |
| 323 }; | |
| 324 | |
| 325 } // anonymous namespace | 297 } // anonymous namespace |
| 326 | 298 |
| 327 namespace webrtc { | 299 namespace webrtc { |
| 328 | 300 |
| 329 rtc::scoped_refptr<VideoSource> VideoSource::Create( | 301 rtc::scoped_refptr<VideoSource> VideoSource::Create( |
| 330 cricket::ChannelManager* channel_manager, | 302 cricket::ChannelManager* channel_manager, |
| 331 cricket::VideoCapturer* capturer, | 303 cricket::VideoCapturer* capturer, |
| 332 const webrtc::MediaConstraintsInterface* constraints, | 304 const webrtc::MediaConstraintsInterface* constraints, |
| 333 bool remote) { | 305 bool remote) { |
| 334 ASSERT(channel_manager != NULL); | 306 ASSERT(channel_manager != NULL); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 411 // the camera doesn't produce frames with the correct format? Or will | 383 // the camera doesn't produce frames with the correct format? Or will |
| 412 // cricket::VideCapturer be able to re-scale / crop to the requested | 384 // cricket::VideCapturer be able to re-scale / crop to the requested |
| 413 // resolution? | 385 // resolution? |
| 414 if (!channel_manager_->StartVideoCapture(video_capturer_.get(), format_)) { | 386 if (!channel_manager_->StartVideoCapture(video_capturer_.get(), format_)) { |
| 415 SetState(kEnded); | 387 SetState(kEnded); |
| 416 return; | 388 return; |
| 417 } | 389 } |
| 418 // Initialize hasn't succeeded until a successful state change has occurred. | 390 // Initialize hasn't succeeded until a successful state change has occurred. |
| 419 } | 391 } |
| 420 | 392 |
| 421 cricket::VideoRenderer* VideoSource::FrameInput() { | |
| 422 // Defer creation of frame_input_ until it's needed, e.g. the local video | |
| 423 // sources will never need it. | |
| 424 if (!frame_input_) { | |
| 425 frame_input_.reset(new FrameInputWrapper(video_capturer_.get())); | |
| 426 } | |
| 427 return frame_input_.get(); | |
| 428 } | |
| 429 | |
| 430 void VideoSource::Stop() { | 393 void VideoSource::Stop() { |
| 431 channel_manager_->StopVideoCapture(video_capturer_.get(), format_); | 394 channel_manager_->StopVideoCapture(video_capturer_.get(), format_); |
| 432 } | 395 } |
| 433 | 396 |
| 434 void VideoSource::Restart() { | 397 void VideoSource::Restart() { |
| 435 if (!channel_manager_->StartVideoCapture(video_capturer_.get(), format_)) { | 398 if (!channel_manager_->StartVideoCapture(video_capturer_.get(), format_)) { |
| 436 SetState(kEnded); | 399 SetState(kEnded); |
| 437 return; | 400 return; |
| 438 } | 401 } |
| 439 for (auto* sink : sinks_) { | 402 for (auto* sink : sinks_) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 466 void VideoSource::SetState(SourceState new_state) { | 429 void VideoSource::SetState(SourceState new_state) { |
| 467 // TODO(hbos): Temporarily disabled VERIFY due to webrtc:4776. | 430 // TODO(hbos): Temporarily disabled VERIFY due to webrtc:4776. |
| 468 // if (VERIFY(state_ != new_state)) { | 431 // if (VERIFY(state_ != new_state)) { |
| 469 if (state_ != new_state) { | 432 if (state_ != new_state) { |
| 470 state_ = new_state; | 433 state_ = new_state; |
| 471 FireOnChanged(); | 434 FireOnChanged(); |
| 472 } | 435 } |
| 473 } | 436 } |
| 474 | 437 |
| 475 } // namespace webrtc | 438 } // namespace webrtc |
| OLD | NEW |