/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2020, Google Inc. * * class.h - Utilities and helpers for classes */ #ifndef __LIBCAMERA_CLASS_H__ #define __LIBCAMERA_CLASS_H__ #include namespace libcamera { #ifndef __DOXYGEN__ #define LIBCAMERA_DISABLE_COPY(klass) \ klass(const klass &) = delete; \ klass &operator=(const klass &) = delete; #define LIBCAMERA_DISABLE_MOVE(klass) \ klass(klass &&) = delete; \ klass &operator=(klass &&) = delete; #define LIBCAMERA_DISABLE_COPY_AND_MOVE(klass) \ LIBCAMERA_DISABLE_COPY(klass) \ LIBCAMERA_DISABLE_MOVE(klass) #else #define LIBCAMERA_DISABLE_COPY(klass) #define LIBCAMERA_DISABLE_MOVE(klass) #define LIBCAMERA_DISABLE_COPY_AND_MOVE(klass) #endif #ifndef __DOXYGEN__ #define LIBCAMERA_DECLARE_PRIVATE(klass) \ public: \ class Private; \ friend class Private; #define LIBCAMERA_DECLARE_PUBLIC(klass) \ friend class klass; \ using Public = klass; #define LIBCAMERA_D_PTR() \ _d(); #define LIBCAMERA_O_PTR() \ _o(); #else #define LIBCAMERA_DECLARE_PRIVATE(klass) #define LIBCAMERA_DECLARE_PUBLIC(klass) #define LIBCAMERA_D_PTR(klass) #define LIBCAMERA_O_PTR(klass) #endif class Extensible { public: class Private { public: Private(Extensible *o); virtual ~Private(); #ifndef __DOXYGEN__ template const T *_o() const { return static_cast(o_); } template T *_o() { return static_cast(o_); } #endif private: Extensible *const o_; }; Extensible(Private *d); protected: #ifndef __DOXYGEN__ template const T *_d() const { return static_cast(d_.get()); } template T *_d() { return static_cast(d_.get()); } #endif private: const std::unique_ptr d_; }; } /* namespace libcamera */ #endif /* __LIBCAMERA_CLASS_H__ */ raspberrypi/controller/alsc_status.h?h=pobrn/rebase&id=6084217cd3b52ba5677e3ca2de0e21008fdaa735'>diff
blob: d3f579715594f43b8ea667661b68d6f52cf448c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * Copyright (C) 2019, Raspberry Pi (Trading) Limited
 *
 * alsc_status.h - ALSC (auto lens shading correction) control algorithm status
 */
#pragma once

// The ALSC algorithm should post the following structure into the image's
// "alsc.status" metadata.

#ifdef __cplusplus
extern "C" {
#endif

#define ALSC_CELLS_X 16
#define ALSC_CELLS_Y 12

struct AlscStatus {
	double r[ALSC_CELLS_Y][ALSC_CELLS_X];
	double g[ALSC_CELLS_Y][ALSC_CELLS_X];
	double b[ALSC_CELLS_Y][ALSC_CELLS_X];
};

#ifdef __cplusplus
}
#endif