Proof-of-concept WebrtcVideoEncoderGpu

This is the base implementation of a proof-of-concept
WebrtcVideoEncoder utilizing the Chrome Media VEA framework for video
encode acceleration.

This current implementation by itself does not
work - the main reason for this is that the VEA implementation for
Windows (the primary platform I was testing for) is tightly coupled to
a Chrome GPU process that doesn't exist in Chrome Remote Desktop's
process model. (Indeed this may be the case for other platforms, too -
I've only been working with Windows.) As a consequence, thread checks
and shared memory allocation needed to be refactored/removed. A
subsequent change refactors the Windows VEA and WebrtcVideoEncoderGpu
to bring them to a working, proof-of-concept state.

This change exists to exemplify how WebrtcVideoEncoderGpu _should_ be
implemented, in the case where a separate GPU process exists and
shared memory is used. Going forward, we may choose to incorporate
such a process into the CRD process model; thus, this change is kept
for posterity.

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: I277f3684640a2f290c51cda95c368488c6438f96
Reviewed-on: https://chromium-review.googlesource.com/583828
Commit-Queue: Gus Smith <gusss@google.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: John Bauman <jbauman@chromium.org>
Reviewed-by: Joe Downing <joedow@chromium.org>
Reviewed-by: Jamie Walch <jamiewalch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#492172}
5 files changed