[libcamera-devel,v2,3/3] libcamera: v4l2_videodevice: Add using statement for format map

Message ID 20200721135541.2931205-4-niklas.soderlund@ragnatech.se
State Accepted
Headers show
Series
  • libcamera: formats: Remove ImageFormat
Related show

Commit Message

Niklas Söderlund July 21, 2020, 1:55 p.m. UTC
Define a using statement for the format maps returned by
V4L2Device::formats() and use it in all call sites. There is no
functional change in this patch.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
---
 include/libcamera/internal/v4l2_videodevice.h      |  4 +++-
 src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 13 ++++++-------
 src/libcamera/pipeline/simple/simple.cpp           |  2 +-
 src/libcamera/pipeline/uvcvideo/uvcvideo.cpp       |  3 +--
 src/libcamera/v4l2_videodevice.cpp                 |  9 +++++++--
 5 files changed, 18 insertions(+), 13 deletions(-)

Comments

Jacopo Mondi July 21, 2020, 3:09 p.m. UTC | #1
Hi Niklas,
   happy to see the custom maps going away

On Tue, Jul 21, 2020 at 03:55:41PM +0200, Niklas Söderlund wrote:
> Define a using statement for the format maps returned by
> V4L2Device::formats() and use it in all call sites. There is no
> functional change in this patch.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
> ---
>  include/libcamera/internal/v4l2_videodevice.h      |  4 +++-
>  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 13 ++++++-------
>  src/libcamera/pipeline/simple/simple.cpp           |  2 +-
>  src/libcamera/pipeline/uvcvideo/uvcvideo.cpp       |  3 +--
>  src/libcamera/v4l2_videodevice.cpp                 |  9 +++++++--
>  5 files changed, 18 insertions(+), 13 deletions(-)
>
> diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h
> index fb4c0aabdd46206c..40ed87e17cfa6d3c 100644
> --- a/include/libcamera/internal/v4l2_videodevice.h
> +++ b/include/libcamera/internal/v4l2_videodevice.h
> @@ -168,6 +168,8 @@ public:
>  class V4L2VideoDevice : public V4L2Device
>  {
>  public:
> +	using Formats = std::map<V4L2PixelFormat, std::vector<SizeRange>>;
> +
>  	explicit V4L2VideoDevice(const std::string &deviceNode);
>  	explicit V4L2VideoDevice(const MediaEntity *entity);
>  	V4L2VideoDevice(const V4L2VideoDevice &) = delete;
> @@ -188,7 +190,7 @@ public:
>  	int getFormat(V4L2DeviceFormat *format);
>  	int tryFormat(V4L2DeviceFormat *format);
>  	int setFormat(V4L2DeviceFormat *format);
> -	std::map<V4L2PixelFormat, std::vector<SizeRange>> formats(uint32_t code = 0);
> +	Formats formats(uint32_t code = 0);
>
>  	int setSelection(unsigned int target, Rectangle *rect);
>
> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> index bf1c77144f855df9..82a0a4dfd6824fce 100644
> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> @@ -39,8 +39,6 @@ namespace libcamera {
>
>  LOG_DEFINE_CATEGORY(RPI)
>
> -using V4L2PixFmtMap = std::map<V4L2PixelFormat, std::vector<SizeRange>>;
> -
>  namespace {
>
>  bool isRaw(PixelFormat &pixFmt)
> @@ -69,7 +67,8 @@ double scoreFormat(double desired, double actual)
>  	return score;
>  }
>
> -V4L2DeviceFormat findBestMode(V4L2PixFmtMap &formatsMap, const Size &req)
> +V4L2DeviceFormat findBestMode(V4L2VideoDevice::Formats &formatsMap,
> +			      const Size &req)
>  {
>  	double bestScore = std::numeric_limits<double>::max(), score;
>  	V4L2DeviceFormat bestMode = {};
> @@ -410,7 +409,7 @@ CameraConfiguration::Status RPiCameraConfiguration::validate()
>  			 * Calculate the best sensor mode we can use based on
>  			 * the user request.
>  			 */
> -			V4L2PixFmtMap fmts = data_->unicam_[Unicam::Image].dev()->formats();
> +			V4L2VideoDevice::Formats fmts = data_->unicam_[Unicam::Image].dev()->formats();
>  			V4L2DeviceFormat sensorFormat = findBestMode(fmts, cfg.size);
>  			int ret = data_->unicam_[Unicam::Image].dev()->tryFormat(&sensorFormat);
>  			if (ret)
> @@ -480,7 +479,7 @@ CameraConfiguration::Status RPiCameraConfiguration::validate()
>  		else
>  			dev = data_->isp_[Isp::Output1].dev();
>
> -		V4L2PixFmtMap fmts = dev->formats();
> +		V4L2VideoDevice::Formats fmts = dev->formats();
>
>  		if (fmts.find(V4L2PixelFormat::fromPixelFormat(cfgPixFmt, false)) == fmts.end()) {
>  			/* If we cannot find a native format, use a default one. */
> @@ -517,7 +516,7 @@ CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera,
>  	V4L2DeviceFormat sensorFormat;
>  	unsigned int bufferCount;
>  	PixelFormat pixelFormat;
> -	V4L2PixFmtMap fmts;
> +	V4L2VideoDevice::Formats fmts;
>  	Size size;
>
>  	if (roles.empty())
> @@ -633,7 +632,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)
>  	}
>
>  	/* First calculate the best sensor mode we can use based on the user request. */
> -	V4L2PixFmtMap fmts = data->unicam_[Unicam::Image].dev()->formats();
> +	V4L2VideoDevice::Formats fmts = data->unicam_[Unicam::Image].dev()->formats();
>  	V4L2DeviceFormat sensorFormat = findBestMode(fmts, rawStream ? sensorSize : maxSize);
>
>  	/*
> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
> index 28d367883323d855..5221ff3384923f56 100644
> --- a/src/libcamera/pipeline/simple/simple.cpp
> +++ b/src/libcamera/pipeline/simple/simple.cpp
> @@ -275,7 +275,7 @@ int SimpleCameraData::init()
>  			return ret;
>  		}
>
> -		std::map<V4L2PixelFormat, std::vector<SizeRange>> videoFormats =
> +		V4L2VideoDevice::Formats videoFormats =
>  			video_->formats(format.mbus_code);
>
>  		LOG(SimplePipeline, Debug)
> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> index 47f383d1551d5193..93e3dc17e3a7105e 100644
> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> @@ -172,8 +172,7 @@ CameraConfiguration *PipelineHandlerUVC::generateConfiguration(Camera *camera,
>  	if (roles.empty())
>  		return config;
>
> -	std::map<V4L2PixelFormat, std::vector<SizeRange>> v4l2Formats =
> -		data->video_->formats();
> +	V4L2VideoDevice::Formats v4l2Formats = data->video_->formats();
>  	std::map<PixelFormat, std::vector<SizeRange>> deviceFormats;
>  	for (const auto &format : v4l2Formats) {
>  		PixelFormat pixelFormat = format.first.toPixelFormat();
> diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
> index e0d2201269440795..9c4f3524af735598 100644
> --- a/src/libcamera/v4l2_videodevice.cpp
> +++ b/src/libcamera/v4l2_videodevice.cpp
> @@ -461,6 +461,11 @@ const std::string V4L2DeviceFormat::toString() const
>   * \context This class is \threadbound.
>   */
>
> +/**
> + * \typedef V4L2VideoDevice::Formats
> + * \brief A map of supported V4L2 pixel formats to frame sizes
> + */
> +
>  /**
>   * \brief Construct a V4L2VideoDevice
>   * \param[in] deviceNode The file-system path to the video device node
> @@ -951,9 +956,9 @@ int V4L2VideoDevice::trySetFormatSingleplane(V4L2DeviceFormat *format, bool set)
>   *
>   * \return A list of the supported video device formats
>   */
> -std::map<V4L2PixelFormat, std::vector<SizeRange>> V4L2VideoDevice::formats(uint32_t code)
> +V4L2VideoDevice::Formats V4L2VideoDevice::formats(uint32_t code)
>  {
> -	std::map<V4L2PixelFormat, std::vector<SizeRange>> formats;
> +	V4L2VideoDevice::Formats formats;

I think this could just be 'Formats'

nit apart
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>

Thanks
  j

>
>  	for (V4L2PixelFormat pixelFormat : enumPixelformats(code)) {
>  		std::vector<SizeRange> sizes = enumSizes(pixelFormat);
> --
> 2.27.0
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Laurent Pinchart July 23, 2020, 2:21 p.m. UTC | #2
Hi Niklas,

Thank you for the patch.

On Tue, Jul 21, 2020 at 03:55:41PM +0200, Niklas Söderlund wrote:
> Define a using statement for the format maps returned by
> V4L2Device::formats() and use it in all call sites. There is no
> functional change in this patch.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  include/libcamera/internal/v4l2_videodevice.h      |  4 +++-
>  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 13 ++++++-------
>  src/libcamera/pipeline/simple/simple.cpp           |  2 +-
>  src/libcamera/pipeline/uvcvideo/uvcvideo.cpp       |  3 +--
>  src/libcamera/v4l2_videodevice.cpp                 |  9 +++++++--
>  5 files changed, 18 insertions(+), 13 deletions(-)
> 
> diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h
> index fb4c0aabdd46206c..40ed87e17cfa6d3c 100644
> --- a/include/libcamera/internal/v4l2_videodevice.h
> +++ b/include/libcamera/internal/v4l2_videodevice.h
> @@ -168,6 +168,8 @@ public:
>  class V4L2VideoDevice : public V4L2Device
>  {
>  public:
> +	using Formats = std::map<V4L2PixelFormat, std::vector<SizeRange>>;
> +
>  	explicit V4L2VideoDevice(const std::string &deviceNode);
>  	explicit V4L2VideoDevice(const MediaEntity *entity);
>  	V4L2VideoDevice(const V4L2VideoDevice &) = delete;
> @@ -188,7 +190,7 @@ public:
>  	int getFormat(V4L2DeviceFormat *format);
>  	int tryFormat(V4L2DeviceFormat *format);
>  	int setFormat(V4L2DeviceFormat *format);
> -	std::map<V4L2PixelFormat, std::vector<SizeRange>> formats(uint32_t code = 0);
> +	Formats formats(uint32_t code = 0);
>  
>  	int setSelection(unsigned int target, Rectangle *rect);
>  
> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> index bf1c77144f855df9..82a0a4dfd6824fce 100644
> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> @@ -39,8 +39,6 @@ namespace libcamera {
>  
>  LOG_DEFINE_CATEGORY(RPI)
>  
> -using V4L2PixFmtMap = std::map<V4L2PixelFormat, std::vector<SizeRange>>;
> -
>  namespace {
>  
>  bool isRaw(PixelFormat &pixFmt)
> @@ -69,7 +67,8 @@ double scoreFormat(double desired, double actual)
>  	return score;
>  }
>  
> -V4L2DeviceFormat findBestMode(V4L2PixFmtMap &formatsMap, const Size &req)
> +V4L2DeviceFormat findBestMode(V4L2VideoDevice::Formats &formatsMap,
> +			      const Size &req)
>  {
>  	double bestScore = std::numeric_limits<double>::max(), score;
>  	V4L2DeviceFormat bestMode = {};
> @@ -410,7 +409,7 @@ CameraConfiguration::Status RPiCameraConfiguration::validate()
>  			 * Calculate the best sensor mode we can use based on
>  			 * the user request.
>  			 */
> -			V4L2PixFmtMap fmts = data_->unicam_[Unicam::Image].dev()->formats();
> +			V4L2VideoDevice::Formats fmts = data_->unicam_[Unicam::Image].dev()->formats();
>  			V4L2DeviceFormat sensorFormat = findBestMode(fmts, cfg.size);
>  			int ret = data_->unicam_[Unicam::Image].dev()->tryFormat(&sensorFormat);
>  			if (ret)
> @@ -480,7 +479,7 @@ CameraConfiguration::Status RPiCameraConfiguration::validate()
>  		else
>  			dev = data_->isp_[Isp::Output1].dev();
>  
> -		V4L2PixFmtMap fmts = dev->formats();
> +		V4L2VideoDevice::Formats fmts = dev->formats();
>  
>  		if (fmts.find(V4L2PixelFormat::fromPixelFormat(cfgPixFmt, false)) == fmts.end()) {
>  			/* If we cannot find a native format, use a default one. */
> @@ -517,7 +516,7 @@ CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera,
>  	V4L2DeviceFormat sensorFormat;
>  	unsigned int bufferCount;
>  	PixelFormat pixelFormat;
> -	V4L2PixFmtMap fmts;
> +	V4L2VideoDevice::Formats fmts;
>  	Size size;
>  
>  	if (roles.empty())
> @@ -633,7 +632,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)
>  	}
>  
>  	/* First calculate the best sensor mode we can use based on the user request. */
> -	V4L2PixFmtMap fmts = data->unicam_[Unicam::Image].dev()->formats();
> +	V4L2VideoDevice::Formats fmts = data->unicam_[Unicam::Image].dev()->formats();
>  	V4L2DeviceFormat sensorFormat = findBestMode(fmts, rawStream ? sensorSize : maxSize);
>  
>  	/*
> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
> index 28d367883323d855..5221ff3384923f56 100644
> --- a/src/libcamera/pipeline/simple/simple.cpp
> +++ b/src/libcamera/pipeline/simple/simple.cpp
> @@ -275,7 +275,7 @@ int SimpleCameraData::init()
>  			return ret;
>  		}
>  
> -		std::map<V4L2PixelFormat, std::vector<SizeRange>> videoFormats =
> +		V4L2VideoDevice::Formats videoFormats =
>  			video_->formats(format.mbus_code);
>  
>  		LOG(SimplePipeline, Debug)
> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> index 47f383d1551d5193..93e3dc17e3a7105e 100644
> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> @@ -172,8 +172,7 @@ CameraConfiguration *PipelineHandlerUVC::generateConfiguration(Camera *camera,
>  	if (roles.empty())
>  		return config;
>  
> -	std::map<V4L2PixelFormat, std::vector<SizeRange>> v4l2Formats =
> -		data->video_->formats();
> +	V4L2VideoDevice::Formats v4l2Formats = data->video_->formats();
>  	std::map<PixelFormat, std::vector<SizeRange>> deviceFormats;
>  	for (const auto &format : v4l2Formats) {
>  		PixelFormat pixelFormat = format.first.toPixelFormat();
> diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
> index e0d2201269440795..9c4f3524af735598 100644
> --- a/src/libcamera/v4l2_videodevice.cpp
> +++ b/src/libcamera/v4l2_videodevice.cpp
> @@ -461,6 +461,11 @@ const std::string V4L2DeviceFormat::toString() const
>   * \context This class is \threadbound.
>   */
>  
> +/**
> + * \typedef V4L2VideoDevice::Formats
> + * \brief A map of supported V4L2 pixel formats to frame sizes
> + */
> +
>  /**
>   * \brief Construct a V4L2VideoDevice
>   * \param[in] deviceNode The file-system path to the video device node
> @@ -951,9 +956,9 @@ int V4L2VideoDevice::trySetFormatSingleplane(V4L2DeviceFormat *format, bool set)
>   *
>   * \return A list of the supported video device formats
>   */
> -std::map<V4L2PixelFormat, std::vector<SizeRange>> V4L2VideoDevice::formats(uint32_t code)
> +V4L2VideoDevice::Formats V4L2VideoDevice::formats(uint32_t code)
>  {
> -	std::map<V4L2PixelFormat, std::vector<SizeRange>> formats;
> +	V4L2VideoDevice::Formats formats;
>  
>  	for (V4L2PixelFormat pixelFormat : enumPixelformats(code)) {
>  		std::vector<SizeRange> sizes = enumSizes(pixelFormat);

Patch

diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h
index fb4c0aabdd46206c..40ed87e17cfa6d3c 100644
--- a/include/libcamera/internal/v4l2_videodevice.h
+++ b/include/libcamera/internal/v4l2_videodevice.h
@@ -168,6 +168,8 @@  public:
 class V4L2VideoDevice : public V4L2Device
 {
 public:
+	using Formats = std::map<V4L2PixelFormat, std::vector<SizeRange>>;
+
 	explicit V4L2VideoDevice(const std::string &deviceNode);
 	explicit V4L2VideoDevice(const MediaEntity *entity);
 	V4L2VideoDevice(const V4L2VideoDevice &) = delete;
@@ -188,7 +190,7 @@  public:
 	int getFormat(V4L2DeviceFormat *format);
 	int tryFormat(V4L2DeviceFormat *format);
 	int setFormat(V4L2DeviceFormat *format);
-	std::map<V4L2PixelFormat, std::vector<SizeRange>> formats(uint32_t code = 0);
+	Formats formats(uint32_t code = 0);
 
 	int setSelection(unsigned int target, Rectangle *rect);
 
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index bf1c77144f855df9..82a0a4dfd6824fce 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -39,8 +39,6 @@  namespace libcamera {
 
 LOG_DEFINE_CATEGORY(RPI)
 
-using V4L2PixFmtMap = std::map<V4L2PixelFormat, std::vector<SizeRange>>;
-
 namespace {
 
 bool isRaw(PixelFormat &pixFmt)
@@ -69,7 +67,8 @@  double scoreFormat(double desired, double actual)
 	return score;
 }
 
-V4L2DeviceFormat findBestMode(V4L2PixFmtMap &formatsMap, const Size &req)
+V4L2DeviceFormat findBestMode(V4L2VideoDevice::Formats &formatsMap,
+			      const Size &req)
 {
 	double bestScore = std::numeric_limits<double>::max(), score;
 	V4L2DeviceFormat bestMode = {};
@@ -410,7 +409,7 @@  CameraConfiguration::Status RPiCameraConfiguration::validate()
 			 * Calculate the best sensor mode we can use based on
 			 * the user request.
 			 */
-			V4L2PixFmtMap fmts = data_->unicam_[Unicam::Image].dev()->formats();
+			V4L2VideoDevice::Formats fmts = data_->unicam_[Unicam::Image].dev()->formats();
 			V4L2DeviceFormat sensorFormat = findBestMode(fmts, cfg.size);
 			int ret = data_->unicam_[Unicam::Image].dev()->tryFormat(&sensorFormat);
 			if (ret)
@@ -480,7 +479,7 @@  CameraConfiguration::Status RPiCameraConfiguration::validate()
 		else
 			dev = data_->isp_[Isp::Output1].dev();
 
-		V4L2PixFmtMap fmts = dev->formats();
+		V4L2VideoDevice::Formats fmts = dev->formats();
 
 		if (fmts.find(V4L2PixelFormat::fromPixelFormat(cfgPixFmt, false)) == fmts.end()) {
 			/* If we cannot find a native format, use a default one. */
@@ -517,7 +516,7 @@  CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera,
 	V4L2DeviceFormat sensorFormat;
 	unsigned int bufferCount;
 	PixelFormat pixelFormat;
-	V4L2PixFmtMap fmts;
+	V4L2VideoDevice::Formats fmts;
 	Size size;
 
 	if (roles.empty())
@@ -633,7 +632,7 @@  int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)
 	}
 
 	/* First calculate the best sensor mode we can use based on the user request. */
-	V4L2PixFmtMap fmts = data->unicam_[Unicam::Image].dev()->formats();
+	V4L2VideoDevice::Formats fmts = data->unicam_[Unicam::Image].dev()->formats();
 	V4L2DeviceFormat sensorFormat = findBestMode(fmts, rawStream ? sensorSize : maxSize);
 
 	/*
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index 28d367883323d855..5221ff3384923f56 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -275,7 +275,7 @@  int SimpleCameraData::init()
 			return ret;
 		}
 
-		std::map<V4L2PixelFormat, std::vector<SizeRange>> videoFormats =
+		V4L2VideoDevice::Formats videoFormats =
 			video_->formats(format.mbus_code);
 
 		LOG(SimplePipeline, Debug)
diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
index 47f383d1551d5193..93e3dc17e3a7105e 100644
--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
@@ -172,8 +172,7 @@  CameraConfiguration *PipelineHandlerUVC::generateConfiguration(Camera *camera,
 	if (roles.empty())
 		return config;
 
-	std::map<V4L2PixelFormat, std::vector<SizeRange>> v4l2Formats =
-		data->video_->formats();
+	V4L2VideoDevice::Formats v4l2Formats = data->video_->formats();
 	std::map<PixelFormat, std::vector<SizeRange>> deviceFormats;
 	for (const auto &format : v4l2Formats) {
 		PixelFormat pixelFormat = format.first.toPixelFormat();
diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
index e0d2201269440795..9c4f3524af735598 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -461,6 +461,11 @@  const std::string V4L2DeviceFormat::toString() const
  * \context This class is \threadbound.
  */
 
+/**
+ * \typedef V4L2VideoDevice::Formats
+ * \brief A map of supported V4L2 pixel formats to frame sizes
+ */
+
 /**
  * \brief Construct a V4L2VideoDevice
  * \param[in] deviceNode The file-system path to the video device node
@@ -951,9 +956,9 @@  int V4L2VideoDevice::trySetFormatSingleplane(V4L2DeviceFormat *format, bool set)
  *
  * \return A list of the supported video device formats
  */
-std::map<V4L2PixelFormat, std::vector<SizeRange>> V4L2VideoDevice::formats(uint32_t code)
+V4L2VideoDevice::Formats V4L2VideoDevice::formats(uint32_t code)
 {
-	std::map<V4L2PixelFormat, std::vector<SizeRange>> formats;
+	V4L2VideoDevice::Formats formats;
 
 	for (V4L2PixelFormat pixelFormat : enumPixelformats(code)) {
 		std::vector<SizeRange> sizes = enumSizes(pixelFormat);