[libcamera-devel] [PATCH 0/3] Initial EXIF metadata support

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Aug 27 19:44:16 CEST 2020


Hi Umang,

On Thu, Aug 27, 2020 at 05:53:54AM +0000, Umang Jain wrote:
> On 8/25/20 2:58 AM, Kieran Bingham wrote:
> > On 24/08/2020 21:46, Umang Jain wrote:
> >> Hi all,
> >>
> >> This patch series targets adding initial EXIF metadata support
> >> for the frames captured in Android/Libcamera framework.
> >>
> >> It is initial in the sense, it adds the base infrastructure for
> >> Exif metadata support via 'libexif' and also encodes a initial
> >> set of metadata tags into the frames.
> >>
> >> Testing:
> >> The testing of this work was carried out via vivid pipeline-handler
> >> in conjunction with patch in `cam` using EncoderLibJpeg as the
> >> file sink [1]. That way we could see what EXIF metadata could be written
> >> and inspect that `exif` or `exiv2` commandline tools.
> >>
> >> ($) ./build/src/cam/cam -c vivid -C5 -F -s pixelformat=NV12
> >>
> >> Sample output (1):  exif  frame-stream0-000000.jpg
> >> EXIF tags in 'frame-stream0-000000.jpg' ('Intel' byte order):
> >> --------------------+----------------------------------------------------------
> >> Tag                 |Value
> >> --------------------+----------------------------------------------------------
> >> Image Width         |1280
> >> Image Length        |720
> >> Manufacturer        |Libcamera
> >
> > Looking at my branch, it was of course me who put this in (incorrectly)
> > with a capital L, but please make it lowercase ;-)
> >
> >> Model               |Camera2111
> >
> > I assume you set this Camera2111 string manually for testing ?
> >
> >> Orientation         |Bottom-left
> >> X-Resolution        |72
> >> Y-Resolution        |72
> >> Resolution Unit     |Inch
> >> Date and Time       |Sun Oct 13 07:03:20 734137
> >>
> >> YCbCr Positioning   |Centered
> >> Exif Version        |Exif Version 2.1
> >> Date and Time (Origi|Sun Oct 13 07:03:20 734137
> >>
> >> Date and Time (Digit|Sun Oct 13 07:03:20 734137
> >
> > Hrm ... we might have some work to do on converting the timestamp values
> > appropriately here. That doesn't look right at all ;-)
> >
> >> Components Configura|Y Cb Cr -
> >> FlashPixVersion     |FlashPix Version 1.0
> >> Color Space         |Internal error (unknown value 65535)
>
> > This one needs to be checked if there is an error/incorrect parameter set.
> I found out that, this is not an error. The error messsage however, is 
> misleading.
> https://github.com/Aries85/LightZone/issues/171#issuecomment-195730879
> 
> Color Space 65535 => Uncalibrated.
> We are running exif_data_fix(data_); in exif's constructor, so I think it's where
> this "Uncalibrated" value is getting set as the default value for color space.
> 
> Can we query colorspace as of now? Then we can try setting it here as well.

See src/qcam/dng_writer.cpp, we record some colorspace-related
information there.

> >> Pixel X Dimension   |1280
> >> Pixel Y Dimension   |720
> >>
> >>
> >>
> >> Sample output (2): exiv2  frame-stream0-000000.jpg
> >> File name       : frame-stream0-000000.jpg
> >> File size       : 38787 Bytes
> >> MIME type       : image/jpeg
> >> Image size      : 1280 x 720
> >> Camera make     : Libcamera
> >> Camera model    : Camera2111
> >> Image timestamp : Sun Oct 13 07:03:20 734137
> >>
> >> Image number    :
> >
> > Hrm, I wonder if we should put the sequence number in here.
> >
> >> Exposure time   :
> >> Aperture        :
> >> Exposure bias   :
> >> Flash           :
> >> Flash bias      :
> >> Focal length    :
> >> Subject distance:
> >> ISO speed       :
> >> Exposure mode   :
> >> Metering mode   :
> >> Macro mode      :
> >> Image quality   :
> >
> > Plenty of parameters we'll want to get from the IPAs there, but that
> > will be later.
> >
> >> Exif Resolution : 1280 x 720
> >> White balance   :
> >> Thumbnail       : None
> >> Copyright       :
> >> Exif comment    :
> >>
> >> There are still a lot of tags that needs to be populated,
> >> that can be built on top of this groundwork.
> >>
> >> [1]: https://github.com/kbingham/libcamera/commit/10ed8ec
> >>
> >> Kieran Bingham (1):
> >>    libcamera: android: Add EXIF infrastructure
> >>
> >> Umang Jain (2):
> >>    android: jpeg: Pass a Exif object while encoding
> >>    android: Support initial set of EXIF metadata tags
> >>
> >>   src/android/camera_device.cpp        |  12 +-
> >>   src/android/jpeg/encoder.h           |   5 +-
> >>   src/android/jpeg/encoder_libjpeg.cpp |  15 +-
> >>   src/android/jpeg/encoder_libjpeg.h   |   3 +-
> >>   src/android/jpeg/exif.cpp            | 210 +++++++++++++++++++++++++++
> >>   src/android/jpeg/exif.h              |  53 +++++++
> >>   src/android/meson.build              |   2 +
> >>   7 files changed, 296 insertions(+), 4 deletions(-)
> >>   create mode 100644 src/android/jpeg/exif.cpp
> >>   create mode 100644 src/android/jpeg/exif.h

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list