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

Commit cbf8ae96 authored by Jayant Chowdhary's avatar Jayant Chowdhary Committed by Automerger Merge Worker
Browse files

Merge "cameraserver: Remove framework only keys before sending capture...

Merge "cameraserver: Remove framework only keys before sending capture requests to hal." into sc-qpr1-dev am: 35b45086

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15822892

Change-Id: I6701b860905a2c2d2a82a13adfef608aacbbdfa4
parents 9092ee66 35b45086
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -4783,6 +4783,26 @@ bool Camera3Device::RequestThread::threadLoop() {
    return submitRequestSuccess;
}

status_t Camera3Device::removeFwkOnlyRegionKeys(CameraMetadata *request) {
    static const std::array<uint32_t, 4> kFwkOnlyRegionKeys = {ANDROID_CONTROL_AF_REGIONS_SET,
        ANDROID_CONTROL_AE_REGIONS_SET, ANDROID_CONTROL_AWB_REGIONS_SET,
        ANDROID_SCALER_CROP_REGION_SET};
    if (request == nullptr) {
        ALOGE("%s request metadata nullptr", __FUNCTION__);
        return BAD_VALUE;
    }
    status_t res = OK;
    for (const auto &key : kFwkOnlyRegionKeys) {
        if (request->exists(key)) {
            res = request->erase(key);
            if (res != OK) {
                return res;
            }
        }
    }
    return OK;
}

status_t Camera3Device::RequestThread::prepareHalRequests() {
    ATRACE_CALL();

@@ -4842,6 +4862,12 @@ status_t Camera3Device::RequestThread::prepareHalRequests() {
                            it != captureRequest->mSettingsList.end(); it++) {
                        if (parent->mUHRCropAndMeteringRegionMappers.find(it->cameraId) ==
                                parent->mUHRCropAndMeteringRegionMappers.end()) {
                            if (removeFwkOnlyRegionKeys(&(it->metadata)) != OK) {
                                SET_ERR("RequestThread: Unable to remove fwk-only keys from request"
                                        "%d: %s (%d)", halRequest->frame_number, strerror(-res),
                                        res);
                                return INVALID_OPERATION;
                            }
                            continue;
                        }

@@ -4856,6 +4882,12 @@ status_t Camera3Device::RequestThread::prepareHalRequests() {
                                return INVALID_OPERATION;
                            }
                            captureRequest->mUHRCropAndMeteringRegionsUpdated = true;
                            if (removeFwkOnlyRegionKeys(&(it->metadata)) != OK) {
                                SET_ERR("RequestThread: Unable to remove fwk-only keys from request"
                                        "%d: %s (%d)", halRequest->frame_number, strerror(-res),
                                        res);
                                return INVALID_OPERATION;
                            }
                        }
                    }

+1 −0
Original line number Diff line number Diff line
@@ -297,6 +297,7 @@ class Camera3Device :

  private:
    status_t disconnectImpl();
    static status_t removeFwkOnlyRegionKeys(CameraMetadata *request);

    // internal typedefs
    using RequestMetadataQueue = hardware::MessageQueue<uint8_t, hardware::kSynchronizedReadWrite>;