[libcamera-devel] [PATCH] libcamera: v4l2_pixelformat: Implement std::hash specialization

Jacopo Mondi jacopo at jmondi.org
Wed Aug 3 08:52:08 CEST 2022


Hi LAurent,

On Tue, Aug 02, 2022 at 10:47:05PM +0300, Laurent Pinchart wrote:
> Inject a specialization of std::hash<> for the V4L2PixelFormat class in
> the std namespace to make it possible to store instances of the class in
> the std::unordered_map and std::unordered_set containers.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

I started with the same, then I thought polluting the std namespace
was not a good idea ? Do you think it's not an issue ?

> ---
>  include/libcamera/internal/v4l2_pixelformat.h | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/include/libcamera/internal/v4l2_pixelformat.h b/include/libcamera/internal/v4l2_pixelformat.h
> index d5400f90a67e..fcc1dadd4de0 100644
> --- a/include/libcamera/internal/v4l2_pixelformat.h
> +++ b/include/libcamera/internal/v4l2_pixelformat.h
> @@ -8,6 +8,7 @@
>
>  #pragma once
>
> +#include <functional>
>  #include <ostream>
>  #include <stdint.h>
>  #include <string>
> @@ -55,3 +56,15 @@ private:
>  std::ostream &operator<<(std::ostream &out, const V4L2PixelFormat &f);
>
>  } /* namespace libcamera */
> +
> +namespace std {
> +
> +template<>
> +struct hash<libcamera::V4L2PixelFormat> {
> +	size_t operator()(libcamera::V4L2PixelFormat const &format) const noexcept
> +	{
> +		return hash<uint32_t>{}(format.fourcc());

iirc just "return format.fourcc();" was enough

> +	}
> +};
> +
> +} /* namespace std */
> --
> Regards,
>
> Laurent Pinchart
>


More information about the libcamera-devel mailing list