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

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

Merge "Camera: Update readoutTimeout requirement"

parents 242db9be 8136c00c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -35,8 +35,9 @@ struct ShutterMsg {

    /**
     * Timestamp for the capture readout. This must be in the same time domain
     * as v3_2.timestamp, and the value must be v3_2.timestamp + exposureTime
     * for a rolling shutter sensor.
     * as v3_2.timestamp, and for a rolling shutter sensor, the value must be
     * v3_2.timestamp + exposureTime + t_crop_top where t_crop_top is the exposure time
     * skew of the cropped lines on the top.
     */
    uint64_t readoutTimestamp;
};
+12 −3
Original line number Diff line number Diff line
@@ -4796,15 +4796,24 @@ void CameraHidlTest::processCaptureRequestInternal(uint64_t bufferUsage,
            ASSERT_EQ(testStream.id, inflightReq.resultOutputBuffers[0].streamId);

            // For camera device 3.8 or newer, shutterReadoutTimestamp must be
            // available, and it must be shutterTimestamp + exposureTime.
            // available, and it must be >= shutterTimestamp + exposureTime, and
            // < shutterTimestamp + exposureTime + rollingShutterSkew / 2.
            if (deviceVersion >= CAMERA_DEVICE_API_VERSION_3_8) {
                ASSERT_TRUE(inflightReq.shutterReadoutTimestampValid);
                ASSERT_FALSE(inflightReq.collectedResult.isEmpty());
                if (inflightReq.collectedResult.exists(ANDROID_SENSOR_EXPOSURE_TIME)) {
                    camera_metadata_entry_t exposureTimeResult = inflightReq.collectedResult.find(
                            ANDROID_SENSOR_EXPOSURE_TIME);
                    ASSERT_EQ(inflightReq.shutterReadoutTimestamp - inflightReq.shutterTimestamp,
                            exposureTimeResult.data.i64[0]);
                    nsecs_t exposureToReadout =
                            inflightReq.shutterReadoutTimestamp - inflightReq.shutterTimestamp;
                    ASSERT_GE(exposureToReadout, exposureTimeResult.data.i64[0]);
                    if (inflightReq.collectedResult.exists(ANDROID_SENSOR_ROLLING_SHUTTER_SKEW)) {
                        camera_metadata_entry_t rollingShutterSkew =
                                inflightReq.collectedResult.find(
                                        ANDROID_SENSOR_ROLLING_SHUTTER_SKEW);
                        ASSERT_LT(exposureToReadout, exposureTimeResult.data.i64[0] +
                                                             rollingShutterSkew.data.i64[0] / 2);
                    }
                }
            }