| Index: extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc
|
| diff --git a/extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc b/extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc
|
| index f06558f287bf3a6d5b25169d24239833ccb945e9..48e90da49337a31ae5adde8d04c6441f12684c28 100644
|
| --- a/extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc
|
| +++ b/extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/logging.h"
|
| #include "base/rand_util.h"
|
| #include "base/task_runner_util.h"
|
| +#include "content/public/common/service_registry.h"
|
| #include "content/public/renderer/media_stream_utils.h"
|
| #include "content/public/renderer/media_stream_video_sink.h"
|
| #include "content/public/renderer/render_thread.h"
|
| @@ -66,9 +67,13 @@ class WiFiDisplayVideoSink : public content::MediaStreamVideoSink {
|
| WiFiDisplayMediaManager::WiFiDisplayMediaManager(
|
| const blink::WebMediaStreamTrack& video_track,
|
| const blink::WebMediaStreamTrack& audio_track,
|
| + const std::string& sink_ip_address,
|
| + content::ServiceRegistry* service_registry,
|
| const ErrorCallback& error_callback)
|
| : video_track_(video_track),
|
| audio_track_(audio_track),
|
| + service_registry_(service_registry),
|
| + sink_ip_address_(sink_ip_address),
|
| player_(nullptr),
|
| io_task_runner_(content::RenderThread::Get()->GetIOMessageLoopProxy()),
|
| error_callback_(error_callback),
|
| @@ -76,6 +81,7 @@ WiFiDisplayMediaManager::WiFiDisplayMediaManager(
|
| is_initialized_(false),
|
| weak_factory_(this) {
|
| DCHECK(!video_track.isNull() || !audio_track.isNull());
|
| + DCHECK(service_registry_);
|
| DCHECK(!error_callback_.is_null());
|
| }
|
|
|
| @@ -86,12 +92,19 @@ WiFiDisplayMediaManager::~WiFiDisplayMediaManager() {
|
| void WiFiDisplayMediaManager::Play() {
|
| is_playing_ = true;
|
| if (!player_) {
|
| + auto service_callback = base::Bind(
|
| + &WiFiDisplayMediaManager::RegisterMediaService,
|
| + base::Unretained(this),
|
| + base::ThreadTaskRunnerHandle::Get());
|
| base::PostTaskAndReplyWithResult(io_task_runner_.get(), FROM_HERE,
|
| base::Bind(
|
| &WiFiDisplayMediaPipeline::Create,
|
| GetSessionType(),
|
| video_encoder_parameters_,
|
| optimal_audio_codec_,
|
| + sink_ip_address_,
|
| + sink_rtp_ports_,
|
| + service_callback, // To be invoked on IO thread.
|
| media::BindToCurrentLoop(error_callback_)),
|
| base::Bind(&WiFiDisplayMediaManager::OnPlayerCreated,
|
| weak_factory_.GetWeakPtr()));
|
| @@ -396,5 +409,24 @@ void WiFiDisplayMediaManager::OnMediaPipelineInitialized(bool success) {
|
| Play();
|
| }
|
|
|
| +// Note: invoked on IO thread
|
| +void WiFiDisplayMediaManager::RegisterMediaService(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& main_runner,
|
| + WiFiDisplayMediaServiceRequest request,
|
| + const base::Closure& on_completed) {
|
| + auto connect_service_callback =
|
| + base::Bind(&WiFiDisplayMediaManager::ConnectToRemoteService,
|
| + base::Unretained(this),
|
| + base::Passed(&request));
|
| + main_runner->PostTaskAndReply(FROM_HERE,
|
| + connect_service_callback,
|
| + media::BindToCurrentLoop(on_completed));
|
| +}
|
| +
|
| +void WiFiDisplayMediaManager::ConnectToRemoteService(
|
| + WiFiDisplayMediaServiceRequest request) {
|
| + DCHECK(content::RenderThread::Get());
|
| + service_registry_->ConnectToRemoteService(std::move(request));
|
| +}
|
|
|
| } // namespace extensions
|
|
|