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

Unified Diff: extensions/renderer/api/display_source/wifi_display/wifi_display_media_pipeline.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_pipeline.cc
diff --git a/extensions/renderer/api/display_source/wifi_display/wifi_display_media_pipeline.cc b/extensions/renderer/api/display_source/wifi_display/wifi_display_media_pipeline.cc
index 4da3d3fef791330b31be0342005b4578859e948c..65e4d8ec0a499a8c394a4ec743a6c066d4e482c0 100644
--- a/extensions/renderer/api/display_source/wifi_display/wifi_display_media_pipeline.cc
+++ b/extensions/renderer/api/display_source/wifi_display/wifi_display_media_pipeline.cc
@@ -15,6 +15,7 @@ namespace extensions {
namespace {
const char kErrorVideoEncoderError[] = "Unrepairable video encoder error";
+const char kErrorUnableSendMedia[] = "Unable to send media";
} // namespace
@@ -22,10 +23,16 @@ WiFiDisplayMediaPipeline::WiFiDisplayMediaPipeline(
wds::SessionType type,
const WiFiDisplayVideoEncoder::InitParameters& video_parameters,
const wds::AudioCodec& audio_codec,
+ const std::string& sink_ip_address,
+ const std::pair<int, int>& sink_rtp_ports,
+ const RegisterMediaServiceCallback& service_callback,
const ErrorCallback& error_callback)
: type_(type),
video_parameters_(video_parameters),
audio_codec_(audio_codec),
+ sink_ip_address_(sink_ip_address),
+ sink_rtp_ports_(sink_rtp_ports),
+ service_callback_(service_callback),
error_callback_(error_callback),
weak_factory_(this) {
}
@@ -35,11 +42,17 @@ std::unique_ptr<WiFiDisplayMediaPipeline> WiFiDisplayMediaPipeline::Create(
wds::SessionType type,
const WiFiDisplayVideoEncoder::InitParameters& video_parameters,
const wds::AudioCodec& audio_codec,
+ const std::string& sink_ip_address,
+ const std::pair<int, int>& sink_rtp_ports,
+ const RegisterMediaServiceCallback& service_callback,
const ErrorCallback& error_callback) {
return std::unique_ptr<WiFiDisplayMediaPipeline>(
new WiFiDisplayMediaPipeline(type,
video_parameters,
audio_codec,
+ sink_ip_address,
+ sink_rtp_ports,
+ service_callback,
error_callback));
}
@@ -70,7 +83,10 @@ void WiFiDisplayMediaPipeline::Initialize(
return;
}
- init_completion_callback_.Run(true);
+ service_callback_.Run(
+ mojo::GetProxy(&media_service_),
+ base::Bind(&WiFiDisplayMediaPipeline::OnMediaServiceRegistered,
+ weak_factory_.GetWeakPtr()));
}
void WiFiDisplayMediaPipeline::CreateVideoEncoder() {
@@ -128,7 +144,21 @@ void WiFiDisplayMediaPipeline::OnVideoEncoderCreated(
weak_factory_.GetWeakPtr());
auto error_callback = base::Bind(error_callback_, kErrorVideoEncoderError);
video_encoder_->SetCallbacks(encoded_callback, error_callback);
- init_completion_callback_.Run(true);
+
+ service_callback_.Run(
+ mojo::GetProxy(&media_service_),
+ base::Bind(&WiFiDisplayMediaPipeline::OnMediaServiceRegistered,
+ weak_factory_.GetWeakPtr()));
+}
+
+void WiFiDisplayMediaPipeline::OnMediaServiceRegistered() {
+ DCHECK(media_service_);
+ auto error_callback = base::Bind(error_callback_, kErrorUnableSendMedia);
+ media_service_.set_connection_error_handler(error_callback);
+ media_service_->SetDesinationPoint(
+ sink_ip_address_,
+ static_cast<int32_t>(sink_rtp_ports_.first),
+ init_completion_callback_);
}
void WiFiDisplayMediaPipeline::OnEncodedVideoFrame(
@@ -143,7 +173,8 @@ void WiFiDisplayMediaPipeline::OnEncodedVideoFrame(
bool WiFiDisplayMediaPipeline::OnPacketizedMediaDatagramPacket(
WiFiDisplayMediaDatagramPacket media_datagram_packet) {
- NOTIMPLEMENTED();
+ DCHECK(media_service_);
+ media_service_->SendMediaPacket(std::move(media_datagram_packet));
return true;
}

Powered by Google App Engine
This is Rietveld 408576698