[go: nahoru, domu]

Reland: Add accelerated VP9 decode infrastructure and an implementation for VA-API.

This reverts commit 27c68f543e5eba779902447445dfb05ec3f5bf75.

The CL was reverted due to a missing include on msan builder. Fixing
that.

Original CL description:

Add accelerated VP9 decode infrastructure and an implementation for
VA-API.

- Add a hardware/platform-independent VP9Decoder class and related
infrastructure, implementing AcceleratedVideoDecoder interface.
VP9Decoder
performs the initial stages of the decode process, which are to be done
on host/in software, such as stream parsing and reference frame
management.

- Add a VP9Accelerator interface, used by the VP9Decoder to offload the
remaining stages of the decode process to hardware. VP9Accelerator
implementations are platform-specific.

- Add the first implementation of VP9Accelerator - VaapiVP9Accelerator -
and
integrate it with VaapiVideoDecodeAccelerator, for devices which provide
hardware VP9 acceleration through VA-API. Hook it up to the new
infrastructure and VP9Decoder.

- Extend Vp9Parser to provide functionality required by VP9Decoder and
VP9Accelerator, including superframe parsing, handling of loop filter
and segmentation initialization, state persistence across frames and
resetting when needed. Also add code calculating segmentation dequants
and loop filter levels.

- Update vp9_parser_unittest to the new Vp9Parser interface and flow.

TEST=vp9_parser_unittest,vda_unittest,Chrome VP9 playback
BUG=chrome-os-partner:41469, chrome-os-partner:41470, chromium:525331
TBR=dpranke@chromium.org

TBR=wuchengli@chromium.org,kcwu@chromium.org,sandersd@chromium.org,jorgelo@chromium.org,tommycli@chromium.org

Review URL: https://codereview.chromium.org/1345943009

Cr-Commit-Position: refs/heads/master@{#349609}
13 files changed