Reland: Introduce GpuVideoDecodeAcceleratorFactory.

Original CL: https://codereview.chromium.org/1745903002.

This includes fixes from boliu@ for gn build.

TBR=kcwu@chromium.org,owenlin@chromium.org,sandersd@chromium.org,liberato@chromium.org,fsamuel@chromium.org,jochen@chromium.org,jam@chromium.org

Original message:

Introduce GpuVideoDecodeAcceleratorFactory.

- Move platform-specific code from GpuVideoDecodeAccelerator to
GpuVideoDecodeAcceleratorFactory.

- Make GVDAFactory a content/public interface, to provide the ability to
instantiate VDAs from outside content/.

- Unify how we obtain access to various GL functionality/classes from VDAs
by introducing a set of callbacks provided by the client.

- Replace VDA::CanDecodeOnIOThread() with
VDA::TryInitializeDecodeOnSeparateThread(). This allows us to remove
additional client/taskrunner arguments from VDA constructors, and give client
the option to use a separate thread to decode, instead of having to make this
decision in the factory, and enforcing these arguments in the constructors.

- Deduplicate VDA creation code across users (currently GVDA and vdaunittest).

BUG=b/27687678
TEST=compile/run various VDA impls

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

Cr-Commit-Position: refs/heads/master@{#385343}
38 files changed