| Index: media/video/gpu_memory_buffer_video_frame_pool.h
|
| diff --git a/media/video/gpu_memory_buffer_video_frame_pool.h b/media/video/gpu_memory_buffer_video_frame_pool.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e01c791aae9666f84816b660da79210191dcc78a
|
| --- /dev/null
|
| +++ b/media/video/gpu_memory_buffer_video_frame_pool.h
|
| @@ -0,0 +1,50 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef MEDIA_VIDEO_GPU_MEMORY_BUFFER_VIDEO_FRAME_POOL_H_
|
| +#define MEDIA_VIDEO_GPU_MEMORY_BUFFER_VIDEO_FRAME_POOL_H_
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "media/base/video_frame.h"
|
| +
|
| +namespace base {
|
| +class SingleThreadTaskRunner;
|
| +}
|
| +
|
| +namespace media {
|
| +class GpuVideoAcceleratorFactories;
|
| +
|
| +// Interface to a pool of GpuMemoryBuffers/textues/images that can be used to
|
| +// transform software VideoFrames to VideoFrames backed by native textures.
|
| +// The resources used by the VideoFrame created by the pool will be
|
| +// automatically put back into the pool once the frame is destroyed.
|
| +// The pool recycles resources to a void unnecessarily allocating and
|
| +// destroying textures, images and GpuMemoryBuffer that could result
|
| +// in a round trip to the browser/GPU process.
|
| +class MEDIA_EXPORT GpuMemoryBufferVideoFramePool {
|
| + public:
|
| + GpuMemoryBufferVideoFramePool(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
|
| + const scoped_refptr<GpuVideoAcceleratorFactories>& gpu_factories);
|
| + ~GpuMemoryBufferVideoFramePool();
|
| +
|
| + // Returns a new VideoFrame containing only mailboxes to native resources.
|
| + // The content of the returned object is copied from the software-allocated
|
| + // |video_frame|.
|
| + // If it's not possible to create a new hardware VideoFrame, |video_frame|
|
| + // itself will be returned.
|
| + scoped_refptr<VideoFrame> MaybeCreateHardwareFrame(
|
| + const scoped_refptr<VideoFrame>& video_frame);
|
| +
|
| + private:
|
| + class PoolImpl;
|
| + scoped_refptr<PoolImpl> pool_impl_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferVideoFramePool);
|
| +};
|
| +
|
| +} // namespace media
|
| +
|
| +#endif // MEDIA_VIDEO_GPU_MEMORY_BUFFER_VIDEO_FRAME_POOL_H_
|
|
|