Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(747)

Unified Diff: content/browser/renderer_host/media/video_capture_buffer_pool.h

Issue 2343423003: Extract nested and private classes from VideoCaptureBufferPool (Closed)
Patch Set: Merge branch 'master' into BufferPoolRefactor Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/media/video_capture_buffer_pool.h
diff --git a/content/browser/renderer_host/media/video_capture_buffer_pool.h b/content/browser/renderer_host/media/video_capture_buffer_pool.h
index 8104fa43732f4a5f5319d4e6a2b21f6414476777..4dc59acb146831ee11b1d58bd424d8a9796bac2b 100644
--- a/content/browser/renderer_host/media/video_capture_buffer_pool.h
+++ b/content/browser/renderer_host/media/video_capture_buffer_pool.h
@@ -24,17 +24,8 @@
namespace content {
-class VideoCaptureBufferPoolBufferHandle {
- public:
- virtual ~VideoCaptureBufferPoolBufferHandle() {}
- virtual gfx::Size dimensions() const = 0;
- virtual size_t mapped_size() const = 0;
- virtual void* data(int plane) = 0;
- virtual ClientBuffer AsClientBuffer(int plane) = 0;
-#if defined(OS_POSIX) && !defined(OS_MACOSX)
- virtual base::FileDescriptor AsPlatformFile() = 0;
-#endif
-};
+class VideoCaptureBufferHandle;
+class VideoCaptureBufferTracker;
class CONTENT_EXPORT VideoCaptureBufferPool
: public base::RefCountedThreadSafe<VideoCaptureBufferPool> {
@@ -52,7 +43,7 @@ class CONTENT_EXPORT VideoCaptureBufferPool
gfx::GpuMemoryBufferHandle* new_handle) = 0;
// Try and obtain a BufferHandle for |buffer_id|.
- virtual std::unique_ptr<VideoCaptureBufferPoolBufferHandle> GetBufferHandle(
+ virtual std::unique_ptr<VideoCaptureBufferHandle> GetBufferHandle(
int buffer_id) = 0;
// Reserve or allocate a buffer to support a packed frame of |dimensions| of
@@ -134,8 +125,6 @@ class CONTENT_EXPORT VideoCaptureBufferPool
class CONTENT_EXPORT VideoCaptureBufferPoolImpl
: public VideoCaptureBufferPool {
public:
- using BufferHandle = VideoCaptureBufferPoolBufferHandle;
-
explicit VideoCaptureBufferPoolImpl(int count);
// Implementation of VideoCaptureBufferPool interface:
@@ -146,7 +135,8 @@ class CONTENT_EXPORT VideoCaptureBufferPoolImpl
int plane,
base::ProcessHandle process_handle,
gfx::GpuMemoryBufferHandle* new_handle) override;
- std::unique_ptr<BufferHandle> GetBufferHandle(int buffer_id) override;
+ std::unique_ptr<VideoCaptureBufferHandle> GetBufferHandle(
+ int buffer_id) override;
int ReserveForProducer(const gfx::Size& dimensions,
media::VideoPixelFormat format,
media::VideoPixelStorage storage,
@@ -160,70 +150,6 @@ class CONTENT_EXPORT VideoCaptureBufferPoolImpl
void RelinquishConsumerHold(int buffer_id, int num_clients) override;
private:
- class GpuMemoryBufferTracker;
- class SharedMemTracker;
- // Generic class to keep track of the state of a given mappable resource. Each
- // Tracker carries indication of pixel format and storage type.
- class Tracker {
- public:
- static std::unique_ptr<Tracker> CreateTracker(
- media::VideoPixelStorage storage);
-
- Tracker()
- : max_pixel_count_(0),
- held_by_producer_(false),
- consumer_hold_count_(0) {}
- virtual bool Init(const gfx::Size& dimensions,
- media::VideoPixelFormat format,
- media::VideoPixelStorage storage_type,
- base::Lock* lock) = 0;
- virtual ~Tracker();
-
- const gfx::Size& dimensions() const { return dimensions_; }
- void set_dimensions(const gfx::Size& dim) { dimensions_ = dim; }
- size_t max_pixel_count() const { return max_pixel_count_; }
- void set_max_pixel_count(size_t count) { max_pixel_count_ = count; }
- media::VideoPixelFormat pixel_format() const {
- return pixel_format_;
- }
- void set_pixel_format(media::VideoPixelFormat format) {
- pixel_format_ = format;
- }
- media::VideoPixelStorage storage_type() const { return storage_type_; }
- void set_storage_type(media::VideoPixelStorage storage_type) {
- storage_type_ = storage_type;
- }
- bool held_by_producer() const { return held_by_producer_; }
- void set_held_by_producer(bool value) { held_by_producer_ = value; }
- int consumer_hold_count() const { return consumer_hold_count_; }
- void set_consumer_hold_count(int value) { consumer_hold_count_ = value; }
-
- // Returns a handle to the underlying storage, be that a block of Shared
- // Memory, or a GpuMemoryBuffer.
- virtual std::unique_ptr<BufferHandle> GetBufferHandle() = 0;
-
- virtual bool ShareToProcess(base::ProcessHandle process_handle,
- base::SharedMemoryHandle* new_handle) = 0;
- virtual bool ShareToProcess2(int plane,
- base::ProcessHandle process_handle,
- gfx::GpuMemoryBufferHandle* new_handle) = 0;
-
- private:
- // |dimensions_| may change as a Tracker is re-used, but |max_pixel_count_|,
- // |pixel_format_|, and |storage_type_| are set once for the lifetime of a
- // Tracker.
- gfx::Size dimensions_;
- size_t max_pixel_count_;
- media::VideoPixelFormat pixel_format_;
- media::VideoPixelStorage storage_type_;
-
- // Indicates whether this Tracker is currently referenced by the producer.
- bool held_by_producer_;
-
- // Number of consumer processes which hold this Tracker.
- int consumer_hold_count_;
- };
-
friend class base::RefCountedThreadSafe<VideoCaptureBufferPoolImpl>;
~VideoCaptureBufferPoolImpl() override;
@@ -232,7 +158,7 @@ class CONTENT_EXPORT VideoCaptureBufferPoolImpl
media::VideoPixelStorage storage,
int* tracker_id_to_drop);
- Tracker* GetTracker(int buffer_id);
+ VideoCaptureBufferTracker* GetTracker(int buffer_id);
// The max number of buffers that the pool is allowed to have at any moment.
const int count_;
@@ -248,7 +174,7 @@ class CONTENT_EXPORT VideoCaptureBufferPoolImpl
int last_relinquished_buffer_id_;
// The buffers, indexed by the first parameter, a buffer id.
- using TrackerMap = std::map<int, Tracker*>;
+ using TrackerMap = std::map<int, VideoCaptureBufferTracker*>;
TrackerMap trackers_;
DISALLOW_IMPLICIT_CONSTRUCTORS(VideoCaptureBufferPoolImpl);

Powered by Google App Engine
This is Rietveld 408576698