| Index: media/cast/receiver/frame_receiver.cc
|
| diff --git a/media/cast/receiver/frame_receiver.cc b/media/cast/receiver/frame_receiver.cc
|
| index 561e19f0b2686590e3e1fcd571e1a96ef0013db6..c1155d0c2b4c4a14c598b56bd4c276598de543ac 100644
|
| --- a/media/cast/receiver/frame_receiver.cc
|
| +++ b/media/cast/receiver/frame_receiver.cc
|
| @@ -23,8 +23,9 @@ FrameReceiver::FrameReceiver(
|
| const scoped_refptr<CastEnvironment>& cast_environment,
|
| const FrameReceiverConfig& config,
|
| EventMediaType event_media_type,
|
| - PacedPacketSender* const packet_sender)
|
| + CastTransportSender* const transport)
|
| : cast_environment_(cast_environment),
|
| + transport_(transport),
|
| packet_parser_(config.incoming_ssrc, config.rtp_payload_type),
|
| stats_(cast_environment->Clock()),
|
| event_media_type_(event_media_type),
|
| @@ -44,13 +45,14 @@ FrameReceiver::FrameReceiver(
|
| RtcpRttCallback(),
|
| RtcpLogMessageCallback(),
|
| cast_environment_->Clock(),
|
| - packet_sender,
|
| + NULL,
|
| config.feedback_ssrc,
|
| config.incoming_ssrc),
|
| is_waiting_for_consecutive_frame_(false),
|
| lip_sync_drift_(ClockDriftSmoother::GetDefaultTimeConstant()),
|
| rtcp_interval_(base::TimeDelta::FromMilliseconds(config.rtcp_interval)),
|
| weak_factory_(this) {
|
| + transport_->AddValidSsrc(config.incoming_ssrc);
|
| DCHECK_GT(config.rtp_max_delay_ms, 0);
|
| DCHECK_GT(config.max_frame_rate, 0);
|
| decryptor_.Initialize(config.aes_key, config.aes_iv_mask);
|
| @@ -100,15 +102,6 @@ bool FrameReceiver::ProcessPacket(scoped_ptr<Packet> packet) {
|
| return true;
|
| }
|
|
|
| -// static
|
| -bool FrameReceiver::ParseSenderSsrc(const uint8* packet,
|
| - size_t length,
|
| - uint32* ssrc) {
|
| - base::BigEndianReader big_endian_reader(
|
| - reinterpret_cast<const char*>(packet), length);
|
| - return big_endian_reader.Skip(8) && big_endian_reader.ReadU32(ssrc);
|
| -}
|
| -
|
| void FrameReceiver::ProcessParsedPacket(const RtpCastHeader& rtp_header,
|
| const uint8* payload_data,
|
| size_t payload_size) {
|
| @@ -177,10 +170,15 @@ void FrameReceiver::CastFeedback(const RtcpCastMessage& cast_message) {
|
| now, FRAME_ACK_SENT, event_media_type_,
|
| rtp_timestamp, cast_message.ack_frame_id);
|
|
|
| - ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events;
|
| - event_subscriber_.GetRtcpEventsAndReset(&rtcp_events);
|
| - rtcp_.SendRtcpFromRtpReceiver(&cast_message, target_playout_delay_,
|
| - &rtcp_events, NULL);
|
| + ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events;
|
| + event_subscriber_.GetRtcpEventsWithRedundancy(&rtcp_events);
|
| + transport_->SendRtcpFromRtpReceiver(rtcp_.GetLocalSsrc(),
|
| + rtcp_.GetRemoteSsrc(),
|
| + rtcp_.ConvertToNTPAndSave(now),
|
| + &cast_message,
|
| + target_playout_delay_,
|
| + &rtcp_events,
|
| + NULL);
|
| }
|
|
|
| void FrameReceiver::EmitAvailableEncodedFrames() {
|
| @@ -336,8 +334,15 @@ void FrameReceiver::ScheduleNextRtcpReport() {
|
|
|
| void FrameReceiver::SendNextRtcpReport() {
|
| DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
|
| + const base::TimeTicks now = cast_environment_->Clock()->NowTicks();
|
| RtpReceiverStatistics stats = stats_.GetStatistics();
|
| - rtcp_.SendRtcpFromRtpReceiver(NULL, base::TimeDelta(), NULL, &stats);
|
| + transport_->SendRtcpFromRtpReceiver(rtcp_.GetLocalSsrc(),
|
| + rtcp_.GetRemoteSsrc(),
|
| + rtcp_.ConvertToNTPAndSave(now),
|
| + NULL,
|
| + base::TimeDelta(),
|
| + NULL,
|
| + &stats);
|
| ScheduleNextRtcpReport();
|
| }
|
|
|
|
|