[libcamera-devel,0/3] Restore CameraSensor usage for YUV sensors
mbox series

Message ID 20210131181722.5410-1-laurent.pinchart@ideasonboard.com
Headers show
Series
  • Restore CameraSensor usage for YUV sensors
Related show

Message

Laurent Pinchart Jan. 31, 2021, 6:17 p.m. UTC
Hello,

The recent changes to the CameraSensor class that made the V4L2
EXPOSURE, HBLANK and PIXEL_RATE controls mandatory broke usage of YUV
sensors in the simple pipeline handler, as many YUV sensor drivers don't
support those controls.

Drivers could of course be extended one by one to support the mandatory
controls, but not all of these controls make sense for YUV sensors. YUV
sensors include an ISP, and typically expose a higher-level API than raw
sensors. They may not support manual control of exposure time (and while
most of the sensors should support this, information to implement manual
exposure time is not as widely available in sensor documentation than
for raw sensors) or horizontal blanking.

Support for those three controls is needed for raw sensors as they are
required to properly configure the ISP or implement the imaging
algorithms. As the simple pipeline handler doesn't support ISPs and rely
on the sensor including an ISP, the information provided by these
controls isn't needed, as shown by the pipeline handler not calling
CameraSensor::sensorInfo(). The best course of action is thus to make
these controls mandatory for raw sensors only, restoring support of YUV
sensors in the simple pipeline handler.

Laurent Pinchart (3):
  libcamera: camera_sensor: Store Bayer pattern in class member
  libcamera: camera_sensor: Restrict sensor info to raw sensors
  libcamera: camera_sensor: Check control availability from idmap

 Documentation/sensor_driver_requirements.rst |  2 +-
 include/libcamera/internal/camera_sensor.h   |  2 +
 src/libcamera/camera_sensor.cpp              | 98 +++++++++++++-------
 3 files changed, 65 insertions(+), 37 deletions(-)