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

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: Now uses DictionaryValue 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 "base/values.h"
8 #include "media/cast/net/cast_transport_config.h" 9 #include "media/cast/net/cast_transport_config.h"
9 #include "media/cast/net/cast_transport_defines.h" 10 #include "media/cast/net/cast_transport_defines.h"
10 #include "media/cast/net/udp_transport.h" 11 #include "media/cast/net/udp_transport.h"
11 #include "net/base/net_util.h" 12 #include "net/base/net_util.h"
12 13
13 namespace media { 14 namespace media {
14 namespace cast { 15 namespace cast {
15 16
16 scoped_ptr<CastTransportSender> CastTransportSender::Create( 17 scoped_ptr<CastTransportSender> CastTransportSender::Create(
17 net::NetLog* net_log, 18 net::NetLog* net_log,
18 base::TickClock* clock, 19 base::TickClock* clock,
19 const net::IPEndPoint& remote_end_point, 20 const net::IPEndPoint& remote_end_point,
21 scoped_ptr<base::DictionaryValue> options,
20 const CastTransportStatusCallback& status_callback, 22 const CastTransportStatusCallback& status_callback,
21 const BulkRawEventsCallback& raw_events_callback, 23 const BulkRawEventsCallback& raw_events_callback,
22 base::TimeDelta raw_events_callback_interval, 24 base::TimeDelta raw_events_callback_interval,
23 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) { 25 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) {
24 return scoped_ptr<CastTransportSender>( 26 return scoped_ptr<CastTransportSender>(
25 new CastTransportSenderImpl(net_log, 27 new CastTransportSenderImpl(net_log,
26 clock, 28 clock,
27 remote_end_point, 29 remote_end_point,
30 options.Pass(),
28 status_callback, 31 status_callback,
29 raw_events_callback, 32 raw_events_callback,
30 raw_events_callback_interval, 33 raw_events_callback_interval,
31 transport_task_runner.get(), 34 transport_task_runner.get(),
32 NULL)); 35 NULL));
33 } 36 }
34 37
35 PacketReceiverCallback CastTransportSender::PacketReceiverForTesting() { 38 PacketReceiverCallback CastTransportSender::PacketReceiverForTesting() {
36 return PacketReceiverCallback(); 39 return PacketReceiverCallback();
37 } 40 }
38 41
39 CastTransportSenderImpl::CastTransportSenderImpl( 42 CastTransportSenderImpl::CastTransportSenderImpl(
40 net::NetLog* net_log, 43 net::NetLog* net_log,
41 base::TickClock* clock, 44 base::TickClock* clock,
42 const net::IPEndPoint& remote_end_point, 45 const net::IPEndPoint& remote_end_point,
46 scoped_ptr<base::DictionaryValue> options,
43 const CastTransportStatusCallback& status_callback, 47 const CastTransportStatusCallback& status_callback,
44 const BulkRawEventsCallback& raw_events_callback, 48 const BulkRawEventsCallback& raw_events_callback,
45 base::TimeDelta raw_events_callback_interval, 49 base::TimeDelta raw_events_callback_interval,
46 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner, 50 const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
47 PacketSender* external_transport) 51 PacketSender* external_transport)
48 : clock_(clock), 52 : clock_(clock),
49 status_callback_(status_callback), 53 status_callback_(status_callback),
50 transport_task_runner_(transport_task_runner), 54 transport_task_runner_(transport_task_runner),
51 transport_(external_transport ? NULL 55 transport_(external_transport ? NULL
52 : new UdpTransport(net_log, 56 : new UdpTransport(net_log,
(...skipping 14 matching lines...) Expand all
67 DCHECK(raw_events_callback_interval > base::TimeDelta()); 71 DCHECK(raw_events_callback_interval > base::TimeDelta());
68 event_subscriber_.reset(new SimpleEventSubscriber); 72 event_subscriber_.reset(new SimpleEventSubscriber);
69 logging_.AddRawEventSubscriber(event_subscriber_.get()); 73 logging_.AddRawEventSubscriber(event_subscriber_.get());
70 transport_task_runner->PostDelayedTask( 74 transport_task_runner->PostDelayedTask(
71 FROM_HERE, 75 FROM_HERE,
72 base::Bind(&CastTransportSenderImpl::SendRawEvents, 76 base::Bind(&CastTransportSenderImpl::SendRawEvents,
73 weak_factory_.GetWeakPtr()), 77 weak_factory_.GetWeakPtr()),
74 raw_events_callback_interval); 78 raw_events_callback_interval);
75 } 79 }
76 if (transport_) { 80 if (transport_) {
77 // The default DSCP value for cast is AF41. Which gives it a higher 81 if (options->HasKey("DSCP")) {
Alpha Left Google 2014/09/09 20:15:12 I was thinking that we can apply DSCP value from t
hubbe 2014/09/09 20:45:14 Since DSCP is an abbreviation, I think it should b
78 // priority over other traffic. 82 // The default DSCP value for cast is AF41. Which gives it a higher
79 transport_->SetDscp(net::DSCP_AF41); 83 // priority over other traffic.
84 transport_->SetDscp(net::DSCP_AF41);
85 }
80 transport_->StartReceiving( 86 transport_->StartReceiving(
81 base::Bind(&CastTransportSenderImpl::OnReceivedPacket, 87 base::Bind(&CastTransportSenderImpl::OnReceivedPacket,
82 weak_factory_.GetWeakPtr())); 88 weak_factory_.GetWeakPtr()));
83 } 89 }
84 } 90 }
85 91
86 CastTransportSenderImpl::~CastTransportSenderImpl() { 92 CastTransportSenderImpl::~CastTransportSenderImpl() {
87 if (event_subscriber_.get()) 93 if (event_subscriber_.get())
88 logging_.RemoveRawEventSubscriber(event_subscriber_.get()); 94 logging_.RemoveRawEventSubscriber(event_subscriber_.get());
89 } 95 }
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 // 2. Specifies a deduplication window. For video this would be the most 363 // 2. Specifies a deduplication window. For video this would be the most
358 // recent RTT. For audio there is no deduplication. 364 // recent RTT. For audio there is no deduplication.
359 ResendPackets(ssrc, 365 ResendPackets(ssrc,
360 cast_message.missing_frames_and_packets, 366 cast_message.missing_frames_and_packets,
361 true, 367 true,
362 dedup_info); 368 dedup_info);
363 } 369 }
364 370
365 } // namespace cast 371 } // namespace cast
366 } // namespace media 372 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698