[libcamera-devel] [PATCH] android: nautilus: Add camera HAL configuration
Umang Jain
umang.jain at ideasonboard.com
Wed May 26 19:28:45 CEST 2021
Hi Laurent,
On 5/26/21 8:29 PM, Laurent Pinchart wrote:
> Hi Umang,
>
> On Wed, May 26, 2021 at 03:42:53PM +0530, Umang Jain wrote:
>> On 5/26/21 3:27 PM, Jacopo Mondi wrote:
>>> On Wed, May 26, 2021 at 02:51:19PM +0530, 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.
>>> Right, it was not working before the configuration file series went
>>> in, right ? What I'm interested about is that there's no regression
>>> due to the series :)
>> Oh yea, no regression. I just went and wrote a verbose commit message
>> about what's "fine"
>>
>>>>>> 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
>>> This is "fine".. If you look at the caller of
>>> CameraHalConfig::cameraConfigData() in camera_hal_manager.cpp
>>>
>>> const CameraConfigData *cameraConfigData = halConfig_.cameraConfigData(cam->id());
>>> if (!isCameraExternal && !cameraConfigData) {
>>> LOG(HAL, Error)
>>> << "HAL configuration entry for internal camera "
>>> << cam->id() << " is missing";
>>> return;
>>> }
>>>
>>> You'll see that the configuration entry for external cameras is not
>>> mandatory, and the UVC camera should be correctly identified as
>>> EXTERNAL.
>>>
>>> We spam the log enough with worrying errors which are not really
>>> errors, so we might want to suppress this one for external cameras ?
>> Won't supress it entirely, but maybe not keep it as ERROR. WARN or DEBUG
>> maybe?
> Given that the UVC camera is internal, what happens if you set its
> location to front in the configuration file ?
It complains :-)
There is a location check of what libcamera reports vs what's provided
in camera hal.
[0:16:15.090460200] [4680] WARN HAL camera_device.cpp:481
'\_SB_.PCI0.XHCI.RHUB.HS09-9:1.0-04f2:b647': Camera location does not
match configuration file. Using 2
Oh, I can't un-see "2" now ;-)
>
>>>>>>> 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
More information about the libcamera-devel
mailing list