[PATCH] apps: common: dng_writer: Support RAW16 formats
Dan Scally
dan.scally at ideasonboard.com
Thu Jun 13 23:44:08 CEST 2024
On 13/06/2024 17:30, Laurent Pinchart wrote:
> On Thu, Jun 13, 2024 at 06:14:11PM +0200, Stefan Klug wrote:
>> On Thu, Jun 13, 2024 at 04:09:49PM +0100, Daniel Scally wrote:
>>> Add support for RAW16 formats to the DNGWriter helpers so that we can
>>> produce dng files from the mali-c55.
>>>
>>> Signed-off-by: Daniel Scally <dan.scally at ideasonboard.com>
>>> ---
>>> src/apps/common/dng_writer.cpp | 32 ++++++++++++++++++++++++++++++++
>>> 1 file changed, 32 insertions(+)
>>>
>>> diff --git a/src/apps/common/dng_writer.cpp b/src/apps/common/dng_writer.cpp
>>> index 59f1fa23..150782e8 100644
>>> --- a/src/apps/common/dng_writer.cpp
>>> +++ b/src/apps/common/dng_writer.cpp
>>> @@ -134,6 +134,14 @@ void packScanlineSBGGR8(void *output, const void *input, unsigned int width)
>>> std::copy(in, in + width, out);
>>> }
>>>
>>> +void packScanlineSBGGR16(void *output, const void *input, unsigned int width)
>>> +{
>>> + const uint16_t *in = static_cast<const uint16_t *>(input);
>>> + uint16_t *out = static_cast<uint16_t *>(output);
>>> +
>>> + std::copy(in, in + width, out);
>>> +}
>>> +
>>> void packScanlineSBGGR10P(void *output, const void *input, unsigned int width)
>>> {
>>> const uint8_t *in = static_cast<const uint8_t *>(input);
>>> @@ -307,6 +315,30 @@ static const std::map<PixelFormat, FormatInfo> formatInfo = {
>>> .packScanline = packScanlineSBGGR8,
>>> .thumbScanline = thumbScanlineSBGGRxxP,
>>> } },
>>> + { formats::SBGGR16, {
>>> + .bitsPerSample = 16,
>>> + .pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed },
>>> + .packScanline = packScanlineSBGGR16,
>>> + .thumbScanline = thumbScanlineSBGGRxxP,
>> I had to look twice to understand why the BGGR16 function is used for
>> every pattern. For me a "packScanlineRaw16" would be easier to
>> understand.
> Good idea.
Ack! I was kinda following the crowd here, we also have packScanlineSBGGR8, packScanlineSBGGR10P and
packScanlineSBGGR12P that are used regardless of the format's Bayer Order. Shall I rename those too?
>
>> Whatever you prefer.
>>
>> Reviewed-by: Stefan Klug <stefan.klug at ideasonboard.com>
>>
>>> + } },
>>> + { formats::SGBRG16, {
>>> + .bitsPerSample = 16,
>>> + .pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen },
>>> + .packScanline = packScanlineSBGGR16,
>>> + .thumbScanline = thumbScanlineSBGGRxxP,
>>> + } },
>>> + { formats::SGRBG16, {
>>> + .bitsPerSample = 16,
>>> + .pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen },
>>> + .packScanline = packScanlineSBGGR16,
>>> + .thumbScanline = thumbScanlineSBGGRxxP,
>>> + } },
>>> + { formats::SRGGB16, {
>>> + .bitsPerSample = 16,
>>> + .pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue },
>>> + .packScanline = packScanlineSBGGR16,
>>> + .thumbScanline = thumbScanlineSBGGRxxP,
>>> + } },
>>> { formats::SBGGR10_CSI2P, {
>>> .bitsPerSample = 10,
>>> .pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed },
More information about the libcamera-devel
mailing list