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

Side by Side Diff: media/cast/net/cast_transport_sender_impl.cc

Issue 551883004: Cast: Let the extension control if DSCP is on or off. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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/net/cast_transport_sender_impl.h" 5 #include "media/cast/net/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/net/cast_transport_config.h" 8 #include "media/cast/net/cast_transport_config.h"
9 #include "media/cast/net/cast_transport_defines.h" 9 #include "media/cast/net/cast_transport_defines.h"
10 #include "media/cast/net/udp_transport.h" 10 #include "media/cast/net/udp_transport.h"
11 #include "net/base/net_util.h" 11 #include "net/base/net_util.h"
12 12
13 namespace media { 13 namespace media {
14 namespace cast { 14 namespace cast {
15 15
16 scoped_ptr<CastTransportSender> CastTransportSender::Create( 16 scoped_ptr<CastTransportSender> CastTransportSender::Create(
17 net::NetLog* net_log, 17 net::NetLog* net_log,
18 base::TickClock* clock, 18 base::TickClock* clock,
19 const net::IPEndPoint& remote_end_point, 19 const net::IPEndPoint& remote_end_point,
20 const std::string& options,
20 const CastTransportStatusCallback& status_callback, 21 const CastTransportStatusCallback& status_callback,
21 const BulkRawEventsCallback& raw_events_callback, 22 const BulkRawEventsCallback& raw_events_callback,
22 base::TimeDelta raw_events_callback_interval, 23 base::TimeDelta raw_events_callback_interval,
23 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) { 24 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) {
24 return scoped_ptr<CastTransportSender>( 25 return scoped_ptr<CastTransportSender>(
25 new CastTransportSenderImpl(net_log, 26 new CastTransportSenderImpl(net_log,
26 clock, 27 clock,
27 remote_end_point, 28 remote_end_point,
29 options,
28 status_callback, 30 status_callback,
29 raw_events_callback, 31 raw_events_callback,
30 raw_events_callback_interval, 32 raw_events_callback_interval,
31 transport_task_runner.get(), 33 transport_task_runner.get(),
32 NULL)); 34 NULL));
33 } 35 }
34 36
35 PacketReceiverCallback CastTransportSender::PacketReceiverForTesting() { 37 PacketReceiverCallback CastTransportSender::PacketReceiverForTesting() {
36 return PacketReceiverCallback(); 38 return PacketReceiverCallback();
37 } 39 }
38 40
39 CastTransportSenderImpl::CastTransportSenderImpl( 41 CastTransportSenderImpl::CastTransportSenderImpl(
40 net::NetLog* net_log, 42 net::NetLog* net_log,
41 base::TickClock* clock, 43 base::TickClock* clock,
42 const net::IPEndPoint& remote_end_point, 44 const net::IPEndPoint& remote_end_point,
45 const std::string& options,
43 const CastTransportStatusCallback& status_callback, 46 const CastTransportStatusCallback& status_callback,
44 const BulkRawEventsCallback& raw_events_callback, 47 const BulkRawEventsCallback& raw_events_callback,
45 base::TimeDelta raw_events_callback_interval, 48 base::TimeDelta raw_events_callback_interval,
46 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner, 49 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
47 PacketSender* external_transport) 50 PacketSender* external_transport)
48 : clock_(clock), 51 : clock_(clock),
49 status_callback_(status_callback), 52 status_callback_(status_callback),
50 transport_task_runner_(transport_task_runner), 53 transport_task_runner_(transport_task_runner),
51 transport_(external_transport ? NULL 54 transport_(external_transport ? NULL
52 : new UdpTransport(net_log, 55 : new UdpTransport(net_log,
(...skipping 14 matching lines...) Expand all
67 DCHECK(raw_events_callback_interval > base::TimeDelta()); 70 DCHECK(raw_events_callback_interval > base::TimeDelta());
68 event_subscriber_.reset(new SimpleEventSubscriber); 71 event_subscriber_.reset(new SimpleEventSubscriber);
69 logging_.AddRawEventSubscriber(event_subscriber_.get()); 72 logging_.AddRawEventSubscriber(event_subscriber_.get());
70 transport_task_runner->PostDelayedTask( 73 transport_task_runner->PostDelayedTask(
71 FROM_HERE, 74 FROM_HERE,
72 base::Bind(&CastTransportSenderImpl::SendRawEvents, 75 base::Bind(&CastTransportSenderImpl::SendRawEvents,
73 weak_factory_.GetWeakPtr()), 76 weak_factory_.GetWeakPtr()),
74 raw_events_callback_interval); 77 raw_events_callback_interval);
75 } 78 }
76 if (transport_) { 79 if (transport_) {
77 // The default DSCP value for cast is AF41. Which gives it a higher 80 if (options.find(":DSCP:") != std::string::npos) {
78 // priority over other traffic. 81 // The default DSCP value for cast is AF41. Which gives it a higher
79 transport_->SetDscp(net::DSCP_AF41); 82 // priority over other traffic.
83 transport_->SetDscp(net::DSCP_AF41);
84 }
80 transport_->StartReceiving( 85 transport_->StartReceiving(
81 base::Bind(&CastTransportSenderImpl::OnReceivedPacket, 86 base::Bind(&CastTransportSenderImpl::OnReceivedPacket,
82 weak_factory_.GetWeakPtr())); 87 weak_factory_.GetWeakPtr()));
83 } 88 }
84 } 89 }
85 90
86 CastTransportSenderImpl::~CastTransportSenderImpl() { 91 CastTransportSenderImpl::~CastTransportSenderImpl() {
87 if (event_subscriber_.get()) 92 if (event_subscriber_.get())
88 logging_.RemoveRawEventSubscriber(event_subscriber_.get()); 93 logging_.RemoveRawEventSubscriber(event_subscriber_.get());
89 } 94 }
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 // 2. Specifies a deduplication window. For video this would be the most 360 // 2. Specifies a deduplication window. For video this would be the most
356 // recent RTT. For audio there is no deduplication. 361 // recent RTT. For audio there is no deduplication.
357 ResendPackets(ssrc, 362 ResendPackets(ssrc,
358 cast_message.missing_frames_and_packets, 363 cast_message.missing_frames_and_packets,
359 true, 364 true,
360 dedup_info); 365 dedup_info);
361 } 366 }
362 367
363 } // namespace cast 368 } // namespace cast
364 } // namespace media 369 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698