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

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Aug 24 23:28:15 CEST 2020


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 ?


> 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.


> 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
--
Kieran


More information about the libcamera-devel mailing list