summaryrefslogtreecommitdiff
path: root/utils/hooks/pre-commit
diff options
context:
space:
mode:
Diffstat (limited to 'utils/hooks/pre-commit')
0 files changed, 0 insertions, 0 deletions
='n61' href='#n61'>61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
 * Copyright (C) 2019, Google Inc.
 *
 * camera_proxy.cpp - Proxy to camera devices
 */

#include "camera_proxy.h"

#include <system/camera_metadata.h>

#include <libcamera/object.h>

#include "log.h"
#include "message.h"
#include "utils.h"

#include "camera_device.h"
#include "thread_rpc.h"

using namespace libcamera;

LOG_DECLARE_CATEGORY(HAL);

/*
 * \class CameraProxy
 *
 * The CameraProxy wraps a CameraDevice and implements the camera3_device_t
 * API, bridging calls received from the camera framework to the CameraDevice.
 *
 * Bridging operation calls between the framework and the CameraDevice is
 * required as the two run in two different threads and certain operations,
 * such as queueing a new capture request to the camera, shall be called in
 * the thread that dispatches events. Other operations do not require any
 * bridging and resolve to direct function calls on the CameraDevice instance
 * instead.
 */

static int hal_dev_initialize(const struct camera3_device *dev,
			      const camera3_callback_ops_t *callback_ops)
{
	if (!dev)
		return -EINVAL;

	CameraProxy *proxy = reinterpret_cast<CameraProxy *>(dev->priv);
	proxy->initialize(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;

	CameraProxy *proxy = reinterpret_cast<CameraProxy *>(dev->priv);
	return proxy->configureStreams(stream_list);
}

static const camera_metadata_t *
hal_dev_construct_default_request_settings(const struct camera3_device *dev,
					   int type)
{