Loading services/camera/libcameraservice/api2/CameraDeviceClient.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -1184,7 +1184,8 @@ binder::Status CameraDeviceClient::createStream( bool isDepthCompositeStream = camera3::DepthCompositeStream::isDepthCompositeStream(surfaceHolders[0].mSurface); bool isHeicCompositeStream = camera3::HeicCompositeStream::isHeicCompositeStream( surfaceHolders[0].mSurface); surfaceHolders[0].mSurface, mDevice->isCompositeHeicDisabled(), mDevice->isCompositeHeicUltraHDRDisabled()); bool isJpegRCompositeStream = camera3::JpegRCompositeStream::isJpegRCompositeStream(surfaceHolders[0].mSurface) && !mDevice->isCompositeJpegRDisabled(); Loading Loading @@ -2173,7 +2174,9 @@ binder::Status CameraDeviceClient::switchToOffline( sp<Surface> s = new Surface(surface, false /*controlledByApp*/); #endif isCompositeStream = camera3::DepthCompositeStream::isDepthCompositeStream(s) || camera3::HeicCompositeStream::isHeicCompositeStream(s) || camera3::HeicCompositeStream::isHeicCompositeStream( s, mDevice->isCompositeHeicDisabled(), mDevice->isCompositeHeicUltraHDRDisabled()) || (camera3::JpegRCompositeStream::isJpegRCompositeStream(s) && !mDevice->isCompositeJpegRDisabled()); if (isCompositeStream) { Loading services/camera/libcameraservice/api2/HeicCompositeStream.cpp +15 −7 Original line number Diff line number Diff line Loading @@ -122,13 +122,19 @@ HeicCompositeStream::~HeicCompositeStream() { mMainImageSurface.clear(); } bool HeicCompositeStream::isHeicCompositeStreamInfo(const OutputStreamInfo& streamInfo) { return ((streamInfo.dataSpace == static_cast<android_dataspace_t>(HAL_DATASPACE_HEIF) || (streamInfo.dataSpace == static_cast<android_dataspace_t>(kUltraHDRDataSpace))) && bool HeicCompositeStream::isHeicCompositeStreamInfo(const OutputStreamInfo& streamInfo, bool isCompositeHeicDisabled, bool isCompositeHeicUltraHDRDisabled) { return (((streamInfo.dataSpace == static_cast<android_dataspace_t>(HAL_DATASPACE_HEIF) && !isCompositeHeicDisabled) || (streamInfo.dataSpace == static_cast<android_dataspace_t>(kUltraHDRDataSpace) && !isCompositeHeicUltraHDRDisabled)) && (streamInfo.format == HAL_PIXEL_FORMAT_BLOB)); } bool HeicCompositeStream::isHeicCompositeStream(const sp<Surface> &surface) { bool HeicCompositeStream::isHeicCompositeStream(const sp<Surface>& surface, bool isCompositeHeicDisabled, bool isCompositeHeicUltraHDRDisabled) { ANativeWindow* anw = surface.get(); status_t err; int format; Loading @@ -147,8 +153,10 @@ bool HeicCompositeStream::isHeicCompositeStream(const sp<Surface> &surface) { return false; } return ((format == HAL_PIXEL_FORMAT_BLOB) && ((dataspace == HAL_DATASPACE_HEIF) || (dataspace == static_cast<int>(kUltraHDRDataSpace)))); return ((format == HAL_PIXEL_FORMAT_BLOB) && ((dataspace == HAL_DATASPACE_HEIF && !isCompositeHeicDisabled) || (dataspace == static_cast<int>(kUltraHDRDataSpace) && !isCompositeHeicUltraHDRDisabled))); } status_t HeicCompositeStream::createInternalStreams(const std::vector<SurfaceHolder>& consumers, Loading services/camera/libcameraservice/api2/HeicCompositeStream.h +5 −2 Original line number Diff line number Diff line Loading @@ -45,8 +45,11 @@ public: wp<hardware::camera2::ICameraDeviceCallbacks> cb); ~HeicCompositeStream() override; static bool isHeicCompositeStream(const sp<Surface> &surface); static bool isHeicCompositeStreamInfo(const OutputStreamInfo& streamInfo); static bool isHeicCompositeStream(const sp<Surface>& surface, bool isCompositeHeicDisabled, bool isCompositeHeicUltraHDRDisabled); static bool isHeicCompositeStreamInfo(const OutputStreamInfo& streamInfo, bool isCompositeHeicDisabled, bool isCompositeHeicUltraHDRDisabled); status_t createInternalStreams(const std::vector<SurfaceHolder>& consumers, bool hasDeferredConsumer, uint32_t width, uint32_t height, int format, Loading services/camera/libcameraservice/common/CameraDeviceBase.h +2 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,8 @@ class CameraDeviceBase : public virtual FrameProducer { virtual const CameraMetadata& infoPhysical(const std::string& physicalId) const = 0; virtual bool isCompositeJpegRDisabled() const { return false; }; virtual bool isCompositeHeicDisabled() const { return false; } virtual bool isCompositeHeicUltraHDRDisabled() const { return false; } struct PhysicalCameraSettings { std::string cameraId; Loading services/camera/libcameraservice/common/CameraProviderManager.cpp +28 −0 Original line number Diff line number Diff line Loading @@ -399,6 +399,30 @@ bool CameraProviderManager::isCompositeJpegRDisabledLocked(const std::string &id return deviceInfo->isCompositeJpegRDisabled(); } bool CameraProviderManager::isCompositeHeicDisabled(const std::string &id) const { std::lock_guard<std::mutex> lock(mInterfaceMutex); return isCompositeHeicDisabledLocked(id); } bool CameraProviderManager::isCompositeHeicDisabledLocked(const std::string &id) const { auto deviceInfo = findDeviceInfoLocked(id); if (deviceInfo == nullptr) return false; return deviceInfo->isCompositeHeicDisabled(); } bool CameraProviderManager::isCompositeHeicUltraHDRDisabled(const std::string &id) const { std::lock_guard<std::mutex> lock(mInterfaceMutex); return isCompositeHeicUltraHDRDisabledLocked(id); } bool CameraProviderManager::isCompositeHeicUltraHDRDisabledLocked(const std::string &id) const { auto deviceInfo = findDeviceInfoLocked(id); if (deviceInfo == nullptr) return false; return deviceInfo->isCompositeHeicUltraHDRDisabled(); } status_t CameraProviderManager::getResourceCost(const std::string &id, CameraResourceCost* cost) const { std::lock_guard<std::mutex> lock(mInterfaceMutex); Loading Loading @@ -2256,6 +2280,10 @@ status_t CameraProviderManager::ProviderInfo::DeviceInfo3::fillHeicStreamCombina } status_t CameraProviderManager::ProviderInfo::DeviceInfo3::deriveHeicTags(bool maxResolution) { if (mCompositeHeicDisabled) { return OK; } int32_t scalerStreamSizesTag = SessionConfigurationUtils::getAppropriateModeTag( ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS, maxResolution); Loading Loading
services/camera/libcameraservice/api2/CameraDeviceClient.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -1184,7 +1184,8 @@ binder::Status CameraDeviceClient::createStream( bool isDepthCompositeStream = camera3::DepthCompositeStream::isDepthCompositeStream(surfaceHolders[0].mSurface); bool isHeicCompositeStream = camera3::HeicCompositeStream::isHeicCompositeStream( surfaceHolders[0].mSurface); surfaceHolders[0].mSurface, mDevice->isCompositeHeicDisabled(), mDevice->isCompositeHeicUltraHDRDisabled()); bool isJpegRCompositeStream = camera3::JpegRCompositeStream::isJpegRCompositeStream(surfaceHolders[0].mSurface) && !mDevice->isCompositeJpegRDisabled(); Loading Loading @@ -2173,7 +2174,9 @@ binder::Status CameraDeviceClient::switchToOffline( sp<Surface> s = new Surface(surface, false /*controlledByApp*/); #endif isCompositeStream = camera3::DepthCompositeStream::isDepthCompositeStream(s) || camera3::HeicCompositeStream::isHeicCompositeStream(s) || camera3::HeicCompositeStream::isHeicCompositeStream( s, mDevice->isCompositeHeicDisabled(), mDevice->isCompositeHeicUltraHDRDisabled()) || (camera3::JpegRCompositeStream::isJpegRCompositeStream(s) && !mDevice->isCompositeJpegRDisabled()); if (isCompositeStream) { Loading
services/camera/libcameraservice/api2/HeicCompositeStream.cpp +15 −7 Original line number Diff line number Diff line Loading @@ -122,13 +122,19 @@ HeicCompositeStream::~HeicCompositeStream() { mMainImageSurface.clear(); } bool HeicCompositeStream::isHeicCompositeStreamInfo(const OutputStreamInfo& streamInfo) { return ((streamInfo.dataSpace == static_cast<android_dataspace_t>(HAL_DATASPACE_HEIF) || (streamInfo.dataSpace == static_cast<android_dataspace_t>(kUltraHDRDataSpace))) && bool HeicCompositeStream::isHeicCompositeStreamInfo(const OutputStreamInfo& streamInfo, bool isCompositeHeicDisabled, bool isCompositeHeicUltraHDRDisabled) { return (((streamInfo.dataSpace == static_cast<android_dataspace_t>(HAL_DATASPACE_HEIF) && !isCompositeHeicDisabled) || (streamInfo.dataSpace == static_cast<android_dataspace_t>(kUltraHDRDataSpace) && !isCompositeHeicUltraHDRDisabled)) && (streamInfo.format == HAL_PIXEL_FORMAT_BLOB)); } bool HeicCompositeStream::isHeicCompositeStream(const sp<Surface> &surface) { bool HeicCompositeStream::isHeicCompositeStream(const sp<Surface>& surface, bool isCompositeHeicDisabled, bool isCompositeHeicUltraHDRDisabled) { ANativeWindow* anw = surface.get(); status_t err; int format; Loading @@ -147,8 +153,10 @@ bool HeicCompositeStream::isHeicCompositeStream(const sp<Surface> &surface) { return false; } return ((format == HAL_PIXEL_FORMAT_BLOB) && ((dataspace == HAL_DATASPACE_HEIF) || (dataspace == static_cast<int>(kUltraHDRDataSpace)))); return ((format == HAL_PIXEL_FORMAT_BLOB) && ((dataspace == HAL_DATASPACE_HEIF && !isCompositeHeicDisabled) || (dataspace == static_cast<int>(kUltraHDRDataSpace) && !isCompositeHeicUltraHDRDisabled))); } status_t HeicCompositeStream::createInternalStreams(const std::vector<SurfaceHolder>& consumers, Loading
services/camera/libcameraservice/api2/HeicCompositeStream.h +5 −2 Original line number Diff line number Diff line Loading @@ -45,8 +45,11 @@ public: wp<hardware::camera2::ICameraDeviceCallbacks> cb); ~HeicCompositeStream() override; static bool isHeicCompositeStream(const sp<Surface> &surface); static bool isHeicCompositeStreamInfo(const OutputStreamInfo& streamInfo); static bool isHeicCompositeStream(const sp<Surface>& surface, bool isCompositeHeicDisabled, bool isCompositeHeicUltraHDRDisabled); static bool isHeicCompositeStreamInfo(const OutputStreamInfo& streamInfo, bool isCompositeHeicDisabled, bool isCompositeHeicUltraHDRDisabled); status_t createInternalStreams(const std::vector<SurfaceHolder>& consumers, bool hasDeferredConsumer, uint32_t width, uint32_t height, int format, Loading
services/camera/libcameraservice/common/CameraDeviceBase.h +2 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,8 @@ class CameraDeviceBase : public virtual FrameProducer { virtual const CameraMetadata& infoPhysical(const std::string& physicalId) const = 0; virtual bool isCompositeJpegRDisabled() const { return false; }; virtual bool isCompositeHeicDisabled() const { return false; } virtual bool isCompositeHeicUltraHDRDisabled() const { return false; } struct PhysicalCameraSettings { std::string cameraId; Loading
services/camera/libcameraservice/common/CameraProviderManager.cpp +28 −0 Original line number Diff line number Diff line Loading @@ -399,6 +399,30 @@ bool CameraProviderManager::isCompositeJpegRDisabledLocked(const std::string &id return deviceInfo->isCompositeJpegRDisabled(); } bool CameraProviderManager::isCompositeHeicDisabled(const std::string &id) const { std::lock_guard<std::mutex> lock(mInterfaceMutex); return isCompositeHeicDisabledLocked(id); } bool CameraProviderManager::isCompositeHeicDisabledLocked(const std::string &id) const { auto deviceInfo = findDeviceInfoLocked(id); if (deviceInfo == nullptr) return false; return deviceInfo->isCompositeHeicDisabled(); } bool CameraProviderManager::isCompositeHeicUltraHDRDisabled(const std::string &id) const { std::lock_guard<std::mutex> lock(mInterfaceMutex); return isCompositeHeicUltraHDRDisabledLocked(id); } bool CameraProviderManager::isCompositeHeicUltraHDRDisabledLocked(const std::string &id) const { auto deviceInfo = findDeviceInfoLocked(id); if (deviceInfo == nullptr) return false; return deviceInfo->isCompositeHeicUltraHDRDisabled(); } status_t CameraProviderManager::getResourceCost(const std::string &id, CameraResourceCost* cost) const { std::lock_guard<std::mutex> lock(mInterfaceMutex); Loading Loading @@ -2256,6 +2280,10 @@ status_t CameraProviderManager::ProviderInfo::DeviceInfo3::fillHeicStreamCombina } status_t CameraProviderManager::ProviderInfo::DeviceInfo3::deriveHeicTags(bool maxResolution) { if (mCompositeHeicDisabled) { return OK; } int32_t scalerStreamSizesTag = SessionConfigurationUtils::getAppropriateModeTag( ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS, maxResolution); Loading