mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 23:39:44 +03:00
android: camera_mode: Reserve 'data' vectors
The CameraDevice::getStaticMetadata() function populates the entries for Android's static metadata by walking the ControlInfo supported values reported by the libcamera pipeline. The number of entries to be passed to Android is computed using the vector's size which is initialized at vector creation time to the maximum number of available entries. In order to report the correct number of metadata do not create the vector with the largest possible number of elements but only reserve space for them using std::vector::reserve() which does not modify the vector's size. This patch fixes cros_camera_test: Camera3DeviceTest/Camera3DeviceDefaultSettings.ConstructDefaultSettings/1 Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
5815bd0397
commit
c268e4f2e8
1 changed files with 6 additions and 3 deletions
|
@ -596,7 +596,8 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
|
|||
|
||||
/* Color correction static metadata. */
|
||||
{
|
||||
std::vector<uint8_t> data(3);
|
||||
std::vector<uint8_t> data;
|
||||
data.reserve(3);
|
||||
const auto &infoMap = controlsInfo.find(&controls::draft::ColorCorrectionAberrationMode);
|
||||
if (infoMap != controlsInfo.end()) {
|
||||
for (const auto &value : infoMap->second.values())
|
||||
|
@ -782,7 +783,8 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
|
|||
&maxFaceCount, 1);
|
||||
|
||||
{
|
||||
std::vector<uint8_t> data(2);
|
||||
std::vector<uint8_t> data;
|
||||
data.reserve(2);
|
||||
const auto &infoMap = controlsInfo.find(&controls::draft::LensShadingMapMode);
|
||||
if (infoMap != controlsInfo.end()) {
|
||||
for (const auto &value : infoMap->second.values())
|
||||
|
@ -850,7 +852,8 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
|
|||
|
||||
/* Noise reduction modes. */
|
||||
{
|
||||
std::vector<uint8_t> data(5);
|
||||
std::vector<uint8_t> data;
|
||||
data.reserve(5);
|
||||
const auto &infoMap = controlsInfo.find(&controls::draft::NoiseReductionMode);
|
||||
if (infoMap != controlsInfo.end()) {
|
||||
for (const auto &value : infoMap->second.values())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue