Message ID | 20210129060149.13462-1-paul.elder@ideasonboard.com |
---|---|
State | Accepted |
Commit | 78f49d5e348814ae8d7c6bd0c2686112f790ca88 |
Headers | show |
Series |
|
Related | show |
Hi Paul, Thanks for your work. On 2021-01-29 15:01:49 +0900, Paul Elder wrote: > The ExposureTime libcamera control is in microseconds while android and > our exif component use nanoseconds. Convert it appropriately. > > CTS also expects the ExposureTime exif tag to match the ExposureTime set > in the android result metadata. Fix it. > > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> > > --- > Changes in v2: > - remove todo to get the information from libcamera::Request::metadata > - fix potential overflow > --- > src/android/camera_device.cpp | 2 +- > src/android/jpeg/post_processor_jpeg.cpp | 4 ++-- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp > index 741dc8cf..c1025e81 100644 > --- a/src/android/camera_device.cpp > +++ b/src/android/camera_device.cpp > @@ -2058,7 +2058,7 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor, > } > > if (metadata.contains(controls::ExposureTime)) { > - int32_t exposure = metadata.get(controls::ExposureTime); > + int64_t exposure = metadata.get(controls::ExposureTime) * 1000ULL; > resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME, > &exposure, 1); > } > diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp > index cac0087b..1cbab30c 100644 > --- a/src/android/jpeg/post_processor_jpeg.cpp > +++ b/src/android/jpeg/post_processor_jpeg.cpp > @@ -112,8 +112,8 @@ int PostProcessorJpeg::process(const FrameBuffer &source, > */ > exif.setTimestamp(std::time(nullptr), 0ms); > > - /* \todo Get this information from libcamera::Request::metadata */ > - exif.setExposureTime(0); > + ret = resultMetadata->getEntry(ANDROID_SENSOR_EXPOSURE_TIME, &entry); > + exif.setExposureTime(ret ? *entry.data.i64 : 0); > ret = requestMetadata.getEntry(ANDROID_LENS_APERTURE, &entry); > if (ret) > exif.setAperture(*entry.data.f); > -- > 2.27.0 > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 741dc8cf..c1025e81 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -2058,7 +2058,7 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor, } if (metadata.contains(controls::ExposureTime)) { - int32_t exposure = metadata.get(controls::ExposureTime); + int64_t exposure = metadata.get(controls::ExposureTime) * 1000ULL; resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME, &exposure, 1); } diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp index cac0087b..1cbab30c 100644 --- a/src/android/jpeg/post_processor_jpeg.cpp +++ b/src/android/jpeg/post_processor_jpeg.cpp @@ -112,8 +112,8 @@ int PostProcessorJpeg::process(const FrameBuffer &source, */ exif.setTimestamp(std::time(nullptr), 0ms); - /* \todo Get this information from libcamera::Request::metadata */ - exif.setExposureTime(0); + ret = resultMetadata->getEntry(ANDROID_SENSOR_EXPOSURE_TIME, &entry); + exif.setExposureTime(ret ? *entry.data.i64 : 0); ret = requestMetadata.getEntry(ANDROID_LENS_APERTURE, &entry); if (ret) exif.setAperture(*entry.data.f);