[PATCH v4 06/18] libcamera: software_isp: Add SwStatsCpu class
Milan Zamazal
mzamazal at redhat.com
Mon Mar 4 18:25:05 CET 2024
Hans de Goede <hdegoede at redhat.com> writes:
> Hi,
>
> On 3/4/24 4:05 PM, Milan Zamazal wrote:
>> Hans de Goede <hdegoede at redhat.com> writes:
>>
>>> Add a CPU based SwStats implementation for SoftwareISP / SoftIPA use.
>>>
>>> This implementation offers a configure function + functions to gather
>>> statistics on a line by line basis. This allows CPU based software
>>> debayering to call into interlace debayering and statistics gathering
>>> on a line by line bases while the input data is still hot in the cache.
>>>
>>> This implementation also allows specifying a window over which to gather
>>> statistics instead of processing the whole frame.
>>>
>>> Doxygen documentation by Dennis Bonke.
>>>
>>> Tested-by: Bryan O'Donoghue <bryan.odonoghue at linaro.org> # sc8280xp Lenovo x13s
>>> Tested-by: Pavel Machek <pavel at ucw.cz>
>>> Reviewed-by: Pavel Machek <pavel at ucw.cz>
>>> Co-developed-by: Andrey Konovalov <andrey.konovalov at linaro.org>
>>> Signed-off-by: Andrey Konovalov <andrey.konovalov at linaro.org>
>>> Co-developed-by: Pavel Machek <pavel at ucw.cz>
>>> Signed-off-by: Pavel Machek <pavel at ucw.cz>
>>> Co-developed-by: Dennis Bonke <admin at dennisbonke.com>
>>> Signed-off-by: Dennis Bonke <admin at dennisbonke.com>
>>> Co-developed-by: Marttico <g.martti at gmail.com>
>>> Signed-off-by: Marttico <g.martti at gmail.com>
>>> Co-developed-by: Toon Langendam <t.langendam at gmail.com>
>>> Signed-off-by: Toon Langendam <t.langendam at gmail.com>
>>> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
>>
>> One more minor typo in a docstring below, after it's fixed:
>>
>> Reviewed-by: Milan Zamazal <mzamazal at redhat.com>
>>
>>> ---
>>> Changes in v3:
>>> - Merge SwStats base-class into SwStatsCpu
>>> - Move swstats_cpu.h to src/libcamera/software_isp/
>>> - Move documentation to .cpp file and extend it
>>> - Rename a bunch of foo_bar symbols to fooBar
>>> - Change a couple of defines and hardcoded values to constexpr
>>> - Remove statsBayer10P in swstats_cpu.cpp, instead move the loop to
>>> statsBGGR10PLine0 / statsGBRG10PLine0
>>> - Make startFrame() and finishFrame() normal methods instead of
>>> using function pointers for these
>>> ---
>>> include/libcamera/internal/meson.build | 1 +
>>> .../internal/software_isp/meson.build | 5 +
>>> .../internal/software_isp/swisp_stats.h | 38 ++++
>>> src/libcamera/meson.build | 1 +
>>> src/libcamera/software_isp/meson.build | 5 +
>>> src/libcamera/software_isp/swstats_cpu.cpp | 208 ++++++++++++++++++
>>> src/libcamera/software_isp/swstats_cpu.h | 159 +++++++++++++
>>> 7 files changed, 417 insertions(+)
>>> create mode 100644 include/libcamera/internal/software_isp/meson.build
>>> create mode 100644 include/libcamera/internal/software_isp/swisp_stats.h
>>> create mode 100644 src/libcamera/software_isp/meson.build
>>> create mode 100644 src/libcamera/software_isp/swstats_cpu.cpp
>>> create mode 100644 src/libcamera/software_isp/swstats_cpu.h
>>>
>>
>> [...]
>>
>>> diff --git a/src/libcamera/software_isp/swstats_cpu.h b/src/libcamera/software_isp/swstats_cpu.h
>>> new file mode 100644
>>> index 00000000..df13263b
>>> --- /dev/null
>>> +++ b/src/libcamera/software_isp/swstats_cpu.h
>>> @@ -0,0 +1,159 @@
>>> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
>>> +/*
>>> + * Copyright (C) 2023, Linaro Ltd
>>> + * Copyright (C) 2023, Red Hat Inc.
>>> + *
>>> + * Authors:
>>> + * Hans de Goede <hdegoede at redhat.com>
>>> + *
>>> + * swstats_cpu.h - CPU based software statistics implementation
>>> + */
>>> +
>>> +#pragma once
>>> +
>>> +#include <stdint.h>
>>> +
>>> +#include <libcamera/base/signal.h>
>>> +
>>> +#include <libcamera/geometry.h>
>>> +
>>> +#include "libcamera/internal/shared_mem_object.h"
>>> +#include "libcamera/internal/software_isp/swisp_stats.h"
>>> +
>>> +namespace libcamera {
>>> +
>>> +class PixelFormat;
>>> +struct StreamConfiguration;
>>> +
>>> +class SwStatsCpu
>>> +{
>>> +public:
>>> + SwStatsCpu();
>>> + ~SwStatsCpu() = default;
>>> +
>>> + /**
>>> + * \brief Gets wether the statistics object is valid.
>>
>> wether -> weather
>
> Actually that should be whether, weather is talking about
> how sunny / cloudy it is. I'll do:
Absolutely! Cool, typo in a typo fix :-).
I wonder how brain works when one wants to type an English word, the right one,
knows how to spell it and still the fingers type a similarly sounding different
word unnoticed. I've observed this phenomenon also in e-mails of native
speakers so it cannot be explained simply as that writing in a foreign language
is more demanding.
> s/wether/whether/
This one looks correct. :-)
> for v5.
>
> Thanks & Regards,
>
> Hans
>
>
>
>
>
>
>>
>> [...]
>>
More information about the libcamera-devel
mailing list