<div dir="auto"><div><div data-smartmail="gmail_signature">Sorry, forgot to add the 'Reviewed by' tag :/</div><div data-smartmail="gmail_signature" dir="auto"><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 3 Apr, 2020, 21:36 Kaaira Gupta, <<a href="mailto:kgupta@es.iitr.ac.in" target="_blank" rel="noreferrer">kgupta@es.iitr.ac.in</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">DRM fourccs look like they have a per-plane modifier, but in fact each<br>
of them should be same. Hence instead of passing a set of modifiers for<br>
each fourcc in PixelFormat class, we can pass just a single modifier.<br>
So, replace the set with a single value.<br>
<br>
Signed-off-by: Kaaira Gupta <<a href="mailto:kgupta@es.iitr.ac.in" rel="noreferrer noreferrer" target="_blank">kgupta@es.iitr.ac.in</a>><br>
---<br>
Changes since v1:<br>
- reformat the code.<br>
- Make commit message more articulate.<br>
<br>
include/libcamera/pixelformats.h | 6 +++---<br>
src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +-<br>
src/libcamera/pixelformats.cpp | 24 ++++++++++++------------<br>
3 files changed, 16 insertions(+), 16 deletions(-)<br>
<br>
diff --git a/include/libcamera/pixelformats.h b/include/libcamera/pixelformats.h<br>
index 9ce6f7f..89966e5 100644<br>
--- a/include/libcamera/pixelformats.h<br>
+++ b/include/libcamera/pixelformats.h<br>
@@ -19,7 +19,7 @@ class PixelFormat<br>
{<br>
public:<br>
PixelFormat();<br>
- explicit PixelFormat(uint32_t fourcc, const std::set<uint64_t> &modifiers = {});<br>
+ explicit PixelFormat(uint32_t fourcc, uint64_t modifier = 0);<br>
<br>
bool operator==(const PixelFormat &other) const;<br>
bool operator!=(const PixelFormat &other) const { return !(*this == other); }<br>
@@ -29,13 +29,13 @@ public:<br>
<br>
operator uint32_t() const { return fourcc_; }<br>
uint32_t fourcc() const { return fourcc_; }<br>
- const std::set<uint64_t> &modifiers() const { return modifiers_; }<br>
+ uint64_t modifier() const { return modifier_; }<br>
<br>
std::string toString() const;<br>
<br>
private:<br>
uint32_t fourcc_;<br>
- std::set<uint64_t> modifiers_;<br>
+ uint64_t modifier_;<br>
};<br>
<br>
} /* namespace libcamera */<br>
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp<br>
index 1e114ca..219b90b 100644<br>
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp<br>
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp<br>
@@ -365,7 +365,7 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()<br>
const Size size = cfg.size;<br>
const IPU3Stream *stream;<br>
<br>
- if (cfg.pixelFormat.modifiers().count(IPU3_FORMAT_MOD_PACKED))<br>
+ if (cfg.pixelFormat.modifier() == IPU3_FORMAT_MOD_PACKED)<br>
stream = &data_->rawStream_;<br>
else if (cfg.size == sensorFormat_.size)<br>
stream = &data_->outStream_;<br>
diff --git a/src/libcamera/pixelformats.cpp b/src/libcamera/pixelformats.cpp<br>
index 87557d9..1330dc5 100644<br>
--- a/src/libcamera/pixelformats.cpp<br>
+++ b/src/libcamera/pixelformats.cpp<br>
@@ -19,9 +19,9 @@ namespace libcamera {<br>
* \brief libcamera image pixel format<br>
*<br>
* The PixelFormat type describes the format of images in the public libcamera<br>
- * API. It stores a FourCC value as a 32-bit unsigned integer and a set of<br>
- * modifiers. The FourCC and modifiers values are defined in the Linux kernel<br>
- * DRM/KMS API (see linux/drm_fourcc.h).<br>
+ * API. It stores a FourCC value as a 32-bit unsigned integer and a modifier.<br>
+ * The FourCC and modifier values are defined in the Linux kernel DRM/KMS API<br>
+ * (see linux/drm_fourcc.h).<br>
*/<br>
<br>
/**<br>
@@ -36,12 +36,12 @@ PixelFormat::PixelFormat()<br>
}<br>
<br>
/**<br>
- * \brief Construct a PixelFormat from a DRM FourCC and a set of modifiers<br>
+ * \brief Construct a PixelFormat from a DRM FourCC and a modifier<br>
* \param[in] fourcc A DRM FourCC<br>
- * \param[in] modifiers A set of DRM FourCC modifiers<br>
+ * \param[in] modifier A DRM FourCC modifier<br>
*/<br>
-PixelFormat::PixelFormat(uint32_t fourcc, const std::set<uint64_t> &modifiers)<br>
- : fourcc_(fourcc), modifiers_(modifiers)<br>
+PixelFormat::PixelFormat(uint32_t fourcc, uint64_t modifier)<br>
+ : fourcc_(fourcc), modifier_(modifier)<br>
{<br>
}<br>
<br>
@@ -51,7 +51,7 @@ PixelFormat::PixelFormat(uint32_t fourcc, const std::set<uint64_t> &modifiers)<br>
*/<br>
bool PixelFormat::operator==(const PixelFormat &other) const<br>
{<br>
- return fourcc_ == other.fourcc() && modifiers_ == other.modifiers_;<br>
+ return fourcc_ == other.fourcc() && modifier_ == other.modifier_;<br>
}<br>
<br>
/**<br>
@@ -70,7 +70,7 @@ bool PixelFormat::operator<(const PixelFormat &other) const<br>
return true;<br>
if (fourcc_ > other.fourcc_)<br>
return false;<br>
- return modifiers_ < modifiers_;<br>
+ return modifier_ < other.modifier_;<br>
}<br>
<br>
/**<br>
@@ -97,9 +97,9 @@ bool PixelFormat::operator<(const PixelFormat &other) const<br>
*/<br>
<br>
/**<br>
- * \fn PixelFormat::modifiers() const<br>
- * \brief Retrieve the pixel format modifiers<br>
- * \return Set of DRM modifiers<br>
+ * \fn PixelFormat::modifier() const<br>
+ * \brief Retrieve the pixel format modifier<br>
+ * \return DRM modifier<br>
*/<br>
<br>
/**<br>
-- <br>
2.17.1<br>
<br>
</blockquote></div></div></div>