Merge "Camera: Move bokeh mode to extended scene mode." into rvc-dev
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index dc39b62..65cf96c 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -2013,6 +2013,7 @@
void AudioFlinger::PlaybackThread::dumpInternals_l(int fd, const Vector<String16>& args __unused)
{
+ dprintf(fd, " Master volume: %f\n", mMasterVolume);
dprintf(fd, " Master mute: %s\n", mMasterMute ? "on" : "off");
if (mHapticChannelMask != AUDIO_CHANNEL_NONE) {
dprintf(fd, " Haptic channel mask: %#x (%s)\n", mHapticChannelMask,
diff --git a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
index 1edfbf9..8f20685 100644
--- a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
@@ -59,6 +59,10 @@
return res;
}
+ for (size_t i = 0; i < mCompositeStreamMap.size(); i++) {
+ mCompositeStreamMap.valueAt(i)->switchToOffline();
+ }
+
return OK;
}
diff --git a/services/camera/libcameraservice/api2/CompositeStream.cpp b/services/camera/libcameraservice/api2/CompositeStream.cpp
index 354eaf9..b47ee2e 100644
--- a/services/camera/libcameraservice/api2/CompositeStream.cpp
+++ b/services/camera/libcameraservice/api2/CompositeStream.cpp
@@ -200,5 +200,10 @@
}
}
+void CompositeStream::switchToOffline() {
+ Mutex::Autolock l(mMutex);
+ mDevice.clear();
+}
+
}; // namespace camera3
}; // namespace android
diff --git a/services/camera/libcameraservice/api2/CompositeStream.h b/services/camera/libcameraservice/api2/CompositeStream.h
index de894f3..e5baf1a 100644
--- a/services/camera/libcameraservice/api2/CompositeStream.h
+++ b/services/camera/libcameraservice/api2/CompositeStream.h
@@ -48,6 +48,9 @@
status_t deleteStream();
+ // Switch to offline mode and release any online resources.
+ void switchToOffline();
+
// Create and register all internal camera streams.
virtual status_t createInternalStreams(const std::vector<sp<Surface>>& consumers,
bool hasDeferredConsumer, uint32_t width, uint32_t height, int format,
diff --git a/services/camera/libcameraservice/api2/DepthCompositeStream.cpp b/services/camera/libcameraservice/api2/DepthCompositeStream.cpp
index acad8c6..16ce52c 100644
--- a/services/camera/libcameraservice/api2/DepthCompositeStream.cpp
+++ b/services/camera/libcameraservice/api2/DepthCompositeStream.cpp
@@ -619,14 +619,15 @@
strerror(-ret), ret);
}
- sp<CameraDeviceBase> device = mDevice.promote();
- if (!device.get()) {
- ALOGE("%s: Invalid camera device!", __FUNCTION__);
- return NO_INIT;
- }
-
if (mDepthStreamId >= 0) {
- ret = device->deleteStream(mDepthStreamId);
+ // Camera devices may not be valid after switching to offline mode.
+ // In this case, all offline streams including internal composite streams
+ // are managed and released by the offline session.
+ sp<CameraDeviceBase> device = mDevice.promote();
+ if (device.get() != nullptr) {
+ ret = device->deleteStream(mDepthStreamId);
+ }
+
mDepthStreamId = -1;
}
diff --git a/services/camera/libcameraservice/api2/HeicCompositeStream.cpp b/services/camera/libcameraservice/api2/HeicCompositeStream.cpp
index d25e467..f335c20 100644
--- a/services/camera/libcameraservice/api2/HeicCompositeStream.cpp
+++ b/services/camera/libcameraservice/api2/HeicCompositeStream.cpp
@@ -209,13 +209,14 @@
deinitCodec();
if (mAppSegmentStreamId >= 0) {
+ // Camera devices may not be valid after switching to offline mode.
+ // In this case, all offline streams including internal composite streams
+ // are managed and released by the offline session.
sp<CameraDeviceBase> device = mDevice.promote();
- if (!device.get()) {
- ALOGE("%s: Invalid camera device!", __FUNCTION__);
- return NO_INIT;
+ if (device.get() != nullptr) {
+ res = device->deleteStream(mAppSegmentStreamId);
}
- res = device->deleteStream(mAppSegmentStreamId);
mAppSegmentStreamId = -1;
}
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index f29431c..87bdef6 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -4758,6 +4758,11 @@
mStreamIdsToBeDrained = streamIds;
}
+void Camera3Device::RequestThread::clearPreviousRequest() {
+ Mutex::Autolock l(mRequestLock);
+ mPrevRequest.clear();
+}
+
status_t Camera3Device::RequestThread::switchToOffline(
const std::vector<int32_t>& streamsToKeep,
/*out*/hardware::camera::device::V3_6::CameraOfflineSessionInfo* offlineSessionInfo,
@@ -5917,6 +5922,7 @@
internalUpdateStatusLocked(STATUS_UNCONFIGURED);
mOperatingMode = NO_MODE;
mIsConstrainedHighSpeedConfiguration = false;
+ mRequestThread->clearPreviousRequest();
return OK;
// TO be done by CameraDeviceClient/Camera3OfflineSession
diff --git a/services/camera/libcameraservice/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h
index 0069fb3..b373a64 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.h
+++ b/services/camera/libcameraservice/device3/Camera3Device.h
@@ -837,6 +837,8 @@
/*out*/sp<hardware::camera::device::V3_6::ICameraOfflineSession>* offlineSession,
/*out*/camera3::BufferRecords* bufferRecords);
+ void clearPreviousRequest();
+
status_t setRotateAndCropAutoBehavior(
camera_metadata_enum_android_scaler_rotate_and_crop_t rotateAndCropValue);