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

Commit f87fa5c0 authored by Austin Borger's avatar Austin Borger Committed by Android (Google) Code Review
Browse files

Merge "Camera2: Override dataSpace based on colorSpace if specified." into udc-dev

parents e19de489 9b263b19
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -380,6 +380,23 @@ bool isPublicFormat(int32_t format)
    }
}

bool dataSpaceFromColorSpace(android_dataspace *dataSpace, int32_t colorSpace) {
    switch (colorSpace) {
        case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SRGB:
            *dataSpace = HAL_DATASPACE_V0_SRGB;
            return true;
        case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DISPLAY_P3:
            *dataSpace = HAL_DATASPACE_DISPLAY_P3;
            return true;
        case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT2020_HLG:
            *(reinterpret_cast<int32_t*>(dataSpace)) = HAL_DATASPACE_BT2020_HLG;
            return true;
        default:
            ALOGE("%s: Unsupported color space %d", __FUNCTION__, colorSpace);
            return false;
    }
}

bool isStreamUseCaseSupported(int64_t streamUseCase,
        const CameraMetadata &deviceInfo) {
    camera_metadata_ro_entry_t availableStreamUseCases =
@@ -472,6 +489,16 @@ binder::Status createSurfaceFromGbp(
        return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
    }

    if (colorSpace != ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_UNSPECIFIED &&
            format != HAL_PIXEL_FORMAT_BLOB) {
        if (!dataSpaceFromColorSpace(&dataSpace, colorSpace)) {
            String8 msg = String8::format("Camera %s: color space %d not supported, failed to "
                    "convert to data space", logicalCameraId.string(), colorSpace);
            ALOGE("%s: %s", __FUNCTION__, msg.string());
            return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
        }
    }

    // FIXME: remove this override since the default format should be
    //       IMPLEMENTATION_DEFINED. b/9487482 & b/35317944
    if ((format >= HAL_PIXEL_FORMAT_RGBA_8888 && format <= HAL_PIXEL_FORMAT_BGRA_8888) &&
+2 −0
Original line number Diff line number Diff line
@@ -115,6 +115,8 @@ bool deviceReportsColorSpaces(const CameraMetadata& staticMeta);
bool isColorSpaceSupported(int32_t colorSpace, int32_t format, android_dataspace dataSpace,
        int64_t dynamicRangeProfile, const CameraMetadata& staticMeta);

bool dataSpaceFromColorSpace(android_dataspace *dataSpace, int32_t colorSpace);

bool isStreamUseCaseSupported(int64_t streamUseCase, const CameraMetadata &deviceInfo);

void mapStreamInfo(const OutputStreamInfo &streamInfo,