Index: webrtc/video_engine/vie_encoder.cc |
diff --git a/webrtc/video_engine/vie_encoder.cc b/webrtc/video_engine/vie_encoder.cc |
index cf546d07a98862b1f08715a23254b62809ba7464..90a87fdb2bedd353d8ee5f0669cf9a23ed21c895 100644 |
--- a/webrtc/video_engine/vie_encoder.cc |
+++ b/webrtc/video_engine/vie_encoder.cc |
@@ -72,7 +72,7 @@ std::vector<uint32_t> AllocateStreamBitrates( |
class QMVideoSettingsCallback : public VCMQMSettingsCallback { |
public: |
- explicit QMVideoSettingsCallback(VideoProcessingModule* vpm); |
+ explicit QMVideoSettingsCallback(VideoProcessing* vpm); |
~QMVideoSettingsCallback(); |
@@ -85,7 +85,7 @@ class QMVideoSettingsCallback : public VCMQMSettingsCallback { |
void SetTargetFramerate(int frame_rate); |
private: |
- VideoProcessingModule* vpm_; |
+ VideoProcessing* vp_; |
}; |
class ViEBitrateObserver : public BitrateObserver { |
@@ -111,8 +111,8 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores, |
PacedSender* pacer, |
BitrateAllocator* bitrate_allocator) |
: number_of_cores_(number_of_cores), |
- vpm_(VideoProcessingModule::Create()), |
- qm_callback_(new QMVideoSettingsCallback(vpm_.get())), |
+ vp_(VideoProcessing::Create()), |
+ qm_callback_(new QMVideoSettingsCallback(vp_.get())), |
vcm_(VideoCodingModule::Create(Clock::GetRealTimeClock(), |
this, |
qm_callback_.get())), |
@@ -140,10 +140,10 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores, |
} |
bool ViEEncoder::Init() { |
- vpm_->EnableTemporalDecimation(true); |
+ vp_->EnableTemporalDecimation(true); |
// Enable/disable content analysis: off by default for now. |
- vpm_->EnableContentAnalysis(false); |
+ vp_->EnableContentAnalysis(false); |
if (vcm_->RegisterTransportCallback(this) != 0) { |
return false; |
@@ -168,7 +168,6 @@ void ViEEncoder::StopThreadsAndRemoveSharedMembers() { |
if (bitrate_allocator_) |
bitrate_allocator_->RemoveBitrateObserver(bitrate_observer_.get()); |
module_process_thread_->DeRegisterModule(vcm_.get()); |
- module_process_thread_->DeRegisterModule(vpm_.get()); |
} |
ViEEncoder::~ViEEncoder() { |
@@ -211,8 +210,8 @@ int32_t ViEEncoder::DeRegisterExternalEncoder(uint8_t pl_type) { |
int32_t ViEEncoder::SetEncoder(const webrtc::VideoCodec& video_codec) { |
RTC_DCHECK(send_payload_router_ != NULL); |
// Setting target width and height for VPM. |
- if (vpm_->SetTargetResolution(video_codec.width, video_codec.height, |
- video_codec.maxFramerate) != VPM_OK) { |
+ if (vp_->SetTargetResolution(video_codec.width, video_codec.height, |
+ video_codec.maxFramerate) != VPM_OK) { |
return -1; |
} |
@@ -358,16 +357,13 @@ void ViEEncoder::DeliverFrame(VideoFrame video_frame) { |
TRACE_EVENT_ASYNC_STEP0("webrtc", "Video", video_frame.render_time_ms(), |
"Encode"); |
- VideoFrame* decimated_frame = NULL; |
+ const VideoFrame* frame_to_send = &video_frame; |
// TODO(wuchengli): support texture frames. |
if (video_frame.native_handle() == NULL) { |
// Pass frame via preprocessor. |
- const int ret = vpm_->PreprocessFrame(video_frame, &decimated_frame); |
- if (ret == 1) { |
- // Drop this frame. |
- return; |
- } |
- if (ret != VPM_OK) { |
+ frame_to_send = vp_->PreprocessFrame(video_frame); |
+ if (!frame_to_send) { |
+ // Drop this frame, or there was an error processing it. |
return; |
} |
} |
@@ -376,19 +372,11 @@ void ViEEncoder::DeliverFrame(VideoFrame video_frame) { |
// make a deep copy of |video_frame|. |
VideoFrame copied_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); |
+ copied_frame.CopyFrame(*frame_to_send); |
+ pre_encode_callback_->FrameCallback(&copied_frame); |
+ frame_to_send = &copied_frame; |
} |
- // If the frame was not resampled, scaled, or touched by FrameCallback => use |
- // original. The frame is const from here. |
- const VideoFrame* output_frame = |
- (decimated_frame != NULL) ? decimated_frame : &video_frame; |
- |
if (codec_type == webrtc::kVideoCodecVP8) { |
webrtc::CodecSpecificInfo codec_specific_info; |
codec_specific_info.codecType = webrtc::kVideoCodecVP8; |
@@ -406,11 +394,11 @@ void ViEEncoder::DeliverFrame(VideoFrame video_frame) { |
has_received_rpsi_ = false; |
} |
- vcm_->AddVideoFrame(*output_frame, vpm_->ContentMetrics(), |
+ vcm_->AddVideoFrame(*frame_to_send, vp_->GetContentMetrics(), |
&codec_specific_info); |
return; |
} |
- vcm_->AddVideoFrame(*output_frame); |
+ vcm_->AddVideoFrame(*frame_to_send); |
} |
int ViEEncoder::SendKeyFrame() { |
@@ -448,10 +436,10 @@ void ViEEncoder::SetSenderBufferingMode(int target_delay_ms) { |
if (target_delay_ms > 0) { |
// Disable external frame-droppers. |
vcm_->EnableFrameDropper(false); |
- vpm_->EnableTemporalDecimation(false); |
+ vp_->EnableTemporalDecimation(false); |
} else { |
// Real-time mode - enable frame droppers. |
- vpm_->EnableTemporalDecimation(true); |
+ vp_->EnableTemporalDecimation(true); |
vcm_->EnableFrameDropper(true); |
} |
} |
@@ -619,8 +607,8 @@ void ViEEncoder::RegisterPostEncodeImageCallback( |
vcm_->RegisterPostEncodeImageCallback(post_encode_callback); |
} |
-QMVideoSettingsCallback::QMVideoSettingsCallback(VideoProcessingModule* vpm) |
- : vpm_(vpm) { |
+QMVideoSettingsCallback::QMVideoSettingsCallback(VideoProcessing* vpm) |
+ : vp_(vpm) { |
} |
QMVideoSettingsCallback::~QMVideoSettingsCallback() { |
@@ -630,11 +618,11 @@ int32_t QMVideoSettingsCallback::SetVideoQMSettings( |
const uint32_t frame_rate, |
const uint32_t width, |
const uint32_t height) { |
- return vpm_->SetTargetResolution(width, height, frame_rate); |
+ return vp_->SetTargetResolution(width, height, frame_rate); |
} |
void QMVideoSettingsCallback::SetTargetFramerate(int frame_rate) { |
- vpm_->SetTargetFramerate(frame_rate); |
+ vp_->SetTargetFramerate(frame_rate); |
} |
} // namespace webrtc |