[media] Reland: Add interface for VDAs to Decode() media::DecoderBuffers.

Using DecoderBuffer removes the need to provided SharedMemoryHandles in
cases that SharedMemory is not already allocated (in particular, when
VDAs are used through MojoVideoDecoder+VdaVideoDecoder). Since
base::SharedMemory is not an interface, a new type is required, and
DecoderBuffer already implements a suitable interface for this use case.

This CL adds:
  - A VideoDecodeAccelerator::Decode() overload for decoding
    DecoderBuffers, which VDAs may optionally implement.
    Note that VdaVideoDecoder will require this, and therefore all VDAs
    will be updated to support DecoderBuffers over time.
  - Support for SHM in DecoderBuffer. This eases the transition by
    allowing BitstreamBuffers to be easily converted to equivalent
    DecoderBuffers.
  - An implementation of the new VideoDecodeAccelerator::Decode()
    overload in VTVideoDecodeAccelerator.
  - Calling the new overload from VdaVideoDecoder.

Originally landed as 4596c80251c8c66e2335ca01f56eba4621952dc7. This
reland removes a DCHECK() in unaligned_shared_memory_unittest.cc so that
SHM is still allocated when DCHECKs are disabled.

Bug: 522298
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: Id5d6bb103070dfcb23e3db82c68d2ead23b9e3b5
Reviewed-on: https://chromium-review.googlesource.com/1028834
Commit-Queue: Dan Sanders <sandersd@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553875}
19 files changed