The libaom av1 decoder can return high bit depth frame data now. Handle those frames by downsampling them to 8 bits per channel so they can be passed to our normal playback pipeline.
aom_dsp_rtcd_defs.pl checks only whether this key is present in the config, not whether it is set to true or not. Our script sets CONFIG_FOO=no for disabled options, while the upstream build system omits them, resulting in extra symbol declarations the build will never define.
Work around this by stripping the offending disabled config key if it is disabled.
When av1 video playback is enabled, declare it as supported in the webm container in MediaSource.IsTypeSupported.
Also support special mime types of the form video/webm; codecs=vp9.experimental.<git-commit-id> so test sites can verify playback support of particular encodings while the av1 bitstream is under development.
Call AOMDecoder to handle AV1 video tracks from the WebM container. The new decoder is very similar to VPXDecoder so we can use parallel calls. This codec is still build-time conditional.
This is a port of the libvpx scripts, themselves a port of Chromium's scripts to generate an external build description using hooks in the upstream configure and make scripts. The libaom library is a fork of libvpx so we can use a similar approach.
The upstream source is located in $(topsrc_dir)/third_party/aom but the build description and any patches are under the media directory with the other codecs, similar to how zlib works. Config files and headers generated by the upstream build system are also under $(topsrc_dir)/media/libaom/.
Log spam fix. Suppresses 1,100 instances of NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80520012 emitted from netwerk/base/nsIOService.cpp during linux64 debug testing. Backports [m-c 1333174](https://bugzilla.mozilla.org/show_bug.cgi?id=1333174).