[libcamera-devel] [PATCH 0/3] Initial EXIF metadata support
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Aug 25 23:39:48 CEST 2020
Hi Umang,
On Tue, Aug 25, 2020 at 08:16:44PM +0000, Umang Jain wrote:
> Hi Kieran,
>
> Thanks for the review. Almost all of the comments from this and other
> patches review should be addressed now in v2.
>
> On 8/25/20 2:58 AM, Kieran Bingham wrote:
> > Hi Umang,
> >
> > Thanks for taking this on.
> >
> > 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 ?
>
> Yes, hardcoded in cam's frame_sink_compressor.cpp
>
> >> 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 ;-)
>
> We now use, 'time of encode' as the frame's timestamp as discussed over IRC.
>
> >> 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.
>
> This one still needs looking. I will queue it up.
>
> >> 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.
>
> No idea, seems sane though. :)
That doesn't seem right to me. What is this tag ? I've grepped "Image
number" in the exiv2 sources, and the only occurrences are related to
tags specific to Minolta and Canon.
> >> 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.
>
> Indeed, I intentionally attached exiv2's output to see where we stand
> and what should be the so called 'next fields' to populate.
>
> We can build it on top of this
>
> >> 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