• Matt Wolenetz's avatar
    [MSE] Begin relaxing aSB() and cT() codec-specificity · b45c3f1e
    Matt Wolenetz authored
    Begins relaxation with a narrow case: addSourceBuffer("video/mp4") and
    changeType("video/mp4") may now succeed, though any actual media
    appended to them later must be encrypted HEVC content, and even then,
    only on ChromeOS. Later changes will expand the relaxation of
    codec-specificity further beyond this.
    
    Specifically, this change:
    1) Updates MediaSource and SourceBuffer to continue to require
       codec-specificity for MediaSource.isTypeSupported(), but includes a
       short-term special casing for addSourceBuffer and changeType to
       support just "video/mp4" on ChromeOS with HEVC EME support.
    
    2) Updates Chromium StreamParserFactory to let parser creation occur
       with assumed eventual HEVC codec track when just "video/mp4" is used
       as addSourceBuffer() or changeType() parameter, but only on ChromeOS
       with HEVC EME support.
    
    3) Updates Chromium SourceBufferState to require an HEVC track reported
       by the StreamParser to be disallowed with DCHECK failure if
       BUILDFLAG(ENABLE_PLATFORM_HEVC) is not true, as a protection against
       possible regression later in StreamParser function.
    
    4) Updates Chromium SourceBufferState to require an HEVC track reported
       by the StreamParser to be encrypted (otherwise parse failure) if
       BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) is true.
    
    5) Until wider relaxation is done, this change inserts a hardcoded
       hevc codec string in SourceBufferState's |expected_codecs| when just
       "video/mp4" is used for addSourceBuffer or changeType on
       ChromeOS+HEVC, enabling re-use of existing codec-specificity checks
       in SourceBufferState.
    
    BUG=chromium:535738,b:153111783
    
    Change-Id: I353cdbdb3c1fdafbeacacc6b7c8c39430be7d798
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2587494Reviewed-by: default avatarChrome Cunningham <chcunningham@chromium.org>
    Commit-Queue: Matthew Wolenetz <wolenetz@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#837916}
    b45c3f1e
media_source.h 14.1 KB