commit | 8efe7217bc8d16be91cc94b0de80f6a5bd5d704f | [log] [tgz] |
---|---|---|
author | Matt Wolenetz <wolenetz@chromium.org> | Tue Oct 03 20:40:26 2017 |
committer | Commit Bot <commit-bot@chromium.org> | Tue Oct 03 20:40:26 2017 |
tree | a4046f80df8ee4757aef56524fe19c18636463de | |
parent | 6483150e3050742ae64920a6daf5ec9c186ef0f2 [diff] |
MSE: Buffer media by PTS when kMseBufferByPts feature is enabled Other than mechanical* DTS/PTS pieces, this CL contains the bulk of the PTS/DTS compliance work: 1) SBS<SBRByPts> and SBRByPts order buffers within GOP by DTS, between GOP by PTS. See especially SBRByPts::GetBufferIndexAt(...) and ::CanAppendBuffersToEnd(...) 2) SBS now has highest_timestamp_in_append_sequence_ and highest_buffered_end_time_in_append_sequence_, along with updated PrepareRangesForNextAppend(), to correctly *not* remove self-overlapping out-of-order buffers in a sequence of appends within the same coded frame group when buffering ByPts. Similarly, usage of and implementation of GC helper FreeBuffersAfterLastAppended() consults these to not unduly evict pieces of an out-of-order GOP that is before media_time. 3) SBS now has highest_output_buffer_timestamp_ to help prevent some undue stalling in cases like track buffer exhaustion with out-of-order track buffers when buffering ByPts. 4) FP signals SBS of coded frame group starts, including PTS information. SBS decides which to use based on ByDts vs ByPts. Also, FP handles re-signalling CFG start time if the start has moved earlier across tracks in a muxed SourceBuffer (similar to existing logic for DTS and muxed sequence mode). SAP-Type-2 is not explicitly rejected; related FP*OOO* unit tests demonstrate current buffering results ByDts vs ByPts for one simple SAP-Type-2 scenario. Many related unit tests are updated. Notably, SBSTests already had out-of-order buffering in many of its cases. * Much of the mechanical stuff is to make SBRBy{Pts,Dts} use the intended time type internally, while letting SBS get away with using DTS still in many places where eventually it'll use PTS when SBRByDts gets dropped. See the set of new templated SBS::Range*(...) adapter methods. BUG=718641,769434,402502,398130 Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Change-Id: Ib2abb816d240a6f74362bb83061ac4157dab210b Reviewed-on: https://chromium-review.googlesource.com/678443 Reviewed-by: Chrome Cunningham <chcunningham@chromium.org> Commit-Queue: Matthew Wolenetz <wolenetz@chromium.org> Cr-Commit-Position: refs/heads/master@{#506161}
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 .