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

Commit c7dd4661 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Camera: Switch dynamic range profiles to 64bit values" into tm-dev

parents 04f3e76b c81a759e
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ const std::vector<int32_t> &OutputConfiguration::getSensorPixelModesUsed() const
    return mSensorPixelModesUsed;
}

int OutputConfiguration::getDynamicRangeProfile() const {
int64_t OutputConfiguration::getDynamicRangeProfile() const {
    return mDynamicRangeProfile;
}

@@ -186,8 +186,8 @@ status_t OutputConfiguration::readFromParcel(const android::Parcel* parcel) {
        ALOGE("%s: Failed to read sensor pixel mode(s) from parcel", __FUNCTION__);
        return err;
    }
    int dynamicProfile;
    if ((err = parcel->readInt32(&dynamicProfile)) != OK) {
    int64_t dynamicProfile;
    if ((err = parcel->readInt64(&dynamicProfile)) != OK) {
        ALOGE("%s: Failed to read surface dynamic range profile flag from parcel", __FUNCTION__);
        return err;
    }
@@ -314,7 +314,7 @@ status_t OutputConfiguration::writeToParcel(android::Parcel* parcel) const {
    err = parcel->writeParcelableVector(mSensorPixelModesUsed);
    if (err != OK) return err;

    err = parcel->writeInt32(mDynamicRangeProfile ? 1 : 0);
    err = parcel->writeInt64(mDynamicRangeProfile);
    if (err != OK) return err;

    err = parcel->writeInt32(mStreamUseCase);
+1 −1
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ public:
    std::vector<int64_t> mHistogramCounts;

    // Dynamic range profile
    int mDynamicRangeProfile;
    int64_t mDynamicRangeProfile;
    // Stream use case
    int mStreamUseCase;

+2 −2
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ public:
    int                        getSurfaceType() const;
    int                        getWidth() const;
    int                        getHeight() const;
    int                        getDynamicRangeProfile() const;
    int64_t                    getDynamicRangeProfile() const;
    bool                       isDeferred() const;
    bool                       isShared() const;
    String16                   getPhysicalCameraId() const;
@@ -184,7 +184,7 @@ private:
    String16                   mPhysicalCameraId;
    bool                       mIsMultiResolution;
    std::vector<int32_t>       mSensorPixelModesUsed;
    int                        mDynamicRangeProfile;
    int64_t                    mDynamicRangeProfile;
    int                        mStreamUseCase;
    int                        mTimestampBase;
    int                        mMirrorMode;
+2 −2
Original line number Diff line number Diff line
@@ -3474,7 +3474,7 @@ typedef enum acamera_metadata_tag {
     * <p>A map of all available 10-bit dynamic range profiles along with their
     * capture request constraints.</p>
     *
     * <p>Type: int32[n*2] (acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t)</p>
     * <p>Type: int64[n*3] (acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t)</p>
     *
     * <p>This tag may appear in:
     * <ul>
@@ -3487,7 +3487,7 @@ typedef enum acamera_metadata_tag {
     * support every possible profile combination within a single capture request, then the
     * constraints must be listed here as well.</p>
     */
    ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP =      // int32[n*2] (acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t)
    ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP =      // int64[n*3] (acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t)
            ACAMERA_REQUEST_START + 19,
    ACAMERA_REQUEST_END,
+15 −14
Original line number Diff line number Diff line
@@ -152,19 +152,20 @@ status_t CameraDeviceClient::initializeImpl(TProviderPtr providerPtr, const Stri
                ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT);
        if (it != entry.data.u8 + entry.count) {
            entry = deviceInfo.find(ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP);
            if (entry.count > 0 || ((entry.count % 2) != 0)) {
                int standardBitmap = ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD;
                for (size_t i = 0; i < entry.count; i += 2) {
                    if (entry.data.i32[i] !=
            if (entry.count > 0 || ((entry.count % 3) != 0)) {
                int64_t standardBitmap =
                        ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD;
                for (size_t i = 0; i < entry.count; i += 3) {
                    if (entry.data.i64[i] !=
                            ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD) {
                        mDynamicProfileMap.emplace(entry.data.i32[i], entry.data.i32[i+1]);
                        if ((entry.data.i32[i+1] == 0) || (entry.data.i32[i+1] &
                        mDynamicProfileMap.emplace(entry.data.i64[i], entry.data.i64[i+1]);
                        if ((entry.data.i64[i+1] == 0) || (entry.data.i64[i+1] &
                                ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD)) {
                            standardBitmap |= entry.data.i32[i];
                            standardBitmap |= entry.data.i64[i];
                        }
                    } else {
                        ALOGE("%s: Device %s includes unexpected profile entry: 0x%x!",
                                __FUNCTION__, mCameraIdStr.c_str(), entry.data.i32[i]);
                        ALOGE("%s: Device %s includes unexpected profile entry: 0x%" PRIx64 "!",
                                __FUNCTION__, mCameraIdStr.c_str(), entry.data.i64[i]);
                    }
                }
                mDynamicProfileMap.emplace(
@@ -335,7 +336,7 @@ binder::Status CameraDeviceClient::submitRequestList(
        SurfaceMap surfaceMap;
        Vector<int32_t> outputStreamIds;
        std::vector<std::string> requestedPhysicalIds;
        int dynamicProfileBitmap = 0;
        int64_t dynamicProfileBitmap = 0;
        if (request.mSurfaceList.size() > 0) {
            for (const sp<Surface>& surface : request.mSurfaceList) {
                if (surface == 0) continue;
@@ -410,7 +411,7 @@ binder::Status CameraDeviceClient::submitRequestList(
                    } else {
                        ALOGE("%s: Camera %s: Tried to submit a request with a surfaces that"
                                " reference an unsupported dynamic range profile combination"
                                " 0x%x!", __FUNCTION__, mCameraIdStr.string(),
                                " 0x%" PRIx64 "!", __FUNCTION__, mCameraIdStr.string(),
                                dynamicProfileBitmap);
                        return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
                                "Request targets an unsupported dynamic range profile"
@@ -862,7 +863,7 @@ binder::Status CameraDeviceClient::createStream(
    String8 physicalCameraId = String8(outputConfiguration.getPhysicalCameraId());
    bool deferredConsumerOnly = deferredConsumer && numBufferProducers == 0;
    bool isMultiResolution = outputConfiguration.isMultiResolution();
    int dynamicRangeProfile = outputConfiguration.getDynamicRangeProfile();
    int64_t dynamicRangeProfile = outputConfiguration.getDynamicRangeProfile();
    int streamUseCase = outputConfiguration.getStreamUseCase();
    int timestampBase = outputConfiguration.getTimestampBase();
    int mirrorMode = outputConfiguration.getMirrorMode();
@@ -1261,7 +1262,7 @@ binder::Status CameraDeviceClient::updateOutputConfiguration(int streamId,
            outputConfiguration.getSensorPixelModesUsed();
    int streamUseCase = outputConfiguration.getStreamUseCase();
    int timestampBase = outputConfiguration.getTimestampBase();
    int dynamicRangeProfile = outputConfiguration.getDynamicRangeProfile();
    int64_t dynamicRangeProfile = outputConfiguration.getDynamicRangeProfile();
    int mirrorMode = outputConfiguration.getMirrorMode();

    for (size_t i = 0; i < newOutputsMap.size(); i++) {
@@ -1627,7 +1628,7 @@ binder::Status CameraDeviceClient::finalizeOutputConfigurations(int32_t streamId
    std::vector<sp<Surface>> consumerSurfaces;
    const std::vector<int32_t> &sensorPixelModesUsed =
            outputConfiguration.getSensorPixelModesUsed();
    int dynamicRangeProfile = outputConfiguration.getDynamicRangeProfile();
    int64_t dynamicRangeProfile = outputConfiguration.getDynamicRangeProfile();
    int streamUseCase= outputConfiguration.getStreamUseCase();
    int timestampBase = outputConfiguration.getTimestampBase();
    int mirrorMode = outputConfiguration.getMirrorMode();
Loading