Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1003)

Unified Diff: media/cast/framer/framer.cc

Issue 289483003: Cast: Only ACK decodable frames (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/cast/framer/framer.cc
diff --git a/media/cast/framer/framer.cc b/media/cast/framer/framer.cc
index d510d8b7ba90c7c83730ad92dd12bb93af667a21..2e2a5028efa77d8fb16293ecc43ab8057c46d44b 100644
--- a/media/cast/framer/framer.cc
+++ b/media/cast/framer/framer.cc
@@ -58,14 +58,7 @@ bool Framer::InsertPacket(const uint8* payload_data,
it->second->InsertPacket(payload_data, payload_size, rtp_header);
}
- bool complete = (packet_type == kNewPacketCompletingFrame);
- if (complete) {
- // ACK as soon as possible.
- VLOG(2) << "Complete frame " << static_cast<int>(rtp_header.frame_id);
- cast_msg_builder_->CompleteFrameReceived(rtp_header.frame_id,
- rtp_header.is_key_frame);
- }
- return complete;
+ return packet_type == kNewPacketCompletingFrame;
}
// This does not release the frame.
@@ -83,6 +76,11 @@ bool Framer::GetEncodedAudioFrame(transport::EncodedAudioFrame* audio_frame,
*next_frame = false;
}
+ if (next_frame) {
+ VLOG(2) << "ACK frame " << frame_id;
+ cast_msg_builder_->CompleteFrameReceived(frame_id);
+ }
+
ConstFrameIterator it = frames_.find(frame_id);
DCHECK(it != frames_.end());
if (it == frames_.end())
@@ -93,7 +91,10 @@ bool Framer::GetEncodedAudioFrame(transport::EncodedAudioFrame* audio_frame,
// This does not release the frame.
bool Framer::GetEncodedVideoFrame(transport::EncodedVideoFrame* video_frame,
- bool* next_frame) {
+ bool* next_frame,
+ bool* have_multiple_decodable_frames) {
+ *have_multiple_decodable_frames = frame_id_map_.HaveMultipleDecodableFrames();
+
uint32 frame_id;
// Find frame id.
if (frame_id_map_.NextContinuousFrame(&frame_id)) {
@@ -110,6 +111,11 @@ bool Framer::GetEncodedVideoFrame(transport::EncodedVideoFrame* video_frame,
*next_frame = false;
}
+ if (next_frame) {
imcheng 2014/05/14 20:11:24 *next_frame
hubbe 2014/05/14 21:46:16 Done (so much for test coverage)
+ VLOG(2) << "ACK frame " << frame_id;
+ cast_msg_builder_->CompleteFrameReceived(frame_id);
+ }
+
ConstFrameIterator it = frames_.find(frame_id);
DCHECK(it != frames_.end());
if (it == frames_.end())

Powered by Google App Engine
This is Rietveld 408576698