Merge "Camera: Allow non-session parameters in SessionConfiguration" into main

This commit is contained in:
Shuzhen Wang 2024-01-16 16:38:31 +00:00 committed by Android (Google) Code Review
commit 84bc4a190d
3 changed files with 19 additions and 12 deletions

View file

@ -365,16 +365,20 @@ interface ICameraDevice {
* isStreamCombinationWithSettingsSupported:
*
* This is the same as isStreamCombinationSupported with below exceptions:
*
* 1. The input StreamConfiguration parameter may contain session parameters
* supported by this camera device. When checking if the particular StreamConfiguration
* is supported, the camera HAL must take the session parameters into consideration.
* as well as additional CaptureRequest keys. See the comment
* sections below on what additional capture request keys are passed in
* StreamConfiguration::sessionParameters for each interface version. When checking if
* the particular StreamConfiguration is supported, the camera HAL must take all
* the keys in sessionParameters into consideration.
*
* 2. For version 3 of this interface, the camera compliance test will verify that
* isStreamCombinationWithSettingsSupported behaves properly for all combinations of
* below features. This function must return true for all supported combinations,
* and return false for non-supported feature combinations. The list of features
* required may grow in future versions.
* required may grow in future versions. The additional metadata entries in
* StreamConfiguration::sessionParameters are {CONTROL_AE_TARGET_FPS_RANGE,
* CONTROL_VIDEO_STABILIZATION_MODE}.
*
* - Stream Combinations (a subset of LEGACY device mandatory stream combinations):
* {
@ -429,7 +433,7 @@ interface ICameraDevice {
* 4032 x 3024, the camera compliance test will verify both
* {PRIV, 1920 x 1440, JPEG, 4032 x 3024} and {PRIV, 2560 x 1440, JPEG, 4032 x 2268}.
*
* @param streams The StreamConfiguration to be tested, with optional session parameters.
* @param streams The StreamConfiguration to be tested, with optional CaptureRequest parameters.
*
* @return true in case the stream combination is supported, false otherwise.
*

View file

@ -59,6 +59,14 @@ parcelable StreamConfiguration {
* pipeline updates. The field is optional, clients can choose to ignore it and avoid
* including any initial settings. If parameters are present, then hal must examine
* their values and configure the internal camera pipeline accordingly.
*
* A null pointer is equivalent to a valid CameraMetadata object with zero entries.
*
* For a StreamConfiguration passed to ICameraDevice.isStreamCombinationWithSettingsSupported
* or ICameraDevice.getSessionCharacteristics, this variable may also contain keys
* that are not session parameters, but are used to specify certain features for a
* session. For example, CONTROL_VIDEO_STABILIZATION_MODE may be included even if it's not a
* session parameter.
*/
CameraMetadata sessionParams;

View file

@ -1912,16 +1912,11 @@ void CameraAidlTest::verifyStreamCombination(const std::shared_ptr<ICameraDevice
if (supportFeatureCombinationQuery) {
ret = device->isStreamCombinationWithSettingsSupported(config,
&streamCombinationSupported);
// TODO: Do not allow OPERATION_NOT_SUPPORTED once HAL
// implementation is in place.
ASSERT_TRUE(ret.isOk() || static_cast<Status>(ret.getServiceSpecificError()) ==
Status::OPERATION_NOT_SUPPORTED);
if (ret.isOk()) {
ASSERT_TRUE(ret.isOk());
ASSERT_EQ(expectedStatus, streamCombinationSupported);
}
}
}
}
}
void CameraAidlTest::verifySessionCharacteristics(const CameraMetadata& chars) {