/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2019, Google Inc. * * camera_ops.h - Android Camera HAL Operations */ #include "camera_ops.h" #include #include "camera_device.h" using namespace libcamera; /* * Translation layer between the Android Camera HAL device operations and the * CameraDevice. */ static int hal_dev_initialize(const struct camera3_device *dev, const camera3_callback_ops_t *callback_ops) { if (!dev) return -EINVAL; CameraDevice *camera = reinterpret_cast(dev->priv); camera->setCallbacks(callback_ops); return 0; } static int hal_dev_configure_streams(const struct camera3_device *dev, camera3_stream_configuration_t *stream_list) { if (!dev) return -EINVAL; CameraDevice *camera = reinterpret_cast(dev->priv); return camera->configureStreams(stream_list); } static const camera_metadata_t * hal_dev_construct_default_request_settings(const struct camera3_device *dev, int type) { if (!dev) return nullptr; CameraDevice *camera = reinterpret_cast(dev->priv); return camera->constructDefaultRequestSettings(type); } static int hal_dev_process_capture_request(const struct camera3_device *dev, camera3_capture_request_t *request) { if (!dev) return -EINVAL; CameraDevice *camera = reinterpret_cast(dev->priv); return camera->processCaptureRequest(request); } static void hal_dev_dump([[maybe_unused]] const struct camera3_device *dev, [[maybe_unused]] int fd) { } static int hal_dev_flush(const struct camera3_device *dev) { if (!dev) return -EINVAL; CameraDevice *camera = reinterpret_cast(dev->priv); camera->flush(); return 0; } int hal_dev_close(hw_device_t *hw_device) { if (!hw_device) return -EINVAL; camera3_device_t *dev = reinterpret_cast(hw_device); CameraDevice *camera = reinterpret_cast(dev->priv); camera->close(); return 0; } camera3_device_ops hal_dev_ops = { .initialize = hal_dev_initialize, .configure_streams = hal_dev_configure_streams, .register_stream_buffers = nullptr, .construct_default_request_settings = hal_dev_construct_default_request_settings, .process_capture_request = hal_dev_process_capture_request, .get_metadata_vendor_tag_ops = nullptr, .dump = hal_dev_dump, .flush = hal_dev_flush, .reserved = { nullptr }, }; class='txt' type='search' size='10' name='q' value=''/>
blob: ba0da59a16065acb553f26820c9942e9320dce03 (plain)
1
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-log-in"><path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path><polyline points="10 17 15 12 10 7"></polyline><line x1="15" y1="12" x2="3" y2="12"></line></svg>