[v2,0/4] libcamera: rkisp1: Plumb i.MX8MP DW100 dewarper
mbox series

Message ID 20240519115622.32170-1-umang.jain@ideasonboard.com
Headers show
Series
  • libcamera: rkisp1: Plumb i.MX8MP DW100 dewarper
Related show

Message

Umang Jain May 19, 2024, 11:56 a.m. UTC
This series intends to support i.MX8MP DW100 dewarper in rkisp1 pipeline
handler.

Patch 1/4 prepares the rkisp1 pipeline handler to register controls
for the camera, outside of the IPA. The dewarper will let us support
scaler crop - which will be registered as camera controls.

Patch 2/4 is also a prepartory patch to accept scaler crop rectangles
for the converter_v4l2_m2m on each stream.

Patch 3/4 adds a base RkISP1Dewarper class inheriting from
converter_v4l2_m2m. This provides a scaler crop setting helper.

Patch 4/4 finally plumbs the dewarper in the rkisp1 pipeline handler.
If the scaler crop control is found set in the request, it is applied
on the dewarper.

The series is tested on i.MX8MP and cam utility, by setting scaler crop
control via capture script.

Additional development:
----------------------

Initially when I developed, I added support to load a dewarp config file
via environment variables which then can be used to set
V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP control. However, it has
needs adhoc development to support v4l2 compound controls (which
also I tried) but ultimately I failed to test, if this control was
really working for me. Hence, I decided to send this series without
that development and hope it can be done on top of this.

Changes in v2:
- Fix raw capture configuration, disable dewarper in that case

Umang Jain (4):
  libcamera: rkisp1: Prepare for additional camera controls
  libcamera: converter_v4l2_m2m: Support crop selection
  libcamera: rkisp1: Add base class DW100 dewarper
  libcamera: rkisp1: Plumb through RkISP1Dewarper

 .../internal/converter/converter_v4l2_m2m.h   |   5 +
 .../converter/converter_v4l2_m2m.cpp          |  26 +++
 src/libcamera/pipeline/rkisp1/meson.build     |   1 +
 src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 165 +++++++++++++++++-
 .../pipeline/rkisp1/rkisp1_dewarper.cpp       |  38 ++++
 .../pipeline/rkisp1/rkisp1_dewarper.h         |  25 +++
 src/libcamera/pipeline/rkisp1/rkisp1_path.cpp |  12 +-
 src/libcamera/pipeline/rkisp1/rkisp1_path.h   |  14 ++
 8 files changed, 275 insertions(+), 11 deletions(-)
 create mode 100644 src/libcamera/pipeline/rkisp1/rkisp1_dewarper.cpp
 create mode 100644 src/libcamera/pipeline/rkisp1/rkisp1_dewarper.h

Comments

Kieran Bingham May 20, 2024, 12:22 p.m. UTC | #1
Quoting Umang Jain (2024-05-19 12:56:18)
> This series intends to support i.MX8MP DW100 dewarper in rkisp1 pipeline
> handler.
> 
> Patch 1/4 prepares the rkisp1 pipeline handler to register controls
> for the camera, outside of the IPA. The dewarper will let us support
> scaler crop - which will be registered as camera controls.
> 
> Patch 2/4 is also a prepartory patch to accept scaler crop rectangles
> for the converter_v4l2_m2m on each stream.
> 
> Patch 3/4 adds a base RkISP1Dewarper class inheriting from
> converter_v4l2_m2m. This provides a scaler crop setting helper.
> 
> Patch 4/4 finally plumbs the dewarper in the rkisp1 pipeline handler.
> If the scaler crop control is found set in the request, it is applied
> on the dewarper.
> 
> The series is tested on i.MX8MP and cam utility, by setting scaler crop
> control via capture script.

Presently this series fails CI with some compile errors picked up by
clang:

https://gitlab.freedesktop.org/camera/libcamera/-/jobs/58928404


> 
> Additional development:
> ----------------------
> 
> Initially when I developed, I added support to load a dewarp config file
> via environment variables which then can be used to set
> V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP control. However, it has
> needs adhoc development to support v4l2 compound controls (which
> also I tried) but ultimately I failed to test, if this control was
> really working for me. Hence, I decided to send this series without
> that development and hope it can be done on top of this.

I would expect that such topics were likely covered when Xavier last
looked at this:

 https://patchwork.libcamera.org/project/libcamera/list/?series=3477&archive=both&state=*

That was back in 2022, but I think it would be beneficial if you could
try to apply that series and take a look.

--
Regards

Kieran



> 
> Changes in v2:
> - Fix raw capture configuration, disable dewarper in that case
> 
> Umang Jain (4):
>   libcamera: rkisp1: Prepare for additional camera controls
>   libcamera: converter_v4l2_m2m: Support crop selection
>   libcamera: rkisp1: Add base class DW100 dewarper
>   libcamera: rkisp1: Plumb through RkISP1Dewarper
> 
>  .../internal/converter/converter_v4l2_m2m.h   |   5 +
>  .../converter/converter_v4l2_m2m.cpp          |  26 +++
>  src/libcamera/pipeline/rkisp1/meson.build     |   1 +
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 165 +++++++++++++++++-
>  .../pipeline/rkisp1/rkisp1_dewarper.cpp       |  38 ++++
>  .../pipeline/rkisp1/rkisp1_dewarper.h         |  25 +++
>  src/libcamera/pipeline/rkisp1/rkisp1_path.cpp |  12 +-
>  src/libcamera/pipeline/rkisp1/rkisp1_path.h   |  14 ++
>  8 files changed, 275 insertions(+), 11 deletions(-)
>  create mode 100644 src/libcamera/pipeline/rkisp1/rkisp1_dewarper.cpp
>  create mode 100644 src/libcamera/pipeline/rkisp1/rkisp1_dewarper.h
> 
> -- 
> 2.44.0
>