| Index: media/cast/net/cast_transport_sender_impl.cc
|
| diff --git a/media/cast/net/cast_transport_sender_impl.cc b/media/cast/net/cast_transport_sender_impl.cc
|
| index 6c746f485bf4806be73bbf1c17e6a4927d2937b0..390180f131e907a66dd80ce592b324ac5ea5af91 100644
|
| --- a/media/cast/net/cast_transport_sender_impl.cc
|
| +++ b/media/cast/net/cast_transport_sender_impl.cc
|
| @@ -9,12 +9,22 @@
|
| #include "media/cast/net/cast_transport_config.h"
|
| #include "media/cast/net/cast_transport_defines.h"
|
| #include "media/cast/net/udp_transport.h"
|
| +#include "net/base/net_errors.h"
|
| #include "net/base/net_util.h"
|
|
|
| namespace media {
|
| namespace cast {
|
|
|
| namespace {
|
| +
|
| +// See header file for what these mean.
|
| +const char kOptionPacerTargetBurstSize[] = "pacer_target_burst_size";
|
| +const char kOptionPacerMaxBurstSize[] = "pacer_max_burst_size";
|
| +const char kOptionSendBufferMinSize[] = "send_buffer_min_size";
|
| +const char kOptionDscp[] = "DSCP";
|
| +const char kOptionWifiDisableScan[] = "disable_wifi_scan";
|
| +const char kOptionWifiMediaStreamingMode[] = "media_streaming_mode";
|
| +
|
| int LookupOptionWithDefault(const base::DictionaryValue& options,
|
| const std::string& path,
|
| int default_value) {
|
| @@ -26,6 +36,17 @@ int LookupOptionWithDefault(const base::DictionaryValue& options,
|
| }
|
| };
|
|
|
| +int32 GetTransportSendBufferSize(const base::DictionaryValue& options) {
|
| + // Socket send buffer size needs to be at least greater than one burst
|
| + // size.
|
| + int32 max_burst_size =
|
| + LookupOptionWithDefault(options, kOptionPacerMaxBurstSize,
|
| + kMaxBurstSize) * kMaxIpPacketSize;
|
| + int32 min_send_buffer_size =
|
| + LookupOptionWithDefault(options, kOptionSendBufferMinSize, 0);
|
| + return std::max(max_burst_size, min_send_buffer_size);
|
| +}
|
| +
|
| } // namespace
|
|
|
| scoped_ptr<CastTransportSender> CastTransportSender::Create(
|
| @@ -66,17 +87,20 @@ CastTransportSenderImpl::CastTransportSenderImpl(
|
| : clock_(clock),
|
| status_callback_(status_callback),
|
| transport_task_runner_(transport_task_runner),
|
| - transport_(external_transport ? NULL
|
| - : new UdpTransport(net_log,
|
| - transport_task_runner,
|
| - net::IPEndPoint(),
|
| - remote_end_point,
|
| - status_callback)),
|
| - pacer_(LookupOptionWithDefault(*options.get(),
|
| - "pacer_target_burst_size",
|
| + transport_(
|
| + external_transport ?
|
| + NULL :
|
| + new UdpTransport(net_log,
|
| + transport_task_runner,
|
| + net::IPEndPoint(),
|
| + remote_end_point,
|
| + GetTransportSendBufferSize(*options),
|
| + status_callback)),
|
| + pacer_(LookupOptionWithDefault(*options,
|
| + kOptionPacerTargetBurstSize,
|
| kTargetBurstSize),
|
| - LookupOptionWithDefault(*options.get(),
|
| - "pacer_max_burst_size",
|
| + LookupOptionWithDefault(*options,
|
| + kOptionPacerMaxBurstSize,
|
| kMaxBurstSize),
|
| clock,
|
| &logging_,
|
| @@ -98,7 +122,7 @@ CastTransportSenderImpl::CastTransportSenderImpl(
|
| raw_events_callback_interval);
|
| }
|
| if (transport_) {
|
| - if (options->HasKey("DSCP")) {
|
| + if (options->HasKey(kOptionDscp)) {
|
| // The default DSCP value for cast is AF41. Which gives it a higher
|
| // priority over other traffic.
|
| transport_->SetDscp(net::DSCP_AF41);
|
| @@ -107,10 +131,10 @@ CastTransportSenderImpl::CastTransportSenderImpl(
|
| base::Bind(&CastTransportSenderImpl::OnReceivedPacket,
|
| weak_factory_.GetWeakPtr()));
|
| int wifi_options = 0;
|
| - if (options->HasKey("disable_wifi_scan")) {
|
| + if (options->HasKey(kOptionWifiDisableScan)) {
|
| wifi_options |= net::WIFI_OPTIONS_DISABLE_SCAN;
|
| }
|
| - if (options->HasKey("media_streaming_mode")) {
|
| + if (options->HasKey(kOptionWifiMediaStreamingMode)) {
|
| wifi_options |= net::WIFI_OPTIONS_MEDIA_STREAMING_MODE;
|
| }
|
| if (wifi_options) {
|
|
|