MSE: Chromium implementation support for SourceBuffer.changeType
Adds ability for ChunkDemuxer and SourceBufferState to indicate whether a changeType request's type can be satisfied (using successful construction of an associated StreamParser as the condition), and to effect changeType by resetting the SourceBufferState's StreamParser. SourceBufferState's state machine is expanded to allow for enforcing at-most-one invocation of it's |init_cb_|, while continuing to require that a newly constructed StreamParser first successfully handle an initialization segment. Since this CL does not relax the existing codec-strictness of StreamParserFactory (and, by extension, MediaSource.addSourceBuffer), it uses the same strictness for CanChangeType. Any relaxation can be done in later CLs. Also, since such codec strictness is still in place, SourceBufferStream codec changes (more than just existing support for same-codec config changes) are allowed only when handling the first initialization segment following a changeType request, and only if the SourceBuffer had previously handled an initialization segment. Later CLs will include changeType pipeline integration tests, Blink API experimental support for changeType, and changeType web-platform-tests. BUG=605134 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel Change-Id: I57e6ef175c9e06ca59db03f8c07ebd6070504af4 Reviewed-on: https://chromium-review.googlesource.com/1110483 Commit-Queue: Matthew Wolenetz <wolenetz@chromium.org> Reviewed-by:Dan Sanders <sandersd@chromium.org> Cr-Commit-Position: refs/heads/master@{#569492}
Showing
Please register or sign in to comment