Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b80e226b authored by Dichen Zhang's avatar Dichen Zhang
Browse files

jpegr decoder: fill exif buffer

Bug: b/264715926

Change-Id: Id42208fed6e03db21ae87346c46892b989ad3077
parent 2c1f96e0
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -355,8 +355,6 @@ status_t JpegR::decodeJPEGR(jr_compressed_ptr compressed_jpegr_image,
  if (compressed_jpegr_image == nullptr || dest == nullptr) {
    return ERROR_JPEGR_INVALID_NULL_PTR;
  }
  // TODO: fill EXIF data
  (void) exif;

  if (output_format == JPEGR_OUTPUT_SDR) {
    JpegDecoderHelper jpeg_decoder;
@@ -384,6 +382,17 @@ status_t JpegR::decodeJPEGR(jr_compressed_ptr compressed_jpegr_image,
    return ERROR_JPEGR_DECODE_ERROR;
  }

  if (exif != nullptr) {
    if (exif->data == nullptr) {
      return ERROR_JPEGR_INVALID_NULL_PTR;
    }
    if (exif->length < jpeg_decoder.getEXIFSize()) {
      return ERROR_JPEGR_BUFFER_TOO_SMALL;
    }
    memcpy(exif->data, jpeg_decoder.getEXIFPtr(), jpeg_decoder.getEXIFSize());
    exif->length = jpeg_decoder.getEXIFSize();
  }

  JpegDecoderHelper recovery_map_decoder;
  if (!recovery_map_decoder.decompressImage(compressed_map.data, compressed_map.length)) {
    return ERROR_JPEGR_DECODE_ERROR;