Index: media/cast/rtp_sender/rtp_sender.cc |
diff --git a/media/cast/rtp_sender/rtp_sender.cc b/media/cast/rtp_sender/rtp_sender.cc |
index d06a503dc89018b20fa8fd4936388c3f6185c00f..3b8b1f59ecaa37fde9126b7ddaa49294f32a498d 100644 |
--- a/media/cast/rtp_sender/rtp_sender.cc |
+++ b/media/cast/rtp_sender/rtp_sender.cc |
@@ -9,28 +9,32 @@ |
#include "media/cast/cast_defines.h" |
#include "media/cast/pacing/paced_sender.h" |
#include "media/cast/rtcp/rtcp_defines.h" |
+#include "net/base/big_endian.h" |
namespace media { |
namespace cast { |
-RtpSender::RtpSender(base::TickClock* clock, |
+RtpSender::RtpSender(scoped_refptr<CastEnvironment> cast_environment, |
const AudioSenderConfig* audio_config, |
const VideoSenderConfig* video_config, |
PacedPacketSender* transport) |
- : config_(), |
- transport_(transport), |
- clock_(clock) { |
+ : clock_(cast_environment->Clock()), |
Alpha Left Google
2013/11/14 00:29:24
This is not used anywhere in this file. Please rem
mikhal
2013/11/14 17:42:31
Done.
|
+ cast_environment_(cast_environment), |
+ config_(), |
+ transport_(transport) { |
// Store generic cast config and create packetizer config. |
DCHECK(audio_config || video_config) << "Invalid argument"; |
if (audio_config) { |
- storage_.reset(new PacketStorage(clock, audio_config->rtp_history_ms)); |
+ storage_.reset(new PacketStorage(cast_environment->Clock(), |
+ audio_config->rtp_history_ms)); |
config_.audio = true; |
config_.ssrc = audio_config->sender_ssrc; |
config_.payload_type = audio_config->rtp_payload_type; |
config_.frequency = audio_config->frequency; |
config_.audio_codec = audio_config->codec; |
} else { |
- storage_.reset(new PacketStorage(clock, video_config->rtp_history_ms)); |
+ storage_.reset(new PacketStorage(cast_environment->Clock(), |
+ video_config->rtp_history_ms)); |
config_.audio = false; |
config_.ssrc = video_config->sender_ssrc; |
config_.payload_type = video_config->rtp_payload_type; |
@@ -82,6 +86,13 @@ void RtpSender::ResendPackets( |
// Set a unique incremental sequence number for every packet. |
Packet& packet = packets_to_resend.back(); |
UpdateSequenceNumber(&packet); |
+ // Log retransmission (first extract rtp_timestamp). |
+ uint32 rtp_timestamp; |
+ net::BigEndianReader big_endian_reader(packet.data() + 4, 4); |
+ big_endian_reader.ReadU32(&rtp_timestamp); |
+ // TODO(mikhal): Consider placing the max value instead of -1. |
+ cast_environment_->Logging()->InsertPacketEvent(kPacketRetransmited, |
+ rtp_timestamp, frame_id, packet_id, -1, packet.size()); |
// Set the size as correspond to each frame. |
++packet_id; |
} |