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

Unified Diff: webrtc/video_engine/vie_encoder.cc

Issue 1482913003: Initial VideoProcessing refactoring. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Based on pbos review Created 5 years 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
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
« webrtc/modules/video_processing/video_processing_impl.cc ('K') | « webrtc/video_engine/vie_encoder.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698