diff options
author | mcasas <mcasas@chromium.org> | 2015-03-06 12:37:59 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-06 20:39:07 +0000 |
commit | dce2e0b5d89ebcc00482fe95494c9c2163d2f463 (patch) | |
tree | 76ce31438923270d93f5cf22bbc3aead96160c26 /chrome/browser/browser_process_impl_unittest.cc | |
parent | 80e90348ac7fe33d12412f735a3d1421e9355346 (diff) | |
download | chromium_src-dce2e0b5d89ebcc00482fe95494c9c2163d2f463.zip chromium_src-dce2e0b5d89ebcc00482fe95494c9c2163d2f463.tar.gz chromium_src-dce2e0b5d89ebcc00482fe95494c9c2163d2f463.tar.bz2 |
[EXPERIMENTAL] Video Capture: Wrap captured frames in GpuMemoryBuffer allowing for zero-copy
Capture data flow follows. VCTextureWrapper is a new class.
Situation before this CL:
+--------------------------+
| VideoCapture |
| Controller |
| +--------------+ +-------------------+
| <-------| VideoCapture |<---| VideoCaptureDevice|
| | DeviceClient | +-------------------+
| +--------------+
+--------------------------+
Situation after this CL:
+------------+ +-------------------+
|VideoCapture| weak | VideoCapture | owns +-------------------+
+Controller |<-----| DeviceClient |<-------| VideoCaptureDevice|
+------------+<-+ +-------------------+ +----+-------------------+
| ^ |
| | <derives> |
| +--------------------+ |
+--| VideoCapture |<--+
| TextureWrapper |
| +----------------+ |
| | TextureWrapper | |
| | Delegate | |
+-+----------------+-+
VideoCaptureDeviceClient is extracted in a file on its own. No
new code is added to this refactoring.
VCController instantiates the appropriate VCDClient depending on the
appropriate new flag. This is only possible for Linux and Mac. In the
future, this "factory method" should auto-detect what to use based on
hw support etc..
This clarifies the threading model, since VCC lives only on
IO thread, while VCDClient lives in both Capture Thread and
whichever thread the device uses for capture (could be Capture
Thread again or an OS thread).
VCTWrapper overrides VideoCaptureDeviceClient::OnIncomingCapturedData(),
and passes the received frame to its TextureWrapperDelegate, that does
the wrapping proper.
VCTWrapper uses several threads due to GPU specifics. See the class
docs for more info.
BUG=440843
Review URL: https://codereview.chromium.org/758833002
Cr-Commit-Position: refs/heads/master@{#319490}
Diffstat (limited to 'chrome/browser/browser_process_impl_unittest.cc')
0 files changed, 0 insertions, 0 deletions