Chromium Code Reviews| Index: media/filters/gpu_video_accelerator_factories.h |
| diff --git a/media/filters/gpu_video_accelerator_factories.h b/media/filters/gpu_video_accelerator_factories.h |
| index c152c2a4bda8ca51d0769ac047a85bb27e4ce2b3..ccca541fb59c7a9bbb9d70f8fa59752e503b0436 100644 |
| --- a/media/filters/gpu_video_accelerator_factories.h |
| +++ b/media/filters/gpu_video_accelerator_factories.h |
| @@ -21,6 +21,14 @@ namespace media { |
| // Helper interface for specifying factories needed to instantiate a hardware |
| // video accelerator. |
| +// Threading model: |
| +// * The GpuVideoAcceleratorFactories has an associated message loop, which may |
| +// be retrieved as |GetMessageLoop()|. |
| +// * Calls to the Factories must be made on its message loop. |
| +// * With the exception of |ReadPixels()|, which for convenience maybe be |
| +// called from any thread. |
|
sheu
2013/10/16 00:57:45
I'm still a little iffy about this. My other thou
Ami GONE FROM CHROMIUM
2013/10/17 22:22:17
An alternative: make ReadPixels callable from only
|
| +// * This is because the main user of |ReadPixels()| is the |read_pixels_cb_| |
| +// of media::VideoFrame, which needs to be synchronous and thread-safe. |
| class MEDIA_EXPORT GpuVideoAcceleratorFactories |
| : public base::RefCountedThreadSafe<GpuVideoAcceleratorFactories> { |
| public: |
| @@ -43,7 +51,8 @@ class MEDIA_EXPORT GpuVideoAcceleratorFactories |
| virtual void WaitSyncPoint(uint32 sync_point) = 0; |
| - // Read pixels from a native texture and store into |pixels| as RGBA. |
| + // Read pixels from a native texture and store into |pixels| as RGBA. Safe to |
| + // call from any thread. |
| virtual void ReadPixels(uint32 texture_id, |
| const gfx::Size& size, |
| const SkBitmap& pixels) = 0; |
| @@ -52,16 +61,11 @@ class MEDIA_EXPORT GpuVideoAcceleratorFactories |
| // Close()ing the returned pointer. |
| virtual base::SharedMemory* CreateSharedMemory(size_t size) = 0; |
| - // Returns the message loop the video accelerator runs on. |
| + // Returns the message loop the GpuVideoAcceleratorFactories runs on. Calls |
| + // to interface functions must be made on this loop, with the exception of |
| + // |ReadPixels()|. |
| virtual scoped_refptr<base::MessageLoopProxy> GetMessageLoop() = 0; |
| - // Abort any outstanding factory operations and error any future |
| - // attempts at factory operations |
| - virtual void Abort() = 0; |
| - |
| - // Returns true if Abort() has been called. |
| - virtual bool IsAborted() = 0; |
| - |
| protected: |
| friend class base::RefCountedThreadSafe<GpuVideoAcceleratorFactories>; |
| virtual ~GpuVideoAcceleratorFactories(); |