blob: d643ee9d148467ec0c4843e87a7e6c886667d995 [file] [log] [blame]
/*
* Copyright 2016 The Chromium OS 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 CAMERA_HAL_ADAPTER_CAMERA3_DEVICE_OPS_DELEGATE_H_
#define CAMERA_HAL_ADAPTER_CAMERA3_DEVICE_OPS_DELEGATE_H_
#include <vector>
#include "hal_adapter/cros_camera_mojo_utils.h"
#include "mojo/camera3.mojom.h"
namespace cros {
class CameraDeviceAdapter;
class Camera3DeviceOpsDelegate final
: public internal::MojoBinding<mojom::Camera3DeviceOps> {
public:
Camera3DeviceOpsDelegate(
CameraDeviceAdapter* camera_device_adapter,
scoped_refptr<base::SingleThreadTaskRunner> task_runner);
~Camera3DeviceOpsDelegate();
private:
void Initialize(mojom::Camera3CallbackOpsPtr callback_ops,
const InitializeCallback& callback) final;
void ConfigureStreams(mojom::Camera3StreamConfigurationPtr config,
const ConfigureStreamsCallback& callback) final;
void ConstructDefaultRequestSettings(
mojom::Camera3RequestTemplate type,
const ConstructDefaultRequestSettingsCallback& callback) final;
void ProcessCaptureRequest(
mojom::Camera3CaptureRequestPtr request,
const ProcessCaptureRequestCallback& callback) final;
void Dump(mojo::ScopedHandle fd) final;
void Flush(const FlushCallback& callback) final;
void RegisterBuffer(uint64_t buffer_id,
mojom::Camera3DeviceOps::BufferType type,
std::vector<mojo::ScopedHandle> fds,
uint32_t drm_format,
mojom::HalPixelFormat hal_pixel_format,
uint32_t width,
uint32_t height,
const std::vector<uint32_t>& strides,
const std::vector<uint32_t>& offsets,
const RegisterBufferCallback& callback) final;
void Close(const CloseCallback& callback) final;
CameraDeviceAdapter* camera_device_adapter_;
DISALLOW_IMPLICIT_CONSTRUCTORS(Camera3DeviceOpsDelegate);
};
} // namespace cros
#endif // CAMERA_HAL_ADAPTER_CAMERA3_DEVICE_OPS_DELEGATE_H_