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

Commit 7a04fefe authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Camera: Gate API0/P010 only Jpeg/R composite stream" into udc-dev

parents 04491e1d 15230140
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -957,7 +957,7 @@ binder::Status CameraDeviceClient::createStream(
    bool isHeicCompositeStream = camera3::HeicCompositeStream::isHeicCompositeStream(surfaces[0]);
    bool isJpegRCompositeStream =
        camera3::JpegRCompositeStream::isJpegRCompositeStream(surfaces[0]) &&
        !mDevice->supportNativeJpegR();
        !mDevice->isCompositeJpegRDisabled();
    if (isDepthCompositeStream || isHeicCompositeStream || isJpegRCompositeStream) {
        sp<CompositeStream> compositeStream;
        if (isDepthCompositeStream) {
@@ -1851,7 +1851,7 @@ binder::Status CameraDeviceClient::switchToOffline(
            isCompositeStream = camera3::DepthCompositeStream::isDepthCompositeStream(s) ||
                camera3::HeicCompositeStream::isHeicCompositeStream(s) ||
                (camera3::JpegRCompositeStream::isJpegRCompositeStream(s) &&
                 !mDevice->supportNativeJpegR());
                 !mDevice->isCompositeJpegRDisabled());
            if (isCompositeStream) {
                auto compositeIdx = mCompositeStreamMap.indexOfKey(IInterface::asBinder(gbp));
                if (compositeIdx == NAME_NOT_FOUND) {
+1 −1
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ class CameraDeviceBase : public virtual FrameProducer {
     */
    virtual const CameraMetadata& infoPhysical(const String8& physicalId) const = 0;

    virtual bool supportNativeJpegR() const { return false; };
    virtual bool isCompositeJpegRDisabled() const { return false; };

    struct PhysicalCameraSettings {
        std::string cameraId;
+17 −5
Original line number Diff line number Diff line
@@ -316,16 +316,16 @@ bool CameraProviderManager::supportNativeZoomRatio(const std::string &id) const
    return deviceInfo->supportNativeZoomRatio();
}

bool CameraProviderManager::supportNativeJpegR(const std::string &id) const {
bool CameraProviderManager::isCompositeJpegRDisabled(const std::string &id) const {
    std::lock_guard<std::mutex> lock(mInterfaceMutex);
    return supportNativeJpegRLocked(id);
    return isCompositeJpegRDisabledLocked(id);
}

bool CameraProviderManager::supportNativeJpegRLocked(const std::string &id) const {
bool CameraProviderManager::isCompositeJpegRDisabledLocked(const std::string &id) const {
    auto deviceInfo = findDeviceInfoLocked(id);
    if (deviceInfo == nullptr) return false;

    return deviceInfo->supportNativeJpegR();
    return deviceInfo->isCompositeJpegRDisabled();
}

status_t CameraProviderManager::getResourceCost(const std::string &id,
@@ -1120,7 +1120,7 @@ bool CameraProviderManager::isConcurrentDynamicRangeCaptureSupported(
}

status_t CameraProviderManager::ProviderInfo::DeviceInfo3::deriveJpegRTags(bool maxResolution) {
    if (kFrameworkJpegRDisabled || mSupportsNativeJpegR) {
    if (kFrameworkJpegRDisabled || mCompositeJpegRDisabled) {
        return OK;
    }

@@ -1166,6 +1166,18 @@ status_t CameraProviderManager::ProviderInfo::DeviceInfo3::deriveJpegRTags(bool
        return OK;
    }

    if (!isConcurrentDynamicRangeCaptureSupported(c,
                ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10,
                ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD) &&
            !property_get_bool("ro.camera.enableCompositeAPI0JpegR", false)) {
        // API0, P010 only Jpeg/R support is meant to be used only as a reference due to possible
        // impact on quality and performance.
        // This data path will be turned off by default and individual device builds must enable
        // 'ro.camera.enableCompositeAPI0JpegR' in order to experiment using it.
        mCompositeJpegRDisabled = true;
        return OK;
    }

    getSupportedSizes(c, scalerSizesTag,
            static_cast<android_pixel_format_t>(HAL_PIXEL_FORMAT_BLOB), &supportedBlobSizes);
    getSupportedSizes(c, scalerSizesTag,
+6 −6
Original line number Diff line number Diff line
@@ -248,9 +248,9 @@ public:
    bool supportNativeZoomRatio(const std::string &id) const;

    /**
     * Return true if the camera device has native Jpeg/R support.
     * Return true if the camera device has no composite Jpeg/R support.
     */
    bool supportNativeJpegR(const std::string &id) const;
    bool isCompositeJpegRDisabled(const std::string &id) const;

    /**
     * Return the resource cost of this camera device
@@ -573,7 +573,7 @@ private:

            bool hasFlashUnit() const { return mHasFlashUnit; }
            bool supportNativeZoomRatio() const { return mSupportNativeZoomRatio; }
            bool supportNativeJpegR() const { return mSupportsNativeJpegR; }
            bool isCompositeJpegRDisabled() const { return mCompositeJpegRDisabled; }
            virtual status_t setTorchMode(bool enabled) = 0;
            virtual status_t turnOnTorchWithStrengthLevel(int32_t torchStrength) = 0;
            virtual status_t getTorchStrengthLevel(int32_t *torchStrength) = 0;
@@ -615,14 +615,14 @@ private:
                    mParentProvider(parentProvider), mTorchStrengthLevel(0),
                    mTorchMaximumStrengthLevel(0), mTorchDefaultStrengthLevel(0),
                    mHasFlashUnit(false), mSupportNativeZoomRatio(false),
                    mPublicCameraIds(publicCameraIds), mSupportsNativeJpegR(false) {}
                    mPublicCameraIds(publicCameraIds), mCompositeJpegRDisabled(false) {}
            virtual ~DeviceInfo() {}
        protected:

            bool mHasFlashUnit; // const after constructor
            bool mSupportNativeZoomRatio; // const after constructor
            const std::vector<std::string>& mPublicCameraIds;
            bool mSupportsNativeJpegR;
            bool mCompositeJpegRDisabled;
        };
        std::vector<std::unique_ptr<DeviceInfo>> mDevices;
        std::unordered_set<std::string> mUniqueCameraIds;
@@ -811,7 +811,7 @@ private:
    // No guarantees on the order of traversal
    ProviderInfo::DeviceInfo* findDeviceInfoLocked(const std::string& id) const;

    bool supportNativeJpegRLocked(const std::string &id) const;
    bool isCompositeJpegRDisabledLocked(const std::string &id) const;

    // Map external providers to USB devices in order to handle USB hotplug
    // events for lazy HALs
+3 −3
Original line number Diff line number Diff line
@@ -483,7 +483,7 @@ AidlProviderInfo::AidlDeviceInfo3::AidlDeviceInfo3(
        }
    }

    mSupportsNativeJpegR = mCameraCharacteristics.exists(
    mCompositeJpegRDisabled = mCameraCharacteristics.exists(
            ANDROID_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS);

    mSystemCameraKind = getSystemCameraKind();
@@ -735,7 +735,7 @@ status_t AidlProviderInfo::AidlDeviceInfo3::isSessionConfigurationSupported(
    camera::device::StreamConfiguration streamConfiguration;
    bool earlyExit = false;
    auto bRes = SessionConfigurationUtils::convertToHALStreamCombination(configuration,
            String8(mId.c_str()), mCameraCharacteristics, mSupportsNativeJpegR, getMetadata,
            String8(mId.c_str()), mCameraCharacteristics, mCompositeJpegRDisabled, getMetadata,
            mPhysicalIds, streamConfiguration, overrideForPerfClass, &earlyExit);

    if (!bRes.isOk()) {
@@ -802,7 +802,7 @@ status_t AidlProviderInfo::convertToAidlHALStreamCombinationAndCameraIdsLocked(
            SessionConfigurationUtils::convertToHALStreamCombination(
                    cameraIdAndSessionConfig.mSessionConfiguration,
                    String8(cameraId.c_str()), deviceInfo,
                    mManager->supportNativeJpegRLocked(cameraId), getMetadata,
                    mManager->isCompositeJpegRDisabledLocked(cameraId), getMetadata,
                    physicalCameraIds, streamConfiguration,
                    overrideForPerfClass, &shouldExit);
        if (!bStatus.isOk()) {
Loading