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

Unified Diff: webrtc/video_engine/vie_encoder.cc

Issue 1354143004: Remove callback_cs_ in ViEEncoder. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/video_engine/vie_encoder.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video_engine/vie_encoder.cc
diff --git a/webrtc/video_engine/vie_encoder.cc b/webrtc/video_engine/vie_encoder.cc
index f73f0606bcf08a775db71ae83eff8e718dcc8608..cc4783f55bc4c0e20b34fefbe2ae5c289b1ad1ed 100644
--- a/webrtc/video_engine/vie_encoder.cc
+++ b/webrtc/video_engine/vie_encoder.cc
@@ -104,7 +104,9 @@ class ViEBitrateObserver : public BitrateObserver {
ViEEncoder::ViEEncoder(int32_t channel_id,
uint32_t number_of_cores,
- ProcessThread& module_process_thread,
+ ProcessThread* module_process_thread,
+ SendStatisticsProxy* stats_proxy,
+ I420FrameCallback* pre_encode_callback,
PacedSender* pacer,
BitrateAllocator* bitrate_allocator)
: channel_id_(channel_id),
@@ -115,8 +117,9 @@ ViEEncoder::ViEEncoder(int32_t channel_id,
this,
qm_callback_.get())),
send_payload_router_(NULL),
- callback_cs_(CriticalSectionWrapper::CreateCriticalSection()),
data_cs_(CriticalSectionWrapper::CreateCriticalSection()),
+ stats_proxy_(stats_proxy),
+ pre_encode_callback_(pre_encode_callback),
pacer_(pacer),
bitrate_allocator_(bitrate_allocator),
time_of_last_frame_activity_ms_(0),
@@ -129,16 +132,13 @@ ViEEncoder::ViEEncoder(int32_t channel_id,
encoder_paused_and_dropped_frame_(false),
fec_enabled_(false),
nack_enabled_(false),
- codec_observer_(NULL),
module_process_thread_(module_process_thread),
has_received_sli_(false),
picture_id_sli_(0),
has_received_rpsi_(false),
picture_id_rpsi_(0),
video_suspended_(false),
- pre_encode_callback_(NULL),
- start_ms_(Clock::GetRealTimeClock()->TimeInMilliseconds()),
- send_statistics_proxy_(NULL) {
+ start_ms_(Clock::GetRealTimeClock()->TimeInMilliseconds()) {
bitrate_observer_.reset(new ViEBitrateObserver(this));
}
@@ -164,14 +164,14 @@ void ViEEncoder::StartThreadsAndSetSharedMembers(
send_payload_router_ = send_payload_router;
vcm_->RegisterProtectionCallback(vcm_protection_callback);
- module_process_thread_.RegisterModule(vcm_.get());
+ module_process_thread_->RegisterModule(vcm_.get());
}
void ViEEncoder::StopThreadsAndRemoveSharedMembers() {
if (bitrate_allocator_)
bitrate_allocator_->RemoveBitrateObserver(bitrate_observer_.get());
- module_process_thread_.DeRegisterModule(vcm_.get());
- module_process_thread_.DeRegisterModule(vpm_.get());
+ module_process_thread_->DeRegisterModule(vcm_.get());
+ module_process_thread_->DeRegisterModule(vpm_.get());
}
ViEEncoder::~ViEEncoder() {
@@ -449,16 +449,13 @@ void ViEEncoder::DeliverFrame(VideoFrame video_frame) {
// If we haven't resampled the frame and we have a FrameCallback, we need to
// make a deep copy of |video_frame|.
VideoFrame copied_frame;
- {
- CriticalSectionScoped cs(callback_cs_.get());
- if (pre_encode_callback_) {
- // If the frame was not resampled or scaled => use copy of original.
- if (decimated_frame == NULL) {
- copied_frame.CopyFrame(video_frame);
- decimated_frame = &copied_frame;
- }
- pre_encode_callback_->FrameCallback(decimated_frame);
+ if (pre_encode_callback_) {
+ // If the frame was not resampled or scaled => use copy of original.
+ if (decimated_frame == NULL) {
+ copied_frame.CopyFrame(video_frame);
+ decimated_frame = &copied_frame;
}
+ pre_encode_callback_->FrameCallback(decimated_frame);
}
// If the frame was not resampled, scaled, or touched by FrameCallback => use
@@ -577,9 +574,8 @@ void ViEEncoder::SetSenderBufferingMode(int target_delay_ms) {
}
void ViEEncoder::OnSetRates(uint32_t bitrate_bps, int framerate) {
- CriticalSectionScoped cs(callback_cs_.get());
- if (send_statistics_proxy_ != nullptr)
- send_statistics_proxy_->OnSetRates(bitrate_bps, framerate);
+ if (stats_proxy_)
+ stats_proxy_->OnSetRates(bitrate_bps, framerate);
}
int32_t ViEEncoder::SendData(
@@ -594,11 +590,8 @@ int32_t ViEEncoder::SendData(
time_of_last_frame_activity_ms_ = TickTime::MillisecondTimestamp();
}
- {
- CriticalSectionScoped cs(callback_cs_.get());
- if (send_statistics_proxy_ != NULL)
- send_statistics_proxy_->OnSendEncodedImage(encoded_image, rtp_video_hdr);
- }
+ if (stats_proxy_ != NULL)
+ stats_proxy_->OnSendEncodedImage(encoded_image, rtp_video_hdr);
return send_payload_router_->RoutePayload(
VCMEncodedFrame::ConvertFrameType(encoded_image._frameType), payload_type,
@@ -609,20 +602,8 @@ int32_t ViEEncoder::SendData(
int32_t ViEEncoder::SendStatistics(const uint32_t bit_rate,
const uint32_t frame_rate) {
- CriticalSectionScoped cs(callback_cs_.get());
- if (codec_observer_) {
- codec_observer_->OutgoingRate(channel_id_, frame_rate, bit_rate);
- }
- return 0;
-}
-
-int32_t ViEEncoder::RegisterCodecObserver(ViEEncoderObserver* observer) {
- CriticalSectionScoped cs(callback_cs_.get());
- if (observer && codec_observer_) {
- LOG_F(LS_ERROR) << "Observer already set.";
- return -1;
- }
- codec_observer_ = observer;
+ if (stats_proxy_)
+ stats_proxy_->OnOutgoingRate(frame_rate, bit_rate);
return 0;
}
@@ -743,14 +724,12 @@ void ViEEncoder::OnNetworkChanged(uint32_t bitrate_bps,
if (video_suspended_ == video_is_suspended)
return;
video_suspended_ = video_is_suspended;
- }
- // Video suspend-state changed, inform codec observer.
- CriticalSectionScoped crit(callback_cs_.get());
- if (codec_observer_) {
LOG(LS_INFO) << "Video suspended " << video_is_suspended
<< " for channel " << channel_id_;
- codec_observer_->SuspendChange(channel_id_, video_is_suspended);
}
+ // Video suspend-state changed, inform codec observer.
+ if (stats_proxy_)
+ stats_proxy_->OnSuspendChange(video_is_suspended);
}
void ViEEncoder::SuspendBelowMinBitrate() {
@@ -758,23 +737,11 @@ void ViEEncoder::SuspendBelowMinBitrate() {
bitrate_allocator_->EnforceMinBitrate(false);
}
-void ViEEncoder::RegisterPreEncodeCallback(
- I420FrameCallback* pre_encode_callback) {
- CriticalSectionScoped cs(callback_cs_.get());
- pre_encode_callback_ = pre_encode_callback;
-}
-
void ViEEncoder::RegisterPostEncodeImageCallback(
EncodedImageCallback* post_encode_callback) {
vcm_->RegisterPostEncodeImageCallback(post_encode_callback);
}
-void ViEEncoder::RegisterSendStatisticsProxy(
- SendStatisticsProxy* send_statistics_proxy) {
- CriticalSectionScoped cs(callback_cs_.get());
- send_statistics_proxy_ = send_statistics_proxy;
-}
-
QMVideoSettingsCallback::QMVideoSettingsCallback(VideoProcessingModule* vpm)
: vpm_(vpm) {
}
« no previous file with comments | « webrtc/video_engine/vie_encoder.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698