blob: 3b9030414cb1d5e634c39819a918d524457edba3 [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 "common/utils/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,
InitializeCallback callback) final;
void ConfigureStreams(mojom::Camera3StreamConfigurationPtr config,
ConfigureStreamsCallback callback) final;
void ConstructDefaultRequestSettings(
mojom::Camera3RequestTemplate type,
ConstructDefaultRequestSettingsCallback callback) final;
void ProcessCaptureRequest(mojom::Camera3CaptureRequestPtr request,
ProcessCaptureRequestCallback callback) final;
void Dump(mojo::ScopedHandle fd) final;
void Flush(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,
RegisterBufferCallback callback) final;
void Close(CloseCallback callback) final;
void ConfigureStreamsAndGetAllocatedBuffers(
mojom::Camera3StreamConfigurationPtr config,
ConfigureStreamsAndGetAllocatedBuffersCallback callback) final;
CameraDeviceAdapter* camera_device_adapter_;
DISALLOW_IMPLICIT_CONSTRUCTORS(Camera3DeviceOpsDelegate);
};
} // namespace cros
#endif // CAMERA_HAL_ADAPTER_CAMERA3_DEVICE_OPS_DELEGATE_H_