| Index: remoting/protocol/webrtc_video_stream.cc
|
| diff --git a/remoting/protocol/webrtc_video_stream.cc b/remoting/protocol/webrtc_video_stream.cc
|
| index 79a7dceaeff038df1c6854fba7f759e6120de651..72835251cd465d78eef2627df6787903b277e166 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"
|
| @@ -76,8 +78,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()->RegisterEncoderSelectedCallback(
|
| + base::Bind(&WebrtcVideoStream::OnEncoderCreated,
|
| + weak_factory_.GetWeakPtr()));
|
| +
|
| capturer_->Start(this);
|
|
|
| // Set video stream constraints.
|
| @@ -164,6 +169,8 @@ void WebrtcVideoStream::OnCaptureResult(
|
| }
|
| }
|
|
|
| + DCHECK(encoder_);
|
| +
|
| base::PostTaskAndReplyWithResult(
|
| encode_task_runner_.get(), FROM_HERE,
|
| base::Bind(&WebrtcVideoStream::EncodeFrame, encoder_.get(),
|
| @@ -261,5 +268,16 @@ void WebrtcVideoStream::OnFrameEncoded(EncodedFrameWithStats 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
|
|
|