[libcamera-devel] [PATCH v5 7/7] qcam: dng_writer: Record camera model
Umang Jain
email at uajain.com
Mon Sep 28 14:36:49 CEST 2020
Hi Niklas,
Thank you for this work.
On 9/25/20 8:37 PM, Niklas Söderlund wrote:
> Record the model property of the camera if available.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> Reviewed-by: Kieran Bingham <kieran.bingham at 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 030d1387118d91e9..f6d004d0407f8641 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;
>
> @@ -353,6 +354,8 @@ int DNGWriter::write(const char *filename, const Camera *camera,
> [[maybe_unused]] 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;
> @@ -387,9 +390,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());
Looking at TIFFTAG_UNIQUECAMERAMODEL description in the spec, it states
that:
> UniqueCameraModel defines a unique, non-localized name for the camera
model that created the image in the raw file. This name should include
the manufacturer's name to avoid conflicts ...
E.g. mentions - "Canon EOS 300D" , "Nikon DIX" , "Sony F828" etc.
So, I think we can skip setting the UNIQUECAMERAMODEL for now if we
can't get the mfg.'s name (I have similiar issue for setting related
EXIF tag "setMake()" in src/android/cameraDevice.cpp). OR atleast
introduce a \todo to follow up on the work.
Apart for that:
Reviewed-by: Umang Jain <email at uajain.com>
> + }
> +
> TIFFSetField(tif, TIFFTAG_SOFTWARE, "qcam");
> TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
>
More information about the libcamera-devel
mailing list