Index: media/cast/sender/frame_sender.cc |
diff --git a/media/cast/sender/frame_sender.cc b/media/cast/sender/frame_sender.cc |
index 8098d78f173cc7b95c9c6d0d78ec4b0ffd97d88d..0cc66e52679fb973731db3920470480a4fcc6875 100644 |
--- a/media/cast/sender/frame_sender.cc |
+++ b/media/cast/sender/frame_sender.cc |
@@ -10,6 +10,7 @@ |
#include <vector> |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/numerics/safe_conversions.h" |
#include "base/trace_event/trace_event.h" |
#include "media/cast/constants.h" |
@@ -53,32 +54,27 @@ void FrameSender::RtcpClient::OnReceivedPli() { |
} |
FrameSender::FrameSender(scoped_refptr<CastEnvironment> cast_environment, |
- bool is_audio, |
CastTransport* const transport_sender, |
- int rtp_timebase, |
- uint32_t ssrc, |
- double max_frame_rate, |
- base::TimeDelta min_playout_delay, |
- base::TimeDelta max_playout_delay, |
- base::TimeDelta animated_playout_delay, |
+ const FrameSenderConfig& config, |
CongestionControl* congestion_control) |
: cast_environment_(cast_environment), |
transport_sender_(transport_sender), |
- ssrc_(ssrc), |
- min_playout_delay_(min_playout_delay.is_zero() ? max_playout_delay |
- : min_playout_delay), |
- max_playout_delay_(max_playout_delay), |
- animated_playout_delay_(animated_playout_delay.is_zero() |
- ? max_playout_delay |
- : animated_playout_delay), |
+ ssrc_(config.sender_ssrc), |
+ min_playout_delay_(config.min_playout_delay.is_zero() |
+ ? config.max_playout_delay |
+ : config.min_playout_delay), |
+ max_playout_delay_(config.max_playout_delay), |
+ animated_playout_delay_(config.animated_playout_delay.is_zero() |
+ ? config.max_playout_delay |
+ : config.animated_playout_delay), |
send_target_playout_delay_(false), |
- max_frame_rate_(max_frame_rate), |
+ max_frame_rate_(config.max_frame_rate), |
num_aggressive_rtcp_reports_sent_(0), |
duplicate_ack_counter_(0), |
congestion_control_(congestion_control), |
picture_lost_at_receiver_(false), |
- rtp_timebase_(rtp_timebase), |
- is_audio_(is_audio), |
+ rtp_timebase_(config.rtp_timebase), |
+ is_audio_(config.rtp_payload_type <= RtpPayloadType::AUDIO_LAST), |
weak_factory_(this) { |
DCHECK(transport_sender_); |
DCHECK_GT(rtp_timebase_, 0); |
@@ -87,10 +83,21 @@ FrameSender::FrameSender(scoped_refptr<CastEnvironment> cast_environment, |
// case today. |
VLOG(1) << SENDER_SSRC << "min latency " |
<< min_playout_delay_.InMilliseconds() << "max latency " |
- << max_playout_delay.InMilliseconds() << "animated latency " |
- << animated_playout_delay.InMilliseconds(); |
+ << max_playout_delay_.InMilliseconds() << "animated latency " |
+ << animated_playout_delay_.InMilliseconds(); |
SetTargetPlayoutDelay(animated_playout_delay_); |
send_target_playout_delay_ = false; |
+ |
+ CastTransportRtpConfig transport_config; |
+ transport_config.ssrc = config.sender_ssrc; |
+ transport_config.feedback_ssrc = config.receiver_ssrc; |
+ transport_config.rtp_payload_type = config.rtp_payload_type; |
+ transport_config.aes_key = config.aes_key; |
+ transport_config.aes_iv_mask = config.aes_iv_mask; |
+ |
+ transport_sender->InitializeStream( |
+ transport_config, |
+ base::MakeUnique<FrameSender::RtcpClient>(weak_factory_.GetWeakPtr())); |
} |
FrameSender::~FrameSender() { |