123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // Copyright 2018 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_GPU_VIDEO_FRAME_MAPPER_H_
- #define MEDIA_GPU_VIDEO_FRAME_MAPPER_H_
- #include "base/memory/scoped_refptr.h"
- #include "media/base/video_frame.h"
- #include "media/base/video_types.h"
- #include "media/gpu/media_gpu_export.h"
- namespace media {
- // The VideoFrameMapper interface allows mapping video frames into memory so
- // that their contents can be accessed directly.
- // VideoFrameMapper should be created by using VideoFrameMapperFactory.
- class MEDIA_GPU_EXPORT VideoFrameMapper {
- public:
- VideoFrameMapper(const VideoFrameMapper&) = delete;
- VideoFrameMapper& operator=(const VideoFrameMapper&) = delete;
- virtual ~VideoFrameMapper() = default;
- // Maps data referred by |video_frame| and creates a VideoFrame whose dtor
- // unmap the mapped memory. The |permissions| parameter is a bitwise OR of the
- // permissions the mapping needs if it uses mmap. Valid flags for this
- // parameter are combinations of |PROT_READ| and |PROT_WRITE|.
- virtual scoped_refptr<VideoFrame> Map(
- scoped_refptr<const VideoFrame> video_frame,
- int permissions) const = 0;
- // Returns the allowed pixel format of video frames on Map().
- VideoPixelFormat pixel_format() const { return format_; }
- protected:
- explicit VideoFrameMapper(VideoPixelFormat format) : format_(format) {}
- // The allowed pixel format of video frames on Map().
- VideoPixelFormat format_;
- };
- } // namespace media
- #endif // MEDIA_GPU_VIDEO_FRAME_MAPPER_H_
|