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

Unified Diff: remoting/protocol/webrtc_transport.cc

Issue 1846893002: Interface with webrtc through encoded frames (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed sergeyu comments and rebased 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
Index: remoting/protocol/webrtc_transport.cc
diff --git a/remoting/protocol/webrtc_transport.cc b/remoting/protocol/webrtc_transport.cc
index 8b630a82431bef0202ea27c7fc414058fb92f312..03bd931cadcef8bbc50479a974640cb424f0f915 100644
--- a/remoting/protocol/webrtc_transport.cc
+++ b/remoting/protocol/webrtc_transport.cc
@@ -4,7 +4,9 @@
#include "remoting/protocol/webrtc_transport.h"
+#include <string>
#include <utility>
+#include <vector>
#include "base/base64.h"
#include "base/callback_helpers.h"
@@ -22,6 +24,7 @@
#include "remoting/protocol/port_allocator_factory.h"
#include "remoting/protocol/stream_message_pipe_adapter.h"
#include "remoting/protocol/transport_context.h"
+#include "remoting/protocol/webrtc_video_encoder.h"
#include "third_party/webrtc/api/test/fakeconstraints.h"
#include "third_party/webrtc/libjingle/xmllite/xmlelement.h"
#include "third_party/webrtc/modules/audio_device/include/fake_audio_device.h"
@@ -122,7 +125,7 @@ class SetSessionDescriptionObserver
}
protected:
- SetSessionDescriptionObserver(const ResultCallback& result_callback)
+ explicit SetSessionDescriptionObserver(const ResultCallback& result_callback)
: result_callback_(result_callback) {}
~SetSessionDescriptionObserver() override {}
@@ -173,10 +176,12 @@ void WebrtcTransport::Start(
}
fake_audio_device_module_.reset(new webrtc::FakeAudioDeviceModule());
+ video_encoder_factory_ = new remoting::WebRtcVideoEncoderFactory();
+ // Takes ownership of video_encoder_factory_
peer_connection_factory_ = webrtc::CreatePeerConnectionFactory(
- worker_thread_, rtc::Thread::Current(),
- fake_audio_device_module_.get(), nullptr, nullptr);
+ worker_thread_, rtc::Thread::Current(), fake_audio_device_module_.get(),
+ video_encoder_factory_, nullptr);
webrtc::PeerConnectionInterface::IceServer stun_server;
stun_server.urls.push_back("stun:stun.l.google.com:19302");
@@ -250,6 +255,15 @@ bool WebrtcTransport::ProcessTransportInfo(XmlElement* transport_info) {
}
}
+ // TODO(isheriff): The need for this should go away once we have a proper
+ // API to provide max bitrate for the case of handing over encoded
+ // frames to webrtc.
+ // Increase max bitrate from 600 kbps to 5 Mbps.
+ std::string vp8line = "a=rtpmap:100 VP8/90000\n";
+ std::string vp8line_with_bitrate =
+ vp8line + "a=fmtp:100 x-google-max-bitrate=5000\n";
+ base::ReplaceSubstringsAfterOffset(&sdp, 0, vp8line, vp8line_with_bitrate);
+
webrtc::SdpParseError error;
std::unique_ptr<webrtc::SessionDescriptionInterface> session_description(
webrtc::CreateSessionDescription(type, sdp, &error));

Powered by Google App Engine
This is Rietveld 408576698