/* 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 <system/camera_metadata.h> #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<CameraDevice *>(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<CameraDevice *>(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<CameraDevice *>(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<CameraDevice *>(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<CameraDevice *>(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<camera3_device_t *>(hw_device); CameraDevice *camera = reinterpret_cast<CameraDevice *>(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 }, }; pstreaming'>pfc/rkisp1-free-run-upstreaming</option> <option value='pfc/rkisp1-free-run-v2'>pfc/rkisp1-free-run-v2</option> <option value='rcar-gen4'>rcar-gen4</option> <option value='yaml-emitter'>yaml-emitter</option> </select> <input type='submit' value='switch'/></form></td></tr> <tr><td class='sub'>Jacopo Mondi's clone of libcamera</td><td class='sub right'>git repository hosting on libcamera.org</td></tr></table> <table class='tabs'><tr><td> <a href='/libcamera/jmondi/libcamera.git/?h=multicontext/rpi/v3'>summary</a><a href='/libcamera/jmondi/libcamera.git/refs/?h=multicontext/rpi/v3&id=364ae3b78d3f0fc18c9bf1c2c3ee9fee1d80e68a'>refs</a><a href='/libcamera/jmondi/libcamera.git/log/utils/gen-ipa-priv-key.sh?h=multicontext/rpi/v3'>log</a><a class='active' href='/libcamera/jmondi/libcamera.git/tree/utils/gen-ipa-priv-key.sh?h=multicontext/rpi/v3&id=364ae3b78d3f0fc18c9bf1c2c3ee9fee1d80e68a'>tree</a><a href='/libcamera/jmondi/libcamera.git/commit/utils/gen-ipa-priv-key.sh?h=multicontext/rpi/v3&id=364ae3b78d3f0fc18c9bf1c2c3ee9fee1d80e68a'>commit</a><a href='/libcamera/jmondi/libcamera.git/diff/utils/gen-ipa-priv-key.sh?h=multicontext/rpi/v3&id=364ae3b78d3f0fc18c9bf1c2c3ee9fee1d80e68a'>diff</a></td><td class='form'><form class='right' method='get' action='/libcamera/jmondi/libcamera.git/log/utils/gen-ipa-priv-key.sh'> <input type='hidden' name='h' value='multicontext/rpi/v3'/><input type='hidden' name='id' value='364ae3b78d3f0fc18c9bf1c2c3ee9fee1d80e68a'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/libcamera/jmondi/libcamera.git/tree/?h=multicontext/rpi/v3&id=364ae3b78d3f0fc18c9bf1c2c3ee9fee1d80e68a'>root</a>/<a href='/libcamera/jmondi/libcamera.git/tree/utils?h=multicontext/rpi/v3&id=364ae3b78d3f0fc18c9bf1c2c3ee9fee1d80e68a'>utils</a>/<a href='/libcamera/jmondi/libcamera.git/tree/utils/gen-ipa-priv-key.sh?h=multicontext/rpi/v3&id=364ae3b78d3f0fc18c9bf1c2c3ee9fee1d80e68a'>gen-ipa-priv-key.sh</a></div><div class='content'>blob: 919751f25b714e8a39c1969784786afa72ec3aeb (<a href='/libcamera/jmondi/libcamera.git/plain/utils/gen-ipa-priv-key.sh?h=multicontext/rpi/v3&id=364ae3b78d3f0fc18c9bf1c2c3ee9fee1d80e68a'>plain</a>) <table summary='blob content' class='blob'> <tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a> <a id='n2' href='#n2'>2</a> <a id='n3' href='#n3'>3</a> <a id='n4' href='#n4'>4</a> <a id='n5' href='#n5'>5</a> <a id='n6' href='#n6'>6</a> <a id='n7' href='#n7'>7</a> <a id='n8' href='#n8'>8</a> <a id='n9' href='#n9'>9</a> <a id='n10' href='#n10'>10</a> <a id='n11' href='#n11'>11</a> </pre></td> <td class='lines'><pre><code><span class="hl slc">#!/bin/sh</span> <span class="hl slc"># SPDX-License-Identifier: GPL-2.0-or-later</span> <span class="hl slc"># Copyright (C) 2020, Google Inc.</span> <span class="hl slc">#</span> <span class="hl slc"># Author: Laurent Pinchart <laurent.pinchart@ideasonboard.com></span> <span class="hl slc">#</span> <span class="hl slc"># gen-ipa-priv-key.sh - Generate an RSA private key to sign IPA modules</span> key<span class="hl opt">=</span><span class="hl str">"</span><span class="hl ipl">$1</span><span class="hl str">"</span> openssl genpkey <span class="hl kwb">-algorithm</span> RSA <span class="hl kwb">-out</span> <span class="hl str">"</span><span class="hl ipl">${key}</span><span class="hl str">"</span> <span class="hl kwb">-pkeyopt</span> rsa_keygen_bits<span class="hl opt">:</span><span class="hl num">2048</span> </code></pre></td></tr></table> </div> <!-- class=content --> <div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.1</a> (<a href='https://git-scm.com/'>git 2.18.0</a>) at 2025-02-26 12:23:30 +0000</div> </div> <!-- id=cgit --> </body> </html>