| 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
|
|
|