Skip to content
  • wolenetz's avatar
    MSE: Warn when keyframe after track_buffer is significantly in future · ba8d79c0
    wolenetz authored
    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
    
    Review URL: https://codereview.chromium.org/1281113002
    
    Cr-Commit-Position: refs/heads/master@{#342861}
    ba8d79c0