[libcamera-devel] [PATCH] android: camera_device: Calculate MAX_JPEG_SIZE
Jacopo Mondi
jacopo at jmondi.org
Tue Feb 2 13:36:20 CET 2021
Calculate the JPEG maximum size using the maximum preview format size
multiplied by a 1.5 factor.
The same multiplication factor is used in the existing HAL
implementation in ChromeOS.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
src/android/camera_device.cpp | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index a50b0ebfe60e..cb87d97888ed 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -347,12 +347,6 @@ CameraDevice::CameraDevice(unsigned int id, const std::shared_ptr<Camera> &camer
{
camera_->requestCompleted.connect(this, &CameraDevice::requestComplete);
- /*
- * \todo Determine a more accurate value for this during
- * streamConfiguration.
- */
- maxJpegBufferSize_ = 13 << 20; /* 13631488 from USB HAL */
-
maker_ = "libcamera";
model_ = "cameraModel";
@@ -629,6 +623,7 @@ int CameraDevice::initializeStreamConfigurations()
mappedFormat,
cameraResolutions);
+ Size maxJpegSize;
for (const Size &res : resolutions) {
streamConfigurations_.push_back({ res, androidFormat });
@@ -643,9 +638,17 @@ int CameraDevice::initializeStreamConfigurations()
* \todo Support JPEG streams produced by the Camera
* natively.
*/
- if (androidFormat == HAL_PIXEL_FORMAT_YCbCr_420_888)
+ if (androidFormat == HAL_PIXEL_FORMAT_YCbCr_420_888) {
streamConfigurations_.push_back(
{ res, HAL_PIXEL_FORMAT_BLOB });
+
+ if (res > maxJpegSize) {
+ maxJpegSize = res;
+ maxJpegBufferSize_ = maxJpegSize.width
+ * maxJpegSize.height
+ * 1.5;
+ }
+ }
}
}
@@ -878,10 +881,6 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
availableThumbnailSizes.data(),
availableThumbnailSizes.size());
- /*
- * \todo Calculate the maximum JPEG buffer size by asking the encoder
- * giving the maximum frame size required.
- */
staticMetadata_->addEntry(ANDROID_JPEG_MAX_SIZE, &maxJpegBufferSize_, 1);
/* Sensor static metadata. */
--
2.30.0
More information about the libcamera-devel
mailing list