[PATCH v5 4/5] libcamera: converter: Add DW100 converter class

Umang Jain umang.jain at ideasonboard.com
Wed Jul 17 13:07:32 CEST 2024



On 17/07/24 3:35 pm, Jacopo Mondi wrote:
> Hi Umang
>
> On Wed, Jul 10, 2024 at 01:51:50AM GMT, Umang Jain wrote:
>> DW100 Dewarp engine is present on i.MX8MP SoC. This patch
>> provides a converter class (inherited from V4L2M2MConverter).
>>
>> The DW100 dewarp engine has scaling capabilites and can be used
>> to set crop rectangles in the rkisp1 pipeline handler. Plumbing
>> in the RkISP1 pipeline-handler is done in the subsequent patch.
>>
>> The ConverterDW100 class can be extended later (as additional
>> development) to support the dewarping by setting a dewarp vertex
>> map as well.
>>
>> Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
>> ---
>>   .../internal/converter/converter_dw100.h      | 24 ++++++++++++
>>   .../libcamera/internal/converter/meson.build  |  1 +
>>   src/libcamera/converter/converter_dw100.cpp   | 37 +++++++++++++++++++
>>   src/libcamera/converter/meson.build           |  1 +
>>   4 files changed, 63 insertions(+)
>>   create mode 100644 include/libcamera/internal/converter/converter_dw100.h
>>   create mode 100644 src/libcamera/converter/converter_dw100.cpp
>>
>> diff --git a/include/libcamera/internal/converter/converter_dw100.h b/include/libcamera/internal/converter/converter_dw100.h
>> new file mode 100644
>> index 00000000..dc41f365
>> --- /dev/null
>> +++ b/include/libcamera/internal/converter/converter_dw100.h
>> @@ -0,0 +1,24 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +/*
>> + * Copyright (C) 2024, Ideas On Board Oy
>> + *
>> + * i.MX8MP Dewarp Engine integration
>> + */
>> +
>> +#pragma once
>> +
>> +#include "libcamera/internal/converter/converter_v4l2_m2m.h"
>> +
>> +namespace libcamera {
>> +
>> +class MediaDevice;
>> +class Rectangle;
>> +class Stream;
>> +
>> +class ConverterDW100 : public V4L2M2MConverter
>> +{
>> +public:
>> +	ConverterDW100(std::shared_ptr<MediaDevice> media);
>> +};
>> +
>> +} /* namespace libcamera */
>> diff --git a/include/libcamera/internal/converter/meson.build b/include/libcamera/internal/converter/meson.build
>> index 891e79e7..85007a4b 100644
>> --- a/include/libcamera/internal/converter/meson.build
>> +++ b/include/libcamera/internal/converter/meson.build
>> @@ -1,5 +1,6 @@
>>   # SPDX-License-Identifier: CC0-1.0
>>
>>   libcamera_internal_headers += files([
>> +    'converter_dw100.h',
>>       'converter_v4l2_m2m.h',
>>   ])
>> diff --git a/src/libcamera/converter/converter_dw100.cpp b/src/libcamera/converter/converter_dw100.cpp
>> new file mode 100644
>> index 00000000..3061fc71
>> --- /dev/null
>> +++ b/src/libcamera/converter/converter_dw100.cpp
>> @@ -0,0 +1,37 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +/*
>> + * Copyright (C) 2024, Ideas On Board Oy
>> + *
>> + * i.MX8MP Dewarp Engine integration
>> + */
>> +
>> +#include "libcamera/internal/converter/converter_dw100.h"
>> +
>> +#include <libcamera/base/log.h>
>> +
>> +#include <libcamera/geometry.h>
>> +
>> +#include "libcamera/internal/media_device.h"
>> +#include "libcamera/internal/v4l2_videodevice.h"
>> +
>> +namespace libcamera {
>> +
>> +LOG_DECLARE_CATEGORY(Converter)
>> +
>> +/**
>> + * \class libcamera::ConverterDW100
>> + * \brief The i.MX8MP dewarp converter implements the converter interface based
>> + * on V4L2 M2M device.
>> +*/
>> +
>> +/**
>> + * \fn ConverterDW100::ConverterDW100
>> + * \brief Construct a ConverterDW100 instance
>> + * \param[in] media The media device implementing the converter
>> + */
>> +ConverterDW100::ConverterDW100(std::shared_ptr<MediaDevice> media)
>> +	: V4L2M2MConverter(media.get(), Feature::Crop)
>> +{
>> +}
>> +
> I might have missed where the matching compatible is added.

Currently I have not, since compatible string is only for simple 
pipeline handlers

ConverterDW100 present on I.MX8MP can be tested with ISI and simple 
pipeline handler (with YUV sensor).

I don't have a YUV sensor to test this particular use-case. Hence, I 
added a \todo to extend compatibles and REGISTER_CONVERTER macro to be 
adjusted at a later stage.

>
>> +} /* namespace libcamera */
>> diff --git a/src/libcamera/converter/meson.build b/src/libcamera/converter/meson.build
>> index 2aa72fe4..175581b8 100644
>> --- a/src/libcamera/converter/meson.build
>> +++ b/src/libcamera/converter/meson.build
>> @@ -1,5 +1,6 @@
>>   # SPDX-License-Identifier: CC0-1.0
>>
>>   libcamera_sources += files([
>> +        'converter_dw100.cpp',
>>           'converter_v4l2_m2m.cpp'
>>   ])
>> --
>> 2.45.2
>>



More information about the libcamera-devel mailing list