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

Commit 9b71bc20 authored by Shuzhen Wang's avatar Shuzhen Wang
Browse files

Camera: Avoid Metadata re-allocation during shrinkCaptureResult

If capture result metadata is to be shrinked, reserve enough space so
that CameraMetadata isn't re-allocated when std::vector expands.

If vector expansion happens, CameraMetadata is re-allocated, causing
camera_metadata_t being re-allocated as well.

Test: Camera CTS
Bug: 109672123
Change-Id: Idaf5bf409bdbbccf617614edc96c0478260b4c30
parent 3b50bd92
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1391,6 +1391,8 @@ void CameraDeviceSession::sShrinkCaptureResult(
        std::vector<const camera_metadata_t*>* physCamMdArray,
        bool handlePhysCam) {
    *dst = *src;
    // Reserve maximum number of entries to avoid metadata re-allocation.
    mds->reserve(1 + (handlePhysCam ? src->num_physcam_metadata : 0));
    if (sShouldShrink(src->result)) {
        mds->emplace_back(sCreateCompactCopy(src->result));
        dst->result = mds->back().getAndLock();