[PATCH v3 00/17] rkisp1: Fix aspect ratio and ScalerCrop
Stefan Klug
stefan.klug at ideasonboard.com
Fri Dec 6 11:13:22 CET 2024
Hi all,
This series contains fixes for a few issues on the imx8mp that I'd like
to get in before the next release.
Version 3 is a major extension which is described in the last paragraph.
Patch 1 is a drive by fix
Patch 2 Fixes the aspect ratio on the imx8mp. There is code to keep the
aspect ratio in the rkisp1 pipeline that adjust the input crop on the
resizer stage. On the imx8mp however the resizer hardware is missing
that functionality and cropping needs to be done on the ISP output.
Patch 2 implements that.
Patches 3-8 fix the ScalerCrop control. The existing implementation
implements ScalerCrop in dewarper coordinates (After scaling down).
This is incorrect as ScalerCrop is specified to be in sensor
coordinates. To fix that, patches 3-6 do preparatory changes and patch 6
implements the correct ScalerCrop control. Patch 8 adds
ScalerMaximumCrop for completeness sake.
Note that this solution while being correct on the numbers is still not
ideal, because the aspect ratio preserving crop on the ISP output is
still applied unconditionally. That will get fixed in an upcoming
series, where the full sensor size get's passed to the dewarper and all
cropping/scaling gets handled there.
Patches 9-17 were added after version 2 because it got clear that the
current master is completely missing the dewarper size validation and
that requires fixing. So patches 9-15 do the necessary plumbing and
implementation of the validation. Thanks Jacopo for helping with that.
Patches 16-17 fixe another bug found during that work where the sensor
might get configured to a size not supported by the isp.
Best regards,
Stefan
Changes in v3:
- Fixes from review (see individual changelogs)
- Added pipeline validation for the dewarper
- Fixed bug where sensor might be configured to a format incompatible
with the isp
Changes in v2:
- Some smaller fixes from review (see individual changelogs)
- Added [PATCH v2 6/8] libcamera: converter_v4l2_m2m: Improve crop
bounds support to be able to provide sane default values for
ScalerCrop before configure()
Jacopo Mondi (2):
libcamera: converter: Add functions to adjust config
libcamera: stream: Add operator<<(StreamConfiguration)
Stefan Klug (15):
libcamera: rkisp1: Fix scope of dewarper stop() exit action
libcamera: rkisp1: Keep aspect ratio on imx8mp
libcamera: geometry: Add Rectangle::transformedBetween()
pipeline: rkisp1: Split inputCrop and outputCrop
pipeline: rkisp1: Reorder sensorInfo collection code
libcamera: converter_v4l2_m2m: Improve crop bounds support
pipeline: rkisp1: Fix ScalerCrop to be in sensor coordinates
pipeline: rkisp1: Add ScalerMaximumCrop property
libcamera: rkisp1: Refactor path validation
libcamera: rkisp1: Enable the dewarper unconditionally
camera: Add a const version of the pipe() function
libcamera: rkisp1: make RkISP1CameraConfiguration a friend of the
pipeline handler
pipeline: rkisp1: Fix config validation when dewarper is used
libcamera: camera_sensor: Add parameter to limit returned sensor size
libcamera: pipeline: rkisp1: Limit sensor size to max resolution
include/libcamera/geometry.h | 3 +
include/libcamera/internal/camera.h | 1 +
include/libcamera/internal/camera_sensor.h | 2 +-
include/libcamera/internal/converter.h | 17 ++
.../internal/converter/converter_v4l2_m2m.h | 12 +
include/libcamera/stream.h | 2 +
src/libcamera/camera.cpp | 5 +
src/libcamera/converter.cpp | 46 +++
.../converter/converter_v4l2_m2m.cpp | 282 ++++++++++++++----
src/libcamera/geometry.cpp | 49 +++
src/libcamera/pipeline/rkisp1/rkisp1.cpp | 182 ++++++++---
src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 13 +-
src/libcamera/pipeline/rkisp1/rkisp1_path.h | 1 +
src/libcamera/sensor/camera_sensor.cpp | 3 +
src/libcamera/sensor/camera_sensor_legacy.cpp | 9 +-
src/libcamera/stream.cpp | 13 +
test/geometry.cpp | 11 +
17 files changed, 543 insertions(+), 108 deletions(-)
--
2.43.0
More information about the libcamera-devel
mailing list