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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2023, Linaro Ltd
* Copyright (C) 2023, 2024 Red Hat Inc.
*
* Authors:
* Hans de Goede <hdegoede@redhat.com>
*
* debayer base class
*/
#include "debayer.h"
namespace libcamera {
/**
* \struct DebayerParams
* \brief Struct to hold the debayer parameters.
*/
/**
* \var DebayerParams::kRGBLookupSize
* \brief Size of a color lookup table
*/
/**
* \typedef DebayerParams::ColorLookupTable
* \brief Type of the lookup tables for red, green, blue values
*/
/**
* \var DebayerParams::red
* \brief Lookup table for red color, mapping input values to output values
*/
/**
* \var DebayerParams::green
* \brief Lookup table for green color, mapping input values to output values
*/
/**
* \var DebayerParams::blue
* \brief Lookup table for blue color, mapping input values to output values
*/
/**
* \class Debayer
* \brief Base debayering class
*
* Base class that provides functions for setting up the debayering process.
*/
LOG_DEFINE_CATEGORY(Debayer)
Debayer::~Debayer()
{
}
/**
* \fn int Debayer::configure(const StreamConfiguration &inputCfg, const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs)
* \brief Configure the debayer object according to the passed in parameters.
* \param[in] inputCfg The input configuration.
* \param[in] outputCfgs The output configurations.
*
* \return 0 on success, a negative errno on failure.
*/
/**
* \fn Size Debayer::patternSize(PixelFormat inputFormat)
* \brief Get the width and height at which the bayer pattern repeats.
* \param[in] inputFormat The input format.
*
* Valid sizes are: 2x2, 4x2 or 4x4.
*
* \return Pattern size or an empty size for unsupported inputFormats.
*/
/**
* \fn std::vector<PixelFormat> Debayer::formats(PixelFormat inputFormat)
* \brief Get the supported output formats.
* \param[in] inputFormat The input format.
*
* \return All supported output formats or an empty vector if there are none.
*/
/**
* \fn std::tuple<unsigned int, unsigned int> Debayer::strideAndFrameSize(const PixelFormat &outputFormat, const Size &size)
* \brief Get the stride and the frame size.
* \param[in] outputFormat The output format.
* \param[in] size The output size.
*
* \return A tuple of the stride and the frame size, or a tuple with 0,0 if
* there is no valid output config.
*/
/**
* \fn void Debayer::process(FrameBuffer *input, FrameBuffer *output, DebayerParams params)
* \brief Process the bayer data into the requested format.
* \param[in] input The input buffer.
* \param[in] output The output buffer.
* \param[in] params The parameters to be used in debayering.
*
* \note DebayerParams is passed by value deliberately so that a copy is passed
* when this is run in another thread by invokeMethod().
*/
/**
* \fn virtual SizeRange Debayer::sizes(PixelFormat inputFormat, const Size &inputSize)
* \brief Get the supported output sizes for the given input format and size.
* \param[in] inputFormat The input format.
* \param[in] inputSize The input size.
*
* \return The valid size ranges or an empty range if there are none.
*/
/**
* \var Signal<FrameBuffer *> Debayer::inputBufferReady
* \brief Signals when the input buffer is ready.
*/
/**
* \var Signal<FrameBuffer *> Debayer::outputBufferReady
* \brief Signals when the output buffer is ready.
*/
} /* namespace libcamera */
|