Eliminate video capture thread in renderer
The main motivation of this change is to remove the video capture thread
in the renderer. All users of a video capture device already handles the
video frame on their thread. There is no need to call the clients with
an additional thread.
Summary of this change:
* Video capture thread eliminated
VideoCaptureImpl now runs on the IO thread. Clients are called on the
IO thread.
* Simplified VideoCaptureImplManager
We still need to keep this object for the purpose of sharing a
VideoCaptureImpl object with multiple clients. It should own these
objects and maintain the usage count. A couple clean up items are done
on this class:
* It doesn't own the video capture thread now.
* It is now a render thread only object.
* It maintains refcount of a VideoCaptureImpl explicitly.
* It is no longer refcounted.
* Clients access it through RenderThreadImpl. Which ensures usage is
on the render thread.
* New VideoCaptureHandle class
Object of this class is returned by VideoCaptureImplManager to give
access to a media::VideoCapture object. It is purely a wrapper and
helps to do refcounting on the render thread.
Testing:
Added unit tests for VideoCaptureImplManager to test refcounting.
Also updated unit test for VideoCaptureImpl due to the threading
changes.
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=244074
Review URL: https://codereview.chromium.org/
120893002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244687 0039d316-1c4b-4281-b951-d872f2087c98