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

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: Created 6 years, 9 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 9975e3a1665eda1be4aa339abdc22c12023b2319..18d6d1c799226a5988f1b4d0e91f11ca8be9bc25 100644
--- a/media/cast/transport/cast_transport_sender_impl.cc
+++ b/media/cast/transport/cast_transport_sender_impl.cc
@@ -17,14 +17,20 @@ scoped_ptr<CastTransportSender> CastTransportSender::Create(
base::TickClock* clock,
const net::IPEndPoint& local_end_point,
const net::IPEndPoint& remote_end_point,
+ 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 scoped_ptr<CastTransportSender>(
new CastTransportSenderImpl(net_log,
clock,
local_end_point,
remote_end_point,
+ logging_config,
status_callback,
+ raw_events_callback,
+ raw_events_callback_interval,
transport_task_runner.get(),
NULL));
}
@@ -34,7 +40,10 @@ CastTransportSenderImpl::CastTransportSenderImpl(
base::TickClock* clock,
const net::IPEndPoint& local_end_point,
const net::IPEndPoint& remote_end_point,
+ 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)
: clock_(clock),
@@ -46,17 +55,35 @@ CastTransportSenderImpl::CastTransportSenderImpl(
local_end_point,
remote_end_point,
status_callback)),
+ logging_(transport_task_runner, logging_config),
pacer_(clock,
+ &logging_,
external_transport ? external_transport : transport_.get(),
transport_task_runner),
- rtcp_builder_(&pacer_) {}
+ rtcp_builder_(&pacer_),
+ raw_events_callback_(raw_events_callback) {
+ 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::InitializeAudio(
const CastTransportAudioConfig& config) {
+ pacer_.InitializeAudio(config);
audio_sender_.reset(new TransportAudioSender(
- config, clock_, transport_task_runner_, &pacer_));
+ config, clock_, &logging_, transport_task_runner_, &pacer_));
if (audio_sender_->initialized())
status_callback_.Run(TRANSPORT_AUDIO_INITIALIZED);
else
@@ -65,8 +92,9 @@ void CastTransportSenderImpl::InitializeAudio(
void CastTransportSenderImpl::InitializeVideo(
const CastTransportVideoConfig& config) {
+ pacer_.InitializeVideo(config);
video_sender_.reset(new TransportVideoSender(
- config, clock_, transport_task_runner_, &pacer_));
+ config, clock_, &logging_, transport_task_runner_, &pacer_));
if (video_sender_->initialized())
status_callback_.Run(TRANSPORT_VIDEO_INITIALIZED);
else
@@ -127,6 +155,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
« no previous file with comments | « media/cast/transport/cast_transport_sender_impl.h ('k') | media/cast/transport/cast_transport_sender_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698