// Copyright 2019 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_CAPTURE_VIDEO_GPU_MEMORY_BUFFER_UTILS_H_
#define MEDIA_CAPTURE_VIDEO_GPU_MEMORY_BUFFER_UTILS_H_

#include <memory>

#include "media/capture/video/video_capture_device.h"

namespace gfx {
class GpuMemoryBuffer;
}  // namespace gfx

namespace gpu {
class GpuMemoryBufferSupport;
}  // namespace gpu

// Utility class and function for creating and accessing video capture client
// buffers backed with GpuMemoryBuffer buffers.
namespace media {

class ScopedNV12GpuMemoryBufferMapping {
 public:
  explicit ScopedNV12GpuMemoryBufferMapping(
      std::unique_ptr<gfx::GpuMemoryBuffer> gmb);
  ~ScopedNV12GpuMemoryBufferMapping();
  uint8_t* y_plane();
  uint8_t* uv_plane();
  size_t y_stride();
  size_t uv_stride();

 private:
  std::unique_ptr<gfx::GpuMemoryBuffer> gmb_;
};

VideoCaptureDevice::Client::ReserveResult AllocateNV12GpuMemoryBuffer(
    VideoCaptureDevice::Client* capture_client,
    const gfx::Size& buffer_size,
    gpu::GpuMemoryBufferSupport* gmb_support,
    std::unique_ptr<gfx::GpuMemoryBuffer>* out_gpu_memory_buffer,
    VideoCaptureDevice::Client::Buffer* out_capture_buffer);

}  // namespace media

#endif  // MEDIA_CAPTURE_VIDEO_GPU_MEMORY_BUFFER_UTILS_H_
