mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 23:39:44 +03:00
android: camera_device: Store static metadata in cache
The CameraDevice class has a mechanism to cache static metadata, but doesn't use it. Fix it. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
53704ac3f4
commit
82bdcc91fc
1 changed files with 21 additions and 21 deletions
|
@ -131,14 +131,14 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
/* \todo Use correct sizes */
|
/* \todo Use correct sizes */
|
||||||
#define STATIC_ENTRY_CAP 256
|
#define STATIC_ENTRY_CAP 256
|
||||||
#define STATIC_DATA_CAP 6688
|
#define STATIC_DATA_CAP 6688
|
||||||
camera_metadata_t *staticMetadata =
|
staticMetadata_ = allocate_camera_metadata(STATIC_ENTRY_CAP,
|
||||||
allocate_camera_metadata(STATIC_ENTRY_CAP, STATIC_DATA_CAP);
|
STATIC_DATA_CAP);
|
||||||
|
|
||||||
/* Sensor static metadata. */
|
/* Sensor static metadata. */
|
||||||
int32_t pixelArraySize[] = {
|
int32_t pixelArraySize[] = {
|
||||||
2592, 1944,
|
2592, 1944,
|
||||||
};
|
};
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
|
ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
|
||||||
&pixelArraySize, 2);
|
&pixelArraySize, 2);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
@ -146,7 +146,7 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
int32_t sensorSizes[] = {
|
int32_t sensorSizes[] = {
|
||||||
0, 0, 2560, 1920,
|
0, 0, 2560, 1920,
|
||||||
};
|
};
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
|
ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
|
||||||
&sensorSizes, 4);
|
&sensorSizes, 4);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
@ -154,13 +154,13 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
int32_t sensitivityRange[] = {
|
int32_t sensitivityRange[] = {
|
||||||
32, 2400,
|
32, 2400,
|
||||||
};
|
};
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,
|
ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,
|
||||||
&sensitivityRange, 2);
|
&sensitivityRange, 2);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
|
||||||
uint16_t filterArr = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG;
|
uint16_t filterArr = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG;
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,
|
ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,
|
||||||
&filterArr, 1);
|
&filterArr, 1);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
@ -168,33 +168,33 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
int64_t exposureTimeRange[] = {
|
int64_t exposureTimeRange[] = {
|
||||||
100000, 200000000,
|
100000, 200000000,
|
||||||
};
|
};
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
|
ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
|
||||||
&exposureTimeRange, 2);
|
&exposureTimeRange, 2);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
|
||||||
int32_t orientation = 0;
|
int32_t orientation = 0;
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_SENSOR_ORIENTATION,
|
ANDROID_SENSOR_ORIENTATION,
|
||||||
&orientation, 1);
|
&orientation, 1);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
|
||||||
/* Flash static metadata. */
|
/* Flash static metadata. */
|
||||||
char flashAvailable = ANDROID_FLASH_INFO_AVAILABLE_FALSE;
|
char flashAvailable = ANDROID_FLASH_INFO_AVAILABLE_FALSE;
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_FLASH_INFO_AVAILABLE,
|
ANDROID_FLASH_INFO_AVAILABLE,
|
||||||
&flashAvailable, 1);
|
&flashAvailable, 1);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
|
||||||
/* Lens static metadata. */
|
/* Lens static metadata. */
|
||||||
float fn = 2.53 / 100;
|
float fn = 2.53 / 100;
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_LENS_INFO_AVAILABLE_APERTURES, &fn, 1);
|
ANDROID_LENS_INFO_AVAILABLE_APERTURES, &fn, 1);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
|
||||||
/* Control metadata. */
|
/* Control metadata. */
|
||||||
char controlMetadata = ANDROID_CONTROL_MODE_AUTO;
|
char controlMetadata = ANDROID_CONTROL_MODE_AUTO;
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_CONTROL_AVAILABLE_MODES,
|
ANDROID_CONTROL_AVAILABLE_MODES,
|
||||||
&controlMetadata, 1);
|
&controlMetadata, 1);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
@ -205,7 +205,7 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ,
|
ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ,
|
||||||
ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO,
|
ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO,
|
||||||
};
|
};
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,
|
ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,
|
||||||
availableAntiBandingModes, 4);
|
availableAntiBandingModes, 4);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
@ -214,19 +214,19 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
ANDROID_CONTROL_AE_MODE_ON,
|
ANDROID_CONTROL_AE_MODE_ON,
|
||||||
ANDROID_CONTROL_AE_MODE_OFF,
|
ANDROID_CONTROL_AE_MODE_OFF,
|
||||||
};
|
};
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_CONTROL_AE_AVAILABLE_MODES,
|
ANDROID_CONTROL_AE_AVAILABLE_MODES,
|
||||||
aeAvailableModes, 2);
|
aeAvailableModes, 2);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
|
||||||
controlMetadata = ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE;
|
controlMetadata = ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE;
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_CONTROL_AE_LOCK_AVAILABLE,
|
ANDROID_CONTROL_AE_LOCK_AVAILABLE,
|
||||||
&controlMetadata, 1);
|
&controlMetadata, 1);
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
|
||||||
uint8_t awbLockAvailable = ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE;
|
uint8_t awbLockAvailable = ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE;
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
|
ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
|
||||||
&awbLockAvailable, 1);
|
&awbLockAvailable, 1);
|
||||||
|
|
||||||
|
@ -236,7 +236,7 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888,
|
ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888,
|
||||||
ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED,
|
ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED,
|
||||||
};
|
};
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_SCALER_AVAILABLE_FORMATS,
|
ANDROID_SCALER_AVAILABLE_FORMATS,
|
||||||
availableStreamFormats.data(),
|
availableStreamFormats.data(),
|
||||||
availableStreamFormats.size());
|
availableStreamFormats.size());
|
||||||
|
@ -250,7 +250,7 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, 2560, 1920,
|
ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, 2560, 1920,
|
||||||
ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
|
ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
|
||||||
};
|
};
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
|
ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
|
||||||
availableStreamConfigurations.data(),
|
availableStreamConfigurations.data(),
|
||||||
availableStreamConfigurations.size());
|
availableStreamConfigurations.size());
|
||||||
|
@ -259,7 +259,7 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
std::vector<int64_t> availableStallDurations = {
|
std::vector<int64_t> availableStallDurations = {
|
||||||
ANDROID_SCALER_AVAILABLE_FORMATS_BLOB, 2560, 1920, 33333333,
|
ANDROID_SCALER_AVAILABLE_FORMATS_BLOB, 2560, 1920, 33333333,
|
||||||
};
|
};
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_SCALER_AVAILABLE_STALL_DURATIONS,
|
ANDROID_SCALER_AVAILABLE_STALL_DURATIONS,
|
||||||
availableStallDurations.data(),
|
availableStallDurations.data(),
|
||||||
availableStallDurations.size());
|
availableStallDurations.size());
|
||||||
|
@ -270,18 +270,18 @@ camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, 2560, 1920, 33333333,
|
ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, 2560, 1920, 33333333,
|
||||||
ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888, 2560, 1920, 33333333,
|
ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888, 2560, 1920, 33333333,
|
||||||
};
|
};
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,
|
ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,
|
||||||
minFrameDurations.data(), minFrameDurations.size());
|
minFrameDurations.data(), minFrameDurations.size());
|
||||||
METADATA_ASSERT(ret);
|
METADATA_ASSERT(ret);
|
||||||
|
|
||||||
/* Info static metadata. */
|
/* Info static metadata. */
|
||||||
uint8_t supportedHWLevel = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;
|
uint8_t supportedHWLevel = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;
|
||||||
ret = add_camera_metadata_entry(staticMetadata,
|
ret = add_camera_metadata_entry(staticMetadata_,
|
||||||
ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,
|
ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,
|
||||||
&supportedHWLevel, 1);
|
&supportedHWLevel, 1);
|
||||||
|
|
||||||
return staticMetadata;
|
return staticMetadata_;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue