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

Unified Diff: media/filters/source_buffer_stream.cc

Issue 1347483003: Fix seeking back in the new MSE GC algorithm (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: better fix Created 5 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/source_buffer_stream.cc
diff --git a/media/filters/source_buffer_stream.cc b/media/filters/source_buffer_stream.cc
index e17a4f1c91952b64cf280a9777404e4adeec71d2..60d34df2b0753bf495e1027fea31384fec212ea6 100644
--- a/media/filters/source_buffer_stream.cc
+++ b/media/filters/source_buffer_stream.cc
@@ -759,6 +759,21 @@ size_t SourceBufferStream::FreeBuffers(size_t total_bytes_to_free,
// if the buffers surrounding it get deleted during garbage collection.
SourceBufferRange* new_range_for_append = NULL;
+ // If media_time is before the first buffered range, that means we are in the
wolenetz 2015/09/15 22:36:13 nit:s/media_time/|media_time|/
servolk 2015/09/16 00:28:08 Done.
+ // process of seeking back in the stream. HTMLMediaElement adjusts media_time
wolenetz 2015/09/15 22:36:13 nit: s/HTMLMediaElement/caller/ nit: s/media_time/
servolk 2015/09/16 00:28:08 Done.
+ // as soon as seeking is started. In those cases we can allow garbage
+ // collection to delete data from the front, since the player will append new
+ // data at the seek target position.
+ if (!ranges_.empty() &&
+ ranges_.front()->GetStartTimestamp() > media_time) {
+ DVLOG(5) << "media_time (" << media_time.InSecondsF() << ") is earlier than"
+ << " start of buffered data ("
+ << ranges_.front()->GetStartTimestamp().InSecondsF()
+ << "), using media_time="
+ << ranges_.front()->GetEndTimestamp().InSecondsF();
+ media_time = ranges_.front()->GetEndTimestamp();
wolenetz 2015/09/15 22:36:12 nit: While this looks like it would work, could th
servolk 2015/09/16 00:28:08 Acknowledged. I've reworked this as we discussed o
+ }
wolenetz 2015/09/15 23:04:51 As discussed further in chat, it seems we should a
servolk 2015/09/16 00:28:08 Done in the lastest patchset.
+
wolenetz 2015/09/15 22:36:12 Please add a unit test that verifies this works as
servolk 2015/09/16 00:28:08 I've added a ChunkDemuxer unit tests that verifies
while (!ranges_.empty() && bytes_freed < total_bytes_to_free) {
SourceBufferRange* current_range = NULL;
BufferQueue buffers;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698