summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libcamera/internal/v4l2_videodevice.h4
-rw-r--r--src/libcamera/pipeline/raspberrypi/raspberrypi.cpp13
-rw-r--r--src/libcamera/pipeline/simple/simple.cpp2
-rw-r--r--src/libcamera/pipeline/uvcvideo/uvcvideo.cpp3
-rw-r--r--src/libcamera/v4l2_videodevice.cpp9
5 files changed, 18 insertions, 13 deletions
diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h
index fb4c0aab..40ed87e1 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 bf1c7714..82a0a4df 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 28d36788..5221ff33 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 47f383d1..93e3dc17 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 e0d22012..652677ff 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -462,6 +462,11 @@ const std::string V4L2DeviceFormat::toString() const
*/
/**
+ * \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;
+ Formats formats;
for (V4L2PixelFormat pixelFormat : enumPixelformats(code)) {
std::vector<SizeRange> sizes = enumSizes(pixelFormat);