| Index: remoting/protocol/webrtc_connection_to_client.cc
|
| diff --git a/remoting/protocol/webrtc_connection_to_client.cc b/remoting/protocol/webrtc_connection_to_client.cc
|
| index 895ee3403597fbd17ad7310dee0e2e3e36df4297..a1df3511fd36107269be16ba5f745283b5ffaf3d 100644
|
| --- a/remoting/protocol/webrtc_connection_to_client.cc
|
| +++ b/remoting/protocol/webrtc_connection_to_client.cc
|
| @@ -21,6 +21,7 @@
|
| #include "remoting/protocol/input_stub.h"
|
| #include "remoting/protocol/message_pipe.h"
|
| #include "remoting/protocol/transport_context.h"
|
| +#include "remoting/protocol/webrtc_audio_stream.h"
|
| #include "remoting/protocol/webrtc_transport.h"
|
| #include "remoting/protocol/webrtc_video_stream.h"
|
| #include "third_party/webrtc/api/mediastreaminterface.h"
|
| @@ -37,13 +38,15 @@ namespace protocol {
|
| WebrtcConnectionToClient::WebrtcConnectionToClient(
|
| std::unique_ptr<protocol::Session> session,
|
| scoped_refptr<protocol::TransportContext> transport_context,
|
| - scoped_refptr<base::SingleThreadTaskRunner> video_encode_task_runner)
|
| + scoped_refptr<base::SingleThreadTaskRunner> video_encode_task_runner,
|
| + scoped_refptr<base::SingleThreadTaskRunner> audio_task_runner)
|
| : transport_(
|
| new WebrtcTransport(jingle_glue::JingleThreadWrapper::current(),
|
| transport_context,
|
| this)),
|
| session_(std::move(session)),
|
| video_encode_task_runner_(video_encode_task_runner),
|
| + audio_task_runner_(audio_task_runner),
|
| control_dispatcher_(new HostControlDispatcher()),
|
| event_dispatcher_(new HostEventDispatcher()),
|
| weak_factory_(this) {
|
| @@ -74,18 +77,23 @@ void WebrtcConnectionToClient::Disconnect(ErrorCode error) {
|
|
|
| std::unique_ptr<VideoStream> WebrtcConnectionToClient::StartVideoStream(
|
| std::unique_ptr<webrtc::DesktopCapturer> desktop_capturer) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(transport_);
|
| +
|
| std::unique_ptr<WebrtcVideoStream> stream(new WebrtcVideoStream());
|
| - if (!stream->Start(std::move(desktop_capturer), transport_.get(),
|
| - video_encode_task_runner_)) {
|
| - return nullptr;
|
| - }
|
| + stream->Start(std::move(desktop_capturer), transport_.get(),
|
| + video_encode_task_runner_);
|
| return std::move(stream);
|
| }
|
|
|
| std::unique_ptr<AudioStream> WebrtcConnectionToClient::StartAudioStream(
|
| std::unique_ptr<AudioSource> audio_source) {
|
| - NOTIMPLEMENTED();
|
| - return nullptr;
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(transport_);
|
| +
|
| + std::unique_ptr<WebrtcAudioStream> stream(new WebrtcAudioStream());
|
| + stream->Start(audio_task_runner_, std::move(audio_source), transport_.get());
|
| + return std::move(stream);
|
| }
|
|
|
| // Return pointer to ClientStub.
|
| @@ -142,6 +150,7 @@ void WebrtcConnectionToClient::OnSessionStateChange(Session::State state) {
|
| control_dispatcher_.reset();
|
| event_dispatcher_.reset();
|
| transport_->Close(state == Session::CLOSED ? OK : session_->error());
|
| + transport_.reset();
|
| event_handler_->OnConnectionClosed(
|
| state == Session::CLOSED ? OK : session_->error());
|
| break;
|
| @@ -149,6 +158,7 @@ void WebrtcConnectionToClient::OnSessionStateChange(Session::State state) {
|
| }
|
|
|
| void WebrtcConnectionToClient::OnWebrtcTransportConnecting() {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| // Create outgoing control channel. |event_dispatcher_| is initialized later
|
| // because event channel is expected to be created by the client.
|
| control_dispatcher_->Init(
|
| @@ -168,6 +178,7 @@ void WebrtcConnectionToClient::OnWebrtcTransportError(ErrorCode error) {
|
| void WebrtcConnectionToClient::OnWebrtcTransportIncomingDataChannel(
|
| const std::string& name,
|
| std::unique_ptr<MessagePipe> pipe) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| if (name == event_dispatcher_->channel_name() &&
|
| !event_dispatcher_->is_connected()) {
|
| event_dispatcher_->set_on_input_event_callback(
|
| @@ -179,11 +190,14 @@ void WebrtcConnectionToClient::OnWebrtcTransportIncomingDataChannel(
|
|
|
| void WebrtcConnectionToClient::OnWebrtcTransportMediaStreamAdded(
|
| scoped_refptr<webrtc::MediaStreamInterface> stream) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| LOG(WARNING) << "The client created an unexpected media stream.";
|
| }
|
|
|
| void WebrtcConnectionToClient::OnWebrtcTransportMediaStreamRemoved(
|
| - scoped_refptr<webrtc::MediaStreamInterface> stream) {}
|
| + scoped_refptr<webrtc::MediaStreamInterface> stream) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| +}
|
|
|
| void WebrtcConnectionToClient::OnChannelInitialized(
|
| ChannelDispatcherBase* channel_dispatcher) {
|
|
|