Index: media/filters/source_buffer_stream.cc |
diff --git a/media/filters/source_buffer_stream.cc b/media/filters/source_buffer_stream.cc |
index 619ff47ab7d4c54a1dcc070384c3ab0bfcfe5c70..1cac21e9b0275bce97bc002472dd0efa5397dbe1 100644 |
--- a/media/filters/source_buffer_stream.cc |
+++ b/media/filters/source_buffer_stream.cc |
@@ -855,13 +855,17 @@ size_t SourceBufferStream::FreeBuffers(size_t total_bytes_to_free, |
} else { |
current_range = ranges_.front(); |
DVLOG(5) << "current_range=" << RangeToString(*current_range); |
- if (!current_range->FirstGOPEarlierThanMediaTime(media_time)) { |
+ if (!current_range->FirstGOPEarlierThanMediaTime(media_time) || |
+ current_range->FirstGOPContainsNextBufferPosition()) { |
// We have removed all data up to the GOP that contains current playback |
// position, we can't delete any further. |
DVLOG(5) << "current_range contains playback position, stopping GC"; |
break; |
} |
- DVLOG(4) << "Deleting GOP from front: " << RangeToString(*current_range); |
+ DVLOG(4) << "Deleting GOP from front: " << RangeToString(*current_range) |
+ << ", media_time: " << media_time.InMicroseconds() |
+ << ", current_range->HasNextBufferPosition(): " |
+ << current_range->HasNextBufferPosition(); |
bytes_deleted = current_range->DeleteGOPFromFront(&buffers); |
} |