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

Side by Side Diff: extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc

Issue 1871553003: [chrome.displaySource][WiFi Display] Send media stream to sink (renderer part) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@media_pipeline
Patch Set: Added result callback to WiFiDisplayMediaService.SetDestinationPoint 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_media _manager.h" 5 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_media _manager.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/rand_util.h" 8 #include "base/rand_util.h"
9 #include "base/task_runner_util.h" 9 #include "base/task_runner_util.h"
10 #include "content/public/common/service_registry.h"
10 #include "content/public/renderer/media_stream_utils.h" 11 #include "content/public/renderer/media_stream_utils.h"
11 #include "content/public/renderer/media_stream_video_sink.h" 12 #include "content/public/renderer/media_stream_video_sink.h"
12 #include "content/public/renderer/render_thread.h" 13 #include "content/public/renderer/render_thread.h"
13 #include "content/public/renderer/video_encode_accelerator.h" 14 #include "content/public/renderer/video_encode_accelerator.h"
14 #include "extensions/common/mojo/wifi_display_session_service.mojom.h" 15 #include "extensions/common/mojo/wifi_display_session_service.mojom.h"
15 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_eleme ntary_stream_info.h" 16 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_eleme ntary_stream_info.h"
16 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_media _pipeline.h" 17 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_media _pipeline.h"
17 #include "media/base/bind_to_current_loop.h" 18 #include "media/base/bind_to_current_loop.h"
18 19
19 namespace extensions { 20 namespace extensions {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 private: 60 private:
60 blink::WebMediaStreamTrack track_; 61 blink::WebMediaStreamTrack track_;
61 bool sink_added_; 62 bool sink_added_;
62 content::VideoCaptureDeliverFrameCB callback_; 63 content::VideoCaptureDeliverFrameCB callback_;
63 DISALLOW_COPY_AND_ASSIGN(WiFiDisplayVideoSink); 64 DISALLOW_COPY_AND_ASSIGN(WiFiDisplayVideoSink);
64 }; 65 };
65 66
66 WiFiDisplayMediaManager::WiFiDisplayMediaManager( 67 WiFiDisplayMediaManager::WiFiDisplayMediaManager(
67 const blink::WebMediaStreamTrack& video_track, 68 const blink::WebMediaStreamTrack& video_track,
68 const blink::WebMediaStreamTrack& audio_track, 69 const blink::WebMediaStreamTrack& audio_track,
70 const std::string& sink_ip_address,
71 content::ServiceRegistry* service_registry,
69 const ErrorCallback& error_callback) 72 const ErrorCallback& error_callback)
70 : video_track_(video_track), 73 : video_track_(video_track),
71 audio_track_(audio_track), 74 audio_track_(audio_track),
75 service_registry_(service_registry),
76 sink_ip_address_(sink_ip_address),
72 player_(nullptr), 77 player_(nullptr),
73 io_task_runner_(content::RenderThread::Get()->GetIOMessageLoopProxy()), 78 io_task_runner_(content::RenderThread::Get()->GetIOMessageLoopProxy()),
74 error_callback_(error_callback), 79 error_callback_(error_callback),
75 is_playing_(false), 80 is_playing_(false),
76 is_initialized_(false), 81 is_initialized_(false),
77 weak_factory_(this) { 82 weak_factory_(this) {
78 DCHECK(!video_track.isNull() || !audio_track.isNull()); 83 DCHECK(!video_track.isNull() || !audio_track.isNull());
84 DCHECK(service_registry_);
79 DCHECK(!error_callback_.is_null()); 85 DCHECK(!error_callback_.is_null());
80 } 86 }
81 87
82 WiFiDisplayMediaManager::~WiFiDisplayMediaManager() { 88 WiFiDisplayMediaManager::~WiFiDisplayMediaManager() {
83 Teardown(); 89 Teardown();
84 } 90 }
85 91
86 void WiFiDisplayMediaManager::Play() { 92 void WiFiDisplayMediaManager::Play() {
87 is_playing_ = true; 93 is_playing_ = true;
88 if (!player_) { 94 if (!player_) {
95 auto service_callback = base::Bind(
96 &WiFiDisplayMediaManager::RegisterMediaService,
97 base::Unretained(this),
98 base::ThreadTaskRunnerHandle::Get());
89 base::PostTaskAndReplyWithResult(io_task_runner_.get(), FROM_HERE, 99 base::PostTaskAndReplyWithResult(io_task_runner_.get(), FROM_HERE,
90 base::Bind( 100 base::Bind(
91 &WiFiDisplayMediaPipeline::Create, 101 &WiFiDisplayMediaPipeline::Create,
92 GetSessionType(), 102 GetSessionType(),
93 video_encoder_parameters_, 103 video_encoder_parameters_,
94 optimal_audio_codec_, 104 optimal_audio_codec_,
105 sink_ip_address_,
106 sink_rtp_ports_,
107 service_callback, // To be invoked on IO thread.
95 media::BindToCurrentLoop(error_callback_)), 108 media::BindToCurrentLoop(error_callback_)),
96 base::Bind(&WiFiDisplayMediaManager::OnPlayerCreated, 109 base::Bind(&WiFiDisplayMediaManager::OnPlayerCreated,
97 weak_factory_.GetWeakPtr())); 110 weak_factory_.GetWeakPtr()));
98 return; 111 return;
99 } 112 }
100 113
101 if (!is_initialized_) { 114 if (!is_initialized_) {
102 return; // Waiting for initialization being completed. 115 return; // Waiting for initialization being completed.
103 } 116 }
104 117
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 402
390 if (!is_initialized_) { 403 if (!is_initialized_) {
391 error_callback_.Run(kErrorMediaPipelineFailure); 404 error_callback_.Run(kErrorMediaPipelineFailure);
392 return; 405 return;
393 } 406 }
394 407
395 if (is_playing_) 408 if (is_playing_)
396 Play(); 409 Play();
397 } 410 }
398 411
412 // Note: invoked on IO thread
413 void WiFiDisplayMediaManager::RegisterMediaService(
414 const scoped_refptr<base::SingleThreadTaskRunner>& main_runner,
415 WiFiDisplayMediaServiceRequest request,
416 const base::Closure& on_completed) {
417 auto connect_service_callback =
418 base::Bind(&WiFiDisplayMediaManager::ConnectToRemoteService,
419 base::Unretained(this),
420 base::Passed(&request));
421 main_runner->PostTaskAndReply(FROM_HERE,
422 connect_service_callback,
423 media::BindToCurrentLoop(on_completed));
424 }
425
426 void WiFiDisplayMediaManager::ConnectToRemoteService(
427 WiFiDisplayMediaServiceRequest request) {
428 DCHECK(content::RenderThread::Get());
429 service_registry_->ConnectToRemoteService(std::move(request));
430 }
399 431
400 } // namespace extensions 432 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698