From 6107ba12f9d2364aced90046675ba6cceea19966 Mon Sep 17 00:00:00 2001 From: "magjed@webrtc.org" Date: Sat, 14 Mar 2015 11:49:55 +0000 Subject: [PATCH] Put ViEFrameProviderBase::DeliverFrame back in the critical section in ViECapturer::DeliverI420Frame The CL that moved it out of the critical section is here: https://webrtc-codereview.appspot.com/43669004/ BUG=1128 R=tommi@webrtc.org Review URL: https://webrtc-codereview.appspot.com/45679005 Cr-Commit-Position: refs/heads/master@{#8724} git-svn-id: http://webrtc.googlecode.com/svn/trunk@8724 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/video_engine/vie_capturer.cc | 84 ++++++++++++++--------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/webrtc/video_engine/vie_capturer.cc b/webrtc/video_engine/vie_capturer.cc index 75bb623980..079e20ac02 100644 --- a/webrtc/video_engine/vie_capturer.cc +++ b/webrtc/video_engine/vie_capturer.cc @@ -496,56 +496,56 @@ bool ViECapturer::ViECaptureProcess() { } void ViECapturer::DeliverI420Frame(I420VideoFrame* video_frame) { + CriticalSectionScoped cs(effects_and_stats_cs_.get()); + if (video_frame->native_handle() != NULL) { ViEFrameProviderBase::DeliverFrame(video_frame, std::vector()); return; } // Apply image enhancement and effect filter. - { - CriticalSectionScoped cs(effects_and_stats_cs_.get()); - if (deflicker_frame_stats_) { - if (image_proc_module_->GetFrameStats(deflicker_frame_stats_, - *video_frame) == 0) { - image_proc_module_->Deflickering(video_frame, deflicker_frame_stats_); - } else { - LOG_F(LS_ERROR) << "Could not get frame stats."; - } - } - if (brightness_frame_stats_) { - if (image_proc_module_->GetFrameStats(brightness_frame_stats_, - *video_frame) == 0) { - int32_t brightness = image_proc_module_->BrightnessDetection( - *video_frame, *brightness_frame_stats_); - - switch (brightness) { - case VideoProcessingModule::kNoWarning: - current_brightness_level_ = Normal; - break; - case VideoProcessingModule::kDarkWarning: - current_brightness_level_ = Dark; - break; - case VideoProcessingModule::kBrightWarning: - current_brightness_level_ = Bright; - break; - default: - break; - } - } - } - if (effect_filter_) { - size_t length = - CalcBufferSize(kI420, video_frame->width(), video_frame->height()); - rtc::scoped_ptr video_buffer(new uint8_t[length]); - ExtractBuffer(*video_frame, length, video_buffer.get()); - effect_filter_->Transform(length, - video_buffer.get(), - video_frame->ntp_time_ms(), - video_frame->timestamp(), - video_frame->width(), - video_frame->height()); + if (deflicker_frame_stats_) { + if (image_proc_module_->GetFrameStats(deflicker_frame_stats_, + *video_frame) == 0) { + image_proc_module_->Deflickering(video_frame, deflicker_frame_stats_); + } else { + LOG_F(LS_ERROR) << "Could not get frame stats."; } } + if (brightness_frame_stats_) { + if (image_proc_module_->GetFrameStats(brightness_frame_stats_, + *video_frame) == 0) { + int32_t brightness = image_proc_module_->BrightnessDetection( + *video_frame, *brightness_frame_stats_); + + switch (brightness) { + case VideoProcessingModule::kNoWarning: + current_brightness_level_ = Normal; + break; + case VideoProcessingModule::kDarkWarning: + current_brightness_level_ = Dark; + break; + case VideoProcessingModule::kBrightWarning: + current_brightness_level_ = Bright; + break; + default: + break; + } + } + } + if (effect_filter_) { + size_t length = + CalcBufferSize(kI420, video_frame->width(), video_frame->height()); + rtc::scoped_ptr video_buffer(new uint8_t[length]); + ExtractBuffer(*video_frame, length, video_buffer.get()); + effect_filter_->Transform(length, + video_buffer.get(), + video_frame->ntp_time_ms(), + video_frame->timestamp(), + video_frame->width(), + video_frame->height()); + } + // Deliver the captured frame to all observers (channels, renderer or file). ViEFrameProviderBase::DeliverFrame(video_frame, std::vector()); }