Merge "Camera: Update readoutTimeout requirement"

This commit is contained in:
TreeHugger Robot
2021-12-06 18:25:21 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 5 deletions

View File

@@ -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;
};

View File

@@ -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);
}
}
}