[libcamera-devel] [PATCH] android: nautilus: Add camera HAL configuration

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu May 27 05:05:05 CEST 2021


Hi Hiro,

On Thu, May 27, 2021 at 01:18:44AM +0900, Hirokazu Honda wrote:
> On Thu, May 27, 2021 at 1:14 AM Laurent Pinchart wrote:
> > On Thu, May 27, 2021 at 12:20:13AM +0900, Hirokazu Honda wrote:
> > > On Wed, May 26, 2021 at 11:57 PM Laurent Pinchart wrote:
> > > > On Wed, May 26, 2021 at 06:36:34PM +0900, Hirokazu Honda wrote:
> > > >> On Wed, May 26, 2021 at 6:21 PM Umang Jain wrote:
> > > >>> On 5/26/21 1:35 PM, Jacopo Mondi wrote:
> > > >>>> On Wed, May 26, 2021 at 12:45:42PM +0530, Umang Jain wrote:
> > > >>>>> nautilus has two internal cameras, one UVC and one for the IPU3.
> > > >>>>> However, libcamera assumes all UVC cameras as 'external' hence, mark
> > > >>>>> the location of UVC camera in HAL configuration as 'external' too.
> > > >>>>>
> > > >>>>> Note that the presence of UVC camera in camera HAL will complain:
> > > >>>>>
> > > >>>>>> ERROR HAL camera_device.cpp:701 '\_SB_.PCI0.XHCI.RHUB.HS09-9:1.0-04f2:b647':
> > > >>>>>    Failed to map mandatory Android format IMPLEMENTATION_DEFINED (0x00000022): aborting
> > > >>>>>> ERROR HAL camera_hal_manager.cpp:153 Failed to initialize camera:
> > > >>>>>    \_SB_.PCI0.XHCI.RHUB.HS09-9:1.0-04f2:b647
> > > >>>>>
> > > >>>>> This is related to a known issue of UVC cameras on HAL which do not
> > > >>>>> provide NV12 by default.
> > > >>>> Does it work without configuration file support ?
> > > >>>
> > > >>> No, it won't, since it's UVC. And cannot work until there's a
> > > >>> format-convertor in place that can convert the stream to NV12 provided
> > > >>> by that camera, I suppose.
> > > >>
> > > >> It is time that we need a JPEG decoder in a post processing pipeline like a
> > > >> JPEG encoder.
> > > >
> > > > Or a YUYV to NV12 converter, as the camera can also produce YUYV ?
> > >
> > > I guess the camera is capable to produce YUYV only for lower resolutions
> > > and produce JPEG for higher resolutions?
> >
> > It's up to the camera, but generally speaking, yes, the highest
> > resolutions and frame rates are only available in MJPEG. Wouldn't a
> > software decoder likely be too slow in those cases though ?
>
> Right, on ChromeOS, if an app asks YUV and a camera is capable of producing
> MJPEG for the resolution, cros camera services requests HAL MJPEG and
> decodes it to YUV by jpeg decoder (with hw acceleration if there is,
> without if there isn't).
> So we don't need a JPEG decoder for ChromeOS. I don't know if it's nice to
> have a jpeg decoder in libcamera for other platforms.

Oh, nice :-) That certainly makes it easier for us.

We have generally considered JPEG out-of-scope for the libcamera core so
far, with the annoying exception of UVC. Maybe we'll need a JPEG decoder
for Android in the future, for UVC devices, but that will be for later.

> > > >>>> Also, if we don't mention the UVC camera in the config:
> > > >>>>>
> > > >>>>>> ERROR HALConfig camera_hal_config.cpp:393 Camera
> > > >>>>>    '\_SB_.PCI0.XHCI.RHUB.HS09-9:1.0-04f2:b647' not described in the HAL
> > > >>>>>    configuration file
> > > >>>>>> ERROR HAL camera_device.cpp:701 '\_SB_.PCI0.XHCI.RHUB.HS09-9:1.0-04f2:b647':
> > > >>>>>    Failed to map mandatory Android format IMPLEMENTATION_DEFINED (0x00000022): aborting
> > > >>>>>> ERROR HAL camera_hal_manager.cpp:153 Failed to initialize camera:
> > > >>>>>    \_SB_.PCI0.XHCI.RHUB.HS09-9:1.0-04f2:b647
> > > >>>>>
> > > >>>>> Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
> > > >>>>> ---
> > > >>>>>   src/android/data/nautilus/camera_hal.yaml | 8 ++++++++
> > > >>>>>   1 file changed, 8 insertions(+)
> > > >>>>>   create mode 100644 src/android/data/nautilus/camera_hal.yaml
> > > >>>>>
> > > >>>>> diff --git a/src/android/data/nautilus/camera_hal.yaml b/src/android/data/nautilus/camera_hal.yaml
> > > >>>>> new file mode 100644
> > > >>>>> index 00000000..f2d31e1c
> > > >>>>> --- /dev/null
> > > >>>>> +++ b/src/android/data/nautilus/camera_hal.yaml
> > > >>>>> @@ -0,0 +1,8 @@
> > > >>>>> +cameras:
> > > >>>>> +  "\\_SB_.PCI0.I2C2.CAM0":
> > > >>>>> +    location: back
> > > >>>>> +    rotation: 0
> > > >>>>> +
> > > >>>>> +  "\\_SB_.PCI0.XHCI.RHUB.HS09-9:1.0-04f2:b647":
> > > >>>>> +    location: external
> > > >>>>> +    rotation: 0

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list