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

Unified 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698