diff --git a/webrtc/video_engine/vie_encoder.cc b/webrtc/video_engine/vie_encoder.cc index b86c259744..19aff0a6e7 100644 --- a/webrtc/video_engine/vie_encoder.cc +++ b/webrtc/video_engine/vie_encoder.cc @@ -155,6 +155,7 @@ ViEEncoder::ViEEncoder(int32_t engine_id, codec_observer_(NULL), effect_filter_(NULL), module_process_thread_(module_process_thread), + pacer_thread_(ProcessThread::Create()), has_received_sli_(false), picture_id_sli_(0), has_received_rpsi_(false), @@ -189,8 +190,11 @@ bool ViEEncoder::Init() { vpm_.EnableContentAnalysis(false); if (module_process_thread_.RegisterModule(&vcm_) != 0 || - module_process_thread_.RegisterModule(default_rtp_rtcp_.get()) != 0 || - module_process_thread_.RegisterModule(paced_sender_.get()) != 0) { + module_process_thread_.RegisterModule(default_rtp_rtcp_.get()) != 0) { + return false; + } + if (pacer_thread_->RegisterModule(paced_sender_.get()) != 0 || + pacer_thread_->Start() != 0) { return false; } if (qm_callback_) { @@ -241,10 +245,11 @@ ViEEncoder::~ViEEncoder() { if (bitrate_controller_) { bitrate_controller_->RemoveBitrateObserver(bitrate_observer_.get()); } + pacer_thread_->Stop(); + pacer_thread_->DeRegisterModule(paced_sender_.get()); module_process_thread_.DeRegisterModule(&vcm_); module_process_thread_.DeRegisterModule(&vpm_); module_process_thread_.DeRegisterModule(default_rtp_rtcp_.get()); - module_process_thread_.DeRegisterModule(paced_sender_.get()); VideoCodingModule::Destroy(&vcm_); VideoProcessingModule::Destroy(&vpm_); delete qm_callback_; @@ -559,7 +564,7 @@ void ViEEncoder::DeliverFrame(int id, if (effect_filter_) { size_t length = CalcBufferSize(kI420, video_frame->width(), video_frame->height()); - scoped_ptr video_buffer(new uint8_t[length]); + rtc::scoped_ptr video_buffer(new uint8_t[length]); ExtractBuffer(*video_frame, length, video_buffer.get()); effect_filter_->Transform(length, video_buffer.get(), diff --git a/webrtc/video_engine/vie_encoder.h b/webrtc/video_engine/vie_encoder.h index d1723bc8dc..3ed661ada0 100644 --- a/webrtc/video_engine/vie_encoder.h +++ b/webrtc/video_engine/vie_encoder.h @@ -15,13 +15,13 @@ #include #include +#include "webrtc/base/scoped_ptr.h" #include "webrtc/base/thread_annotations.h" #include "webrtc/common_types.h" #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h" #include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h" #include "webrtc/modules/video_coding/main/interface/video_coding_defines.h" #include "webrtc/modules/video_processing/main/interface/video_processing.h" -#include "webrtc/system_wrappers/interface/scoped_ptr.h" #include "webrtc/typedefs.h" #include "webrtc/frame_callback.h" #include "webrtc/video_engine/vie_defines.h" @@ -205,13 +205,13 @@ class ViEEncoder VideoCodingModule& vcm_; VideoProcessingModule& vpm_; - scoped_ptr default_rtp_rtcp_; + rtc::scoped_ptr default_rtp_rtcp_; PayloadRouter* send_payload_router_; - scoped_ptr callback_cs_; - scoped_ptr data_cs_; - scoped_ptr bitrate_observer_; - scoped_ptr paced_sender_; - scoped_ptr pacing_callback_; + rtc::scoped_ptr callback_cs_; + rtc::scoped_ptr data_cs_; + rtc::scoped_ptr bitrate_observer_; + rtc::scoped_ptr paced_sender_; + rtc::scoped_ptr pacing_callback_; BitrateController* bitrate_controller_; @@ -231,6 +231,7 @@ class ViEEncoder ViEEncoderObserver* codec_observer_ GUARDED_BY(callback_cs_); ViEEffectFilter* effect_filter_ GUARDED_BY(callback_cs_); ProcessThread& module_process_thread_; + rtc::scoped_ptr pacer_thread_; bool has_received_sli_ GUARDED_BY(data_cs_); uint8_t picture_id_sli_ GUARDED_BY(data_cs_);