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

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: 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..8c24790f0de26e61fb8a0a5e0e1715e47c3657c2 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));
}
@@ -128,6 +141,19 @@ void WiFiDisplayMediaPipeline::OnVideoEncoderCreated(
weak_factory_.GetWeakPtr());
auto error_callback = base::Bind(error_callback_, kErrorVideoEncoderError);
video_encoder_->SetCallbacks(encoded_callback, error_callback);
+
+ service_callback_.Run(
+ mojo::GetProxy(&media_service_),
+ base::Bind(&WiFiDisplayMediaPipeline::OnMediaServiceRegistered,
+ base::Unretained(this)));
+}
+
+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_.Run(true);
}
@@ -143,7 +169,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