Index: media/cast/net/rtp/rtp_sender.cc |
diff --git a/media/cast/net/rtp/rtp_sender.cc b/media/cast/net/rtp/rtp_sender.cc |
index bf1200fd3305391025973bbf9da08de52dc3344d..e2937002487fcd205e0b0d60e0ca732a3fd08031 100644 |
--- a/media/cast/net/rtp/rtp_sender.cc |
+++ b/media/cast/net/rtp/rtp_sender.cc |
@@ -41,25 +41,22 @@ RtpSender::RtpSender( |
RtpSender::~RtpSender() {} |
bool RtpSender::Initialize(const CastTransportRtpConfig& config) { |
- storage_.reset(new PacketStorage(config.stored_frames)); |
- if (!storage_->IsValid()) { |
- return false; |
- } |
config_.ssrc = config.ssrc; |
config_.payload_type = config.rtp_payload_type; |
- packetizer_.reset(new RtpPacketizer(transport_, storage_.get(), config_)); |
+ packetizer_.reset(new RtpPacketizer(transport_, &storage_, config_)); |
return true; |
} |
void RtpSender::SendFrame(const EncodedFrame& frame) { |
DCHECK(packetizer_); |
packetizer_->SendFrameAsPackets(frame); |
+ LOG_IF(DFATAL, storage_.GetNumberOfStoredFrames() >= kMaxUnackedFrames) |
hubbe
2014/09/18 22:22:59
I think it should be > not >=
miu
2014/09/19 19:39:43
Oh, right. Done.
|
+ << "Possible bug: Frames are not being actively released from storage."; |
} |
void RtpSender::ResendPackets( |
const MissingFramesAndPacketsMap& missing_frames_and_packets, |
bool cancel_rtx_if_not_in_list, const DedupInfo& dedup_info) { |
- DCHECK(storage_); |
// Iterate over all frames in the list. |
for (MissingFramesAndPacketsMap::const_iterator it = |
missing_frames_and_packets.begin(); |
@@ -76,7 +73,7 @@ void RtpSender::ResendPackets( |
bool resend_last = missing_packet_set.find(kRtcpCastLastPacket) != |
missing_packet_set.end(); |
- const SendPacketVector* stored_packets = storage_->GetFrame8(frame_id); |
+ const SendPacketVector* stored_packets = storage_.GetFrame8(frame_id); |
if (!stored_packets) |
continue; |
@@ -119,13 +116,14 @@ void RtpSender::ResendPackets( |
void RtpSender::CancelSendingFrames(const std::vector<uint32>& frame_ids) { |
for (std::vector<uint32>::const_iterator i = frame_ids.begin(); |
i != frame_ids.end(); ++i) { |
- const SendPacketVector* stored_packets = storage_->GetFrame8(*i & 0xFF); |
+ const SendPacketVector* stored_packets = storage_.GetFrame8(*i & 0xFF); |
if (!stored_packets) |
continue; |
for (SendPacketVector::const_iterator j = stored_packets->begin(); |
j != stored_packets->end(); ++j) { |
transport_->CancelSendingPacket(j->first); |
} |
+ storage_.ReleaseFrame(*i); |
} |
} |
@@ -157,7 +155,7 @@ void RtpSender::UpdateSequenceNumber(Packet* packet) { |
} |
int64 RtpSender::GetLastByteSentForFrame(uint32 frame_id) { |
- const SendPacketVector* stored_packets = storage_->GetFrame8(frame_id & 0xFF); |
+ const SendPacketVector* stored_packets = storage_.GetFrame8(frame_id & 0xFF); |
if (!stored_packets) |
return 0; |
PacketKey last_packet_key = stored_packets->rbegin()->first; |