android: jpeg: Support an initial set of EXIF metadata tags
Create a Exif object with various metadata tags set, just before the encoder starts to encode the frame. The object is passed directly as libcamera::Span<> to make sure EXIF tags can be set in a single place i.e. in CameraDevice and the encoder only has the job to write the data in the final output. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Umang Jain <email@uajain.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
c3d1329b93
commit
6f09a619cc
6 changed files with 88 additions and 4 deletions
|
@ -180,7 +180,8 @@ void EncoderLibJpeg::compressNV(const libcamera::MappedBuffer *frame)
|
|||
}
|
||||
|
||||
int EncoderLibJpeg::encode(const FrameBuffer *source,
|
||||
const libcamera::Span<uint8_t> &dest)
|
||||
const libcamera::Span<uint8_t> &dest,
|
||||
const libcamera::Span<const uint8_t> &exifData)
|
||||
{
|
||||
MappedFrameBuffer frame(source, PROT_READ);
|
||||
if (!frame.isValid()) {
|
||||
|
@ -204,6 +205,12 @@ int EncoderLibJpeg::encode(const FrameBuffer *source,
|
|||
|
||||
jpeg_start_compress(&compress_, TRUE);
|
||||
|
||||
if (exifData.size())
|
||||
/* Store Exif data in the JPEG_APP1 data block. */
|
||||
jpeg_write_marker(&compress_, JPEG_APP0 + 1,
|
||||
static_cast<const JOCTET *>(exifData.data()),
|
||||
exifData.size());
|
||||
|
||||
LOG(JPEG, Debug) << "JPEG Encode Starting:" << compress_.image_width
|
||||
<< "x" << compress_.image_height;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue