Introduce AomVideoDecoder (based on VpxVideoDecoder).

Adds a simple 1-copy AV1 video decoder to Chrome. Zero copy and
offloading have not been done to start with since libaom may
produce weird formats (8bit data in 16bit allocation).

There are quite a few TODOs left to sort out:
- We currently don't handle the I440 pixel formats.
- We currently only handle a single profile, but more are expected.
- Decoding for AV1 content should probably be offloaded, so the
OffloadThread stuff from VpxVideoDecoder should be factored out.
- Decoding should use zero copy where possible, so the odd 8bit
in 16bit container needs to be sorted out or Chrome taught to
read this. This requires setting the av1 framebuffer functions.
- All AV1 frames are marked as non-power efficient; is this true
even for low resolutions?
- A fuzzertest needs to be added along with corpus data.
- A pipeline integration test needs to be added with test media
for both src= and MSE.
- What should canPlayType()/isTypeSupported() return for this?
- Changes to MediaSourceExtensions for SourceBuffer creation and
demuxing.

To use this, you must update your .gclient file to include the
following within the "src" solution:

  "custom_vars": { "checkout_libaom": True, },

This will propogate a ENABLE_AV1_DECODER buildflag, which can
optionally be turned off via enable_av1_decode=false for
unsupported platfroms (everything except linux x64 currently)

BUG=783519, b/67860375
TEST=new unittest, manual playback test

Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ia77a8d0710ebebd1ac3e7ad83648313063181d62
Reviewed-on: https://chromium-review.googlesource.com/762359
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Chrome Cunningham <chcunningham@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Steven Holte <holte@chromium.org>
Reviewed-by: Johann Koenig <johannkoenig@google.com>
Cr-Commit-Position: refs/heads/master@{#516847}
28 files changed