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
diff --git a/webrtc/video_engine/vie_capturer.cc b/webrtc/video_engine/vie_capturer.cc
index 75bb623..079e20a 100644
--- a/webrtc/video_engine/vie_capturer.cc
+++ b/webrtc/video_engine/vie_capturer.cc
@@ -496,56 +496,56 @@
}
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<uint32_t>());
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<uint8_t[]> 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<uint8_t[]> 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<uint32_t>());
}