summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libcamera/converter.cpp13
-rw-r--r--src/libcamera/converter/converter_v4l2_m2m.cpp18
2 files changed, 25 insertions, 6 deletions
diff --git a/src/libcamera/converter.cpp b/src/libcamera/converter.cpp
index 3a3f8434..73c02fdc 100644
--- a/src/libcamera/converter.cpp
+++ b/src/libcamera/converter.cpp
@@ -185,6 +185,16 @@ Converter::~Converter()
/**
* \fn Converter::inputCropBounds()
+ * \brief Retrieve the crop bounds of the converter
+ *
+ * Retrieve the minimum and maximum crop bounds of the converter. This can be
+ * used to query the crop bounds before configuring a stream.
+ *
+ * \return A pair containing the minimum and maximum crop bound in that order
+ */
+
+/**
+ * \fn Converter::inputCropBounds(const Stream *stream)
* \brief Retrieve the crop bounds for \a stream
* \param[in] stream The output stream
*
@@ -195,6 +205,9 @@ Converter::~Converter()
* this function should be called after the \a stream has been configured using
* configure().
*
+ * When called with an unconfigured \a stream, this function returns a pair of
+ * null rectangles.
+ *
* \return A pair containing the minimum and maximum crop bound in that order
*/
diff --git a/src/libcamera/converter/converter_v4l2_m2m.cpp b/src/libcamera/converter/converter_v4l2_m2m.cpp
index 8c341fe1..342aa32d 100644
--- a/src/libcamera/converter/converter_v4l2_m2m.cpp
+++ b/src/libcamera/converter/converter_v4l2_m2m.cpp
@@ -273,10 +273,9 @@ V4L2M2MConverter::V4L2M2MConverter(MediaDevice *media)
return;
}
- Rectangle minCrop;
- Rectangle maxCrop;
- ret = getCropBounds(m2m_->output(), minCrop, maxCrop);
- if (!ret && minCrop != maxCrop) {
+ ret = getCropBounds(m2m_->output(), inputCropBounds_.first,
+ inputCropBounds_.second);
+ if (!ret && inputCropBounds_.first != inputCropBounds_.second) {
features_ |= Feature::InputCrop;
LOG(Converter, Info)
@@ -469,14 +468,21 @@ int V4L2M2MConverter::setInputCrop(const Stream *stream, Rectangle *rect)
}
/**
- * \copydoc libcamera::Converter::inputCropBounds
+ * \fn libcamera::V4L2M2MConverter::inputCropBounds()
+ * \copydoc libcamera::Converter::inputCropBounds()
+ */
+
+/**
+ * \copydoc libcamera::Converter::inputCropBounds(const Stream *stream)
*/
std::pair<Rectangle, Rectangle>
V4L2M2MConverter::inputCropBounds(const Stream *stream)
{
auto iter = streams_.find(stream);
- if (iter == streams_.end())
+ if (iter == streams_.end()) {
+ LOG(Converter, Error) << "Invalid output stream";
return {};
+ }
return iter->second->inputCropBounds();
}