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

Unified Diff: webrtc/media/engine/webrtcvideoengine2.cc

Issue 2257413002: Replace interface VideoCapturerInput with VideoSinkInterface. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: git cl format Created 4 years, 4 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
Index: webrtc/media/engine/webrtcvideoengine2.cc
diff --git a/webrtc/media/engine/webrtcvideoengine2.cc b/webrtc/media/engine/webrtcvideoengine2.cc
index 69fedf2aee44508ee3533917f0c108cc7c030b6f..89cba2344cda64f5d78bac52d8729509fdd0b811 100644
--- a/webrtc/media/engine/webrtcvideoengine2.cc
+++ b/webrtc/media/engine/webrtcvideoengine2.cc
@@ -1579,6 +1579,7 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream(
source_(nullptr),
external_encoder_factory_(external_encoder_factory),
stream_(nullptr),
+ encoder_sink_(nullptr),
parameters_(std::move(config), options, max_bitrate_bps, codec_settings),
rtp_parameters_(CreateRtpParametersWithOneEncoding()),
pending_encoder_reconfiguration_(false),
@@ -1646,7 +1647,7 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame(
<< ", texture=" << last_frame_info_.is_texture;
}
- if (stream_ == NULL) {
+ if (encoder_sink_ == NULL) {
// Frame input before send codecs are configured, dropping frame.
return;
}
@@ -1675,7 +1676,7 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame(
return;
}
- stream_->Input()->IncomingCapturedFrame(video_frame);
+ encoder_sink_->OnFrame(video_frame);
nisse-webrtc 2016/08/23 10:13:28 The old IncomingCapturedFrame was responsible for
perkj_webrtc 2016/09/01 11:46:15 That is still done in VieEncoder::OnFrame and is w
}
bool WebRtcVideoChannel2::WebRtcVideoSendStream::SetVideoSend(
@@ -1698,7 +1699,7 @@ bool WebRtcVideoChannel2::WebRtcVideoSendStream::SetVideoSend(
if (options_present) {
VideoOptions old_options = parameters_.options;
parameters_.options.SetAll(*options);
- // Reconfigure encoder settings on the naext frame or stream
+ // Reconfigure encoder settings on the next frame or stream
// recreation if the options changed.
if (parameters_.options != old_options) {
pending_encoder_reconfiguration_ = true;
@@ -1711,7 +1712,7 @@ bool WebRtcVideoChannel2::WebRtcVideoSendStream::SetVideoSend(
// one.
first_frame_timestamp_ms_ = rtc::Optional<int64_t>();
- if (source == nullptr && stream_ != nullptr) {
+ if (source == nullptr && encoder_sink_ != nullptr) {
LOG(LS_VERBOSE) << "Disabling capturer, sending black frame.";
// Force this black frame not to be dropped due to timestamp order
// check. As IncomingCapturedFrame will drop the frame if this frame's
@@ -1724,9 +1725,9 @@ bool WebRtcVideoChannel2::WebRtcVideoSendStream::SetVideoSend(
last_frame_info_.height));
black_buffer->SetToBlack();
- stream_->Input()->IncomingCapturedFrame(webrtc::VideoFrame(
- black_buffer, 0 /* timestamp (90 kHz) */,
- last_frame_timestamp_ms_, last_frame_info_.rotation));
+ encoder_sink_->OnFrame(webrtc::VideoFrame(
+ black_buffer, 0 /* timestamp (90 kHz) */, last_frame_timestamp_ms_,
+ last_frame_info_.rotation));
}
source_ = source;
}
@@ -2048,6 +2049,19 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::SetSend(bool send) {
UpdateSendState();
}
+void WebRtcVideoChannel2::WebRtcVideoSendStream::AddOrUpdateSink(
+ VideoSinkInterface<webrtc::VideoFrame>* sink,
+ const rtc::VideoSinkWants& wants) {
+ rtc::CritScope cs(&lock_);
+ encoder_sink_ = sink;
nisse-webrtc 2016/08/22 07:20:29 Only one sink supported, right? Add a CHECK that e
perkj_webrtc 2016/09/01 11:46:16 Done.
+}
+
+void WebRtcVideoChannel2::WebRtcVideoSendStream::RemoveSink(
+ VideoSinkInterface<webrtc::VideoFrame>* sink) {
+ rtc::CritScope cs(&lock_);
+ encoder_sink_ = nullptr;
nisse-webrtc 2016/08/22 07:20:29 Similarly, add a CHECK that encoder_sink_ == sink?
perkj_webrtc 2016/09/01 11:46:15 Done.
+}
+
void WebRtcVideoChannel2::WebRtcVideoSendStream::OnLoadUpdate(Load load) {
if (worker_thread_ != rtc::Thread::Current()) {
invoker_.AsyncInvoke<void>(
@@ -2240,6 +2254,7 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::RecreateWebRtcStream() {
}
stream_ = call_->CreateVideoSendStream(std::move(config),
parameters_.encoder_config.Copy());
+ stream_->SetSource(this);
parameters_.encoder_config.encoder_specific_settings = NULL;
pending_encoder_reconfiguration_ = false;

Powered by Google App Engine
This is Rietveld 408576698