• liberato@chromium.org's avatar
    Select video decoder implementations for MojoVideoDecoder · b1603f08
    liberato@chromium.org authored
    This CL enables the following:
    
     - SupportedVideoDecoderConfigs are now returned from the GPU
       process as a map [video decoder implementation] => vector of
       SupportedVideoDecoderConfig for that implementation.
     - GpuVideoAcceleratorFactories::IsDecoderConfigSupported takes the
       implementation enum value as an additional argument, and checks
       only against that implementation's supported configs.
     - MojoVideoDecoder accepts an implementation enum during
       construction, which will be provided to the service during
       decoder initialization.
     - GpuMojoMediaClient uses the kAlternate implementation enum value
       to select D3D11VideoDecoder on Windows, if the experiment is
       currently enabled.  It no longer uses FallbackVideoDecoder.
     - MojoDecoderFactory adds a kAlternate decoder, in addition to the
       kDefault decoder, on Windows if the experiment is enabled.
     - RTCVideoDecoderAdapter always selects the default video decoder
       implementation.  This causes RTC on windows to use only DXVA,
       rather than D3D11VideoDecoder.  This will be addressed as follow-
       up work, though likely not immediately.
    
    The main reason for this is that it lets the renderer's decoder
    selection algorithm see two MojoVideoDecoder instances: one for DXVA
    and one for D3D11VideoDecoder.  This lets decoder selection and
    fallback happen normally for them, rather than having the fallback
    happen in the GPU process via FallbackVideoDecoder.
    
    Bug: 954422
    Change-Id: If6f056723c11ff50327623ac8d554d9f5da9f499
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1534984Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
    Reviewed-by: default avatarXing Liu <xingliu@chromium.org>
    Reviewed-by: default avatarDan Sanders <sandersd@chromium.org>
    Commit-Queue: Frank Liberato <liberato@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#652479}
    b1603f08
mojo_video_decoder.cc 14.5 KB