// 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 Map( scoped_refptr 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_