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

Unified Diff: media/cast/transport/cast_transport_sender_impl.cc

Issue 178073004: Cast: IPC from browser to renderer to send packet events from transport to cast library. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix sender app Created 6 years, 10 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: media/cast/transport/cast_transport_sender_impl.cc
diff --git a/media/cast/transport/cast_transport_sender_impl.cc b/media/cast/transport/cast_transport_sender_impl.cc
index d8f0de2b5df97b954446cf0e5f3718c95b4bce5d..3c288298c613de71f21f58830435fa17a4605b2d 100644
--- a/media/cast/transport/cast_transport_sender_impl.cc
+++ b/media/cast/transport/cast_transport_sender_impl.cc
@@ -16,12 +16,18 @@ CastTransportSender* CastTransportSender::CreateCastTransportSender(
net::NetLog* net_log,
base::TickClock* clock,
const CastTransportConfig& config,
+ const CastLoggingConfig& logging_config,
const CastTransportStatusCallback& status_callback,
+ const BulkRawEventsCallback& raw_events_callback,
+ base::TimeDelta raw_events_callback_interval,
const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) {
return new CastTransportSenderImpl(net_log,
clock,
config,
+ logging_config,
status_callback,
+ raw_events_callback,
+ raw_events_callback_interval,
transport_task_runner.get(),
NULL);
}
@@ -30,7 +36,10 @@ CastTransportSenderImpl::CastTransportSenderImpl(
net::NetLog* net_log,
base::TickClock* clock,
const CastTransportConfig& config,
+ const CastLoggingConfig& logging_config,
const CastTransportStatusCallback& status_callback,
+ const BulkRawEventsCallback& raw_events_callback,
+ base::TimeDelta raw_events_callback_interval,
const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
PacketSender* external_transport)
: transport_(external_transport ? NULL
@@ -44,15 +53,32 @@ CastTransportSenderImpl::CastTransportSenderImpl(
transport_task_runner),
rtcp_builder_(&pacer_),
audio_sender_(config, clock, transport_task_runner, &pacer_),
- video_sender_(config, clock, transport_task_runner, &pacer_) {
+ video_sender_(config, clock, transport_task_runner, &pacer_),
+ logging_(transport_task_runner, logging_config),
+ raw_events_callback_(raw_events_callback) {
if (audio_sender_.initialized() && video_sender_.initialized()) {
status_callback.Run(TRANSPORT_INITIALIZED);
} else {
status_callback.Run(TRANSPORT_UNINITIALIZED);
}
+
+ if (!raw_events_callback_.is_null()) {
+ DCHECK(logging_config.enable_raw_data_collection);
+ DCHECK(raw_events_callback_interval > base::TimeDelta());
+ event_subscriber_.reset(new SimpleEventSubscriber);
+ logging_.AddRawEventSubscriber(event_subscriber_.get());
+ raw_events_timer_.Start(
+ FROM_HERE,
+ raw_events_callback_interval,
+ this,
+ &CastTransportSenderImpl::SendRawEvents);
+ }
}
-CastTransportSenderImpl::~CastTransportSenderImpl() {}
+CastTransportSenderImpl::~CastTransportSenderImpl() {
+ if (event_subscriber_.get())
+ logging_.RemoveRawEventSubscriber(event_subscriber_.get());
+}
void CastTransportSenderImpl::SetPacketReceiver(
const PacketReceiverCallback& packet_receiver) {
@@ -102,6 +128,14 @@ void CastTransportSenderImpl::SubscribeVideoRtpStatsCallback(
video_sender_.SubscribeVideoRtpStatsCallback(callback);
}
+void CastTransportSenderImpl::SendRawEvents() {
+ DCHECK(event_subscriber_.get());
+ DCHECK(!raw_events_callback_.is_null());
+ std::vector<PacketEvent> packet_events;
+ event_subscriber_->GetPacketEventsAndReset(&packet_events);
+ raw_events_callback_.Run(packet_events);
+}
+
} // namespace transport
} // namespace cast
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698