mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-24 17:15:07 +03:00
libcamera: camera_sensor: Register ColorFilterArrangement
Inspect the list of media bus codes supported by the camera sensor in order to deduce the color filter arrangement and register the ColorFilterArrangement draft property. Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
1c0096d751
commit
0a0264da8d
1 changed files with 32 additions and 4 deletions
|
@ -17,6 +17,7 @@
|
|||
|
||||
#include <libcamera/property_ids.h>
|
||||
|
||||
#include "libcamera/internal/bayer_format.h"
|
||||
#include "libcamera/internal/formats.h"
|
||||
#include "libcamera/internal/sysfs.h"
|
||||
#include "libcamera/internal/utils.h"
|
||||
|
@ -178,10 +179,6 @@ int CameraSensor::init()
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = initProperties();
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Enumerate, sort and cache media bus codes and sizes. */
|
||||
formats_ = subdev_->formats(pad_);
|
||||
if (formats_.empty()) {
|
||||
|
@ -210,6 +207,10 @@ int CameraSensor::init()
|
|||
*/
|
||||
resolution_ = sizes_.back();
|
||||
|
||||
ret = initProperties();
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -307,6 +308,33 @@ int CameraSensor::initProperties()
|
|||
properties_.set(properties::PixelArrayActiveAreas, { crop });
|
||||
}
|
||||
|
||||
/* Color filter array pattern, register only for RAW sensors. */
|
||||
for (const auto &format : formats_) {
|
||||
unsigned int mbusCode = format.first;
|
||||
BayerFormat bayerFormat = BayerFormat::fromMbusCode(mbusCode);
|
||||
if (!bayerFormat.isValid())
|
||||
continue;
|
||||
|
||||
int32_t cfa;
|
||||
switch (bayerFormat.order) {
|
||||
case BayerFormat::BGGR:
|
||||
cfa = properties::draft::BGGR;
|
||||
break;
|
||||
case BayerFormat::GBRG:
|
||||
cfa = properties::draft::GBRG;
|
||||
break;
|
||||
case BayerFormat::GRBG:
|
||||
cfa = properties::draft::GRBG;
|
||||
break;
|
||||
case BayerFormat::RGGB:
|
||||
cfa = properties::draft::RGGB;
|
||||
break;
|
||||
}
|
||||
|
||||
properties_.set(properties::draft::ColorFilterArrangement, cfa);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue