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

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: Change 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 base::TickClock* clock, 16 base::TickClock* clock,
17 const CastTransportConfig& config, 17 const CastTransportConfig& config,
18 const CastLoggingConfig& logging_config,
18 const CastTransportStatusCallback& status_callback, 19 const CastTransportStatusCallback& status_callback,
20 const BulkRawEventsCallback& raw_events_callback,
19 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) { 21 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) {
20 return new CastTransportSenderImpl( 22 return new CastTransportSenderImpl(clock,
21 clock, config, status_callback, transport_task_runner.get(), NULL); 23 config,
24 logging_config,
25 status_callback,
26 raw_events_callback,
27 transport_task_runner.get(),
28 NULL);
22 } 29 }
23 30
24 CastTransportSenderImpl::CastTransportSenderImpl( 31 CastTransportSenderImpl::CastTransportSenderImpl(
25 base::TickClock* clock, 32 base::TickClock* clock,
26 const CastTransportConfig& config, 33 const CastTransportConfig& config,
34 const CastLoggingConfig& logging_config,
27 const CastTransportStatusCallback& status_callback, 35 const CastTransportStatusCallback& status_callback,
36 const BulkRawEventsCallback& raw_events_callback,
28 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner, 37 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
29 PacketSender* external_transport) 38 PacketSender* external_transport)
30 : transport_(external_transport ? NULL 39 : transport_(external_transport ? NULL
31 : new UdpTransport(transport_task_runner, 40 : new UdpTransport(transport_task_runner,
32 config.local_endpoint, 41 config.local_endpoint,
33 config.receiver_endpoint, 42 config.receiver_endpoint,
34 status_callback)), 43 status_callback)),
35 pacer_(clock, 44 pacer_(clock,
36 external_transport ? external_transport : transport_.get(), 45 external_transport ? external_transport : transport_.get(),
37 transport_task_runner), 46 transport_task_runner),
38 rtcp_builder_(&pacer_), 47 rtcp_builder_(&pacer_),
39 audio_sender_(config, clock, transport_task_runner, &pacer_), 48 audio_sender_(config, clock, transport_task_runner, &pacer_),
40 video_sender_(config, clock, transport_task_runner, &pacer_) { 49 video_sender_(config, clock, transport_task_runner, &pacer_),
50 logging_(transport_task_runner, logging_config),
51 raw_events_callback_(raw_events_callback) {
41 if (audio_sender_.initialized() && video_sender_.initialized()) { 52 if (audio_sender_.initialized() && video_sender_.initialized()) {
42 status_callback.Run(TRANSPORT_INITIALIZED); 53 status_callback.Run(TRANSPORT_INITIALIZED);
43 } else { 54 } else {
44 status_callback.Run(TRANSPORT_UNINITIALIZED); 55 status_callback.Run(TRANSPORT_UNINITIALIZED);
45 } 56 }
57
58 if (config.enable_raw_event_logging) {
59 event_subscriber_.reset(new SimpleEventSubscriber);
60 logging_.AddRawEventSubscriber(event_subscriber_.get());
61 raw_events_timer_.Start(
62 FROM_HERE,
63 base::TimeDelta::FromSeconds(kSendRawEventsIntervalSecs),
64 this,
65 &CastTransportSenderImpl::SendRawEvents);
66 }
46 } 67 }
47 68
48 CastTransportSenderImpl::~CastTransportSenderImpl() {} 69 CastTransportSenderImpl::~CastTransportSenderImpl() {
70 if (event_subscriber_.get())
71 logging_.RemoveRawEventSubscriber(event_subscriber_.get());
72 }
49 73
50 void CastTransportSenderImpl::SetPacketReceiver( 74 void CastTransportSenderImpl::SetPacketReceiver(
51 const PacketReceiverCallback& packet_receiver) { 75 const PacketReceiverCallback& packet_receiver) {
52 transport_->StartReceiving(packet_receiver); 76 transport_->StartReceiving(packet_receiver);
53 } 77 }
54 78
55 void CastTransportSenderImpl::InsertCodedAudioFrame( 79 void CastTransportSenderImpl::InsertCodedAudioFrame(
56 const EncodedAudioFrame* audio_frame, 80 const EncodedAudioFrame* audio_frame,
57 const base::TimeTicks& recorded_time) { 81 const base::TimeTicks& recorded_time) {
58 audio_sender_.InsertCodedAudioFrame(audio_frame, recorded_time); 82 audio_sender_.InsertCodedAudioFrame(audio_frame, recorded_time);
(...skipping 29 matching lines...) Expand all
88 void CastTransportSenderImpl::SubscribeAudioRtpStatsCallback( 112 void CastTransportSenderImpl::SubscribeAudioRtpStatsCallback(
89 const CastTransportRtpStatistics& callback) { 113 const CastTransportRtpStatistics& callback) {
90 audio_sender_.SubscribeAudioRtpStatsCallback(callback); 114 audio_sender_.SubscribeAudioRtpStatsCallback(callback);
91 } 115 }
92 116
93 void CastTransportSenderImpl::SubscribeVideoRtpStatsCallback( 117 void CastTransportSenderImpl::SubscribeVideoRtpStatsCallback(
94 const CastTransportRtpStatistics& callback) { 118 const CastTransportRtpStatistics& callback) {
95 video_sender_.SubscribeVideoRtpStatsCallback(callback); 119 video_sender_.SubscribeVideoRtpStatsCallback(callback);
96 } 120 }
97 121
122 void CastTransportSenderImpl::SendRawEvents() {
123 DCHECK(event_subscriber_.get());
124 std::vector<PacketEvent> packet_events;
125 event_subscriber_->GetPacketEventsAndReset(&packet_events);
126 raw_events_callback_.Run(packet_events);
127 }
128
98 } // namespace transport 129 } // namespace transport
99 } // namespace cast 130 } // namespace cast
100 } // namespace media 131 } // namespace media
OLDNEW
« chrome/common/cast_messages.h ('K') | « media/cast/transport/cast_transport_sender_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698