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

Commit 4ce76d24 authored by Emilian Peev's avatar Emilian Peev
Browse files

Camera: Use 64bit integers for dynamic range profile values

Additionally extend the dynamic range profile map to include
hints about extra lookahead latency.

Bug: 215396395
Test: Camera CTS
Change-Id: I600a3147d94a9aad1a312b92aacee014c05db16f
parent 5d966b38
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ enum CameraMetadataTag : @3.7::CameraMetadataTag {
     */
    ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP = android.hardware.camera.metadata@3.4::CameraMetadataTag:ANDROID_REQUEST_END_3_4,

    /** android.request.recommendedTenBitDynamicRangeProfile [static, int32, java_public]
    /** android.request.recommendedTenBitDynamicRangeProfile [static, int64, java_public]
     *
     * <p>Recommended 10-bit dynamic range profile.</p>
     */
@@ -154,7 +154,7 @@ enum CameraMetadataEnumAndroidRequestAvailableCapabilities :
/** android.request.availableDynamicRangeProfilesMap enumeration values
 * @see ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP
 */
enum CameraMetadataEnumAndroidRequestAvailableDynamicRangeProfilesMap : uint32_t {
enum CameraMetadataEnumAndroidRequestAvailableDynamicRangeProfilesMap : int64_t {
    ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD
                                                                 = 0x1,
    ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10  = 0x2,
+1 −1
Original line number Diff line number Diff line
@@ -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 RequestAvailableDynamicRangeProfilesMap {
  ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD = 1,
  ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10 = 2,
+1 −1
Original line number Diff line number Diff line
@@ -1024,7 +1024,7 @@ enum CameraMetadataTag {
     */
    ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP,
    /**
     * android.request.recommendedTenBitDynamicRangeProfile [static, int32, java_public]
     * android.request.recommendedTenBitDynamicRangeProfile [static, int64, java_public]
     *
     * <p>Recommended 10-bit dynamic range profile.</p>
     */
+1 −1
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ package android.hardware.camera.metadata;
 * @see ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP
 */
@VintfStability
@Backing(type="int")
@Backing(type="long")
enum RequestAvailableDynamicRangeProfilesMap {
    ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD = 0x1,
    ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10 = 0x2,
+9 −9
Original line number Diff line number Diff line
@@ -8287,21 +8287,21 @@ void CameraHidlTest::get10BitDynamicRangeProfiles(const camera_metadata_t* stati
    ASSERT_NE(nullptr, staticMeta);
    ASSERT_NE(nullptr, profiles);
    camera_metadata_ro_entry entry;
    std::unordered_set<int32_t> entries;
    std::unordered_set<int64_t> entries;
    int rc = find_camera_metadata_ro_entry(staticMeta,
            ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP, &entry);
    ASSERT_EQ(rc, 0);
    ASSERT_TRUE(entry.count > 0);
    ASSERT_EQ(entry.count % 2, 0);
    ASSERT_EQ(entry.count % 3, 0);

    for (uint32_t i = 0; i < entry.count; i += 2) {
        ASSERT_NE(entry.data.i32[i],
    for (uint32_t i = 0; i < entry.count; i += 3) {
        ASSERT_NE(entry.data.i64[i],
                ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD);
        ASSERT_EQ(entries.find(entry.data.i32[i]), entries.end());
        entries.insert(static_cast<int32_t>(entry.data.i32[i]));
        ASSERT_EQ(entries.find(entry.data.i64[i]), entries.end());
        entries.insert(entry.data.i64[i]);
        profiles->emplace_back(
                static_cast<CameraMetadataEnumAndroidRequestAvailableDynamicRangeProfilesMap>
                (entry.data.i32[i]));
                (entry.data.i64[i]));
    }

    if (!entries.empty()) {
@@ -8335,7 +8335,7 @@ void CameraHidlTest::verify10BitMetadata(HandleImporter& importer,
        bool smpte2094_40Present = importer.isSmpte2094_40Present(
                b.buffer.buffer.getNativeHandle());

        switch (static_cast<uint32_t>(profile)) {
        switch (static_cast<int64_t>(profile)) {
            case ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10:
                ASSERT_FALSE(smpte2086Present);
                ASSERT_FALSE(smpte2094_10Present);
@@ -8364,7 +8364,7 @@ void CameraHidlTest::verify10BitMetadata(HandleImporter& importer,
                ASSERT_FALSE(smpte2094_40Present);
                break;
            default:
                ALOGE("%s: Unexpected 10-bit dynamic range profile: %d",
                ALOGE("%s: Unexpected 10-bit dynamic range profile: %" PRId64,
                        __FUNCTION__, profile);
                ADD_FAILURE();
        }