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

Commit 1ae25d67 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "camera: Use device level ZSL if supported" into oc-mr1-dev

parents 7d7d3210 fa52c0fd
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -72,6 +72,20 @@ status_t Camera2Client::initialize(sp<CameraProviderManager> manager) {
    return initializeImpl(manager);
}

bool Camera2Client::isZslEnabledInStillTemplate() {
    bool zslEnabled = false;
    CameraMetadata stillTemplate;
    status_t res = mDevice->createDefaultRequest(CAMERA2_TEMPLATE_STILL_CAPTURE, &stillTemplate);
    if (res == OK) {
        camera_metadata_entry_t enableZsl = stillTemplate.find(ANDROID_CONTROL_ENABLE_ZSL);
        if (enableZsl.count == 1) {
            zslEnabled = (enableZsl.data.u8[0] == ANDROID_CONTROL_ENABLE_ZSL_TRUE);
        }
    }

    return zslEnabled;
}

template<typename TProviderPtr>
status_t Camera2Client::initializeImpl(TProviderPtr providerPtr)
{
@@ -93,6 +107,8 @@ status_t Camera2Client::initializeImpl(TProviderPtr providerPtr)
                    __FUNCTION__, mCameraId, strerror(-res), res);
            return NO_INIT;
        }

        l.mParameters.isDeviceZslSupported = isZslEnabledInStillTemplate();
    }

    String8 threadName;
+2 −0
Original line number Diff line number Diff line
@@ -224,6 +224,8 @@ private:

    template<typename TProviderPtr>
    status_t initializeImpl(TProviderPtr providerPtr);

    bool isZslEnabledInStillTemplate();
};

}; // namespace android
+4 −2
Original line number Diff line number Diff line
@@ -954,7 +954,8 @@ status_t Parameters::initialize(const CameraMetadata *info, int deviceVersion) {
        }
    }

    if (slowJpegMode || property_get_bool("camera.disable_zsl_mode", false)) {
    if (isDeviceZslSupported || slowJpegMode ||
            property_get_bool("camera.disable_zsl_mode", false)) {
        ALOGI("Camera %d: Disabling ZSL mode", cameraId);
        allowZslMode = false;
    } else {
@@ -1997,7 +1998,8 @@ status_t Parameters::set(const String8& paramString) {
    if (previewFpsRange[1] > 1e9/minFrameDurationNs + FPS_MARGIN) {
        slowJpegMode = true;
    }
    if (slowJpegMode || property_get_bool("camera.disable_zsl_mode", false)) {
    if (isDeviceZslSupported || slowJpegMode ||
            property_get_bool("camera.disable_zsl_mode", false)) {
        allowZslMode = false;
    } else {
        allowZslMode = isZslReprocessPresent;
+2 −0
Original line number Diff line number Diff line
@@ -175,6 +175,8 @@ struct Parameters {
    bool slowJpegMode;
    // Whether ZSL reprocess is supported by the device.
    bool isZslReprocessPresent;
    // Whether the device supports enableZsl.
    bool isDeviceZslSupported;

    // Overall camera state
    enum State {