• hclam@chromium.org's avatar
    Eliminate video capture thread in renderer · 91c2aafb
    hclam@chromium.org authored
    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.
    
    Review URL: https://codereview.chromium.org/120893002
    
    git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244074 0039d316-1c4b-4281-b951-d872f2087c98
    91c2aafb
rtc_video_capturer.cc 5.35 KB