DescriptionMSE: Warn when keyframe after track_buffer is significantly in future
Adds logging to chrome://media-internals when an overlapped append of
the currently playing GOP introduces significant delay until keyframe
following the end of the overlap.
Also adds a MockMediaLog and uses it in a StrictMock within
SourceBufferStreamTests to verify the new (and existing)
MediaLog events produced by SourceBufferStreamTests.
Visual example:
First append:
[K..t...........]
2nd append:
[K.......................................][*K....................]...
Since the buffer around 't' from first append is in the middle of being
decoded and rendered when the second append is done, the rest of the
first append's GOP is played and then the stream continues decode at the
next (*) keyframe in time in the 2nd append. The result is frozen video
frame (on the last PTS from the GOP containing t) until time of keyframe
at (*).
Note, once playback of the overlapped GOP containing t is completed, the
overlapped GOP is dropped, and only the buffered media from the second
append is available for replay upon seeking back.
BUG=518069
TEST=no regression. Internal b/23015270 repro demonstrates new log. Added
SourceBufferStreamTest.TrackBuffer_ExhaustionWithSkipForward and
SourceBufferStreamTest.TrackBuffer_ExhaustionAndImmediateNewTrackBuffer
Committed: https://crrev.com/ba8d79c02368809cab3f17844e93e6ef2cc6b639
Cr-Commit-Position: refs/heads/master@{#342861}
Patch Set 1 #
Total comments: 6
Patch Set 2 : Removed DCHECK, added tests, need to fix log resulting from one of new tests #
Total comments: 2
Patch Set 3 : Checkpoint: adding MockMediaLog and adding strict expectations into SourceBufferStream #Patch Set 4 : Fix nit, reduce log verification test boilerplate #
Total comments: 5
Patch Set 5 : Fix mock media log license #
Total comments: 8
Patch Set 6 : Fixes xhwang@'s nits #
Total comments: 2
Dependent Patchsets: Messages
Total messages: 32 (9 generated)
|