Camera: Increase bit depth of stream use case to 64

Test: Camera CTS
Bug: 223387965
Change-Id: I23a4324602ed37cf38c7a1a34dade615c4adb72b
This commit is contained in:
Shuzhen Wang
2022-03-08 10:10:44 -08:00
parent cdd99897b7
commit 36efa7161a
6 changed files with 24 additions and 24 deletions

View File

@@ -194,7 +194,7 @@ enum CameraMetadataEnumAndroidScalerAvailableRecommendedStreamConfigurations :
/** android.scaler.availableStreamUseCases enumeration values
* @see ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES
*/
enum CameraMetadataEnumAndroidScalerAvailableStreamUseCases : uint32_t {
enum CameraMetadataEnumAndroidScalerAvailableStreamUseCases : int64_t {
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT = 0x0,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW = 0x1,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE = 0x2,

View File

@@ -36,7 +36,7 @@
// later when a module using the interface is updated, e.g., Mainline modules.
package android.hardware.camera.metadata;
@Backing(type="int") @VintfStability
@Backing(type="long") @VintfStability
enum ScalerAvailableStreamUseCases {
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT = 0,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW = 1,

View File

@@ -27,7 +27,7 @@ package android.hardware.camera.metadata;
* @see ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES
*/
@VintfStability
@Backing(type="int")
@Backing(type="long")
enum ScalerAvailableStreamUseCases {
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT = 0x0,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW = 0x1,

View File

@@ -222,7 +222,7 @@ enum SystemCameraKind {
HIDDEN_SECURE_CAMERA
};
const static std::vector<int32_t> kMandatoryUseCases = {
const static std::vector<int64_t> kMandatoryUseCases = {
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE,
@@ -6995,16 +6995,16 @@ TEST_P(CameraHidlTest, configureStreamsUseCases) {
ASSERT_NE(0u, outputPreviewStreams.size());
// Combine valid and invalid stream use cases
std::vector<int32_t> useCases(kMandatoryUseCases);
std::vector<int64_t> useCases(kMandatoryUseCases);
useCases.push_back(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL + 1);
std::vector<int32_t> supportedUseCases;
std::vector<int64_t> supportedUseCases;
camera_metadata_ro_entry entry;
auto retcode = find_camera_metadata_ro_entry(staticMeta,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES, &entry);
if ((0 == retcode) && (entry.count > 0)) {
supportedUseCases.insert(supportedUseCases.end(), entry.data.i32,
entry.data.i32 + entry.count);
supportedUseCases.insert(supportedUseCases.end(), entry.data.i64,
entry.data.i64 + entry.count);
} else {
supportedUseCases.push_back(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT);
}
@@ -7038,7 +7038,7 @@ TEST_P(CameraHidlTest, configureStreamsUseCases) {
});
ASSERT_TRUE(ret.isOk());
for (int32_t useCase : useCases) {
for (int64_t useCase : useCases) {
bool useCaseSupported = std::find(supportedUseCases.begin(),
supportedUseCases.end(), useCase) != supportedUseCases.end();
@@ -9488,19 +9488,19 @@ void CameraHidlTest::verifyStreamUseCaseCharacteristics(const camera_metadata_t*
if ((0 == retcode) && (entry.count > 0)) {
supportMandatoryUseCases = true;
for (size_t i = 0; i < kMandatoryUseCases.size(); i++) {
if (std::find(entry.data.i32, entry.data.i32 + entry.count, kMandatoryUseCases[i])
== entry.data.i32 + entry.count) {
if (std::find(entry.data.i64, entry.data.i64 + entry.count, kMandatoryUseCases[i])
== entry.data.i64 + entry.count) {
supportMandatoryUseCases = false;
break;
}
}
bool supportDefaultUseCase = false;
for (size_t i = 0; i < entry.count; i++) {
if (entry.data.i32[i] == ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT) {
if (entry.data.i64[i] == ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT) {
supportDefaultUseCase = true;
}
ASSERT_TRUE(entry.data.i32[i] <= ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL ||
entry.data.i32[i] >= ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VENDOR_START);
ASSERT_TRUE(entry.data.i64[i] <= ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL ||
entry.data.i64[i] >= ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VENDOR_START);
}
ASSERT_TRUE(supportDefaultUseCase);
}

View File

@@ -50,7 +50,7 @@ const uint32_t kMaxStillHeight = 1536;
const int64_t kEmptyFlushTimeoutMSec = 200;
const static std::vector<int32_t> kMandatoryUseCases = {
const static std::vector<int64_t> kMandatoryUseCases = {
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE,
@@ -2974,10 +2974,10 @@ TEST_P(CameraAidlTest, configureStreamsUseCases) {
ASSERT_NE(0u, outputPreviewStreams.size());
// Combine valid and invalid stream use cases
std::vector<int32_t> useCases(kMandatoryUseCases);
std::vector<int64_t> useCases(kMandatoryUseCases);
useCases.push_back(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL + 1);
std::vector<int32_t> supportedUseCases;
std::vector<int64_t> supportedUseCases;
camera_metadata_ro_entry entry;
auto retcode = find_camera_metadata_ro_entry(
staticMeta, ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES, &entry);
@@ -3013,7 +3013,7 @@ TEST_P(CameraAidlTest, configureStreamsUseCases) {
ASSERT_TRUE(ret.isOk());
config.sessionParams = req;
for (int32_t useCase : useCases) {
for (int64_t useCase : useCases) {
bool useCaseSupported = std::find(supportedUseCases.begin(), supportedUseCases.end(),
useCase) != supportedUseCases.end();

View File

@@ -120,7 +120,7 @@ bool parseProviderName(const std::string& serviceDescriptor, std::string* type /
return true;
}
const std::vector<int32_t> kMandatoryUseCases = {
const std::vector<int64_t> kMandatoryUseCases = {
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW,
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE,
@@ -328,19 +328,19 @@ void CameraAidlTest::verifyStreamUseCaseCharacteristics(const camera_metadata_t*
if ((0 == retcode) && (entry.count > 0)) {
supportMandatoryUseCases = true;
for (size_t i = 0; i < kMandatoryUseCases.size(); i++) {
if (std::find(entry.data.i32, entry.data.i32 + entry.count, kMandatoryUseCases[i]) ==
entry.data.i32 + entry.count) {
if (std::find(entry.data.i64, entry.data.i64 + entry.count, kMandatoryUseCases[i]) ==
entry.data.i64 + entry.count) {
supportMandatoryUseCases = false;
break;
}
}
bool supportDefaultUseCase = false;
for (size_t i = 0; i < entry.count; i++) {
if (entry.data.i32[i] == ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT) {
if (entry.data.i64[i] == ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT) {
supportDefaultUseCase = true;
}
ASSERT_TRUE(entry.data.i32[i] <= ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL ||
entry.data.i32[i] >=
ASSERT_TRUE(entry.data.i64[i] <= ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL ||
entry.data.i64[i] >=
ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VENDOR_START);
}
ASSERT_TRUE(supportDefaultUseCase);