| Index: media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc
|
| diff --git a/media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc b/media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc
|
| index 4d62b87964d798d84708aa167a95c8ed7ec00f3d..0acb5755d96674c3e493eb4c3dfa1642957e759f 100644
|
| --- a/media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc
|
| +++ b/media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc
|
| @@ -56,12 +56,12 @@ void RtpPacketizer::IncomingEncodedVideoFrame(
|
| if (config_.audio)
|
| return;
|
|
|
| - time_last_sent_rtp_timestamp_ = capture_time;
|
| Cast(video_frame->key_frame,
|
| video_frame->frame_id,
|
| video_frame->last_referenced_frame_id,
|
| video_frame->rtp_timestamp,
|
| - video_frame->data);
|
| + video_frame->data,
|
| + capture_time);
|
| }
|
|
|
| void RtpPacketizer::IncomingEncodedAudioFrame(
|
| @@ -71,12 +71,12 @@ void RtpPacketizer::IncomingEncodedAudioFrame(
|
| if (!config_.audio)
|
| return;
|
|
|
| - time_last_sent_rtp_timestamp_ = recorded_time;
|
| Cast(true,
|
| audio_frame->frame_id,
|
| 0,
|
| audio_frame->rtp_timestamp,
|
| - audio_frame->data);
|
| + audio_frame->data,
|
| + recorded_time);
|
| }
|
|
|
| uint16 RtpPacketizer::NextSequenceNumber() {
|
| @@ -99,7 +99,9 @@ void RtpPacketizer::Cast(bool is_key,
|
| uint32 frame_id,
|
| uint32 reference_frame_id,
|
| uint32 timestamp,
|
| - const std::string& data) {
|
| + const std::string& data,
|
| + const base::TimeTicks& capture_time) {
|
| + time_last_sent_rtp_timestamp_ = capture_time;
|
| uint16 rtp_header_length = kCommonRtpHeaderLength + kCastRtpHeaderLength;
|
| uint16 max_length = config_.max_payload_length - rtp_header_length - 1;
|
| rtp_timestamp_ = timestamp;
|
| @@ -109,7 +111,8 @@ void RtpPacketizer::Cast(bool is_key,
|
| size_t payload_length = (data.size() + num_packets) / num_packets;
|
| DCHECK_LE(payload_length, max_length) << "Invalid argument";
|
|
|
| - PacketList packets;
|
| + SendPacketVector packets;
|
| + PacketList packets_for_logging;
|
|
|
| size_t remaining_size = data.size();
|
| std::string::const_iterator data_iter = data.begin();
|
| @@ -139,22 +142,27 @@ void RtpPacketizer::Cast(bool is_key,
|
| data_iter,
|
| data_iter + payload_length);
|
|
|
| + PacketKey key = PacedPacketSender::MakePacketKey(capture_time,
|
| + config_.ssrc,
|
| + packet_id_);
|
| +
|
| // Store packet.
|
| - packet_storage_->StorePacket(frame_id, packet_id_, packet);
|
| + packet_storage_->StorePacket(frame_id, packet_id_, key, packet);
|
| ++packet_id_;
|
| data_iter += payload_length;
|
|
|
| // Update stats.
|
| ++send_packets_count_;
|
| send_octet_count_ += payload_length;
|
| - packets.push_back(packet);
|
| + packets.push_back(make_pair(key, packet));
|
| + packets_for_logging.push_back(packet);
|
| }
|
| DCHECK(packet_id_ == num_packets) << "Invalid state";
|
|
|
| logging_->InsertPacketListEvent(
|
| clock_->NowTicks(),
|
| config_.audio ? kAudioPacketSentToPacer : kVideoPacketSentToPacer,
|
| - packets);
|
| + packets_for_logging);
|
|
|
| // Send to network.
|
| transport_->SendPackets(packets);
|
|
|