commit | ce25bca729fe4fad91421b5008382ba85216d192 | [log] [tgz] |
---|---|---|
author | Matt Wolenetz <wolenetz@chromium.org> | Fri Feb 01 19:28:00 2019 |
committer | Matthew Wolenetz <wolenetz@chromium.org> | Fri Feb 01 19:28:00 2019 |
tree | 8eb405642856debaf8c4827e7b5a64c1f3bd7a2e | |
parent | eaf9d3dfbd4820f6e7d77825cc59feeafda31fe6 [diff] |
To M73: MSE: Reduce amount of frame flushing for common ByPts scenario Previously, when buffering by PTS, almost all audio frames emitted by FrameProcessor would be emitted singly, incurring significant overhead of frequent SourceBufferStream::Append() calls of single frames versus collections of frames, even when these audio frames really are continuous. This change allows the duration of the current frame to be used as a proxy for (roughly) half of the SourceBufferStream's buffering fudge room, with the other half already built into the FrameProcessor's MseTrackBuffer highest_presentation_timestamp(). Because SourceBufferStream updates its (non-decreasing) fudge room at the start of Append() servicing, this relaxation in FrameProcessor should not introduce failures in adjacency checks during SBS::Append() (and underlying SourceBufferRangeByPts) processing, while allowing simple continuous-in-DTS (within MSE coded frame processing spec'ed adjacency logic) and continuous-in-PTS (within our SourceBufferStream's fudge room) keyframes to not be unduly Appended one-at-at-time to SourceBufferStream. Note, this change is not specific to audio frames; video keyframes also satisfying such continuity are also queued for bulk flushing later in FrameProcessor. Relevant unit tests now verify the specifics of group start signalling and the sequence of append calls by FrameProcessor. BUG=879970,912695 TEST=Multiple updated and new FrameProcessorTests Change-Id: Ifcfe9fc2062888b1c835380871be355a45b0babe Reviewed-on: https://chromium-review.googlesource.com/c/1441492 Reviewed-by: Dan Sanders <sandersd@chromium.org> Commit-Queue: Matthew Wolenetz <wolenetz@chromium.org> Cr-Commit-Position: refs/heads/master@{#627070}(cherry picked from commit d2ad5ce3165b485156ffff771a3e860b1ab78ad4) TBR=sandersd@chromium.org Change-Id: I37f2fa8abe0bc54bca5eb0c248a4d2bed7115769 Reviewed-on: https://chromium-review.googlesource.com/c/1450439 Reviewed-by: Matthew Wolenetz <wolenetz@chromium.org> Cr-Commit-Position: refs/branch-heads/3683@{#130} Cr-Branched-From: e51029943e0a38dd794b73caaf6373d5496ae783-refs/heads/master@{#625896}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .