[PATCH v2 4/5] ipa: simple: Report black levels in metadata

Milan Zamazal mzamazal at redhat.com
Thu Jan 2 19:36:04 CET 2025


Hi Kieran,

Kieran Bingham <kieran.bingham at ideasonboard.com> writes:

> Hi Milan,
>
> Quoting Milan Zamazal (2024-12-19 21:10:09)
>> From: Kieran Bingham <kieran.bingham at ideasonboard.com>
>> 
>> Provide the determined black level values in the metadata
>> to add to the completed requests.
>> 
>> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>> Signed-off-by: Milan Zamazal <mzamazal at redhat.com>
>> ---
>>  src/ipa/simple/algorithms/blc.cpp | 9 ++++++++-
>>  1 file changed, 8 insertions(+), 1 deletion(-)
>> 
>> diff --git a/src/ipa/simple/algorithms/blc.cpp b/src/ipa/simple/algorithms/blc.cpp
>> index 1d7d370b..d5759f92 100644
>> --- a/src/ipa/simple/algorithms/blc.cpp
>> +++ b/src/ipa/simple/algorithms/blc.cpp
>> @@ -11,6 +11,8 @@
>>  
>>  #include <libcamera/base/log.h>
>>  
>> +#include "control_ids.h"
>> +
>>  namespace libcamera {
>>  
>>  namespace ipa::soft::algorithms {
>> @@ -49,8 +51,13 @@ void BlackLevel::process(IPAContext &context,
>>                          [[maybe_unused]] const uint32_t frame,
>>                          IPAFrameContext &frameContext,
>>                          const SwIspStats *stats,
>> -                        [[maybe_unused]] ControlList &metadata)
>> +                        ControlList &metadata)
>>  {
>> +       /* Assign each of the R G G B channels as the same black level. */
>> +       const int32_t blackLevel = context.activeState.blc.level * 256;
>
> What are your thoughts on
> https://patchwork.libcamera.org/project/libcamera/list/?series=4830?
>
> This could then be:
> 	const int32_t blackLevel = context.activeState.blc.level.convert<16>();
>
> or
> 	BitDepthValue<16> blackLevel = context.activeState.blc.level;
>
> I'm curious if you think this provides a helpful / expressive way to
> convey this? or if it obfuscates more ?

I like the general idea of tracking the bit depth explicitly some way,
it's definitely needed, thank you for the reminder.  As for the
particular API proposal, I usually leave making opinions on such matters
to maintainers but I'll try to make my opinion tomorrow since the RFC
deserves more attention than it has got so far.

>> +       const int32_t blackLevels[] = { blackLevel, blackLevel, blackLevel, blackLevel };
>> +       metadata.set(controls::SensorBlackLevels, blackLevels);
>> +
>>         if (context.configuration.black.level.has_value())
>>                 return;
>>  
>> -- 
>> 2.44.2
>>



More information about the libcamera-devel mailing list