[libcamera-devel,v3,7/7] qcam: dng_writer: Record camera model

Message ID 20200813095726.3497193-8-niklas.soderlund@ragnatech.se
State Accepted
Headers show
Series
  • libcamera: Allow for user-friendly names in applications
Related show

Commit Message

Niklas Söderlund Aug. 13, 2020, 9:57 a.m. UTC
Record the model property of the camera if available.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
---
 src/qcam/dng_writer.cpp | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

Comments

Kieran Bingham Aug. 13, 2020, 3:51 p.m. UTC | #1
Hi Niklas,

On 13/08/2020 10:57, Niklas Söderlund wrote:
> Record the model property of the camera if available.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

> ---
>  src/qcam/dng_writer.cpp | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/src/qcam/dng_writer.cpp b/src/qcam/dng_writer.cpp
> index b5b81f0637b545af..3556dad16fd71b64 100644
> --- a/src/qcam/dng_writer.cpp
> +++ b/src/qcam/dng_writer.cpp
> @@ -15,6 +15,7 @@
>  
>  #include <libcamera/control_ids.h>
>  #include <libcamera/formats.h>
> +#include <libcamera/property_ids.h>
>  
>  using namespace libcamera;
>  
> @@ -352,6 +353,8 @@ int DNGWriter::write(const char *filename, const Camera *camera,
>  		     const ControlList &metadata,
>  		     const FrameBuffer *buffer, const void *data)
>  {
> +	const ControlList &cameraProperties = camera->properties();
> +

I'm starting to really like the flexibility of the 'properties'.

The type "ControlList" is starting to seem a bit awkward though, but
that's nothing to do with this, and just a potential API consideration.

--
Kieran


>  	const auto it = formatInfo.find(config.pixelFormat);
>  	if (it == formatInfo.cend()) {
>  		std::cerr << "Unsupported pixel format" << std::endl;
> @@ -386,9 +389,13 @@ int DNGWriter::write(const char *filename, const Camera *camera,
>  	TIFFSetField(tif, TIFFTAG_DNGBACKWARDVERSION, version);
>  	TIFFSetField(tif, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB);
>  	TIFFSetField(tif, TIFFTAG_MAKE, "libcamera");
> -	/* \todo Report a real model string instead of id. */
> -	TIFFSetField(tif, TIFFTAG_MODEL, camera->id().c_str());
> -	TIFFSetField(tif, TIFFTAG_UNIQUECAMERAMODEL, camera->id().c_str());
> +
> +	if (cameraProperties.contains(properties::Model)) {
> +		std::string model = cameraProperties.get(properties::Model);
> +		TIFFSetField(tif, TIFFTAG_MODEL, model.c_str());
> +		TIFFSetField(tif, TIFFTAG_UNIQUECAMERAMODEL, model.c_str());
> +	}
> +
>  	TIFFSetField(tif, TIFFTAG_SOFTWARE, "qcam");
>  	TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
>  
>

Patch

diff --git a/src/qcam/dng_writer.cpp b/src/qcam/dng_writer.cpp
index b5b81f0637b545af..3556dad16fd71b64 100644
--- a/src/qcam/dng_writer.cpp
+++ b/src/qcam/dng_writer.cpp
@@ -15,6 +15,7 @@ 
 
 #include <libcamera/control_ids.h>
 #include <libcamera/formats.h>
+#include <libcamera/property_ids.h>
 
 using namespace libcamera;
 
@@ -352,6 +353,8 @@  int DNGWriter::write(const char *filename, const Camera *camera,
 		     const ControlList &metadata,
 		     const FrameBuffer *buffer, const void *data)
 {
+	const ControlList &cameraProperties = camera->properties();
+
 	const auto it = formatInfo.find(config.pixelFormat);
 	if (it == formatInfo.cend()) {
 		std::cerr << "Unsupported pixel format" << std::endl;
@@ -386,9 +389,13 @@  int DNGWriter::write(const char *filename, const Camera *camera,
 	TIFFSetField(tif, TIFFTAG_DNGBACKWARDVERSION, version);
 	TIFFSetField(tif, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB);
 	TIFFSetField(tif, TIFFTAG_MAKE, "libcamera");
-	/* \todo Report a real model string instead of id. */
-	TIFFSetField(tif, TIFFTAG_MODEL, camera->id().c_str());
-	TIFFSetField(tif, TIFFTAG_UNIQUECAMERAMODEL, camera->id().c_str());
+
+	if (cameraProperties.contains(properties::Model)) {
+		std::string model = cameraProperties.get(properties::Model);
+		TIFFSetField(tif, TIFFTAG_MODEL, model.c_str());
+		TIFFSetField(tif, TIFFTAG_UNIQUECAMERAMODEL, model.c_str());
+	}
+
 	TIFFSetField(tif, TIFFTAG_SOFTWARE, "qcam");
 	TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);