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

Commit 5104fe92 authored by Emilian Peev's avatar Emilian Peev
Browse files

Camera: Update the output stream transformation on logical devices

Logical cameras on foldables devices may change their
sensor orientation in response to device state updates.
Track the current physical camera id and update the
output stream transformation accordingly.

Bug: 203736762
Test: Manual using application,
Camera CTS

Change-Id: If724536be2788d038ac02be01ae5c0c93e40adff
parent 61e17b63
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ Camera2Client::Camera2Client(const sp<CameraService>& cameraService,
        bool overrideForPerfClass):
        Camera2ClientBase(cameraService, cameraClient, clientPackageName, clientFeatureId,
                cameraDeviceId, api1CameraId, cameraFacing, sensorOrientation,
                clientPid, clientUid, servicePid, overrideForPerfClass),
                clientPid, clientUid, servicePid, overrideForPerfClass, /*legacyClient*/ true),
        mParameters(api1CameraId, cameraFacing)
{
    ATRACE_CALL();
+3 −2
Original line number Diff line number Diff line
@@ -55,13 +55,14 @@ Camera2ClientBase<TClientBase>::Camera2ClientBase(
        int clientPid,
        uid_t clientUid,
        int servicePid,
        bool overrideForPerfClass):
        bool overrideForPerfClass,
        bool legacyClient):
        TClientBase(cameraService, remoteCallback, clientPackageName, clientFeatureId,
                cameraId, api1CameraId, cameraFacing, sensorOrientation, clientPid, clientUid,
                servicePid),
        mSharedCameraCallbacks(remoteCallback),
        mDeviceVersion(cameraService->getDeviceVersion(TClientBase::mCameraIdStr)),
        mDevice(new Camera3Device(cameraId, overrideForPerfClass)),
        mDevice(new Camera3Device(cameraId, overrideForPerfClass, legacyClient)),
        mDeviceActive(false), mApi1CameraId(api1CameraId)
{
    ALOGI("Camera %s: Opened. Client: %s (PID %d, UID %d)", cameraId.string(),
+2 −1
Original line number Diff line number Diff line
@@ -56,7 +56,8 @@ public:
                      int clientPid,
                      uid_t clientUid,
                      int servicePid,
                      bool overrideForPerfClass);
                      bool overrideForPerfClass,
                      bool legacyClient = false);
    virtual ~Camera2ClientBase();

    virtual status_t      initialize(sp<CameraProviderManager> manager, const String8& monitorTags);
+5 −4
Original line number Diff line number Diff line
@@ -75,8 +75,9 @@ using android::hardware::camera::metadata::V3_6::CameraMetadataEnumAndroidSensor

namespace android {

Camera3Device::Camera3Device(const String8 &id, bool overrideForPerfClass):
Camera3Device::Camera3Device(const String8 &id, bool overrideForPerfClass, bool legacyClient):
        mId(id),
        mLegacyClient(legacyClient),
        mOperatingMode(NO_MODE),
        mIsConstrainedHighSpeedConfiguration(false),
        mStatus(STATUS_UNINITIALIZED),
@@ -1089,7 +1090,7 @@ hardware::Return<void> Camera3Device::processCaptureResult_3_4(
        mNumPartialResults, mVendorTagId, mDeviceInfo, mPhysicalDeviceInfoMap,
        mResultMetadataQueue, mDistortionMappers, mZoomRatioMappers, mRotateAndCropMappers,
        mTagMonitor, mInputStream, mOutputStreams, mSessionStatsBuilder, listener, *this, *this,
        *mInterface
        *mInterface, mLegacyClient
    };

    for (const auto& result : results) {
@@ -1148,7 +1149,7 @@ hardware::Return<void> Camera3Device::processCaptureResult(
        mNumPartialResults, mVendorTagId, mDeviceInfo, mPhysicalDeviceInfoMap,
        mResultMetadataQueue, mDistortionMappers, mZoomRatioMappers, mRotateAndCropMappers,
        mTagMonitor, mInputStream, mOutputStreams, mSessionStatsBuilder, listener, *this, *this,
        *mInterface
        *mInterface, mLegacyClient
    };

    for (const auto& result : results) {
@@ -1189,7 +1190,7 @@ hardware::Return<void> Camera3Device::notify(
        mNumPartialResults, mVendorTagId, mDeviceInfo, mPhysicalDeviceInfoMap,
        mResultMetadataQueue, mDistortionMappers, mZoomRatioMappers, mRotateAndCropMappers,
        mTagMonitor, mInputStream, mOutputStreams, mSessionStatsBuilder, listener, *this, *this,
        *mInterface
        *mInterface, mLegacyClient
    };
    for (const auto& msg : msgs) {
        camera3::notify(states, msg);
+4 −1
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ class Camera3Device :
            public camera3::FlushBufferInterface {
  public:

    explicit Camera3Device(const String8& id, bool overrideForPerfClass);
    explicit Camera3Device(const String8& id, bool overrideForPerfClass, bool legacyClient = false);

    virtual ~Camera3Device();

@@ -333,6 +333,9 @@ class Camera3Device :
    // Camera device ID
    const String8              mId;

    // Legacy camera client flag
    bool                       mLegacyClient;

    // Current stream configuration mode;
    int                        mOperatingMode;
    // Current session wide parameters
Loading