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.

Change-Id: I277f3684640a2f290c51cda95c368488c6438f96
Commit-Queue: Gus Smith <>
Reviewed-by: Dale Curtis <>
Reviewed-by: John Bauman <>
Reviewed-by: Joe Downing <>
Reviewed-by: Jamie Walch <>
Cr-Commit-Position: refs/heads/master@{#492172}
5 files changed