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

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: 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 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 CastTransportSender* CastTransportSender::CreateCastTransportSender( 15 CastTransportSender* CastTransportSender::CreateCastTransportSender(
16 net::NetLog* net_log, 16 net::NetLog* net_log,
17 base::TickClock* clock, 17 base::TickClock* clock,
18 const CastTransportConfig& config, 18 const CastTransportConfig& config,
19 const CastLoggingConfig& logging_config,
19 const CastTransportStatusCallback& status_callback, 20 const CastTransportStatusCallback& status_callback,
21 const BulkRawEventsCallback& raw_events_callback,
22 base::TimeDelta raw_events_callback_interval,
20 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) { 23 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) {
21 return new CastTransportSenderImpl(net_log, 24 return new CastTransportSenderImpl(net_log,
22 clock, 25 clock,
23 config, 26 config,
27 logging_config,
24 status_callback, 28 status_callback,
29 raw_events_callback,
30 raw_events_callback_interval,
25 transport_task_runner.get(), 31 transport_task_runner.get(),
26 NULL); 32 NULL);
27 } 33 }
28 34
29 CastTransportSenderImpl::CastTransportSenderImpl( 35 CastTransportSenderImpl::CastTransportSenderImpl(
30 net::NetLog* net_log, 36 net::NetLog* net_log,
31 base::TickClock* clock, 37 base::TickClock* clock,
32 const CastTransportConfig& config, 38 const CastTransportConfig& config,
39 const CastLoggingConfig& logging_config,
33 const CastTransportStatusCallback& status_callback, 40 const CastTransportStatusCallback& status_callback,
41 const BulkRawEventsCallback& raw_events_callback,
42 base::TimeDelta raw_events_callback_interval,
34 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner, 43 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
35 PacketSender* external_transport) 44 PacketSender* external_transport)
36 : transport_(external_transport ? NULL 45 : transport_(external_transport ? NULL
37 : new UdpTransport(net_log, 46 : new UdpTransport(net_log,
38 transport_task_runner, 47 transport_task_runner,
39 config.local_endpoint, 48 config.local_endpoint,
40 config.receiver_endpoint, 49 config.receiver_endpoint,
41 status_callback)), 50 status_callback)),
42 pacer_(clock, 51 pacer_(clock,
43 external_transport ? external_transport : transport_.get(), 52 external_transport ? external_transport : transport_.get(),
44 transport_task_runner), 53 transport_task_runner),
45 rtcp_builder_(&pacer_), 54 rtcp_builder_(&pacer_),
46 audio_sender_(config, clock, transport_task_runner, &pacer_), 55 audio_sender_(config, clock, transport_task_runner, &pacer_),
47 video_sender_(config, clock, transport_task_runner, &pacer_) { 56 video_sender_(config, clock, transport_task_runner, &pacer_),
57 logging_(transport_task_runner, logging_config),
58 raw_events_callback_(raw_events_callback) {
48 if (audio_sender_.initialized() && video_sender_.initialized()) { 59 if (audio_sender_.initialized() && video_sender_.initialized()) {
49 status_callback.Run(TRANSPORT_INITIALIZED); 60 status_callback.Run(TRANSPORT_INITIALIZED);
50 } else { 61 } else {
51 status_callback.Run(TRANSPORT_UNINITIALIZED); 62 status_callback.Run(TRANSPORT_UNINITIALIZED);
52 } 63 }
64
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(
71 FROM_HERE,
72 raw_events_callback_interval,
73 this,
74 &CastTransportSenderImpl::SendRawEvents);
75 }
53 } 76 }
54 77
55 CastTransportSenderImpl::~CastTransportSenderImpl() {} 78 CastTransportSenderImpl::~CastTransportSenderImpl() {
79 if (event_subscriber_.get())
80 logging_.RemoveRawEventSubscriber(event_subscriber_.get());
81 }
56 82
57 void CastTransportSenderImpl::SetPacketReceiver( 83 void CastTransportSenderImpl::SetPacketReceiver(
58 const PacketReceiverCallback& packet_receiver) { 84 const PacketReceiverCallback& packet_receiver) {
59 transport_->StartReceiving(packet_receiver); 85 transport_->StartReceiving(packet_receiver);
60 } 86 }
61 87
62 void CastTransportSenderImpl::InsertCodedAudioFrame( 88 void CastTransportSenderImpl::InsertCodedAudioFrame(
63 const EncodedAudioFrame* audio_frame, 89 const EncodedAudioFrame* audio_frame,
64 const base::TimeTicks& recorded_time) { 90 const base::TimeTicks& recorded_time) {
65 audio_sender_.InsertCodedAudioFrame(audio_frame, recorded_time); 91 audio_sender_.InsertCodedAudioFrame(audio_frame, recorded_time);
(...skipping 29 matching lines...) Expand all
95 void CastTransportSenderImpl::SubscribeAudioRtpStatsCallback( 121 void CastTransportSenderImpl::SubscribeAudioRtpStatsCallback(
96 const CastTransportRtpStatistics& callback) { 122 const CastTransportRtpStatistics& callback) {
97 audio_sender_.SubscribeAudioRtpStatsCallback(callback); 123 audio_sender_.SubscribeAudioRtpStatsCallback(callback);
98 } 124 }
99 125
100 void CastTransportSenderImpl::SubscribeVideoRtpStatsCallback( 126 void CastTransportSenderImpl::SubscribeVideoRtpStatsCallback(
101 const CastTransportRtpStatistics& callback) { 127 const CastTransportRtpStatistics& callback) {
102 video_sender_.SubscribeVideoRtpStatsCallback(callback); 128 video_sender_.SubscribeVideoRtpStatsCallback(callback);
103 } 129 }
104 130
131 void CastTransportSenderImpl::SendRawEvents() {
132 DCHECK(event_subscriber_.get());
133 DCHECK(!raw_events_callback_.is_null());
134 std::vector<PacketEvent> packet_events;
135 event_subscriber_->GetPacketEventsAndReset(&packet_events);
136 raw_events_callback_.Run(packet_events);
137 }
138
105 } // namespace transport 139 } // namespace transport
106 } // namespace cast 140 } // namespace cast
107 } // namespace media 141 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698