Loading camera/aidl/android/hardware/ICameraService.aidl +3 −1 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ interface ICameraService * policy for default device context). Only virtual cameras would be exposed * only for custom policy and only real cameras would be exposed for default * policy. * @param sharedMode Parameter specifying if the camera should be opened in shared mode. */ ICameraDeviceUser connectDevice(ICameraDeviceCallbacks callbacks, @utf8InCpp String cameraId, Loading @@ -164,7 +165,8 @@ interface ICameraService int targetSdkVersion, int rotationOverride, in AttributionSourceState clientAttribution, int devicePolicy); int devicePolicy, boolean sharedMode); /** * Add listener for changes to camera device and flashlight state. Loading camera/aidl/android/hardware/ICameraServiceListener.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -105,5 +105,6 @@ interface ICameraServiceListener * will receive such callbacks. */ oneway void onCameraOpened(@utf8InCpp String cameraId, @utf8InCpp String clientPackageId, int deviceId); oneway void onCameraOpenedInSharedMode(@utf8InCpp String cameraId, @utf8InCpp String clientPackageId, int deviceId, boolean primaryClient); oneway void onCameraClosed(@utf8InCpp String cameraId, int deviceId); } camera/aidl/android/hardware/camera2/ICameraDeviceCallbacks.aidl +11 −0 Original line number Diff line number Diff line Loading @@ -50,4 +50,15 @@ interface ICameraDeviceCallbacks oneway void onRepeatingRequestError(in long lastFrameNumber, in int repeatingRequestId); oneway void onRequestQueueEmpty(); /** * Notify registered clients about client shared access priority changes when the camera device * has been opened in shared mode. * * If the client priority changes from secondary to primary, then it can now * create capture request and change the capture request parameters. If client priority * changes from primary to secondary, that implies that another higher priority client is also * accessing the camera in shared mode and is now the primary client. */ oneway void onClientSharedAccessPriorityChanged(boolean primaryClient); } camera/aidl/android/hardware/camera2/ICameraDeviceUser.aidl +19 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,17 @@ interface ICameraDeviceUser */ const int CONSTRAINED_HIGH_SPEED_MODE = 1; /** * The shared operating mode for a camera device. * * <p> * When in shared mode, the camera device can be opened and accessed by multiple applications * simultaneously. * </p> * */ const int SHARED_MODE = 2; /** * Start of custom vendor modes */ Loading Loading @@ -194,4 +205,12 @@ interface ICameraDeviceUser */ ICameraOfflineSession switchToOffline(in ICameraDeviceCallbacks callbacks, in int[] offlineOutputIds); /** * Get the client status as primary or secondary when camera is opened in shared mode. * * @return true if this is primary client when camera is opened in shared mode. * false if another higher priority client with primary access is also using the camera. */ boolean isPrimaryClient(); } camera/camera2/OutputConfiguration.cpp +28 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ namespace flags = com::android::internal::camera::flags; namespace android { const int OutputConfiguration::INVALID_ROTATION = -1; const int OutputConfiguration::ROTATION_0 = 0; const int OutputConfiguration::INVALID_SET_ID = -1; const std::vector<sp<IGraphicBufferProducer>>& Loading Loading @@ -97,6 +98,10 @@ int OutputConfiguration::getTimestampBase() const { return mTimestampBase; } int OutputConfiguration::getMirrorMode() const { return mMirrorMode; } int OutputConfiguration::getMirrorMode(sp<IGraphicBufferProducer> surface) const { if (!flags::mirror_mode_shared_surfaces()) { return mMirrorMode; Loading Loading @@ -164,6 +169,29 @@ OutputConfiguration::OutputConfiguration() : mUsage(0) { } OutputConfiguration::OutputConfiguration(int surfaceType, int width, int height, int format, int32_t colorSpace, int mirrorMode, bool useReadoutTimestamp, int timestampBase, int dataspace, int64_t usage, int64_t streamusecase, std::string physicalCamId): mRotation(ROTATION_0), mSurfaceSetID(INVALID_SET_ID), mSurfaceType(surfaceType), mWidth(width), mHeight(height), mIsDeferred(false), mIsShared(false), mPhysicalCameraId(physicalCamId), mIsMultiResolution(false), mDynamicRangeProfile(ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD), mColorSpace(colorSpace), mStreamUseCase(streamusecase), mTimestampBase(timestampBase), mMirrorMode(mirrorMode), mUseReadoutTimestamp(useReadoutTimestamp), mFormat(format), mDataspace(dataspace), mUsage(usage){ } OutputConfiguration::OutputConfiguration(const android::Parcel& parcel) : mRotation(INVALID_ROTATION), mSurfaceSetID(INVALID_SET_ID) { Loading Loading
camera/aidl/android/hardware/ICameraService.aidl +3 −1 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ interface ICameraService * policy for default device context). Only virtual cameras would be exposed * only for custom policy and only real cameras would be exposed for default * policy. * @param sharedMode Parameter specifying if the camera should be opened in shared mode. */ ICameraDeviceUser connectDevice(ICameraDeviceCallbacks callbacks, @utf8InCpp String cameraId, Loading @@ -164,7 +165,8 @@ interface ICameraService int targetSdkVersion, int rotationOverride, in AttributionSourceState clientAttribution, int devicePolicy); int devicePolicy, boolean sharedMode); /** * Add listener for changes to camera device and flashlight state. Loading
camera/aidl/android/hardware/ICameraServiceListener.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -105,5 +105,6 @@ interface ICameraServiceListener * will receive such callbacks. */ oneway void onCameraOpened(@utf8InCpp String cameraId, @utf8InCpp String clientPackageId, int deviceId); oneway void onCameraOpenedInSharedMode(@utf8InCpp String cameraId, @utf8InCpp String clientPackageId, int deviceId, boolean primaryClient); oneway void onCameraClosed(@utf8InCpp String cameraId, int deviceId); }
camera/aidl/android/hardware/camera2/ICameraDeviceCallbacks.aidl +11 −0 Original line number Diff line number Diff line Loading @@ -50,4 +50,15 @@ interface ICameraDeviceCallbacks oneway void onRepeatingRequestError(in long lastFrameNumber, in int repeatingRequestId); oneway void onRequestQueueEmpty(); /** * Notify registered clients about client shared access priority changes when the camera device * has been opened in shared mode. * * If the client priority changes from secondary to primary, then it can now * create capture request and change the capture request parameters. If client priority * changes from primary to secondary, that implies that another higher priority client is also * accessing the camera in shared mode and is now the primary client. */ oneway void onClientSharedAccessPriorityChanged(boolean primaryClient); }
camera/aidl/android/hardware/camera2/ICameraDeviceUser.aidl +19 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,17 @@ interface ICameraDeviceUser */ const int CONSTRAINED_HIGH_SPEED_MODE = 1; /** * The shared operating mode for a camera device. * * <p> * When in shared mode, the camera device can be opened and accessed by multiple applications * simultaneously. * </p> * */ const int SHARED_MODE = 2; /** * Start of custom vendor modes */ Loading Loading @@ -194,4 +205,12 @@ interface ICameraDeviceUser */ ICameraOfflineSession switchToOffline(in ICameraDeviceCallbacks callbacks, in int[] offlineOutputIds); /** * Get the client status as primary or secondary when camera is opened in shared mode. * * @return true if this is primary client when camera is opened in shared mode. * false if another higher priority client with primary access is also using the camera. */ boolean isPrimaryClient(); }
camera/camera2/OutputConfiguration.cpp +28 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ namespace flags = com::android::internal::camera::flags; namespace android { const int OutputConfiguration::INVALID_ROTATION = -1; const int OutputConfiguration::ROTATION_0 = 0; const int OutputConfiguration::INVALID_SET_ID = -1; const std::vector<sp<IGraphicBufferProducer>>& Loading Loading @@ -97,6 +98,10 @@ int OutputConfiguration::getTimestampBase() const { return mTimestampBase; } int OutputConfiguration::getMirrorMode() const { return mMirrorMode; } int OutputConfiguration::getMirrorMode(sp<IGraphicBufferProducer> surface) const { if (!flags::mirror_mode_shared_surfaces()) { return mMirrorMode; Loading Loading @@ -164,6 +169,29 @@ OutputConfiguration::OutputConfiguration() : mUsage(0) { } OutputConfiguration::OutputConfiguration(int surfaceType, int width, int height, int format, int32_t colorSpace, int mirrorMode, bool useReadoutTimestamp, int timestampBase, int dataspace, int64_t usage, int64_t streamusecase, std::string physicalCamId): mRotation(ROTATION_0), mSurfaceSetID(INVALID_SET_ID), mSurfaceType(surfaceType), mWidth(width), mHeight(height), mIsDeferred(false), mIsShared(false), mPhysicalCameraId(physicalCamId), mIsMultiResolution(false), mDynamicRangeProfile(ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD), mColorSpace(colorSpace), mStreamUseCase(streamusecase), mTimestampBase(timestampBase), mMirrorMode(mirrorMode), mUseReadoutTimestamp(useReadoutTimestamp), mFormat(format), mDataspace(dataspace), mUsage(usage){ } OutputConfiguration::OutputConfiguration(const android::Parcel& parcel) : mRotation(INVALID_ROTATION), mSurfaceSetID(INVALID_SET_ID) { Loading