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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/cast/transport/cast_transport_sender_impl.h" 5 #include "media/cast/transport/cast_transport_sender_impl.h"
6 6
7 #include "base/single_thread_task_runner.h" 7 #include "base/single_thread_task_runner.h"
8 #include "media/cast/transport/cast_transport_config.h" 8 #include "media/cast/transport/cast_transport_config.h"
9 #include "media/cast/transport/cast_transport_defines.h" 9 #include "media/cast/transport/cast_transport_defines.h"
10 10
11 namespace media { 11 namespace media {
12 namespace cast { 12 namespace cast {
13 namespace transport { 13 namespace transport {
14 14
15 scoped_ptr<CastTransportSender> CastTransportSender::Create( 15 scoped_ptr<CastTransportSender> CastTransportSender::Create(
16 net::NetLog* net_log, 16 net::NetLog* net_log,
17 base::TickClock* clock, 17 base::TickClock* clock,
18 const net::IPEndPoint& local_end_point, 18 const net::IPEndPoint& local_end_point,
19 const net::IPEndPoint& remote_end_point, 19 const net::IPEndPoint& remote_end_point,
20 const CastLoggingConfig& logging_config,
20 const CastTransportStatusCallback& status_callback, 21 const CastTransportStatusCallback& status_callback,
22 const BulkRawEventsCallback& raw_events_callback,
23 base::TimeDelta raw_events_callback_interval,
21 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) { 24 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) {
22 return scoped_ptr<CastTransportSender>( 25 return scoped_ptr<CastTransportSender>(
23 new CastTransportSenderImpl(net_log, 26 new CastTransportSenderImpl(net_log,
24 clock, 27 clock,
25 local_end_point, 28 local_end_point,
26 remote_end_point, 29 remote_end_point,
30 logging_config,
27 status_callback, 31 status_callback,
32 raw_events_callback,
33 raw_events_callback_interval,
28 transport_task_runner.get(), 34 transport_task_runner.get(),
29 NULL)); 35 NULL));
30 } 36 }
31 37
32 CastTransportSenderImpl::CastTransportSenderImpl( 38 CastTransportSenderImpl::CastTransportSenderImpl(
33 net::NetLog* net_log, 39 net::NetLog* net_log,
34 base::TickClock* clock, 40 base::TickClock* clock,
35 const net::IPEndPoint& local_end_point, 41 const net::IPEndPoint& local_end_point,
36 const net::IPEndPoint& remote_end_point, 42 const net::IPEndPoint& remote_end_point,
43 const CastLoggingConfig& logging_config,
37 const CastTransportStatusCallback& status_callback, 44 const CastTransportStatusCallback& status_callback,
45 const BulkRawEventsCallback& raw_events_callback,
46 base::TimeDelta raw_events_callback_interval,
38 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner, 47 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
39 PacketSender* external_transport) 48 PacketSender* external_transport)
40 : clock_(clock), 49 : clock_(clock),
41 status_callback_(status_callback), 50 status_callback_(status_callback),
42 transport_task_runner_(transport_task_runner), 51 transport_task_runner_(transport_task_runner),
43 transport_(external_transport ? NULL 52 transport_(external_transport ? NULL
44 : new UdpTransport(net_log, 53 : new UdpTransport(net_log,
45 transport_task_runner, 54 transport_task_runner,
46 local_end_point, 55 local_end_point,
47 remote_end_point, 56 remote_end_point,
48 status_callback)), 57 status_callback)),
58 logging_(transport_task_runner, logging_config),
49 pacer_(clock, 59 pacer_(clock,
60 &logging_,
50 external_transport ? external_transport : transport_.get(), 61 external_transport ? external_transport : transport_.get(),
51 transport_task_runner), 62 transport_task_runner),
52 rtcp_builder_(&pacer_) {} 63 rtcp_builder_(&pacer_),
64 raw_events_callback_(raw_events_callback) {
65 if (!raw_events_callback_.is_null()) {
66 DCHECK(logging_config.enable_raw_data_collection);
67 DCHECK(raw_events_callback_interval > base::TimeDelta());
68 event_subscriber_.reset(new SimpleEventSubscriber);
69 logging_.AddRawEventSubscriber(event_subscriber_.get());
70 raw_events_timer_.Start(FROM_HERE,
71 raw_events_callback_interval,
72 this,
73 &CastTransportSenderImpl::SendRawEvents);
74 }
75 }
53 76
54 CastTransportSenderImpl::~CastTransportSenderImpl() {} 77 CastTransportSenderImpl::~CastTransportSenderImpl() {
78 if (event_subscriber_.get())
79 logging_.RemoveRawEventSubscriber(event_subscriber_.get());
80 }
55 81
56 void CastTransportSenderImpl::InitializeAudio( 82 void CastTransportSenderImpl::InitializeAudio(
57 const CastTransportAudioConfig& config) { 83 const CastTransportAudioConfig& config) {
84 pacer_.InitializeAudio(config);
58 audio_sender_.reset(new TransportAudioSender( 85 audio_sender_.reset(new TransportAudioSender(
59 config, clock_, transport_task_runner_, &pacer_)); 86 config, clock_, &logging_, transport_task_runner_, &pacer_));
60 if (audio_sender_->initialized()) 87 if (audio_sender_->initialized())
61 status_callback_.Run(TRANSPORT_AUDIO_INITIALIZED); 88 status_callback_.Run(TRANSPORT_AUDIO_INITIALIZED);
62 else 89 else
63 status_callback_.Run(TRANSPORT_AUDIO_UNINITIALIZED); 90 status_callback_.Run(TRANSPORT_AUDIO_UNINITIALIZED);
64 } 91 }
65 92
66 void CastTransportSenderImpl::InitializeVideo( 93 void CastTransportSenderImpl::InitializeVideo(
67 const CastTransportVideoConfig& config) { 94 const CastTransportVideoConfig& config) {
95 pacer_.InitializeVideo(config);
68 video_sender_.reset(new TransportVideoSender( 96 video_sender_.reset(new TransportVideoSender(
69 config, clock_, transport_task_runner_, &pacer_)); 97 config, clock_, &logging_, transport_task_runner_, &pacer_));
70 if (video_sender_->initialized()) 98 if (video_sender_->initialized())
71 status_callback_.Run(TRANSPORT_VIDEO_INITIALIZED); 99 status_callback_.Run(TRANSPORT_VIDEO_INITIALIZED);
72 else 100 else
73 status_callback_.Run(TRANSPORT_VIDEO_UNINITIALIZED); 101 status_callback_.Run(TRANSPORT_VIDEO_UNINITIALIZED);
74 } 102 }
75 103
76 void CastTransportSenderImpl::SetPacketReceiver( 104 void CastTransportSenderImpl::SetPacketReceiver(
77 const PacketReceiverCallback& packet_receiver) { 105 const PacketReceiverCallback& packet_receiver) {
78 transport_->StartReceiving(packet_receiver); 106 transport_->StartReceiving(packet_receiver);
79 } 107 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 DCHECK(audio_sender_) << "Audio sender uninitialized"; 148 DCHECK(audio_sender_) << "Audio sender uninitialized";
121 audio_sender_->SubscribeAudioRtpStatsCallback(callback); 149 audio_sender_->SubscribeAudioRtpStatsCallback(callback);
122 } 150 }
123 151
124 void CastTransportSenderImpl::SubscribeVideoRtpStatsCallback( 152 void CastTransportSenderImpl::SubscribeVideoRtpStatsCallback(
125 const CastTransportRtpStatistics& callback) { 153 const CastTransportRtpStatistics& callback) {
126 DCHECK(video_sender_) << "Audio sender uninitialized"; 154 DCHECK(video_sender_) << "Audio sender uninitialized";
127 video_sender_->SubscribeVideoRtpStatsCallback(callback); 155 video_sender_->SubscribeVideoRtpStatsCallback(callback);
128 } 156 }
129 157
158 void CastTransportSenderImpl::SendRawEvents() {
159 DCHECK(event_subscriber_.get());
160 DCHECK(!raw_events_callback_.is_null());
161 std::vector<PacketEvent> packet_events;
162 event_subscriber_->GetPacketEventsAndReset(&packet_events);
163 raw_events_callback_.Run(packet_events);
164 }
165
130 } // namespace transport 166 } // namespace transport
131 } // namespace cast 167 } // namespace cast
132 } // namespace media 168 } // namespace media
OLDNEW
« 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