[libcamera-devel] [PATCH] android: camera_device: Only advertise RAW support if RAW16 is available

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Dec 31 16:17:25 CET 2020


On Thu, Dec 31, 2020 at 05:16:49PM +0200, Laurent Pinchart wrote:
> Hi Jacopo,

Or rather Niklas. My fingers type Jacopo's name automatically when
replying to patches for the HAL :-)

> Thank you for the patch.
> 
> On Thu, Dec 31, 2020 at 11:02:18AM +0100, Niklas Söderlund wrote:
> > The HAL expects RAW16 support if the RAW capability is set, add a check
> 
> Maybe "The Android camera service" instead of "The HAL" to emphasize
> this is not an internal requirement of our implementation ? Or maybe we
> should even expand the commit message to explain the requirement ? It
> wasn't clear from the documentation (although re-reading it now, I
> wonder why) and took us some time to figure it out, it's useful to
> capture it. How about this ?
> 
> The Android camera2 API defines a RAW capture capability ([1]) for
> devices that support "outputting RAW buffers and metadata for
> interpreting them". This capability requires the camera device to
> support RAW_SENSOR ([2]) as an output format. Despite what its name may
> sound like, the RAW_SENSOR format is defined as a 16 bits RAW format,
> not an opaque implementation-dependent format (which is instead called
> RAW_PRIVATE). Devices may additionally support the RAW10 and RAW12
> formats, but that isn't enough to claim RAW capture capability.
> 
> To comply with the API requirements, only report the
> ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW capability when 16-bit RAW is
> supported.
> 
> [1] https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
> [2] https://developer.android.com/reference/android/graphics/ImageFormat#RAW_SENSOR
> 
> > for this.
> > 
> > Suggested-by: Jacopo Mondi <jacopo at jmondi.org>
> > Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> 
> Tested-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> 
> > ---
> >  src/android/camera_device.cpp | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> > index 7678d4485ce987b5..23be2a593a2aee5e 100644
> > --- a/src/android/camera_device.cpp
> > +++ b/src/android/camera_device.cpp
> > @@ -1099,7 +1099,9 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
> >  	if (cameraConfig && !cameraConfig->empty()) {
> >  		const PixelFormatInfo &info =
> >  			PixelFormatInfo::info(cameraConfig->at(0).pixelFormat);
> > -		if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW) {
> > +		/* Only advertise RAW support if RAW16 is possible. */
> > +		if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW &&
> > +		    info.bitsPerPixel == 16) {
> >  			rawStreamAvailable = true;
> >  			availableCapabilities.push_back(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW);
> >  		}

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list