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

Unified Diff: remoting/protocol/webrtc_video_stream.cc

Issue 2782523003: [Remoting Host] Supporting WebRTC VP9 streaming (Closed)
Patch Set: PTAL Created 3 years, 9 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_video_stream.cc
diff --git a/remoting/protocol/webrtc_video_stream.cc b/remoting/protocol/webrtc_video_stream.cc
index 8c2478bf7b1fd0ce525d646143071d111bd8f423..96abf30bd4b0e9e00ef31faef82e02ff5228a8dc 100644
--- a/remoting/protocol/webrtc_video_stream.cc
+++ b/remoting/protocol/webrtc_video_stream.cc
@@ -4,6 +4,8 @@
#include "remoting/protocol/webrtc_video_stream.h"
+#include <utility>
+
#include "base/logging.h"
#include "base/single_thread_task_runner.h"
#include "base/task_runner_util.h"
@@ -74,8 +76,11 @@ void WebrtcVideoStream::Start(
encode_task_runner_ = std::move(encode_task_runner);
capturer_ = std::move(desktop_capturer);
webrtc_transport_ = webrtc_transport;
- // TODO(isheriff): make this codec independent
- encoder_ = WebrtcVideoEncoderVpx::CreateForVP8();
+
+ webrtc_transport_->video_encoder_factory()->SetEncoderCreatedCallback(
Sergey Ulanov 2017/03/31 19:23:11 Maybe call it "EncoderSelectedCallback"? That woul
Yuwei 2017/04/03 22:29:10 Done.
+ base::Bind(&WebrtcVideoStream::OnEncoderCreated,
+ weak_factory_.GetWeakPtr()));
+
capturer_->Start(this);
// Set video stream constraints.
@@ -162,6 +167,11 @@ void WebrtcVideoStream::OnCaptureResult(
}
}
+ if (!encoder_) {
+ LOG(WARNING) << "Encoder has not been created yet.";
Yuwei 2017/03/29 01:08:33 I'm not sure whether this is very safe but IIUC th
Sergey Ulanov 2017/03/31 19:23:11 I think we need to fix this in WebrtcFrameSchedule
Yuwei 2017/04/03 22:29:10 Done.
+ return;
+ }
+
base::PostTaskAndReplyWithResult(
encode_task_runner_.get(), FROM_HERE,
base::Bind(&WebrtcVideoStream::EncodeFrame, encoder_.get(),
@@ -254,5 +264,16 @@ void WebrtcVideoStream::OnFrameEncoded(EncodedFrameWithTimestamps frame) {
}
}
+void WebrtcVideoStream::OnEncoderCreated(webrtc::VideoCodecType codec_type) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ if (codec_type == webrtc::kVideoCodecVP8) {
+ encoder_ = WebrtcVideoEncoderVpx::CreateForVP8();
+ } else if (codec_type == webrtc::kVideoCodecVP9) {
+ encoder_ = WebrtcVideoEncoderVpx::CreateForVP9();
+ } else {
+ LOG(FATAL) << "Unknown codec type: " << codec_type;
+ }
+}
+
} // namespace protocol
} // namespace remoting
« remoting/protocol/webrtc_transport.cc ('K') | « remoting/protocol/webrtc_video_stream.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698