[libcamera-devel] [PATCH 1/4] raspberrypi: Add the correct integer const postfix for FrameDurations
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Jan 22 16:08:45 CET 2021
Hi Naush,
On 21/01/2021 16:11, Naushir Patuck wrote:
> Hi Kieran,
>
> Thank you both for your review feedback.
>
> On Thu, 21 Jan 2021 at 12:58, Kieran Bingham
> <kieran.bingham at ideasonboard.com
> <mailto:kieran.bingham at ideasonboard.com>> wrote:
>
> On 21/01/2021 12:52, Laurent Pinchart wrote:
> > On Thu, Jan 21, 2021 at 12:45:17PM +0000, Naushir Patuck wrote:
> >> On Thu, 21 Jan 2021, 12:42 pm Kieran Bingham, wrote:
> >>> On 21/01/2021 11:58, Naushir Patuck wrote:
> >>>> At startup, ControlInfoMap::generateIdmap() threw a log message
> warning
> >>>> that the controls::FrameDurations had a type mismatch based on the
> >>>> min/max values provided in libcamera::RPi::Controls initialiser.
> >>>>
> >>>> Fix this warning by adding and explicit int64_t postfix to the
> const
> >>>> values for min and max.
> >>>>
> >>>> Signed-off-by: Naushir Patuck <naush at raspberrypi.com
> <mailto:naush at raspberrypi.com>>
> >>>> ---
> >>>> include/libcamera/ipa/raspberrypi.h | 2 +-
> >>>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/include/libcamera/ipa/raspberrypi.h
> b/include/libcamera/ipa/raspberrypi.h
> >>>> index 1de36039cee0..8e704d922ce6 100644
> >>>> --- a/include/libcamera/ipa/raspberrypi.h
> >>>> +++ b/include/libcamera/ipa/raspberrypi.h
> >>>> @@ -65,7 +65,7 @@ static const ControlInfoMap Controls = {
> >>>> { &controls::Sharpness, ControlInfo(0.0f, 16.0f, 1.0f) },
> >>>> { &controls::ColourCorrectionMatrix, ControlInfo(-16.0f,
> 16.0f) },
> >>>> { &controls::ScalerCrop, ControlInfo(Rectangle{},
> Rectangle(65535, 65535, 65535, 65535), Rectangle{}) },
> >>>> - { &controls::FrameDurations, ControlInfo(1000, 1000000000) },
> >>>> + { &controls::FrameDurations, ControlInfo(INT64_C(1000),
> INT64_C(1000000000)) },
> >>>
> >>> Is this casting a boost-ism?
> >>
> >> I thought it was part of stdint, but admittedly never checked to
> confirm.
> >> Will do so in a bit.
> >
> > It seems standard (and I've just learnt about it :-)). An alternative
> > could be
> >
> > { &controls::FrameDurations, ControlInfo(1000LL,
> 1000000000LL) },
> >
> > It however seems that we should improve creation of the ControlInfoMap
> > to make these casts automatic. An exercise left to the reader :-) For
> > now we can have a simple fix. Please include stdint.h if you want
> to use
> > INT64_C, or use LL instead.
>
>
> I knew this would come up :-)
>
> My original implementation did use LL (I did not know about INT64_C
> either). However, by using "LL" i get a curious compile error:
>
> In file included from
> ../src/libcamera/pipeline/raspberrypi/raspberrypi.cpp:20:
> ../include/libcamera/ipa/raspberrypi.h:68:63: error: no matching
> function for call to ‘libcamera::ControlInfo::ControlInfo(long long int,
> long long int)’
> 68 | { &controls::FrameDurations, ControlInfo(1000LL, 1000000000LL) },
>
> The compilation fails in gcc version 9.30 and 10.2.0 and clang version
> 10 on my Linux machine. Curiously, I just tried it on my Raspberry Pi
> and it compiles fine with gcc v 8.30.
>
> This is why I originally switched to INT64_C which works everywhere. It
> slipped my mind, and I did not get a chance to investigate further. I
> can only assume from this result that INT64_C macro uses the L postfix,
> which does compile fine. Anyone have any ideas as to what is going on?
Oh isn't C/C++ wonderful.
I only raised the INT64_C() as it stood out as something I'd not seen
before. If it's part of stdint.h and works I wouldn't object to using that.
--
Kieran
> Regards,
> Naush
>
> >
> > With this fixed,
> >
> > Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com
> <mailto:laurent.pinchart at ideasonboard.com>>
>
> I'm surprised that it generates a warning putting a long into a long
> long, but I can see that it's a type mismatch indeed.
>
> Personally, the LL style would be more what I'm used to (hence not
> knowing about the INT64_C()) But either way:
>
> With that and an "ipa:" prefix in the subject to match the other
> patches:
>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideaasonboard.com
> <mailto:kieran.bingham at ideaasonboard.com>>
>
>
>
> >
> >>>> };
> >>>>
> >>>> } /* namespace RPi */
> >
>
> --
> Regards
> --
> Kieran
>
--
Regards
--
Kieran
More information about the libcamera-devel
mailing list