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

Unified Diff: remoting/protocol/webrtc_video_stream.cc

Issue 1846893002: Interface with webrtc through encoded frames (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed sergey comment Created 4 years, 8 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 | « remoting/protocol/webrtc_video_stream.h ('k') | remoting/remoting_srcs.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/protocol/webrtc_video_stream.cc
diff --git a/remoting/protocol/webrtc_video_stream.cc b/remoting/protocol/webrtc_video_stream.cc
index b4dbae4a59e2e75cbf88a5878b1ee24439b017d0..7b472018186195a168a77f61252b909838684ef0 100644
--- a/remoting/protocol/webrtc_video_stream.cc
+++ b/remoting/protocol/webrtc_video_stream.cc
@@ -5,10 +5,11 @@
#include "remoting/protocol/webrtc_video_stream.h"
#include "base/logging.h"
-#include "remoting/protocol/webrtc_video_capturer_adapter.h"
+#include "remoting/protocol/webrtc_dummy_video_capturer.h"
#include "third_party/webrtc/api/mediastreaminterface.h"
#include "third_party/webrtc/api/peerconnectioninterface.h"
#include "third_party/webrtc/api/test/fakeconstraints.h"
+#include "third_party/webrtc/media/base/videocapturer.h"
namespace remoting {
namespace protocol {
@@ -26,33 +27,41 @@ WebrtcVideoStream::~WebrtcVideoStream() {
}
connection_->RemoveStream(stream_.get());
}
-
- // MediaStream may still outlive WebrtcVideoStream because it's
- // ref-counted. Reset SizeCallback to make sure it won't be called again.
- if (capturer_adapter_)
- capturer_adapter_->SetSizeCallback(SizeCallback());
}
bool WebrtcVideoStream::Start(
std::unique_ptr<webrtc::DesktopCapturer> desktop_capturer,
- scoped_refptr<webrtc::PeerConnectionInterface> connection,
- scoped_refptr<webrtc::PeerConnectionFactoryInterface>
- peer_connection_factory) {
- std::unique_ptr<WebrtcVideoCapturerAdapter> capturer_adapter(
- new WebrtcVideoCapturerAdapter(std::move(desktop_capturer)));
- capturer_adapter_ = capturer_adapter->GetWeakPtr();
-
- connection_ = connection;
+ WebrtcTransport* webrtc_transport,
+ scoped_refptr<base::SingleThreadTaskRunner> video_encode_task_runner,
+ std::unique_ptr<VideoEncoder> video_encoder) {
+ DCHECK(webrtc_transport);
+ DCHECK(desktop_capturer);
+ DCHECK(video_encode_task_runner);
+ DCHECK(video_encoder);
+
+ scoped_refptr<webrtc::PeerConnectionFactoryInterface> peer_connection_factory(
+ webrtc_transport->peer_connection_factory());
+ connection_ = webrtc_transport->peer_connection();
+ DCHECK(peer_connection_factory);
+ DCHECK(connection_);
+
+ std::unique_ptr<WebRtcFrameScheduler> frame_scheduler(
+ new WebRtcFrameScheduler(video_encode_task_runner,
+ std::move(desktop_capturer), webrtc_transport,
+ std::move(video_encoder)));
+ webrtc_frame_scheduler_ = frame_scheduler.get();
// Set video stream constraints.
webrtc::FakeConstraints video_constraints;
video_constraints.AddMandatory(
webrtc::MediaConstraintsInterface::kMinFrameRate, 5);
+ rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> src =
+ peer_connection_factory->CreateVideoSource(
+ new WebRtcDummyVideoCapturer(std::move(frame_scheduler)),
+ &video_constraints);
rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track =
- peer_connection_factory->CreateVideoTrack(
- kVideoLabel, peer_connection_factory->CreateVideoSource(
- capturer_adapter.release(), &video_constraints));
+ peer_connection_factory->CreateVideoTrack(kVideoLabel, src);
stream_ = peer_connection_factory->CreateLocalMediaStream(kStreamLabel);
@@ -62,13 +71,12 @@ bool WebrtcVideoStream::Start(
connection_ = nullptr;
return false;
}
-
return true;
}
void WebrtcVideoStream::Pause(bool pause) {
- if (capturer_adapter_)
- capturer_adapter_->PauseCapturer(pause);
+ if (webrtc_frame_scheduler_)
+ webrtc_frame_scheduler_->Pause(pause);
}
void WebrtcVideoStream::OnInputEventReceived(int64_t event_timestamp) {
@@ -84,8 +92,8 @@ void WebrtcVideoStream::SetLosslessColor(bool want_lossless) {
}
void WebrtcVideoStream::SetSizeCallback(const SizeCallback& size_callback) {
- if (capturer_adapter_)
- capturer_adapter_->SetSizeCallback(size_callback);
+ if (webrtc_frame_scheduler_)
+ webrtc_frame_scheduler_->SetSizeCallback(size_callback);
}
} // namespace protocol
« no previous file with comments | « remoting/protocol/webrtc_video_stream.h ('k') | remoting/remoting_srcs.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698