Loading camera/aidl/android/hardware/ICameraService.aidl +15 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.hardware.camera2.ICameraDeviceUser; import android.hardware.camera2.ICameraDeviceCallbacks; import android.hardware.camera2.ICameraInjectionCallback; import android.hardware.camera2.ICameraInjectionSession; import android.hardware.camera2.params.SessionConfiguration; import android.hardware.camera2.params.VendorTagDescriptor; import android.hardware.camera2.params.VendorTagDescriptorCache; import android.hardware.camera2.utils.ConcurrentCameraIdCombination; Loading Loading @@ -261,4 +262,18 @@ interface ICameraService const int DEVICE_STATE_FOLDED = 4; const int DEVICE_STATE_LAST_FRAMEWORK_BIT = 0x80000000; // 1 << 31; // Create a CaptureRequest metadata based on template id CameraMetadataNative createDefaultRequest(@utf8InCpp String cameraId, int templateId); /** * Check whether a particular session configuration with optional session parameters * has camera device support. * * @param cameraId The camera id to query session configuration on * @param sessionConfiguration Specific session configuration to be verified. * @return true - in case the stream combination is supported. * false - in case there is no device support. */ boolean isSessionConfigurationWithParametersSupported(@utf8InCpp String cameraId, in SessionConfiguration sessionConfiguration); } camera/camera2/SessionConfiguration.cpp +33 −1 Original line number Diff line number Diff line Loading @@ -22,10 +22,13 @@ #include <camera/camera2/SessionConfiguration.h> #include <camera/camera2/OutputConfiguration.h> #include <com_android_internal_camera_flags.h> #include <binder/Parcel.h> namespace android { namespace flags = com::android::internal::camera::flags; status_t SessionConfiguration::readFromParcel(const android::Parcel* parcel) { status_t err = OK; int operatingMode = 0; Loading Loading @@ -67,6 +70,22 @@ status_t SessionConfiguration::readFromParcel(const android::Parcel* parcel) { return err; } bool hasSessionParameters = false; CameraMetadata settings; if (flags::feature_combination_query()) { if ((err = parcel->readBool(&hasSessionParameters)) != OK) { ALOGE("%s: Failed to read hasSessionParameters flag from parcel", __FUNCTION__); return err; } if (hasSessionParameters) { if ((err = settings.readFromParcel(parcel)) != OK) { ALOGE("%s: Failed to read metadata flag from parcel", __FUNCTION__); return err; } } } mOperatingMode = operatingMode; mInputWidth = inputWidth; mInputHeight = inputHeight; Loading @@ -75,7 +94,10 @@ status_t SessionConfiguration::readFromParcel(const android::Parcel* parcel) { for (auto& stream : outputStreams) { mOutputStreams.push_back(stream); } if (flags::feature_combination_query()) { mHasSessionParameters = hasSessionParameters; mSessionParameters = std::move(settings); } return err; } Loading Loading @@ -103,6 +125,16 @@ status_t SessionConfiguration::writeToParcel(android::Parcel* parcel) const { err = parcel->writeParcelableVector(mOutputStreams); if (err != OK) return err; if (flags::feature_combination_query()) { err = parcel->writeBool(mHasSessionParameters); if (err != OK) return err; if (mHasSessionParameters) { err = mSessionParameters.writeToParcel(parcel); if (err != OK) return err; } } return OK; } Loading camera/camera_platform.aconfig +8 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,14 @@ flag { description: "Introduces a new concert mode camera extension type" bug: "297083874" } flag { namespace: "camera_platform" name: "feature_combination_query" description: "Query feature combination support and session specific characteristics" bug: "309627704" } flag { namespace: "camera_platform" name: "log_ultrawide_usage" Loading camera/include/camera/camera2/SessionConfiguration.h +5 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define ANDROID_HARDWARE_CAMERA2_SESSIONCONFIGURATION_H #include <binder/Parcelable.h> #include <camera/CameraMetadata.h> namespace android { Loading @@ -39,6 +40,8 @@ public: int getInputFormat() const { return mInputFormat; } int getOperatingMode() const { return mOperatingMode; } bool inputIsMultiResolution() const { return mInputIsMultiResolution; } bool hasSessionParameters() const { return mHasSessionParameters; } const CameraMetadata& getSessionParameters() const { return mSessionParameters; } virtual status_t writeToParcel(android::Parcel* parcel) const override; virtual status_t readFromParcel(const android::Parcel* parcel) override; Loading Loading @@ -111,6 +114,8 @@ private: std::vector<OutputConfiguration> mOutputStreams; int mInputWidth, mInputHeight, mInputFormat, mOperatingMode; bool mInputIsMultiResolution = false; bool mHasSessionParameters = false; CameraMetadata mSessionParameters; }; } // namespace params } // namespace camera2 Loading services/camera/libcameraservice/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -106,7 +106,7 @@ cc_defaults { "android.hardware.camera.provider@2.5", "android.hardware.camera.provider@2.6", "android.hardware.camera.provider@2.7", "android.hardware.camera.provider-V2-ndk", "android.hardware.camera.provider-V3-ndk", "libaidlcommonsupport", "libbinderthreadstateutils", "libcameraservice_device_independent", Loading Loading
camera/aidl/android/hardware/ICameraService.aidl +15 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.hardware.camera2.ICameraDeviceUser; import android.hardware.camera2.ICameraDeviceCallbacks; import android.hardware.camera2.ICameraInjectionCallback; import android.hardware.camera2.ICameraInjectionSession; import android.hardware.camera2.params.SessionConfiguration; import android.hardware.camera2.params.VendorTagDescriptor; import android.hardware.camera2.params.VendorTagDescriptorCache; import android.hardware.camera2.utils.ConcurrentCameraIdCombination; Loading Loading @@ -261,4 +262,18 @@ interface ICameraService const int DEVICE_STATE_FOLDED = 4; const int DEVICE_STATE_LAST_FRAMEWORK_BIT = 0x80000000; // 1 << 31; // Create a CaptureRequest metadata based on template id CameraMetadataNative createDefaultRequest(@utf8InCpp String cameraId, int templateId); /** * Check whether a particular session configuration with optional session parameters * has camera device support. * * @param cameraId The camera id to query session configuration on * @param sessionConfiguration Specific session configuration to be verified. * @return true - in case the stream combination is supported. * false - in case there is no device support. */ boolean isSessionConfigurationWithParametersSupported(@utf8InCpp String cameraId, in SessionConfiguration sessionConfiguration); }
camera/camera2/SessionConfiguration.cpp +33 −1 Original line number Diff line number Diff line Loading @@ -22,10 +22,13 @@ #include <camera/camera2/SessionConfiguration.h> #include <camera/camera2/OutputConfiguration.h> #include <com_android_internal_camera_flags.h> #include <binder/Parcel.h> namespace android { namespace flags = com::android::internal::camera::flags; status_t SessionConfiguration::readFromParcel(const android::Parcel* parcel) { status_t err = OK; int operatingMode = 0; Loading Loading @@ -67,6 +70,22 @@ status_t SessionConfiguration::readFromParcel(const android::Parcel* parcel) { return err; } bool hasSessionParameters = false; CameraMetadata settings; if (flags::feature_combination_query()) { if ((err = parcel->readBool(&hasSessionParameters)) != OK) { ALOGE("%s: Failed to read hasSessionParameters flag from parcel", __FUNCTION__); return err; } if (hasSessionParameters) { if ((err = settings.readFromParcel(parcel)) != OK) { ALOGE("%s: Failed to read metadata flag from parcel", __FUNCTION__); return err; } } } mOperatingMode = operatingMode; mInputWidth = inputWidth; mInputHeight = inputHeight; Loading @@ -75,7 +94,10 @@ status_t SessionConfiguration::readFromParcel(const android::Parcel* parcel) { for (auto& stream : outputStreams) { mOutputStreams.push_back(stream); } if (flags::feature_combination_query()) { mHasSessionParameters = hasSessionParameters; mSessionParameters = std::move(settings); } return err; } Loading Loading @@ -103,6 +125,16 @@ status_t SessionConfiguration::writeToParcel(android::Parcel* parcel) const { err = parcel->writeParcelableVector(mOutputStreams); if (err != OK) return err; if (flags::feature_combination_query()) { err = parcel->writeBool(mHasSessionParameters); if (err != OK) return err; if (mHasSessionParameters) { err = mSessionParameters.writeToParcel(parcel); if (err != OK) return err; } } return OK; } Loading
camera/camera_platform.aconfig +8 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,14 @@ flag { description: "Introduces a new concert mode camera extension type" bug: "297083874" } flag { namespace: "camera_platform" name: "feature_combination_query" description: "Query feature combination support and session specific characteristics" bug: "309627704" } flag { namespace: "camera_platform" name: "log_ultrawide_usage" Loading
camera/include/camera/camera2/SessionConfiguration.h +5 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define ANDROID_HARDWARE_CAMERA2_SESSIONCONFIGURATION_H #include <binder/Parcelable.h> #include <camera/CameraMetadata.h> namespace android { Loading @@ -39,6 +40,8 @@ public: int getInputFormat() const { return mInputFormat; } int getOperatingMode() const { return mOperatingMode; } bool inputIsMultiResolution() const { return mInputIsMultiResolution; } bool hasSessionParameters() const { return mHasSessionParameters; } const CameraMetadata& getSessionParameters() const { return mSessionParameters; } virtual status_t writeToParcel(android::Parcel* parcel) const override; virtual status_t readFromParcel(const android::Parcel* parcel) override; Loading Loading @@ -111,6 +114,8 @@ private: std::vector<OutputConfiguration> mOutputStreams; int mInputWidth, mInputHeight, mInputFormat, mOperatingMode; bool mInputIsMultiResolution = false; bool mHasSessionParameters = false; CameraMetadata mSessionParameters; }; } // namespace params } // namespace camera2 Loading
services/camera/libcameraservice/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -106,7 +106,7 @@ cc_defaults { "android.hardware.camera.provider@2.5", "android.hardware.camera.provider@2.6", "android.hardware.camera.provider@2.7", "android.hardware.camera.provider-V2-ndk", "android.hardware.camera.provider-V3-ndk", "libaidlcommonsupport", "libbinderthreadstateutils", "libcameraservice_device_independent", Loading