| 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 fd7139993c6fc0638e9c17cb02d17643e7b398f6..65043cefa9f1976eaee887adc33c29a4118d3b29 100644
|
| --- a/media/cast/transport/cast_transport_sender_impl.cc
|
| +++ b/media/cast/transport/cast_transport_sender_impl.cc
|
| @@ -16,15 +16,21 @@ CastTransportSender* CastTransportSender::CreateCastTransportSender(
|
| base::TickClock* clock,
|
| const CastTransportConfig& config,
|
| const CastTransportStatusCallback& status_callback,
|
| + const BulkRawEventsCallback& raw_events_callback,
|
| const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) {
|
| - return new CastTransportSenderImpl(
|
| - clock, config, status_callback, transport_task_runner.get(), NULL);
|
| + return new CastTransportSenderImpl(clock,
|
| + config,
|
| + status_callback,
|
| + raw_events_callback,
|
| + transport_task_runner.get(),
|
| + NULL);
|
| }
|
|
|
| CastTransportSenderImpl::CastTransportSenderImpl(
|
| base::TickClock* clock,
|
| const CastTransportConfig& config,
|
| const CastTransportStatusCallback& status_callback,
|
| + const BulkRawEventsCallback& raw_events_callback,
|
| const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
|
| PacketSender* external_transport)
|
| : transport_(external_transport ? NULL
|
| @@ -37,15 +43,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,
|
| + CastLoggingConfig(config.enable_raw_event_logging,
|
| + false, false)),
|
| + 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 (config.enable_raw_event_logging) {
|
| + event_subscriber_.reset(new SimpleEventSubscriber);
|
| + logging_.AddRawEventSubscriber(event_subscriber_.get());
|
| + raw_events_timer_.Start(
|
| + FROM_HERE,
|
| + base::TimeDelta::FromSeconds(kSendRawEventsIntervalSecs),
|
| + this,
|
| + &CastTransportSenderImpl::SendRawEvents);
|
| + }
|
| }
|
|
|
| -CastTransportSenderImpl::~CastTransportSenderImpl() {}
|
| +CastTransportSenderImpl::~CastTransportSenderImpl() {
|
| + if (event_subscriber_.get())
|
| + logging_.RemoveRawEventSubscriber(event_subscriber_.get());
|
| +}
|
|
|
| void CastTransportSenderImpl::SetPacketReceiver(
|
| const PacketReceiverCallback& packet_receiver) {
|
| @@ -95,6 +118,13 @@ void CastTransportSenderImpl::SubscribeVideoRtpStatsCallback(
|
| video_sender_.SubscribeVideoRtpStatsCallback(callback);
|
| }
|
|
|
| +void CastTransportSenderImpl::SendRawEvents() {
|
| + DCHECK(event_subscriber_.get());
|
| + std::vector<PacketEvent> packet_events;
|
| + event_subscriber_->GetPacketEventsAndReset(&packet_events);
|
| + raw_events_callback_.Run(packet_events);
|
| +}
|
| +
|
| } // namespace transport
|
| } // namespace cast
|
| } // namespace media
|
|
|