cameraservice: Migrate all internal String8/String16s to std::string
String8 and String16 are deprecated classes. It is recommended to use
std::string or std::u16string wherever possible. String16 is the native
string class for aidl, but Strings marked @utf8InCpp can use std::string
directly.
This patch standardizes libcameraservice's use of strings to
std::string, which is capable of storing utf-8 strings. This makes the
code more readable and potentially reduces the number of string copies
to a minimum.
A new set of string utils is added to frameworks/av/camera to aid this
migration.
Bug: 265487852
Test: Presubmit, ran CtsCameraTestCases on Cuttlefish, adb shell dumpsys media camera and observed output
Change-Id: I2b258a8636030dc4b7751140db43981b39c64f0d
Merged-In: I59330ac03c8a52b6c21a2388bba0c143e68af4cf
diff --git a/camera/Camera.cpp b/camera/Camera.cpp
index 2244682..35b8e21 100644
--- a/camera/Camera.cpp
+++ b/camera/Camera.cpp
@@ -19,7 +19,6 @@
#define LOG_TAG "Camera"
#include <utils/Log.h>
#include <utils/threads.h>
-#include <utils/String16.h>
#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>
#include <binder/IMemory.h>
@@ -70,7 +69,7 @@
// deadlock if we call any method of ICamera here.
}
-sp<Camera> Camera::connect(int cameraId, const String16& clientPackageName,
+sp<Camera> Camera::connect(int cameraId, const std::string& clientPackageName,
int clientUid, int clientPid, int targetSdkVersion, bool overrideToPortrait,
bool forceSlowJpegMode)
{
diff --git a/camera/CameraBase.cpp b/camera/CameraBase.cpp
index 9ae4607..be1d4c5 100644
--- a/camera/CameraBase.cpp
+++ b/camera/CameraBase.cpp
@@ -31,6 +31,7 @@
#include <camera/CameraBase.h>
#include <camera/CameraUtils.h>
+#include <camera/StringUtils.h>
// needed to instantiate
#include <camera/Camera.h>
@@ -58,7 +59,7 @@
}
status_t CameraStatus::writeToParcel(android::Parcel* parcel) const {
- auto res = parcel->writeString16(String16(cameraId));
+ auto res = parcel->writeString16(toString16(cameraId));
if (res != OK) return res;
res = parcel->writeInt32(status);
@@ -66,12 +67,12 @@
std::vector<String16> unavailablePhysicalIds16;
for (auto& id8 : unavailablePhysicalIds) {
- unavailablePhysicalIds16.push_back(String16(id8));
+ unavailablePhysicalIds16.push_back(toString16(id8));
}
res = parcel->writeString16Vector(unavailablePhysicalIds16);
if (res != OK) return res;
- res = parcel->writeString16(String16(clientPackage));
+ res = parcel->writeString16(toString16(clientPackage));
return res;
}
@@ -79,7 +80,7 @@
String16 tempCameraId;
auto res = parcel->readString16(&tempCameraId);
if (res != OK) return res;
- cameraId = String8(tempCameraId);
+ cameraId = toString8(tempCameraId);
res = parcel->readInt32(&status);
if (res != OK) return res;
@@ -88,13 +89,13 @@
res = parcel->readString16Vector(&unavailablePhysicalIds16);
if (res != OK) return res;
for (auto& id16 : unavailablePhysicalIds16) {
- unavailablePhysicalIds.push_back(String8(id16));
+ unavailablePhysicalIds.push_back(toStdString(id16));
}
String16 tempClientPackage;
res = parcel->readString16(&tempClientPackage);
if (res != OK) return res;
- clientPackage = String8(tempClientPackage);
+ clientPackage = toStdString(tempClientPackage);
return res;
}
@@ -142,7 +143,7 @@
sp<IServiceManager> sm = defaultServiceManager();
sp<IBinder> binder;
do {
- binder = sm->getService(String16(kCameraServiceName));
+ binder = sm->getService(toString16(kCameraServiceName));
if (binder != 0) {
break;
}
@@ -161,7 +162,7 @@
template <typename TCam, typename TCamTraits>
sp<TCam> CameraBase<TCam, TCamTraits>::connect(int cameraId,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
int clientUid, int clientPid, int targetSdkVersion,
bool overrideToPortrait, bool forceSlowJpegMode)
{
diff --git a/camera/CameraSessionStats.cpp b/camera/CameraSessionStats.cpp
index d1aa36a..fb7bf29 100644
--- a/camera/CameraSessionStats.cpp
+++ b/camera/CameraSessionStats.cpp
@@ -20,6 +20,7 @@
#include <utils/String16.h>
#include <camera/CameraSessionStats.h>
+#include <camera/StringUtils.h>
#include <binder/Parcel.h>
@@ -267,8 +268,8 @@
mDeviceError(false),
mVideoStabilizationMode(-1) {}
-CameraSessionStats::CameraSessionStats(const String16& cameraId,
- int facing, int newCameraState, const String16& clientName,
+CameraSessionStats::CameraSessionStats(const std::string& cameraId,
+ int facing, int newCameraState, const std::string& clientName,
int apiLevel, bool isNdk, int32_t latencyMs) :
mCameraId(cameraId),
mFacing(facing),
@@ -389,10 +390,10 @@
return err;
}
- mCameraId = id;
+ mCameraId = toStdString(id);
mFacing = facing;
mNewCameraState = newCameraState;
- mClientName = clientName;
+ mClientName = toStdString(clientName);
mApiLevel = apiLevel;
mIsNdk = isNdk;
mLatencyMs = latencyMs;
@@ -403,7 +404,7 @@
mResultErrorCount = resultErrorCount;
mDeviceError = deviceError;
mStreamStats = std::move(streamStats);
- mUserTag = userTag;
+ mUserTag = toStdString(userTag);
mVideoStabilizationMode = videoStabilizationMode;
return OK;
@@ -417,7 +418,7 @@
status_t err = OK;
- if ((err = parcel->writeString16(mCameraId)) != OK) {
+ if ((err = parcel->writeString16(toString16(mCameraId))) != OK) {
ALOGE("%s: Failed to write camera id!", __FUNCTION__);
return err;
}
@@ -432,7 +433,7 @@
return err;
}
- if ((err = parcel->writeString16(mClientName)) != OK) {
+ if ((err = parcel->writeString16(toString16(mClientName))) != OK) {
ALOGE("%s: Failed to write client name!", __FUNCTION__);
return err;
}
@@ -487,7 +488,7 @@
return err;
}
- if ((err = parcel->writeString16(mUserTag)) != OK) {
+ if ((err = parcel->writeString16(toString16(mUserTag))) != OK) {
ALOGE("%s: Failed to write user tag!", __FUNCTION__);
return err;
}
diff --git a/camera/CaptureResult.cpp b/camera/CaptureResult.cpp
index bb880d1..9ff2578 100644
--- a/camera/CaptureResult.cpp
+++ b/camera/CaptureResult.cpp
@@ -18,6 +18,7 @@
#include <utils/Log.h>
#include <camera/CaptureResult.h>
+#include <camera/StringUtils.h>
#include <binder/Parcel.h>
namespace android {
@@ -47,7 +48,7 @@
ALOGE("%s: Failed to read camera id: %d", __FUNCTION__, res);
return res;
}
- errorPhysicalCameraId = cameraId;
+ errorPhysicalCameraId = toStdString(cameraId);
}
parcel->readInt64(&lastCompletedRegularFrameNumber);
parcel->readInt64(&lastCompletedReprocessFrameNumber);
@@ -75,7 +76,7 @@
if (errorPhysicalCameraId.size() > 0) {
parcel->writeBool(true);
status_t res = OK;
- if ((res = parcel->writeString16(errorPhysicalCameraId)) != OK) {
+ if ((res = parcel->writeString16(toString16(errorPhysicalCameraId))) != OK) {
ALOGE("%s: Failed to write physical camera ID to parcel: %d", __FUNCTION__, res);
return res;
}
@@ -96,13 +97,15 @@
status_t PhysicalCaptureResultInfo::readFromParcel(const android::Parcel* parcel) {
status_t res;
- mPhysicalCameraId.setTo(u"");
+ mPhysicalCameraId = "";
mPhysicalCameraMetadata.clear();
- if ((res = parcel->readString16(&mPhysicalCameraId)) != OK) {
+ String16 physicalCameraId;
+ if ((res = parcel->readString16(&physicalCameraId)) != OK) {
ALOGE("%s: Failed to read camera id: %d", __FUNCTION__, res);
return res;
}
+ mPhysicalCameraId = toStdString(physicalCameraId);
if ((res = mPhysicalCameraMetadata.readFromParcel(parcel)) != OK) {
ALOGE("%s: Failed to read metadata from parcel: %d", __FUNCTION__, res);
@@ -113,7 +116,7 @@
status_t PhysicalCaptureResultInfo::writeToParcel(android::Parcel* parcel) const {
status_t res;
- if ((res = parcel->writeString16(mPhysicalCameraId)) != OK) {
+ if ((res = parcel->writeString16(toString16(mPhysicalCameraId))) != OK) {
ALOGE("%s: Failed to write physical camera ID to parcel: %d",
__FUNCTION__, res);
return res;
@@ -187,7 +190,8 @@
return res;
}
- mPhysicalMetadatas.emplace(mPhysicalMetadatas.end(), cameraId, physicalMetadata);
+ mPhysicalMetadatas.emplace(mPhysicalMetadatas.end(), toStdString(cameraId),
+ physicalMetadata);
}
ALOGV("%s: Read physical metadata from parcel", __FUNCTION__);
@@ -228,7 +232,7 @@
return BAD_VALUE;
}
for (const auto& physicalMetadata : mPhysicalMetadatas) {
- if ((res = parcel->writeString16(physicalMetadata.mPhysicalCameraId)) != OK) {
+ if ((res = parcel->writeString16(toString16(physicalMetadata.mPhysicalCameraId))) != OK) {
ALOGE("%s: Failed to write physical camera ID to parcel: %d",
__FUNCTION__, res);
return res;
diff --git a/camera/aidl/android/hardware/ICameraService.aidl b/camera/aidl/android/hardware/ICameraService.aidl
index 9f32595..1d6f9b9 100644
--- a/camera/aidl/android/hardware/ICameraService.aidl
+++ b/camera/aidl/android/hardware/ICameraService.aidl
@@ -81,7 +81,7 @@
*/
ICamera connect(ICameraClient client,
int cameraId,
- String opPackageName,
+ @utf8InCpp String opPackageName,
int clientUid, int clientPid,
int targetSdkVersion,
boolean overrideToPortrait,
@@ -92,9 +92,9 @@
* Only supported for device HAL versions >= 3.2
*/
ICameraDeviceUser connectDevice(ICameraDeviceCallbacks callbacks,
- String cameraId,
- String opPackageName,
- @nullable String featureId,
+ @utf8InCpp String cameraId,
+ @utf8InCpp String opPackageName,
+ @nullable @utf8InCpp String featureId,
int clientUid, int oomScoreOffset,
int targetSdkVersion,
boolean overrideToPortrait);
@@ -138,7 +138,7 @@
* Read the static camera metadata for a camera device.
* Only supported for device HAL versions >= 3.2
*/
- CameraMetadataNative getCameraCharacteristics(String cameraId, int targetSdkVersion,
+ CameraMetadataNative getCameraCharacteristics(@utf8InCpp String cameraId, int targetSdkVersion,
boolean overrideToPortrait);
/**
@@ -159,7 +159,7 @@
/**
* Read the legacy camera1 parameters into a String
*/
- String getLegacyParameters(int cameraId);
+ @utf8InCpp String getLegacyParameters(int cameraId);
/**
* apiVersion constants for supportsCameraApi
@@ -168,21 +168,21 @@
const int API_VERSION_2 = 2;
// Determines if a particular API version is supported directly for a cameraId.
- boolean supportsCameraApi(String cameraId, int apiVersion);
+ boolean supportsCameraApi(@utf8InCpp String cameraId, int apiVersion);
// Determines if a cameraId is a hidden physical camera of a logical multi-camera.
- boolean isHiddenPhysicalCamera(String cameraId);
+ boolean isHiddenPhysicalCamera(@utf8InCpp String cameraId);
// Inject the external camera to replace the internal camera session.
- ICameraInjectionSession injectCamera(String packageName, String internalCamId,
- String externalCamId, in ICameraInjectionCallback CameraInjectionCallback);
+ ICameraInjectionSession injectCamera(@utf8InCpp String packageName, @utf8InCpp String internalCamId,
+ @utf8InCpp String externalCamId, in ICameraInjectionCallback CameraInjectionCallback);
- void setTorchMode(String cameraId, boolean enabled, IBinder clientBinder);
+ void setTorchMode(@utf8InCpp String cameraId, boolean enabled, IBinder clientBinder);
// Change the brightness level of the flash unit associated with cameraId to strengthLevel.
// If the torch is in OFF state and strengthLevel > 0 then the torch will also be turned ON.
- void turnOnTorchWithStrengthLevel(String cameraId, int strengthLevel, IBinder clientBinder);
+ void turnOnTorchWithStrengthLevel(@utf8InCpp String cameraId, int strengthLevel, IBinder clientBinder);
// Get the brightness level of the flash unit associated with cameraId.
- int getTorchStrengthLevel(String cameraId);
+ int getTorchStrengthLevel(@utf8InCpp String cameraId);
/**
* Notify the camera service of a system event. Should only be called from system_server.
diff --git a/camera/aidl/android/hardware/ICameraServiceListener.aidl b/camera/aidl/android/hardware/ICameraServiceListener.aidl
index 5f17f5b..23a87d3 100644
--- a/camera/aidl/android/hardware/ICameraServiceListener.aidl
+++ b/camera/aidl/android/hardware/ICameraServiceListener.aidl
@@ -51,13 +51,14 @@
// Use to initialize variables only
const int STATUS_UNKNOWN = -1;
- oneway void onStatusChanged(int status, String cameraId);
+ oneway void onStatusChanged(int status, @utf8InCpp String cameraId);
/**
* Notify registered client about status changes for a physical camera backing
* a logical camera.
*/
- oneway void onPhysicalCameraStatusChanged(int status, String cameraId, String physicalCameraId);
+ oneway void onPhysicalCameraStatusChanged(int status, @utf8InCpp String cameraId,
+ @utf8InCpp String physicalCameraId);
/**
* The torch mode status of a camera.
@@ -81,9 +82,9 @@
// Use to initialize variables only
const int TORCH_STATUS_UNKNOWN = -1;
- oneway void onTorchStatusChanged(int status, String cameraId);
+ oneway void onTorchStatusChanged(int status, @utf8InCpp String cameraId);
- oneway void onTorchStrengthLevelChanged(String cameraId, int newTorchStrength);
+ oneway void onTorchStrengthLevelChanged(@utf8InCpp String cameraId, int newTorchStrength);
/**
* Notify registered clients about camera access priority changes.
@@ -97,6 +98,6 @@
* Only clients with android.permission.CAMERA_OPEN_CLOSE_LISTENER permission
* will receive such callbacks.
*/
- oneway void onCameraOpened(String cameraId, String clientPackageId);
- oneway void onCameraClosed(String cameraId);
+ oneway void onCameraOpened(@utf8InCpp String cameraId, @utf8InCpp String clientPackageId);
+ oneway void onCameraClosed(@utf8InCpp String cameraId);
}
diff --git a/camera/aidl/android/hardware/ICameraServiceProxy.aidl b/camera/aidl/android/hardware/ICameraServiceProxy.aidl
index fefea13..ea40b3f 100644
--- a/camera/aidl/android/hardware/ICameraServiceProxy.aidl
+++ b/camera/aidl/android/hardware/ICameraServiceProxy.aidl
@@ -43,7 +43,7 @@
* {@link android.hardware.camera2.CameraMetadata#SCALER_ROTATE_AND_CROP_180},
* {@link android.hardware.camera2.CameraMetadata#SCALER_ROTATE_AND_CROP_270}).
*/
- int getRotateAndCropOverride(String packageName, int lensFacing, int userId);
+ int getRotateAndCropOverride(@utf8InCpp String packageName, int lensFacing, int userId);
/**
* Checks if the camera has been disabled via device policy.
diff --git a/camera/camera2/CaptureRequest.cpp b/camera/camera2/CaptureRequest.cpp
index 7a8a4ba..071f34e 100644
--- a/camera/camera2/CaptureRequest.cpp
+++ b/camera/camera2/CaptureRequest.cpp
@@ -21,6 +21,7 @@
#include <utils/String16.h>
#include <camera/camera2/CaptureRequest.h>
+#include <camera/StringUtils.h>
#include <binder/Parcel.h>
#include <gui/Surface.h>
@@ -74,7 +75,7 @@
return err;
}
ALOGV("%s: Read metadata from parcel", __FUNCTION__);
- mPhysicalCameraSettings.push_back({std::string(String8(id).string()), settings});
+ mPhysicalCameraSettings.push_back({toStdString(id), settings});
}
int isReprocess = 0;
@@ -157,7 +158,7 @@
ALOGE("%s: Failed to read user tag!", __FUNCTION__);
return BAD_VALUE;
}
- mUserTag = String8(userTag).c_str();
+ mUserTag = toStdString(userTag);
}
return OK;
@@ -179,7 +180,7 @@
}
for (const auto &it : mPhysicalCameraSettings) {
- if ((err = parcel->writeString16(String16(it.id.c_str()))) != OK) {
+ if ((err = parcel->writeString16(toString16(it.id))) != OK) {
ALOGE("%s: Failed to camera id!", __FUNCTION__);
return err;
}
@@ -232,7 +233,7 @@
parcel->writeInt32(0);
} else {
parcel->writeInt32(1);
- parcel->writeString16(String16(mUserTag.c_str()));
+ parcel->writeString16(toString16(mUserTag));
}
return OK;
diff --git a/camera/camera2/ConcurrentCamera.cpp b/camera/camera2/ConcurrentCamera.cpp
index 01a695c..67aa876 100644
--- a/camera/camera2/ConcurrentCamera.cpp
+++ b/camera/camera2/ConcurrentCamera.cpp
@@ -20,6 +20,7 @@
#include <utils/String16.h>
#include <camera/camera2/ConcurrentCamera.h>
+#include <camera/StringUtils.h>
#include <binder/Parcel.h>
@@ -53,7 +54,7 @@
ALOGE("%s: Failed to read camera id!", __FUNCTION__);
return err;
}
- mConcurrentCameraIds.push_back(std::string(String8(id).string()));
+ mConcurrentCameraIds.push_back(toStdString(id));
}
return OK;
}
@@ -73,7 +74,7 @@
}
for (const auto &it : mConcurrentCameraIds) {
- if ((err = parcel->writeString16(String16(it.c_str()))) != OK) {
+ if ((err = parcel->writeString16(toString16(it))) != OK) {
ALOGE("%s: Failed to write the camera id string to parcel: %d", __FUNCTION__, err);
return err;
}
@@ -99,7 +100,7 @@
ALOGE("%s: Failed to read sessionConfiguration!", __FUNCTION__);
return err;
}
- mCameraId = std::string(String8(id).string());
+ mCameraId = toStdString(id);
return OK;
}
@@ -111,7 +112,7 @@
}
status_t err = OK;
- if ((err = parcel->writeString16(String16(mCameraId.c_str()))) != OK) {
+ if ((err = parcel->writeString16(toString16(mCameraId))) != OK) {
ALOGE("%s: Failed to write camera id!", __FUNCTION__);
return err;
}
diff --git a/camera/camera2/OutputConfiguration.cpp b/camera/camera2/OutputConfiguration.cpp
index 11d4960..7cd9fc7 100644
--- a/camera/camera2/OutputConfiguration.cpp
+++ b/camera/camera2/OutputConfiguration.cpp
@@ -21,6 +21,7 @@
#include <utils/Log.h>
#include <camera/camera2/OutputConfiguration.h>
+#include <camera/StringUtils.h>
#include <binder/Parcel.h>
#include <gui/view/Surface.h>
#include <system/camera_metadata.h>
@@ -65,7 +66,7 @@
return mIsShared;
}
-String16 OutputConfiguration::getPhysicalCameraId() const {
+std::string OutputConfiguration::getPhysicalCameraId() const {
return mPhysicalCameraId;
}
@@ -173,7 +174,9 @@
return err;
}
- parcel->readString16(&mPhysicalCameraId);
+ String16 physicalCameraId;
+ parcel->readString16(&physicalCameraId);
+ mPhysicalCameraId = toStdString(physicalCameraId);
int isMultiResolution = 0;
if ((err = parcel->readInt32(&isMultiResolution)) != OK) {
@@ -224,7 +227,7 @@
for (auto& surface : surfaceShims) {
ALOGV("%s: OutputConfiguration: %p, name %s", __FUNCTION__,
surface.graphicBufferProducer.get(),
- String8(surface.name).string());
+ toString8(surface.name).string());
mGbps.push_back(surface.graphicBufferProducer);
}
@@ -235,14 +238,14 @@
" physicalCameraId = %s, isMultiResolution = %d, streamUseCase = %" PRId64
", timestampBase = %d, mirrorMode = %d",
__FUNCTION__, mRotation, mSurfaceSetID, mSurfaceType,
- String8(mPhysicalCameraId).string(), mIsMultiResolution, mStreamUseCase, timestampBase,
+ mPhysicalCameraId.c_str(), mIsMultiResolution, mStreamUseCase, timestampBase,
mMirrorMode);
return err;
}
OutputConfiguration::OutputConfiguration(sp<IGraphicBufferProducer>& gbp, int rotation,
- const String16& physicalId,
+ const std::string& physicalId,
int surfaceSetID, bool isShared) {
mGbps.push_back(gbp);
mRotation = rotation;
@@ -259,7 +262,7 @@
OutputConfiguration::OutputConfiguration(
const std::vector<sp<IGraphicBufferProducer>>& gbps,
- int rotation, const String16& physicalCameraId, int surfaceSetID, int surfaceType,
+ int rotation, const std::string& physicalCameraId, int surfaceSetID, int surfaceType,
int width, int height, bool isShared)
: mGbps(gbps), mRotation(rotation), mSurfaceSetID(surfaceSetID), mSurfaceType(surfaceType),
mWidth(width), mHeight(height), mIsDeferred(false), mIsShared(isShared),
@@ -305,7 +308,8 @@
err = parcel->writeParcelableVector(surfaceShims);
if (err != OK) return err;
- err = parcel->writeString16(mPhysicalCameraId);
+ String16 physicalCameraId = toString16(mPhysicalCameraId);
+ err = parcel->writeString16(physicalCameraId);
if (err != OK) return err;
err = parcel->writeInt32(mIsMultiResolution ? 1 : 0);
diff --git a/camera/include/camera/Camera.h b/camera/include/camera/Camera.h
index 21b57af..6655f82 100644
--- a/camera/include/camera/Camera.h
+++ b/camera/include/camera/Camera.h
@@ -56,9 +56,9 @@
typedef CameraListener TCamListener;
typedef ::android::hardware::ICamera TCamUser;
typedef ::android::hardware::ICameraClient TCamCallbacks;
- typedef ::android::binder::Status(::android::hardware::ICameraService::*TCamConnectService)
+ typedef ::android::binder::Status (::android::hardware::ICameraService::*TCamConnectService)
(const sp<::android::hardware::ICameraClient>&,
- int, const String16&, int, int, int, bool, bool,
+ int, const std::string&, int, int, int, bool, bool,
/*out*/
sp<::android::hardware::ICamera>*);
static TCamConnectService fnConnectService;
@@ -80,7 +80,7 @@
// construct a camera client from an existing remote
static sp<Camera> create(const sp<::android::hardware::ICamera>& camera);
static sp<Camera> connect(int cameraId,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
int clientUid, int clientPid, int targetSdkVersion,
bool overrideToPortrait, bool forceSlowJpegMode);
diff --git a/camera/include/camera/CameraBase.h b/camera/include/camera/CameraBase.h
index b20dc1b..6af7f2a 100644
--- a/camera/include/camera/CameraBase.h
+++ b/camera/include/camera/CameraBase.h
@@ -73,7 +73,7 @@
/**
* The name of the camera device
*/
- String8 cameraId;
+ std::string cameraId;
/**
* Its current status, one of the ICameraService::STATUS_* fields
@@ -83,18 +83,18 @@
/**
* Unavailable physical camera names for a multi-camera device
*/
- std::vector<String8> unavailablePhysicalIds;
+ std::vector<std::string> unavailablePhysicalIds;
/**
* Client package name if camera is open, otherwise not applicable
*/
- String8 clientPackage;
+ std::string clientPackage;
virtual status_t writeToParcel(android::Parcel* parcel) const;
virtual status_t readFromParcel(const android::Parcel* parcel);
- CameraStatus(String8 id, int32_t s, const std::vector<String8>& unavailSubIds,
- const String8& clientPkg) : cameraId(id), status(s),
+ CameraStatus(std::string id, int32_t s, const std::vector<std::string>& unavailSubIds,
+ const std::string& clientPkg) : cameraId(id), status(s),
unavailablePhysicalIds(unavailSubIds), clientPackage(clientPkg) {}
CameraStatus() : status(ICameraServiceListener::STATUS_PRESENT) {}
};
@@ -118,7 +118,7 @@
typedef typename TCamTraits::TCamConnectService TCamConnectService;
static sp<TCam> connect(int cameraId,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
int clientUid, int clientPid, int targetSdkVersion,
bool overrideToPortrait, bool forceSlowJpegMode);
virtual void disconnect();
diff --git a/camera/include/camera/CameraSessionStats.h b/camera/include/camera/CameraSessionStats.h
index aaa88b2..9e61cf0 100644
--- a/camera/include/camera/CameraSessionStats.h
+++ b/camera/include/camera/CameraSessionStats.h
@@ -17,6 +17,8 @@
#ifndef ANDROID_HARDWARE_CAMERA_SERVICE_SESSION_STATS_H
#define ANDROID_HARDWARE_CAMERA_SERVICE_SESSION_STATS_H
+#include <string>
+
#include <binder/Parcelable.h>
#include <camera/CameraMetadata.h>
@@ -116,10 +118,10 @@
static const int CAMERA_API_LEVEL_1;
static const int CAMERA_API_LEVEL_2;
- String16 mCameraId;
+ std::string mCameraId;
int mFacing;
int mNewCameraState;
- String16 mClientName;
+ std::string mClientName;
int mApiLevel;
bool mIsNdk;
// latency in ms for camera open, close, or session creation.
@@ -136,13 +138,13 @@
// Whether the device runs into an error state
bool mDeviceError;
std::vector<CameraStreamStats> mStreamStats;
- String16 mUserTag;
+ std::string mUserTag;
int mVideoStabilizationMode;
// Constructors
CameraSessionStats();
- CameraSessionStats(const String16& cameraId, int facing, int newCameraState,
- const String16& clientName, int apiLevel, bool isNdk, int32_t latencyMs);
+ CameraSessionStats(const std::string& cameraId, int facing, int newCameraState,
+ const std::string& clientName, int apiLevel, bool isNdk, int32_t latencyMs);
virtual status_t readFromParcel(const android::Parcel* parcel) override;
virtual status_t writeToParcel(android::Parcel* parcel) const override;
diff --git a/camera/include/camera/CaptureResult.h b/camera/include/camera/CaptureResult.h
index de534ab..e08c9ca 100644
--- a/camera/include/camera/CaptureResult.h
+++ b/camera/include/camera/CaptureResult.h
@@ -74,7 +74,7 @@
* a reference to physical camera device.
* Empty otherwise.
*/
- String16 errorPhysicalCameraId;
+ std::string errorPhysicalCameraId;
// The last completed frame numbers shouldn't be checked in onResultReceived() and notifyError()
// because the output buffers could be arriving after onResultReceived() and
@@ -150,13 +150,13 @@
: mPhysicalCameraId(),
mPhysicalCameraMetadata() {
}
- PhysicalCaptureResultInfo(const String16& cameraId,
+ PhysicalCaptureResultInfo(const std::string& cameraId,
const CameraMetadata& cameraMetadata)
: mPhysicalCameraId(cameraId),
mPhysicalCameraMetadata(cameraMetadata) {
}
- String16 mPhysicalCameraId;
+ std::string mPhysicalCameraId;
CameraMetadata mPhysicalCameraMetadata;
virtual status_t readFromParcel(const android::Parcel* parcel) override;
diff --git a/camera/include/camera/StringUtils.h b/camera/include/camera/StringUtils.h
new file mode 100644
index 0000000..b9dfbfc
--- /dev/null
+++ b/camera/include/camera/StringUtils.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_SERVERS_CAMERA_STRINGUTILS_H
+#define ANDROID_SERVERS_CAMERA_STRINGUTILS_H
+
+#include <codecvt>
+#include <locale>
+#include <memory>
+#include <optional>
+#include <string>
+
+#include <fmt/printf.h>
+#include <utils/String8.h>
+#include <utils/String16.h>
+
+namespace android {
+ inline String8 toString8(const std::string &str) {
+ return String8(str.c_str());
+ }
+
+ inline String8 toString8(const String16 &str) {
+ return String8(str);
+ }
+
+ inline String8 toString8(const char *str) {
+ return String8(str);
+ }
+
+ inline String16 toString16(const std::string &str) {
+ return String16(str.c_str());
+ }
+
+ inline String16 toString16(const String8 &str) {
+ return String16(str);
+ }
+
+ inline String16 toString16(const char *str) {
+ return String16(str);
+ }
+
+ inline std::optional<String16> toString16(std::optional<std::string> str) {
+ if (str.has_value()) {
+ return std::optional<String16>(toString16(str.value()));
+ }
+
+ return std::nullopt;
+ }
+
+ inline std::string toStdString(const String8 &str) {
+ return std::string(str.string());
+ }
+
+ inline std::string toStdString(const String16 &str) {
+ std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert;
+ return convert.to_bytes(str.string());
+ }
+
+ /**
+ * Convert a non-null-terminated UTF16 string to a UTF8 string (i.e. in jni functions)
+ * len is the number of characters.
+ */
+ inline std::string toStdString(const char16_t *str, size_t len) {
+ std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert;
+ return convert.to_bytes(str, str + len);
+ }
+} // namespace android
+
+#endif // ANDROID_SERVERS_CAMERA_STRINGUTILS_H
diff --git a/camera/include/camera/camera2/OutputConfiguration.h b/camera/include/camera/camera2/OutputConfiguration.h
index b7c7f7f..a9b5f72 100644
--- a/camera/include/camera/camera2/OutputConfiguration.h
+++ b/camera/include/camera/camera2/OutputConfiguration.h
@@ -17,6 +17,8 @@
#ifndef ANDROID_HARDWARE_CAMERA2_OUTPUTCONFIGURATION_H
#define ANDROID_HARDWARE_CAMERA2_OUTPUTCONFIGURATION_H
+#include <string>
+
#include <gui/IGraphicBufferProducer.h>
#include <binder/Parcelable.h>
@@ -63,7 +65,7 @@
int64_t getDynamicRangeProfile() const;
bool isDeferred() const;
bool isShared() const;
- String16 getPhysicalCameraId() const;
+ std::string getPhysicalCameraId() const;
bool isMultiResolution() const;
int64_t getStreamUseCase() const;
int getTimestampBase() const;
@@ -89,11 +91,11 @@
OutputConfiguration(const android::Parcel& parcel);
OutputConfiguration(sp<IGraphicBufferProducer>& gbp, int rotation,
- const String16& physicalCameraId,
+ const std::string& physicalCameraId,
int surfaceSetID = INVALID_SET_ID, bool isShared = false);
OutputConfiguration(const std::vector<sp<IGraphicBufferProducer>>& gbps,
- int rotation, const String16& physicalCameraId,
+ int rotation, const std::string& physicalCameraId,
int surfaceSetID = INVALID_SET_ID,
int surfaceType = OutputConfiguration::SURFACE_TYPE_UNKNOWN, int width = 0,
int height = 0, bool isShared = false);
@@ -183,7 +185,7 @@
int mHeight;
bool mIsDeferred;
bool mIsShared;
- String16 mPhysicalCameraId;
+ std::string mPhysicalCameraId;
bool mIsMultiResolution;
std::vector<int32_t> mSensorPixelModesUsed;
int64_t mDynamicRangeProfile;
diff --git a/camera/ndk/impl/ACameraDevice.cpp b/camera/ndk/impl/ACameraDevice.cpp
index 7997768..eba9d94 100644
--- a/camera/ndk/impl/ACameraDevice.cpp
+++ b/camera/ndk/impl/ACameraDevice.cpp
@@ -21,6 +21,7 @@
#include <inttypes.h>
#include <android/hardware/ICameraService.h>
#include <gui/Surface.h>
+#include <camera/StringUtils.h>
#include "ACameraDevice.h"
#include "ACameraMetadata.h"
#include "ACaptureRequest.h"
@@ -234,8 +235,7 @@
return ret;
}
- String16 physicalId16(output.mPhysicalCameraId.c_str());
- OutputConfiguration outConfig(iGBP, output.mRotation, physicalId16,
+ OutputConfiguration outConfig(iGBP, output.mRotation, output.mPhysicalCameraId,
OutputConfiguration::INVALID_SET_ID, true);
for (auto& anw : output.mSharedWindows) {
@@ -299,8 +299,7 @@
return ret;
}
- String16 physicalId16(output->mPhysicalCameraId.c_str());
- OutputConfiguration outConfig(iGBP, output->mRotation, physicalId16,
+ OutputConfiguration outConfig(iGBP, output->mRotation, output->mPhysicalCameraId,
OutputConfiguration::INVALID_SET_ID, true);
for (auto& anw : output->mSharedWindows) {
@@ -631,9 +630,8 @@
if (ret != ACAMERA_OK) {
return ret;
}
- String16 physicalId16(outConfig.mPhysicalCameraId.c_str());
outputSet.insert(std::make_pair(
- anw, OutputConfiguration(iGBP, outConfig.mRotation, physicalId16,
+ anw, OutputConfiguration(iGBP, outConfig.mRotation, outConfig.mPhysicalCameraId,
OutputConfiguration::INVALID_SET_ID, outConfig.mIsShared)));
}
auto addSet = outputSet;
@@ -867,7 +865,7 @@
msg->setObject(kSessionSpKey, session);
if (cbh.mIsLogicalCameraCallback) {
if (resultExtras.errorPhysicalCameraId.size() > 0) {
- String8 cameraId(resultExtras.errorPhysicalCameraId);
+ String8 cameraId = toString8(resultExtras.errorPhysicalCameraId);
msg->setString(kFailingPhysicalCameraId, cameraId.string(), cameraId.size());
}
msg->setPointer(kCallbackFpKey, (void*) cbh.mOnLogicalCameraCaptureFailed);
@@ -1141,7 +1139,7 @@
std::vector<std::string> physicalCameraIds;
std::vector<sp<ACameraMetadata>> physicalMetadataCopy;
for (size_t i = 0; i < physicalResultInfo.size(); i++) {
- String8 physicalId8(physicalResultInfo[i].mPhysicalCameraId);
+ String8 physicalId8 = toString8(physicalResultInfo[i].mPhysicalCameraId);
physicalCameraIds.push_back(physicalId8.c_str());
CameraMetadata clone = physicalResultInfo[i].mPhysicalCameraMetadata;
diff --git a/camera/ndk/impl/ACameraManager.cpp b/camera/ndk/impl/ACameraManager.cpp
index 02047ae..e715c22 100644
--- a/camera/ndk/impl/ACameraManager.cpp
+++ b/camera/ndk/impl/ACameraManager.cpp
@@ -25,6 +25,7 @@
#include <cutils/properties.h>
#include <stdlib.h>
#include <camera/CameraUtils.h>
+#include <camera/StringUtils.h>
#include <camera/VendorTagDescriptor.h>
using namespace android::acam;
@@ -85,7 +86,7 @@
sp<IServiceManager> sm = defaultServiceManager();
sp<IBinder> binder;
do {
- binder = sm->getService(String16(kCameraServiceName));
+ binder = sm->getService(toString16(kCameraServiceName));
if (binder != nullptr) {
break;
}
@@ -189,12 +190,12 @@
sp<CameraManagerGlobal> cm = mCameraManager.promote();
if (cm != nullptr) {
AutoMutex lock(cm->mLock);
- std::vector<String8> cameraIdList;
+ std::vector<std::string> cameraIdList;
for (auto& pair : cm->mDeviceStatusMap) {
cameraIdList.push_back(pair.first);
}
- for (String8 cameraId : cameraIdList) {
+ for (const std::string& cameraId : cameraIdList) {
cm->onStatusChangedLocked(
CameraServiceListener::STATUS_NOT_PRESENT, cameraId);
}
@@ -260,7 +261,7 @@
// Send initial callbacks if callback is newly registered
if (pair.second) {
for (auto& pair : mDeviceStatusMap) {
- const String8& cameraId = pair.first;
+ const std::string& cameraId = pair.first;
int32_t status = pair.second.getStatus();
// Don't send initial callbacks for camera ids which don't support
// camera2
@@ -274,12 +275,12 @@
cb.mAvailable : cb.mUnavailable;
msg->setPointer(kCallbackFpKey, (void *) cbFunc);
msg->setPointer(kContextKey, cb.mContext);
- msg->setString(kCameraIdKey, AString(cameraId));
+ msg->setString(kCameraIdKey, AString(cameraId.c_str()));
mPendingCallbackCnt++;
msg->post();
// Physical camera unavailable callback
- std::set<String8> unavailablePhysicalCameras =
+ std::set<std::string> unavailablePhysicalCameras =
pair.second.getUnavailablePhysicalIds();
for (const auto& physicalCameraId : unavailablePhysicalCameras) {
sp<AMessage> msg = new AMessage(kWhatSendSinglePhysicalCameraCallback, mHandler);
@@ -287,8 +288,8 @@
cb.mPhysicalCamUnavailable;
msg->setPointer(kCallbackFpKey, (void *) cbFunc);
msg->setPointer(kContextKey, cb.mContext);
- msg->setString(kCameraIdKey, AString(cameraId));
- msg->setString(kPhysicalCameraIdKey, AString(physicalCameraId));
+ msg->setString(kCameraIdKey, AString(cameraId.c_str()));
+ msg->setString(kPhysicalCameraIdKey, AString(physicalCameraId.c_str()));
mPendingCallbackCnt++;
msg->post();
}
@@ -296,11 +297,11 @@
}
}
-bool CameraManagerGlobal::supportsCamera2ApiLocked(const String8 &cameraId) {
+bool CameraManagerGlobal::supportsCamera2ApiLocked(const std::string &cameraId) {
bool camera2Support = false;
auto cs = getCameraServiceLocked();
binder::Status serviceRet =
- cs->supportsCameraApi(String16(cameraId),
+ cs->supportsCameraApi(cameraId,
hardware::ICameraService::API_VERSION_2, &camera2Support);
if (!serviceRet.isOk()) {
ALOGE("%s: supportsCameraApi2Locked() call failed for cameraId %s",
@@ -310,7 +311,7 @@
return camera2Support;
}
-void CameraManagerGlobal::getCameraIdList(std::vector<String8>* cameraIds) {
+void CameraManagerGlobal::getCameraIdList(std::vector<std::string>* cameraIds) {
// Ensure that we have initialized/refreshed the list of available devices
Mutex::Autolock _l(mLock);
// Needed to make sure we're connected to cameraservice
@@ -460,10 +461,10 @@
}
binder::Status CameraManagerGlobal::CameraServiceListener::onStatusChanged(
- int32_t status, const String16& cameraId) {
+ int32_t status, const std::string& cameraId) {
sp<CameraManagerGlobal> cm = mCameraManager.promote();
if (cm != nullptr) {
- cm->onStatusChanged(status, String8(cameraId));
+ cm->onStatusChanged(status, cameraId);
} else {
ALOGE("Cannot deliver status change. Global camera manager died");
}
@@ -471,10 +472,10 @@
}
binder::Status CameraManagerGlobal::CameraServiceListener::onPhysicalCameraStatusChanged(
- int32_t status, const String16& cameraId, const String16& physicalCameraId) {
+ int32_t status, const std::string& cameraId, const std::string& physicalCameraId) {
sp<CameraManagerGlobal> cm = mCameraManager.promote();
if (cm != nullptr) {
- cm->onStatusChanged(status, String8(cameraId), String8(physicalCameraId));
+ cm->onStatusChanged(status, cameraId, physicalCameraId);
} else {
ALOGE("Cannot deliver physical camera status change. Global camera manager died");
}
@@ -496,13 +497,13 @@
}
void CameraManagerGlobal::onStatusChanged(
- int32_t status, const String8& cameraId) {
+ int32_t status, const std::string& cameraId) {
Mutex::Autolock _l(mLock);
onStatusChangedLocked(status, cameraId);
}
void CameraManagerGlobal::onStatusChangedLocked(
- int32_t status, const String8& cameraId) {
+ int32_t status, const std::string& cameraId) {
if (!validStatus(status)) {
ALOGE("%s: Invalid status %d", __FUNCTION__, status);
return;
@@ -535,7 +536,7 @@
cb.mAvailable : cb.mUnavailable;
msg->setPointer(kCallbackFpKey, (void *) cbFp);
msg->setPointer(kContextKey, cb.mContext);
- msg->setString(kCameraIdKey, AString(cameraId));
+ msg->setString(kCameraIdKey, AString(cameraId.c_str()));
mPendingCallbackCnt++;
msg->post();
}
@@ -546,13 +547,13 @@
}
void CameraManagerGlobal::onStatusChanged(
- int32_t status, const String8& cameraId, const String8& physicalCameraId) {
+ int32_t status, const std::string& cameraId, const std::string& physicalCameraId) {
Mutex::Autolock _l(mLock);
onStatusChangedLocked(status, cameraId, physicalCameraId);
}
void CameraManagerGlobal::onStatusChangedLocked(
- int32_t status, const String8& cameraId, const String8& physicalCameraId) {
+ int32_t status, const std::string& cameraId, const std::string& physicalCameraId) {
if (!validStatus(status)) {
ALOGE("%s: Invalid status %d", __FUNCTION__, status);
return;
@@ -568,7 +569,7 @@
if (logicalCamStatus != hardware::ICameraServiceListener::STATUS_PRESENT &&
logicalCamStatus != hardware::ICameraServiceListener::STATUS_NOT_AVAILABLE) {
ALOGE("%s: Physical camera id %s status %d change for an invalid logical camera state %d",
- __FUNCTION__, physicalCameraId.string(), status, logicalCamStatus);
+ __FUNCTION__, physicalCameraId.c_str(), status, logicalCamStatus);
return;
}
@@ -589,8 +590,8 @@
cb.mPhysicalCamAvailable : cb.mPhysicalCamUnavailable;
msg->setPointer(kCallbackFpKey, (void *) cbFp);
msg->setPointer(kContextKey, cb.mContext);
- msg->setString(kCameraIdKey, AString(cameraId));
- msg->setString(kPhysicalCameraIdKey, AString(physicalCameraId));
+ msg->setString(kCameraIdKey, AString(cameraId.c_str()));
+ msg->setString(kPhysicalCameraIdKey, AString(physicalCameraId.c_str()));
mPendingCallbackCnt++;
msg->post();
}
@@ -608,20 +609,20 @@
}
bool CameraManagerGlobal::StatusAndHAL3Support::addUnavailablePhysicalId(
- const String8& physicalCameraId) {
+ const std::string& physicalCameraId) {
std::lock_guard<std::mutex> lock(mLock);
auto result = unavailablePhysicalIds.insert(physicalCameraId);
return result.second;
}
bool CameraManagerGlobal::StatusAndHAL3Support::removeUnavailablePhysicalId(
- const String8& physicalCameraId) {
+ const std::string& physicalCameraId) {
std::lock_guard<std::mutex> lock(mLock);
auto count = unavailablePhysicalIds.erase(physicalCameraId);
return count > 0;
}
-std::set<String8> CameraManagerGlobal::StatusAndHAL3Support::getUnavailablePhysicalIds() {
+std::set<std::string> CameraManagerGlobal::StatusAndHAL3Support::getUnavailablePhysicalIds() {
std::lock_guard<std::mutex> lock(mLock);
return unavailablePhysicalIds;
}
@@ -636,7 +637,7 @@
ACameraManager::getCameraIdList(ACameraIdList** cameraIdList) {
Mutex::Autolock _l(mLock);
- std::vector<String8> idList;
+ std::vector<std::string> idList;
CameraManagerGlobal::getInstance().getCameraIdList(&idList);
int numCameras = idList.size();
@@ -653,7 +654,7 @@
return ACAMERA_ERROR_NOT_ENOUGH_MEMORY;
}
for (int i = 0; i < numCameras; i++) {
- const char* src = idList[i].string();
+ const char* src = idList[i].c_str();
size_t dstSize = strlen(src) + 1;
char* dst = new char[dstSize];
if (!dst) {
@@ -695,7 +696,7 @@
CameraMetadata rawMetadata;
int targetSdkVersion = android_get_application_target_sdk_version();
- binder::Status serviceRet = cs->getCameraCharacteristics(String16(cameraIdStr),
+ binder::Status serviceRet = cs->getCameraCharacteristics(cameraIdStr,
targetSdkVersion, /*overrideToPortrait*/false, &rawMetadata);
if (!serviceRet.isOk()) {
switch(serviceRet.serviceSpecificErrorCode()) {
@@ -746,7 +747,7 @@
// No way to get package name from native.
// Send a zero length package name and let camera service figure it out from UID
binder::Status serviceRet = cs->connectDevice(
- callbacks, String16(cameraId), String16(""), {},
+ callbacks, cameraId, "", {},
hardware::ICameraService::USE_CALLING_UID, /*oomScoreOffset*/0,
targetSdkVersion, /*overrideToPortrait*/false, /*out*/&deviceRemote);
diff --git a/camera/ndk/impl/ACameraManager.h b/camera/ndk/impl/ACameraManager.h
index d53d809..0960e6c 100644
--- a/camera/ndk/impl/ACameraManager.h
+++ b/camera/ndk/impl/ACameraManager.h
@@ -62,7 +62,7 @@
/**
* Return camera IDs that support camera2
*/
- void getCameraIdList(std::vector<String8> *cameraIds);
+ void getCameraIdList(std::vector<std::string> *cameraIds);
private:
sp<hardware::ICameraService> mCameraService;
@@ -87,23 +87,23 @@
class CameraServiceListener final : public hardware::BnCameraServiceListener {
public:
explicit CameraServiceListener(CameraManagerGlobal* cm) : mCameraManager(cm) {}
- virtual binder::Status onStatusChanged(int32_t status, const String16& cameraId);
+ virtual binder::Status onStatusChanged(int32_t status, const std::string& cameraId);
virtual binder::Status onPhysicalCameraStatusChanged(int32_t status,
- const String16& cameraId, const String16& physicalCameraId);
+ const std::string& cameraId, const std::string& physicalCameraId);
// Torch API not implemented yet
- virtual binder::Status onTorchStatusChanged(int32_t, const String16&) {
+ virtual binder::Status onTorchStatusChanged(int32_t, const std::string&) {
return binder::Status::ok();
}
- virtual binder::Status onTorchStrengthLevelChanged(const String16&, int32_t) {
+ virtual binder::Status onTorchStrengthLevelChanged(const std::string&, int32_t) {
return binder::Status::ok();
}
virtual binder::Status onCameraAccessPrioritiesChanged();
- virtual binder::Status onCameraOpened(const String16&, const String16&) {
+ virtual binder::Status onCameraOpened(const std::string&, const std::string&) {
return binder::Status::ok();
}
- virtual binder::Status onCameraClosed(const String16&) {
+ virtual binder::Status onCameraClosed(const std::string&) {
return binder::Status::ok();
}
@@ -203,20 +203,20 @@
sp<hardware::ICameraService> getCameraServiceLocked();
void onCameraAccessPrioritiesChanged();
- void onStatusChanged(int32_t status, const String8& cameraId);
- void onStatusChangedLocked(int32_t status, const String8& cameraId);
- void onStatusChanged(int32_t status, const String8& cameraId, const String8& physicalCameraId);
- void onStatusChangedLocked(int32_t status, const String8& cameraId,
- const String8& physicalCameraId);
+ void onStatusChanged(int32_t status, const std::string& cameraId);
+ void onStatusChangedLocked(int32_t status, const std::string& cameraId);
+ void onStatusChanged(int32_t status, const std::string& cameraId, const std::string& physicalCameraId);
+ void onStatusChangedLocked(int32_t status, const std::string& cameraId,
+ const std::string& physicalCameraId);
// Utils for status
static bool validStatus(int32_t status);
static bool isStatusAvailable(int32_t status);
- bool supportsCamera2ApiLocked(const String8 &cameraId);
+ bool supportsCamera2ApiLocked(const std::string &cameraId);
// The sort logic must match the logic in
// libcameraservice/common/CameraProviderManager.cpp::getAPI1CompatibleCameraDeviceIds
struct CameraIdComparator {
- bool operator()(const String8& a, const String8& b) const {
+ bool operator()(const std::string& a, const std::string& b) const {
uint32_t aUint = 0, bUint = 0;
bool aIsUint = base::ParseUint(a.c_str(), &aUint);
bool bIsUint = base::ParseUint(b.c_str(), &bUint);
@@ -238,22 +238,22 @@
private:
int32_t status = hardware::ICameraServiceListener::STATUS_NOT_PRESENT;
mutable std::mutex mLock;
- std::set<String8> unavailablePhysicalIds;
+ std::set<std::string> unavailablePhysicalIds;
public:
const bool supportsHAL3 = false;
StatusAndHAL3Support(int32_t st, bool HAL3support):
status(st), supportsHAL3(HAL3support) { };
StatusAndHAL3Support() = default;
- bool addUnavailablePhysicalId(const String8& physicalCameraId);
- bool removeUnavailablePhysicalId(const String8& physicalCameraId);
+ bool addUnavailablePhysicalId(const std::string& physicalCameraId);
+ bool removeUnavailablePhysicalId(const std::string& physicalCameraId);
int32_t getStatus();
void updateStatus(int32_t newStatus);
- std::set<String8> getUnavailablePhysicalIds();
+ std::set<std::string> getUnavailablePhysicalIds();
};
// Map camera_id -> status
- std::map<String8, StatusAndHAL3Support, CameraIdComparator> mDeviceStatusMap;
+ std::map<std::string, StatusAndHAL3Support, CameraIdComparator> mDeviceStatusMap;
// For the singleton instance
static Mutex sLock;
diff --git a/camera/tests/CameraBinderTests.cpp b/camera/tests/CameraBinderTests.cpp
index 1af5637..bb963ab 100644
--- a/camera/tests/CameraBinderTests.cpp
+++ b/camera/tests/CameraBinderTests.cpp
@@ -43,6 +43,7 @@
#include <camera/camera2/OutputConfiguration.h>
#include <camera/camera2/SessionConfiguration.h>
#include <camera/camera2/SubmitInfo.h>
+#include <camera/StringUtils.h>
#include <gui/BufferItemConsumer.h>
#include <gui/IGraphicBufferProducer.h>
@@ -68,15 +69,15 @@
// Stub listener implementation
class TestCameraServiceListener : public hardware::BnCameraServiceListener {
- std::map<String16, int32_t> mCameraTorchStatuses;
- std::map<String16, int32_t> mCameraStatuses;
+ std::map<std::string, int32_t> mCameraTorchStatuses;
+ std::map<std::string, int32_t> mCameraStatuses;
mutable Mutex mLock;
mutable Condition mCondition;
mutable Condition mTorchCondition;
public:
virtual ~TestCameraServiceListener() {};
- virtual binder::Status onStatusChanged(int32_t status, const String16& cameraId) {
+ virtual binder::Status onStatusChanged(int32_t status, const std::string& cameraId) override {
Mutex::Autolock l(mLock);
mCameraStatuses[cameraId] = status;
mCondition.broadcast();
@@ -84,36 +85,37 @@
};
virtual binder::Status onPhysicalCameraStatusChanged(int32_t /*status*/,
- const String16& /*cameraId*/, const String16& /*physicalCameraId*/) {
+ const std::string& /*cameraId*/, const std::string& /*physicalCameraId*/) override {
// No op
return binder::Status::ok();
};
- virtual binder::Status onTorchStatusChanged(int32_t status, const String16& cameraId) {
+ virtual binder::Status onTorchStatusChanged(int32_t status,
+ const std::string& cameraId) override {
Mutex::Autolock l(mLock);
mCameraTorchStatuses[cameraId] = status;
mTorchCondition.broadcast();
return binder::Status::ok();
};
- virtual binder::Status onTorchStrengthLevelChanged(const String16& /*cameraId*/,
- int32_t /*torchStrength*/) {
+ virtual binder::Status onTorchStrengthLevelChanged(const std::string& /*cameraId*/,
+ int32_t /*torchStrength*/) override {
// No op
return binder::Status::ok();
}
- virtual binder::Status onCameraAccessPrioritiesChanged() {
+ virtual binder::Status onCameraAccessPrioritiesChanged() override {
// No op
return binder::Status::ok();
}
- virtual binder::Status onCameraOpened(const String16& /*cameraId*/,
- const String16& /*clientPackageName*/) {
+ virtual binder::Status onCameraOpened(const std::string& /*cameraId*/,
+ const std::string& /*clientPackageName*/) {
// No op
return binder::Status::ok();
}
- virtual binder::Status onCameraClosed(const String16& /*cameraId*/) {
+ virtual binder::Status onCameraClosed(const std::string& /*cameraId*/) override {
// No op
return binder::Status::ok();
}
@@ -136,7 +138,7 @@
bool waitForTorchState(int32_t status, int32_t cameraId) const {
Mutex::Autolock l(mLock);
- const auto& iter = mCameraTorchStatuses.find(String16(String8::format("%d", cameraId)));
+ const auto& iter = mCameraTorchStatuses.find(std::to_string(cameraId));
if (iter != mCameraTorchStatuses.end() && iter->second == status) {
return true;
}
@@ -147,7 +149,7 @@
return false;
}
const auto& iter =
- mCameraTorchStatuses.find(String16(String8::format("%d", cameraId)));
+ mCameraTorchStatuses.find(std::to_string(cameraId));
foundStatus = (iter != mCameraTorchStatuses.end() && iter->second == status);
}
return true;
@@ -155,14 +157,14 @@
int32_t getTorchStatus(int32_t cameraId) const {
Mutex::Autolock l(mLock);
- const auto& iter = mCameraTorchStatuses.find(String16(String8::format("%d", cameraId)));
+ const auto& iter = mCameraTorchStatuses.find(std::to_string(cameraId));
if (iter == mCameraTorchStatuses.end()) {
return hardware::ICameraServiceListener::TORCH_STATUS_UNKNOWN;
}
return iter->second;
};
- int32_t getStatus(const String16& cameraId) const {
+ int32_t getStatus(const std::string& cameraId) const {
Mutex::Autolock l(mLock);
const auto& iter = mCameraStatuses.find(cameraId);
if (iter == mCameraStatuses.end()) {
@@ -352,11 +354,11 @@
EXPECT_EQ(numCameras, static_cast<const int>(statuses.size()));
for (const auto &it : statuses) {
- listener->onStatusChanged(it.status, String16(it.cameraId));
+ listener->onStatusChanged(it.status, it.cameraId);
}
for (int32_t i = 0; i < numCameras; i++) {
- String16 cameraId = String16(String8::format("%d", i));
+ std::string cameraId = std::to_string(i);
bool isSupported = false;
res = service->supportsCameraApi(cameraId,
hardware::ICameraService::API_VERSION_2, &isSupported);
@@ -384,7 +386,7 @@
// Check connect binder calls
sp<TestCameraDeviceCallbacks> callbacks(new TestCameraDeviceCallbacks());
sp<hardware::camera2::ICameraDeviceUser> device;
- res = service->connectDevice(callbacks, cameraId, String16("meeeeeeeee!"),
+ res = service->connectDevice(callbacks, cameraId, "meeeeeeeee!",
{}, hardware::ICameraService::USE_CALLING_UID, /*oomScoreOffset*/ 0,
/*targetSdkVersion*/__ANDROID_API_FUTURE__,
/*overrideToPortrait*/false, /*out*/&device);
@@ -423,12 +425,12 @@
sp<TestCameraServiceListener> serviceListener;
std::pair<sp<TestCameraDeviceCallbacks>, sp<hardware::camera2::ICameraDeviceUser>>
- openNewDevice(const String16& deviceId) {
+ openNewDevice(const std::string& deviceId) {
sp<TestCameraDeviceCallbacks> callbacks(new TestCameraDeviceCallbacks());
sp<hardware::camera2::ICameraDeviceUser> device;
{
SCOPED_TRACE("openNewDevice");
- binder::Status res = service->connectDevice(callbacks, deviceId, String16("meeeeeeeee!"),
+ binder::Status res = service->connectDevice(callbacks, deviceId, "meeeeeeeee!",
{}, hardware::ICameraService::USE_CALLING_UID, /*oomScoreOffset*/ 0,
/*targetSdkVersion*/__ANDROID_API_FUTURE__,
/*overrideToPortrait*/false, /*out*/&device);
@@ -464,7 +466,7 @@
std::vector<hardware::CameraStatus> statuses;
service->addListener(serviceListener, &statuses);
for (const auto &it : statuses) {
- serviceListener->onStatusChanged(it.status, String16(it.cameraId));
+ serviceListener->onStatusChanged(it.status, it.cameraId);
}
service->getNumberOfCameras(hardware::ICameraService::CAMERA_TYPE_BACKWARD_COMPATIBLE,
&numCameras);
@@ -484,9 +486,8 @@
ASSERT_NOT_NULL(service);
EXPECT_TRUE(serviceListener->waitForNumCameras(numCameras));
for (int32_t i = 0; i < numCameras; i++) {
- String8 cameraId8 = String8::format("%d", i);
+ std::string cameraId = std::to_string(i);
// Make sure we're available, or skip device tests otherwise
- String16 cameraId(cameraId8);
int32_t s = serviceListener->getStatus(cameraId);
EXPECT_EQ(hardware::ICameraServiceListener::STATUS_PRESENT, s);
if (s != hardware::ICameraServiceListener::STATUS_PRESENT) {
@@ -513,7 +514,7 @@
sp<Surface> surface(new Surface(gbProducer, /*controlledByApp*/false));
- String16 noPhysicalId;
+ std::string noPhysicalId;
OutputConfiguration output(gbProducer, /*rotation*/0, noPhysicalId);
// Can we configure?
@@ -550,7 +551,7 @@
EXPECT_TRUE(res.isOk()) << res;
hardware::camera2::CaptureRequest request;
- request.mPhysicalCameraSettings.push_back({cameraId8.string(), requestTemplate});
+ request.mPhysicalCameraSettings.push_back({cameraId, requestTemplate});
request.mSurfaceList.add(surface);
request.mIsReprocess = false;
int64_t lastFrameNumber = 0;
@@ -577,7 +578,7 @@
/*out*/&requestTemplate);
EXPECT_TRUE(res.isOk()) << res;
hardware::camera2::CaptureRequest request2;
- request2.mPhysicalCameraSettings.push_back({cameraId8.string(), requestTemplate});
+ request2.mPhysicalCameraSettings.push_back({cameraId, requestTemplate});
request2.mSurfaceList.add(surface);
request2.mIsReprocess = false;
callbacks->clearStatus();
@@ -610,10 +611,10 @@
EXPECT_TRUE(res.isOk()) << res;
android::hardware::camera2::CaptureRequest request3;
android::hardware::camera2::CaptureRequest request4;
- request3.mPhysicalCameraSettings.push_back({cameraId8.string(), requestTemplate});
+ request3.mPhysicalCameraSettings.push_back({cameraId, requestTemplate});
request3.mSurfaceList.add(surface);
request3.mIsReprocess = false;
- request4.mPhysicalCameraSettings.push_back({cameraId8.string(), requestTemplate2});
+ request4.mPhysicalCameraSettings.push_back({cameraId, requestTemplate2});
request4.mSurfaceList.add(surface);
request4.mIsReprocess = false;
std::vector<hardware::camera2::CaptureRequest> requestList;
diff --git a/camera/tests/CameraCharacteristicsPermission.cpp b/camera/tests/CameraCharacteristicsPermission.cpp
index f2fa48c..1de7cb4 100644
--- a/camera/tests/CameraCharacteristicsPermission.cpp
+++ b/camera/tests/CameraCharacteristicsPermission.cpp
@@ -62,7 +62,7 @@
TEST_F(CameraCharacteristicsPermission, TestCameraPermission) {
for (int32_t cameraId = 0; cameraId < numCameras; cameraId++) {
- String16 cameraIdStr = String16(String8::format("%d", cameraId));
+ std::string cameraIdStr = std::to_string(cameraId);
bool isSupported = false;
auto rc = mCameraService->supportsCameraApi(cameraIdStr,
hardware::ICameraService::API_VERSION_2, &isSupported);
diff --git a/camera/tests/CameraZSLTests.cpp b/camera/tests/CameraZSLTests.cpp
index 6423709..3ae7659 100644
--- a/camera/tests/CameraZSLTests.cpp
+++ b/camera/tests/CameraZSLTests.cpp
@@ -27,6 +27,7 @@
#include <camera/CameraParameters.h>
#include <camera/CameraMetadata.h>
#include <camera/Camera.h>
+#include <camera/StringUtils.h>
#include <android/hardware/ICameraService.h>
using namespace android;
@@ -169,7 +170,7 @@
sp<SurfaceControl> surfaceControl;
sp<ICamera> cameraDevice;
- String16 cameraIdStr = String16(String8::format("%d", cameraId));
+ std::string cameraIdStr = std::to_string(cameraId);
bool isSupported = false;
rc = mCameraService->supportsCameraApi(cameraIdStr,
hardware::ICameraService::API_VERSION_1, &isSupported);
@@ -208,7 +209,7 @@
}
rc = mCameraService->connect(this, cameraId,
- String16("ZSLTest"), hardware::ICameraService::USE_CALLING_UID,
+ "ZSLTest", hardware::ICameraService::USE_CALLING_UID,
hardware::ICameraService::USE_CALLING_PID,
/*targetSdkVersion*/__ANDROID_API_FUTURE__,
/*overrideToPortrait*/false, /*forceSlowJpegMode*/false, &cameraDevice);
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp
index 967c316..4441121 100644
--- a/media/libstagefright/CameraSource.cpp
+++ b/media/libstagefright/CameraSource.cpp
@@ -32,6 +32,7 @@
#include <media/stagefright/MetaData.h>
#include <camera/Camera.h>
#include <camera/CameraParameters.h>
+#include <camera/StringUtils.h>
#include <gui/Surface.h>
#include <utils/String8.h>
#include <cutils/properties.h>
@@ -146,7 +147,7 @@
status_t CameraSource::isCameraAvailable(
const sp<hardware::ICamera>& camera, const sp<ICameraRecordingProxy>& proxy,
- int32_t cameraId, const String16& clientName, uid_t clientUid, pid_t clientPid) {
+ int32_t cameraId, const std::string& clientName, uid_t clientUid, pid_t clientPid) {
if (camera == 0) {
mCamera = Camera::connect(cameraId, clientName, clientUid, clientPid,
@@ -535,7 +536,7 @@
status_t err = OK;
if ((err = isCameraAvailable(camera, proxy, cameraId,
- clientName, clientUid, clientPid)) != OK) {
+ toStdString(clientName), clientUid, clientPid)) != OK) {
ALOGE("Camera connection could not be established.");
return err;
}
diff --git a/media/libstagefright/include/media/stagefright/CameraSource.h b/media/libstagefright/include/media/stagefright/CameraSource.h
index e8770ed..fcd17b9 100644
--- a/media/libstagefright/include/media/stagefright/CameraSource.h
+++ b/media/libstagefright/include/media/stagefright/CameraSource.h
@@ -259,7 +259,7 @@
status_t isCameraAvailable(const sp<hardware::ICamera>& camera,
const sp<ICameraRecordingProxy>& proxy,
int32_t cameraId,
- const String16& clientName,
+ const std::string& clientName,
uid_t clientUid,
pid_t clientPid);
diff --git a/services/camera/libcameraservice/CameraFlashlight.cpp b/services/camera/libcameraservice/CameraFlashlight.cpp
index ffd38be..d9d8a3d 100644
--- a/services/camera/libcameraservice/CameraFlashlight.cpp
+++ b/services/camera/libcameraservice/CameraFlashlight.cpp
@@ -47,14 +47,14 @@
CameraFlashlight::~CameraFlashlight() {
}
-status_t CameraFlashlight::createFlashlightControl(const String8& cameraId) {
+status_t CameraFlashlight::createFlashlightControl(const std::string& cameraId) {
ALOGV("%s: creating a flash light control for camera %s", __FUNCTION__,
- cameraId.string());
+ cameraId.c_str());
if (mFlashControl != NULL) {
return INVALID_OPERATION;
}
- if (mProviderManager->supportSetTorchMode(cameraId.string())) {
+ if (mProviderManager->supportSetTorchMode(cameraId)) {
mFlashControl = new ProviderFlashControl(mProviderManager);
} else {
ALOGE("Flashlight control not supported by this device!");
@@ -64,7 +64,7 @@
return OK;
}
-status_t CameraFlashlight::setTorchMode(const String8& cameraId, bool enabled) {
+status_t CameraFlashlight::setTorchMode(const std::string& cameraId, bool enabled) {
if (!mFlashlightMapInitialized) {
ALOGE("%s: findFlashUnits() must be called before this method.",
__FUNCTION__);
@@ -72,7 +72,7 @@
}
ALOGV("%s: set torch mode of camera %s to %d", __FUNCTION__,
- cameraId.string(), enabled);
+ cameraId.c_str(), enabled);
status_t res = OK;
Mutex::Autolock l(mLock);
@@ -87,7 +87,7 @@
// TODO: Move torch status checks and state updates behind this CameraFlashlight lock
// to avoid other similar race conditions.
ALOGE("%s: Camera device %s is in use, cannot set torch mode.",
- __FUNCTION__, cameraId.string());
+ __FUNCTION__, cameraId.c_str());
return -EBUSY;
}
@@ -117,7 +117,7 @@
return res;
}
-status_t CameraFlashlight::turnOnTorchWithStrengthLevel(const String8& cameraId,
+status_t CameraFlashlight::turnOnTorchWithStrengthLevel(const std::string& cameraId,
int32_t torchStrength) {
if (!mFlashlightMapInitialized) {
ALOGE("%s: findFlashUnits() must be called before this method.",
@@ -126,13 +126,13 @@
}
ALOGV("%s: set torch strength of camera %s to %d", __FUNCTION__,
- cameraId.string(), torchStrength);
+ cameraId.c_str(), torchStrength);
status_t res = OK;
Mutex::Autolock l(mLock);
if (mOpenedCameraIds.indexOf(cameraId) != NAME_NOT_FOUND) {
ALOGE("%s: Camera device %s is in use, cannot be turned ON.",
- __FUNCTION__, cameraId.string());
+ __FUNCTION__, cameraId.c_str());
return -EBUSY;
}
@@ -148,7 +148,7 @@
}
-status_t CameraFlashlight::getTorchStrengthLevel(const String8& cameraId,
+status_t CameraFlashlight::getTorchStrengthLevel(const std::string& cameraId,
int32_t* torchStrength) {
status_t res = OK;
if (!mFlashlightMapInitialized) {
@@ -174,13 +174,13 @@
Mutex::Autolock l(mLock);
status_t res;
- std::vector<String8> cameraIds;
+ std::vector<std::string> cameraIds;
std::vector<std::string> ids = mProviderManager->getCameraDeviceIds();
int numberOfCameras = static_cast<int>(ids.size());
cameraIds.resize(numberOfCameras);
// No module, must be provider
for (size_t i = 0; i < cameraIds.size(); i++) {
- cameraIds[i] = String8(ids[i].c_str());
+ cameraIds[i] = ids[i];
}
mFlashControl.clear();
@@ -195,17 +195,17 @@
res = createFlashlightControl(id);
if (res) {
ALOGE("%s: failed to create flash control for %s", __FUNCTION__,
- id.string());
+ id.c_str());
} else {
res = mFlashControl->hasFlashUnit(id, &hasFlash);
if (res == -EUSERS || res == -EBUSY) {
ALOGE("%s: failed to check if camera %s has a flash unit. Some "
"camera devices may be opened", __FUNCTION__,
- id.string());
+ id.c_str());
return res;
} else if (res) {
ALOGE("%s: failed to check if camera %s has a flash unit. %s"
- " (%d)", __FUNCTION__, id.string(), strerror(-res),
+ " (%d)", __FUNCTION__, id.c_str(), strerror(-res),
res);
}
@@ -218,12 +218,12 @@
return OK;
}
-bool CameraFlashlight::hasFlashUnit(const String8& cameraId) {
+bool CameraFlashlight::hasFlashUnit(const std::string& cameraId) {
Mutex::Autolock l(mLock);
return hasFlashUnitLocked(cameraId);
}
-bool CameraFlashlight::hasFlashUnitLocked(const String8& cameraId) {
+bool CameraFlashlight::hasFlashUnitLocked(const std::string& cameraId) {
if (!mFlashlightMapInitialized) {
ALOGE("%s: findFlashUnits() must be called before this method.",
__FUNCTION__);
@@ -234,23 +234,23 @@
if (index == NAME_NOT_FOUND) {
// Might be external camera
ALOGW("%s: camera %s not present when findFlashUnits() was called",
- __FUNCTION__, cameraId.string());
+ __FUNCTION__, cameraId.c_str());
return false;
}
return mHasFlashlightMap.valueAt(index);
}
-bool CameraFlashlight::isBackwardCompatibleMode(const String8& cameraId) {
+bool CameraFlashlight::isBackwardCompatibleMode(const std::string& cameraId) {
bool backwardCompatibleMode = false;
if (mProviderManager != nullptr &&
- !mProviderManager->supportSetTorchMode(cameraId.string())) {
+ !mProviderManager->supportSetTorchMode(cameraId)) {
backwardCompatibleMode = true;
}
return backwardCompatibleMode;
}
-status_t CameraFlashlight::prepareDeviceOpen(const String8& cameraId) {
+status_t CameraFlashlight::prepareDeviceOpen(const std::string& cameraId) {
ALOGV("%s: prepare for device open", __FUNCTION__);
Mutex::Autolock l(mLock);
@@ -270,10 +270,9 @@
std::vector<std::string> ids = mProviderManager->getCameraDeviceIds();
int numCameras = static_cast<int>(ids.size());
for (int i = 0; i < numCameras; i++) {
- String8 id8(ids[i].c_str());
- if (hasFlashUnitLocked(id8)) {
+ if (hasFlashUnitLocked(ids[i])) {
mCallbacks->onTorchStatusChanged(
- id8, TorchModeStatus::NOT_AVAILABLE);
+ ids[i], TorchModeStatus::NOT_AVAILABLE);
}
}
}
@@ -289,8 +288,8 @@
return OK;
}
-status_t CameraFlashlight::deviceClosed(const String8& cameraId) {
- ALOGV("%s: device %s is closed", __FUNCTION__, cameraId.string());
+status_t CameraFlashlight::deviceClosed(const std::string& cameraId) {
+ ALOGV("%s: device %s is closed", __FUNCTION__, cameraId.c_str());
Mutex::Autolock l(mLock);
if (!mFlashlightMapInitialized) {
@@ -302,7 +301,7 @@
ssize_t index = mOpenedCameraIds.indexOf(cameraId);
if (index == NAME_NOT_FOUND) {
ALOGE("%s: couldn't find camera %s in the opened list", __FUNCTION__,
- cameraId.string());
+ cameraId.c_str());
} else {
mOpenedCameraIds.removeAt(index);
}
@@ -316,10 +315,9 @@
std::vector<std::string> ids = mProviderManager->getCameraDeviceIds();
int numCameras = static_cast<int>(ids.size());
for (int i = 0; i < numCameras; i++) {
- String8 id8(ids[i].c_str());
- if (hasFlashUnitLocked(id8)) {
+ if (hasFlashUnitLocked(ids[i])) {
mCallbacks->onTorchStatusChanged(
- id8, TorchModeStatus::AVAILABLE_OFF);
+ ids[i], TorchModeStatus::AVAILABLE_OFF);
}
}
}
@@ -343,35 +341,35 @@
ProviderFlashControl::~ProviderFlashControl() {
}
-status_t ProviderFlashControl::hasFlashUnit(const String8& cameraId, bool *hasFlash) {
+status_t ProviderFlashControl::hasFlashUnit(const std::string& cameraId, bool *hasFlash) {
if (!hasFlash) {
return BAD_VALUE;
}
- *hasFlash = mProviderManager->hasFlashUnit(cameraId.string());
+ *hasFlash = mProviderManager->hasFlashUnit(cameraId);
return OK;
}
-status_t ProviderFlashControl::setTorchMode(const String8& cameraId, bool enabled) {
+status_t ProviderFlashControl::setTorchMode(const std::string& cameraId, bool enabled) {
ALOGV("%s: set camera %s torch mode to %d", __FUNCTION__,
- cameraId.string(), enabled);
+ cameraId.c_str(), enabled);
- return mProviderManager->setTorchMode(cameraId.string(), enabled);
+ return mProviderManager->setTorchMode(cameraId, enabled);
}
-status_t ProviderFlashControl::turnOnTorchWithStrengthLevel(const String8& cameraId,
+status_t ProviderFlashControl::turnOnTorchWithStrengthLevel(const std::string& cameraId,
int32_t torchStrength) {
ALOGV("%s: change torch strength level of camera %s to %d", __FUNCTION__,
- cameraId.string(), torchStrength);
+ cameraId.c_str(), torchStrength);
- return mProviderManager->turnOnTorchWithStrengthLevel(cameraId.string(), torchStrength);
+ return mProviderManager->turnOnTorchWithStrengthLevel(cameraId, torchStrength);
}
-status_t ProviderFlashControl::getTorchStrengthLevel(const String8& cameraId,
+status_t ProviderFlashControl::getTorchStrengthLevel(const std::string& cameraId,
int32_t* torchStrength) {
ALOGV("%s: get torch strength level of camera %s", __FUNCTION__,
- cameraId.string());
+ cameraId.c_str());
- return mProviderManager->getTorchStrengthLevel(cameraId.string(), torchStrength);
+ return mProviderManager->getTorchStrengthLevel(cameraId, torchStrength);
}
// ProviderFlashControl implementation ends
diff --git a/services/camera/libcameraservice/CameraFlashlight.h b/services/camera/libcameraservice/CameraFlashlight.h
index 1703ddc..733c928 100644
--- a/services/camera/libcameraservice/CameraFlashlight.h
+++ b/services/camera/libcameraservice/CameraFlashlight.h
@@ -17,6 +17,7 @@
#ifndef ANDROID_SERVERS_CAMERA_CAMERAFLASHLIGHT_H
#define ANDROID_SERVERS_CAMERA_CAMERAFLASHLIGHT_H
+#include <string>
#include <gui/GLConsumer.h>
#include <gui/Surface.h>
#include <utils/KeyedVector.h>
@@ -38,20 +39,21 @@
// cause the torch mode to be turned off in HAL v1 devices. If
// previously-on torch mode is turned off,
// callbacks.torch_mode_status_change() should be invoked.
- virtual status_t hasFlashUnit(const String8& cameraId,
+ virtual status_t hasFlashUnit(const std::string& cameraId,
bool *hasFlash) = 0;
// set the torch mode to on or off.
- virtual status_t setTorchMode(const String8& cameraId,
+ virtual status_t setTorchMode(const std::string& cameraId,
bool enabled) = 0;
// Change the brightness level of the torch. If the torch is OFF and
// torchStrength >= 1, then the torch will also be turned ON.
- virtual status_t turnOnTorchWithStrengthLevel(const String8& cameraId,
+ virtual status_t turnOnTorchWithStrengthLevel(const std::string& cameraId,
int32_t torchStrength) = 0;
// Returns the torch strength level.
- virtual status_t getTorchStrengthLevel(const String8& cameraId, int32_t* torchStrength) = 0;
+ virtual status_t getTorchStrengthLevel(const std::string& cameraId,
+ int32_t* torchStrength) = 0;
};
/**
@@ -70,49 +72,49 @@
// Whether a camera device has a flash unit. Before findFlashUnits() is
// called, this function always returns false.
- bool hasFlashUnit(const String8& cameraId);
+ bool hasFlashUnit(const std::string& cameraId);
// set the torch mode to on or off.
- status_t setTorchMode(const String8& cameraId, bool enabled);
+ status_t setTorchMode(const std::string& cameraId, bool enabled);
// Change the torch strength level of the flash unit in torch mode.
- status_t turnOnTorchWithStrengthLevel(const String8& cameraId, int32_t torchStrength);
+ status_t turnOnTorchWithStrengthLevel(const std::string& cameraId, int32_t torchStrength);
// Get the torch strength level
- status_t getTorchStrengthLevel(const String8& cameraId, int32_t* torchStrength);
+ status_t getTorchStrengthLevel(const std::string& cameraId, int32_t* torchStrength);
// Notify CameraFlashlight that camera service is going to open a camera
// device. CameraFlashlight will free the resources that may cause the
// camera open to fail. Camera service must call this function before
// opening a camera device.
- status_t prepareDeviceOpen(const String8& cameraId);
+ status_t prepareDeviceOpen(const std::string& cameraId);
// Notify CameraFlashlight that camera service has closed a camera
// device. CameraFlashlight may invoke callbacks for torch mode
// available depending on the implementation.
- status_t deviceClosed(const String8& cameraId);
+ status_t deviceClosed(const std::string& cameraId);
private:
// create flashlight control based on camera module API and camera
// device API versions.
- status_t createFlashlightControl(const String8& cameraId);
+ status_t createFlashlightControl(const std::string& cameraId);
// mLock should be locked.
- bool hasFlashUnitLocked(const String8& cameraId);
+ bool hasFlashUnitLocked(const std::string& cameraId);
// Check if flash control is in backward compatible mode (simulated torch API by
// opening cameras)
- bool isBackwardCompatibleMode(const String8& cameraId);
+ bool isBackwardCompatibleMode(const std::string& cameraId);
sp<FlashControlBase> mFlashControl;
sp<CameraProviderManager> mProviderManager;
CameraProviderManager::StatusListener* mCallbacks;
- SortedVector<String8> mOpenedCameraIds;
+ SortedVector<std::string> mOpenedCameraIds;
// camera id -> if it has a flash unit
- KeyedVector<String8, bool> mHasFlashlightMap;
+ KeyedVector<std::string, bool> mHasFlashlightMap;
bool mFlashlightMapInitialized;
Mutex mLock; // protect CameraFlashlight API
@@ -127,10 +129,10 @@
virtual ~ProviderFlashControl();
// FlashControlBase
- status_t hasFlashUnit(const String8& cameraId, bool *hasFlash);
- status_t setTorchMode(const String8& cameraId, bool enabled);
- status_t turnOnTorchWithStrengthLevel(const String8& cameraId, int32_t torchStrength);
- status_t getTorchStrengthLevel(const String8& cameraId, int32_t* torchStrength);
+ status_t hasFlashUnit(const std::string& cameraId, bool *hasFlash);
+ status_t setTorchMode(const std::string& cameraId, bool enabled);
+ status_t turnOnTorchWithStrengthLevel(const std::string& cameraId, int32_t torchStrength);
+ status_t getTorchStrengthLevel(const std::string& cameraId, int32_t* torchStrength);
private:
sp<CameraProviderManager> mProviderManager;
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index 870e953..764296e 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -24,6 +24,8 @@
#include <cstdlib>
#include <cstring>
#include <ctime>
+#include <iostream>
+#include <sstream>
#include <string>
#include <sys/types.h>
#include <inttypes.h>
@@ -35,7 +37,6 @@
#include <android-base/macros.h>
#include <android-base/parseint.h>
-#include <android-base/stringprintf.h>
#include <binder/ActivityManager.h>
#include <binder/AppOpsManager.h>
#include <binder/IPCThreadState.h>
@@ -67,6 +68,7 @@
#include <private/android_filesystem_config.h>
#include <system/camera_vendor_tags.h>
#include <system/camera_metadata.h>
+#include <camera/StringUtils.h>
#include <system/camera.h>
@@ -84,7 +86,6 @@
namespace android {
-using base::StringPrintf;
using binder::Status;
using namespace camera3;
using frameworks::cameraservice::service::V2_0::implementation::HidlCameraService;
@@ -108,39 +109,29 @@
android_atomic_write(level, &gLogLevel);
}
-// Convenience methods for constructing binder::Status objects for error returns
-
-#define STATUS_ERROR(errorCode, errorString) \
- binder::Status::fromServiceSpecificError(errorCode, \
- String8::format("%s:%d: %s", __FUNCTION__, __LINE__, errorString))
-
-#define STATUS_ERROR_FMT(errorCode, errorString, ...) \
- binder::Status::fromServiceSpecificError(errorCode, \
- String8::format("%s:%d: " errorString, __FUNCTION__, __LINE__, \
- __VA_ARGS__))
-
// ----------------------------------------------------------------------------
-static const String16 sDumpPermission("android.permission.DUMP");
-static const String16 sManageCameraPermission("android.permission.MANAGE_CAMERA");
-static const String16 sCameraPermission("android.permission.CAMERA");
-static const String16 sSystemCameraPermission("android.permission.SYSTEM_CAMERA");
-static const String16
+static const std::string sDumpPermission("android.permission.DUMP");
+static const std::string sManageCameraPermission("android.permission.MANAGE_CAMERA");
+static const std::string sCameraPermission("android.permission.CAMERA");
+static const std::string sSystemCameraPermission("android.permission.SYSTEM_CAMERA");
+static const std::string
sCameraSendSystemEventsPermission("android.permission.CAMERA_SEND_SYSTEM_EVENTS");
-static const String16 sCameraOpenCloseListenerPermission(
+static const std::string sCameraOpenCloseListenerPermission(
"android.permission.CAMERA_OPEN_CLOSE_LISTENER");
-static const String16
+static const std::string
sCameraInjectExternalCameraPermission("android.permission.CAMERA_INJECT_EXTERNAL_CAMERA");
const char *sFileName = "lastOpenSessionDumpFile";
static constexpr int32_t kSystemNativeClientScore = resource_policy::PERCEPTIBLE_APP_ADJ;
static constexpr int32_t kSystemNativeClientState =
ActivityManager::PROCESS_STATE_PERSISTENT_UI;
+static const std::string kServiceName("cameraserver");
-const String8 CameraService::kOfflineDevice("offline-");
-const String16 CameraService::kWatchAllClientsFlag("all");
+const std::string CameraService::kOfflineDevice("offline-");
+const std::string CameraService::kWatchAllClientsFlag("all");
// Set to keep track of logged service error events.
-static std::set<String8> sServiceErrorEventSet;
+static std::set<std::string> sServiceErrorEventSet;
CameraService::CameraService() :
mEventLog(DEFAULT_EVENT_LOG_LENGTH),
@@ -213,8 +204,8 @@
if (res != OK) {
ALOGE("%s: Unable to initialize camera provider manager: %s (%d)",
__FUNCTION__, strerror(-res), res);
- logServiceError(String8::format("Unable to initialize camera provider manager"),
- ERROR_DISCONNECTED);
+ logServiceError("Unable to initialize camera provider manager",
+ ERROR_DISCONNECTED);
return res;
}
}
@@ -239,14 +230,12 @@
for (auto& cameraId : deviceIds) {
- String8 id8 = String8(cameraId.c_str());
- if (getCameraState(id8) == nullptr) {
- onDeviceStatusChanged(id8, CameraDeviceStatus::PRESENT);
+ if (getCameraState(cameraId) == nullptr) {
+ onDeviceStatusChanged(cameraId, CameraDeviceStatus::PRESENT);
}
if (unavailPhysicalIds.count(cameraId) > 0) {
for (const auto& physicalId : unavailPhysicalIds[cameraId]) {
- String8 physicalId8 = String8(physicalId.c_str());
- onDeviceStatusChanged(id8, physicalId8, CameraDeviceStatus::NOT_PRESENT);
+ onDeviceStatusChanged(cameraId, physicalId, CameraDeviceStatus::NOT_PRESENT);
}
}
}
@@ -266,7 +255,7 @@
return OK;
}
-void CameraService::broadcastTorchModeStatus(const String8& cameraId, TorchModeStatus status,
+void CameraService::broadcastTorchModeStatus(const std::string& cameraId, TorchModeStatus status,
SystemCameraKind systemCameraKind) {
Mutex::Autolock lock(mStatusListenerLock);
for (auto& i : mListenerList) {
@@ -276,7 +265,7 @@
cameraId.c_str());
continue;
}
- i->getListener()->onTorchStatusChanged(mapToInterface(status), String16{cameraId});
+ i->getListener()->onTorchStatusChanged(mapToInterface(status), cameraId);
}
}
@@ -296,7 +285,7 @@
mNormalDeviceIdsWithoutSystemCamera.clear();
for (auto &deviceId : normalDeviceIds) {
SystemCameraKind deviceKind = SystemCameraKind::PUBLIC;
- if (getSystemCameraKind(String8(deviceId.c_str()), &deviceKind) != OK) {
+ if (getSystemCameraKind(deviceId, &deviceKind) != OK) {
ALOGE("%s: Invalid camera id %s, skipping", __FUNCTION__, deviceId.c_str());
continue;
}
@@ -311,14 +300,15 @@
mNormalDeviceIdsWithoutSystemCamera.size());
}
-status_t CameraService::getSystemCameraKind(const String8& cameraId, SystemCameraKind *kind) const {
+status_t CameraService::getSystemCameraKind(const std::string& cameraId,
+ SystemCameraKind *kind) const {
auto state = getCameraState(cameraId);
if (state != nullptr) {
*kind = state->getSystemCameraKind();
return OK;
}
// Hidden physical camera ids won't have CameraState
- return mCameraProviderManager->getSystemCameraKind(cameraId.c_str(), kind);
+ return mCameraProviderManager->getSystemCameraKind(cameraId, kind);
}
void CameraService::updateCameraNumAndIds() {
@@ -341,9 +331,8 @@
for (const auto& cameraId : mNormalDeviceIdsWithoutSystemCamera) {
int facing = -1;
int orientation = 0;
- String8 cameraId8(cameraId.c_str());
int portraitRotation;
- getDeviceVersion(cameraId8, /*overrideToPortrait*/false, /*out*/&portraitRotation,
+ getDeviceVersion(cameraId, /*overrideToPortrait*/false, /*out*/&portraitRotation,
/*out*/&facing, /*out*/&orientation);
if (facing == -1) {
ALOGE("%s: Unable to get camera device \"%s\" facing", __FUNCTION__, cameraId.c_str());
@@ -375,8 +364,7 @@
}
}
-void CameraService::addStates(const String8 id) {
- std::string cameraId(id.c_str());
+void CameraService::addStates(const std::string& cameraId) {
CameraResourceCost cost;
status_t res = mCameraProviderManager->getResourceCost(cameraId, &cost);
if (res != OK) {
@@ -391,61 +379,61 @@
}
std::vector<std::string> physicalCameraIds;
mCameraProviderManager->isLogicalCamera(cameraId, &physicalCameraIds);
- std::set<String8> conflicting;
+ std::set<std::string> conflicting;
for (size_t i = 0; i < cost.conflictingDevices.size(); i++) {
- conflicting.emplace(String8(cost.conflictingDevices[i].c_str()));
+ conflicting.emplace(cost.conflictingDevices[i]);
}
{
Mutex::Autolock lock(mCameraStatesLock);
- mCameraStates.emplace(id, std::make_shared<CameraState>(id, cost.resourceCost,
+ mCameraStates.emplace(cameraId, std::make_shared<CameraState>(cameraId, cost.resourceCost,
conflicting, deviceKind, physicalCameraIds));
}
- if (mFlashlight->hasFlashUnit(id)) {
+ if (mFlashlight->hasFlashUnit(cameraId)) {
Mutex::Autolock al(mTorchStatusMutex);
- mTorchStatusMap.add(id, TorchModeStatus::AVAILABLE_OFF);
+ mTorchStatusMap.add(cameraId, TorchModeStatus::AVAILABLE_OFF);
- broadcastTorchModeStatus(id, TorchModeStatus::AVAILABLE_OFF, deviceKind);
+ broadcastTorchModeStatus(cameraId, TorchModeStatus::AVAILABLE_OFF, deviceKind);
}
updateCameraNumAndIds();
- logDeviceAdded(id, "Device added");
+ logDeviceAdded(cameraId, "Device added");
}
-void CameraService::removeStates(const String8 id) {
+void CameraService::removeStates(const std::string& cameraId) {
updateCameraNumAndIds();
- if (mFlashlight->hasFlashUnit(id)) {
+ if (mFlashlight->hasFlashUnit(cameraId)) {
Mutex::Autolock al(mTorchStatusMutex);
- mTorchStatusMap.removeItem(id);
+ mTorchStatusMap.removeItem(cameraId);
}
{
Mutex::Autolock lock(mCameraStatesLock);
- mCameraStates.erase(id);
+ mCameraStates.erase(cameraId);
}
}
-void CameraService::onDeviceStatusChanged(const String8& id,
+void CameraService::onDeviceStatusChanged(const std::string& cameraId,
CameraDeviceStatus newHalStatus) {
ALOGI("%s: Status changed for cameraId=%s, newStatus=%d", __FUNCTION__,
- id.string(), newHalStatus);
+ cameraId.c_str(), newHalStatus);
StatusInternal newStatus = mapToInternal(newHalStatus);
- std::shared_ptr<CameraState> state = getCameraState(id);
+ std::shared_ptr<CameraState> state = getCameraState(cameraId);
if (state == nullptr) {
if (newStatus == StatusInternal::PRESENT) {
ALOGI("%s: Unknown camera ID %s, a new camera is added",
- __FUNCTION__, id.string());
+ __FUNCTION__, cameraId.c_str());
// First add as absent to make sure clients are notified below
- addStates(id);
+ addStates(cameraId);
- updateStatus(newStatus, id);
+ updateStatus(newStatus, cameraId);
} else {
- ALOGE("%s: Bad camera ID %s", __FUNCTION__, id.string());
+ ALOGE("%s: Bad camera ID %s", __FUNCTION__, cameraId.c_str());
}
return;
}
@@ -458,12 +446,12 @@
}
if (newStatus == StatusInternal::NOT_PRESENT) {
- logDeviceRemoved(id, String8::format("Device status changed from %d to %d", oldStatus,
+ logDeviceRemoved(cameraId, fmt::sprintf("Device status changed from %d to %d", oldStatus,
newStatus));
// Set the device status to NOT_PRESENT, clients will no longer be able to connect
// to this device until the status changes
- updateStatus(StatusInternal::NOT_PRESENT, id);
+ updateStatus(StatusInternal::NOT_PRESENT, cameraId);
sp<BasicClient> clientToDisconnectOnline, clientToDisconnectOffline;
{
@@ -475,28 +463,28 @@
// Remove online as well as offline client from the list of active clients,
// if they are present
- clientToDisconnectOnline = removeClientLocked(id);
- clientToDisconnectOffline = removeClientLocked(kOfflineDevice + id);
+ clientToDisconnectOnline = removeClientLocked(cameraId);
+ clientToDisconnectOffline = removeClientLocked(kOfflineDevice + cameraId);
}
- disconnectClient(id, clientToDisconnectOnline);
- disconnectClient(kOfflineDevice + id, clientToDisconnectOffline);
+ disconnectClient(cameraId, clientToDisconnectOnline);
+ disconnectClient(kOfflineDevice + cameraId, clientToDisconnectOffline);
- removeStates(id);
+ removeStates(cameraId);
} else {
if (oldStatus == StatusInternal::NOT_PRESENT) {
- logDeviceAdded(id, String8::format("Device status changed from %d to %d", oldStatus,
+ logDeviceAdded(cameraId, fmt::sprintf("Device status changed from %d to %d", oldStatus,
newStatus));
}
- updateStatus(newStatus, id);
+ updateStatus(newStatus, cameraId);
}
}
-void CameraService::onDeviceStatusChanged(const String8& id,
- const String8& physicalId,
+void CameraService::onDeviceStatusChanged(const std::string& id,
+ const std::string& physicalId,
CameraDeviceStatus newHalStatus) {
ALOGI("%s: Status changed for cameraId=%s, physicalCameraId=%s, newStatus=%d",
- __FUNCTION__, id.string(), physicalId.string(), newHalStatus);
+ __FUNCTION__, id.c_str(), physicalId.c_str(), newHalStatus);
StatusInternal newStatus = mapToInternal(newHalStatus);
@@ -504,7 +492,7 @@
if (state == nullptr) {
ALOGE("%s: Physical camera id %s status change on a non-present ID %s",
- __FUNCTION__, physicalId.string(), id.string());
+ __FUNCTION__, physicalId.c_str(), id.c_str());
return;
}
@@ -512,7 +500,7 @@
if (logicalCameraStatus != StatusInternal::PRESENT &&
logicalCameraStatus != StatusInternal::NOT_AVAILABLE) {
ALOGE("%s: Physical camera id %s status %d change for an invalid logical camera state %d",
- __FUNCTION__, physicalId.string(), newHalStatus, logicalCameraStatus);
+ __FUNCTION__, physicalId.c_str(), newHalStatus, logicalCameraStatus);
return;
}
@@ -524,21 +512,18 @@
}
if (updated) {
- String8 idCombo = id + " : " + physicalId;
+ std::string idCombo = id + " : " + physicalId;
if (newStatus == StatusInternal::PRESENT) {
- logDeviceAdded(idCombo,
- String8::format("Device status changed to %d", newStatus));
+ logDeviceAdded(idCombo, fmt::sprintf("Device status changed to %d", newStatus));
} else {
- logDeviceRemoved(idCombo,
- String8::format("Device status changed to %d", newStatus));
+ logDeviceRemoved(idCombo, fmt::sprintf("Device status changed to %d", newStatus));
}
// Avoid calling getSystemCameraKind() with mStatusListenerLock held (b/141756275)
SystemCameraKind deviceKind = SystemCameraKind::PUBLIC;
if (getSystemCameraKind(id, &deviceKind) != OK) {
- ALOGE("%s: Invalid camera id %s, skipping", __FUNCTION__, id.string());
+ ALOGE("%s: Invalid camera id %s, skipping", __FUNCTION__, id.c_str());
return;
}
- String16 id16(id), physicalId16(physicalId);
Mutex::Autolock lock(mStatusListenerLock);
for (auto& listener : mListenerList) {
if (shouldSkipStatusUpdates(deviceKind, listener->isVendorListener(),
@@ -548,15 +533,15 @@
continue;
}
listener->getListener()->onPhysicalCameraStatusChanged(mapToInterface(newStatus),
- id16, physicalId16);
+ id, physicalId);
}
}
}
-void CameraService::disconnectClient(const String8& id, sp<BasicClient> clientToDisconnect) {
+void CameraService::disconnectClient(const std::string& id, sp<BasicClient> clientToDisconnect) {
if (clientToDisconnect.get() != nullptr) {
ALOGI("%s: Client for camera ID %s evicted due to device status change from HAL",
- __FUNCTION__, id.string());
+ __FUNCTION__, id.c_str());
// Notify the client of disconnection
clientToDisconnect->notifyError(
hardware::camera2::ICameraDeviceCallbacks::ERROR_CAMERA_DISCONNECTED,
@@ -565,13 +550,13 @@
}
}
-void CameraService::onTorchStatusChanged(const String8& cameraId,
+void CameraService::onTorchStatusChanged(const std::string& cameraId,
TorchModeStatus newStatus) {
SystemCameraKind systemCameraKind = SystemCameraKind::PUBLIC;
status_t res = getSystemCameraKind(cameraId, &systemCameraKind);
if (res != OK) {
ALOGE("%s: Could not get system camera kind for camera id %s", __FUNCTION__,
- cameraId.string());
+ cameraId.c_str());
return;
}
Mutex::Autolock al(mTorchStatusMutex);
@@ -579,31 +564,30 @@
}
-void CameraService::onTorchStatusChanged(const String8& cameraId,
+void CameraService::onTorchStatusChanged(const std::string& cameraId,
TorchModeStatus newStatus, SystemCameraKind systemCameraKind) {
Mutex::Autolock al(mTorchStatusMutex);
onTorchStatusChangedLocked(cameraId, newStatus, systemCameraKind);
}
-void CameraService::broadcastTorchStrengthLevel(const String8& cameraId,
+void CameraService::broadcastTorchStrengthLevel(const std::string& cameraId,
int32_t newStrengthLevel) {
Mutex::Autolock lock(mStatusListenerLock);
for (auto& i : mListenerList) {
- i->getListener()->onTorchStrengthLevelChanged(String16{cameraId},
- newStrengthLevel);
+ i->getListener()->onTorchStrengthLevelChanged(cameraId, newStrengthLevel);
}
}
-void CameraService::onTorchStatusChangedLocked(const String8& cameraId,
+void CameraService::onTorchStatusChangedLocked(const std::string& cameraId,
TorchModeStatus newStatus, SystemCameraKind systemCameraKind) {
ALOGI("%s: Torch status changed for cameraId=%s, newStatus=%d",
- __FUNCTION__, cameraId.string(), newStatus);
+ __FUNCTION__, cameraId.c_str(), newStatus);
TorchModeStatus status;
status_t res = getTorchStatusLocked(cameraId, &status);
if (res) {
ALOGE("%s: cannot get torch status of camera %s: %s (%d)",
- __FUNCTION__, cameraId.string(), strerror(-res), res);
+ __FUNCTION__, cameraId.c_str(), strerror(-res), res);
return;
}
if (status == newStatus) {
@@ -628,18 +612,18 @@
if (oldUid != newUid) {
// If the UID has changed, log the status and update current UID in mTorchUidMap
if (status == TorchModeStatus::AVAILABLE_ON) {
- notifier.noteFlashlightOff(cameraId, oldUid);
+ notifier.noteFlashlightOff(toString8(cameraId), oldUid);
}
if (newStatus == TorchModeStatus::AVAILABLE_ON) {
- notifier.noteFlashlightOn(cameraId, newUid);
+ notifier.noteFlashlightOn(toString8(cameraId), newUid);
}
iter->second.second = newUid;
} else {
// If the UID has not changed, log the status
if (newStatus == TorchModeStatus::AVAILABLE_ON) {
- notifier.noteFlashlightOn(cameraId, oldUid);
+ notifier.noteFlashlightOn(toString8(cameraId), oldUid);
} else {
- notifier.noteFlashlightOff(cameraId, oldUid);
+ notifier.noteFlashlightOff(toString8(cameraId), oldUid);
}
}
}
@@ -649,9 +633,9 @@
static bool hasPermissionsForSystemCamera(int callingPid, int callingUid,
bool logPermissionFailure = false) {
- return checkPermission(sSystemCameraPermission, callingPid, callingUid,
+ return checkPermission(toString16(sSystemCameraPermission), callingPid, callingUid,
logPermissionFailure) &&
- checkPermission(sCameraPermission, callingPid, callingUid);
+ checkPermission(toString16(sCameraPermission), callingPid, callingUid);
}
Status CameraService::getNumberOfCameras(int32_t type, int32_t* numCameras) {
@@ -689,13 +673,13 @@
ATRACE_CALL();
Mutex::Autolock l(mServiceLock);
std::string cameraIdStr = cameraIdIntToStrLocked(cameraId);
- if (shouldRejectSystemCameraConnection(String8(cameraIdStr.c_str()))) {
+ if (shouldRejectSystemCameraConnection(cameraIdStr)) {
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION, "Unable to retrieve camera"
"characteristics for system only device %s: ", cameraIdStr.c_str());
}
if (!mInitialized) {
- logServiceError(String8::format("Camera subsystem is not available"),ERROR_DISCONNECTED);
+ logServiceError("Camera subsystem is not available", ERROR_DISCONNECTED);
return STATUS_ERROR(ERROR_DISCONNECTED,
"Camera subsystem is not available");
}
@@ -714,13 +698,13 @@
Status ret = Status::ok();
int portraitRotation;
status_t err = mCameraProviderManager->getCameraInfo(
- cameraIdStr.c_str(), overrideToPortrait, &portraitRotation, cameraInfo);
+ cameraIdStr, overrideToPortrait, &portraitRotation, cameraInfo);
if (err != OK) {
ret = STATUS_ERROR_FMT(ERROR_INVALID_OPERATION,
"Error retrieving camera info from device %d: %s (%d)", cameraId,
strerror(-err), err);
- logServiceError(String8::format("Error retrieving camera info from device %d",cameraId),
- ERROR_INVALID_OPERATION);
+ logServiceError(std::string("Error retrieving camera info from device ")
+ + std::to_string(cameraId), ERROR_INVALID_OPERATION);
}
return ret;
@@ -730,7 +714,7 @@
const std::vector<std::string> *deviceIds = &mNormalDeviceIdsWithoutSystemCamera;
auto callingPid = CameraThreadState::getCallingPid();
auto callingUid = CameraThreadState::getCallingUid();
- if (checkPermission(sSystemCameraPermission, callingPid, callingUid,
+ if (checkPermission(toString16(sSystemCameraPermission), callingPid, callingUid,
/*logPermissionFailure*/false) || getpid() == callingPid) {
deviceIds = &mNormalDeviceIds;
}
@@ -743,12 +727,12 @@
return (*deviceIds)[cameraIdInt];
}
-String8 CameraService::cameraIdIntToStr(int cameraIdInt) {
+std::string CameraService::cameraIdIntToStr(int cameraIdInt) {
Mutex::Autolock lock(mServiceLock);
- return String8(cameraIdIntToStrLocked(cameraIdInt).c_str());
+ return cameraIdIntToStrLocked(cameraIdInt);
}
-Status CameraService::getCameraCharacteristics(const String16& cameraId,
+Status CameraService::getCameraCharacteristics(const std::string& cameraId,
int targetSdkVersion, bool overrideToPortrait, CameraMetadata* cameraInfo) {
ATRACE_CALL();
if (!cameraInfo) {
@@ -758,43 +742,41 @@
if (!mInitialized) {
ALOGE("%s: Camera HAL couldn't be initialized", __FUNCTION__);
- logServiceError(String8::format("Camera subsystem is not available"),ERROR_DISCONNECTED);
+ logServiceError("Camera subsystem is not available", ERROR_DISCONNECTED);
return STATUS_ERROR(ERROR_DISCONNECTED,
"Camera subsystem is not available");;
}
- if (shouldRejectSystemCameraConnection(String8(cameraId))) {
+ if (shouldRejectSystemCameraConnection(cameraId)) {
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION, "Unable to retrieve camera"
- "characteristics for system only device %s: ", String8(cameraId).string());
+ "characteristics for system only device %s: ", cameraId.c_str());
}
Status ret{};
-
- std::string cameraIdStr = String8(cameraId).string();
bool overrideForPerfClass =
SessionConfigurationUtils::targetPerfClassPrimaryCamera(mPerfClassPrimaryCameraIds,
- cameraIdStr, targetSdkVersion);
+ cameraId, targetSdkVersion);
status_t res = mCameraProviderManager->getCameraCharacteristics(
- cameraIdStr, overrideForPerfClass, cameraInfo, overrideToPortrait);
+ cameraId, overrideForPerfClass, cameraInfo, overrideToPortrait);
if (res != OK) {
if (res == NAME_NOT_FOUND) {
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT, "Unable to retrieve camera "
- "characteristics for unknown device %s: %s (%d)", String8(cameraId).string(),
+ "characteristics for unknown device %s: %s (%d)", cameraId.c_str(),
strerror(-res), res);
} else {
- logServiceError(String8::format("Unable to retrieve camera characteristics for "
- "device %s.", String8(cameraId).string()),ERROR_INVALID_OPERATION);
+ logServiceError(fmt::sprintf("Unable to retrieve camera characteristics for device %s.",
+ cameraId.c_str()), ERROR_INVALID_OPERATION);
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION, "Unable to retrieve camera "
- "characteristics for device %s: %s (%d)", String8(cameraId).string(),
+ "characteristics for device %s: %s (%d)", cameraId.c_str(),
strerror(-res), res);
}
}
SystemCameraKind deviceKind = SystemCameraKind::PUBLIC;
- if (getSystemCameraKind(String8(cameraId), &deviceKind) != OK) {
- ALOGE("%s: Invalid camera id %s, skipping", __FUNCTION__, String8(cameraId).string());
+ if (getSystemCameraKind(cameraId, &deviceKind) != OK) {
+ ALOGE("%s: Invalid camera id %s, skipping", __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION, "Unable to retrieve camera kind "
- "for device %s", String8(cameraId).string());
+ "for device %s", cameraId.c_str());
}
int callingPid = CameraThreadState::getCallingPid();
int callingUid = CameraThreadState::getCallingUid();
@@ -804,15 +786,15 @@
// it would've already been checked in shouldRejectSystemCameraConnection.
if ((callingPid != getpid()) &&
(deviceKind != SystemCameraKind::SYSTEM_ONLY_CAMERA) &&
- !checkPermission(sCameraPermission, callingPid, callingUid)) {
+ !checkPermission(toString16(sCameraPermission), callingPid, callingUid)) {
res = cameraInfo->removePermissionEntries(
- mCameraProviderManager->getProviderTagIdLocked(String8(cameraId).string()),
+ mCameraProviderManager->getProviderTagIdLocked(cameraId),
&tagsRemoved);
if (res != OK) {
cameraInfo->clear();
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION, "Failed to remove camera"
" characteristics needing camera permission for device %s: %s (%d)",
- String8(cameraId).string(), strerror(-res), res);
+ cameraId.c_str(), strerror(-res), res);
}
}
@@ -822,7 +804,7 @@
if (res != OK) {
cameraInfo->clear();
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION, "Failed to insert camera "
- "keys needing permission for device %s: %s (%d)", String8(cameraId).string(),
+ "keys needing permission for device %s: %s (%d)", cameraId.c_str(),
strerror(-res), res);
}
}
@@ -830,7 +812,7 @@
return ret;
}
-Status CameraService::getTorchStrengthLevel(const String16& cameraId,
+Status CameraService::getTorchStrengthLevel(const std::string& cameraId,
int32_t* torchStrength) {
ATRACE_CALL();
Mutex::Autolock l(mServiceLock);
@@ -844,22 +826,21 @@
return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, "Strength level should not be null.");
}
- status_t res = mCameraProviderManager->getTorchStrengthLevel(String8(cameraId).string(),
- torchStrength);
+ status_t res = mCameraProviderManager->getTorchStrengthLevel(cameraId, torchStrength);
if (res != OK) {
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION, "Unable to retrieve torch "
- "strength level for device %s: %s (%d)", String8(cameraId).string(),
+ "strength level for device %s: %s (%d)", cameraId.c_str(),
strerror(-res), res);
}
ALOGI("%s: Torch strength level is: %d", __FUNCTION__, *torchStrength);
return Status::ok();
}
-String8 CameraService::getFormattedCurrentTime() {
+std::string CameraService::getFormattedCurrentTime() {
time_t now = time(nullptr);
char formattedTime[64];
strftime(formattedTime, sizeof(formattedTime), "%m-%d %H:%M:%S", localtime(&now));
- return String8(formattedTime);
+ return std::string(formattedTime);
}
Status CameraService::getCameraVendorTagDescriptor(
@@ -897,7 +878,7 @@
BasicClient::BasicClient::sCameraService = nullptr;
}
-std::pair<int, IPCTransport> CameraService::getDeviceVersion(const String8& cameraId,
+std::pair<int, IPCTransport> CameraService::getDeviceVersion(const std::string& cameraId,
bool overrideToPortrait, int* portraitRotation, int* facing, int* orientation) {
ATRACE_CALL();
@@ -906,18 +887,17 @@
status_t res;
hardware::hidl_version maxVersion{0,0};
IPCTransport transport = IPCTransport::INVALID;
- res = mCameraProviderManager->getHighestSupportedVersion(cameraId.string(),
- &maxVersion, &transport);
+ res = mCameraProviderManager->getHighestSupportedVersion(cameraId, &maxVersion, &transport);
if (res != OK || transport == IPCTransport::INVALID) {
ALOGE("%s: Unable to get highest supported version for camera id %s", __FUNCTION__,
- cameraId.string());
+ cameraId.c_str());
return std::make_pair(-1, IPCTransport::INVALID) ;
}
deviceVersion = HARDWARE_DEVICE_API_VERSION(maxVersion.get_major(), maxVersion.get_minor());
hardware::CameraInfo info;
if (facing) {
- res = mCameraProviderManager->getCameraInfo(cameraId.string(), overrideToPortrait,
+ res = mCameraProviderManager->getCameraInfo(cameraId, overrideToPortrait,
portraitRotation, &info);
if (res != OK) {
return std::make_pair(-1, IPCTransport::INVALID);
@@ -949,8 +929,8 @@
}
Status CameraService::makeClient(const sp<CameraService>& cameraService,
- const sp<IInterface>& cameraCb, const String16& packageName, bool systemNativeClient,
- const std::optional<String16>& featureId, const String8& cameraId,
+ const sp<IInterface>& cameraCb, const std::string& packageName, bool systemNativeClient,
+ const std::optional<std::string>& featureId, const std::string& cameraId,
int api1CameraId, int facing, int sensorOrientation, int clientPid, uid_t clientUid,
int servicePid, std::pair<int, IPCTransport> deviceVersionAndTransport,
apiLevel effectiveApiLevel, bool overrideForPerfClass, bool overrideToPortrait,
@@ -964,7 +944,7 @@
ALOGE("Camera using old HAL version: %d", deviceVersion);
return STATUS_ERROR_FMT(ERROR_DEPRECATED_HAL,
"Camera device \"%s\" HAL version %d no longer supported",
- cameraId.string(), deviceVersion);
+ cameraId.c_str(), deviceVersion);
break;
case CAMERA_DEVICE_API_VERSION_3_0:
case CAMERA_DEVICE_API_VERSION_3_1:
@@ -980,7 +960,7 @@
ALOGE("Unknown camera device HAL version: %d", deviceVersion);
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION,
"Camera device \"%s\" has unknown HAL version %d",
- cameraId.string(), deviceVersion);
+ cameraId.c_str(), deviceVersion);
}
}
if (effectiveApiLevel == API_1) { // Camera1 API route
@@ -1001,18 +981,18 @@
return Status::ok();
}
-String8 CameraService::toString(std::set<userid_t> intSet) {
- String8 s("");
+std::string CameraService::toString(std::set<userid_t> intSet) {
+ std::ostringstream s;
bool first = true;
for (userid_t i : intSet) {
if (first) {
- s.appendFormat("%d", i);
+ s << std::to_string(i);
first = false;
} else {
- s.appendFormat(", %d", i);
+ s << ", " << std::to_string(i);
}
}
- return s;
+ return std::move(s.str());
}
int32_t CameraService::mapToInterface(TorchModeStatus status) {
@@ -1078,13 +1058,12 @@
Status CameraService::initializeShimMetadata(int cameraId) {
int uid = CameraThreadState::getCallingUid();
- String16 internalPackageName("cameraserver");
- String8 id = String8::format("%d", cameraId);
+ std::string cameraIdStr = std::to_string(cameraId);
Status ret = Status::ok();
sp<Client> tmp = nullptr;
if (!(ret = connectHelper<ICameraClient,Client>(
- sp<ICameraClient>{nullptr}, id, cameraId,
- internalPackageName, /*systemNativeClient*/ false, {}, uid, USE_CALLING_PID,
+ sp<ICameraClient>{nullptr}, cameraIdStr, cameraId,
+ kServiceName, /*systemNativeClient*/ false, {}, uid, USE_CALLING_PID,
API_1, /*shimUpdateOnly*/ true, /*oomScoreOffset*/ 0,
/*targetSdkVersion*/ __ANDROID_API_FUTURE__, /*overrideToPortrait*/ true,
/*forceSlowJpegMode*/false, /*out*/ tmp)
@@ -1107,17 +1086,17 @@
return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, "Parameters must not be null");
}
- String8 id = String8::format("%d", cameraId);
+ std::string cameraIdStr = std::to_string(cameraId);
// Check if we already have parameters
{
// Scope for service lock
Mutex::Autolock lock(mServiceLock);
- auto cameraState = getCameraState(id);
+ auto cameraState = getCameraState(cameraIdStr);
if (cameraState == nullptr) {
- ALOGE("%s: Invalid camera ID: %s", __FUNCTION__, id.string());
+ ALOGE("%s: Invalid camera ID: %s", __FUNCTION__, cameraIdStr.c_str());
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT,
- "Invalid camera ID: %s", id.string());
+ "Invalid camera ID: %s", cameraIdStr.c_str());
}
CameraParameters p = cameraState->getShimParams();
if (!p.isEmpty()) {
@@ -1138,11 +1117,11 @@
{
// Scope for service lock
Mutex::Autolock lock(mServiceLock);
- auto cameraState = getCameraState(id);
+ auto cameraState = getCameraState(cameraIdStr);
if (cameraState == nullptr) {
- ALOGE("%s: Invalid camera ID: %s", __FUNCTION__, id.string());
+ ALOGE("%s: Invalid camera ID: %s", __FUNCTION__, cameraIdStr.c_str());
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT,
- "Invalid camera ID: %s", id.string());
+ "Invalid camera ID: %s", cameraIdStr.c_str());
}
CameraParameters p = cameraState->getShimParams();
if (!p.isEmpty()) {
@@ -1168,12 +1147,13 @@
}
}
-static status_t getUidForPackage(String16 packageName, int userId, /*inout*/uid_t& uid, int err) {
+static status_t getUidForPackage(const std::string &packageName, int userId, /*inout*/uid_t& uid,
+ int err) {
PermissionController pc;
- uid = pc.getPackageUid(packageName, 0);
+ uid = pc.getPackageUid(toString16(packageName), 0);
if (uid <= 0) {
- ALOGE("Unknown package: '%s'", String8(packageName).string());
- dprintf(err, "Unknown package: '%s'\n", String8(packageName).string());
+ ALOGE("Unknown package: '%s'", packageName.c_str());
+ dprintf(err, "Unknown package: '%s'\n", packageName.c_str());
return BAD_VALUE;
}
@@ -1187,8 +1167,8 @@
return NO_ERROR;
}
-Status CameraService::validateConnectLocked(const String8& cameraId,
- const String8& clientName8, /*inout*/int& clientUid, /*inout*/int& clientPid,
+Status CameraService::validateConnectLocked(const std::string& cameraId,
+ const std::string& clientName8, /*inout*/int& clientUid, /*inout*/int& clientPid,
/*out*/int& originalClientPid) const {
#ifdef __BRILLO__
@@ -1210,14 +1190,14 @@
ALOGE("CameraService::connect X (PID %d) rejected (camera HAL module not loaded)",
callingPid);
return STATUS_ERROR_FMT(ERROR_DISCONNECTED,
- "No camera HAL module available to open camera device \"%s\"", cameraId.string());
+ "No camera HAL module available to open camera device \"%s\"", cameraId.c_str());
}
if (getCameraState(cameraId) == nullptr) {
ALOGE("CameraService::connect X (PID %d) rejected (invalid camera ID %s)", callingPid,
- cameraId.string());
+ cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_DISCONNECTED,
- "No camera device with ID \"%s\" available", cameraId.string());
+ "No camera device with ID \"%s\" available", cameraId.c_str());
}
status_t err = checkIfDeviceIsUsable(cameraId);
@@ -1226,17 +1206,17 @@
case -ENODEV:
case -EBUSY:
return STATUS_ERROR_FMT(ERROR_DISCONNECTED,
- "No camera device with ID \"%s\" currently available", cameraId.string());
+ "No camera device with ID \"%s\" currently available", cameraId.c_str());
default:
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION,
- "Unknown error connecting to ID \"%s\"", cameraId.string());
+ "Unknown error connecting to ID \"%s\"", cameraId.c_str());
}
}
return Status::ok();
}
-Status CameraService::validateClientPermissionsLocked(const String8& cameraId,
- const String8& clientName8, int& clientUid, int& clientPid,
+Status CameraService::validateClientPermissionsLocked(const std::string& cameraId,
+ const std::string& clientName, int& clientUid, int& clientPid,
/*out*/int& originalClientPid) const {
int callingPid = CameraThreadState::getCallingPid();
int callingUid = CameraThreadState::getCallingUid();
@@ -1250,8 +1230,8 @@
return STATUS_ERROR_FMT(ERROR_PERMISSION_DENIED,
"Untrusted caller (calling PID %d, UID %d) trying to "
"forward camera access to camera %s for client %s (PID %d, UID %d)",
- callingPid, callingUid, cameraId.string(),
- clientName8.string(), clientUid, clientPid);
+ callingPid, callingUid, cameraId.c_str(),
+ clientName.c_str(), clientUid, clientPid);
}
// Check if we can trust clientPid
@@ -1263,21 +1243,21 @@
return STATUS_ERROR_FMT(ERROR_PERMISSION_DENIED,
"Untrusted caller (calling PID %d, UID %d) trying to "
"forward camera access to camera %s for client %s (PID %d, UID %d)",
- callingPid, callingUid, cameraId.string(),
- clientName8.string(), clientUid, clientPid);
+ callingPid, callingUid, cameraId.c_str(),
+ clientName.c_str(), clientUid, clientPid);
}
if (shouldRejectSystemCameraConnection(cameraId)) {
ALOGW("Attempting to connect to system-only camera id %s, connection rejected",
cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_DISCONNECTED, "No camera device with ID \"%s\" is"
- "available", cameraId.string());
+ "available", cameraId.c_str());
}
SystemCameraKind deviceKind = SystemCameraKind::PUBLIC;
if (getSystemCameraKind(cameraId, &deviceKind) != OK) {
- ALOGE("%s: Invalid camera id %s, skipping", __FUNCTION__, cameraId.string());
+ ALOGE("%s: Invalid camera id %s, skipping", __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT, "No camera device with ID \"%s\""
- "found while trying to query device kind", cameraId.string());
+ "found while trying to query device kind", cameraId.c_str());
}
@@ -1286,22 +1266,22 @@
// android.permission.SYSTEM_CAMERA for system only camera devices).
if (callingPid != getpid() &&
(deviceKind != SystemCameraKind::SYSTEM_ONLY_CAMERA) &&
- !checkPermission(sCameraPermission, clientPid, clientUid)) {
+ !checkPermission(toString16(sCameraPermission), clientPid, clientUid)) {
ALOGE("Permission Denial: can't use the camera pid=%d, uid=%d", clientPid, clientUid);
return STATUS_ERROR_FMT(ERROR_PERMISSION_DENIED,
"Caller \"%s\" (PID %d, UID %d) cannot open camera \"%s\" without camera permission",
- clientName8.string(), clientUid, clientPid, cameraId.string());
+ clientName.c_str(), clientUid, clientPid, cameraId.c_str());
}
// Make sure the UID is in an active state to use the camera
- if (!mUidPolicy->isUidActive(callingUid, String16(clientName8))) {
+ if (!mUidPolicy->isUidActive(callingUid, clientName)) {
int32_t procState = mUidPolicy->getProcState(callingUid);
ALOGE("Access Denial: can't use the camera from an idle UID pid=%d, uid=%d",
clientPid, clientUid);
return STATUS_ERROR_FMT(ERROR_DISABLED,
"Caller \"%s\" (PID %d, UID %d) cannot open camera \"%s\" from background ("
"calling UID %d proc state %" PRId32 ")",
- clientName8.string(), clientUid, clientPid, cameraId.string(),
+ clientName.c_str(), clientUid, clientPid, cameraId.c_str(),
callingUid, procState);
}
@@ -1310,7 +1290,7 @@
ALOGE("Access Denial: cannot use the camera when sensor privacy is enabled");
return STATUS_ERROR_FMT(ERROR_DISABLED,
"Caller \"%s\" (PID %d, UID %d) cannot open camera \"%s\" when sensor privacy "
- "is enabled", clientName8.string(), clientUid, clientPid, cameraId.string());
+ "is enabled", clientName.c_str(), clientUid, clientPid, cameraId.c_str());
}
// Only use passed in clientPid to check permission. Use calling PID as the client PID that's
@@ -1326,32 +1306,32 @@
(mAllowedUsers.find(clientUserId) == mAllowedUsers.end())) {
ALOGE("CameraService::connect X (PID %d) rejected (cannot connect from "
"device user %d, currently allowed device users: %s)", callingPid, clientUserId,
- toString(mAllowedUsers).string());
+ toString(mAllowedUsers).c_str());
return STATUS_ERROR_FMT(ERROR_PERMISSION_DENIED,
"Callers from device user %d are not currently allowed to connect to camera \"%s\"",
- clientUserId, cameraId.string());
+ clientUserId, cameraId.c_str());
}
return Status::ok();
}
-status_t CameraService::checkIfDeviceIsUsable(const String8& cameraId) const {
+status_t CameraService::checkIfDeviceIsUsable(const std::string& cameraId) const {
auto cameraState = getCameraState(cameraId);
int callingPid = CameraThreadState::getCallingPid();
if (cameraState == nullptr) {
ALOGE("CameraService::connect X (PID %d) rejected (invalid camera ID %s)", callingPid,
- cameraId.string());
+ cameraId.c_str());
return -ENODEV;
}
StatusInternal currentStatus = cameraState->getStatus();
if (currentStatus == StatusInternal::NOT_PRESENT) {
ALOGE("CameraService::connect X (PID %d) rejected (camera %s is not connected)",
- callingPid, cameraId.string());
+ callingPid, cameraId.c_str());
return -ENODEV;
} else if (currentStatus == StatusInternal::ENUMERATING) {
ALOGE("CameraService::connect X (PID %d) rejected, (camera %s is initializing)",
- callingPid, cameraId.string());
+ callingPid, cameraId.c_str());
return -EBUSY;
}
@@ -1368,13 +1348,13 @@
auto evicted = mActiveClientManager.addAndEvict(clientDescriptor);
logConnected(desc->getKey(), static_cast<int>(desc->getOwnerId()),
- String8(client->getPackageName()));
+ client->getPackageName());
if (evicted.size() > 0) {
// This should never happen - clients should already have been removed in disconnect
for (auto& i : evicted) {
ALOGE("%s: Invalid state: Client for camera %s was not removed in disconnect",
- __FUNCTION__, i->getKey().string());
+ __FUNCTION__, i->getKey().c_str());
}
LOG_ALWAYS_FATAL("%s: Invalid state for CameraService, clients not evicted properly",
@@ -1392,12 +1372,12 @@
}
}
-status_t CameraService::handleEvictionsLocked(const String8& cameraId, int clientPid,
- apiLevel effectiveApiLevel, const sp<IBinder>& remoteCallback, const String8& packageName,
- int oomScoreOffset, bool systemNativeClient,
+status_t CameraService::handleEvictionsLocked(const std::string& cameraId, int clientPid,
+ apiLevel effectiveApiLevel, const sp<IBinder>& remoteCallback,
+ const std::string& packageName, int oomScoreOffset, bool systemNativeClient,
/*out*/
sp<BasicClient>* client,
- std::shared_ptr<resource_policy::ClientDescriptor<String8, sp<BasicClient>>>* partial) {
+ std::shared_ptr<resource_policy::ClientDescriptor<std::string, sp<BasicClient>>>* partial) {
ATRACE_CALL();
status_t ret = NO_ERROR;
std::vector<DescriptorPtr> evictedClients;
@@ -1455,7 +1435,7 @@
auto state = getCameraState(cameraId);
if (state == nullptr) {
ALOGE("CameraService::connect X (PID %d) rejected (no camera device with ID %s)",
- clientPid, cameraId.string());
+ clientPid, cameraId.c_str());
// Should never get here because validateConnectLocked should have errored out
return BAD_VALUE;
}
@@ -1483,25 +1463,25 @@
" priority).", clientPid);
sp<BasicClient> clientSp = clientDescriptor->getValue();
- String8 curTime = getFormattedCurrentTime();
+ std::string curTime = getFormattedCurrentTime();
auto incompatibleClients =
mActiveClientManager.getIncompatibleClients(clientDescriptor);
- String8 msg = String8::format("%s : DENIED connect device %s client for package %s "
- "(PID %d, score %d state %d) due to eviction policy", curTime.string(),
- cameraId.string(), packageName.string(), clientPid,
+ std::string msg = fmt::sprintf("%s : DENIED connect device %s client for package %s "
+ "(PID %d, score %d state %d) due to eviction policy", curTime.c_str(),
+ cameraId.c_str(), packageName.c_str(), clientPid,
clientPriority.getScore(), clientPriority.getState());
for (auto& i : incompatibleClients) {
- msg.appendFormat("\n - Blocked by existing device %s client for package %s"
+ msg += fmt::sprintf("\n - Blocked by existing device %s client for package %s"
"(PID %" PRId32 ", score %" PRId32 ", state %" PRId32 ")",
- i->getKey().string(),
- String8{i->getValue()->getPackageName()}.string(),
+ i->getKey().c_str(),
+ i->getValue()->getPackageName().c_str(),
i->getOwnerId(), i->getPriority().getScore(),
i->getPriority().getState());
ALOGE(" Conflicts with: Device %s, client package %s (PID %"
- PRId32 ", score %" PRId32 ", state %" PRId32 ")", i->getKey().string(),
- String8{i->getValue()->getPackageName()}.string(), i->getOwnerId(),
+ PRId32 ", score %" PRId32 ", state %" PRId32 ")", i->getKey().c_str(),
+ i->getValue()->getPackageName().c_str(), i->getOwnerId(),
i->getPriority().getScore(), i->getPriority().getState());
}
@@ -1530,17 +1510,17 @@
}
ALOGE("CameraService::connect evicting conflicting client for camera ID %s",
- i->getKey().string());
+ i->getKey().c_str());
evictedClients.push_back(i);
// Log the clients evicted
- logEvent(String8::format("EVICT device %s client held by package %s (PID"
+ logEvent(fmt::sprintf("EVICT device %s client held by package %s (PID"
" %" PRId32 ", score %" PRId32 ", state %" PRId32 ")\n - Evicted by device %s client for"
" package %s (PID %d, score %" PRId32 ", state %" PRId32 ")",
- i->getKey().string(), String8{clientSp->getPackageName()}.string(),
+ i->getKey().c_str(), clientSp->getPackageName().c_str(),
i->getOwnerId(), i->getPriority().getScore(),
- i->getPriority().getState(), cameraId.string(),
- packageName.string(), clientPid, clientPriority.getScore(),
+ i->getPriority().getState(), cameraId.c_str(),
+ packageName.c_str(), clientPid, clientPriority.getScore(),
clientPriority.getState()));
// Notify the client of disconnection
@@ -1566,18 +1546,18 @@
for (const auto& i : evictedClients) {
ALOGV("%s: Waiting for disconnect to complete for client for device %s (PID %" PRId32 ")",
- __FUNCTION__, i->getKey().string(), i->getOwnerId());
+ __FUNCTION__, i->getKey().c_str(), i->getOwnerId());
ret = mActiveClientManager.waitUntilRemoved(i, DEFAULT_DISCONNECT_TIMEOUT_NS);
if (ret == TIMED_OUT) {
ALOGE("%s: Timed out waiting for client for device %s to disconnect, "
- "current clients:\n%s", __FUNCTION__, i->getKey().string(),
- mActiveClientManager.toString().string());
+ "current clients:\n%s", __FUNCTION__, i->getKey().c_str(),
+ mActiveClientManager.toString().c_str());
return -EBUSY;
}
if (ret != NO_ERROR) {
ALOGE("%s: Received error waiting for client for device %s to disconnect: %s (%d), "
- "current clients:\n%s", __FUNCTION__, i->getKey().string(), strerror(-ret),
- ret, mActiveClientManager.toString().string());
+ "current clients:\n%s", __FUNCTION__, i->getKey().c_str(), strerror(-ret),
+ ret, mActiveClientManager.toString().c_str());
return ret;
}
}
@@ -1599,7 +1579,7 @@
Status CameraService::connect(
const sp<ICameraClient>& cameraClient,
int api1CameraId,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
int clientUid,
int clientPid,
int targetSdkVersion,
@@ -1611,16 +1591,16 @@
ATRACE_CALL();
Status ret = Status::ok();
- String8 id = cameraIdIntToStr(api1CameraId);
+ std::string cameraIdStr = cameraIdIntToStr(api1CameraId);
sp<Client> client = nullptr;
- ret = connectHelper<ICameraClient,Client>(cameraClient, id, api1CameraId,
- clientPackageName,/*systemNativeClient*/ false, {}, clientUid, clientPid, API_1,
+ ret = connectHelper<ICameraClient,Client>(cameraClient, cameraIdStr, api1CameraId,
+ clientPackageName, /*systemNativeClient*/ false, {}, clientUid, clientPid, API_1,
/*shimUpdateOnly*/ false, /*oomScoreOffset*/ 0, targetSdkVersion,
overrideToPortrait, forceSlowJpegMode, /*out*/client);
if(!ret.isOk()) {
- logRejected(id, CameraThreadState::getCallingPid(), String8(clientPackageName),
- ret.toString8());
+ logRejected(cameraIdStr, CameraThreadState::getCallingPid(), clientPackageName,
+ toStdString(ret.toString8()));
return ret;
}
@@ -1642,7 +1622,7 @@
return false;
}
-bool CameraService::shouldRejectSystemCameraConnection(const String8& cameraId) const {
+bool CameraService::shouldRejectSystemCameraConnection(const std::string& cameraId) const {
// Rules for rejection:
// 1) If cameraserver tries to access this camera device, accept the
// connection.
@@ -1687,9 +1667,9 @@
Status CameraService::connectDevice(
const sp<hardware::camera2::ICameraDeviceCallbacks>& cameraCb,
- const String16& cameraId,
- const String16& clientPackageName,
- const std::optional<String16>& clientFeatureId,
+ const std::string& cameraId,
+ const std::string& clientPackageName,
+ const std::optional<std::string>& clientFeatureId,
int clientUid, int oomScoreOffset, int targetSdkVersion,
bool overrideToPortrait,
/*out*/
@@ -1697,25 +1677,24 @@
ATRACE_CALL();
Status ret = Status::ok();
- String8 id = String8(cameraId);
sp<CameraDeviceClient> client = nullptr;
- String16 clientPackageNameAdj = clientPackageName;
+ std::string clientPackageNameAdj = clientPackageName;
int callingPid = CameraThreadState::getCallingPid();
bool systemNativeClient = false;
if (doesClientHaveSystemUid() && (clientPackageNameAdj.size() == 0)) {
std::string systemClient =
- StringPrintf("client.pid<%d>", CameraThreadState::getCallingPid());
- clientPackageNameAdj = String16(systemClient.c_str());
+ fmt::sprintf("client.pid<%d>", CameraThreadState::getCallingPid());
+ clientPackageNameAdj = systemClient;
systemNativeClient = true;
}
if (oomScoreOffset < 0) {
- String8 msg =
- String8::format("Cannot increase the priority of a client %s pid %d for "
- "camera id %s", String8(clientPackageNameAdj).string(), callingPid,
- id.string());
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg =
+ fmt::sprintf("Cannot increase the priority of a client %s pid %d for "
+ "camera id %s", clientPackageNameAdj.c_str(), callingPid,
+ cameraId.c_str());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
userid_t clientUserId = multiuser_get_user_id(clientUid);
@@ -1725,31 +1704,29 @@
}
if (CameraServiceProxyWrapper::isCameraDisabled(clientUserId)) {
- String8 msg =
- String8::format("Camera disabled by device policy");
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(ERROR_DISABLED, msg.string());
+ std::string msg = "Camera disabled by device policy";
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(ERROR_DISABLED, msg.c_str());
}
// enforce system camera permissions
if (oomScoreOffset > 0 &&
!hasPermissionsForSystemCamera(callingPid, CameraThreadState::getCallingUid())) {
- String8 msg =
- String8::format("Cannot change the priority of a client %s pid %d for "
+ std::string msg = fmt::sprintf("Cannot change the priority of a client %s pid %d for "
"camera id %s without SYSTEM_CAMERA permissions",
- String8(clientPackageNameAdj).string(), callingPid, id.string());
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(ERROR_PERMISSION_DENIED, msg.string());
+ clientPackageNameAdj.c_str(), callingPid, cameraId.c_str());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(ERROR_PERMISSION_DENIED, msg.c_str());
}
- ret = connectHelper<hardware::camera2::ICameraDeviceCallbacks,CameraDeviceClient>(cameraCb, id,
- /*api1CameraId*/-1, clientPackageNameAdj, systemNativeClient,clientFeatureId,
+ ret = connectHelper<hardware::camera2::ICameraDeviceCallbacks,CameraDeviceClient>(cameraCb,
+ cameraId, /*api1CameraId*/-1, clientPackageNameAdj, systemNativeClient, clientFeatureId,
clientUid, USE_CALLING_PID, API_2, /*shimUpdateOnly*/ false, oomScoreOffset,
targetSdkVersion, overrideToPortrait, /*forceSlowJpegMode*/false,
/*out*/client);
if(!ret.isOk()) {
- logRejected(id, callingPid, String8(clientPackageNameAdj), ret.toString8());
+ logRejected(cameraId, callingPid, clientPackageNameAdj, toStdString(ret.toString8()));
return ret;
}
@@ -1773,11 +1750,11 @@
return ret;
}
-String16 CameraService::getPackageNameFromUid(int clientUid) {
- String16 packageName("");
+std::string CameraService::getPackageNameFromUid(int clientUid) {
+ std::string packageName("");
sp<IServiceManager> sm = defaultServiceManager();
- sp<IBinder> binder = sm->getService(String16(kPermissionServiceName));
+ sp<IBinder> binder = sm->getService(toString16(kPermissionServiceName));
if (binder == 0) {
ALOGE("Cannot get permission service");
// Return empty package name and the further interaction
@@ -1798,22 +1775,22 @@
}
// Arbitrarily pick the first name in the list
- packageName = packages[0];
+ packageName = toStdString(packages[0]);
return packageName;
}
template<class CALLBACK, class CLIENT>
-Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const String8& cameraId,
- int api1CameraId, const String16& clientPackageNameMaybe, bool systemNativeClient,
- const std::optional<String16>& clientFeatureId, int clientUid, int clientPid,
+Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const std::string& cameraId,
+ int api1CameraId, const std::string& clientPackageNameMaybe, bool systemNativeClient,
+ const std::optional<std::string>& clientFeatureId, int clientUid, int clientPid,
apiLevel effectiveApiLevel, bool shimUpdateOnly, int oomScoreOffset, int targetSdkVersion,
bool overrideToPortrait, bool forceSlowJpegMode,
/*out*/sp<CLIENT>& device) {
binder::Status ret = binder::Status::ok();
bool isNonSystemNdk = false;
- String16 clientPackageName;
+ std::string clientPackageName;
if (clientPackageNameMaybe.size() <= 0) {
// NDK calls don't come with package names, but we need one for various cases.
// Generally, there's a 1:1 mapping between UID and package name, but shared UIDs
@@ -1828,14 +1805,12 @@
clientPackageName = clientPackageNameMaybe;
}
- String8 clientName8(clientPackageName);
-
int originalClientPid = 0;
int packagePid = (clientPid == USE_CALLING_PID) ?
CameraThreadState::getCallingPid() : clientPid;
ALOGI("CameraService::connect call (PID %d \"%s\", camera ID %s) and "
- "Camera API version %d", packagePid, clientName8.string(), cameraId.string(),
+ "Camera API version %d", packagePid, clientPackageName.c_str(), cameraId.c_str(),
static_cast<int>(effectiveApiLevel));
nsecs_t openTimeNs = systemTime();
@@ -1854,11 +1829,11 @@
, clientPid);
return STATUS_ERROR_FMT(ERROR_MAX_CAMERAS_IN_USE,
"Cannot open camera %s for \"%s\" (PID %d): Too many other clients connecting",
- cameraId.string(), clientName8.string(), clientPid);
+ cameraId.c_str(), clientPackageName.c_str(), clientPid);
}
// Enforce client permissions and do basic validity checks
- if(!(ret = validateConnectLocked(cameraId, clientName8,
+ if(!(ret = validateConnectLocked(cameraId, clientPackageName,
/*inout*/clientUid, /*inout*/clientPid, /*out*/originalClientPid)).isOk()) {
return ret;
}
@@ -1875,27 +1850,27 @@
status_t err;
sp<BasicClient> clientTmp = nullptr;
- std::shared_ptr<resource_policy::ClientDescriptor<String8, sp<BasicClient>>> partial;
+ std::shared_ptr<resource_policy::ClientDescriptor<std::string, sp<BasicClient>>> partial;
if ((err = handleEvictionsLocked(cameraId, originalClientPid, effectiveApiLevel,
- IInterface::asBinder(cameraCb), clientName8, oomScoreOffset, systemNativeClient,
- /*out*/&clientTmp, /*out*/&partial)) != NO_ERROR) {
+ IInterface::asBinder(cameraCb), clientPackageName, oomScoreOffset,
+ systemNativeClient, /*out*/&clientTmp, /*out*/&partial)) != NO_ERROR) {
switch (err) {
case -ENODEV:
return STATUS_ERROR_FMT(ERROR_DISCONNECTED,
"No camera device with ID \"%s\" currently available",
- cameraId.string());
+ cameraId.c_str());
case -EBUSY:
return STATUS_ERROR_FMT(ERROR_CAMERA_IN_USE,
"Higher-priority client using camera, ID \"%s\" currently unavailable",
- cameraId.string());
+ cameraId.c_str());
case -EUSERS:
return STATUS_ERROR_FMT(ERROR_MAX_CAMERAS_IN_USE,
"Too many cameras already open, cannot open camera \"%s\"",
- cameraId.string());
+ cameraId.c_str());
default:
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION,
"Unexpected error %s (%d) opening camera \"%s\"",
- strerror(-err), err, cameraId.string());
+ strerror(-err), err, cameraId.c_str());
}
}
@@ -1913,17 +1888,17 @@
getDeviceVersion(cameraId, overrideToPortrait, /*out*/&portraitRotation,
/*out*/&facing, /*out*/&orientation);
if (facing == -1) {
- ALOGE("%s: Unable to get camera device \"%s\" facing", __FUNCTION__, cameraId.string());
+ ALOGE("%s: Unable to get camera device \"%s\" facing", __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION,
- "Unable to get camera device \"%s\" facing", cameraId.string());
+ "Unable to get camera device \"%s\" facing", cameraId.c_str());
}
sp<BasicClient> tmp = nullptr;
bool overrideForPerfClass = SessionConfigurationUtils::targetPerfClassPrimaryCamera(
- mPerfClassPrimaryCameraIds, cameraId.string(), targetSdkVersion);
+ mPerfClassPrimaryCameraIds, cameraId, targetSdkVersion);
if(!(ret = makeClient(this, cameraCb, clientPackageName, systemNativeClient,
- clientFeatureId, cameraId, api1CameraId, facing, orientation,
- clientPid, clientUid, getpid(),
+ clientFeatureId, cameraId, api1CameraId, facing,
+ orientation, clientPid, clientUid, getpid(),
deviceVersionAndTransport, effectiveApiLevel, overrideForPerfClass,
overrideToPortrait, forceSlowJpegMode,
/*out*/&tmp)).isOk()) {
@@ -1934,7 +1909,7 @@
LOG_ALWAYS_FATAL_IF(client.get() == nullptr, "%s: CameraService in invalid state",
__FUNCTION__);
- String8 monitorTags = isClientWatched(client.get()) ? mMonitorTags : String8("");
+ std::string monitorTags = isClientWatched(client.get()) ? mMonitorTags : std::string();
err = client->initialize(mCameraProviderManager, monitorTags);
if (err != OK) {
ALOGE("%s: Could not initialize client from HAL.", __FUNCTION__);
@@ -1942,24 +1917,24 @@
switch(err) {
case BAD_VALUE:
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT,
- "Illegal argument to HAL module for camera \"%s\"", cameraId.string());
+ "Illegal argument to HAL module for camera \"%s\"", cameraId.c_str());
case -EBUSY:
return STATUS_ERROR_FMT(ERROR_CAMERA_IN_USE,
- "Camera \"%s\" is already open", cameraId.string());
+ "Camera \"%s\" is already open", cameraId.c_str());
case -EUSERS:
return STATUS_ERROR_FMT(ERROR_MAX_CAMERAS_IN_USE,
"Too many cameras already open, cannot open camera \"%s\"",
- cameraId.string());
+ cameraId.c_str());
case PERMISSION_DENIED:
return STATUS_ERROR_FMT(ERROR_PERMISSION_DENIED,
- "No permission to open camera \"%s\"", cameraId.string());
+ "No permission to open camera \"%s\"", cameraId.c_str());
case -EACCES:
return STATUS_ERROR_FMT(ERROR_DISABLED,
- "Camera \"%s\" disabled by policy", cameraId.string());
+ "Camera \"%s\" disabled by policy", cameraId.c_str());
case -ENODEV:
default:
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION,
- "Failed to initialize camera \"%s\": %s (%d)", cameraId.string(),
+ "Failed to initialize camera \"%s\": %s (%d)", cameraId.c_str(),
strerror(-err), err);
}
}
@@ -1976,7 +1951,7 @@
cameraState->setShimParams(params);
} else {
ALOGE("%s: Cannot update shim parameters for camera %s, no such device exists.",
- __FUNCTION__, cameraId.string());
+ __FUNCTION__, cameraId.c_str());
}
}
@@ -2018,7 +1993,7 @@
} else if (isCameraPrivacyEnabled) {
// no camera mute supported, but privacy is on! => disconnect
ALOGI("Camera mute not supported for package: %s, camera id: %s",
- String8(client->getPackageName()).string(), cameraId.string());
+ client->getPackageName().c_str(), cameraId.c_str());
// Do not hold mServiceLock while disconnecting clients, but
// retain the condition blocking other clients from connecting
// in mServiceLockWrapper if held.
@@ -2034,7 +2009,7 @@
mServiceLock.lock();
return STATUS_ERROR_FMT(ERROR_DISABLED,
- "Camera \"%s\" disabled due to camera mute", cameraId.string());
+ "Camera \"%s\" disabled due to camera mute", cameraId.c_str());
}
if (shimUpdateOnly) {
@@ -2071,7 +2046,7 @@
if(res != OK) {
return STATUS_ERROR_FMT(ERROR_DISCONNECTED,
"No camera device with ID \"%s\" currently available",
- mInjectionExternalCamId.string());
+ mInjectionExternalCamId.c_str());
}
res = clientSp->injectCamera(mInjectionExternalCamId, mCameraProviderManager);
if (res != OK) {
@@ -2079,7 +2054,7 @@
}
} else {
ALOGE("%s: Internal camera ID = %s 's client does not exist!",
- __FUNCTION__, mInjectionInternalCamId.string());
+ __FUNCTION__, mInjectionInternalCamId.c_str());
res = NO_INIT;
mInjectionStatusListener->notifyInjectionError(mInjectionExternalCamId, res);
}
@@ -2089,7 +2064,8 @@
return ret;
}
-status_t CameraService::addOfflineClient(String8 cameraId, sp<BasicClient> offlineClient) {
+status_t CameraService::addOfflineClient(const std::string &cameraId,
+ sp<BasicClient> offlineClient) {
if (offlineClient.get() == nullptr) {
return BAD_VALUE;
}
@@ -2118,7 +2094,7 @@
const auto& onlinePriority = onlineClientDesc->getPriority();
auto offlineClientDesc = CameraClientManager::makeClientDescriptor(
kOfflineDevice + onlineClientDesc->getKey(), offlineClient, /*cost*/ 0,
- /*conflictingKeys*/ std::set<String8>(), onlinePriority.getScore(),
+ /*conflictingKeys*/ std::set<std::string>(), onlinePriority.getScore(),
onlineClientDesc->getOwnerId(), onlinePriority.getState(),
// native clients don't have offline processing support.
/*ommScoreOffset*/ 0, /*systemNativeClient*/false);
@@ -2130,7 +2106,8 @@
return BAD_VALUE;
}
- String8 monitorTags = isClientWatched(offlineClient.get()) ? mMonitorTags : String8("");
+ std::string monitorTags = isClientWatched(offlineClient.get())
+ ? mMonitorTags : std::string();
auto err = offlineClient->initialize(mCameraProviderManager, monitorTags);
if (err != OK) {
ALOGE("%s: Could not initialize offline client.", __FUNCTION__);
@@ -2141,7 +2118,7 @@
if (evicted.size() > 0) {
for (auto& i : evicted) {
ALOGE("%s: Invalid state: Offline client for camera %s was not removed ",
- __FUNCTION__, i->getKey().string());
+ __FUNCTION__, i->getKey().c_str());
}
LOG_ALWAYS_FATAL("%s: Invalid state for CameraService, offline clients not evicted "
@@ -2152,7 +2129,7 @@
logConnectedOffline(offlineClientDesc->getKey(),
static_cast<int>(offlineClientDesc->getOwnerId()),
- String8(offlineClient->getPackageName()));
+ offlineClient->getPackageName());
sp<IBinder> remoteCallback = offlineClient->getRemote();
if (remoteCallback != nullptr) {
@@ -2163,8 +2140,8 @@
return OK;
}
-Status CameraService::turnOnTorchWithStrengthLevel(const String16& cameraId, int32_t torchStrength,
- const sp<IBinder>& clientBinder) {
+Status CameraService::turnOnTorchWithStrengthLevel(const std::string& cameraId,
+ int32_t torchStrength, const sp<IBinder>& clientBinder) {
Mutex::Autolock lock(mServiceLock);
ATRACE_CALL();
@@ -2174,60 +2151,59 @@
"Torch client binder in null.");
}
- String8 id = String8(cameraId.string());
int uid = CameraThreadState::getCallingUid();
- if (shouldRejectSystemCameraConnection(id)) {
+ if (shouldRejectSystemCameraConnection(cameraId)) {
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT, "Unable to change the strength level"
- "for system only device %s: ", id.string());
+ "for system only device %s: ", cameraId.c_str());
}
// verify id is valid
- auto state = getCameraState(id);
+ auto state = getCameraState(cameraId);
if (state == nullptr) {
- ALOGE("%s: camera id is invalid %s", __FUNCTION__, id.string());
+ ALOGE("%s: camera id is invalid %s", __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT,
- "Camera ID \"%s\" is a not valid camera ID", id.string());
+ "Camera ID \"%s\" is a not valid camera ID", cameraId.c_str());
}
StatusInternal cameraStatus = state->getStatus();
if (cameraStatus != StatusInternal::NOT_AVAILABLE &&
cameraStatus != StatusInternal::PRESENT) {
- ALOGE("%s: camera id is invalid %s, status %d", __FUNCTION__, id.string(),
+ ALOGE("%s: camera id is invalid %s, status %d", __FUNCTION__, cameraId.c_str(),
(int)cameraStatus);
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT,
- "Camera ID \"%s\" is a not valid camera ID", id.string());
+ "Camera ID \"%s\" is a not valid camera ID", cameraId.c_str());
}
{
Mutex::Autolock al(mTorchStatusMutex);
TorchModeStatus status;
- status_t err = getTorchStatusLocked(id, &status);
+ status_t err = getTorchStatusLocked(cameraId, &status);
if (err != OK) {
if (err == NAME_NOT_FOUND) {
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT,
- "Camera \"%s\" does not have a flash unit", id.string());
+ "Camera \"%s\" does not have a flash unit", cameraId.c_str());
}
ALOGE("%s: getting current torch status failed for camera %s",
- __FUNCTION__, id.string());
+ __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION,
"Error changing torch strength level for camera \"%s\": %s (%d)",
- id.string(), strerror(-err), err);
+ cameraId.c_str(), strerror(-err), err);
}
if (status == TorchModeStatus::NOT_AVAILABLE) {
if (cameraStatus == StatusInternal::NOT_AVAILABLE) {
ALOGE("%s: torch mode of camera %s is not available because "
- "camera is in use.", __FUNCTION__, id.string());
+ "camera is in use.", __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_CAMERA_IN_USE,
"Torch for camera \"%s\" is not available due to an existing camera user",
- id.string());
+ cameraId.c_str());
} else {
ALOGE("%s: torch mode of camera %s is not available due to "
- "insufficient resources", __FUNCTION__, id.string());
+ "insufficient resources", __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_MAX_CAMERAS_IN_USE,
"Torch for camera \"%s\" is not available due to insufficient resources",
- id.string());
+ cameraId.c_str());
}
}
}
@@ -2238,44 +2214,44 @@
}
// Check if the current torch strength level is same as the new one.
bool shouldSkipTorchStrengthUpdates = mCameraProviderManager->shouldSkipTorchStrengthUpdate(
- id.string(), torchStrength);
+ cameraId, torchStrength);
- status_t err = mFlashlight->turnOnTorchWithStrengthLevel(id, torchStrength);
+ status_t err = mFlashlight->turnOnTorchWithStrengthLevel(cameraId, torchStrength);
if (err != OK) {
int32_t errorCode;
- String8 msg;
+ std::string msg;
switch (err) {
case -ENOSYS:
- msg = String8::format("Camera \"%s\" has no flashlight.",
- id.string());
+ msg = fmt::sprintf("Camera \"%s\" has no flashlight.",
+ cameraId.c_str());
errorCode = ERROR_ILLEGAL_ARGUMENT;
break;
case -EBUSY:
- msg = String8::format("Camera \"%s\" is in use",
- id.string());
+ msg = fmt::sprintf("Camera \"%s\" is in use",
+ cameraId.c_str());
errorCode = ERROR_CAMERA_IN_USE;
break;
case -EINVAL:
- msg = String8::format("Torch strength level %d is not within the "
+ msg = fmt::sprintf("Torch strength level %d is not within the "
"valid range.", torchStrength);
errorCode = ERROR_ILLEGAL_ARGUMENT;
break;
default:
- msg = String8::format("Changing torch strength level failed.");
+ msg = "Changing torch strength level failed.";
errorCode = ERROR_INVALID_OPERATION;
}
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(errorCode, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(errorCode, msg.c_str());
}
{
// update the link to client's death
// Store the last client that turns on each camera's torch mode.
Mutex::Autolock al(mTorchClientMapMutex);
- ssize_t index = mTorchClientMap.indexOfKey(id);
+ ssize_t index = mTorchClientMap.indexOfKey(cameraId);
if (index == NAME_NOT_FOUND) {
- mTorchClientMap.add(id, clientBinder);
+ mTorchClientMap.add(cameraId, clientBinder);
} else {
mTorchClientMap.valueAt(index)->unlinkToDeath(this);
mTorchClientMap.replaceValueAt(index, clientBinder);
@@ -2284,16 +2260,15 @@
}
int clientPid = CameraThreadState::getCallingPid();
- const char *id_cstr = id.c_str();
ALOGI("%s: Torch strength for camera id %s changed to %d for client PID %d",
- __FUNCTION__, id_cstr, torchStrength, clientPid);
+ __FUNCTION__, cameraId.c_str(), torchStrength, clientPid);
if (!shouldSkipTorchStrengthUpdates) {
- broadcastTorchStrengthLevel(id, torchStrength);
+ broadcastTorchStrengthLevel(cameraId, torchStrength);
}
return Status::ok();
}
-Status CameraService::setTorchMode(const String16& cameraId, bool enabled,
+Status CameraService::setTorchMode(const std::string& cameraId, bool enabled,
const sp<IBinder>& clientBinder) {
Mutex::Autolock lock(mServiceLock);
@@ -2304,58 +2279,58 @@
"Torch client Binder is null");
}
- String8 id = String8(cameraId.string());
int uid = CameraThreadState::getCallingUid();
- if (shouldRejectSystemCameraConnection(id)) {
+ if (shouldRejectSystemCameraConnection(cameraId)) {
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT, "Unable to set torch mode"
- " for system only device %s: ", id.string());
+ " for system only device %s: ", cameraId.c_str());
}
// verify id is valid.
- auto state = getCameraState(id);
+ auto state = getCameraState(cameraId);
if (state == nullptr) {
- ALOGE("%s: camera id is invalid %s", __FUNCTION__, id.string());
+ ALOGE("%s: camera id is invalid %s", __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT,
- "Camera ID \"%s\" is a not valid camera ID", id.string());
+ "Camera ID \"%s\" is a not valid camera ID", cameraId.c_str());
}
StatusInternal cameraStatus = state->getStatus();
if (cameraStatus != StatusInternal::PRESENT &&
cameraStatus != StatusInternal::NOT_AVAILABLE) {
- ALOGE("%s: camera id is invalid %s, status %d", __FUNCTION__, id.string(), (int)cameraStatus);
+ ALOGE("%s: camera id is invalid %s, status %d", __FUNCTION__, cameraId.c_str(),
+ (int)cameraStatus);
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT,
- "Camera ID \"%s\" is a not valid camera ID", id.string());
+ "Camera ID \"%s\" is a not valid camera ID", cameraId.c_str());
}
{
Mutex::Autolock al(mTorchStatusMutex);
TorchModeStatus status;
- status_t err = getTorchStatusLocked(id, &status);
+ status_t err = getTorchStatusLocked(cameraId, &status);
if (err != OK) {
if (err == NAME_NOT_FOUND) {
return STATUS_ERROR_FMT(ERROR_ILLEGAL_ARGUMENT,
- "Camera \"%s\" does not have a flash unit", id.string());
+ "Camera \"%s\" does not have a flash unit", cameraId.c_str());
}
ALOGE("%s: getting current torch status failed for camera %s",
- __FUNCTION__, id.string());
+ __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION,
- "Error updating torch status for camera \"%s\": %s (%d)", id.string(),
+ "Error updating torch status for camera \"%s\": %s (%d)", cameraId.c_str(),
strerror(-err), err);
}
if (status == TorchModeStatus::NOT_AVAILABLE) {
if (cameraStatus == StatusInternal::NOT_AVAILABLE) {
ALOGE("%s: torch mode of camera %s is not available because "
- "camera is in use", __FUNCTION__, id.string());
+ "camera is in use", __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_CAMERA_IN_USE,
"Torch for camera \"%s\" is not available due to an existing camera user",
- id.string());
+ cameraId.c_str());
} else {
ALOGE("%s: torch mode of camera %s is not available due to "
- "insufficient resources", __FUNCTION__, id.string());
+ "insufficient resources", __FUNCTION__, cameraId.c_str());
return STATUS_ERROR_FMT(ERROR_MAX_CAMERAS_IN_USE,
"Torch for camera \"%s\" is not available due to insufficient resources",
- id.string());
+ cameraId.c_str());
}
}
}
@@ -2367,40 +2342,40 @@
updateTorchUidMapLocked(cameraId, uid);
}
- status_t err = mFlashlight->setTorchMode(id, enabled);
+ status_t err = mFlashlight->setTorchMode(cameraId, enabled);
if (err != OK) {
int32_t errorCode;
- String8 msg;
+ std::string msg;
switch (err) {
case -ENOSYS:
- msg = String8::format("Camera \"%s\" has no flashlight",
- id.string());
+ msg = fmt::sprintf("Camera \"%s\" has no flashlight",
+ cameraId.c_str());
errorCode = ERROR_ILLEGAL_ARGUMENT;
break;
case -EBUSY:
- msg = String8::format("Camera \"%s\" is in use",
- id.string());
+ msg = fmt::sprintf("Camera \"%s\" is in use",
+ cameraId.c_str());
errorCode = ERROR_CAMERA_IN_USE;
break;
default:
- msg = String8::format(
+ msg = fmt::sprintf(
"Setting torch mode of camera \"%s\" to %d failed: %s (%d)",
- id.string(), enabled, strerror(-err), err);
+ cameraId.c_str(), enabled, strerror(-err), err);
errorCode = ERROR_INVALID_OPERATION;
}
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- logServiceError(msg,errorCode);
- return STATUS_ERROR(errorCode, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ logServiceError(msg, errorCode);
+ return STATUS_ERROR(errorCode, msg.c_str());
}
{
// update the link to client's death
Mutex::Autolock al(mTorchClientMapMutex);
- ssize_t index = mTorchClientMap.indexOfKey(id);
+ ssize_t index = mTorchClientMap.indexOfKey(cameraId);
if (enabled) {
if (index == NAME_NOT_FOUND) {
- mTorchClientMap.add(id, clientBinder);
+ mTorchClientMap.add(cameraId, clientBinder);
} else {
mTorchClientMap.valueAt(index)->unlinkToDeath(this);
mTorchClientMap.replaceValueAt(index, clientBinder);
@@ -2412,21 +2387,20 @@
}
int clientPid = CameraThreadState::getCallingPid();
- const char *id_cstr = id.c_str();
- const char *torchState = enabled ? "on" : "off";
- ALOGI("Torch for camera id %s turned %s for client PID %d", id_cstr, torchState, clientPid);
- logTorchEvent(id_cstr, torchState , clientPid);
+ std::string torchState = enabled ? "on" : "off";
+ ALOGI("Torch for camera id %s turned %s for client PID %d", cameraId.c_str(),
+ torchState.c_str(), clientPid);
+ logTorchEvent(cameraId, torchState, clientPid);
return Status::ok();
}
-void CameraService::updateTorchUidMapLocked(const String16& cameraId, int uid) {
- String8 id = String8(cameraId.string());
- if (mTorchUidMap.find(id) == mTorchUidMap.end()) {
- mTorchUidMap[id].first = uid;
- mTorchUidMap[id].second = uid;
+void CameraService::updateTorchUidMapLocked(const std::string& cameraId, int uid) {
+ if (mTorchUidMap.find(cameraId) == mTorchUidMap.end()) {
+ mTorchUidMap[cameraId].first = uid;
+ mTorchUidMap[cameraId].second = uid;
} else {
// Set the pending UID
- mTorchUidMap[id].first = uid;
+ mTorchUidMap[cameraId].first = uid;
}
}
@@ -2439,7 +2413,7 @@
if (pid != selfPid) {
// Ensure we're being called by system_server, or similar process with
// permissions to notify the camera service about system events
- if (!checkCallingPermission(sCameraSendSystemEventsPermission)) {
+ if (!checkCallingPermission(toString16(sCameraSendSystemEventsPermission))) {
const int uid = CameraThreadState::getCallingUid();
ALOGE("Permission Denial: cannot send updates to camera service about system"
" events from pid=%d, uid=%d", pid, uid);
@@ -2502,7 +2476,7 @@
if (pid != selfPid) {
// Ensure we're being called by system_server, or similar process with
// permissions to notify the camera service about system events
- if (!checkCallingPermission(sCameraSendSystemEventsPermission)) {
+ if (!checkCallingPermission(toString16(sCameraSendSystemEventsPermission))) {
const int uid = CameraThreadState::getCallingUid();
ALOGE("Permission Denial: cannot send updates to camera service about device"
" state changes from pid=%d, uid=%d", pid, uid);
@@ -2533,7 +2507,7 @@
if (callingPid != selfPid) {
// Ensure we're being called by system_server, or similar process with
// permissions to notify the camera service about system events
- if (!checkCallingPermission(sCameraSendSystemEventsPermission)) {
+ if (!checkCallingPermission(toString16(sCameraSendSystemEventsPermission))) {
const int uid = CameraThreadState::getCallingUid();
ALOGE("Permission Denial: cannot send updates to camera service about orientation"
" changes from pid=%d, uid=%d", callingPid, uid);
@@ -2575,7 +2549,7 @@
if (!mInitialized) {
ALOGE("%s: Camera HAL couldn't be initialized", __FUNCTION__);
- logServiceError(String8::format("Camera subsystem is not available"),ERROR_DISCONNECTED);
+ logServiceError("Camera subsystem is not available", ERROR_DISCONNECTED);
return STATUS_ERROR(ERROR_DISCONNECTED,
"Camera subsystem is not available");
}
@@ -2587,8 +2561,7 @@
std::vector<std::string> validCombination;
for (auto &cameraId : combination) {
// if the camera state is not present, skip
- String8 cameraIdStr(cameraId.c_str());
- auto state = getCameraState(cameraIdStr);
+ auto state = getCameraState(cameraId);
if (state == nullptr) {
ALOGW("%s: camera id %s does not exist", __FUNCTION__, cameraId.c_str());
continue;
@@ -2597,7 +2570,7 @@
if (status == StatusInternal::NOT_PRESENT || status == StatusInternal::ENUMERATING) {
continue;
}
- if (shouldRejectSystemCameraConnection(cameraIdStr)) {
+ if (shouldRejectSystemCameraConnection(cameraId)) {
continue;
}
validCombination.push_back(cameraId);
@@ -2626,7 +2599,8 @@
// Check for camera permissions
int callingPid = CameraThreadState::getCallingPid();
int callingUid = CameraThreadState::getCallingUid();
- if ((callingPid != getpid()) && !checkPermission(sCameraPermission, callingPid, callingUid)) {
+ if ((callingPid != getpid()) && !checkPermission(toString16(sCameraPermission), callingPid,
+ callingUid)) {
ALOGE("%s: pid %d doesn't have camera permissions", __FUNCTION__, callingPid);
return STATUS_ERROR(ERROR_PERMISSION_DENIED,
"android.permission.CAMERA needed to call"
@@ -2638,7 +2612,7 @@
cameraIdsAndSessionConfigurations, mPerfClassPrimaryCameraIds,
targetSdkVersion, isSupported);
if (res != OK) {
- logServiceError(String8::format("Unable to query session configuration support"),
+ logServiceError("Unable to query session configuration support",
ERROR_INVALID_OPERATION);
return STATUS_ERROR_FMT(ERROR_INVALID_OPERATION, "Unable to query session configuration "
"support %s (%d)", strerror(-res), res);
@@ -2673,7 +2647,7 @@
auto clientUid = CameraThreadState::getCallingUid();
auto clientPid = CameraThreadState::getCallingPid();
- bool openCloseCallbackAllowed = checkPermission(sCameraOpenCloseListenerPermission,
+ bool openCloseCallbackAllowed = checkPermission(toString16(sCameraOpenCloseListenerPermission),
clientPid, clientUid, /*logPermissionFailure*/false);
Mutex::Autolock lock(mServiceLock);
@@ -2693,11 +2667,11 @@
openCloseCallbackAllowed);
auto ret = serviceListener->initialize(isProcessLocalTest);
if (ret != NO_ERROR) {
- String8 msg = String8::format("Failed to initialize service listener: %s (%d)",
+ std::string msg = fmt::sprintf("Failed to initialize service listener: %s (%d)",
strerror(-ret), ret);
- logServiceError(msg,ERROR_ILLEGAL_ARGUMENT);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, msg.string());
+ logServiceError(msg, ERROR_ILLEGAL_ARGUMENT);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
// The listener still needs to be added to the list of listeners, regardless of what
// permissions the listener process has / whether it is a vendor listener. Since it might be
@@ -2712,7 +2686,7 @@
for (auto& i : mCameraStates) {
cameraStatuses->emplace_back(i.first,
mapToInterface(i.second->getStatus()), i.second->getUnavailablePhysicalIds(),
- openCloseCallbackAllowed ? i.second->getClientPackage() : String8::empty());
+ openCloseCallbackAllowed ? i.second->getClientPackage() : std::string());
}
}
// Remove the camera statuses that should be hidden from the client, we do
@@ -2731,9 +2705,9 @@
clientUid);}), cameraStatuses->end());
//cameraStatuses will have non-eligible camera ids removed.
- std::set<String16> idsChosenForCallback;
+ std::set<std::string> idsChosenForCallback;
for (const auto &s : *cameraStatuses) {
- idsChosenForCallback.insert(String16(s.cameraId));
+ idsChosenForCallback.insert(s.cameraId);
}
/*
@@ -2743,7 +2717,7 @@
{
Mutex::Autolock al(mTorchStatusMutex);
for (size_t i = 0; i < mTorchStatusMap.size(); i++ ) {
- String16 id = String16(mTorchStatusMap.keyAt(i).string());
+ const std::string &id = mTorchStatusMap.keyAt(i);
// The camera id is visible to the client. Fine to send torch
// callback.
if (idsChosenForCallback.find(id) != idsChosenForCallback.end()) {
@@ -2785,7 +2759,7 @@
return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, "Unregistered listener given to removeListener");
}
-Status CameraService::getLegacyParameters(int cameraId, /*out*/String16* parameters) {
+Status CameraService::getLegacyParameters(int cameraId, /*out*/std::string* parameters) {
ATRACE_CALL();
ALOGV("%s: for camera ID = %d", __FUNCTION__, cameraId);
@@ -2804,37 +2778,34 @@
}
String8 shimParamsString8 = shimParams.flatten();
- String16 shimParamsString16 = String16(shimParamsString8);
- *parameters = shimParamsString16;
+ *parameters = toStdString(shimParamsString8);
return ret;
}
-Status CameraService::supportsCameraApi(const String16& cameraId, int apiVersion,
+Status CameraService::supportsCameraApi(const std::string& cameraId, int apiVersion,
/*out*/ bool *isSupported) {
ATRACE_CALL();
- const String8 id = String8(cameraId);
-
- ALOGV("%s: for camera ID = %s", __FUNCTION__, id.string());
+ ALOGV("%s: for camera ID = %s", __FUNCTION__, cameraId.c_str());
switch (apiVersion) {
case API_VERSION_1:
case API_VERSION_2:
break;
default:
- String8 msg = String8::format("Unknown API version %d", apiVersion);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Unknown API version %d", apiVersion);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
int portraitRotation;
- auto deviceVersionAndTransport = getDeviceVersion(id, false, &portraitRotation);
+ auto deviceVersionAndTransport = getDeviceVersion(cameraId, false, &portraitRotation);
if (deviceVersionAndTransport.first == -1) {
- String8 msg = String8::format("Unknown camera ID %s", id.string());
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Unknown camera ID %s", cameraId.c_str());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (deviceVersionAndTransport.second == IPCTransport::HIDL) {
int deviceVersion = deviceVersionAndTransport.first;
@@ -2844,11 +2815,11 @@
case CAMERA_DEVICE_API_VERSION_3_1:
if (apiVersion == API_VERSION_2) {
ALOGV("%s: Camera id %s uses HAL version %d <3.2, doesn't support api2 without "
- "shim", __FUNCTION__, id.string(), deviceVersion);
+ "shim", __FUNCTION__, cameraId.c_str(), deviceVersion);
*isSupported = false;
} else { // if (apiVersion == API_VERSION_1) {
ALOGV("%s: Camera id %s uses older HAL before 3.2, but api1 is always "
- "supported", __FUNCTION__, id.string());
+ "supported", __FUNCTION__, cameraId.c_str());
*isSupported = true;
}
break;
@@ -2859,14 +2830,14 @@
case CAMERA_DEVICE_API_VERSION_3_6:
case CAMERA_DEVICE_API_VERSION_3_7:
ALOGV("%s: Camera id %s uses HAL3.2 or newer, supports api1/api2 directly",
- __FUNCTION__, id.string());
+ __FUNCTION__, cameraId.c_str());
*isSupported = true;
break;
default: {
- String8 msg = String8::format("Unknown device version %x for device %s",
- deviceVersion, id.string());
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(ERROR_INVALID_OPERATION, msg.string());
+ std::string msg = fmt::sprintf("Unknown device version %x for device %s",
+ deviceVersion, cameraId.c_str());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(ERROR_INVALID_OPERATION, msg.c_str());
}
}
} else {
@@ -2875,27 +2846,25 @@
return Status::ok();
}
-Status CameraService::isHiddenPhysicalCamera(const String16& cameraId,
+Status CameraService::isHiddenPhysicalCamera(const std::string& cameraId,
/*out*/ bool *isSupported) {
ATRACE_CALL();
- const String8 id = String8(cameraId);
-
- ALOGV("%s: for camera ID = %s", __FUNCTION__, id.string());
- *isSupported = mCameraProviderManager->isHiddenPhysicalCamera(id.string());
+ ALOGV("%s: for camera ID = %s", __FUNCTION__, cameraId.c_str());
+ *isSupported = mCameraProviderManager->isHiddenPhysicalCamera(cameraId);
return Status::ok();
}
Status CameraService::injectCamera(
- const String16& packageName, const String16& internalCamId,
- const String16& externalCamId,
+ const std::string& packageName, const std::string& internalCamId,
+ const std::string& externalCamId,
const sp<ICameraInjectionCallback>& callback,
/*out*/
sp<ICameraInjectionSession>* cameraInjectionSession) {
ATRACE_CALL();
- if (!checkCallingPermission(sCameraInjectExternalCameraPermission)) {
+ if (!checkCallingPermission(toString16(sCameraInjectExternalCameraPermission))) {
const int pid = CameraThreadState::getCallingPid();
const int uid = CameraThreadState::getCallingUid();
ALOGE("Permission Denial: can't inject camera pid=%d, uid=%d", pid, uid);
@@ -2906,13 +2875,13 @@
ALOGV(
"%s: Package name = %s, Internal camera ID = %s, External camera ID = "
"%s",
- __FUNCTION__, String8(packageName).string(),
- String8(internalCamId).string(), String8(externalCamId).string());
+ __FUNCTION__, packageName.c_str(),
+ internalCamId.c_str(), externalCamId.c_str());
{
Mutex::Autolock lock(mInjectionParametersLock);
- mInjectionInternalCamId = String8(internalCamId);
- mInjectionExternalCamId = String8(externalCamId);
+ mInjectionInternalCamId = internalCamId;
+ mInjectionExternalCamId = externalCamId;
mInjectionStatusListener->addListener(callback);
*cameraInjectionSession = new CameraInjectionSession(this);
status_t res = NO_ERROR;
@@ -2927,7 +2896,7 @@
if(res != OK) {
return STATUS_ERROR_FMT(ERROR_DISCONNECTED,
"No camera device with ID \"%s\" currently available",
- mInjectionExternalCamId.string());
+ mInjectionExternalCamId.c_str());
}
res = clientSp->injectCamera(mInjectionExternalCamId, mCameraProviderManager);
if(res != OK) {
@@ -3002,7 +2971,7 @@
}
std::shared_ptr<CameraService::CameraState> CameraService::getCameraState(
- const String8& cameraId) const {
+ const std::string& cameraId) const {
std::shared_ptr<CameraState> state;
{
Mutex::Autolock lock(mCameraStatesLock);
@@ -3014,12 +2983,12 @@
return state;
}
-sp<CameraService::BasicClient> CameraService::removeClientLocked(const String8& cameraId) {
+sp<CameraService::BasicClient> CameraService::removeClientLocked(const std::string& cameraId) {
// Remove from active clients list
auto clientDescriptorPtr = mActiveClientManager.remove(cameraId);
if (clientDescriptorPtr == nullptr) {
ALOGW("%s: Could not evict client, no client for camera ID %s", __FUNCTION__,
- cameraId.string());
+ cameraId.c_str());
return sp<BasicClient>{nullptr};
}
@@ -3074,16 +3043,14 @@
evicted.push_back(clientSp);
- String8 curTime = getFormattedCurrentTime();
-
ALOGE("Evicting conflicting client for camera ID %s due to user change",
- i->getKey().string());
+ i->getKey().c_str());
// Log the clients evicted
- logEvent(String8::format("EVICT device %s client held by package %s (PID %"
+ logEvent(fmt::sprintf("EVICT device %s client held by package %s (PID %"
PRId32 ", score %" PRId32 ", state %" PRId32 ")\n - Evicted due"
- " to user switch.", i->getKey().string(),
- String8{clientSp->getPackageName()}.string(),
+ " to user switch.", i->getKey().c_str(),
+ clientSp->getPackageName().c_str(),
i->getOwnerId(), i->getPriority().getScore(),
i->getPriority().getState()));
@@ -3106,12 +3073,12 @@
mServiceLock.lock();
}
-void CameraService::logEvent(const char* event) {
- String8 curTime = getFormattedCurrentTime();
+void CameraService::logEvent(const std::string &event) {
+ std::string curTime = getFormattedCurrentTime();
Mutex::Autolock l(mLogLock);
- String8 msg = String8::format("%s : %s", curTime.string(), event);
+ std::string msg = curTime + " : " + event;
// For service error events, print the msg only once.
- if(!msg.contains("SERVICE ERROR")) {
+ if (msg.find("SERVICE ERROR") != std::string::npos) {
mEventLog.add(msg);
} else if(sServiceErrorEventSet.find(msg) == sServiceErrorEventSet.end()) {
// Error event not added to the dumpsys log before
@@ -3120,77 +3087,78 @@
}
}
-void CameraService::logDisconnected(const char* cameraId, int clientPid,
- const char* clientPackage) {
+void CameraService::logDisconnected(const std::string &cameraId, int clientPid,
+ const std::string &clientPackage) {
// Log the clients evicted
- logEvent(String8::format("DISCONNECT device %s client for package %s (PID %d)", cameraId,
- clientPackage, clientPid));
+ logEvent(fmt::sprintf("DISCONNECT device %s client for package %s (PID %d)", cameraId.c_str(),
+ clientPackage.c_str(), clientPid));
}
-void CameraService::logDisconnectedOffline(const char* cameraId, int clientPid,
- const char* clientPackage) {
+void CameraService::logDisconnectedOffline(const std::string &cameraId, int clientPid,
+ const std::string &clientPackage) {
// Log the clients evicted
- logEvent(String8::format("DISCONNECT offline device %s client for package %s (PID %d)",
- cameraId, clientPackage, clientPid));
+ logEvent(fmt::sprintf("DISCONNECT offline device %s client for package %s (PID %d)",
+ cameraId.c_str(), clientPackage.c_str(), clientPid));
}
-void CameraService::logConnected(const char* cameraId, int clientPid,
- const char* clientPackage) {
+void CameraService::logConnected(const std::string &cameraId, int clientPid,
+ const std::string &clientPackage) {
// Log the clients evicted
- logEvent(String8::format("CONNECT device %s client for package %s (PID %d)", cameraId,
- clientPackage, clientPid));
+ logEvent(fmt::sprintf("CONNECT device %s client for package %s (PID %d)", cameraId.c_str(),
+ clientPackage.c_str(), clientPid));
}
-void CameraService::logConnectedOffline(const char* cameraId, int clientPid,
- const char* clientPackage) {
+void CameraService::logConnectedOffline(const std::string &cameraId, int clientPid,
+ const std::string &clientPackage) {
// Log the clients evicted
- logEvent(String8::format("CONNECT offline device %s client for package %s (PID %d)", cameraId,
- clientPackage, clientPid));
+ logEvent(fmt::sprintf("CONNECT offline device %s client for package %s (PID %d)",
+ cameraId.c_str(), clientPackage.c_str(), clientPid));
}
-void CameraService::logRejected(const char* cameraId, int clientPid,
- const char* clientPackage, const char* reason) {
+void CameraService::logRejected(const std::string &cameraId, int clientPid,
+ const std::string &clientPackage, const std::string &reason) {
// Log the client rejected
- logEvent(String8::format("REJECT device %s client for package %s (PID %d), reason: (%s)",
- cameraId, clientPackage, clientPid, reason));
+ logEvent(fmt::sprintf("REJECT device %s client for package %s (PID %d), reason: (%s)",
+ cameraId.c_str(), clientPackage.c_str(), clientPid, reason.c_str()));
}
-void CameraService::logTorchEvent(const char* cameraId, const char *torchState, int clientPid) {
+void CameraService::logTorchEvent(const std::string &cameraId, const std::string &torchState,
+ int clientPid) {
// Log torch event
- logEvent(String8::format("Torch for camera id %s turned %s for client PID %d", cameraId,
- torchState, clientPid));
+ logEvent(fmt::sprintf("Torch for camera id %s turned %s for client PID %d", cameraId.c_str(),
+ torchState.c_str(), clientPid));
}
void CameraService::logUserSwitch(const std::set<userid_t>& oldUserIds,
const std::set<userid_t>& newUserIds) {
- String8 newUsers = toString(newUserIds);
- String8 oldUsers = toString(oldUserIds);
+ std::string newUsers = toString(newUserIds);
+ std::string oldUsers = toString(oldUserIds);
if (oldUsers.size() == 0) {
oldUsers = "<None>";
}
// Log the new and old users
- logEvent(String8::format("USER_SWITCH previous allowed user IDs: %s, current allowed user IDs: %s",
- oldUsers.string(), newUsers.string()));
+ logEvent(fmt::sprintf("USER_SWITCH previous allowed user IDs: %s, current allowed user IDs: %s",
+ oldUsers.c_str(), newUsers.c_str()));
}
-void CameraService::logDeviceRemoved(const char* cameraId, const char* reason) {
+void CameraService::logDeviceRemoved(const std::string &cameraId, const std::string &reason) {
// Log the device removal
- logEvent(String8::format("REMOVE device %s, reason: (%s)", cameraId, reason));
+ logEvent(fmt::sprintf("REMOVE device %s, reason: (%s)", cameraId.c_str(), reason.c_str()));
}
-void CameraService::logDeviceAdded(const char* cameraId, const char* reason) {
+void CameraService::logDeviceAdded(const std::string &cameraId, const std::string &reason) {
// Log the device removal
- logEvent(String8::format("ADD device %s, reason: (%s)", cameraId, reason));
+ logEvent(fmt::sprintf("ADD device %s, reason: (%s)", cameraId.c_str(), reason.c_str()));
}
-void CameraService::logClientDied(int clientPid, const char* reason) {
+void CameraService::logClientDied(int clientPid, const std::string &reason) {
// Log the device removal
- logEvent(String8::format("DIED client(s) with PID %d, reason: (%s)", clientPid, reason));
+ logEvent(fmt::sprintf("DIED client(s) with PID %d, reason: (%s)", clientPid, reason.c_str()));
}
-void CameraService::logServiceError(const char* msg, int errorCode) {
- String8 curTime = getFormattedCurrentTime();
- logEvent(String8::format("SERVICE ERROR: %s : %d (%s)", msg, errorCode, strerror(-errorCode)));
+void CameraService::logServiceError(const std::string &msg, int errorCode) {
+ logEvent(fmt::sprintf("SERVICE ERROR: %s : %d (%s)", msg.c_str(), errorCode,
+ strerror(-errorCode)));
}
status_t CameraService::onTransact(uint32_t code, const Parcel& data, Parcel* reply,
@@ -3310,9 +3278,9 @@
CameraService::Client::Client(const sp<CameraService>& cameraService,
const sp<ICameraClient>& cameraClient,
- const String16& clientPackageName, bool systemNativeClient,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraIdStr,
+ const std::string& clientPackageName, bool systemNativeClient,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraIdStr,
int api1CameraId, int cameraFacing, int sensorOrientation,
int clientPid, uid_t clientUid,
int servicePid, bool overrideToPortrait) :
@@ -3348,8 +3316,8 @@
CameraService::BasicClient::BasicClient(const sp<CameraService>& cameraService,
const sp<IBinder>& remoteCallback,
- const String16& clientPackageName, bool nativeClient,
- const std::optional<String16>& clientFeatureId, const String8& cameraIdStr,
+ const std::string& clientPackageName, bool nativeClient,
+ const std::optional<std::string>& clientFeatureId, const std::string& cameraIdStr,
int cameraFacing, int sensorOrientation, int clientPid, uid_t clientUid,
int servicePid, bool overrideToPortrait):
mDestructionStarted(false),
@@ -3400,9 +3368,9 @@
mDisconnected = true;
sCameraService->removeByClient(this);
- sCameraService->logDisconnected(mCameraIdStr, mClientPid, String8(mClientPackageName));
+ sCameraService->logDisconnected(mCameraIdStr, mClientPid, mClientPackageName);
sCameraService->mCameraProviderManager->removeRef(CameraProviderManager::DeviceMode::CAMERA,
- mCameraIdStr.c_str());
+ mCameraIdStr);
sp<IBinder> remote = getRemote();
if (remote != nullptr) {
@@ -3412,7 +3380,7 @@
finishCameraOps();
// Notify flashlight that a camera device is closed.
sCameraService->mFlashlight->deviceClosed(mCameraIdStr);
- ALOGI("%s: Disconnected client for camera %s for PID %d", __FUNCTION__, mCameraIdStr.string(),
+ ALOGI("%s: Disconnected client for camera %s for PID %d", __FUNCTION__, mCameraIdStr.c_str(),
mClientPid);
// client shouldn't be able to call into us anymore
@@ -3429,7 +3397,7 @@
return OK;
}
-status_t CameraService::BasicClient::startWatchingTags(const String8&, int) {
+status_t CameraService::BasicClient::startWatchingTags(const std::string&, int) {
// Can't watch tags directly, must go through CameraService::startWatchingTags
return OK;
}
@@ -3444,7 +3412,7 @@
return OK;
}
-String16 CameraService::BasicClient::getPackageName() const {
+std::string CameraService::BasicClient::getPackageName() const {
return mClientPackageName;
}
@@ -3501,7 +3469,7 @@
status_t CameraService::BasicClient::handleAppOpMode(int32_t mode) {
if (mode == AppOpsManager::MODE_ERRORED) {
ALOGI("Camera %s: Access for \"%s\" has been revoked",
- mCameraIdStr.string(), String8(mClientPackageName).string());
+ mCameraIdStr.c_str(), mClientPackageName.c_str());
return PERMISSION_DENIED;
} else if (!mUidIsTrusted && mode == AppOpsManager::MODE_IGNORED) {
// If the calling Uid is trusted (a native service), the AppOpsManager could
@@ -3512,7 +3480,7 @@
sCameraService->mSensorPrivacyPolicy->isCameraPrivacyEnabled();
if (!isUidActive || !isCameraPrivacyEnabled) {
ALOGI("Camera %s: Access for \"%s\" has been restricted",
- mCameraIdStr.string(), String8(mClientPackageName).string());
+ mCameraIdStr.c_str(), mClientPackageName.c_str());
// Return the same error as for device policy manager rejection
return -EACCES;
}
@@ -3525,18 +3493,18 @@
{
ALOGV("%s: Start camera ops, package name = %s, client UID = %d",
- __FUNCTION__, String8(mClientPackageName).string(), mClientUid);
+ __FUNCTION__, mClientPackageName.c_str(), mClientUid);
}
if (mAppOpsManager != nullptr) {
// Notify app ops that the camera is not available
mOpsCallback = new OpsCallback(this);
mAppOpsManager->startWatchingMode(AppOpsManager::OP_CAMERA,
- mClientPackageName, mOpsCallback);
+ toString16(mClientPackageName), mOpsCallback);
// Just check for camera acccess here on open - delay startOp until
// camera frames start streaming in startCameraStreamingOps
int32_t mode = mAppOpsManager->checkOp(AppOpsManager::OP_CAMERA, mClientUid,
- mClientPackageName);
+ toString16(mClientPackageName));
status_t res = handleAppOpMode(mode);
if (res != OK) {
return res;
@@ -3569,12 +3537,13 @@
}
ALOGV("%s: Start camera streaming ops, package name = %s, client UID = %d",
- __FUNCTION__, String8(mClientPackageName).string(), mClientUid);
+ __FUNCTION__, mClientPackageName.c_str(), mClientUid);
if (mAppOpsManager != nullptr) {
int32_t mode = mAppOpsManager->startOpNoThrow(AppOpsManager::OP_CAMERA, mClientUid,
- mClientPackageName, /*startIfModeDefault*/ false, mClientFeatureId,
- String16("start camera ") + String16(mCameraIdStr));
+ toString16(mClientPackageName), /*startIfModeDefault*/ false,
+ toString16(mClientFeatureId),
+ toString16("start camera ") + toString16(mCameraIdStr));
status_t res = handleAppOpMode(mode);
if (res != OK) {
return res;
@@ -3590,14 +3559,14 @@
ATRACE_CALL();
ALOGV("%s: Start camera noteAppOp, package name = %s, client UID = %d",
- __FUNCTION__, String8(mClientPackageName).string(), mClientUid);
+ __FUNCTION__, mClientPackageName.c_str(), mClientUid);
// noteAppOp is only used for when camera mute is not supported, in order
// to trigger the sensor privacy "Unblock" dialog
if (mAppOpsManager != nullptr) {
int32_t mode = mAppOpsManager->noteOp(AppOpsManager::OP_CAMERA, mClientUid,
- mClientPackageName, mClientFeatureId,
- String16("start camera ") + String16(mCameraIdStr));
+ toString16(mClientPackageName), toString16(mClientFeatureId),
+ toString16("start camera ") + toString16(mCameraIdStr));
status_t res = handleAppOpMode(mode);
if (res != OK) {
return res;
@@ -3621,7 +3590,7 @@
if (mAppOpsManager != nullptr) {
mAppOpsManager->finishOp(AppOpsManager::OP_CAMERA, mClientUid,
- mClientPackageName, mClientFeatureId);
+ toString16(mClientPackageName), toString16(mClientFeatureId));
mOpsStreaming = false;
}
@@ -3677,7 +3646,7 @@
int32_t res;
res = mAppOpsManager->checkOp(AppOpsManager::OP_CAMERA,
- mClientUid, mClientPackageName);
+ mClientUid, toString16(mClientPackageName));
ALOGV("checkOp returns: %d, %s ", res,
res == AppOpsManager::MODE_ALLOWED ? "ALLOWED" :
res == AppOpsManager::MODE_IGNORED ? "IGNORED" :
@@ -3685,15 +3654,15 @@
"UNKNOWN");
if (res == AppOpsManager::MODE_ERRORED) {
- ALOGI("Camera %s: Access for \"%s\" revoked", mCameraIdStr.string(),
- String8(mClientPackageName).string());
+ ALOGI("Camera %s: Access for \"%s\" revoked", mCameraIdStr.c_str(),
+ mClientPackageName.c_str());
block();
} else if (res == AppOpsManager::MODE_IGNORED) {
bool isUidActive = sCameraService->mUidPolicy->isUidActive(mClientUid, mClientPackageName);
bool isCameraPrivacyEnabled =
sCameraService->mSensorPrivacyPolicy->isCameraPrivacyEnabled();
ALOGI("Camera %s: Access for \"%s\" has been restricted, isUidTrusted %d, isUidActive %d",
- mCameraIdStr.string(), String8(mClientPackageName).string(),
+ mCameraIdStr.c_str(), mClientPackageName.c_str(),
mUidIsTrusted, isUidActive);
// If the calling Uid is trusted (a native service), or the client Uid is active (WAR for
// b/175320666), the AppOpsManager could return MODE_IGNORED. Do not treat such cases as
@@ -3773,7 +3742,7 @@
| ActivityManager::UID_OBSERVER_ACTIVE | ActivityManager::UID_OBSERVER_PROCSTATE
| ActivityManager::UID_OBSERVER_PROC_OOM_ADJ,
ActivityManager::PROCESS_STATE_UNKNOWN,
- String16("cameraserver"));
+ toString16(kServiceName));
if (res == OK) {
mRegistered = true;
ALOGV("UidPolicy: Registered with ActivityManager");
@@ -3878,7 +3847,7 @@
}
}
-bool CameraService::UidPolicy::isUidActive(uid_t uid, String16 callingPackage) {
+bool CameraService::UidPolicy::isUidActive(uid_t uid, const std::string &callingPackage) {
Mutex::Autolock _l(mUidLock);
return isUidActiveLocked(uid, callingPackage);
}
@@ -3886,7 +3855,7 @@
static const int64_t kPollUidActiveTimeoutTotalMillis = 300;
static const int64_t kPollUidActiveTimeoutMillis = 50;
-bool CameraService::UidPolicy::isUidActiveLocked(uid_t uid, String16 callingPackage) {
+bool CameraService::UidPolicy::isUidActiveLocked(uid_t uid, const std::string &callingPackage) {
// Non-app UIDs are considered always active
// If activity manager is unreachable, assume everything is active
if (uid < FIRST_APPLICATION_UID || !mRegistered) {
@@ -3913,7 +3882,7 @@
// some polling which should happen pretty rarely anyway as the race is hard
// to hit.
active = mActiveUids.find(uid) != mActiveUids.end();
- if (!active) active = am.isUidActive(uid, callingPackage);
+ if (!active) active = am.isUidActive(uid, toString16(callingPackage));
if (active) {
break;
}
@@ -3953,12 +3922,12 @@
return procState;
}
-void CameraService::UidPolicy::UidPolicy::addOverrideUid(uid_t uid,
- String16 callingPackage, bool active) {
+void CameraService::UidPolicy::addOverrideUid(uid_t uid,
+ const std::string &callingPackage, bool active) {
updateOverrideUid(uid, callingPackage, active, true);
}
-void CameraService::UidPolicy::removeOverrideUid(uid_t uid, String16 callingPackage) {
+void CameraService::UidPolicy::removeOverrideUid(uid_t uid, const std::string &callingPackage) {
updateOverrideUid(uid, callingPackage, false, false);
}
@@ -3969,7 +3938,7 @@
mActiveUids.clear();
}
-void CameraService::UidPolicy::updateOverrideUid(uid_t uid, String16 callingPackage,
+void CameraService::UidPolicy::updateOverrideUid(uid_t uid, const std::string &callingPackage,
bool active, bool insert) {
bool wasActive = false;
bool isActive = false;
@@ -4062,8 +4031,8 @@
// CameraState
// ----------------------------------------------------------------------------
-CameraService::CameraState::CameraState(const String8& id, int cost,
- const std::set<String8>& conflicting, SystemCameraKind systemCameraKind,
+CameraService::CameraState::CameraState(const std::string& id, int cost,
+ const std::set<std::string>& conflicting, SystemCameraKind systemCameraKind,
const std::vector<std::string>& physicalCameras) : mId(id),
mStatus(StatusInternal::NOT_PRESENT), mCost(cost), mConflicting(conflicting),
mSystemCameraKind(systemCameraKind), mPhysicalCameras(physicalCameras) {}
@@ -4075,9 +4044,9 @@
return mStatus;
}
-std::vector<String8> CameraService::CameraState::getUnavailablePhysicalIds() const {
+std::vector<std::string> CameraService::CameraState::getUnavailablePhysicalIds() const {
Mutex::Autolock lock(mStatusLock);
- std::vector<String8> res(mUnavailablePhysicalIds.begin(), mUnavailablePhysicalIds.end());
+ std::vector<std::string> res(mUnavailablePhysicalIds.begin(), mUnavailablePhysicalIds.end());
return res;
}
@@ -4093,14 +4062,10 @@
return mCost;
}
-std::set<String8> CameraService::CameraState::getConflicting() const {
+std::set<std::string> CameraService::CameraState::getConflicting() const {
return mConflicting;
}
-String8 CameraService::CameraState::getId() const {
- return mId;
-}
-
SystemCameraKind CameraService::CameraState::getSystemCameraKind() const {
return mSystemCameraKind;
}
@@ -4110,24 +4075,24 @@
!= mPhysicalCameras.end();
}
-bool CameraService::CameraState::addUnavailablePhysicalId(const String8& physicalId) {
+bool CameraService::CameraState::addUnavailablePhysicalId(const std::string& physicalId) {
Mutex::Autolock lock(mStatusLock);
auto result = mUnavailablePhysicalIds.insert(physicalId);
return result.second;
}
-bool CameraService::CameraState::removeUnavailablePhysicalId(const String8& physicalId) {
+bool CameraService::CameraState::removeUnavailablePhysicalId(const std::string& physicalId) {
Mutex::Autolock lock(mStatusLock);
auto count = mUnavailablePhysicalIds.erase(physicalId);
return count > 0;
}
-void CameraService::CameraState::setClientPackage(const String8& clientPackage) {
+void CameraService::CameraState::setClientPackage(const std::string& clientPackage) {
Mutex::Autolock lock(mStatusLock);
mClientPackage = clientPackage;
}
-String8 CameraService::CameraState::getClientPackage() const {
+std::string CameraService::CameraState::getClientPackage() const {
Mutex::Autolock lock(mStatusLock);
return mClientPackage;
}
@@ -4137,23 +4102,23 @@
// ----------------------------------------------------------------------------
void CameraService::ClientEventListener::onClientAdded(
- const resource_policy::ClientDescriptor<String8,
+ const resource_policy::ClientDescriptor<std::string,
sp<CameraService::BasicClient>>& descriptor) {
const auto& basicClient = descriptor.getValue();
if (basicClient.get() != nullptr) {
BatteryNotifier& notifier(BatteryNotifier::getInstance());
- notifier.noteStartCamera(descriptor.getKey(),
+ notifier.noteStartCamera(toString8(descriptor.getKey()),
static_cast<int>(basicClient->getClientUid()));
}
}
void CameraService::ClientEventListener::onClientRemoved(
- const resource_policy::ClientDescriptor<String8,
+ const resource_policy::ClientDescriptor<std::string,
sp<CameraService::BasicClient>>& descriptor) {
const auto& basicClient = descriptor.getValue();
if (basicClient.get() != nullptr) {
BatteryNotifier& notifier(BatteryNotifier::getInstance());
- notifier.noteStopCamera(descriptor.getKey(),
+ notifier.noteStopCamera(toString8(descriptor.getKey()),
static_cast<int>(basicClient->getClientUid()));
}
}
@@ -4170,7 +4135,7 @@
CameraService::CameraClientManager::~CameraClientManager() {}
sp<CameraService::BasicClient> CameraService::CameraClientManager::getCameraClient(
- const String8& id) const {
+ const std::string& id) const {
auto descriptor = get(id);
if (descriptor == nullptr) {
return sp<BasicClient>{nullptr};
@@ -4178,56 +4143,57 @@
return descriptor->getValue();
}
-String8 CameraService::CameraClientManager::toString() const {
+std::string CameraService::CameraClientManager::toString() const {
auto all = getAll();
- String8 ret("[");
+ std::ostringstream ret;
+ ret << "[";
bool hasAny = false;
for (auto& i : all) {
hasAny = true;
- String8 key = i->getKey();
+ std::string key = i->getKey();
int32_t cost = i->getCost();
int32_t pid = i->getOwnerId();
int32_t score = i->getPriority().getScore();
int32_t state = i->getPriority().getState();
auto conflicting = i->getConflicting();
auto clientSp = i->getValue();
- String8 packageName;
+ std::string packageName;
userid_t clientUserId = 0;
if (clientSp.get() != nullptr) {
- packageName = String8{clientSp->getPackageName()};
+ packageName = clientSp->getPackageName();
uid_t clientUid = clientSp->getClientUid();
clientUserId = multiuser_get_user_id(clientUid);
}
- ret.appendFormat("\n(Camera ID: %s, Cost: %" PRId32 ", PID: %" PRId32 ", Score: %"
- PRId32 ", State: %" PRId32, key.string(), cost, pid, score, state);
+ ret << fmt::sprintf("\n(Camera ID: %s, Cost: %" PRId32 ", PID: %" PRId32 ", Score: %"
+ PRId32 ", State: %" PRId32, key.c_str(), cost, pid, score, state);
if (clientSp.get() != nullptr) {
- ret.appendFormat("User Id: %d, ", clientUserId);
+ ret << fmt::sprintf("User Id: %d, ", clientUserId);
}
if (packageName.size() != 0) {
- ret.appendFormat("Client Package Name: %s", packageName.string());
+ ret << fmt::sprintf("Client Package Name: %s", packageName.c_str());
}
- ret.append(", Conflicting Client Devices: {");
+ ret << ", Conflicting Client Devices: {";
for (auto& j : conflicting) {
- ret.appendFormat("%s, ", j.string());
+ ret << fmt::sprintf("%s, ", j.c_str());
}
- ret.append("})");
+ ret << "})";
}
- if (hasAny) ret.append("\n");
- ret.append("]\n");
- return ret;
+ if (hasAny) ret << "\n";
+ ret << "]\n";
+ return std::move(ret.str());
}
CameraService::DescriptorPtr CameraService::CameraClientManager::makeClientDescriptor(
- const String8& key, const sp<BasicClient>& value, int32_t cost,
- const std::set<String8>& conflictingKeys, int32_t score, int32_t ownerId,
+ const std::string& key, const sp<BasicClient>& value, int32_t cost,
+ const std::set<std::string>& conflictingKeys, int32_t score, int32_t ownerId,
int32_t state, int32_t oomScoreOffset, bool systemNativeClient) {
int32_t score_adj = systemNativeClient ? kSystemNativeClientScore : score;
- int32_t state_adj = systemNativeClient ? kSystemNativeClientState: state;
+ int32_t state_adj = systemNativeClient ? kSystemNativeClientState : state;
- return std::make_shared<resource_policy::ClientDescriptor<String8, sp<BasicClient>>>(
+ return std::make_shared<resource_policy::ClientDescriptor<std::string, sp<BasicClient>>>(
key, value, cost, conflictingKeys, score_adj, ownerId, state_adj,
systemNativeClient, oomScoreOffset);
}
@@ -4266,7 +4232,7 @@
}
void CameraService::InjectionStatusListener::notifyInjectionError(
- String8 injectedCamId, status_t err) {
+ const std::string &injectedCamId, status_t err) {
if (mCameraInjectionCallback == nullptr) {
ALOGW("InjectionStatusListener: mCameraInjectionCallback == nullptr");
return;
@@ -4277,37 +4243,37 @@
mCameraInjectionCallback->onInjectionError(
ICameraInjectionCallback::ERROR_INJECTION_SESSION);
ALOGE("No camera device with ID \"%s\" currently available!",
- injectedCamId.string());
+ injectedCamId.c_str());
break;
case -EBUSY:
mCameraInjectionCallback->onInjectionError(
ICameraInjectionCallback::ERROR_INJECTION_SESSION);
ALOGE("Higher-priority client using camera, ID \"%s\" currently unavailable!",
- injectedCamId.string());
+ injectedCamId.c_str());
break;
case DEAD_OBJECT:
mCameraInjectionCallback->onInjectionError(
ICameraInjectionCallback::ERROR_INJECTION_SESSION);
ALOGE("Camera ID \"%s\" object is dead!",
- injectedCamId.string());
+ injectedCamId.c_str());
break;
case INVALID_OPERATION:
mCameraInjectionCallback->onInjectionError(
ICameraInjectionCallback::ERROR_INJECTION_SESSION);
ALOGE("Camera ID \"%s\" encountered an operating or internal error!",
- injectedCamId.string());
+ injectedCamId.c_str());
break;
case UNKNOWN_TRANSACTION:
mCameraInjectionCallback->onInjectionError(
ICameraInjectionCallback::ERROR_INJECTION_UNSUPPORTED);
ALOGE("Camera ID \"%s\" method doesn't support!",
- injectedCamId.string());
+ injectedCamId.c_str());
break;
default:
mCameraInjectionCallback->onInjectionError(
ICameraInjectionCallback::ERROR_INJECTION_INVALID_ERROR);
ALOGE("Unexpected error %s (%d) opening camera \"%s\"!",
- strerror(-err), err, injectedCamId.string());
+ strerror(-err), err, injectedCamId.c_str());
}
}
@@ -4383,10 +4349,10 @@
Mutex::Autolock l(mCameraStatesLock);
// Start collecting the info for open sessions and store it in temp file.
for (const auto& state : mCameraStates) {
- String8 cameraId = state.first;
+ std::string cameraId = state.first;
auto clientDescriptor = mActiveClientManager.get(cameraId);
if (clientDescriptor != nullptr) {
- dprintf(mMemFd, "== Camera device %s dynamic info: ==\n", cameraId.string());
+ dprintf(mMemFd, "== Camera device %s dynamic info: ==\n", cameraId.c_str());
// Log the current open session info before device is disconnected.
dumpOpenSessionClientLogs(mMemFd, args, cameraId);
}
@@ -4397,7 +4363,7 @@
status_t CameraService::dump(int fd, const Vector<String16>& args) {
ATRACE_CALL();
- if (checkCallingPermission(sDumpPermission) == false) {
+ if (checkCallingPermission(toString16(sDumpPermission)) == false) {
dprintf(fd, "Permission Denial: can't dump CameraService from pid=%d, uid=%d\n",
CameraThreadState::getCallingPid(),
CameraThreadState::getCallingUid());
@@ -4426,9 +4392,9 @@
for (size_t i = 0; i < mNormalDeviceIds.size(); i++) {
dprintf(fd, " Device %zu maps to \"%s\"\n", i, mNormalDeviceIds[i].c_str());
}
- String8 activeClientString = mActiveClientManager.toString();
- dprintf(fd, "Active Camera Clients:\n%s", activeClientString.string());
- dprintf(fd, "Allowed user IDs: %s\n", toString(mAllowedUsers).string());
+ std::string activeClientString = mActiveClientManager.toString();
+ dprintf(fd, "Active Camera Clients:\n%s", activeClientString.c_str());
+ dprintf(fd, "Allowed user IDs: %s\n", toString(mAllowedUsers).c_str());
if (mStreamUseCaseOverrides.size() > 0) {
dprintf(fd, "Active stream use case overrides:");
for (int64_t useCaseOverride : mStreamUseCaseOverrides) {
@@ -4446,18 +4412,18 @@
int argSize = args.size();
for (int i = 0; i < argSize; i++) {
- if (args[i] == TagMonitor::kMonitorOption) {
+ if (args[i] == toString16(TagMonitor::kMonitorOption)) {
if (i + 1 < argSize) {
- mMonitorTags = String8(args[i + 1]);
+ mMonitorTags = toStdString(args[i + 1]);
}
break;
}
}
for (auto& state : mCameraStates) {
- String8 cameraId = state.first;
+ const std::string &cameraId = state.first;
- dprintf(fd, "== Camera device %s dynamic info: ==\n", cameraId.string());
+ dprintf(fd, "== Camera device %s dynamic info: ==\n", cameraId.c_str());
CameraParameters p = state.second->getShimParams();
if (!p.isEmpty()) {
@@ -4508,8 +4474,8 @@
if (args[i] == verboseOption) {
// change logging level
if (i + 1 >= n) continue;
- String8 levelStr(args[i+1]);
- int level = atoi(levelStr.string());
+ std::string levelStr = toStdString(args[i+1]);
+ int level = atoi(levelStr.c_str());
dprintf(fd, "\nSetting log level to %d.\n", level);
setLogLevel(level);
} else if (args[i] == unreachableOption) {
@@ -4555,11 +4521,11 @@
}
void CameraService::dumpOpenSessionClientLogs(int fd,
- const Vector<String16>& args, const String8& cameraId) {
+ const Vector<String16>& args, const std::string& cameraId) {
auto clientDescriptor = mActiveClientManager.get(cameraId);
dprintf(fd, " %s : Device %s is open. Client instance dump:\n",
- getFormattedCurrentTime().string(),
- cameraId.string());
+ getFormattedCurrentTime().c_str(),
+ cameraId.c_str());
dprintf(fd, " Client priority score: %d state: %d\n",
clientDescriptor->getPriority().getScore(),
clientDescriptor->getPriority().getState());
@@ -4567,14 +4533,14 @@
auto client = clientDescriptor->getValue();
dprintf(fd, " Client package: %s\n",
- String8(client->getPackageName()).string());
+ client->getPackageName().c_str());
client->dumpClient(fd, args);
}
-void CameraService::dumpClosedSessionClientLogs(int fd, const String8& cameraId) {
+void CameraService::dumpClosedSessionClientLogs(int fd, const std::string& cameraId) {
dprintf(fd, " Device %s is closed, no client instance\n",
- cameraId.string());
+ cameraId.c_str());
}
void CameraService::dumpEventLog(int fd) {
@@ -4582,7 +4548,7 @@
Mutex::Autolock l(mLogLock);
for (const auto& msg : mEventLog) {
- dprintf(fd, " %s\n", msg.string());
+ dprintf(fd, " %s\n", msg.c_str());
}
if (mEventLog.size() == DEFAULT_EVENT_LOG_LENGTH) {
@@ -4593,7 +4559,7 @@
dprintf(fd, "\n");
}
-void CameraService::cacheClientTagDumpIfNeeded(const char *cameraId, BasicClient* client) {
+void CameraService::cacheClientTagDumpIfNeeded(const std::string &cameraId, BasicClient* client) {
Mutex::Autolock lock(mLogLock);
if (!isClientWatchedLocked(client)) { return; }
@@ -4602,34 +4568,26 @@
if (dumpVector.empty()) { return; }
- std::string dumpString;
+ std::ostringstream dumpString;
- String8 currentTime = getFormattedCurrentTime();
- dumpString += "Cached @ ";
- dumpString += currentTime.string();
- dumpString += "\n"; // First line is the timestamp of when client is cached.
-
-
- const String16 &packageName = client->getPackageName();
-
- String8 packageName8 = String8(packageName);
- const char *printablePackageName = packageName8.lockBuffer(packageName.size());
-
+ std::string currentTime = getFormattedCurrentTime();
+ dumpString << "Cached @ ";
+ dumpString << currentTime;
+ dumpString << "\n"; // First line is the timestamp of when client is cached.
size_t i = dumpVector.size();
// Store the string in reverse order (latest last)
while (i > 0) {
i--;
- dumpString += cameraId;
- dumpString += ":";
- dumpString += printablePackageName;
- dumpString += " ";
- dumpString += dumpVector[i]; // implicitly ends with '\n'
+ dumpString << cameraId;
+ dumpString << ":";
+ dumpString << client->getPackageName();
+ dumpString << " ";
+ dumpString << dumpVector[i]; // implicitly ends with '\n'
}
- packageName8.unlockBuffer();
- mWatchedClientsDumpCache[packageName] = dumpString;
+ mWatchedClientsDumpCache[client->getPackageName()] = dumpString.str();
}
void CameraService::handleTorchClientBinderDied(const wp<IBinder> &who) {
@@ -4637,7 +4595,7 @@
for (size_t i = 0; i < mTorchClientMap.size(); i++) {
if (mTorchClientMap[i] == who) {
// turn off the torch mode that was turned on by dead client
- String8 cameraId = mTorchClientMap.keyAt(i);
+ std::string cameraId = mTorchClientMap.keyAt(i);
status_t res = mFlashlight->setTorchMode(cameraId, false);
if (res) {
ALOGE("%s: torch client died but couldn't turn off torch: "
@@ -4657,7 +4615,7 @@
* binder driver
*/
// PID here is approximate and can be wrong.
- logClientDied(CameraThreadState::getCallingPid(), String8("Binder died unexpectedly"));
+ logClientDied(CameraThreadState::getCallingPid(), "Binder died unexpectedly");
// check torch client
handleTorchClientBinderDied(who);
@@ -4672,11 +4630,11 @@
__FUNCTION__);
}
-void CameraService::updateStatus(StatusInternal status, const String8& cameraId) {
+void CameraService::updateStatus(StatusInternal status, const std::string& cameraId) {
updateStatus(status, cameraId, {});
}
-void CameraService::updateStatus(StatusInternal status, const String8& cameraId,
+void CameraService::updateStatus(StatusInternal status, const std::string& cameraId,
std::initializer_list<StatusInternal> rejectSourceStates) {
// Do not lock mServiceLock here or can get into a deadlock from
// connect() -> disconnect -> updateStatus
@@ -4685,14 +4643,14 @@
if (state == nullptr) {
ALOGW("%s: Could not update the status for %s, no such device exists", __FUNCTION__,
- cameraId.string());
+ cameraId.c_str());
return;
}
// Avoid calling getSystemCameraKind() with mStatusListenerLock held (b/141756275)
SystemCameraKind deviceKind = SystemCameraKind::PUBLIC;
if (getSystemCameraKind(cameraId, &deviceKind) != OK) {
- ALOGE("%s: Invalid camera id %s, skipping", __FUNCTION__, cameraId.string());
+ ALOGE("%s: Invalid camera id %s, skipping", __FUNCTION__, cameraId.c_str());
return;
}
@@ -4703,7 +4661,7 @@
// of the listeners with both the mStatusLock and mStatusListenerLock held
state->updateStatus(status, cameraId, rejectSourceStates, [this, &deviceKind,
&logicalCameraIds]
- (const String8& cameraId, StatusInternal status) {
+ (const std::string& cameraId, StatusInternal status) {
if (status != StatusInternal::ENUMERATING) {
// Update torch status if it has a flash unit.
@@ -4722,7 +4680,7 @@
}
Mutex::Autolock lock(mStatusListenerLock);
- notifyPhysicalCameraStatusLocked(mapToInterface(status), String16(cameraId),
+ notifyPhysicalCameraStatusLocked(mapToInterface(status), cameraId,
logicalCameraIds, deviceKind);
for (auto& listener : mListenerList) {
@@ -4735,23 +4693,23 @@
continue;
}
listener->getListener()->onStatusChanged(mapToInterface(status),
- String16(cameraId));
+ cameraId);
}
});
}
-void CameraService::updateOpenCloseStatus(const String8& cameraId, bool open,
- const String16& clientPackageName) {
+void CameraService::updateOpenCloseStatus(const std::string& cameraId, bool open,
+ const std::string& clientPackageName) {
auto state = getCameraState(cameraId);
if (state == nullptr) {
ALOGW("%s: Could not update the status for %s, no such device exists", __FUNCTION__,
- cameraId.string());
+ cameraId.c_str());
return;
}
if (open) {
- state->setClientPackage(String8(clientPackageName));
+ state->setClientPackage(clientPackageName);
} else {
- state->setClientPackage(String8::empty());
+ state->setClientPackage(std::string());
}
Mutex::Autolock lock(mStatusListenerLock);
@@ -4762,11 +4720,10 @@
}
binder::Status ret;
- String16 cameraId64(cameraId);
if (open) {
- ret = it->getListener()->onCameraOpened(cameraId64, clientPackageName);
+ ret = it->getListener()->onCameraOpened(cameraId, clientPackageName);
} else {
- ret = it->getListener()->onCameraClosed(cameraId64);
+ ret = it->getListener()->onCameraClosed(cameraId);
}
if (!ret.isOk()) {
ALOGE("%s: Failed to trigger onCameraOpened/onCameraClosed callback: %d", __FUNCTION__,
@@ -4777,7 +4734,7 @@
template<class Func>
void CameraService::CameraState::updateStatus(StatusInternal status,
- const String8& cameraId,
+ const std::string& cameraId,
std::initializer_list<StatusInternal> rejectSourceStates,
Func onStatusUpdatedLocked) {
Mutex::Autolock lock(mStatusLock);
@@ -4789,7 +4746,7 @@
}
ALOGV("%s: Status has changed for camera ID %s from %#x to %#x", __FUNCTION__,
- cameraId.string(), oldStatus, status);
+ cameraId.c_str(), oldStatus, status);
if (oldStatus == StatusInternal::NOT_PRESENT &&
(status != StatusInternal::PRESENT &&
@@ -4809,7 +4766,7 @@
for (auto& rejectStatus : rejectSourceStates) {
if (oldStatus == rejectStatus) {
ALOGV("%s: Rejecting status transition for Camera ID %s, since the source "
- "state was was in one of the bad states.", __FUNCTION__, cameraId.string());
+ "state was was in one of the bad states.", __FUNCTION__, cameraId.c_str());
mStatus = oldStatus;
return;
}
@@ -4819,7 +4776,7 @@
}
status_t CameraService::getTorchStatusLocked(
- const String8& cameraId,
+ const std::string& cameraId,
TorchModeStatus *status) const {
if (!status) {
return BAD_VALUE;
@@ -4834,7 +4791,7 @@
return OK;
}
-status_t CameraService::setTorchStatusLocked(const String8& cameraId,
+status_t CameraService::setTorchStatusLocked(const std::string& cameraId,
TorchModeStatus status) {
ssize_t index = mTorchStatusMap.indexOfKey(cameraId);
if (index == NAME_NOT_FOUND) {
@@ -4845,20 +4802,20 @@
return OK;
}
-std::list<String16> CameraService::getLogicalCameras(
- const String8& physicalCameraId) {
- std::list<String16> retList;
+std::list<std::string> CameraService::getLogicalCameras(
+ const std::string& physicalCameraId) {
+ std::list<std::string> retList;
Mutex::Autolock lock(mCameraStatesLock);
for (const auto& state : mCameraStates) {
- if (state.second->containsPhysicalCamera(physicalCameraId.c_str())) {
- retList.emplace_back(String16(state.first));
+ if (state.second->containsPhysicalCamera(physicalCameraId)) {
+ retList.emplace_back(state.first);
}
}
return retList;
}
void CameraService::notifyPhysicalCameraStatusLocked(int32_t status,
- const String16& physicalCameraId, const std::list<String16>& logicalCameraIds,
+ const std::string& physicalCameraId, const std::list<std::string>& logicalCameraIds,
SystemCameraKind deviceKind) {
// mStatusListenerLock is expected to be locked
for (const auto& logicalCameraId : logicalCameraIds) {
@@ -4869,7 +4826,7 @@
if (shouldSkipStatusUpdates(deviceKind, listener->isVendorListener(),
listener->getListenerPid(), listener->getListenerUid())) {
ALOGV("Skipping discovery callback for system-only camera device %s",
- String8(physicalCameraId).c_str());
+ physicalCameraId.c_str());
continue;
}
listener->getListener()->onPhysicalCameraStatusChanged(status,
@@ -4905,37 +4862,37 @@
// NOTE: This is a remote API - make sure all args are validated
status_t CameraService::shellCommand(int in, int out, int err, const Vector<String16>& args) {
- if (!checkCallingPermission(sManageCameraPermission, nullptr, nullptr)) {
+ if (!checkCallingPermission(toString16(sManageCameraPermission), nullptr, nullptr)) {
return PERMISSION_DENIED;
}
if (in == BAD_TYPE || out == BAD_TYPE || err == BAD_TYPE) {
return BAD_VALUE;
}
- if (args.size() >= 3 && args[0] == String16("set-uid-state")) {
+ if (args.size() >= 3 && args[0] == toString16("set-uid-state")) {
return handleSetUidState(args, err);
- } else if (args.size() >= 2 && args[0] == String16("reset-uid-state")) {
+ } else if (args.size() >= 2 && args[0] == toString16("reset-uid-state")) {
return handleResetUidState(args, err);
- } else if (args.size() >= 2 && args[0] == String16("get-uid-state")) {
+ } else if (args.size() >= 2 && args[0] == toString16("get-uid-state")) {
return handleGetUidState(args, out, err);
- } else if (args.size() >= 2 && args[0] == String16("set-rotate-and-crop")) {
+ } else if (args.size() >= 2 && args[0] == toString16("set-rotate-and-crop")) {
return handleSetRotateAndCrop(args);
- } else if (args.size() >= 1 && args[0] == String16("get-rotate-and-crop")) {
+ } else if (args.size() >= 1 && args[0] == toString16("get-rotate-and-crop")) {
return handleGetRotateAndCrop(out);
- } else if (args.size() >= 2 && args[0] == String16("set-image-dump-mask")) {
+ } else if (args.size() >= 2 && args[0] == toString16("set-image-dump-mask")) {
return handleSetImageDumpMask(args);
- } else if (args.size() >= 1 && args[0] == String16("get-image-dump-mask")) {
+ } else if (args.size() >= 1 && args[0] == toString16("get-image-dump-mask")) {
return handleGetImageDumpMask(out);
- } else if (args.size() >= 2 && args[0] == String16("set-camera-mute")) {
+ } else if (args.size() >= 2 && args[0] == toString16("set-camera-mute")) {
return handleSetCameraMute(args);
- } else if (args.size() >= 2 && args[0] == String16("set-stream-use-case-override")) {
+ } else if (args.size() >= 2 && args[0] == toString16("set-stream-use-case-override")) {
return handleSetStreamUseCaseOverrides(args);
- } else if (args.size() >= 1 && args[0] == String16("clear-stream-use-case-override")) {
+ } else if (args.size() >= 1 && args[0] == toString16("clear-stream-use-case-override")) {
return handleClearStreamUseCaseOverrides();
- } else if (args.size() >= 2 && args[0] == String16("watch")) {
+ } else if (args.size() >= 2 && args[0] == toString16("watch")) {
return handleWatchCommand(args, in, out);
- } else if (args.size() >= 2 && args[0] == String16("set-watchdog")) {
+ } else if (args.size() >= 2 && args[0] == toString16("set-watchdog")) {
return handleSetCameraServiceWatchdog(args);
- } else if (args.size() == 1 && args[0] == String16("help")) {
+ } else if (args.size() == 1 && args[0] == toString16("help")) {
printHelp(out);
return OK;
}
@@ -4944,19 +4901,19 @@
}
status_t CameraService::handleSetUidState(const Vector<String16>& args, int err) {
- String16 packageName = args[1];
+ std::string packageName = toStdString(args[1]);
bool active = false;
- if (args[2] == String16("active")) {
+ if (args[2] == toString16("active")) {
active = true;
- } else if ((args[2] != String16("idle"))) {
- ALOGE("Expected active or idle but got: '%s'", String8(args[2]).string());
+ } else if ((args[2] != toString16("idle"))) {
+ ALOGE("Expected active or idle but got: '%s'", toStdString(args[2]).c_str());
return BAD_VALUE;
}
int userId = 0;
- if (args.size() >= 5 && args[3] == String16("--user")) {
- userId = atoi(String8(args[4]));
+ if (args.size() >= 5 && args[3] == toString16("--user")) {
+ userId = atoi(toStdString(args[4]).c_str());
}
uid_t uid;
@@ -4969,11 +4926,11 @@
}
status_t CameraService::handleResetUidState(const Vector<String16>& args, int err) {
- String16 packageName = args[1];
+ std::string packageName = toStdString(args[1]);
int userId = 0;
- if (args.size() >= 4 && args[2] == String16("--user")) {
- userId = atoi(String8(args[3]));
+ if (args.size() >= 4 && args[2] == toString16("--user")) {
+ userId = atoi(toStdString(args[3]).c_str());
}
uid_t uid;
@@ -4986,11 +4943,11 @@
}
status_t CameraService::handleGetUidState(const Vector<String16>& args, int out, int err) {
- String16 packageName = args[1];
+ std::string packageName = toStdString(args[1]);
int userId = 0;
- if (args.size() >= 4 && args[2] == String16("--user")) {
- userId = atoi(String8(args[3]));
+ if (args.size() >= 4 && args[2] == toString16("--user")) {
+ userId = atoi(toStdString(args[3]).c_str());
}
uid_t uid;
@@ -5006,7 +4963,7 @@
}
status_t CameraService::handleSetRotateAndCrop(const Vector<String16>& args) {
- int rotateValue = atoi(String8(args[1]));
+ int rotateValue = atoi(toStdString(args[1]).c_str());
if (rotateValue < ANDROID_SCALER_ROTATE_AND_CROP_NONE ||
rotateValue > ANDROID_SCALER_ROTATE_AND_CROP_AUTO) return BAD_VALUE;
Mutex::Autolock lock(mServiceLock);
@@ -5029,7 +4986,7 @@
}
status_t CameraService::handleSetCameraServiceWatchdog(const Vector<String16>& args) {
- int enableWatchdog = atoi(String8(args[1]));
+ int enableWatchdog = atoi(toStdString(args[1]).c_str());
if (enableWatchdog < 0 || enableWatchdog > 1) return BAD_VALUE;
@@ -5059,11 +5016,11 @@
status_t CameraService::handleSetImageDumpMask(const Vector<String16>& args) {
char *endPtr;
errno = 0;
- String8 maskString8 = String8(args[1]);
- long maskValue = strtol(maskString8.c_str(), &endPtr, 10);
+ std::string maskString = toStdString(args[1]);
+ long maskValue = strtol(maskString.c_str(), &endPtr, 10);
if (errno != 0) return BAD_VALUE;
- if (endPtr != maskString8.c_str() + maskString8.size()) return BAD_VALUE;
+ if (endPtr != maskString.c_str() + maskString.size()) return BAD_VALUE;
if (maskValue < 0 || maskValue > 1) return BAD_VALUE;
Mutex::Autolock lock(mServiceLock);
@@ -5080,7 +5037,7 @@
}
status_t CameraService::handleSetCameraMute(const Vector<String16>& args) {
- int muteValue = strtol(String8(args[1]), nullptr, 10);
+ int muteValue = strtol(toStdString(args[1]).c_str(), nullptr, 10);
if (errno != 0) return BAD_VALUE;
if (muteValue < 0 || muteValue > 1) return BAD_VALUE;
@@ -5107,21 +5064,21 @@
std::vector<int64_t> useCasesOverride;
for (size_t i = 1; i < args.size(); i++) {
int64_t useCase = ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT;
- String8 arg8 = String8(args[i]);
- if (arg8 == "DEFAULT") {
+ std::string arg = toStdString(args[i]);
+ if (arg == "DEFAULT") {
useCase = ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT;
- } else if (arg8 == "PREVIEW") {
+ } else if (arg == "PREVIEW") {
useCase = ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW;
- } else if (arg8 == "STILL_CAPTURE") {
+ } else if (arg == "STILL_CAPTURE") {
useCase = ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE;
- } else if (arg8 == "VIDEO_RECORD") {
+ } else if (arg == "VIDEO_RECORD") {
useCase = ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_RECORD;
- } else if (arg8 == "PREVIEW_VIDEO_STILL") {
+ } else if (arg == "PREVIEW_VIDEO_STILL") {
useCase = ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW_VIDEO_STILL;
- } else if (arg8 == "VIDEO_CALL") {
+ } else if (arg == "VIDEO_CALL") {
useCase = ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL;
} else {
- ALOGE("%s: Invalid stream use case %s", __FUNCTION__, String8(args[i]).c_str());
+ ALOGE("%s: Invalid stream use case %s", __FUNCTION__, arg.c_str());
return BAD_VALUE;
}
useCasesOverride.push_back(useCase);
@@ -5141,15 +5098,15 @@
}
status_t CameraService::handleWatchCommand(const Vector<String16>& args, int inFd, int outFd) {
- if (args.size() >= 3 && args[1] == String16("start")) {
+ if (args.size() >= 3 && args[1] == toString16("start")) {
return startWatchingTags(args, outFd);
- } else if (args.size() == 2 && args[1] == String16("stop")) {
+ } else if (args.size() == 2 && args[1] == toString16("stop")) {
return stopWatchingTags(outFd);
- } else if (args.size() == 2 && args[1] == String16("dump")) {
+ } else if (args.size() == 2 && args[1] == toString16("dump")) {
return printWatchedTags(outFd);
- } else if (args.size() >= 2 && args[1] == String16("live")) {
+ } else if (args.size() >= 2 && args[1] == toString16("live")) {
return printWatchedTagsUntilInterrupt(args, inFd, outFd);
- } else if (args.size() == 2 && args[1] == String16("clear")) {
+ } else if (args.size() == 2 && args[1] == toString16("clear")) {
return clearCachedMonitoredTagDumps(outFd);
}
dprintf(outFd, "Camera service watch commands:\n"
@@ -5170,7 +5127,7 @@
Mutex::Autolock lock(mLogLock);
size_t tagsIdx; // index of '-m'
String16 tags("");
- for (tagsIdx = 2; tagsIdx < args.size() && args[tagsIdx] != String16("-m"); tagsIdx++);
+ for (tagsIdx = 2; tagsIdx < args.size() && args[tagsIdx] != toString16("-m"); tagsIdx++);
if (tagsIdx < args.size() - 1) {
tags = args[tagsIdx + 1];
} else {
@@ -5179,16 +5136,17 @@
}
size_t clientsIdx; // index of '-c'
- String16 clients = kWatchAllClientsFlag; // watch all clients if no clients are provided
- for (clientsIdx = 2; clientsIdx < args.size() && args[clientsIdx] != String16("-c");
+ // watch all clients if no clients are provided
+ String16 clients = toString16(kWatchAllClientsFlag);
+ for (clientsIdx = 2; clientsIdx < args.size() && args[clientsIdx] != toString16("-c");
clientsIdx++);
if (clientsIdx < args.size() - 1) {
clients = args[clientsIdx + 1];
}
- parseClientsToWatchLocked(String8(clients));
+ parseClientsToWatchLocked(toStdString(clients));
// track tags to initialize future clients with the monitoring information
- mMonitorTags = String8(tags);
+ mMonitorTags = toStdString(tags);
bool serviceLock = tryLock(mServiceLock);
int numWatchedClients = 0;
@@ -5212,7 +5170,7 @@
status_t CameraService::stopWatchingTags(int outFd) {
// clear mMonitorTags to prevent new clients from monitoring tags at initialization
Mutex::Autolock lock(mLogLock);
- mMonitorTags = String8::empty();
+ mMonitorTags = "";
mWatchedClientPackages.clear();
mWatchedClientsDumpCache.clear();
@@ -5240,7 +5198,7 @@
status_t CameraService::printWatchedTags(int outFd) {
Mutex::Autolock logLock(mLogLock);
- std::set<String16> connectedMonitoredClients;
+ std::set<std::string> connectedMonitoredClients;
bool printedSomething = false; // tracks if any monitoring information was printed
// (from either cached or active clients)
@@ -5263,17 +5221,14 @@
}
// Print tag dumps for active client
- const String8 &cameraId = clientDescriptor->getKey();
- String8 packageName8 = String8(client->getPackageName());
- const char *printablePackageName = packageName8.lockBuffer(packageName8.size());
- dprintf(outFd, "Client: %s (active)\n", printablePackageName);
+ const std::string &cameraId = clientDescriptor->getKey();
+ dprintf(outFd, "Client: %s (active)\n", client->getPackageName().c_str());
while(printIdx > 0) {
printIdx--;
- dprintf(outFd, "%s:%s %s", cameraId.string(), printablePackageName,
+ dprintf(outFd, "%s:%s %s", cameraId.c_str(), client->getPackageName().c_str(),
dumpVector[printIdx].c_str());
}
dprintf(outFd, "\n");
- packageName8.unlockBuffer();
printedSomething = true;
connectedMonitoredClients.emplace(client->getPackageName());
@@ -5282,12 +5237,12 @@
// Print entries in mWatchedClientsDumpCache for clients that are not connected
for (const auto &kv: mWatchedClientsDumpCache) {
- const String16 &package = kv.first;
+ const std::string &package = kv.first;
if (connectedMonitoredClients.find(package) != connectedMonitoredClients.end()) {
continue;
}
- dprintf(outFd, "Client: %s (cached)\n", String8(package).string());
+ dprintf(outFd, "Client: %s (cached)\n", package.c_str());
dprintf(outFd, "%s\n", kv.second.c_str());
printedSomething = true;
}
@@ -5301,8 +5256,8 @@
// Print all events in vector `events' that came after lastPrintedEvent
void printNewWatchedEvents(int outFd,
- const char *cameraId,
- const String16 &packageName,
+ const std::string &cameraId,
+ const std::string &packageName,
const std::vector<std::string> &events,
const std::string &lastPrintedEvent) {
if (events.empty()) { return; }
@@ -5316,17 +5271,13 @@
if (lastPrintedIdx == 0) { return; } // early exit if no new event in `events`
- String8 packageName8(packageName);
- const char *printablePackageName = packageName8.lockBuffer(packageName8.size());
-
// print events in chronological order (latest event last)
size_t idxToPrint = lastPrintedIdx;
do {
idxToPrint--;
- dprintf(outFd, "%s:%s %s", cameraId, printablePackageName, events[idxToPrint].c_str());
+ dprintf(outFd, "%s:%s %s", cameraId.c_str(), packageName.c_str(),
+ events[idxToPrint].c_str());
} while (idxToPrint != 0);
-
- packageName8.unlockBuffer();
}
// Returns true if adb shell cmd watch should be interrupted based on data in inFd. The watch
@@ -5403,12 +5354,12 @@
long refreshTimeoutMs = 1000L; // refresh every 1s by default
if (args.size() > 2) {
size_t intervalIdx; // index of '-n'
- for (intervalIdx = 2; intervalIdx < args.size() && String16("-n") != args[intervalIdx];
+ for (intervalIdx = 2; intervalIdx < args.size() && toString16("-n") != args[intervalIdx];
intervalIdx++);
size_t intervalValIdx = intervalIdx + 1;
if (intervalValIdx < args.size()) {
- refreshTimeoutMs = strtol(String8(args[intervalValIdx].string()), nullptr, 10);
+ refreshTimeoutMs = strtol(toStdString(args[intervalValIdx]).c_str(), nullptr, 10);
if (errno) { return BAD_VALUE; }
}
}
@@ -5417,7 +5368,7 @@
refreshTimeoutMs = refreshTimeoutMs < 10 ? 10 : refreshTimeoutMs;
dprintf(outFd, "Press return to exit...\n\n");
- std::map<String16, std::string> packageNameToLastEvent;
+ std::map<std::string, std::string> packageNameToLastEvent;
while (true) {
bool serviceLock = tryLock(mServiceLock);
@@ -5432,7 +5383,7 @@
if (client.get() == nullptr) { continue; }
if (!isClientWatchedLocked(client.get())) { continue; }
- const String16 &packageName = client->getPackageName();
+ const std::string &packageName = client->getPackageName();
// This also initializes the map entries with an empty string
const std::string& lastPrintedEvent = packageNameToLastEvent[packageName];
@@ -5440,15 +5391,12 @@
client->dumpWatchedEventsToVector(latestEvents);
if (!latestEvents.empty()) {
- String8 cameraId = clientDescriptor->getKey();
- const char *printableCameraId = cameraId.lockBuffer(cameraId.size());
printNewWatchedEvents(outFd,
- printableCameraId,
+ clientDescriptor->getKey(),
packageName,
latestEvents,
lastPrintedEvent);
packageNameToLastEvent[packageName] = latestEvents[0];
- cameraId.unlockBuffer();
}
}
if (shouldInterruptWatchCommand(inFd, outFd, refreshTimeoutMs)) {
@@ -5458,17 +5406,14 @@
return OK;
}
-void CameraService::parseClientsToWatchLocked(String8 clients) {
+void CameraService::parseClientsToWatchLocked(const std::string &clients) {
mWatchedClientPackages.clear();
- const char *allSentinel = String8(kWatchAllClientsFlag).string();
+ std::istringstream iss(clients);
+ std::string nextClient;
- char *tokenized = clients.lockBuffer(clients.size());
- char *savePtr;
- char *nextClient = strtok_r(tokenized, ",", &savePtr);
-
- while (nextClient != nullptr) {
- if (strcmp(nextClient, allSentinel) == 0) {
+ while (std::getline(iss, nextClient, ',')) {
+ if (nextClient == kWatchAllClientsFlag) {
// Don't need to track any other package if 'all' is present
mWatchedClientPackages.clear();
mWatchedClientPackages.emplace(kWatchAllClientsFlag);
@@ -5477,9 +5422,7 @@
// track package names
mWatchedClientPackages.emplace(nextClient);
- nextClient = strtok_r(nullptr, ",", &savePtr);
}
- clients.unlockBuffer();
}
status_t CameraService::printHelp(int out) {
@@ -5538,13 +5481,13 @@
return mode;
}
-status_t CameraService::checkIfInjectionCameraIsPresent(const String8& externalCamId,
+status_t CameraService::checkIfInjectionCameraIsPresent(const std::string& externalCamId,
sp<BasicClient> clientSp) {
std::unique_ptr<AutoConditionLock> lock =
AutoConditionLock::waitAndAcquire(mServiceLockWrapper);
status_t res = NO_ERROR;
if ((res = checkIfDeviceIsUsable(externalCamId)) != NO_ERROR) {
- ALOGW("Device %s is not usable!", externalCamId.string());
+ ALOGW("Device %s is not usable!", externalCamId.c_str());
mInjectionStatusListener->notifyInjectionError(
externalCamId, UNKNOWN_TRANSACTION);
clientSp->notifyError(
diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h
index 70293f4..3ee1e6e 100644
--- a/services/camera/libcameraservice/CameraService.h
+++ b/services/camera/libcameraservice/CameraService.h
@@ -106,19 +106,19 @@
/////////////////////////////////////////////////////////////////////
// HAL Callbacks - implements CameraProviderManager::StatusListener
- virtual void onDeviceStatusChanged(const String8 &cameraId,
+ virtual void onDeviceStatusChanged(const std::string &cameraId,
CameraDeviceStatus newHalStatus) override;
- virtual void onDeviceStatusChanged(const String8 &cameraId,
- const String8 &physicalCameraId,
+ virtual void onDeviceStatusChanged(const std::string &cameraId,
+ const std::string &physicalCameraId,
CameraDeviceStatus newHalStatus) override;
// This method may hold CameraProviderManager::mInterfaceMutex as a part
// of calling getSystemCameraKind() internally. Care should be taken not to
// directly / indirectly call this from callers who also hold
// mInterfaceMutex.
- virtual void onTorchStatusChanged(const String8& cameraId,
+ virtual void onTorchStatusChanged(const std::string& cameraId,
TorchModeStatus newStatus) override;
// Does not hold CameraProviderManager::mInterfaceMutex.
- virtual void onTorchStatusChanged(const String8& cameraId,
+ virtual void onTorchStatusChanged(const std::string& cameraId,
TorchModeStatus newStatus,
SystemCameraKind kind) override;
virtual void onNewProviderRegistered() override;
@@ -129,7 +129,7 @@
virtual binder::Status getCameraInfo(int cameraId, bool overrideToPortrait,
hardware::CameraInfo* cameraInfo) override;
- virtual binder::Status getCameraCharacteristics(const String16& cameraId,
+ virtual binder::Status getCameraCharacteristics(const std::string& cameraId,
int targetSdkVersion, bool overrideToPortrait, CameraMetadata* cameraInfo) override;
virtual binder::Status getCameraVendorTagDescriptor(
/*out*/
@@ -139,15 +139,16 @@
hardware::camera2::params::VendorTagDescriptorCache* cache);
virtual binder::Status connect(const sp<hardware::ICameraClient>& cameraClient,
- int32_t cameraId, const String16& clientPackageName,
+ int32_t cameraId, const std::string& clientPackageName,
int32_t clientUid, int clientPid, int targetSdkVersion,
bool overrideToPortrait, bool forceSlowJpegMode,
/*out*/
sp<hardware::ICamera>* device) override;
virtual binder::Status connectDevice(
- const sp<hardware::camera2::ICameraDeviceCallbacks>& cameraCb, const String16& cameraId,
- const String16& clientPackageName, const std::optional<String16>& clientFeatureId,
+ const sp<hardware::camera2::ICameraDeviceCallbacks>& cameraCb,
+ const std::string& cameraId,
+ const std::string& clientPackageName, const std::optional<std::string>& clientFeatureId,
int32_t clientUid, int scoreOffset, int targetSdkVersion, bool overrideToPortrait,
/*out*/
sp<hardware::camera2::ICameraDeviceUser>* device);
@@ -169,15 +170,15 @@
virtual binder::Status getLegacyParameters(
int32_t cameraId,
/*out*/
- String16* parameters);
+ std::string* parameters);
- virtual binder::Status setTorchMode(const String16& cameraId, bool enabled,
+ virtual binder::Status setTorchMode(const std::string& cameraId, bool enabled,
const sp<IBinder>& clientBinder);
- virtual binder::Status turnOnTorchWithStrengthLevel(const String16& cameraId,
+ virtual binder::Status turnOnTorchWithStrengthLevel(const std::string& cameraId,
int32_t torchStrength, const sp<IBinder>& clientBinder);
- virtual binder::Status getTorchStrengthLevel(const String16& cameraId,
+ virtual binder::Status getTorchStrengthLevel(const std::string& cameraId,
int32_t* torchStrength);
virtual binder::Status notifySystemEvent(int32_t eventId,
@@ -189,18 +190,18 @@
// OK = supports api of that version, -EOPNOTSUPP = does not support
virtual binder::Status supportsCameraApi(
- const String16& cameraId, int32_t apiVersion,
+ const std::string& cameraId, int32_t apiVersion,
/*out*/
bool *isSupported);
virtual binder::Status isHiddenPhysicalCamera(
- const String16& cameraId,
+ const std::string& cameraId,
/*out*/
bool *isSupported);
virtual binder::Status injectCamera(
- const String16& packageName, const String16& internalCamId,
- const String16& externalCamId,
+ const std::string& packageName, const std::string& internalCamId,
+ const std::string& externalCamId,
const sp<hardware::camera2::ICameraInjectionCallback>& callback,
/*out*/
sp<hardware::camera2::ICameraInjectionSession>* cameraInjectionSession);
@@ -225,7 +226,7 @@
void cacheDump();
// Register an offline client for a given active camera id
- status_t addOfflineClient(String8 cameraId, sp<BasicClient> offlineClient);
+ status_t addOfflineClient(const std::string &cameraId, sp<BasicClient> offlineClient);
/////////////////////////////////////////////////////////////////////
// Client functionality
@@ -244,7 +245,7 @@
/////////////////////////////////////////////////////////////////////
// CameraDeviceFactory functionality
- std::pair<int, IPCTransport> getDeviceVersion(const String8& cameraId,
+ std::pair<int, IPCTransport> getDeviceVersion(const std::string& cameraId,
bool overrideToPortrait, int* portraitRotation,
int* facing = nullptr, int* orientation = nullptr);
@@ -272,7 +273,7 @@
friend class CameraService;
public:
virtual status_t initialize(sp<CameraProviderManager> manager,
- const String8& monitorTags) = 0;
+ const std::string& monitorTags) = 0;
virtual binder::Status disconnect();
// because we can't virtually inherit IInterface, which breaks
@@ -293,12 +294,12 @@
// Internal dump method to be called by CameraService
virtual status_t dumpClient(int fd, const Vector<String16>& args) = 0;
- virtual status_t startWatchingTags(const String8 &tags, int outFd);
+ virtual status_t startWatchingTags(const std::string &tags, int outFd);
virtual status_t stopWatchingTags(int outFd);
virtual status_t dumpWatchedEventsToVector(std::vector<std::string> &out);
// Return the package name for this client
- virtual String16 getPackageName() const;
+ virtual std::string getPackageName() const;
// Return the camera facing for this client
virtual int getCameraFacing() const;
@@ -357,7 +358,7 @@
// The injection camera session to replace the internal camera
// session.
- virtual status_t injectCamera(const String8& injectedCamId,
+ virtual status_t injectCamera(const std::string& injectedCamId,
sp<CameraProviderManager> manager) = 0;
// Stop the injection camera and restore to internal camera session.
@@ -366,10 +367,10 @@
protected:
BasicClient(const sp<CameraService>& cameraService,
const sp<IBinder>& remoteCallback,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
bool nativeClient,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraIdStr,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraIdStr,
int cameraFacing,
int sensorOrientation,
int clientPid,
@@ -387,12 +388,12 @@
// these are initialized in the constructor.
static sp<CameraService> sCameraService;
- const String8 mCameraIdStr;
+ const std::string mCameraIdStr;
const int mCameraFacing;
const int mOrientation;
- String16 mClientPackageName;
+ std::string mClientPackageName;
bool mSystemNativeClient;
- std::optional<String16> mClientFeatureId;
+ std::optional<std::string> mClientFeatureId;
pid_t mClientPid;
const uid_t mClientUid;
const pid_t mServicePid;
@@ -479,10 +480,10 @@
// Interface used by CameraService
Client(const sp<CameraService>& cameraService,
const sp<hardware::ICameraClient>& cameraClient,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
bool systemNativeClient,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraIdStr,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraIdStr,
int api1CameraId,
int cameraFacing,
int sensorOrientation,
@@ -527,13 +528,13 @@
*/
class ClientEventListener {
public:
- void onClientAdded(const resource_policy::ClientDescriptor<String8,
+ void onClientAdded(const resource_policy::ClientDescriptor<std::string,
sp<CameraService::BasicClient>>& descriptor);
- void onClientRemoved(const resource_policy::ClientDescriptor<String8,
+ void onClientRemoved(const resource_policy::ClientDescriptor<std::string,
sp<CameraService::BasicClient>>& descriptor);
}; // class ClientEventListener
- typedef std::shared_ptr<resource_policy::ClientDescriptor<String8,
+ typedef std::shared_ptr<resource_policy::ClientDescriptor<std::string,
sp<CameraService::BasicClient>>> DescriptorPtr;
/**
@@ -544,7 +545,7 @@
* This class manages the eviction behavior for the camera clients. See the parent class
* implementation in utils/ClientManager for the specifics of this behavior.
*/
- class CameraClientManager : public resource_policy::ClientManager<String8,
+ class CameraClientManager : public resource_policy::ClientManager<std::string,
sp<CameraService::BasicClient>, ClientEventListener> {
public:
CameraClientManager();
@@ -554,18 +555,19 @@
* Return a strong pointer to the active BasicClient for this camera ID, or an empty
* if none exists.
*/
- sp<CameraService::BasicClient> getCameraClient(const String8& id) const;
+ sp<CameraService::BasicClient> getCameraClient(const std::string& id) const;
/**
* Return a string describing the current state.
*/
- String8 toString() const;
+ std::string toString() const;
/**
* Make a ClientDescriptor object wrapping the given BasicClient strong pointer.
*/
- static DescriptorPtr makeClientDescriptor(const String8& key, const sp<BasicClient>& value,
- int32_t cost, const std::set<String8>& conflictingKeys, int32_t score,
+ static DescriptorPtr makeClientDescriptor(const std::string& key,
+ const sp<BasicClient>& value, int32_t cost,
+ const std::set<std::string>& conflictingKeys, int32_t score,
int32_t ownerId, int32_t state, int oomScoreOffset, bool systemNativeClient);
/**
@@ -611,7 +613,7 @@
* Make a new CameraState and set the ID, cost, and conflicting devices using the values
* returned in the HAL's camera_info struct for each device.
*/
- CameraState(const String8& id, int cost, const std::set<String8>& conflicting,
+ CameraState(const std::string& id, int cost, const std::set<std::string>& conflicting,
SystemCameraKind deviceKind, const std::vector<std::string>& physicalCameras);
virtual ~CameraState();
@@ -625,7 +627,7 @@
/**
* This function updates the status for this camera device, unless the given status
* is in the given list of rejected status states, and execute the function passed in
- * with a signature onStatusUpdateLocked(const String8&, int32_t)
+ * with a signature onStatusUpdateLocked(const std::string&, int32_t)
* if the status has changed.
*
* This method is idempotent, and will not result in the function passed to
@@ -634,7 +636,7 @@
*/
template<class Func>
void updateStatus(StatusInternal status,
- const String8& cameraId,
+ const std::string& cameraId,
std::initializer_list<StatusInternal> rejectSourceStates,
Func onStatusUpdatedLocked);
@@ -657,12 +659,7 @@
/**
* Return a set of the IDs of conflicting devices advertised by the HAL for this device.
*/
- std::set<String8> getConflicting() const;
-
- /**
- * Return the ID of this camera device.
- */
- String8 getId() const;
+ std::set<std::string> getConflicting() const;
/**
* Return the kind (SystemCameraKind) of this camera device.
@@ -678,28 +675,28 @@
/**
* Add/Remove the unavailable physical camera ID.
*/
- bool addUnavailablePhysicalId(const String8& physicalId);
- bool removeUnavailablePhysicalId(const String8& physicalId);
+ bool addUnavailablePhysicalId(const std::string& physicalId);
+ bool removeUnavailablePhysicalId(const std::string& physicalId);
/**
* Set and get client package name.
*/
- void setClientPackage(const String8& clientPackage);
- String8 getClientPackage() const;
+ void setClientPackage(const std::string& clientPackage);
+ std::string getClientPackage() const;
/**
* Return the unavailable physical ids for this device.
*
* This method acquires mStatusLock.
*/
- std::vector<String8> getUnavailablePhysicalIds() const;
+ std::vector<std::string> getUnavailablePhysicalIds() const;
private:
- const String8 mId;
+ const std::string mId;
StatusInternal mStatus; // protected by mStatusLock
const int mCost;
- std::set<String8> mConflicting;
- std::set<String8> mUnavailablePhysicalIds;
- String8 mClientPackage;
+ std::set<std::string> mConflicting;
+ std::set<std::string> mUnavailablePhysicalIds;
+ std::string mClientPackage;
mutable Mutex mStatusLock;
CameraParameters mShimParams;
const SystemCameraKind mSystemCameraKind;
@@ -716,7 +713,7 @@
void registerSelf();
void unregisterSelf();
- bool isUidActive(uid_t uid, String16 callingPackage);
+ bool isUidActive(uid_t uid, const std::string &callingPackage);
int32_t getProcState(uid_t uid);
// IUidObserver
@@ -727,8 +724,8 @@
int32_t capability) override;
void onUidProcAdjChanged(uid_t uid) override;
- void addOverrideUid(uid_t uid, String16 callingPackage, bool active);
- void removeOverrideUid(uid_t uid, String16 callingPackage);
+ void addOverrideUid(uid_t uid, const std::string &callingPackage, bool active);
+ void removeOverrideUid(uid_t uid, const std::string &callingPackage);
void registerMonitorUid(uid_t uid);
void unregisterMonitorUid(uid_t uid);
@@ -736,9 +733,9 @@
// IBinder::DeathRecipient implementation
virtual void binderDied(const wp<IBinder> &who);
private:
- bool isUidActiveLocked(uid_t uid, String16 callingPackage);
+ bool isUidActiveLocked(uid_t uid, const std::string &callingPackage);
int32_t getProcStateLocked(uid_t uid);
- void updateOverrideUid(uid_t uid, String16 callingPackage, bool active, bool insert);
+ void updateOverrideUid(uid_t uid, const std::string &callingPackage, bool active, bool insert);
struct MonitoredUid {
int32_t procState;
@@ -797,8 +794,8 @@
// Add/remove a new camera to camera and torch state lists or remove an unplugged one
// Caller must not hold mServiceLock
- void addStates(const String8 id);
- void removeStates(const String8 id);
+ void addStates(const std::string& id);
+ void removeStates(const std::string& id);
// Check if we can connect, before we acquire the service lock.
// The returned originalClientPid is the PID of the original process that wants to connect to
@@ -807,24 +804,25 @@
// originalClientPid and clientPid are usually the same except when the application uses
// mediaserver to connect to camera (using MediaRecorder to connect to camera). In that case,
// clientPid is the PID of mediaserver and originalClientPid is the PID of the application.
- binder::Status validateConnectLocked(const String8& cameraId, const String8& clientName8,
+ binder::Status validateConnectLocked(const std::string& cameraId, const std::string& clientName,
/*inout*/int& clientUid, /*inout*/int& clientPid, /*out*/int& originalClientPid) const;
- binder::Status validateClientPermissionsLocked(const String8& cameraId, const String8& clientName8,
- /*inout*/int& clientUid, /*inout*/int& clientPid, /*out*/int& originalClientPid) const;
+ binder::Status validateClientPermissionsLocked(const std::string& cameraId,
+ const std::string& clientName, /*inout*/int& clientUid, /*inout*/int& clientPid,
+ /*out*/int& originalClientPid) const;
// Handle active client evictions, and update service state.
// Only call with with mServiceLock held.
- status_t handleEvictionsLocked(const String8& cameraId, int clientPid,
- apiLevel effectiveApiLevel, const sp<IBinder>& remoteCallback, const String8& packageName,
- int scoreOffset, bool systemNativeClient,
+ status_t handleEvictionsLocked(const std::string& cameraId, int clientPid,
+ apiLevel effectiveApiLevel, const sp<IBinder>& remoteCallback,
+ const std::string& packageName, int scoreOffset, bool systemNativeClient,
/*out*/
sp<BasicClient>* client,
- std::shared_ptr<resource_policy::ClientDescriptor<String8, sp<BasicClient>>>* partial);
+ std::shared_ptr<resource_policy::ClientDescriptor<std::string, sp<BasicClient>>>* partial);
// Should an operation attempt on a cameraId be rejected ? (this can happen
// under various conditions. For example if a camera device is advertised as
// system only or hidden secure camera, amongst possible others.
- bool shouldRejectSystemCameraConnection(const String8 & cameraId) const;
+ bool shouldRejectSystemCameraConnection(const std::string& cameraId) const;
// Should a device status update be skipped for a particular camera device ? (this can happen
// under various conditions. For example if a camera device is advertised as
@@ -836,7 +834,7 @@
// getSystemCameraKind() needs mInterfaceMutex which might lead to deadlocks
// if held along with mStatusListenerLock (depending on lock ordering, b/141756275), it is
// recommended that we don't call this function with mStatusListenerLock held.
- status_t getSystemCameraKind(const String8& cameraId, SystemCameraKind *kind) const;
+ status_t getSystemCameraKind(const std::string& cameraId, SystemCameraKind *kind) const;
// Update the set of API1Compatible camera devices without including system
// cameras and secure cameras. This is used for hiding system only cameras
@@ -852,13 +850,13 @@
// as for legacy apps we will toggle the app op for all packages in the UID.
// The caveat is that the operation may be attributed to the wrong package and
// stats based on app ops may be slightly off.
- String16 getPackageNameFromUid(int clientUid);
+ std::string getPackageNameFromUid(int clientUid);
// Single implementation shared between the various connect calls
template<class CALLBACK, class CLIENT>
- binder::Status connectHelper(const sp<CALLBACK>& cameraCb, const String8& cameraId,
- int api1CameraId, const String16& clientPackageNameMaybe, bool systemNativeClient,
- const std::optional<String16>& clientFeatureId, int clientUid, int clientPid,
+ binder::Status connectHelper(const sp<CALLBACK>& cameraCb, const std::string& cameraId,
+ int api1CameraId, const std::string& clientPackageNameMaybe, bool systemNativeClient,
+ const std::optional<std::string>& clientFeatureId, int clientUid, int clientPid,
apiLevel effectiveApiLevel, bool shimUpdateOnly, int scoreOffset, int targetSdkVersion,
bool overrideToPortrait, bool forceSlowJpegMode,
/*out*/sp<CLIENT>& device);
@@ -870,37 +868,38 @@
std::shared_ptr<WaitableMutexWrapper> mServiceLockWrapper;
// Return NO_ERROR if the device with a give ID can be connected to
- status_t checkIfDeviceIsUsable(const String8& cameraId) const;
+ status_t checkIfDeviceIsUsable(const std::string& cameraId) const;
// Container for managing currently active application-layer clients
CameraClientManager mActiveClientManager;
// Adds client logs during open session to the file pointed by fd.
- void dumpOpenSessionClientLogs(int fd, const Vector<String16>& args, const String8& cameraId);
+ void dumpOpenSessionClientLogs(int fd, const Vector<String16>& args,
+ const std::string& cameraId);
// Adds client logs during closed session to the file pointed by fd.
- void dumpClosedSessionClientLogs(int fd, const String8& cameraId);
+ void dumpClosedSessionClientLogs(int fd, const std::string& cameraId);
// Mapping from camera ID -> state for each device, map is protected by mCameraStatesLock
- std::map<String8, std::shared_ptr<CameraState>> mCameraStates;
+ std::map<std::string, std::shared_ptr<CameraState>> mCameraStates;
// Mutex guarding mCameraStates map
mutable Mutex mCameraStatesLock;
// Circular buffer for storing event logging for dumps
- RingBuffer<String8> mEventLog;
+ RingBuffer<std::string> mEventLog;
Mutex mLogLock;
// set of client package names to watch. if this set contains 'all', then all clients will
// be watched. Access should be guarded by mLogLock
- std::set<String16> mWatchedClientPackages;
+ std::set<std::string> mWatchedClientPackages;
// cache of last monitored tags dump immediately before the client disconnects. If a client
// re-connects, its entry is not updated until it disconnects again. Access should be guarded
// by mLogLock
- std::map<String16, std::string> mWatchedClientsDumpCache;
+ std::map<std::string, std::string> mWatchedClientsDumpCache;
// The last monitored tags set by client
- String8 mMonitorTags;
+ std::string mMonitorTags;
// Currently allowed user IDs
std::set<userid_t> mAllowedUsers;
@@ -910,7 +909,7 @@
*
* This acquires mCameraStatesLock.
*/
- std::shared_ptr<CameraService::CameraState> getCameraState(const String8& cameraId) const;
+ std::shared_ptr<CameraService::CameraState> getCameraState(const std::string& cameraId) const;
/**
* Evict client who's remote binder has died. Returns true if this client was in the active
@@ -941,7 +940,7 @@
* Returns the underlying camera Id string mapped to a camera id int
* Empty string is returned when the cameraIdInt is invalid.
*/
- String8 cameraIdIntToStr(int cameraIdInt);
+ std::string cameraIdIntToStr(int cameraIdInt);
/**
* Returns the underlying camera Id string mapped to a camera id int
@@ -955,7 +954,7 @@
*
* This method must be called with mServiceLock held.
*/
- sp<CameraService::BasicClient> removeClientLocked(const String8& cameraId);
+ sp<CameraService::BasicClient> removeClientLocked(const std::string& cameraId);
/**
* Handle a notification that the current device user has changed.
@@ -965,39 +964,41 @@
/**
* Add an event log message.
*/
- void logEvent(const char* event);
+ void logEvent(const std::string &event);
/**
* Add an event log message that a client has been disconnected.
*/
- void logDisconnected(const char* cameraId, int clientPid, const char* clientPackage);
+ void logDisconnected(const std::string &cameraId, int clientPid,
+ const std::string &clientPackage);
/**
* Add an event log message that a client has been disconnected from offline device.
*/
- void logDisconnectedOffline(const char* cameraId, int clientPid, const char* clientPackage);
+ void logDisconnectedOffline(const std::string &cameraId, int clientPid,
+ const std::string &clientPackage);
/**
* Add an event log message that an offline client has been connected.
*/
- void logConnectedOffline(const char* cameraId, int clientPid,
- const char* clientPackage);
+ void logConnectedOffline(const std::string &cameraId, int clientPid,
+ const std::string &clientPackage);
/**
* Add an event log message that a client has been connected.
*/
- void logConnected(const char* cameraId, int clientPid, const char* clientPackage);
+ void logConnected(const std::string &cameraId, int clientPid, const std::string &clientPackage);
/**
* Add an event log message that a client's connect attempt has been rejected.
*/
- void logRejected(const char* cameraId, int clientPid, const char* clientPackage,
- const char* reason);
+ void logRejected(const std::string &cameraId, int clientPid, const std::string &clientPackage,
+ const std::string &reason);
/**
* Add an event log message when a client calls setTorchMode succesfully.
*/
- void logTorchEvent(const char* cameraId, const char *torchState, int clientPid);
+ void logTorchEvent(const std::string &cameraId, const std::string &torchState, int clientPid);
/**
* Add an event log message that the current device user has been switched.
@@ -1008,30 +1009,30 @@
/**
* Add an event log message that a device has been removed by the HAL
*/
- void logDeviceRemoved(const char* cameraId, const char* reason);
+ void logDeviceRemoved(const std::string &cameraId, const std::string &reason);
/**
* Add an event log message that a device has been added by the HAL
*/
- void logDeviceAdded(const char* cameraId, const char* reason);
+ void logDeviceAdded(const std::string &cameraId, const std::string &reason);
/**
* Add an event log message that a client has unexpectedly died.
*/
- void logClientDied(int clientPid, const char* reason);
+ void logClientDied(int clientPid, const std::string &reason);
/**
* Add a event log message that a serious service-level error has occured
* The errorCode should be one of the Android Errors
*/
- void logServiceError(const char* msg, int errorCode);
+ void logServiceError(const std::string &msg, int errorCode);
/**
* Dump the event log to an FD
*/
void dumpEventLog(int fd);
- void cacheClientTagDumpIfNeeded(const char *cameraId, BasicClient *client);
+ void cacheClientTagDumpIfNeeded(const std::string &cameraId, BasicClient *client);
/**
* This method will acquire mServiceLock
@@ -1121,18 +1122,19 @@
* This method acquires mStatusLock and mStatusListenerLock.
*/
void updateStatus(StatusInternal status,
- const String8& cameraId,
+ const std::string& cameraId,
std::initializer_list<StatusInternal>
rejectedSourceStates);
void updateStatus(StatusInternal status,
- const String8& cameraId);
+ const std::string& cameraId);
/**
* Update the opened/closed status of the given camera id.
*
* This method acqiures mStatusListenerLock.
*/
- void updateOpenCloseStatus(const String8& cameraId, bool open, const String16& packageName);
+ void updateOpenCloseStatus(const std::string& cameraId, bool open,
+ const std::string& packageName);
// flashlight control
sp<CameraFlashlight> mFlashlight;
@@ -1143,38 +1145,38 @@
// guard mTorchUidMap
Mutex mTorchUidMapMutex;
// camera id -> torch status
- KeyedVector<String8, TorchModeStatus>
+ KeyedVector<std::string, TorchModeStatus>
mTorchStatusMap;
// camera id -> torch client binder
// only store the last client that turns on each camera's torch mode
- KeyedVector<String8, sp<IBinder>> mTorchClientMap;
+ KeyedVector<std::string, sp<IBinder>> mTorchClientMap;
// camera id -> [incoming uid, current uid] pair
- std::map<String8, std::pair<int, int>> mTorchUidMap;
+ std::map<std::string, std::pair<int, int>> mTorchUidMap;
// check and handle if torch client's process has died
void handleTorchClientBinderDied(const wp<IBinder> &who);
// handle torch mode status change and invoke callbacks. mTorchStatusMutex
// should be locked.
- void onTorchStatusChangedLocked(const String8& cameraId,
+ void onTorchStatusChangedLocked(const std::string& cameraId,
TorchModeStatus newStatus,
SystemCameraKind systemCameraKind);
// get a camera's torch status. mTorchStatusMutex should be locked.
- status_t getTorchStatusLocked(const String8 &cameraId,
+ status_t getTorchStatusLocked(const std::string &cameraId,
TorchModeStatus *status) const;
// set a camera's torch status. mTorchStatusMutex should be locked.
- status_t setTorchStatusLocked(const String8 &cameraId,
+ status_t setTorchStatusLocked(const std::string &cameraId,
TorchModeStatus status);
// notify physical camera status when the physical camera is public.
// Expects mStatusListenerLock to be locked.
- void notifyPhysicalCameraStatusLocked(int32_t status, const String16& physicalCameraId,
- const std::list<String16>& logicalCameraIds, SystemCameraKind deviceKind);
+ void notifyPhysicalCameraStatusLocked(int32_t status, const std::string& physicalCameraId,
+ const std::list<std::string>& logicalCameraIds, SystemCameraKind deviceKind);
// get list of logical cameras which are backed by physicalCameraId
- std::list<String16> getLogicalCameras(const String8& physicalCameraId);
+ std::list<std::string> getLogicalCameras(const std::string& physicalCameraId);
// IBinder::DeathRecipient implementation
@@ -1257,7 +1259,7 @@
// Parses comma separated clients list and adds them to mWatchedClientPackages.
// Does not acquire mLogLock before modifying mWatchedClientPackages. It is the caller's
// responsibility to acquire mLogLock before calling this function.
- void parseClientsToWatchLocked(String8 clients);
+ void parseClientsToWatchLocked(const std::string &clients);
// Prints the shell command help
status_t printHelp(int out);
@@ -1274,39 +1276,37 @@
/**
* Get the current system time as a formatted string.
*/
- static String8 getFormattedCurrentTime();
+ static std::string getFormattedCurrentTime();
static binder::Status makeClient(const sp<CameraService>& cameraService,
- const sp<IInterface>& cameraCb, const String16& packageName,
- bool systemNativeClient, const std::optional<String16>& featureId,
- const String8& cameraId, int api1CameraId, int facing, int sensorOrientation,
+ const sp<IInterface>& cameraCb, const std::string& packageName,
+ bool systemNativeClient, const std::optional<std::string>& featureId,
+ const std::string& cameraId, int api1CameraId, int facing, int sensorOrientation,
int clientPid, uid_t clientUid, int servicePid,
std::pair<int, IPCTransport> deviceVersionAndIPCTransport, apiLevel effectiveApiLevel,
bool overrideForPerfClass, bool overrideToPortrait, bool forceSlowJpegMode,
/*out*/sp<BasicClient>* client);
- status_t checkCameraAccess(const String16& opPackageName);
-
- static String8 toString(std::set<userid_t> intSet);
+ static std::string toString(std::set<userid_t> intSet);
static int32_t mapToInterface(TorchModeStatus status);
static StatusInternal mapToInternal(CameraDeviceStatus status);
static int32_t mapToInterface(StatusInternal status);
- void broadcastTorchModeStatus(const String8& cameraId,
+ void broadcastTorchModeStatus(const std::string& cameraId,
TorchModeStatus status, SystemCameraKind systemCameraKind);
- void broadcastTorchStrengthLevel(const String8& cameraId, int32_t newTorchStrengthLevel);
+ void broadcastTorchStrengthLevel(const std::string& cameraId, int32_t newTorchStrengthLevel);
- void disconnectClient(const String8& id, sp<BasicClient> clientToDisconnect);
+ void disconnectClient(const std::string& id, sp<BasicClient> clientToDisconnect);
// Regular online and offline devices must not be in conflict at camera service layer.
// Use separate keys for offline devices.
- static const String8 kOfflineDevice;
+ static const std::string kOfflineDevice;
// Sentinel value to be stored in `mWatchedClientsPackages` to indicate that all clients should
// be watched.
- static const String16 kWatchAllClientsFlag;
+ static const std::string kWatchAllClientsFlag;
// TODO: right now each BasicClient holds one AppOpsManager instance.
// We can refactor the code so all of clients share this instance
@@ -1341,7 +1341,7 @@
void addListener(const sp<hardware::camera2::ICameraInjectionCallback>& callback);
void removeListener();
- void notifyInjectionError(String8 injectedCamId, status_t err);
+ void notifyInjectionError(const std::string &injectedCamId, status_t err);
// IBinder::DeathRecipient implementation
virtual void binderDied(const wp<IBinder>& who);
@@ -1370,15 +1370,15 @@
// When injecting the camera, it will check whether the injecting camera status is unavailable.
// If it is, the disconnect function will be called to to prevent camera access on the device.
- status_t checkIfInjectionCameraIsPresent(const String8& externalCamId,
+ status_t checkIfInjectionCameraIsPresent(const std::string& externalCamId,
sp<BasicClient> clientSp);
void clearInjectionParameters();
// This is the existing camera id being replaced.
- String8 mInjectionInternalCamId;
+ std::string mInjectionInternalCamId;
// This is the external camera Id replacing the internalId.
- String8 mInjectionExternalCamId;
+ std::string mInjectionExternalCamId;
bool mInjectionInitPending = false;
// Guard mInjectionInternalCamId and mInjectionInitPending.
Mutex mInjectionParametersLock;
@@ -1386,7 +1386,7 @@
// Track the folded/unfoled device state. 0 == UNFOLDED, 4 == FOLDED
int64_t mDeviceState;
- void updateTorchUidMapLocked(const String16& cameraId, int uid);
+ void updateTorchUidMapLocked(const std::string& cameraId, int uid);
};
} // namespace android
diff --git a/services/camera/libcameraservice/api1/Camera2Client.cpp b/services/camera/libcameraservice/api1/Camera2Client.cpp
index ad32682..68c28e9 100644
--- a/services/camera/libcameraservice/api1/Camera2Client.cpp
+++ b/services/camera/libcameraservice/api1/Camera2Client.cpp
@@ -18,11 +18,14 @@
#define ATRACE_TAG ATRACE_TAG_CAMERA
//#define LOG_NDEBUG 0
+#include <sstream>
+
#include <inttypes.h>
#include <utils/Log.h>
#include <utils/Trace.h>
#include <camera/CameraUtils.h>
+#include <camera/StringUtils.h>
#include <cutils/properties.h>
#include <gui/Surface.h>
#include <android/hardware/camera2/ICameraDeviceCallbacks.h>
@@ -52,9 +55,9 @@
Camera2Client::Camera2Client(const sp<CameraService>& cameraService,
const sp<hardware::ICameraClient>& cameraClient,
- const String16& clientPackageName,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraDeviceId,
+ const std::string& clientPackageName,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraDeviceId,
int api1CameraId,
int cameraFacing,
int sensorOrientation,
@@ -84,7 +87,8 @@
}
}
-status_t Camera2Client::initialize(sp<CameraProviderManager> manager, const String8& monitorTags) {
+status_t Camera2Client::initialize(sp<CameraProviderManager> manager,
+ const std::string& monitorTags) {
return initializeImpl(manager, monitorTags);
}
@@ -104,7 +108,7 @@
}
template<typename TProviderPtr>
-status_t Camera2Client::initializeImpl(TProviderPtr providerPtr, const String8& monitorTags)
+status_t Camera2Client::initializeImpl(TProviderPtr providerPtr, const std::string& monitorTags)
{
ATRACE_CALL();
ALOGV("%s: Initializing client for camera %d", __FUNCTION__, mCameraId);
@@ -136,37 +140,23 @@
CameraUtils::getRotationTransform(staticInfo, OutputConfiguration::MIRROR_MODE_AUTO,
&mRotateAndCropPreviewTransform);
- String8 threadName;
-
mStreamingProcessor = new StreamingProcessor(this);
- threadName = String8::format("C2-%d-StreamProc",
- mCameraId);
+ std::string threadName = std::string("C2-") + std::to_string(mCameraId);
mFrameProcessor = new FrameProcessor(mDevice, this);
- threadName = String8::format("C2-%d-FrameProc",
- mCameraId);
- mFrameProcessor->run(threadName.string());
+ mFrameProcessor->run((threadName + "-FrameProc").c_str());
mCaptureSequencer = new CaptureSequencer(this);
- threadName = String8::format("C2-%d-CaptureSeq",
- mCameraId);
- mCaptureSequencer->run(threadName.string());
+ mCaptureSequencer->run((threadName + "-CaptureSeq").c_str());
mJpegProcessor = new JpegProcessor(this, mCaptureSequencer);
- threadName = String8::format("C2-%d-JpegProc",
- mCameraId);
- mJpegProcessor->run(threadName.string());
+ mJpegProcessor->run((threadName + "-JpegProc").c_str());
mZslProcessor = new ZslProcessor(this, mCaptureSequencer);
-
- threadName = String8::format("C2-%d-ZslProc",
- mCameraId);
- mZslProcessor->run(threadName.string());
+ mZslProcessor->run((threadName + "-ZslProc").c_str());
mCallbackProcessor = new CallbackProcessor(this);
- threadName = String8::format("C2-%d-CallbkProc",
- mCameraId);
- mCallbackProcessor->run(threadName.string());
+ mCallbackProcessor->run((threadName + "-CallbkProc").c_str());
if (gLogLevel >= 1) {
SharedParameters::Lock l(mParameters);
@@ -194,47 +184,47 @@
}
status_t Camera2Client::dumpClient(int fd, const Vector<String16>& args) {
- String8 result;
- result.appendFormat("Client2[%d] (%p) PID: %d, dump:\n", mCameraId,
+ std::ostringstream result;
+ result << fmt::sprintf("Client2[%d] (%p) PID: %d, dump:\n", mCameraId,
(getRemoteCallback() != NULL ?
- (IInterface::asBinder(getRemoteCallback()).get()) : NULL),
+ (void *) (IInterface::asBinder(getRemoteCallback()).get()) : NULL),
mClientPid);
- result.append(" State: ");
-#define CASE_APPEND_ENUM(x) case x: result.append(#x "\n"); break;
+ result << " State: ";
+#define CASE_APPEND_ENUM(x) case x: result << #x "\n"; break;
const Parameters& p = mParameters.unsafeAccess();
- result.append(Parameters::getStateName(p.state));
+ result << Parameters::getStateName(p.state);
- result.append("\n Current parameters:\n");
- result.appendFormat(" Preview size: %d x %d\n",
+ result << "\n Current parameters:\n";
+ result << fmt::sprintf(" Preview size: %d x %d\n",
p.previewWidth, p.previewHeight);
- result.appendFormat(" Preview FPS range: %d - %d\n",
+ result << fmt::sprintf(" Preview FPS range: %d - %d\n",
p.previewFpsRange[0], p.previewFpsRange[1]);
- result.appendFormat(" Preview HAL pixel format: 0x%x\n",
+ result << fmt::sprintf(" Preview HAL pixel format: 0x%x\n",
p.previewFormat);
- result.appendFormat(" Preview transform: %x\n",
+ result << fmt::sprintf(" Preview transform: %x\n",
p.previewTransform);
- result.appendFormat(" Picture size: %d x %d\n",
+ result << fmt::sprintf(" Picture size: %d x %d\n",
p.pictureWidth, p.pictureHeight);
- result.appendFormat(" Jpeg thumbnail size: %d x %d\n",
+ result << fmt::sprintf(" Jpeg thumbnail size: %d x %d\n",
p.jpegThumbSize[0], p.jpegThumbSize[1]);
- result.appendFormat(" Jpeg quality: %d, thumbnail quality: %d\n",
+ result << fmt::sprintf(" Jpeg quality: %d, thumbnail quality: %d\n",
p.jpegQuality, p.jpegThumbQuality);
- result.appendFormat(" Jpeg rotation: %d\n", p.jpegRotation);
- result.appendFormat(" GPS tags %s\n",
+ result << fmt::sprintf(" Jpeg rotation: %d\n", p.jpegRotation);
+ result << fmt::sprintf(" GPS tags %s\n",
p.gpsEnabled ? "enabled" : "disabled");
if (p.gpsEnabled) {
- result.appendFormat(" GPS lat x long x alt: %f x %f x %f\n",
+ result << fmt::sprintf(" GPS lat x long x alt: %f x %f x %f\n",
p.gpsCoordinates[0], p.gpsCoordinates[1],
p.gpsCoordinates[2]);
- result.appendFormat(" GPS timestamp: %" PRId64 "\n",
+ result << fmt::sprintf(" GPS timestamp: %" PRId64 "\n",
p.gpsTimestamp);
- result.appendFormat(" GPS processing method: %s\n",
+ result << fmt::sprintf(" GPS processing method: %s\n",
p.gpsProcessingMethod.string());
}
- result.append(" White balance mode: ");
+ result << " White balance mode: ";
switch (p.wbMode) {
CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_MODE_AUTO)
CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_MODE_INCANDESCENT)
@@ -244,10 +234,10 @@
CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT)
CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_MODE_TWILIGHT)
CASE_APPEND_ENUM(ANDROID_CONTROL_AWB_MODE_SHADE)
- default: result.append("UNKNOWN\n");
+ default: result << "UNKNOWN\n";
}
- result.append(" Effect mode: ");
+ result << " Effect mode: ";
switch (p.effectMode) {
CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_MODE_OFF)
CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_MODE_MONO)
@@ -258,22 +248,22 @@
CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_MODE_WHITEBOARD)
CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_MODE_BLACKBOARD)
CASE_APPEND_ENUM(ANDROID_CONTROL_EFFECT_MODE_AQUA)
- default: result.append("UNKNOWN\n");
+ default: result << "UNKNOWN\n";
}
- result.append(" Antibanding mode: ");
+ result << " Antibanding mode: ";
switch (p.antibandingMode) {
CASE_APPEND_ENUM(ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO)
CASE_APPEND_ENUM(ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF)
CASE_APPEND_ENUM(ANDROID_CONTROL_AE_ANTIBANDING_MODE_50HZ)
CASE_APPEND_ENUM(ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ)
- default: result.append("UNKNOWN\n");
+ default: result << "UNKNOWN\n";
}
- result.append(" Scene mode: ");
+ result << " Scene mode: ";
switch (p.sceneMode) {
case ANDROID_CONTROL_SCENE_MODE_DISABLED:
- result.append("AUTO\n"); break;
+ result << "AUTO\n"; break;
CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY)
CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_ACTION)
CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_PORTRAIT)
@@ -290,10 +280,10 @@
CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_PARTY)
CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT)
CASE_APPEND_ENUM(ANDROID_CONTROL_SCENE_MODE_BARCODE)
- default: result.append("UNKNOWN\n");
+ default: result << "UNKNOWN\n";
}
- result.append(" Flash mode: ");
+ result << " Flash mode: ";
switch (p.flashMode) {
CASE_APPEND_ENUM(Parameters::FLASH_MODE_OFF)
CASE_APPEND_ENUM(Parameters::FLASH_MODE_AUTO)
@@ -301,10 +291,10 @@
CASE_APPEND_ENUM(Parameters::FLASH_MODE_TORCH)
CASE_APPEND_ENUM(Parameters::FLASH_MODE_RED_EYE)
CASE_APPEND_ENUM(Parameters::FLASH_MODE_INVALID)
- default: result.append("UNKNOWN\n");
+ default: result << "UNKNOWN\n";
}
- result.append(" Focus mode: ");
+ result << " Focus mode: ";
switch (p.focusMode) {
CASE_APPEND_ENUM(Parameters::FOCUS_MODE_AUTO)
CASE_APPEND_ENUM(Parameters::FOCUS_MODE_MACRO)
@@ -314,10 +304,10 @@
CASE_APPEND_ENUM(Parameters::FOCUS_MODE_INFINITY)
CASE_APPEND_ENUM(Parameters::FOCUS_MODE_FIXED)
CASE_APPEND_ENUM(Parameters::FOCUS_MODE_INVALID)
- default: result.append("UNKNOWN\n");
+ default: result << "UNKNOWN\n";
}
- result.append(" Focus state: ");
+ result << " Focus state: ";
switch (p.focusState) {
CASE_APPEND_ENUM(ANDROID_CONTROL_AF_STATE_INACTIVE)
CASE_APPEND_ENUM(ANDROID_CONTROL_AF_STATE_PASSIVE_SCAN)
@@ -326,12 +316,12 @@
CASE_APPEND_ENUM(ANDROID_CONTROL_AF_STATE_ACTIVE_SCAN)
CASE_APPEND_ENUM(ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED)
CASE_APPEND_ENUM(ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED)
- default: result.append("UNKNOWN\n");
+ default: result << "UNKNOWN\n";
}
- result.append(" Focusing areas:\n");
+ result << " Focusing areas:\n";
for (size_t i = 0; i < p.focusingAreas.size(); i++) {
- result.appendFormat(" [ (%d, %d, %d, %d), weight %d ]\n",
+ result << fmt::sprintf(" [ (%d, %d, %d, %d), weight %d ]\n",
p.focusingAreas[i].left,
p.focusingAreas[i].top,
p.focusingAreas[i].right,
@@ -339,16 +329,16 @@
p.focusingAreas[i].weight);
}
- result.appendFormat(" Exposure compensation index: %d\n",
+ result << fmt::sprintf(" Exposure compensation index: %d\n",
p.exposureCompensation);
- result.appendFormat(" AE lock %s, AWB lock %s\n",
+ result << fmt::sprintf(" AE lock %s, AWB lock %s\n",
p.autoExposureLock ? "enabled" : "disabled",
p.autoWhiteBalanceLock ? "enabled" : "disabled" );
- result.appendFormat(" Metering areas:\n");
+ result << " Metering areas:\n";
for (size_t i = 0; i < p.meteringAreas.size(); i++) {
- result.appendFormat(" [ (%d, %d, %d, %d), weight %d ]\n",
+ result << fmt::sprintf(" [ (%d, %d, %d, %d), weight %d ]\n",
p.meteringAreas[i].left,
p.meteringAreas[i].top,
p.meteringAreas[i].right,
@@ -356,54 +346,56 @@
p.meteringAreas[i].weight);
}
- result.appendFormat(" Zoom index: %d\n", p.zoom);
- result.appendFormat(" Video size: %d x %d\n", p.videoWidth,
+ result << fmt::sprintf(" Zoom index: %d\n", p.zoom);
+ result << fmt::sprintf(" Video size: %d x %d\n", p.videoWidth,
p.videoHeight);
- result.appendFormat(" Recording hint is %s\n",
+ result << fmt::sprintf(" Recording hint is %s\n",
p.recordingHint ? "set" : "not set");
- result.appendFormat(" Video stabilization is %s\n",
+ result << fmt::sprintf(" Video stabilization is %s\n",
p.videoStabilization ? "enabled" : "disabled");
- result.appendFormat(" Selected still capture FPS range: %d - %d\n",
+ result << fmt::sprintf(" Selected still capture FPS range: %d - %d\n",
p.fastInfo.bestStillCaptureFpsRange[0],
p.fastInfo.bestStillCaptureFpsRange[1]);
- result.appendFormat(" Use zero shutter lag: %s\n",
+ result << fmt::sprintf(" Use zero shutter lag: %s\n",
p.useZeroShutterLag() ? "yes" : "no");
- result.append(" Current streams:\n");
- result.appendFormat(" Preview stream ID: %d\n",
+ result << " Current streams:\n";
+ result << fmt::sprintf(" Preview stream ID: %d\n",
getPreviewStreamId());
- result.appendFormat(" Capture stream ID: %d\n",
+ result << fmt::sprintf(" Capture stream ID: %d\n",
getCaptureStreamId());
- result.appendFormat(" Recording stream ID: %d\n",
+ result << fmt::sprintf(" Recording stream ID: %d\n",
getRecordingStreamId());
- result.append(" Quirks for this camera:\n");
+ result << " Quirks for this camera:\n";
bool haveQuirk = false;
if (p.quirks.triggerAfWithAuto) {
- result.appendFormat(" triggerAfWithAuto\n");
+ result << " triggerAfWithAuto\n";
haveQuirk = true;
}
if (p.quirks.useZslFormat) {
- result.appendFormat(" useZslFormat\n");
+ result << " useZslFormat\n";
haveQuirk = true;
}
if (p.quirks.meteringCropRegion) {
- result.appendFormat(" meteringCropRegion\n");
+ result << " meteringCropRegion\n";
haveQuirk = true;
}
if (p.quirks.partialResults) {
- result.appendFormat(" usePartialResult\n");
+ result << " usePartialResult\n";
haveQuirk = true;
}
if (!haveQuirk) {
- result.appendFormat(" none\n");
+ result << " none\n";
}
- write(fd, result.string(), result.size());
+ std::string resultStr = std::move(result.str());
+
+ write(fd, resultStr.c_str(), resultStr.size());
mStreamingProcessor->dump(fd, args);
diff --git a/services/camera/libcameraservice/api1/Camera2Client.h b/services/camera/libcameraservice/api1/Camera2Client.h
index bbad6d8..5b4d547 100644
--- a/services/camera/libcameraservice/api1/Camera2Client.h
+++ b/services/camera/libcameraservice/api1/Camera2Client.h
@@ -102,9 +102,9 @@
Camera2Client(const sp<CameraService>& cameraService,
const sp<hardware::ICameraClient>& cameraClient,
- const String16& clientPackageName,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraDeviceId,
+ const std::string& clientPackageName,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraDeviceId,
int api1CameraId,
int cameraFacing,
int sensorOrientation,
@@ -118,7 +118,7 @@
virtual ~Camera2Client();
virtual status_t initialize(sp<CameraProviderManager> manager,
- const String8& monitorTags) override;
+ const std::string& monitorTags) override;
virtual status_t dump(int fd, const Vector<String16>& args);
@@ -243,7 +243,7 @@
status_t overrideVideoSnapshotSize(Parameters ¶ms);
template<typename TProviderPtr>
- status_t initializeImpl(TProviderPtr providerPtr, const String8& monitorTags);
+ status_t initializeImpl(TProviderPtr providerPtr, const std::string& monitorTags);
bool isZslEnabledInStillTemplate();
// The current rotate & crop mode passed by camera service
diff --git a/services/camera/libcameraservice/api1/client2/CallbackProcessor.cpp b/services/camera/libcameraservice/api1/client2/CallbackProcessor.cpp
index ee764ec..17db20b 100644
--- a/services/camera/libcameraservice/api1/client2/CallbackProcessor.cpp
+++ b/services/camera/libcameraservice/api1/client2/CallbackProcessor.cpp
@@ -158,7 +158,7 @@
res = device->createStream(mCallbackWindow,
params.previewWidth, params.previewHeight, callbackFormat,
HAL_DATASPACE_V0_JFIF, CAMERA_STREAM_ROTATION_0, &mCallbackStreamId,
- String8(), std::unordered_set<int32_t>{ANDROID_SENSOR_PIXEL_MODE_DEFAULT});
+ std::string(), std::unordered_set<int32_t>{ANDROID_SENSOR_PIXEL_MODE_DEFAULT});
if (res != OK) {
ALOGE("%s: Camera %d: Can't create output stream for callbacks: "
"%s (%d)", __FUNCTION__, mId,
diff --git a/services/camera/libcameraservice/api1/client2/CaptureSequencer.cpp b/services/camera/libcameraservice/api1/client2/CaptureSequencer.cpp
index 4c9b7ed..0b5e03f 100644
--- a/services/camera/libcameraservice/api1/client2/CaptureSequencer.cpp
+++ b/services/camera/libcameraservice/api1/client2/CaptureSequencer.cpp
@@ -23,6 +23,7 @@
#include <utils/Log.h>
#include <utils/Trace.h>
#include <utils/Vector.h>
+#include <camera/StringUtils.h>
#include "api1/Camera2Client.h"
#include "api1/client2/CaptureSequencer.h"
@@ -174,19 +175,19 @@
void CaptureSequencer::dump(int fd, const Vector<String16>& /*args*/) {
- String8 result;
+ std::string result;
if (mCaptureRequest.entryCount() != 0) {
result = " Capture request:\n";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
mCaptureRequest.dump(fd, 2, 6);
} else {
result = " Capture request: undefined\n";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
- result = String8::format(" Current capture state: %s\n",
+ result = fmt::sprintf(" Current capture state: %s\n",
kStateNames[mCaptureState]);
- result.append(" Latest captured frame:\n");
- write(fd, result.string(), result.size());
+ result += " Latest captured frame:\n";
+ write(fd, result.c_str(), result.size());
mNewFrame.dump(fd, 2, 6);
}
diff --git a/services/camera/libcameraservice/api1/client2/JpegProcessor.cpp b/services/camera/libcameraservice/api1/client2/JpegProcessor.cpp
index 467108d..eb00bf8 100755
--- a/services/camera/libcameraservice/api1/client2/JpegProcessor.cpp
+++ b/services/camera/libcameraservice/api1/client2/JpegProcessor.cpp
@@ -83,7 +83,7 @@
}
// Find out buffer size for JPEG
- ssize_t maxJpegSize = device->getJpegBufferSize(device->infoPhysical(String8("")),
+ ssize_t maxJpegSize = device->getJpegBufferSize(device->infoPhysical(""),
params.pictureWidth, params.pictureHeight);
if (maxJpegSize <= 0) {
ALOGE("%s: Camera %d: Jpeg buffer size (%zu) is invalid ",
@@ -157,7 +157,7 @@
params.pictureWidth, params.pictureHeight,
HAL_PIXEL_FORMAT_BLOB, HAL_DATASPACE_V0_JFIF,
CAMERA_STREAM_ROTATION_0, &mCaptureStreamId,
- String8(), std::unordered_set<int32_t>{ANDROID_SENSOR_PIXEL_MODE_DEFAULT});
+ std::string(), std::unordered_set<int32_t>{ANDROID_SENSOR_PIXEL_MODE_DEFAULT});
if (res != OK) {
ALOGE("%s: Camera %d: Can't create output stream for capture: "
"%s (%d)", __FUNCTION__, mId,
diff --git a/services/camera/libcameraservice/api1/client2/StreamingProcessor.cpp b/services/camera/libcameraservice/api1/client2/StreamingProcessor.cpp
index 2d3597c..ff71e6b 100644
--- a/services/camera/libcameraservice/api1/client2/StreamingProcessor.cpp
+++ b/services/camera/libcameraservice/api1/client2/StreamingProcessor.cpp
@@ -31,6 +31,7 @@
#include <gui/BufferItem.h>
#include <gui/Surface.h>
#include <media/hardware/HardwareAPI.h>
+#include <camera/StringUtils.h>
#include "common/CameraDeviceBase.h"
#include "api1/Camera2Client.h"
@@ -198,7 +199,7 @@
res = device->createStream(mPreviewWindow,
params.previewWidth, params.previewHeight,
CAMERA2_HAL_PIXEL_FORMAT_OPAQUE, HAL_DATASPACE_UNKNOWN,
- CAMERA_STREAM_ROTATION_0, &mPreviewStreamId, String8(),
+ CAMERA_STREAM_ROTATION_0, &mPreviewStreamId, std::string(),
std::unordered_set<int32_t>{ANDROID_SENSOR_PIXEL_MODE_DEFAULT});
if (res != OK) {
ALOGE("%s: Camera %d: Unable to create preview stream: %s (%d)",
@@ -385,7 +386,7 @@
params.videoWidth, params.videoHeight,
params.videoFormat, params.videoDataSpace,
CAMERA_STREAM_ROTATION_0, &mRecordingStreamId,
- String8(), std::unordered_set<int32_t>{ANDROID_SENSOR_PIXEL_MODE_DEFAULT});
+ std::string(), std::unordered_set<int32_t>{ANDROID_SENSOR_PIXEL_MODE_DEFAULT});
if (res != OK) {
ALOGE("%s: Camera %d: Can't create output stream for recording: "
"%s (%d)", __FUNCTION__, mId,
@@ -585,21 +586,21 @@
}
status_t StreamingProcessor::dump(int fd, const Vector<String16>& /*args*/) {
- String8 result;
+ std::string result;
- result.append(" Current requests:\n");
+ result += " Current requests:\n";
if (mPreviewRequest.entryCount() != 0) {
- result.append(" Preview request:\n");
- write(fd, result.string(), result.size());
+ result += " Preview request:\n";
+ write(fd, result.c_str(), result.size());
mPreviewRequest.dump(fd, 2, 6);
result.clear();
} else {
- result.append(" Preview request: undefined\n");
+ result += " Preview request: undefined\n";
}
if (mRecordingRequest.entryCount() != 0) {
result = " Recording request:\n";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
mRecordingRequest.dump(fd, 2, 6);
result.clear();
} else {
@@ -609,11 +610,11 @@
const char* streamTypeString[] = {
"none", "preview", "record"
};
- result.append(String8::format(" Active request: %s (paused: %s)\n",
- streamTypeString[mActiveRequest],
- mPaused ? "yes" : "no"));
+ result += fmt::sprintf(" Active request: %s (paused: %s\n",
+ streamTypeString[mActiveRequest],
+ mPaused ? "yes" : "no");
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
return OK;
}
diff --git a/services/camera/libcameraservice/api1/client2/ZslProcessor.cpp b/services/camera/libcameraservice/api1/client2/ZslProcessor.cpp
index 1321e6b..d6c2415 100644
--- a/services/camera/libcameraservice/api1/client2/ZslProcessor.cpp
+++ b/services/camera/libcameraservice/api1/client2/ZslProcessor.cpp
@@ -30,6 +30,7 @@
#include <utils/Log.h>
#include <utils/Trace.h>
#include <gui/Surface.h>
+#include <camera/StringUtils.h>
#include "common/CameraDeviceBase.h"
#include "api1/Camera2Client.h"
@@ -255,13 +256,13 @@
BufferQueue::createBufferQueue(&producer, &consumer);
mProducer = new RingBufferConsumer(consumer, GRALLOC_USAGE_HW_CAMERA_ZSL,
mBufferQueueDepth);
- mProducer->setName(String8("Camera2-ZslRingBufferConsumer"));
+ mProducer->setName("Camera2-ZslRingBufferConsumer");
sp<Surface> outSurface = new Surface(producer);
res = device->createStream(outSurface, params.fastInfo.usedZslSize.width,
params.fastInfo.usedZslSize.height, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
HAL_DATASPACE_UNKNOWN, CAMERA_STREAM_ROTATION_0, &mZslStreamId,
- String8(), std::unordered_set<int32_t>{ANDROID_SENSOR_PIXEL_MODE_DEFAULT});
+ std::string(), std::unordered_set<int32_t>{ANDROID_SENSOR_PIXEL_MODE_DEFAULT});
if (res != OK) {
ALOGE("%s: Camera %d: Can't create ZSL stream: "
"%s (%d)", __FUNCTION__, client->getCameraId(),
@@ -680,12 +681,12 @@
void ZslProcessor::dump(int fd, const Vector<String16>& /*args*/) const {
Mutex::Autolock l(mInputMutex);
if (!mLatestCapturedRequest.isEmpty()) {
- String8 result(" Latest ZSL capture request:\n");
- write(fd, result.string(), result.size());
+ std::string result = " Latest ZSL capture request:\n";
+ write(fd, result.c_str(), result.size());
mLatestCapturedRequest.dump(fd, 2, 6);
} else {
- String8 result(" Latest ZSL capture request: none yet\n");
- write(fd, result.string(), result.size());
+ std::string result = " Latest ZSL capture request: none yet\n";
+ write(fd, result.c_str(), result.size());
}
dumpZslQueue(fd);
}
@@ -706,12 +707,12 @@
}
void ZslProcessor::dumpZslQueue(int fd) const {
- String8 header("ZSL queue contents:");
- String8 indent(" ");
- ALOGV("%s", header.string());
+ std::string header = "ZSL queue contents:";
+ std::string indent = " ";
+ ALOGV("%s", header.c_str());
if (fd != -1) {
header = indent + header + "\n";
- write(fd, header.string(), header.size());
+ write(fd, header.c_str(), header.size());
}
for (size_t i = 0; i < mZslQueue.size(); i++) {
const ZslPair &queueEntry = mZslQueue[i];
@@ -725,13 +726,13 @@
entry = queueEntry.frame.find(ANDROID_CONTROL_AE_STATE);
if (entry.count > 0) frameAeState = entry.data.u8[0];
}
- String8 result =
- String8::format(" %zu: b: %" PRId64 "\tf: %" PRId64 ", AE state: %d", i,
+ std::string result =
+ fmt::sprintf(" %zu: b: %" PRId64 "\tf: %" PRId64 ", AE state: %d", i,
bufferTimestamp, frameTimestamp, frameAeState);
- ALOGV("%s", result.string());
+ ALOGV("%s", result.c_str());
if (fd != -1) {
result = indent + result + "\n";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
}
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
index 7ccd515..d54ba46 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
@@ -26,6 +26,7 @@
#include <gui/Surface.h>
#include <camera/camera2/CaptureRequest.h>
#include <camera/CameraUtils.h>
+#include <camera/StringUtils.h>
#include "common/CameraDeviceBase.h"
#include "device3/Camera3Device.h"
@@ -42,12 +43,12 @@
#define STATUS_ERROR(errorCode, errorString) \
binder::Status::fromServiceSpecificError(errorCode, \
- String8::format("%s:%d: %s", __FUNCTION__, __LINE__, errorString))
+ fmt::sprintf("%s:%d: %s", __FUNCTION__, __LINE__, errorString).c_str())
#define STATUS_ERROR_FMT(errorCode, errorString, ...) \
binder::Status::fromServiceSpecificError(errorCode, \
- String8::format("%s:%d: " errorString, __FUNCTION__, __LINE__, \
- __VA_ARGS__))
+ fmt::sprintf("%s:%d: " errorString, __FUNCTION__, __LINE__, \
+ __VA_ARGS__).c_str())
namespace android {
using namespace camera2;
@@ -57,10 +58,10 @@
CameraDeviceClientBase::CameraDeviceClientBase(
const sp<CameraService>& cameraService,
const sp<hardware::camera2::ICameraDeviceCallbacks>& remoteCallback,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
bool systemNativeClient,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraId,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraId,
[[maybe_unused]] int api1CameraId,
int cameraFacing,
int sensorOrientation,
@@ -87,10 +88,10 @@
CameraDeviceClient::CameraDeviceClient(const sp<CameraService>& cameraService,
const sp<hardware::camera2::ICameraDeviceCallbacks>& remoteCallback,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
bool systemNativeClient,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraId,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraId,
int cameraFacing,
int sensorOrientation,
int clientPid,
@@ -107,16 +108,17 @@
mOverrideForPerfClass(overrideForPerfClass) {
ATRACE_CALL();
- ALOGI("CameraDeviceClient %s: Opened", cameraId.string());
+ ALOGI("CameraDeviceClient %s: Opened", cameraId.c_str());
}
status_t CameraDeviceClient::initialize(sp<CameraProviderManager> manager,
- const String8& monitorTags) {
+ const std::string& monitorTags) {
return initializeImpl(manager, monitorTags);
}
template<typename TProviderPtr>
-status_t CameraDeviceClient::initializeImpl(TProviderPtr providerPtr, const String8& monitorTags) {
+status_t CameraDeviceClient::initializeImpl(TProviderPtr providerPtr,
+ const std::string& monitorTags) {
ATRACE_CALL();
status_t res;
@@ -125,10 +127,9 @@
return res;
}
- String8 threadName;
mFrameProcessor = new FrameProcessorBase(mDevice);
- threadName = String8::format("CDU-%s-FrameProc", mCameraIdStr.string());
- mFrameProcessor->run(threadName.string());
+ std::string threadName = std::string("CDU-") + mCameraIdStr + "-FrameProc";
+ mFrameProcessor->run(threadName.c_str());
mFrameProcessor->registerListener(camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MIN_ID,
camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MAX_ID,
@@ -181,13 +182,13 @@
mProviderManager = providerPtr;
// Cache physical camera ids corresponding to this device and also the high
// resolution sensors in this device + physical camera ids
- mProviderManager->isLogicalCamera(mCameraIdStr.string(), &mPhysicalCameraIds);
+ mProviderManager->isLogicalCamera(mCameraIdStr, &mPhysicalCameraIds);
if (isUltraHighResolutionSensor(mCameraIdStr)) {
- mHighResolutionSensors.insert(mCameraIdStr.string());
+ mHighResolutionSensors.insert(mCameraIdStr);
}
for (auto &physicalId : mPhysicalCameraIds) {
- if (isUltraHighResolutionSensor(String8(physicalId.c_str()))) {
- mHighResolutionSensors.insert(physicalId.c_str());
+ if (isUltraHighResolutionSensor(physicalId)) {
+ mHighResolutionSensors.insert(physicalId);
}
}
return OK;
@@ -215,7 +216,7 @@
if (idx == NAME_NOT_FOUND) {
ALOGE("%s: Camera %s: Tried to submit a request with a surface that"
" we have not called createStream on",
- __FUNCTION__, mCameraIdStr.string());
+ __FUNCTION__, mCameraIdStr.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Request targets Surface that is not part of current capture session");
} else if ((compositeIdx = mCompositeStreamMap.indexOfKey(IInterface::asBinder(gbp)))
@@ -232,7 +233,7 @@
(*outSurfaceMap)[streamSurfaceId.streamId()].push_back(streamSurfaceId.surfaceId());
ALOGV("%s: Camera %s: Appending output stream %d surface %d to request",
- __FUNCTION__, mCameraIdStr.string(), streamSurfaceId.streamId(),
+ __FUNCTION__, mCameraIdStr.c_str(), streamSurfaceId.streamId(),
streamSurfaceId.surfaceId());
if (currentStreamId != nullptr) {
@@ -275,7 +276,7 @@
if (requests.empty()) {
ALOGE("%s: Camera %s: Sent null request. Rejecting request.",
- __FUNCTION__, mCameraIdStr.string());
+ __FUNCTION__, mCameraIdStr.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, "Empty request list");
}
@@ -288,19 +289,19 @@
if (request.mIsReprocess) {
if (!mInputStream.configured) {
ALOGE("%s: Camera %s: no input stream is configured.", __FUNCTION__,
- mCameraIdStr.string());
+ mCameraIdStr.c_str());
return STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
"No input configured for camera %s but request is for reprocessing",
- mCameraIdStr.string());
+ mCameraIdStr.c_str());
} else if (streaming) {
ALOGE("%s: Camera %s: streaming reprocess requests not supported.", __FUNCTION__,
- mCameraIdStr.string());
+ mCameraIdStr.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Repeating reprocess requests not supported");
} else if (request.mPhysicalCameraSettings.size() > 1) {
ALOGE("%s: Camera %s: reprocess requests not supported for "
"multiple physical cameras.", __FUNCTION__,
- mCameraIdStr.string());
+ mCameraIdStr.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Reprocess requests not supported for multiple cameras");
}
@@ -308,23 +309,23 @@
if (request.mPhysicalCameraSettings.empty()) {
ALOGE("%s: Camera %s: request doesn't contain any settings.", __FUNCTION__,
- mCameraIdStr.string());
+ mCameraIdStr.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Request doesn't contain any settings");
}
//The first capture settings should always match the logical camera id
- String8 logicalId(request.mPhysicalCameraSettings.begin()->id.c_str());
+ const std::string &logicalId = request.mPhysicalCameraSettings.begin()->id;
if (mDevice->getId() != logicalId) {
ALOGE("%s: Camera %s: Invalid camera request settings.", __FUNCTION__,
- mCameraIdStr.string());
+ mCameraIdStr.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Invalid camera request settings");
}
if (request.mSurfaceList.isEmpty() && request.mStreamIdxList.size() == 0) {
ALOGE("%s: Camera %s: Requests must have at least one surface target. "
- "Rejecting request.", __FUNCTION__, mCameraIdStr.string());
+ "Rejecting request.", __FUNCTION__, mCameraIdStr.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Request has no output targets");
}
@@ -350,9 +351,9 @@
ssize_t index = mConfiguredOutputs.indexOfKey(streamId);
if (index >= 0) {
- String8 requestedPhysicalId(
- mConfiguredOutputs.valueAt(index).getPhysicalCameraId());
- requestedPhysicalIds.push_back(requestedPhysicalId.string());
+ const std::string &requestedPhysicalId =
+ mConfiguredOutputs.valueAt(index).getPhysicalCameraId();
+ requestedPhysicalIds.push_back(requestedPhysicalId);
dynamicProfileBitmap |=
mConfiguredOutputs.valueAt(index).getDynamicRangeProfile();
} else {
@@ -368,7 +369,7 @@
if (index < 0) {
ALOGE("%s: Camera %s: Tried to submit a request with a surface that"
" we have not called createStream on: stream %d",
- __FUNCTION__, mCameraIdStr.string(), streamId);
+ __FUNCTION__, mCameraIdStr.c_str(), streamId);
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Request targets Surface that is not part of current capture session");
}
@@ -377,7 +378,7 @@
if ((size_t)surfaceIdx >= gbps.size()) {
ALOGE("%s: Camera %s: Tried to submit a request with a surface that"
" we have not called createStream on: stream %d, surfaceIdx %d",
- __FUNCTION__, mCameraIdStr.string(), streamId, surfaceIdx);
+ __FUNCTION__, mCameraIdStr.c_str(), streamId, surfaceIdx);
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Request targets Surface has invalid surface index");
}
@@ -387,9 +388,9 @@
return res;
}
- String8 requestedPhysicalId(
- mConfiguredOutputs.valueAt(index).getPhysicalCameraId());
- requestedPhysicalIds.push_back(requestedPhysicalId.string());
+ const std::string &requestedPhysicalId =
+ mConfiguredOutputs.valueAt(index).getPhysicalCameraId();
+ requestedPhysicalIds.push_back(requestedPhysicalId);
dynamicProfileBitmap |=
mConfiguredOutputs.valueAt(index).getDynamicRangeProfile();
}
@@ -411,7 +412,7 @@
} else {
ALOGE("%s: Camera %s: Tried to submit a request with a surfaces that"
" reference an unsupported dynamic range profile combination"
- " 0x%" PRIx64 "!", __FUNCTION__, mCameraIdStr.string(),
+ " 0x%" PRIx64 "!", __FUNCTION__, mCameraIdStr.c_str(),
dynamicProfileBitmap);
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Request targets an unsupported dynamic range profile"
@@ -420,7 +421,7 @@
} else {
ALOGE("%s: Camera %s: Tried to submit a request with a surface that"
" references unsupported dynamic range profile 0x%x!",
- __FUNCTION__, mCameraIdStr.string(), i);
+ __FUNCTION__, mCameraIdStr.c_str(), i);
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Request targets 10-bit Surface with unsupported dynamic range"
" profile");
@@ -432,7 +433,7 @@
for (const auto& it : request.mPhysicalCameraSettings) {
if (it.settings.isEmpty()) {
ALOGE("%s: Camera %s: Sent empty metadata packet. Rejecting request.",
- __FUNCTION__, mCameraIdStr.string());
+ __FUNCTION__, mCameraIdStr.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Request settings are empty");
}
@@ -455,7 +456,7 @@
}
}
- String8 physicalId(it.id.c_str());
+ const std::string &physicalId = it.id;
bool hasTestPatternModePhysicalKey = std::find(mSupportedPhysicalRequestKeys.begin(),
mSupportedPhysicalRequestKeys.end(), ANDROID_SENSOR_TEST_PATTERN_MODE) !=
mSupportedPhysicalRequestKeys.end();
@@ -467,7 +468,7 @@
it.id);
if (found == requestedPhysicalIds.end()) {
ALOGE("%s: Camera %s: Physical camera id: %s not part of attached outputs.",
- __FUNCTION__, mCameraIdStr.string(), physicalId.string());
+ __FUNCTION__, mCameraIdStr.c_str(), physicalId.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Invalid physical camera id");
}
@@ -513,7 +514,7 @@
&(submitInfo->mRequestId), /*size*/1);
loopCounter++; // loopCounter starts from 1
ALOGV("%s: Camera %s: Creating request with ID %d (%d of %zu)",
- __FUNCTION__, mCameraIdStr.string(), submitInfo->mRequestId,
+ __FUNCTION__, mCameraIdStr.c_str(), submitInfo->mRequestId,
loopCounter, requests.size());
metadataRequestList.push_back(physicalSettingsList);
@@ -536,12 +537,12 @@
err = mDevice->setStreamingRequestList(metadataRequestList, surfaceMapList,
&(submitInfo->mLastFrameNumber));
if (err != OK) {
- String8 msg = String8::format(
+ std::string msg = fmt::sprintf(
"Camera %s: Got error %s (%d) after trying to set streaming request",
- mCameraIdStr.string(), strerror(-err), err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
+ mCameraIdStr.c_str(), strerror(-err), err);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION,
- msg.string());
+ msg.c_str());
} else {
Mutex::Autolock idLock(mStreamingRequestIdLock);
mStreamingRequestId = submitInfo->mRequestId;
@@ -550,17 +551,17 @@
err = mDevice->captureList(metadataRequestList, surfaceMapList,
&(submitInfo->mLastFrameNumber));
if (err != OK) {
- String8 msg = String8::format(
+ std::string msg = fmt::sprintf(
"Camera %s: Got error %s (%d) after trying to submit capture request",
- mCameraIdStr.string(), strerror(-err), err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
+ mCameraIdStr.c_str(), strerror(-err), err);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION,
- msg.string());
+ msg.c_str());
}
ALOGV("%s: requestId = %d ", __FUNCTION__, submitInfo->mRequestId);
}
- ALOGV("%s: Camera %s: End of function", __FUNCTION__, mCameraIdStr.string());
+ ALOGV("%s: Camera %s: End of function", __FUNCTION__, mCameraIdStr.c_str());
return res;
}
@@ -584,22 +585,22 @@
Mutex::Autolock idLock(mStreamingRequestIdLock);
if (mStreamingRequestId != requestId) {
- String8 msg = String8::format("Camera %s: Canceling request ID %d doesn't match "
- "current request ID %d", mCameraIdStr.string(), requestId, mStreamingRequestId);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Canceling request ID %d doesn't match "
+ "current request ID %d", mCameraIdStr.c_str(), requestId, mStreamingRequestId);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
err = mDevice->clearStreamingRequest(lastFrameNumber);
if (err == OK) {
ALOGV("%s: Camera %s: Successfully cleared streaming request",
- __FUNCTION__, mCameraIdStr.string());
+ __FUNCTION__, mCameraIdStr.c_str());
mStreamingRequestId = REQUEST_ID_NONE;
} else {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
"Camera %s: Error clearing streaming request: %s (%d)",
- mCameraIdStr.string(), strerror(-err), err);
+ mCameraIdStr.c_str(), strerror(-err), err);
}
return res;
@@ -624,9 +625,9 @@
if (!(res = checkPidStatus(__FUNCTION__)).isOk()) return res;
if (offlineStreamIds == nullptr) {
- String8 msg = String8::format("Invalid offline stream ids");
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = "Invalid offline stream ids";
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
Mutex::Autolock icl(mBinderSerializationLock);
@@ -643,15 +644,15 @@
status_t err = mDevice->configureStreams(sessionParams, operatingMode);
if (err == BAD_VALUE) {
- String8 msg = String8::format("Camera %s: Unsupported set of inputs/outputs provided",
- mCameraIdStr.string());
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- res = STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Unsupported set of inputs/outputs provided",
+ mCameraIdStr.c_str());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ res = STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
} else if (err != OK) {
- String8 msg = String8::format("Camera %s: Error configuring streams: %s (%d)",
- mCameraIdStr.string(), strerror(-err), err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Error configuring streams: %s (%d)",
+ mCameraIdStr.c_str(), strerror(-err), err);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
} else {
offlineStreamIds->clear();
mDevice->getOfflineStreamIds(offlineStreamIds);
@@ -660,10 +661,10 @@
for (size_t i = 0; i < mCompositeStreamMap.size(); ++i) {
err = mCompositeStreamMap.valueAt(i)->configureStream();
if (err != OK) {
- String8 msg = String8::format("Camera %s: Error configuring composite "
- "streams: %s (%d)", mCameraIdStr.string(), strerror(-err), err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Error configuring composite "
+ "streams: %s (%d)", mCameraIdStr.c_str(), strerror(-err), err);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
break;
}
@@ -722,35 +723,36 @@
}
if (status == nullptr) {
- String8 msg = String8::format( "Camera %s: Invalid status!", mCameraIdStr.string());
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf( "Camera %s: Invalid status!", mCameraIdStr.c_str());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
*status = false;
- camera3::metadataGetter getMetadata = [this](const String8 &id, bool /*overrideForPerfClass*/) {
+ camera3::metadataGetter getMetadata = [this](const std::string &id,
+ bool /*overrideForPerfClass*/) {
return mDevice->infoPhysical(id);};
- ret = mProviderManager->isSessionConfigurationSupported(mCameraIdStr.string(),
+ ret = mProviderManager->isSessionConfigurationSupported(mCameraIdStr.c_str(),
sessionConfiguration, mOverrideForPerfClass, getMetadata, status);
switch (ret) {
case OK:
// Expected, do nothing.
break;
case INVALID_OPERATION: {
- String8 msg = String8::format(
+ std::string msg = fmt::sprintf(
"Camera %s: Session configuration query not supported!",
- mCameraIdStr.string());
- ALOGD("%s: %s", __FUNCTION__, msg.string());
- res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ mCameraIdStr.c_str());
+ ALOGD("%s: %s", __FUNCTION__, msg.c_str());
+ res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
}
break;
default: {
- String8 msg = String8::format( "Camera %s: Error: %s (%d)", mCameraIdStr.string(),
+ std::string msg = fmt::sprintf( "Camera %s: Error: %s (%d)", mCameraIdStr.c_str(),
strerror(-ret), ret);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
res = STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
- msg.string());
+ msg.c_str());
}
}
@@ -802,10 +804,10 @@
}
if (surfaces.empty() && dIndex == NAME_NOT_FOUND) {
- String8 msg = String8::format("Camera %s: Invalid stream ID (%d) specified, no such"
- " stream created yet", mCameraIdStr.string(), streamId);
- ALOGW("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Invalid stream ID (%d) specified, no such"
+ " stream created yet", mCameraIdStr.c_str(), streamId);
+ ALOGW("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
}
@@ -813,10 +815,10 @@
status_t err = mDevice->deleteStream(streamId);
if (err != OK) {
- String8 msg = String8::format("Camera %s: Unexpected error %s (%d) when deleting stream %d",
- mCameraIdStr.string(), strerror(-err), err, streamId);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Unexpected error %s (%d) when deleting stream "
+ "%d", mCameraIdStr.c_str(), strerror(-err), err, streamId);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
} else {
if (isInput) {
mInputStream.configured = false;
@@ -836,11 +838,11 @@
status_t ret;
if ((ret = mCompositeStreamMap.valueAt(compositeIndex)->deleteStream())
!= OK) {
- String8 msg = String8::format("Camera %s: Unexpected error %s (%d) when "
- "deleting composite stream %d", mCameraIdStr.string(), strerror(-err), err,
- streamId);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Unexpected error %s (%d) when "
+ "deleting composite stream %d", mCameraIdStr.c_str(), strerror(-err),
+ err, streamId);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
}
mCompositeStreamMap.removeItemsAt(compositeIndex);
}
@@ -873,7 +875,7 @@
size_t numBufferProducers = bufferProducers.size();
bool deferredConsumer = outputConfiguration.isDeferred();
bool isShared = outputConfiguration.isShared();
- String8 physicalCameraId = String8(outputConfiguration.getPhysicalCameraId());
+ const std::string &physicalCameraId = outputConfiguration.getPhysicalCameraId();
bool deferredConsumerOnly = deferredConsumer && numBufferProducers == 0;
bool isMultiResolution = outputConfiguration.isMultiResolution();
int64_t dynamicRangeProfile = outputConfiguration.getDynamicRangeProfile();
@@ -914,10 +916,11 @@
sp<IBinder> binder = IInterface::asBinder(bufferProducer);
ssize_t index = mStreamMap.indexOfKey(binder);
if (index != NAME_NOT_FOUND) {
- String8 msg = String8::format("Camera %s: Surface already has a stream created for it "
- "(ID %zd)", mCameraIdStr.string(), index);
- ALOGW("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ALREADY_EXISTS, msg.string());
+ std::string msg = std::string("Camera ") + mCameraIdStr
+ + ": Surface already has a stream created for it (ID "
+ + std::to_string(index) + ")";
+ ALOGW("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ALREADY_EXISTS, msg.c_str());
}
sp<Surface> surface;
@@ -977,7 +980,7 @@
if (err != OK) {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
"Camera %s: Error creating output stream (%d x %d, fmt %x, dataSpace %x): %s (%d)",
- mCameraIdStr.string(), streamInfo.width, streamInfo.height, streamInfo.format,
+ mCameraIdStr.c_str(), streamInfo.width, streamInfo.height, streamInfo.format,
streamInfo.dataSpace, strerror(-err), err);
} else {
int i = 0;
@@ -993,20 +996,19 @@
ALOGV("%s: Camera %s: Successfully created a new stream ID %d for output surface"
" (%d x %d) with format 0x%x.",
- __FUNCTION__, mCameraIdStr.string(), streamId, streamInfo.width,
+ __FUNCTION__, mCameraIdStr.c_str(), streamId, streamInfo.width,
streamInfo.height, streamInfo.format);
// Set transform flags to ensure preview to be rotated correctly.
res = setStreamTransformLocked(streamId, streamInfo.mirrorMode);
// Fill in mHighResolutionCameraIdToStreamIdSet map
- const String8 &cameraIdUsed =
+ const std::string &cameraIdUsed =
physicalCameraId.size() != 0 ? physicalCameraId : mCameraIdStr;
- const char *cameraIdUsedCStr = cameraIdUsed.string();
// Only needed for high resolution sensors
- if (mHighResolutionSensors.find(cameraIdUsedCStr) !=
+ if (mHighResolutionSensors.find(cameraIdUsed) !=
mHighResolutionSensors.end()) {
- mHighResolutionCameraIdToStreamIdSet[cameraIdUsedCStr].insert(streamId);
+ mHighResolutionCameraIdToStreamIdSet[cameraIdUsed].insert(streamId);
}
*newStreamId = streamId;
@@ -1044,8 +1046,8 @@
int streamId = camera3::CAMERA3_STREAM_ID_INVALID;
std::vector<sp<Surface>> noSurface;
std::vector<int> surfaceIds;
- String8 physicalCameraId(outputConfiguration.getPhysicalCameraId());
- const String8 &cameraIdUsed =
+ const std::string &physicalCameraId = outputConfiguration.getPhysicalCameraId();
+ const std::string &cameraIdUsed =
physicalCameraId.size() != 0 ? physicalCameraId : mCameraIdStr;
// Here, we override sensor pixel modes
std::unordered_set<int32_t> overriddenSensorPixelModesUsed;
@@ -1073,7 +1075,7 @@
if (err != OK) {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
"Camera %s: Error creating output stream (%d x %d, fmt %x, dataSpace %x): %s (%d)",
- mCameraIdStr.string(), width, height, format, dataSpace, strerror(-err), err);
+ mCameraIdStr.c_str(), width, height, format, dataSpace, strerror(-err), err);
} else {
// Can not add streamId to mStreamMap here, as the surface is deferred. Add it to
// a separate list to track. Once the deferred surface is set, this id will be
@@ -1089,18 +1091,17 @@
ALOGV("%s: Camera %s: Successfully created a new stream ID %d for a deferred surface"
" (%d x %d) stream with format 0x%x.",
- __FUNCTION__, mCameraIdStr.string(), streamId, width, height, format);
+ __FUNCTION__, mCameraIdStr.c_str(), streamId, width, height, format);
// Set transform flags to ensure preview to be rotated correctly.
res = setStreamTransformLocked(streamId, outputConfiguration.getMirrorMode());
*newStreamId = streamId;
// Fill in mHighResolutionCameraIdToStreamIdSet
- const char *cameraIdUsedCStr = cameraIdUsed.string();
// Only needed for high resolution sensors
- if (mHighResolutionSensors.find(cameraIdUsedCStr) !=
+ if (mHighResolutionSensors.find(cameraIdUsed) !=
mHighResolutionSensors.end()) {
- mHighResolutionCameraIdToStreamIdSet[cameraIdUsed.string()].insert(streamId);
+ mHighResolutionCameraIdToStreamIdSet[cameraIdUsed].insert(streamId);
}
}
return res;
@@ -1124,10 +1125,10 @@
err = mDevice->setStreamTransform(streamId, transform);
if (err != OK) {
- String8 msg = String8::format("Failed to set stream transform (stream id %d)",
+ std::string msg = fmt::sprintf("Failed to set stream transform (stream id %d)",
streamId);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
}
return res;
@@ -1152,10 +1153,10 @@
}
if (mInputStream.configured) {
- String8 msg = String8::format("Camera %s: Already has an input stream "
- "configured (ID %d)", mCameraIdStr.string(), mInputStream.id);
- ALOGE("%s: %s", __FUNCTION__, msg.string() );
- return STATUS_ERROR(CameraService::ERROR_ALREADY_EXISTS, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Already has an input stream "
+ "configured (ID %d)", mCameraIdStr.c_str(), mInputStream.id);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str() );
+ return STATUS_ERROR(CameraService::ERROR_ALREADY_EXISTS, msg.c_str());
}
int streamId = -1;
@@ -1168,12 +1169,12 @@
mInputStream.id = streamId;
ALOGV("%s: Camera %s: Successfully created a new input stream ID %d",
- __FUNCTION__, mCameraIdStr.string(), streamId);
+ __FUNCTION__, mCameraIdStr.c_str(), streamId);
*newStreamId = streamId;
} else {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
- "Camera %s: Error creating new input stream: %s (%d)", mCameraIdStr.string(),
+ "Camera %s: Error creating new input stream: %s (%d)", mCameraIdStr.c_str(),
strerror(-err), err);
}
@@ -1198,9 +1199,9 @@
if (err != OK) {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
"Camera %s: Error getting input Surface: %s (%d)",
- mCameraIdStr.string(), strerror(-err), err);
+ mCameraIdStr.c_str(), strerror(-err), err);
} else {
- inputSurface->name = String16("CameraInput");
+ inputSurface->name = toString16("CameraInput");
inputSurface->graphicBufferProducer = producer;
}
return res;
@@ -1221,7 +1222,7 @@
const std::vector<sp<IGraphicBufferProducer> >& bufferProducers =
outputConfiguration.getGraphicBufferProducers();
- String8 physicalCameraId(outputConfiguration.getPhysicalCameraId());
+ const std::string &physicalCameraId = outputConfiguration.getPhysicalCameraId();
auto producerCount = bufferProducers.size();
if (producerCount == 0) {
@@ -1307,12 +1308,12 @@
case -EBUSY:
res = STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Camera %s: Error updating stream: %s (%d)",
- mCameraIdStr.string(), strerror(ret), ret);
+ mCameraIdStr.c_str(), strerror(ret), ret);
break;
default:
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
"Camera %s: Error updating stream: %s (%d)",
- mCameraIdStr.string(), strerror(ret), ret);
+ mCameraIdStr.c_str(), strerror(ret), ret);
break;
}
} else {
@@ -1328,7 +1329,7 @@
mConfiguredOutputs.replaceValueFor(streamId, outputConfiguration);
ALOGV("%s: Camera %s: Successful stream ID %d update",
- __FUNCTION__, mCameraIdStr.string(), streamId);
+ __FUNCTION__, mCameraIdStr.c_str(), streamId);
}
return res;
@@ -1363,12 +1364,12 @@
} else if (err == BAD_VALUE) {
res = STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Camera %s: Template ID %d is invalid or not supported: %s (%d)",
- mCameraIdStr.string(), templateId, strerror(-err), err);
+ mCameraIdStr.c_str(), templateId, strerror(-err), err);
} else {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
"Camera %s: Error creating default request for template %d: %s (%d)",
- mCameraIdStr.string(), templateId, strerror(-err), err);
+ mCameraIdStr.c_str(), templateId, strerror(-err), err);
}
return res;
}
@@ -1415,17 +1416,17 @@
// FIXME: Also need check repeating burst.
Mutex::Autolock idLock(mStreamingRequestIdLock);
if (mStreamingRequestId != REQUEST_ID_NONE) {
- String8 msg = String8::format(
+ std::string msg = fmt::sprintf(
"Camera %s: Try to waitUntilIdle when there are active streaming requests",
- mCameraIdStr.string());
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ mCameraIdStr.c_str());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
}
status_t err = mDevice->waitUntilDrained();
if (err != OK) {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
"Camera %s: Error waiting to drain: %s (%d)",
- mCameraIdStr.string(), strerror(-err), err);
+ mCameraIdStr.c_str(), strerror(-err), err);
}
ALOGV("%s Done", __FUNCTION__);
return res;
@@ -1451,7 +1452,8 @@
status_t err = mDevice->flush(lastFrameNumber);
if (err != OK) {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
- "Camera %s: Error flushing device: %s (%d)", mCameraIdStr.string(), strerror(-err), err);
+ "Camera %s: Error flushing device: %s (%d)", mCameraIdStr.c_str(), strerror(-err),
+ err);
}
return res;
}
@@ -1475,10 +1477,10 @@
}
if (index == NAME_NOT_FOUND) {
- String8 msg = String8::format("Camera %s: Invalid stream ID (%d) specified, no stream "
- "with that ID exists", mCameraIdStr.string(), streamId);
- ALOGW("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Invalid stream ID (%d) specified, no stream "
+ "with that ID exists", mCameraIdStr.c_str(), streamId);
+ ALOGW("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
// Also returns BAD_VALUE if stream ID was not valid, or stream already
@@ -1487,10 +1489,10 @@
if (err == BAD_VALUE) {
res = STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Camera %s: Stream %d has already been used, and cannot be prepared",
- mCameraIdStr.string(), streamId);
+ mCameraIdStr.c_str(), streamId);
} else if (err != OK) {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
- "Camera %s: Error preparing stream %d: %s (%d)", mCameraIdStr.string(), streamId,
+ "Camera %s: Error preparing stream %d: %s (%d)", mCameraIdStr.c_str(), streamId,
strerror(-err), err);
}
return res;
@@ -1515,17 +1517,17 @@
}
if (index == NAME_NOT_FOUND) {
- String8 msg = String8::format("Camera %s: Invalid stream ID (%d) specified, no stream "
- "with that ID exists", mCameraIdStr.string(), streamId);
- ALOGW("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Invalid stream ID (%d) specified, no stream "
+ "with that ID exists", mCameraIdStr.c_str(), streamId);
+ ALOGW("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (maxCount <= 0) {
- String8 msg = String8::format("Camera %s: maxCount (%d) must be greater than 0",
- mCameraIdStr.string(), maxCount);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: maxCount (%d) must be greater than 0",
+ mCameraIdStr.c_str(), maxCount);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
// Also returns BAD_VALUE if stream ID was not valid, or stream already
@@ -1534,10 +1536,10 @@
if (err == BAD_VALUE) {
res = STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Camera %s: Stream %d has already been used, and cannot be prepared",
- mCameraIdStr.string(), streamId);
+ mCameraIdStr.c_str(), streamId);
} else if (err != OK) {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
- "Camera %s: Error preparing stream %d: %s (%d)", mCameraIdStr.string(), streamId,
+ "Camera %s: Error preparing stream %d: %s (%d)", mCameraIdStr.c_str(), streamId,
strerror(-err), err);
}
@@ -1563,10 +1565,10 @@
}
if (index == NAME_NOT_FOUND) {
- String8 msg = String8::format("Camera %s: Invalid stream ID (%d) specified, no stream "
- "with that ID exists", mCameraIdStr.string(), streamId);
- ALOGW("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Invalid stream ID (%d) specified, no stream "
+ "with that ID exists", mCameraIdStr.c_str(), streamId);
+ ALOGW("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
// Also returns BAD_VALUE if stream ID was not valid or if the stream is in
@@ -1575,10 +1577,10 @@
if (err == BAD_VALUE) {
res = STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Camera %s: Stream %d is still in use, cannot be torn down",
- mCameraIdStr.string(), streamId);
+ mCameraIdStr.c_str(), streamId);
} else if (err != OK) {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
- "Camera %s: Error tearing down stream %d: %s (%d)", mCameraIdStr.string(), streamId,
+ "Camera %s: Error tearing down stream %d: %s (%d)", mCameraIdStr.c_str(), streamId,
strerror(-err), err);
}
@@ -1596,7 +1598,7 @@
const std::vector<sp<IGraphicBufferProducer> >& bufferProducers =
outputConfiguration.getGraphicBufferProducers();
- String8 physicalId(outputConfiguration.getPhysicalCameraId());
+ const std::string &physicalId = outputConfiguration.getPhysicalCameraId();
if (bufferProducers.size() == 0) {
ALOGE("%s: bufferProducers must not be empty", __FUNCTION__);
@@ -1621,17 +1623,17 @@
}
if (deferredStreamIndex == NAME_NOT_FOUND && !streamIdConfigured) {
- String8 msg = String8::format("Camera %s: deferred surface is set to a unknown stream"
- "(ID %d)", mCameraIdStr.string(), streamId);
- ALOGW("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: deferred surface is set to a unknown stream"
+ "(ID %d)", mCameraIdStr.c_str(), streamId);
+ ALOGW("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (mStreamInfoMap[streamId].finalized) {
- String8 msg = String8::format("Camera %s: finalizeOutputConfigurations has been called"
- " on stream ID %d", mCameraIdStr.string(), streamId);
- ALOGW("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: finalizeOutputConfigurations has been called"
+ " on stream ID %d", mCameraIdStr.c_str(), streamId);
+ ALOGW("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (!mDevice.get()) {
@@ -1650,7 +1652,7 @@
ssize_t index = mStreamMap.indexOfKey(IInterface::asBinder(bufferProducer));
if (index != NAME_NOT_FOUND) {
ALOGV("Camera %s: Surface already has a stream created "
- " for it (ID %zd)", mCameraIdStr.string(), index);
+ " for it (ID %zd)", mCameraIdStr.c_str(), index);
continue;
}
@@ -1693,11 +1695,11 @@
} else if (err == NO_INIT) {
res = STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Camera %s: Deferred surface is invalid: %s (%d)",
- mCameraIdStr.string(), strerror(-err), err);
+ mCameraIdStr.c_str(), strerror(-err), err);
} else {
res = STATUS_ERROR_FMT(CameraService::ERROR_INVALID_OPERATION,
"Camera %s: Error setting output stream deferred surface: %s (%d)",
- mCameraIdStr.string(), strerror(-err), err);
+ mCameraIdStr.c_str(), strerror(-err), err);
}
return res;
@@ -1709,10 +1711,10 @@
if (!(res = checkPidStatus(__FUNCTION__)).isOk()) return res;
if (!isValidAudioRestriction(mode)) {
- String8 msg = String8::format("Camera %s: invalid audio restriction mode %d",
- mCameraIdStr.string(), mode);
- ALOGW("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: invalid audio restriction mode %d",
+ mCameraIdStr.c_str(), mode);
+ ALOGW("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
Mutex::Autolock icl(mBinderSerializationLock);
@@ -1776,15 +1778,15 @@
}
if (offlineOutputIds.empty()) {
- String8 msg = String8::format("Offline surfaces must not be empty");
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = "Offline surfaces must not be empty";
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (session == nullptr) {
- String8 msg = String8::format("Invalid offline session");
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = "Invalid offline session";
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
std::vector<int32_t> offlineStreamIds;
@@ -1793,17 +1795,17 @@
for (const auto& streamId : offlineOutputIds) {
ssize_t index = mConfiguredOutputs.indexOfKey(streamId);
if (index == NAME_NOT_FOUND) {
- String8 msg = String8::format("Offline surface with id: %d is not registered",
+ std::string msg = fmt::sprintf("Offline surface with id: %d is not registered",
streamId);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (!mStreamInfoMap[streamId].supportsOffline) {
- String8 msg = String8::format("Offline surface with id: %d doesn't support "
+ std::string msg = fmt::sprintf("Offline surface with id: %d doesn't support "
"offline mode", streamId);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
Mutex::Autolock l(mCompositeLock);
@@ -1838,7 +1840,7 @@
if (ret != OK) {
return STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Camera %s: Error switching to offline mode: %s (%d)",
- mCameraIdStr.string(), strerror(ret), ret);
+ mCameraIdStr.c_str(), strerror(ret), ret);
}
sp<CameraOfflineSessionClient> offlineClient;
@@ -1863,7 +1865,7 @@
} else {
// In case we failed to register the offline client, ensure that it still initialized
// so that all failing requests can return back correctly once the object is released.
- offlineClient->initialize(nullptr /*cameraProviderManager*/, String8()/*monitorTags*/);
+ offlineClient->initialize(nullptr /*cameraProviderManager*/, std::string()/*monitorTags*/);
switch(ret) {
case BAD_VALUE:
@@ -1890,7 +1892,7 @@
status_t CameraDeviceClient::dumpClient(int fd, const Vector<String16>& args) {
dprintf(fd, " CameraDeviceClient[%s] (%p) dump:\n",
- mCameraIdStr.string(),
+ mCameraIdStr.c_str(),
(getRemoteCallback() != NULL ?
IInterface::asBinder(getRemoteCallback()).get() : NULL) );
dprintf(fd, " Current client UID %u\n", mClientUid);
@@ -1923,7 +1925,7 @@
return dumpDevice(fd, args);
}
-status_t CameraDeviceClient::startWatchingTags(const String8 &tags, int out) {
+status_t CameraDeviceClient::startWatchingTags(const std::string &tags, int out) {
sp<CameraDeviceBase> device = mDevice;
if (!device) {
dprintf(out, " Device is detached.");
@@ -2034,16 +2036,16 @@
if (mDevice == 0) return;
nsecs_t startTime = systemTime();
- ALOGV("Camera %s: Stopping processors", mCameraIdStr.string());
+ ALOGV("Camera %s: Stopping processors", mCameraIdStr.c_str());
if (mFrameProcessor.get() != nullptr) {
mFrameProcessor->removeListener(
camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MIN_ID,
camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MAX_ID, /*listener*/this);
mFrameProcessor->requestExit();
- ALOGV("Camera %s: Waiting for threads", mCameraIdStr.string());
+ ALOGV("Camera %s: Waiting for threads", mCameraIdStr.c_str());
mFrameProcessor->join();
- ALOGV("Camera %s: Disconnecting device", mCameraIdStr.string());
+ ALOGV("Camera %s: Disconnecting device", mCameraIdStr.c_str());
}
// WORKAROUND: HAL refuses to disconnect while there's streams in flight
@@ -2148,7 +2150,7 @@
entry = metadata.find(ANDROID_LED_TRANSMIT);
if (entry.count > 0 && entry.data.u8[0] != ANDROID_LED_TRANSMIT_ON) {
String16 permissionString =
- String16("android.permission.CAMERA_DISABLE_TRANSMIT_LED");
+ toString16("android.permission.CAMERA_DISABLE_TRANSMIT_LED");
if (!checkCallingPermission(permissionString)) {
const int uid = CameraThreadState::getCallingUid();
ALOGE("Permission Denial: "
@@ -2174,7 +2176,7 @@
if (tempId == nullptr) {
ret = STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
- "Camera %s: Invalid template argument", mCameraIdStr.string());
+ "Camera %s: Invalid template argument", mCameraIdStr.c_str());
return ret;
}
switch(templateId) {
@@ -2199,21 +2201,21 @@
default:
ret = STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
"Camera %s: Template ID %d is invalid or not supported",
- mCameraIdStr.string(), templateId);
+ mCameraIdStr.c_str(), templateId);
return ret;
}
return ret;
}
-const CameraMetadata &CameraDeviceClient::getStaticInfo(const String8 &cameraId) {
+const CameraMetadata &CameraDeviceClient::getStaticInfo(const std::string &cameraId) {
if (mDevice->getId() == cameraId) {
return mDevice->info();
}
return mDevice->infoPhysical(cameraId);
}
-bool CameraDeviceClient::isUltraHighResolutionSensor(const String8 &cameraId) {
+bool CameraDeviceClient::isUltraHighResolutionSensor(const std::string &cameraId) {
const CameraMetadata &deviceInfo = getStaticInfo(cameraId);
return SessionConfigurationUtils::isUltraHighResolutionSensor(deviceInfo);
}
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.h b/services/camera/libcameraservice/api2/CameraDeviceClient.h
index c95bb4a..4b330f3 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.h
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.h
@@ -49,10 +49,10 @@
protected:
CameraDeviceClientBase(const sp<CameraService>& cameraService,
const sp<hardware::camera2::ICameraDeviceCallbacks>& remoteCallback,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
bool systemNativeClient,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraId,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraId,
int api1CameraId,
int cameraFacing,
int sensorOrientation,
@@ -179,10 +179,10 @@
CameraDeviceClient(const sp<CameraService>& cameraService,
const sp<hardware::camera2::ICameraDeviceCallbacks>& remoteCallback,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
bool clientPackageOverride,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraId,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraId,
int cameraFacing,
int sensorOrientation,
int clientPid,
@@ -193,7 +193,7 @@
virtual ~CameraDeviceClient();
virtual status_t initialize(sp<CameraProviderManager> manager,
- const String8& monitorTags) override;
+ const std::string& monitorTags) override;
virtual status_t setRotateAndCropOverride(uint8_t rotateAndCrop) override;
@@ -204,7 +204,7 @@
virtual status_t dumpClient(int fd, const Vector<String16>& args);
- virtual status_t startWatchingTags(const String8 &tags, int out);
+ virtual status_t startWatchingTags(const std::string &tags, int out);
virtual status_t stopWatchingTags(int out);
virtual status_t dumpWatchedEventsToVector(std::vector<std::string> &out);
@@ -238,12 +238,12 @@
// Calculate the ANativeWindow transform from android.sensor.orientation
status_t getRotationTransformLocked(int mirrorMode, /*out*/int32_t* transform);
- bool isUltraHighResolutionSensor(const String8 &cameraId);
+ bool isUltraHighResolutionSensor(const std::string &cameraId);
bool isSensorPixelModeConsistent(const std::list<int> &streamIdList,
const CameraMetadata &settings);
- const CameraMetadata &getStaticInfo(const String8 &cameraId);
+ const CameraMetadata &getStaticInfo(const std::string &cameraId);
private:
// StreamSurfaceId encapsulates streamId + surfaceId for a particular surface.
@@ -282,7 +282,7 @@
std::vector<int32_t> mSupportedPhysicalRequestKeys;
template<typename TProviderPtr>
- status_t initializeImpl(TProviderPtr providerPtr, const String8& monitorTags);
+ status_t initializeImpl(TProviderPtr providerPtr, const std::string& monitorTags);
/** Utility members */
binder::Status checkPidStatus(const char* checkLocation);
diff --git a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
index b6e5a9b..89c05b0 100644
--- a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.cpp
@@ -21,12 +21,13 @@
#include "CameraOfflineSessionClient.h"
#include "utils/CameraThreadState.h"
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
namespace android {
using binder::Status;
-status_t CameraOfflineSessionClient::initialize(sp<CameraProviderManager>, const String8&) {
+status_t CameraOfflineSessionClient::initialize(sp<CameraProviderManager>, const std::string&) {
ATRACE_CALL();
if (mFrameProcessor.get() != nullptr) {
@@ -42,14 +43,13 @@
if (mOfflineSession.get() == nullptr) {
ALOGE("%s: Camera %s: No valid offline session",
- __FUNCTION__, mCameraIdStr.string());
+ __FUNCTION__, mCameraIdStr.c_str());
return NO_INIT;
}
- String8 threadName;
mFrameProcessor = new camera2::FrameProcessorBase(mOfflineSession);
- threadName = String8::format("Offline-%s-FrameProc", mCameraIdStr.string());
- mFrameProcessor->run(threadName.string());
+ std::string threadName = fmt::sprintf("Offline-%s-FrameProc", mCameraIdStr.c_str());
+ mFrameProcessor->run(threadName.c_str());
mFrameProcessor->registerListener(camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MIN_ID,
camera2::FrameProcessorBase::FRAME_PROCESSOR_LISTENER_MAX_ID,
@@ -60,7 +60,7 @@
res = mOfflineSession->initialize(weakThis);
if (res != OK) {
ALOGE("%s: Camera %s: unable to initialize device: %s (%d)",
- __FUNCTION__, mCameraIdStr.string(), strerror(-res), res);
+ __FUNCTION__, mCameraIdStr.c_str(), strerror(-res), res);
return res;
}
@@ -102,14 +102,14 @@
}
status_t CameraOfflineSessionClient::dumpClient(int fd, const Vector<String16>& args) {
- String8 result;
+ std::string result;
result = " Offline session dump:\n";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
if (mOfflineSession.get() == nullptr) {
result = " *** Offline session is detached\n";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
return NO_ERROR;
}
@@ -117,15 +117,15 @@
auto res = mOfflineSession->dump(fd);
if (res != OK) {
- result = String8::format(" Error dumping offline session: %s (%d)",
+ result = fmt::sprintf(" Error dumping offline session: %s (%d)",
strerror(-res), res);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
return OK;
}
-status_t CameraOfflineSessionClient::startWatchingTags(const String8 &tags, int outFd) {
+status_t CameraOfflineSessionClient::startWatchingTags(const std::string &tags, int outFd) {
return BasicClient::startWatchingTags(tags, outFd);
}
@@ -154,7 +154,7 @@
mDisconnected = true;
sCameraService->removeByClient(this);
- sCameraService->logDisconnectedOffline(mCameraIdStr, mClientPid, String8(mClientPackageName));
+ sCameraService->logDisconnectedOffline(mCameraIdStr, mClientPid, mClientPackageName);
sp<IBinder> remote = getRemote();
if (remote != nullptr) {
@@ -169,7 +169,7 @@
finishCameraOps();
ALOGI("%s: Disconnected client for offline camera %s for PID %d", __FUNCTION__,
- mCameraIdStr.string(), mClientPid);
+ mCameraIdStr.c_str(), mClientPid);
// client shouldn't be able to call into us anymore
mClientPid = 0;
@@ -214,7 +214,7 @@
ATRACE_CALL();
{
ALOGV("%s: Start camera ops, package name = %s, client UID = %d",
- __FUNCTION__, String8(mClientPackageName).string(), mClientUid);
+ __FUNCTION__, mClientPackageName.c_str(), mClientUid);
}
if (mAppOpsManager != nullptr) {
@@ -223,14 +223,14 @@
int32_t res;
// TODO : possibly change this to OP_OFFLINE_CAMERA_SESSION
mAppOpsManager->startWatchingMode(AppOpsManager::OP_CAMERA,
- mClientPackageName, mOpsCallback);
+ toString16(mClientPackageName), mOpsCallback);
// TODO : possibly change this to OP_OFFLINE_CAMERA_SESSION
res = mAppOpsManager->startOpNoThrow(AppOpsManager::OP_CAMERA,
- mClientUid, mClientPackageName, /*startIfModeDefault*/ false);
+ mClientUid, toString16(mClientPackageName), /*startIfModeDefault*/ false);
if (res == AppOpsManager::MODE_ERRORED) {
ALOGI("Offline Camera %s: Access for \"%s\" has been revoked",
- mCameraIdStr.string(), String8(mClientPackageName).string());
+ mCameraIdStr.c_str(), mClientPackageName.c_str());
return PERMISSION_DENIED;
}
@@ -238,7 +238,7 @@
// return MODE_IGNORED. Do not treat such case as error.
if (!mUidIsTrusted && res == AppOpsManager::MODE_IGNORED) {
ALOGI("Offline Camera %s: Access for \"%s\" has been restricted",
- mCameraIdStr.string(), String8(mClientPackageName).string());
+ mCameraIdStr.c_str(), mClientPackageName.c_str());
// Return the same error as for device policy manager rejection
return -EACCES;
}
@@ -261,7 +261,7 @@
if (mAppOpsManager != nullptr) {
// TODO : possibly change this to OP_OFFLINE_CAMERA_SESSION
mAppOpsManager->finishOp(AppOpsManager::OP_CAMERA, mClientUid,
- mClientPackageName);
+ toString16(mClientPackageName));
mOpsActive = false;
}
}
@@ -351,10 +351,10 @@
CaptureResultExtras());
}
-status_t CameraOfflineSessionClient::injectCamera(const String8& injectedCamId,
+status_t CameraOfflineSessionClient::injectCamera(const std::string& injectedCamId,
sp<CameraProviderManager> manager) {
ALOGV("%s: This client doesn't support the injection camera. injectedCamId: %s providerPtr: %p",
- __FUNCTION__, injectedCamId.string(), manager.get());
+ __FUNCTION__, injectedCamId.c_str(), manager.get());
return OK;
}
diff --git a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.h b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.h
index 23e1f3d..4a5b1f2 100644
--- a/services/camera/libcameraservice/api2/CameraOfflineSessionClient.h
+++ b/services/camera/libcameraservice/api2/CameraOfflineSessionClient.h
@@ -47,9 +47,9 @@
sp<CameraOfflineSessionBase> session,
const KeyedVector<sp<IBinder>, sp<CompositeStream>>& offlineCompositeStreamMap,
const sp<ICameraDeviceCallbacks>& remoteCallback,
- const String16& clientPackageName,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraIdStr, int cameraFacing, int sensorOrientation,
+ const std::string& clientPackageName,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraIdStr, int cameraFacing, int sensorOrientation,
int clientPid, uid_t clientUid, int servicePid) :
CameraService::BasicClient(
cameraService,
@@ -73,12 +73,12 @@
status_t dumpClient(int /*fd*/, const Vector<String16>& /*args*/) override;
- status_t startWatchingTags(const String8 &tags, int outFd) override;
+ status_t startWatchingTags(const std::string &tags, int outFd) override;
status_t stopWatchingTags(int outFd) override;
status_t dumpWatchedEventsToVector(std::vector<std::string> &out) override;
status_t initialize(sp<CameraProviderManager> /*manager*/,
- const String8& /*monitorTags*/) override;
+ const std::string& /*monitorTags*/) override;
status_t setRotateAndCropOverride(uint8_t rotateAndCrop) override;
@@ -111,7 +111,7 @@
void notifyPrepared(int streamId) override;
void notifyRequestQueueEmpty() override;
void notifyRepeatingRequestError(long lastFrameNumber) override;
- status_t injectCamera(const String8& injectedCamId,
+ status_t injectCamera(const std::string& injectedCamId,
sp<CameraProviderManager> manager) override;
status_t stopInjection() override;
diff --git a/services/camera/libcameraservice/api2/CompositeStream.cpp b/services/camera/libcameraservice/api2/CompositeStream.cpp
index 4b840fc..3221d74 100644
--- a/services/camera/libcameraservice/api2/CompositeStream.cpp
+++ b/services/camera/libcameraservice/api2/CompositeStream.cpp
@@ -46,7 +46,7 @@
status_t CompositeStream::createStream(const std::vector<sp<Surface>>& consumers,
bool hasDeferredConsumer, uint32_t width, uint32_t height, int format,
- camera_stream_rotation_t rotation, int * id, const String8& physicalCameraId,
+ camera_stream_rotation_t rotation, int * id, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> * surfaceIds,
int streamSetId, bool isShared, bool isMultiResolution) {
diff --git a/services/camera/libcameraservice/api2/CompositeStream.h b/services/camera/libcameraservice/api2/CompositeStream.h
index 600bd28..ec16dde 100644
--- a/services/camera/libcameraservice/api2/CompositeStream.h
+++ b/services/camera/libcameraservice/api2/CompositeStream.h
@@ -43,7 +43,7 @@
status_t createStream(const std::vector<sp<Surface>>& consumers,
bool hasDeferredConsumer, uint32_t width, uint32_t height, int format,
- camera_stream_rotation_t rotation, int *id, const String8& physicalCameraId,
+ camera_stream_rotation_t rotation, int *id, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds,
int streamSetId, bool isShared, bool isMultiResolution);
@@ -56,7 +56,7 @@
// 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,
- camera_stream_rotation_t rotation, int *id, const String8& physicalCameraId,
+ camera_stream_rotation_t rotation, int *id, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds,
int streamSetId, bool isShared) = 0;
diff --git a/services/camera/libcameraservice/api2/DepthCompositeStream.cpp b/services/camera/libcameraservice/api2/DepthCompositeStream.cpp
index 048d85d..01fe78b 100644
--- a/services/camera/libcameraservice/api2/DepthCompositeStream.cpp
+++ b/services/camera/libcameraservice/api2/DepthCompositeStream.cpp
@@ -20,6 +20,7 @@
#include <aidl/android/hardware/camera/device/CameraBlob.h>
#include <aidl/android/hardware/camera/device/CameraBlobId.h>
+#include <camera/StringUtils.h>
#include "api1/client2/JpegProcessor.h"
#include "common/CameraProviderManager.h"
@@ -495,17 +496,17 @@
status_t err;
int format;
if ((err = anw->query(anw, NATIVE_WINDOW_FORMAT, &format)) != OK) {
- String8 msg = String8::format("Failed to query Surface format: %s (%d)", strerror(-err),
+ std::string msg = fmt::sprintf("Failed to query Surface format: %s (%d)", strerror(-err),
err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
return false;
}
int dataspace;
if ((err = anw->query(anw, NATIVE_WINDOW_DEFAULT_DATASPACE, &dataspace)) != OK) {
- String8 msg = String8::format("Failed to query Surface dataspace: %s (%d)", strerror(-err),
+ std::string msg = fmt::sprintf("Failed to query Surface dataspace: %s (%d)", strerror(-err),
err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
return false;
}
@@ -578,7 +579,7 @@
status_t DepthCompositeStream::createInternalStreams(const std::vector<sp<Surface>>& consumers,
bool /*hasDeferredConsumer*/, uint32_t width, uint32_t height, int format,
- camera_stream_rotation_t rotation, int *id, const String8& physicalCameraId,
+ camera_stream_rotation_t rotation, int *id, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds,
int /*streamSetId*/, bool /*isShared*/) {
diff --git a/services/camera/libcameraservice/api2/DepthCompositeStream.h b/services/camera/libcameraservice/api2/DepthCompositeStream.h
index c1c75c1..a8c40ae 100644
--- a/services/camera/libcameraservice/api2/DepthCompositeStream.h
+++ b/services/camera/libcameraservice/api2/DepthCompositeStream.h
@@ -50,7 +50,7 @@
// CompositeStream overrides
status_t createInternalStreams(const std::vector<sp<Surface>>& consumers,
bool hasDeferredConsumer, uint32_t width, uint32_t height, int format,
- camera_stream_rotation_t rotation, int *id, const String8& physicalCameraId,
+ camera_stream_rotation_t rotation, int *id, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds,
int streamSetId, bool isShared) override;
diff --git a/services/camera/libcameraservice/api2/HeicCompositeStream.cpp b/services/camera/libcameraservice/api2/HeicCompositeStream.cpp
index 0feded2..97c1ae1 100644
--- a/services/camera/libcameraservice/api2/HeicCompositeStream.cpp
+++ b/services/camera/libcameraservice/api2/HeicCompositeStream.cpp
@@ -29,6 +29,7 @@
#include <gui/Surface.h>
#include <utils/Log.h>
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
#include <mediadrm/ICrypto.h>
#include <media/MediaCodecBuffer.h>
@@ -98,17 +99,17 @@
status_t err;
int format;
if ((err = anw->query(anw, NATIVE_WINDOW_FORMAT, &format)) != OK) {
- String8 msg = String8::format("Failed to query Surface format: %s (%d)", strerror(-err),
+ std::string msg = fmt::sprintf("Failed to query Surface format: %s (%d)", strerror(-err),
err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
return false;
}
int dataspace;
if ((err = anw->query(anw, NATIVE_WINDOW_DEFAULT_DATASPACE, &dataspace)) != OK) {
- String8 msg = String8::format("Failed to query Surface dataspace: %s (%d)", strerror(-err),
+ std::string msg = fmt::sprintf("Failed to query Surface dataspace: %s (%d)", strerror(-err),
err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
return false;
}
@@ -117,7 +118,7 @@
status_t HeicCompositeStream::createInternalStreams(const std::vector<sp<Surface>>& consumers,
bool /*hasDeferredConsumer*/, uint32_t width, uint32_t height, int format,
- camera_stream_rotation_t rotation, int *id, const String8& physicalCameraId,
+ camera_stream_rotation_t rotation, int *id, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds,
int /*streamSetId*/, bool /*isShared*/) {
diff --git a/services/camera/libcameraservice/api2/HeicCompositeStream.h b/services/camera/libcameraservice/api2/HeicCompositeStream.h
index 1077a1f..78c5f02 100644
--- a/services/camera/libcameraservice/api2/HeicCompositeStream.h
+++ b/services/camera/libcameraservice/api2/HeicCompositeStream.h
@@ -45,7 +45,7 @@
status_t createInternalStreams(const std::vector<sp<Surface>>& consumers,
bool hasDeferredConsumer, uint32_t width, uint32_t height, int format,
- camera_stream_rotation_t rotation, int *id, const String8& physicalCameraId,
+ camera_stream_rotation_t rotation, int *id, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds,
int streamSetId, bool isShared) override;
diff --git a/services/camera/libcameraservice/common/Camera2ClientBase.cpp b/services/camera/libcameraservice/common/Camera2ClientBase.cpp
index 8d4117a..0fe15a8 100644
--- a/services/camera/libcameraservice/common/Camera2ClientBase.cpp
+++ b/services/camera/libcameraservice/common/Camera2ClientBase.cpp
@@ -28,6 +28,7 @@
#include <gui/Surface.h>
#include <camera/CameraSessionStats.h>
+#include <camera/StringUtils.h>
#include "common/Camera2ClientBase.h"
@@ -49,10 +50,10 @@
Camera2ClientBase<TClientBase>::Camera2ClientBase(
const sp<CameraService>& cameraService,
const sp<TCamCallbacks>& remoteCallback,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
bool systemNativeClient,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraId,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraId,
int api1CameraId,
int cameraFacing,
int sensorOrientation,
@@ -68,8 +69,8 @@
mSharedCameraCallbacks(remoteCallback),
mDeviceActive(false), mApi1CameraId(api1CameraId)
{
- ALOGI("Camera %s: Opened. Client: %s (PID %d, UID %d)", cameraId.string(),
- String8(clientPackageName).string(), clientPid, clientUid);
+ ALOGI("Camera %s: Opened. Client: %s (PID %d, UID %d)", cameraId.c_str(),
+ clientPackageName.c_str(), clientPid, clientUid);
mInitialClientPid = clientPid;
mOverrideForPerfClass = overrideForPerfClass;
@@ -90,17 +91,17 @@
template <typename TClientBase>
status_t Camera2ClientBase<TClientBase>::initialize(sp<CameraProviderManager> manager,
- const String8& monitorTags) {
+ const std::string& monitorTags) {
return initializeImpl(manager, monitorTags);
}
template <typename TClientBase>
template <typename TProviderPtr>
status_t Camera2ClientBase<TClientBase>::initializeImpl(TProviderPtr providerPtr,
- const String8& monitorTags) {
+ const std::string& monitorTags) {
ATRACE_CALL();
ALOGV("%s: Initializing client for camera %s", __FUNCTION__,
- TClientBase::mCameraIdStr.string());
+ TClientBase::mCameraIdStr.c_str());
status_t res;
// Verify ops permissions
@@ -109,7 +110,7 @@
return res;
}
IPCTransport providerTransport = IPCTransport::INVALID;
- res = providerPtr->getCameraIdIPCTransport(TClientBase::mCameraIdStr.string(),
+ res = providerPtr->getCameraIdIPCTransport(TClientBase::mCameraIdStr,
&providerTransport);
if (res != OK) {
return res;
@@ -127,19 +128,19 @@
break;
default:
ALOGE("%s Invalid transport for camera id %s", __FUNCTION__,
- TClientBase::mCameraIdStr.string());
+ TClientBase::mCameraIdStr.c_str());
return NO_INIT;
}
if (mDevice == NULL) {
ALOGE("%s: Camera %s: No device connected",
- __FUNCTION__, TClientBase::mCameraIdStr.string());
+ __FUNCTION__, TClientBase::mCameraIdStr.c_str());
return NO_INIT;
}
res = mDevice->initialize(providerPtr, monitorTags);
if (res != OK) {
ALOGE("%s: Camera %s: unable to initialize device: %s (%d)",
- __FUNCTION__, TClientBase::mCameraIdStr.string(), strerror(-res), res);
+ __FUNCTION__, TClientBase::mCameraIdStr.c_str(), strerror(-res), res);
return res;
}
@@ -167,30 +168,30 @@
}
ALOGI("Closed Camera %s. Client was: %s (PID %d, UID %u)",
- TClientBase::mCameraIdStr.string(),
- String8(TClientBase::mClientPackageName).string(),
+ TClientBase::mCameraIdStr.c_str(),
+ TClientBase::mClientPackageName.c_str(),
mInitialClientPid, TClientBase::mClientUid);
}
template <typename TClientBase>
status_t Camera2ClientBase<TClientBase>::dumpClient(int fd,
const Vector<String16>& args) {
- String8 result;
- result.appendFormat("Camera2ClientBase[%s] (%p) PID: %d, dump:\n",
- TClientBase::mCameraIdStr.string(),
+ std::string result;
+ result += fmt::sprintf("Camera2ClientBase[%s] (%p) PID: %d, dump:\n",
+ TClientBase::mCameraIdStr.c_str(),
(TClientBase::getRemoteCallback() != NULL ?
- IInterface::asBinder(TClientBase::getRemoteCallback()).get() : NULL),
+ (void *)IInterface::asBinder(TClientBase::getRemoteCallback()).get() : NULL),
TClientBase::mClientPid);
- result.append(" State: ");
+ result += " State: ";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
// TODO: print dynamic/request section from most recent requests
return dumpDevice(fd, args);
}
template <typename TClientBase>
-status_t Camera2ClientBase<TClientBase>::startWatchingTags(const String8 &tags, int out) {
+status_t Camera2ClientBase<TClientBase>::startWatchingTags(const std::string &tags, int out) {
sp<CameraDeviceBase> device = mDevice;
if (!device) {
dprintf(out, " Device is detached");
@@ -225,23 +226,23 @@
status_t Camera2ClientBase<TClientBase>::dumpDevice(
int fd,
const Vector<String16>& args) {
- String8 result;
+ std::string result;
result = " Device dump:\n";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
sp<CameraDeviceBase> device = mDevice;
if (!device.get()) {
result = " *** Device is detached\n";
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
return NO_ERROR;
}
status_t res = device->dump(fd, args);
if (res != OK) {
- result = String8::format(" Error dumping device: %s (%d)",
+ result = fmt::sprintf(" Error dumping device: %s (%d)",
strerror(-res), res);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
return NO_ERROR;
@@ -268,23 +269,23 @@
template <typename TClientBase>
binder::Status Camera2ClientBase<TClientBase>::disconnectImpl() {
ATRACE_CALL();
- ALOGD("Camera %s: start to disconnect", TClientBase::mCameraIdStr.string());
+ ALOGD("Camera %s: start to disconnect", TClientBase::mCameraIdStr.c_str());
Mutex::Autolock icl(mBinderSerializationLock);
- ALOGD("Camera %s: serializationLock acquired", TClientBase::mCameraIdStr.string());
+ ALOGD("Camera %s: serializationLock acquired", TClientBase::mCameraIdStr.c_str());
binder::Status res = binder::Status::ok();
// Allow both client and the media server to disconnect at all times
int callingPid = CameraThreadState::getCallingPid();
if (callingPid != TClientBase::mClientPid &&
callingPid != TClientBase::mServicePid) return res;
- ALOGD("Camera %s: Shutting down", TClientBase::mCameraIdStr.string());
+ ALOGD("Camera %s: Shutting down", TClientBase::mCameraIdStr.c_str());
// Before detaching the device, cache the info from current open session.
// The disconnected check avoids duplication of info and also prevents
// deadlock while acquiring service lock in cacheDump.
if (!TClientBase::mDisconnected) {
- ALOGD("Camera %s: start to cacheDump", TClientBase::mCameraIdStr.string());
+ ALOGD("Camera %s: start to cacheDump", TClientBase::mCameraIdStr.c_str());
Camera2ClientBase::getCameraService()->cacheDump();
}
@@ -292,7 +293,7 @@
CameraService::BasicClient::disconnect();
- ALOGV("Camera %s: Shut down complete", TClientBase::mCameraIdStr.string());
+ ALOGV("Camera %s: Shut down complete", TClientBase::mCameraIdStr.c_str());
return res;
}
@@ -302,7 +303,7 @@
if (mDevice == 0) return;
mDevice->disconnect();
- ALOGV("Camera %s: Detach complete", TClientBase::mCameraIdStr.string());
+ ALOGV("Camera %s: Detach complete", TClientBase::mCameraIdStr.c_str());
}
template <typename TClientBase>
@@ -318,7 +319,7 @@
ALOGE("%s: Camera %s: Connection attempt from pid %d; "
"current locked to pid %d",
__FUNCTION__,
- TClientBase::mCameraIdStr.string(),
+ TClientBase::mCameraIdStr.c_str(),
CameraThreadState::getCallingPid(),
TClientBase::mClientPid);
return BAD_VALUE;
@@ -349,8 +350,7 @@
return;
}
- String8 physicalId8(physicalId.c_str());
- auto physicalCameraMetadata = mDevice->infoPhysical(physicalId8);
+ auto physicalCameraMetadata = mDevice->infoPhysical(physicalId);
auto orientationEntry = physicalCameraMetadata.find(ANDROID_SENSOR_ORIENTATION);
if (orientationEntry.count == 1) {
@@ -371,7 +371,7 @@
status_t res = TClientBase::startCameraStreamingOps();
if (res != OK) {
ALOGE("%s: Camera %s: Error starting camera streaming ops: %d", __FUNCTION__,
- TClientBase::mCameraIdStr.string(), res);
+ TClientBase::mCameraIdStr.c_str(), res);
return res;
}
CameraServiceProxyWrapper::logActive(TClientBase::mCameraIdStr, maxPreviewFps);
@@ -391,7 +391,7 @@
status_t res = TClientBase::finishCameraStreamingOps();
if (res != OK) {
ALOGE("%s: Camera %s: Error finishing streaming ops: %d", __FUNCTION__,
- TClientBase::mCameraIdStr.string(), res);
+ TClientBase::mCameraIdStr.c_str(), res);
}
CameraServiceProxyWrapper::logIdle(TClientBase::mCameraIdStr,
requestCount, resultErrorCount, deviceError, userTag, videoStabilizationMode,
@@ -506,7 +506,7 @@
}
template <typename TClientBase>
-status_t Camera2ClientBase<TClientBase>::injectCamera(const String8& injectedCamId,
+status_t Camera2ClientBase<TClientBase>::injectCamera(const std::string& injectedCamId,
sp<CameraProviderManager> manager) {
return mDevice->injectCamera(injectedCamId, manager);
}
diff --git a/services/camera/libcameraservice/common/Camera2ClientBase.h b/services/camera/libcameraservice/common/Camera2ClientBase.h
index 705fe69..2ad2367 100644
--- a/services/camera/libcameraservice/common/Camera2ClientBase.h
+++ b/services/camera/libcameraservice/common/Camera2ClientBase.h
@@ -48,10 +48,10 @@
// TODO: too many params, move into a ClientArgs<T>
Camera2ClientBase(const sp<CameraService>& cameraService,
const sp<TCamCallbacks>& remoteCallback,
- const String16& clientPackageName,
+ const std::string& clientPackageName,
bool systemNativeClient,
- const std::optional<String16>& clientFeatureId,
- const String8& cameraId,
+ const std::optional<std::string>& clientFeatureId,
+ const std::string& cameraId,
int api1CameraId,
int cameraFacing,
int sensorOrientation,
@@ -63,11 +63,12 @@
bool legacyClient = false);
virtual ~Camera2ClientBase();
- virtual status_t initialize(sp<CameraProviderManager> manager, const String8& monitorTags);
- virtual status_t dumpClient(int fd, const Vector<String16>& args);
- virtual status_t startWatchingTags(const String8 &tags, int out);
- virtual status_t stopWatchingTags(int out);
- virtual status_t dumpWatchedEventsToVector(std::vector<std::string> &out);
+ virtual status_t initialize(sp<CameraProviderManager> manager,
+ const std::string& monitorTags) override;
+ virtual status_t dumpClient(int fd, const Vector<String16>& args) override;
+ virtual status_t startWatchingTags(const std::string &tags, int out) override;
+ virtual status_t stopWatchingTags(int out) override;
+ virtual status_t dumpWatchedEventsToVector(std::vector<std::string> &out) override;
/**
* NotificationListener implementation
@@ -128,7 +129,7 @@
mutable Mutex mRemoteCallbackLock;
} mSharedCameraCallbacks;
- status_t injectCamera(const String8& injectedCamId,
+ status_t injectCamera(const std::string& injectedCamId,
sp<CameraProviderManager> manager) override;
status_t stopInjection() override;
@@ -178,7 +179,7 @@
private:
template<typename TProviderPtr>
- status_t initializeImpl(TProviderPtr providerPtr, const String8& monitorTags);
+ status_t initializeImpl(TProviderPtr providerPtr, const std::string& monitorTags);
binder::Status disconnectImpl();
diff --git a/services/camera/libcameraservice/common/CameraDeviceBase.h b/services/camera/libcameraservice/common/CameraDeviceBase.h
index 8f7b16d..be38b9f 100644
--- a/services/camera/libcameraservice/common/CameraDeviceBase.h
+++ b/services/camera/libcameraservice/common/CameraDeviceBase.h
@@ -20,7 +20,6 @@
#include <list>
#include <utils/RefBase.h>
-#include <utils/String8.h>
#include <utils/String16.h>
#include <utils/Vector.h>
#include <utils/KeyedVector.h>
@@ -99,11 +98,12 @@
*/
virtual metadata_vendor_id_t getVendorTagId() const = 0;
- virtual status_t initialize(sp<CameraProviderManager> manager, const String8& monitorTags) = 0;
+ virtual status_t initialize(sp<CameraProviderManager> manager,
+ const std::string& monitorTags) = 0;
virtual status_t disconnect() = 0;
virtual status_t dump(int fd, const Vector<String16> &args) = 0;
- virtual status_t startWatchingTags(const String8 &tags) = 0;
+ virtual status_t startWatchingTags(const std::string &tags) = 0;
virtual status_t stopWatchingTags() = 0;
virtual status_t dumpWatchedEventsToVector(std::vector<std::string> &out) = 0;
@@ -111,7 +111,7 @@
* The physical camera device's static characteristics metadata buffer, or
* the logical camera's static characteristics if physical id is empty.
*/
- virtual const CameraMetadata& infoPhysical(const String8& physicalId) const = 0;
+ virtual const CameraMetadata& infoPhysical(const std::string& physicalId) const = 0;
struct PhysicalCameraSettings {
std::string cameraId;
@@ -183,7 +183,7 @@
virtual status_t createStream(sp<Surface> consumer,
uint32_t width, uint32_t height, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation, int *id,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds = nullptr,
int streamSetId = camera3::CAMERA3_STREAM_SET_ID_INVALID,
@@ -204,7 +204,7 @@
virtual status_t createStream(const std::vector<sp<Surface>>& consumers,
bool hasDeferredConsumer, uint32_t width, uint32_t height, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation, int *id,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds = nullptr,
int streamSetId = camera3::CAMERA3_STREAM_SET_ID_INVALID,
@@ -476,7 +476,7 @@
* The injection camera session to replace the internal camera
* session.
*/
- virtual status_t injectCamera(const String8& injectedCamId,
+ virtual status_t injectCamera(const std::string& injectedCamId,
sp<CameraProviderManager> manager) = 0;
/**
diff --git a/services/camera/libcameraservice/common/CameraOfflineSessionBase.h b/services/camera/libcameraservice/common/CameraOfflineSessionBase.h
index 63abcf0..976c47c 100644
--- a/services/camera/libcameraservice/common/CameraOfflineSessionBase.h
+++ b/services/camera/libcameraservice/common/CameraOfflineSessionBase.h
@@ -20,7 +20,6 @@
#include <vector>
#include <utils/RefBase.h>
-#include <utils/String8.h>
#include <utils/Timers.h>
#include "camera/CaptureResult.h"
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
index 98583a5..230d5b6 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
@@ -40,6 +40,7 @@
#include <cutils/properties.h>
#include <hwbinder/IPCThreadState.h>
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
#include "api2/HeicCompositeStream.h"
#include "device3/ZoomRatioMapper.h"
@@ -138,7 +139,7 @@
String16(aidlHalServiceDescriptor));
for (const auto &aidlInstance : aidlProviders) {
std::string aidlServiceName =
- getFullAidlProviderName(std::string(String8(aidlInstance).c_str()));
+ getFullAidlProviderName(toStdString(aidlInstance));
auto res = sm->registerForNotifications(String16(aidlServiceName.c_str()), this);
if (res != OK) {
ALOGE("%s Unable to register for notifications with AIDL service manager",
@@ -757,14 +758,14 @@
primaryMap = &mCameraProviderByCameraId;
alternateMap = &mTorchProviderByCameraId;
}
- auto id = cameraId.c_str();
- (*primaryMap)[id] = provider;
- auto search = alternateMap->find(id);
+
+ (*primaryMap)[cameraId] = provider;
+ auto search = alternateMap->find(cameraId);
if (search != alternateMap->end()) {
ALOGW("%s: Camera device %s is using both torch mode and camera mode simultaneously. "
- "That should not be possible", __FUNCTION__, id);
+ "That should not be possible", __FUNCTION__, cameraId.c_str());
}
- ALOGV("%s: Camera device %s connected", __FUNCTION__, id);
+ ALOGV("%s: Camera device %s connected", __FUNCTION__, cameraId.c_str());
}
void CameraProviderManager::removeRef(DeviceMode usageType, const std::string &cameraId) {
@@ -779,7 +780,7 @@
providerMap = &mCameraProviderByCameraId;
}
std::lock_guard<std::mutex> lock(mProviderInterfaceMapLock);
- auto search = providerMap->find(cameraId.c_str());
+ auto search = providerMap->find(cameraId);
if (search != providerMap->end()) {
// Drop the reference to this ICameraProvider. This is safe to do immediately (without an
// added delay) because hwservicemanager guarantees to hold the reference for at least five
@@ -788,7 +789,7 @@
// restart it. An example when this could happen is switching from a front-facing to a
// rear-facing camera. If the HAL were to exit during the camera switch, the camera could
// appear janky to the user.
- providerMap->erase(cameraId.c_str());
+ providerMap->erase(cameraId);
IPCThreadState::self()->flushCommands();
} else {
ALOGE("%s: Asked to remove reference for camera %s, but no reference to it was found. This "
@@ -806,7 +807,7 @@
{
std::lock_guard<std::mutex> lock(mInterfaceMutex);
- res = addAidlProviderLocked(String8(name).c_str());
+ res = addAidlProviderLocked(toStdString(name));
}
sp<StatusListener> listener = getStatusListener();
@@ -1797,14 +1798,14 @@
status_t CameraProviderManager::removeProvider(const std::string& provider) {
std::lock_guard<std::mutex> providerLock(mProviderLifecycleLock);
std::unique_lock<std::mutex> lock(mInterfaceMutex);
- std::vector<String8> removedDeviceIds;
+ std::vector<std::string> removedDeviceIds;
status_t res = NAME_NOT_FOUND;
std::string removedProviderName;
for (auto it = mProviders.begin(); it != mProviders.end(); it++) {
if ((*it)->mProviderInstance == provider) {
removedDeviceIds.reserve((*it)->mDevices.size());
for (auto& deviceInfo : (*it)->mDevices) {
- removedDeviceIds.push_back(String8(deviceInfo->mId.c_str()));
+ removedDeviceIds.push_back(deviceInfo->mId);
}
removedProviderName = (*it)->mProviderName;
mProviders.erase(it);
@@ -1944,7 +1945,7 @@
return OK;
}
-void CameraProviderManager::ProviderInfo::removeDevice(std::string id) {
+void CameraProviderManager::ProviderInfo::removeDevice(const std::string &id) {
for (auto it = mDevices.begin(); it != mDevices.end(); it++) {
if ((*it)->mId == id) {
mUniqueCameraIds.erase(id);
@@ -1984,8 +1985,7 @@
ALOGV("%s: notify device not_present: %s",
__FUNCTION__,
deviceName.c_str());
- listener->onDeviceStatusChanged(String8(id.c_str()),
- CameraDeviceStatus::NOT_PRESENT);
+ listener->onDeviceStatusChanged(id, CameraDeviceStatus::NOT_PRESENT);
mLock.lock();
}
}
@@ -2086,8 +2086,7 @@
CameraDeviceStatus internalNewStatus = newStatus;
if (!mInitialized) {
mCachedStatus.emplace_back(false /*isPhysicalCameraStatus*/,
- cameraDeviceName.c_str(), std::string().c_str(),
- internalNewStatus);
+ cameraDeviceName, std::string(), internalNewStatus);
return;
}
@@ -2101,7 +2100,7 @@
// Call without lock held to allow reentrancy into provider manager
if (listener != nullptr) {
- listener->onDeviceStatusChanged(String8(id.c_str()), internalNewStatus);
+ listener->onDeviceStatusChanged(id, internalNewStatus);
}
}
@@ -2177,8 +2176,7 @@
}
// Call without lock held to allow reentrancy into provider manager
if (listener != nullptr) {
- listener->onDeviceStatusChanged(String8(id.c_str()),
- String8(physicalId.c_str()), newStatus);
+ listener->onDeviceStatusChanged(id, physicalId, newStatus);
}
return;
}
@@ -2229,7 +2227,7 @@
}
*id = cameraId;
- *physicalId = physicalCameraDeviceName.c_str();
+ *physicalId = physicalCameraDeviceName;
return OK;
}
@@ -2273,7 +2271,7 @@
// findDeviceInfo, which should be holding mLock while iterating through
// each provider's devices).
if (listener != nullptr) {
- listener->onTorchStatusChanged(String8(id.c_str()), newStatus, systemCameraKind);
+ listener->onTorchStatusChanged(id, newStatus, systemCameraKind);
}
return;
}
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.h b/services/camera/libcameraservice/common/CameraProviderManager.h
index 8d60afd..98298ea 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.h
+++ b/services/camera/libcameraservice/common/CameraProviderManager.h
@@ -179,15 +179,15 @@
struct StatusListener : virtual public RefBase {
~StatusListener() {}
- virtual void onDeviceStatusChanged(const String8 &cameraId,
+ virtual void onDeviceStatusChanged(const std::string &cameraId,
CameraDeviceStatus newStatus) = 0;
- virtual void onDeviceStatusChanged(const String8 &cameraId,
- const String8 &physicalCameraId,
+ virtual void onDeviceStatusChanged(const std::string &cameraId,
+ const std::string &physicalCameraId,
CameraDeviceStatus newStatus) = 0;
- virtual void onTorchStatusChanged(const String8 &cameraId,
+ virtual void onTorchStatusChanged(const std::string &cameraId,
TorchModeStatus newStatus,
SystemCameraKind kind) = 0;
- virtual void onTorchStatusChanged(const String8 &cameraId,
+ virtual void onTorchStatusChanged(const std::string &cameraId,
TorchModeStatus newStatus) = 0;
virtual void onNewProviderRegistered() = 0;
};
@@ -771,7 +771,7 @@
void torchModeStatusChangeInternal(const std::string& cameraDeviceName,
TorchModeStatus newStatus);
- void removeDevice(std::string id);
+ void removeDevice(const std::string &id);
};
diff --git a/services/camera/libcameraservice/common/FrameProcessorBase.cpp b/services/camera/libcameraservice/common/FrameProcessorBase.cpp
index e259379..2322def 100644
--- a/services/camera/libcameraservice/common/FrameProcessorBase.cpp
+++ b/services/camera/libcameraservice/common/FrameProcessorBase.cpp
@@ -21,6 +21,7 @@
#include <map>
#include <utils/Log.h>
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
#include "common/FrameProducer.h"
#include "common/FrameProcessorBase.h"
@@ -86,8 +87,8 @@
}
void FrameProcessorBase::dump(int fd, const Vector<String16>& /*args*/) {
- String8 result(" Latest received frame:\n");
- write(fd, result.string(), result.size());
+ std::string result(" Latest received frame:\n");
+ write(fd, result.c_str(), result.size());
CameraMetadata lastFrame;
std::map<std::string, CameraMetadata> lastPhysicalFrames;
@@ -97,16 +98,16 @@
lastFrame = CameraMetadata(mLastFrame);
for (const auto& physicalFrame : mLastPhysicalFrames) {
- lastPhysicalFrames.emplace(String8(physicalFrame.mPhysicalCameraId),
+ lastPhysicalFrames.emplace(physicalFrame.mPhysicalCameraId,
physicalFrame.mPhysicalCameraMetadata);
}
}
lastFrame.dump(fd, /*verbosity*/2, /*indentation*/6);
for (const auto& physicalFrame : lastPhysicalFrames) {
- result = String8::format(" Latest received frame for physical camera %s:\n",
+ result = fmt::sprintf(" Latest received frame for physical camera %s:\n",
physicalFrame.first.c_str());
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
CameraMetadata lastPhysicalMetadata = CameraMetadata(physicalFrame.second);
lastPhysicalMetadata.sort();
lastPhysicalMetadata.dump(fd, /*verbosity*/2, /*indentation*/6);
@@ -138,7 +139,7 @@
ATRACE_CALL();
CaptureResult result;
- ALOGV("%s: Camera %s: Process new frames", __FUNCTION__, device->getId().string());
+ ALOGV("%s: Camera %s: Process new frames", __FUNCTION__, device->getId().c_str());
while ( (res = device->getNextResult(&result)) == OK) {
@@ -149,7 +150,7 @@
entry = result.mMetadata.find(ANDROID_REQUEST_FRAME_COUNT);
if (entry.count == 0) {
ALOGE("%s: Camera %s: Error reading frame number",
- __FUNCTION__, device->getId().string());
+ __FUNCTION__, device->getId().c_str());
break;
}
ATRACE_INT("cam2_frame", entry.data.i32[0]);
@@ -167,7 +168,7 @@
}
if (res != NOT_ENOUGH_DATA) {
ALOGE("%s: Camera %s: Error getting next frame: %s (%d)",
- __FUNCTION__, device->getId().string(), strerror(-res), res);
+ __FUNCTION__, device->getId().c_str(), strerror(-res), res);
return;
}
@@ -177,7 +178,7 @@
bool FrameProcessorBase::processSingleFrame(CaptureResult &result,
const sp<FrameProducer> &device) {
ALOGV("%s: Camera %s: Process single frame (is empty? %d)",
- __FUNCTION__, device->getId().string(), result.mMetadata.isEmpty());
+ __FUNCTION__, device->getId().c_str(), result.mMetadata.isEmpty());
return processListeners(result, device) == OK;
}
@@ -197,7 +198,7 @@
// include CaptureResultExtras.
entry = result.mMetadata.find(ANDROID_REQUEST_ID);
if (entry.count == 0) {
- ALOGE("%s: Camera %s: Error reading frame id", __FUNCTION__, device->getId().string());
+ ALOGE("%s: Camera %s: Error reading frame id", __FUNCTION__, device->getId().c_str());
return BAD_VALUE;
}
int32_t requestId = entry.data.i32[0];
@@ -223,7 +224,7 @@
}
}
ALOGV("%s: Camera %s: Got %zu range listeners out of %zu", __FUNCTION__,
- device->getId().string(), listeners.size(), mRangeListeners.size());
+ device->getId().c_str(), listeners.size(), mRangeListeners.size());
List<sp<FilteredListener> >::iterator item = listeners.begin();
for (; item != listeners.end(); item++) {
diff --git a/services/camera/libcameraservice/common/FrameProducer.h b/services/camera/libcameraservice/common/FrameProducer.h
index a14b3d6..dd4df7d 100644
--- a/services/camera/libcameraservice/common/FrameProducer.h
+++ b/services/camera/libcameraservice/common/FrameProducer.h
@@ -18,7 +18,6 @@
#define ANDROID_SERVERS_CAMERA_FRAMEPRODUCER_H
#include <utils/RefBase.h>
-#include <utils/String8.h>
#include <utils/Timers.h>
#include "camera/CameraMetadata.h"
@@ -39,7 +38,7 @@
/**
* Retrieve the device camera ID
*/
- virtual const String8& getId() const = 0;
+ virtual const std::string& getId() const = 0;
/**
* Wait for a new frame to be produced, with timeout in nanoseconds.
diff --git a/services/camera/libcameraservice/common/aidl/AidlProviderInfo.cpp b/services/camera/libcameraservice/common/aidl/AidlProviderInfo.cpp
index 49bbd07..06d97ce 100644
--- a/services/camera/libcameraservice/common/aidl/AidlProviderInfo.cpp
+++ b/services/camera/libcameraservice/common/aidl/AidlProviderInfo.cpp
@@ -431,7 +431,7 @@
for (const auto& combination : combs) {
std::unordered_set<std::string> deviceIds;
for (const auto &cameraDeviceId : combination.combination) {
- deviceIds.insert(cameraDeviceId.c_str());
+ deviceIds.insert(cameraDeviceId);
}
mConcurrentCameraIdCombinations.push_back(std::move(deviceIds));
}
@@ -711,7 +711,7 @@
camera::device::StreamConfiguration streamConfiguration;
bool earlyExit = false;
auto bRes = SessionConfigurationUtils::convertToHALStreamCombination(configuration,
- String8(mId.c_str()), mCameraCharacteristics, getMetadata, mPhysicalIds,
+ mId, mCameraCharacteristics, getMetadata, mPhysicalIds,
streamConfiguration, overrideForPerfClass, &earlyExit);
if (!bRes.isOk()) {
@@ -765,9 +765,9 @@
return res;
}
camera3::metadataGetter getMetadata =
- [this](const String8 &id, bool overrideForPerfClass) {
+ [this](const std::string &id, bool overrideForPerfClass) {
CameraMetadata physicalDeviceInfo;
- mManager->getCameraCharacteristicsLocked(id.string(), overrideForPerfClass,
+ mManager->getCameraCharacteristicsLocked(id, overrideForPerfClass,
&physicalDeviceInfo,
/*overrideToPortrait*/false);
return physicalDeviceInfo;
@@ -777,7 +777,7 @@
bStatus =
SessionConfigurationUtils::convertToHALStreamCombination(
cameraIdAndSessionConfig.mSessionConfiguration,
- String8(cameraId.c_str()), deviceInfo, getMetadata,
+ cameraId, deviceInfo, getMetadata,
physicalCameraIds, streamConfiguration,
overrideForPerfClass, &shouldExit);
if (!bStatus.isOk()) {
diff --git a/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp b/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp
index 4a89380..3b501dc 100644
--- a/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp
+++ b/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp
@@ -533,7 +533,7 @@
for (auto& combination : cameraDeviceIdCombinations) {
std::unordered_set<std::string> deviceIds;
for (auto &cameraDeviceId : combination) {
- deviceIds.insert(cameraDeviceId.c_str());
+ deviceIds.insert(cameraDeviceId);
}
mConcurrentCameraIdCombinations.push_back(std::move(deviceIds));
}
@@ -832,7 +832,7 @@
hardware::camera::device::V3_7::StreamConfiguration configuration_3_7;
bool earlyExit = false;
auto bRes = SessionConfigurationUtils::convertToHALStreamCombination(configuration,
- String8(mId.c_str()), mCameraCharacteristics, getMetadata, mPhysicalIds,
+ mId, mCameraCharacteristics, getMetadata, mPhysicalIds,
configuration_3_7, overrideForPerfClass, &earlyExit);
if (!bRes.isOk()) {
@@ -922,9 +922,9 @@
return res;
}
camera3::metadataGetter getMetadata =
- [this](const String8 &id, bool overrideForPerfClass) {
+ [this](const std::string &id, bool overrideForPerfClass) {
CameraMetadata physicalDeviceInfo;
- mManager->getCameraCharacteristicsLocked(id.string(), overrideForPerfClass,
+ mManager->getCameraCharacteristicsLocked(id, overrideForPerfClass,
&physicalDeviceInfo, /*overrideToPortrait*/false);
return physicalDeviceInfo;
};
@@ -933,7 +933,7 @@
bStatus =
SessionConfigurationUtils::convertToHALStreamCombination(
cameraIdAndSessionConfig.mSessionConfiguration,
- String8(cameraId.c_str()), deviceInfo, getMetadata,
+ cameraId, deviceInfo, getMetadata,
physicalCameraIds, streamConfiguration,
overrideForPerfClass, &shouldExit);
if (!bStatus.isOk()) {
diff --git a/services/camera/libcameraservice/device3/Camera3BufferManager.cpp b/services/camera/libcameraservice/device3/Camera3BufferManager.cpp
index 2ac38d5..c42e51a 100644
--- a/services/camera/libcameraservice/device3/Camera3BufferManager.cpp
+++ b/services/camera/libcameraservice/device3/Camera3BufferManager.cpp
@@ -18,10 +18,13 @@
#define LOG_TAG "Camera3-BufferManager"
#define ATRACE_TAG ATRACE_TAG_CAMERA
+#include <sstream>
+
#include <gui/ISurfaceComposer.h>
#include <private/gui/ComposerService.h>
#include <utils/Log.h>
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
#include "utils/CameraTraces.h"
#include "Camera3BufferManager.h"
@@ -454,34 +457,36 @@
void Camera3BufferManager::dump(int fd, [[maybe_unused]] const Vector<String16>& args) const {
Mutex::Autolock l(mLock);
- String8 lines;
- lines.appendFormat(" Total stream sets: %zu\n", mStreamSetMap.size());
+ std::ostringstream lines;
+ lines << fmt::sprintf(" Total stream sets: %zu\n", mStreamSetMap.size());
for (size_t i = 0; i < mStreamSetMap.size(); i++) {
- lines.appendFormat(" Stream set %d(%d) has below streams:\n",
+ lines << fmt::sprintf(" Stream set %d(%d) has below streams:\n",
mStreamSetMap.keyAt(i).id, mStreamSetMap.keyAt(i).isMultiRes);
for (size_t j = 0; j < mStreamSetMap[i].streamInfoMap.size(); j++) {
- lines.appendFormat(" Stream %d\n", mStreamSetMap[i].streamInfoMap[j].streamId);
+ lines << fmt::sprintf(" Stream %d\n",
+ mStreamSetMap[i].streamInfoMap[j].streamId);
}
- lines.appendFormat(" Stream set max allowed buffer count: %zu\n",
+ lines << fmt::sprintf(" Stream set max allowed buffer count: %zu\n",
mStreamSetMap[i].maxAllowedBufferCount);
- lines.appendFormat(" Stream set buffer count water mark: %zu\n",
+ lines << fmt::sprintf(" Stream set buffer count water mark: %zu\n",
mStreamSetMap[i].allocatedBufferWaterMark);
- lines.appendFormat(" Handout buffer counts:\n");
+ lines << " Handout buffer counts:\n";
for (size_t m = 0; m < mStreamSetMap[i].handoutBufferCountMap.size(); m++) {
int streamId = mStreamSetMap[i].handoutBufferCountMap.keyAt(m);
size_t bufferCount = mStreamSetMap[i].handoutBufferCountMap.valueAt(m);
- lines.appendFormat(" stream id: %d, buffer count: %zu.\n",
+ lines << fmt::sprintf(" stream id: %d, buffer count: %zu.\n",
streamId, bufferCount);
}
- lines.appendFormat(" Attached buffer counts:\n");
+ lines << " Attached buffer counts:\n";
for (size_t m = 0; m < mStreamSetMap[i].attachedBufferCountMap.size(); m++) {
int streamId = mStreamSetMap[i].attachedBufferCountMap.keyAt(m);
size_t bufferCount = mStreamSetMap[i].attachedBufferCountMap.valueAt(m);
- lines.appendFormat(" stream id: %d, attached buffer count: %zu.\n",
+ lines << fmt::sprintf(" stream id: %d, attached buffer count: %zu.\n",
streamId, bufferCount);
}
}
- write(fd, lines.string(), lines.size());
+ std::string linesStr = std::move(lines.str());
+ write(fd, linesStr.c_str(), linesStr.size());
}
bool Camera3BufferManager::checkIfStreamRegisteredLocked(int streamId,
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index 74dbe27..3f380ea 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -26,10 +26,10 @@
#endif
// Convenience macro for transient errors
-#define CLOGE(fmt, ...) ALOGE("Camera %s: %s: " fmt, mId.string(), __FUNCTION__, \
+#define CLOGE(fmt, ...) ALOGE("Camera %s: %s: " fmt, mId.c_str(), __FUNCTION__, \
##__VA_ARGS__)
-#define CLOGW(fmt, ...) ALOGW("Camera %s: %s: " fmt, mId.string(), __FUNCTION__, \
+#define CLOGW(fmt, ...) ALOGW("Camera %s: %s: " fmt, mId.c_str(), __FUNCTION__, \
##__VA_ARGS__)
// Convenience macros for transitioning to the error state
@@ -44,10 +44,12 @@
#include <utility>
+#include <android-base/stringprintf.h>
#include <utils/Log.h>
#include <utils/Trace.h>
#include <utils/Timers.h>
#include <cutils/properties.h>
+#include <camera/StringUtils.h>
#include <android/hardware/camera/device/3.7/ICameraInjectionSession.h>
#include <android/hardware/camera2/ICameraDeviceUser.h>
@@ -73,7 +75,7 @@
namespace android {
-Camera3Device::Camera3Device(const String8 &id, bool overrideForPerfClass, bool overrideToPortrait,
+Camera3Device::Camera3Device(const std::string &id, bool overrideForPerfClass, bool overrideToPortrait,
bool legacyClient):
mId(id),
mLegacyClient(legacyClient),
@@ -102,17 +104,17 @@
mActivePhysicalId("")
{
ATRACE_CALL();
- ALOGV("%s: Created device for camera %s", __FUNCTION__, mId.string());
+ ALOGV("%s: Created device for camera %s", __FUNCTION__, mId.c_str());
}
Camera3Device::~Camera3Device()
{
ATRACE_CALL();
- ALOGV("%s: Tearing down for camera id %s", __FUNCTION__, mId.string());
+ ALOGV("%s: Tearing down for camera id %s", __FUNCTION__, mId.c_str());
disconnectImpl();
}
-const String8& Camera3Device::getId() const {
+const std::string& Camera3Device::getId() const {
return mId;
}
@@ -120,7 +122,7 @@
/** Start up status tracker thread */
mStatusTracker = new StatusTracker(this);
- status_t res = mStatusTracker->run(String8::format("C3Dev-%s-Status", mId.string()).string());
+ status_t res = mStatusTracker->run((std::string("C3Dev-") + mId + "-Status").c_str());
if (res != OK) {
SET_ERR_L("Unable to start status tracking thread: %s (%d)",
strerror(-res), res);
@@ -172,7 +174,7 @@
mRequestThread = createNewRequestThread(
this, mStatusTracker, mInterface, sessionParamKeys,
mUseHalBufManager, mSupportCameraMute, mOverrideToPortrait);
- res = mRequestThread->run(String8::format("C3Dev-%s-ReqQueue", mId.string()).string());
+ res = mRequestThread->run((std::string("C3Dev-") + mId + "-ReqQueue").c_str());
if (res != OK) {
SET_ERR_L("Unable to start request queue thread: %s (%d)",
strerror(-res), res);
@@ -209,23 +211,23 @@
bool usePrecorrectArray = DistortionMapper::isDistortionSupported(mDeviceInfo);
if (usePrecorrectArray) {
- res = mDistortionMappers[mId.c_str()].setupStaticInfo(mDeviceInfo);
+ res = mDistortionMappers[mId].setupStaticInfo(mDeviceInfo);
if (res != OK) {
SET_ERR_L("Unable to read necessary calibration fields for distortion correction");
return res;
}
}
- mZoomRatioMappers[mId.c_str()] = ZoomRatioMapper(&mDeviceInfo,
+ mZoomRatioMappers[mId] = ZoomRatioMapper(&mDeviceInfo,
mSupportNativeZoomRatio, usePrecorrectArray);
if (SessionConfigurationUtils::isUltraHighResolutionSensor(mDeviceInfo)) {
- mUHRCropAndMeteringRegionMappers[mId.c_str()] =
+ mUHRCropAndMeteringRegionMappers[mId] =
UHRCropAndMeteringRegionMapper(mDeviceInfo, usePrecorrectArray);
}
if (RotateAndCropMapper::isNeeded(&mDeviceInfo)) {
- mRotateAndCropMappers.emplace(mId.c_str(), &mDeviceInfo);
+ mRotateAndCropMappers.emplace(mId, &mDeviceInfo);
}
// Hidl/AidlCamera3DeviceInjectionMethods
@@ -415,7 +417,7 @@
/*isUltraHighResolution*/true);
if (maxDefaultJpegResolution.width == 0) {
ALOGE("%s: Camera %s: Can't find valid available jpeg sizes in static metadata!",
- __FUNCTION__, mId.string());
+ __FUNCTION__, mId.c_str());
return BAD_VALUE;
}
bool useMaxSensorPixelModeThreshold = false;
@@ -430,7 +432,7 @@
camera_metadata_ro_entry jpegBufMaxSize = info.find(ANDROID_JPEG_MAX_SIZE);
if (jpegBufMaxSize.count == 0) {
ALOGE("%s: Camera %s: Can't find maximum JPEG size in static metadata!", __FUNCTION__,
- mId.string());
+ mId.c_str());
return BAD_VALUE;
}
maxJpegBufferSize = jpegBufMaxSize.data.i32[0];
@@ -462,7 +464,7 @@
camera_metadata_ro_entry maxPointCount = info.find(ANDROID_DEPTH_MAX_DEPTH_SAMPLES);
if (maxPointCount.count == 0) {
ALOGE("%s: Camera %s: Can't find maximum depth point cloud size in static metadata!",
- __FUNCTION__, mId.string());
+ __FUNCTION__, mId.c_str());
return BAD_VALUE;
}
ssize_t maxBytesForPointCloud = sizeof(android_depth_points) +
@@ -484,7 +486,7 @@
size_t count = rawOpaqueSizes.count;
if (count == 0 || (count % PER_CONFIGURATION_SIZE)) {
ALOGE("%s: Camera %s: bad opaque RAW size static metadata length(%zu)!",
- __FUNCTION__, mId.string(), count);
+ __FUNCTION__, mId.c_str(), count);
return BAD_VALUE;
}
@@ -496,7 +498,7 @@
}
ALOGE("%s: Camera %s: cannot find size for %dx%d opaque RAW image!",
- __FUNCTION__, mId.string(), width, height);
+ __FUNCTION__, mId.c_str(), width, height);
return BAD_VALUE;
}
@@ -510,10 +512,10 @@
ALOGW_IF(!gotInterfaceLock,
"Camera %s: %s: Unable to lock interface lock, proceeding anyway",
- mId.string(), __FUNCTION__);
+ mId.c_str(), __FUNCTION__);
ALOGW_IF(!gotLock,
"Camera %s: %s: Unable to lock main lock, proceeding anyway",
- mId.string(), __FUNCTION__);
+ mId.c_str(), __FUNCTION__);
bool dumpTemplates = false;
@@ -523,9 +525,9 @@
if (args[i] == templatesOption) {
dumpTemplates = true;
}
- if (args[i] == TagMonitor::kMonitorOption) {
+ if (args[i] == toString16(TagMonitor::kMonitorOption)) {
if (i + 1 < n) {
- String8 monitorTags = String8(args[i + 1]);
+ std::string monitorTags = toStdString(args[i + 1]);
if (monitorTags == "off") {
mTagMonitor.disableMonitoring();
} else {
@@ -537,7 +539,7 @@
}
}
- String8 lines;
+ std::string lines;
const char *status =
mStatus == STATUS_ERROR ? "ERROR" :
@@ -547,42 +549,42 @@
mStatus == STATUS_ACTIVE ? "ACTIVE" :
"Unknown";
- lines.appendFormat(" Device status: %s\n", status);
+ lines += fmt::sprintf(" Device status: %s\n", status);
if (mStatus == STATUS_ERROR) {
- lines.appendFormat(" Error cause: %s\n", mErrorCause.string());
+ lines += fmt::sprintf(" Error cause: %s\n", mErrorCause.c_str());
}
- lines.appendFormat(" Stream configuration:\n");
+ lines += " Stream configuration:\n";
const char *mode =
mOperatingMode == CAMERA_STREAM_CONFIGURATION_NORMAL_MODE ? "NORMAL" :
mOperatingMode == CAMERA_STREAM_CONFIGURATION_CONSTRAINED_HIGH_SPEED_MODE ?
"CONSTRAINED_HIGH_SPEED" : "CUSTOM";
- lines.appendFormat(" Operation mode: %s (%d) \n", mode, mOperatingMode);
+ lines += fmt::sprintf(" Operation mode: %s (%d) \n", mode, mOperatingMode);
if (mInputStream != NULL) {
- write(fd, lines.string(), lines.size());
+ write(fd, lines.c_str(), lines.size());
mInputStream->dump(fd, args);
} else {
- lines.appendFormat(" No input stream.\n");
- write(fd, lines.string(), lines.size());
+ lines += " No input stream.\n";
+ write(fd, lines.c_str(), lines.size());
}
for (size_t i = 0; i < mOutputStreams.size(); i++) {
mOutputStreams[i]->dump(fd,args);
}
if (mBufferManager != NULL) {
- lines = String8(" Camera3 Buffer Manager:\n");
- write(fd, lines.string(), lines.size());
+ lines = " Camera3 Buffer Manager:\n";
+ write(fd, lines.c_str(), lines.size());
mBufferManager->dump(fd, args);
}
- lines = String8(" In-flight requests:\n");
+ lines = " In-flight requests:\n";
if (mInFlightLock.try_lock()) {
if (mInFlightMap.size() == 0) {
- lines.append(" None\n");
+ lines += " None\n";
} else {
for (size_t i = 0; i < mInFlightMap.size(); i++) {
InFlightRequest r = mInFlightMap.valueAt(i);
- lines.appendFormat(" Frame %d | Timestamp: %" PRId64 ", metadata"
+ lines += fmt::sprintf(" Frame %d | Timestamp: %" PRId64 ", metadata"
" arrived: %s, buffers left: %d\n", mInFlightMap.keyAt(i),
r.shutterTimestamp, r.haveResultMetadata ? "true" : "false",
r.numBuffersLeft);
@@ -590,9 +592,9 @@
}
mInFlightLock.unlock();
} else {
- lines.append(" Failed to acquire In-flight lock!\n");
+ lines += " Failed to acquire In-flight lock!\n";
}
- write(fd, lines.string(), lines.size());
+ write(fd, lines.c_str(), lines.size());
if (mRequestThread != NULL) {
mRequestThread->dumpCaptureRequestLatency(fd,
@@ -600,8 +602,8 @@
}
{
- lines = String8(" Last request sent:\n");
- write(fd, lines.string(), lines.size());
+ lines = " Last request sent:\n";
+ write(fd, lines.c_str(), lines.size());
CameraMetadata lastRequest = getLatestRequestLocked();
lastRequest.dump(fd, /*verbosity*/2, /*indentation*/6);
@@ -621,12 +623,12 @@
camera_metadata_t *templateRequest = nullptr;
mInterface->constructDefaultRequestSettings(
(camera_request_template_t) i, &templateRequest);
- lines = String8::format(" HAL Request %s:\n", templateNames[i-1]);
+ lines = fmt::sprintf(" HAL Request %s:\n", templateNames[i-1]);
if (templateRequest == nullptr) {
- lines.append(" Not supported\n");
- write(fd, lines.string(), lines.size());
+ lines += " Not supported\n";
+ write(fd, lines.c_str(), lines.size());
} else {
- write(fd, lines.string(), lines.size());
+ write(fd, lines.c_str(), lines.size());
dump_indented_camera_metadata(templateRequest,
fd, /*verbosity*/2, /*indentation*/8);
}
@@ -637,8 +639,8 @@
mTagMonitor.dumpMonitoredMetadata(fd);
if (mInterface->valid()) {
- lines = String8(" HAL device dump:\n");
- write(fd, lines.string(), lines.size());
+ lines = " HAL device dump:\n";
+ write(fd, lines.c_str(), lines.size());
mInterface->dump(fd);
}
@@ -648,7 +650,7 @@
return OK;
}
-status_t Camera3Device::startWatchingTags(const String8 &tags) {
+status_t Camera3Device::startWatchingTags(const std::string &tags) {
mTagMonitor.parseTagsToMonitor(tags);
return OK;
}
@@ -663,7 +665,7 @@
return OK;
}
-const CameraMetadata& Camera3Device::infoPhysical(const String8& physicalId) const {
+const CameraMetadata& Camera3Device::infoPhysical(const std::string& physicalId) const {
ALOGVV("%s: E", __FUNCTION__);
if (CC_UNLIKELY(mStatus == STATUS_UNINITIALIZED ||
mStatus == STATUS_ERROR)) {
@@ -671,12 +673,11 @@
mStatus == STATUS_ERROR ?
"when in error state" : "before init");
}
- if (physicalId.isEmpty()) {
+ if (physicalId.empty()) {
return mDeviceInfo;
} else {
- std::string id(physicalId.c_str());
- if (mPhysicalDeviceInfoMap.find(id) != mPhysicalDeviceInfoMap.end()) {
- return mPhysicalDeviceInfoMap.at(id);
+ if (mPhysicalDeviceInfoMap.find(physicalId) != mPhysicalDeviceInfoMap.end()) {
+ return mPhysicalDeviceInfoMap.at(physicalId);
} else {
ALOGE("%s: Invalid physical camera id %s", __FUNCTION__, physicalId.c_str());
return mDeviceInfo;
@@ -685,8 +686,7 @@
}
const CameraMetadata& Camera3Device::info() const {
- String8 emptyId;
- return infoPhysical(emptyId);
+ return infoPhysical(/*physicalId*/ std::string());
}
status_t Camera3Device::checkStatusOkToCaptureLocked() {
@@ -780,7 +780,7 @@
std::list<const SurfaceMap>& surfaceMaps,
const CameraMetadata& request) {
PhysicalCameraSettingsList requestList;
- requestList.push_back({std::string(getId().string()), request});
+ requestList.push_back({getId(), request});
requestsList.push_back(requestList);
SurfaceMap surfaceMap;
@@ -832,7 +832,7 @@
SET_ERR_L("Can't transition to active in %f seconds!",
kActiveTimeout/1e9);
}
- ALOGV("Camera %s: Capture request %" PRId32 " enqueued", mId.string(),
+ ALOGV("Camera %s: Capture request %" PRId32 " enqueued", mId.c_str(),
(*(requestList.begin()))->mResultExtras.requestId);
} else {
CLOGE("Cannot queue request. Impossible.");
@@ -915,7 +915,7 @@
SET_ERR_L("Unexpected status: %d", mStatus);
return INVALID_OPERATION;
}
- ALOGV("Camera %s: Clearing repeating request", mId.string());
+ ALOGV("Camera %s: Clearing repeating request", mId.c_str());
return mRequestThread->clearRepeatingRequests(lastFrameNumber);
}
@@ -934,7 +934,7 @@
nsecs_t maxExpectedDuration = getExpectedInFlightDuration();
Mutex::Autolock l(mLock);
ALOGV("Camera %s: Creating new input stream %d: %d x %d, format %d",
- mId.string(), mNextStreamId, width, height, format);
+ mId.c_str(), mNextStreamId, width, height, format);
status_t res;
bool wasActive = false;
@@ -992,14 +992,14 @@
internalResumeLocked();
}
- ALOGV("Camera %s: Created input stream", mId.string());
+ ALOGV("Camera %s: Created input stream", mId.c_str());
return OK;
}
status_t Camera3Device::createStream(sp<Surface> consumer,
uint32_t width, uint32_t height, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation, int *id,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds, int streamSetId, bool isShared, bool isMultiResolution,
uint64_t consumerUsage, int64_t dynamicRangeProfile, int64_t streamUseCase,
@@ -1035,7 +1035,8 @@
status_t Camera3Device::createStream(const std::vector<sp<Surface>>& consumers,
bool hasDeferredConsumer, uint32_t width, uint32_t height, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation, int *id,
- const String8& physicalCameraId, const std::unordered_set<int32_t> &sensorPixelModesUsed,
+ const std::string& physicalCameraId,
+ const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds, int streamSetId, bool isShared, bool isMultiResolution,
uint64_t consumerUsage, int64_t dynamicRangeProfile, int64_t streamUseCase,
int timestampBase, int mirrorMode) {
@@ -1048,8 +1049,8 @@
" consumer usage %" PRIu64 ", isShared %d, physicalCameraId %s, isMultiResolution %d"
" dynamicRangeProfile 0x%" PRIx64 ", streamUseCase %" PRId64 ", timestampBase %d,"
" mirrorMode %d",
- mId.string(), mNextStreamId, width, height, format, dataSpace, rotation,
- consumerUsage, isShared, physicalCameraId.string(), isMultiResolution,
+ mId.c_str(), mNextStreamId, width, height, format, dataSpace, rotation,
+ consumerUsage, isShared, physicalCameraId.c_str(), isMultiResolution,
dynamicRangeProfile, streamUseCase, timestampBase, mirrorMode);
status_t res;
@@ -1198,7 +1199,7 @@
}
internalResumeLocked();
}
- ALOGV("Camera %s: Created new stream", mId.string());
+ ALOGV("Camera %s: Created new stream", mId.c_str());
return OK;
}
@@ -1282,18 +1283,18 @@
Mutex::Autolock l(mLock);
status_t res;
- ALOGV("%s: Camera %s: Deleting stream %d", __FUNCTION__, mId.string(), id);
+ ALOGV("%s: Camera %s: Deleting stream %d", __FUNCTION__, mId.c_str(), id);
// CameraDevice semantics require device to already be idle before
// deleteStream is called, unlike for createStream.
if (mStatus == STATUS_ACTIVE) {
- ALOGW("%s: Camera %s: Device not idle", __FUNCTION__, mId.string());
+ ALOGW("%s: Camera %s: Device not idle", __FUNCTION__, mId.c_str());
return -EBUSY;
}
if (mStatus == STATUS_ERROR) {
ALOGW("%s: Camera %s: deleteStream not allowed in ERROR state",
- __FUNCTION__, mId.string());
+ __FUNCTION__, mId.c_str());
return -EBUSY;
}
@@ -1470,7 +1471,7 @@
mRequestTemplateCache[templateId].acquire(rawRequest);
// Override the template request with zoomRatioMapper
- res = mZoomRatioMappers[mId.c_str()].initZoomRatioInTemplate(
+ res = mZoomRatioMappers[mId].initZoomRatioInTemplate(
&mRequestTemplateCache[templateId]);
if (res != OK) {
CLOGE("Failed to update zoom ratio for template %d: %s (%d)",
@@ -1516,7 +1517,7 @@
SET_ERR_L("Unexpected status: %d",mStatus);
return INVALID_OPERATION;
}
- ALOGV("%s: Camera %s: Waiting until idle (%" PRIi64 "ns)", __FUNCTION__, mId.string(),
+ ALOGV("%s: Camera %s: Waiting until idle (%" PRIi64 "ns)", __FUNCTION__, mId.c_str(),
maxExpectedDuration);
status_t res = waitUntilStateThenRelock(/*active*/ false, maxExpectedDuration);
if (res != OK) {
@@ -1541,7 +1542,7 @@
return NO_INIT;
}
- ALOGV("%s: Camera %s: Internal wait until idle (% " PRIi64 " ns)", __FUNCTION__, mId.string(),
+ ALOGV("%s: Camera %s: Internal wait until idle (% " PRIi64 " ns)", __FUNCTION__, mId.c_str(),
maxExpectedDuration);
status_t res = waitUntilStateThenRelock(/*active*/ false, maxExpectedDuration);
if (res != OK) {
@@ -1558,7 +1559,7 @@
mRequestThread->setPaused(false);
- ALOGV("%s: Camera %s: Internal wait until active (% " PRIi64 " ns)", __FUNCTION__, mId.string(),
+ ALOGV("%s: Camera %s: Internal wait until active (% " PRIi64 " ns)", __FUNCTION__, mId.c_str(),
kActiveTimeout);
res = waitUntilStateThenRelock(/*active*/ true, kActiveTimeout);
if (res != OK) {
@@ -1757,7 +1758,7 @@
status_t Camera3Device::flush(int64_t *frameNumber) {
ATRACE_CALL();
- ALOGV("%s: Camera %s: Flushing all requests", __FUNCTION__, mId.string());
+ ALOGV("%s: Camera %s: Flushing all requests", __FUNCTION__, mId.c_str());
Mutex::Autolock il(mInterfaceLock);
{
@@ -1789,7 +1790,7 @@
status_t Camera3Device::prepare(int maxCount, int streamId) {
ATRACE_CALL();
- ALOGV("%s: Camera %s: Preparing stream %d", __FUNCTION__, mId.string(), streamId);
+ ALOGV("%s: Camera %s: Preparing stream %d", __FUNCTION__, mId.c_str(), streamId);
Mutex::Autolock il(mInterfaceLock);
Mutex::Autolock l(mLock);
@@ -1814,7 +1815,7 @@
status_t Camera3Device::tearDown(int streamId) {
ATRACE_CALL();
- ALOGV("%s: Camera %s: Tearing down stream %d", __FUNCTION__, mId.string(), streamId);
+ ALOGV("%s: Camera %s: Tearing down stream %d", __FUNCTION__, mId.c_str(), streamId);
Mutex::Autolock il(mInterfaceLock);
Mutex::Autolock l(mLock);
@@ -1835,7 +1836,8 @@
status_t Camera3Device::addBufferListenerForStream(int streamId,
wp<Camera3StreamBufferListener> listener) {
ATRACE_CALL();
- ALOGV("%s: Camera %s: Adding buffer listener for stream %d", __FUNCTION__, mId.string(), streamId);
+ ALOGV("%s: Camera %s: Adding buffer listener for stream %d", __FUNCTION__, mId.c_str(),
+ streamId);
Mutex::Autolock il(mInterfaceLock);
Mutex::Autolock l(mLock);
@@ -1883,7 +1885,7 @@
if (mStatus != STATUS_ACTIVE && mStatus != STATUS_CONFIGURED) {
return;
}
- ALOGV("%s: Camera %s: Now %s, pauseState: %s", __FUNCTION__, mId.string(),
+ ALOGV("%s: Camera %s: Now %s, pauseState: %s", __FUNCTION__, mId.c_str(),
idle ? "idle" : "active", mPauseStateNotify ? "true" : "false");
internalUpdateStatusLocked(idle ? STATUS_CONFIGURED : STATUS_ACTIVE);
@@ -1963,7 +1965,7 @@
const std::vector<sp<Surface>>& consumers, std::vector<int> *surfaceIds) {
ATRACE_CALL();
ALOGV("%s: Camera %s: set consumer surface for stream %d",
- __FUNCTION__, mId.string(), streamId);
+ __FUNCTION__, mId.c_str(), streamId);
if (surfaceIds == nullptr) {
return BAD_VALUE;
@@ -2224,7 +2226,7 @@
res = mPreparerThread->resume();
if (res != OK) {
- ALOGE("%s: Camera %s: Preparer thread failed to resume!", __FUNCTION__, mId.string());
+ ALOGE("%s: Camera %s: Preparer thread failed to resume!", __FUNCTION__, mId.c_str());
}
}
@@ -2373,7 +2375,7 @@
overrideStreamUseCaseLocked();
// Start configuring the streams
- ALOGV("%s: Camera %s: Starting stream configuration", __FUNCTION__, mId.string());
+ ALOGV("%s: Camera %s: Starting stream configuration", __FUNCTION__, mId.c_str());
mPreparerThread->pause();
@@ -2426,7 +2428,7 @@
// always occupy the initial entry.
if (outputStream->data_space == HAL_DATASPACE_V0_JFIF) {
bufferSizes[k] = static_cast<uint32_t>(
- getJpegBufferSize(infoPhysical(String8(outputStream->physical_camera_id)),
+ getJpegBufferSize(infoPhysical(outputStream->physical_camera_id),
outputStream->width, outputStream->height));
} else if (outputStream->data_space ==
static_cast<android_dataspace>(HAL_DATASPACE_JPEG_APP_SEGMENTS)) {
@@ -2439,7 +2441,7 @@
if (mOutputStreams[i]->isMultiResolution()) {
int32_t streamGroupId = mOutputStreams[i]->getHalStreamGroupId();
- const String8& physicalCameraId = mOutputStreams[i]->getPhysicalCameraId();
+ const std::string &physicalCameraId = mOutputStreams[i]->getPhysicalCameraId();
mGroupIdPhysicalCameraMap[streamGroupId].insert(physicalCameraId);
}
@@ -2553,14 +2555,14 @@
internalUpdateStatusLocked((mFakeStreamId == NO_STREAM) ?
STATUS_CONFIGURED : STATUS_UNCONFIGURED);
- ALOGV("%s: Camera %s: Stream configuration complete", __FUNCTION__, mId.string());
+ ALOGV("%s: Camera %s: Stream configuration complete", __FUNCTION__, mId.c_str());
// tear down the deleted streams after configure streams.
mDeletedStreams.clear();
auto rc = mPreparerThread->resume();
if (rc != OK) {
- SET_ERR_L("%s: Camera %s: Preparer thread failed to resume!", __FUNCTION__, mId.string());
+ SET_ERR_L("%s: Camera %s: Preparer thread failed to resume!", __FUNCTION__, mId.c_str());
return rc;
}
@@ -2574,7 +2576,7 @@
// configure the injection streams.
if (mInjectionMethods->isInjecting()) {
ALOGD("%s: Injection camera %s: Start to configure streams.",
- __FUNCTION__, mInjectionMethods->getInjectedCamId().string());
+ __FUNCTION__, mInjectionMethods->getInjectedCamId().c_str());
res = mInjectionMethods->injectCamera(config, bufferSizes);
if (res != OK) {
ALOGE("Can't finish inject camera process!");
@@ -2603,11 +2605,11 @@
// Should never be adding a second fake stream when one is already
// active
SET_ERR_L("%s: Camera %s: A fake stream already exists!",
- __FUNCTION__, mId.string());
+ __FUNCTION__, mId.c_str());
return INVALID_OPERATION;
}
- ALOGV("%s: Camera %s: Adding a fake stream", __FUNCTION__, mId.string());
+ ALOGV("%s: Camera %s: Adding a fake stream", __FUNCTION__, mId.c_str());
sp<Camera3OutputStreamInterface> fakeStream =
new Camera3FakeStream(mNextStreamId);
@@ -2631,7 +2633,7 @@
if (mFakeStreamId == NO_STREAM) return OK;
if (mOutputStreams.size() == 1) return OK;
- ALOGV("%s: Camera %s: Removing the fake stream", __FUNCTION__, mId.string());
+ ALOGV("%s: Camera %s: Removing the fake stream", __FUNCTION__, mId.c_str());
// Ok, have a fake stream and there's at least one other output stream,
// so remove the fake
@@ -2683,8 +2685,9 @@
void Camera3Device::setErrorStateLockedV(const char *fmt, va_list args) {
// Print out all error messages to log
- String8 errorCause = String8::formatV(fmt, args);
- ALOGE("Camera %s: %s", mId.string(), errorCause.string());
+ std::string errorCause;
+ base::StringAppendV(&errorCause, fmt, args);
+ ALOGE("Camera %s: %s", mId.c_str(), errorCause.c_str());
// But only do error state transition steps for the first error
if (mStatus == STATUS_ERROR || mStatus == STATUS_UNINITIALIZED) return;
@@ -2716,7 +2719,7 @@
status_t Camera3Device::registerInFlight(uint32_t frameNumber,
int32_t numBuffers, CaptureResultExtras resultExtras, bool hasInput,
bool hasAppCallback, nsecs_t minExpectedDuration, nsecs_t maxExpectedDuration,
- bool isFixedFps, const std::set<std::set<String8>>& physicalCameraIds,
+ bool isFixedFps, const std::set<std::set<std::string>>& physicalCameraIds,
bool isStillCapture, bool isZslCapture, bool rotateAndCropAuto,
const std::set<std::string>& cameraIdsWithZoom,
const SurfaceMap& outputSurfaces, nsecs_t requestTimeNs) {
@@ -2962,7 +2965,7 @@
void Camera3Device::RequestThread::configurationComplete(bool isConstrainedHighSpeed,
const CameraMetadata& sessionParams,
- const std::map<int32_t, std::set<String8>>& groupIdPhysicalCameraMap) {
+ const std::map<int32_t, std::set<std::string>>& groupIdPhysicalCameraMap) {
ATRACE_CALL();
Mutex::Autolock l(mRequestLock);
mReconfigured = true;
@@ -3015,8 +3018,8 @@
return OK;
}
-const String8& Camera3Device::RequestThread::getId(const wp<Camera3Device> &device) {
- static String8 deadId("<DeadDevice>");
+const std::string& Camera3Device::RequestThread::getId(const wp<Camera3Device> &device) {
+ static std::string deadId("<DeadDevice>");
sp<Camera3Device> d = device.promote();
if (d != nullptr) return d->mId;
return deadId;
@@ -3812,7 +3815,7 @@
outputBuffers->insertAt(camera_stream_buffer_t(), 0,
captureRequest->mOutputStreams.size());
halRequest->output_buffers = outputBuffers->array();
- std::set<std::set<String8>> requestedPhysicalCameras;
+ std::set<std::set<std::string>> requestedPhysicalCameras;
sp<Camera3Device> parent = mParent.promote();
if (parent == NULL) {
@@ -3893,11 +3896,11 @@
{
sp<Camera3Device> parent = mParent.promote();
if (parent != nullptr) {
- const String8& streamCameraId = outputStream->getPhysicalCameraId();
+ const std::string& streamCameraId = outputStream->getPhysicalCameraId();
for (const auto& settings : captureRequest->mSettingsList) {
- if ((streamCameraId.isEmpty() &&
- parent->getId() == settings.cameraId.c_str()) ||
- streamCameraId == settings.cameraId.c_str()) {
+ if ((streamCameraId.empty() &&
+ parent->getId() == settings.cameraId) ||
+ streamCameraId == settings.cameraId) {
outputStream->fireBufferRequestForFrameNumber(
captureRequest->mResultExtras.frameNumber,
settings.metadata);
@@ -3906,12 +3909,12 @@
}
}
- String8 physicalCameraId = outputStream->getPhysicalCameraId();
+ const std::string &physicalCameraId = outputStream->getPhysicalCameraId();
int32_t streamGroupId = outputStream->getHalStreamGroupId();
if (streamGroupId != -1 && mGroupIdPhysicalCameraMap.count(streamGroupId) == 1) {
requestedPhysicalCameras.insert(mGroupIdPhysicalCameraMap[streamGroupId]);
- } else if (!physicalCameraId.isEmpty()) {
- requestedPhysicalCameras.insert(std::set<String8>({physicalCameraId}));
+ } else if (!physicalCameraId.empty()) {
+ requestedPhysicalCameras.insert(std::set<std::string>({physicalCameraId}));
}
halRequest->num_output_buffers++;
}
@@ -5223,9 +5226,9 @@
return mRequestThread->setCameraMute(muteMode);
}
-status_t Camera3Device::injectCamera(const String8& injectedCamId,
+status_t Camera3Device::injectCamera(const std::string& injectedCamId,
sp<CameraProviderManager> manager) {
- ALOGI("%s Injection camera: injectedCamId = %s", __FUNCTION__, injectedCamId.string());
+ ALOGI("%s Injection camera: injectedCamId = %s", __FUNCTION__, injectedCamId.c_str());
ATRACE_CALL();
Mutex::Autolock il(mInterfaceLock);
// When the camera device is active, injectCamera() and stopInjection() will call
diff --git a/services/camera/libcameraservice/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h
index a3acb4e..7b89f9f 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.h
+++ b/services/camera/libcameraservice/device3/Camera3Device.h
@@ -82,7 +82,7 @@
friend class AidlCamera3Device;
public:
- explicit Camera3Device(const String8& id, bool overrideForPerfClass, bool overrideToPortrait,
+ explicit Camera3Device(const std::string& id, bool overrideForPerfClass, bool overrideToPortrait,
bool legacyClient = false);
virtual ~Camera3Device();
@@ -98,7 +98,7 @@
* CameraDeviceBase interface
*/
- const String8& getId() const override;
+ const std::string& getId() const override;
metadata_vendor_id_t getVendorTagId() const override { return mVendorTagId; }
@@ -107,15 +107,15 @@
// Transitions to idle state on success.
virtual status_t initialize(sp<CameraProviderManager> /*manager*/,
- const String8& /*monitorTags*/) = 0;
+ const std::string& /*monitorTags*/) = 0;
status_t disconnect() override;
status_t dump(int fd, const Vector<String16> &args) override;
- status_t startWatchingTags(const String8 &tags) override;
+ status_t startWatchingTags(const std::string &tags) override;
status_t stopWatchingTags() override;
status_t dumpWatchedEventsToVector(std::vector<std::string> &out) override;
const CameraMetadata& info() const override;
- const CameraMetadata& infoPhysical(const String8& physicalId) const override;
+ const CameraMetadata& infoPhysical(const std::string& physicalId) const override;
// Capture and setStreamingRequest will configure streams if currently in
// idle state
@@ -140,7 +140,7 @@
status_t createStream(sp<Surface> consumer,
uint32_t width, uint32_t height, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation, int *id,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds = nullptr,
int streamSetId = camera3::CAMERA3_STREAM_SET_ID_INVALID,
@@ -155,7 +155,7 @@
status_t createStream(const std::vector<sp<Surface>>& consumers,
bool hasDeferredConsumer, uint32_t width, uint32_t height, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation, int *id,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
std::vector<int> *surfaceIds = nullptr,
int streamSetId = camera3::CAMERA3_STREAM_SET_ID_INVALID,
@@ -301,7 +301,7 @@
* The injection camera session to replace the internal camera
* session.
*/
- status_t injectCamera(const String8& injectedCamId,
+ status_t injectCamera(const std::string& injectedCamId,
sp<CameraProviderManager> manager);
/**
@@ -344,7 +344,7 @@
Mutex mLock;
// Camera device ID
- const String8 mId;
+ const std::string mId;
// Legacy camera client flag
bool mLegacyClient;
@@ -546,14 +546,14 @@
Condition mStatusChanged;
// Tracking cause of fatal errors when in STATUS_ERROR
- String8 mErrorCause;
+ std::string mErrorCause;
camera3::StreamSet mOutputStreams;
sp<camera3::Camera3Stream> mInputStream;
bool mIsInputStreamMultiResolution;
SessionStatsBuilder mSessionStatsBuilder;
// Map from stream group ID to physical cameras backing the stream group
- std::map<int32_t, std::set<String8>> mGroupIdPhysicalCameraMap;
+ std::map<int32_t, std::set<std::string>> mGroupIdPhysicalCameraMap;
int mNextStreamId;
bool mNeedConfig;
@@ -662,7 +662,7 @@
*/
virtual CameraMetadata getLatestRequestLocked();
- virtual status_t injectionCameraInitialize(const String8 &injectCamId,
+ virtual status_t injectionCameraInitialize(const std::string &injectCamId,
sp<CameraProviderManager> manager) = 0;
/**
@@ -837,7 +837,7 @@
*/
void configurationComplete(bool isConstrainedHighSpeed,
const CameraMetadata& sessionParams,
- const std::map<int32_t, std::set<String8>>& groupIdPhysicalCameraMap);
+ const std::map<int32_t, std::set<std::string>>& groupIdPhysicalCameraMap);
/**
* Set or clear the list of repeating requests. Does not block
@@ -936,7 +936,7 @@
virtual bool threadLoop();
- static const String8& getId(const wp<Camera3Device> &device);
+ static const std::string& getId(const wp<Camera3Device> &device);
status_t queueTriggerLocked(RequestTrigger trigger);
// Mix-in queued triggers into this request
@@ -1035,7 +1035,7 @@
wp<NotificationListener> mListener;
- const String8 mId; // The camera ID
+ const std::string mId; // The camera ID
int mStatusId; // The RequestThread's component ID for
// status tracking
@@ -1103,7 +1103,7 @@
Vector<int32_t> mSessionParamKeys;
CameraMetadata mLatestSessionParams;
- std::map<int32_t, std::set<String8>> mGroupIdPhysicalCameraMap;
+ std::map<int32_t, std::set<std::string>> mGroupIdPhysicalCameraMap;
const bool mUseHalBufManager;
const bool mSupportCameraMute;
@@ -1136,7 +1136,7 @@
status_t registerInFlight(uint32_t frameNumber,
int32_t numBuffers, CaptureResultExtras resultExtras, bool hasInput,
bool callback, nsecs_t minExpectedDuration, nsecs_t maxExpectedDuration,
- bool isFixedFps, const std::set<std::set<String8>>& physicalCameraIds,
+ bool isFixedFps, const std::set<std::set<std::string>>& physicalCameraIds,
bool isStillCapture, bool isZslCapture, bool rotateAndCropAuto,
const std::set<std::string>& cameraIdsWithZoom, const SurfaceMap& outputSurfaces,
nsecs_t requestTimeNs);
@@ -1421,7 +1421,7 @@
bool isStreamConfigCompleteButNotInjected();
- const String8& getInjectedCamId() const;
+ const std::string& getInjectedCamId() const;
void getInjectionConfig(/*out*/ camera3::camera_stream_configuration* injectionConfig,
/*out*/ std::vector<uint32_t>* injectionBufferSizes);
@@ -1475,7 +1475,7 @@
Mutex mInjectionLock;
// The injection camera ID.
- String8 mInjectedCamId;
+ std::string mInjectedCamId;
};
virtual sp<Camera3DeviceInjectionMethods>
diff --git a/services/camera/libcameraservice/device3/Camera3DeviceInjectionMethods.cpp b/services/camera/libcameraservice/device3/Camera3DeviceInjectionMethods.cpp
index 031c255..4640f2d 100644
--- a/services/camera/libcameraservice/device3/Camera3DeviceInjectionMethods.cpp
+++ b/services/camera/libcameraservice/device3/Camera3DeviceInjectionMethods.cpp
@@ -155,7 +155,7 @@
return mIsStreamConfigCompleteButNotInjected;
}
-const String8& Camera3Device::Camera3DeviceInjectionMethods::getInjectedCamId()
+const std::string& Camera3Device::Camera3DeviceInjectionMethods::getInjectedCamId()
const {
return mInjectedCamId;
}
@@ -204,7 +204,7 @@
// Start configuring the streams
ALOGV("%s: Injection camera %s: Starting stream configuration", __FUNCTION__,
- mInjectedCamId.string());
+ mInjectedCamId.c_str());
parent->mPreparerThread->pause();
@@ -247,12 +247,12 @@
parent->internalUpdateStatusLocked(STATUS_CONFIGURED);
ALOGV("%s: Injection camera %s: Stream configuration complete", __FUNCTION__,
- mInjectedCamId.string());
+ mInjectedCamId.c_str());
auto rc = parent->mPreparerThread->resume();
if (rc != OK) {
ALOGE("%s: Injection camera %s: Preparer thread failed to resume!",
- __FUNCTION__, mInjectedCamId.string());
+ __FUNCTION__, mInjectedCamId.c_str());
return rc;
}
diff --git a/services/camera/libcameraservice/device3/Camera3FakeStream.cpp b/services/camera/libcameraservice/device3/Camera3FakeStream.cpp
index 8c0ac71..75162bf 100644
--- a/services/camera/libcameraservice/device3/Camera3FakeStream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3FakeStream.cpp
@@ -20,13 +20,14 @@
#include <utils/Log.h>
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
#include "Camera3FakeStream.h"
namespace android {
namespace camera3 {
-const String8 Camera3FakeStream::FAKE_ID;
+const std::string Camera3FakeStream::FAKE_ID;
Camera3FakeStream::Camera3FakeStream(int id) :
Camera3IOStreamBase(id, CAMERA_STREAM_OUTPUT, FAKE_WIDTH, FAKE_HEIGHT,
@@ -68,9 +69,9 @@
}
void Camera3FakeStream::dump(int fd, [[maybe_unused]] const Vector<String16> &args) const {
- String8 lines;
- lines.appendFormat(" Stream[%d]: Fake\n", mId);
- write(fd, lines.string(), lines.size());
+ std::string lines;
+ lines += fmt::sprintf(" Stream[%d]: Fake\n", mId);
+ write(fd, lines.c_str(), lines.size());
Camera3IOStreamBase::dump(fd, args);
}
@@ -115,7 +116,7 @@
return OK;
}
-const String8& Camera3FakeStream::getPhysicalCameraId() const {
+const std::string& Camera3FakeStream::getPhysicalCameraId() const {
return FAKE_ID;
}
diff --git a/services/camera/libcameraservice/device3/Camera3FakeStream.h b/services/camera/libcameraservice/device3/Camera3FakeStream.h
index 1e9f478..1d82190 100644
--- a/services/camera/libcameraservice/device3/Camera3FakeStream.h
+++ b/services/camera/libcameraservice/device3/Camera3FakeStream.h
@@ -65,7 +65,7 @@
/**
* Query the physical camera id for the output stream.
*/
- virtual const String8& getPhysicalCameraId() const override;
+ virtual const std::string& getPhysicalCameraId() const override;
/**
* Return if this output stream is for video encoding.
@@ -130,7 +130,7 @@
static const android_dataspace FAKE_DATASPACE = HAL_DATASPACE_UNKNOWN;
static const camera_stream_rotation_t FAKE_ROTATION = CAMERA_STREAM_ROTATION_0;
static const uint64_t FAKE_USAGE = GRALLOC_USAGE_HW_COMPOSER;
- static const String8 FAKE_ID;
+ static const std::string FAKE_ID;
/**
* Internal Camera3Stream interface
diff --git a/services/camera/libcameraservice/device3/Camera3IOStreamBase.cpp b/services/camera/libcameraservice/device3/Camera3IOStreamBase.cpp
index 314e007..7d08089 100644
--- a/services/camera/libcameraservice/device3/Camera3IOStreamBase.cpp
+++ b/services/camera/libcameraservice/device3/Camera3IOStreamBase.cpp
@@ -18,10 +18,13 @@
#define ATRACE_TAG ATRACE_TAG_CAMERA
//#define LOG_NDEBUG 0
+#include <sstream>
+
#include <inttypes.h>
#include <utils/Log.h>
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
#include "device3/Camera3IOStreamBase.h"
#include "device3/StatusTracker.h"
@@ -32,7 +35,7 @@
Camera3IOStreamBase::Camera3IOStreamBase(int id, camera_stream_type_t type,
uint32_t width, uint32_t height, size_t maxSize, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
int setId, bool isMultiResolution, int64_t dynamicRangeProfile, int64_t streamUseCase,
bool deviceTimeBaseIsRealtime, int timestampBase) :
@@ -74,31 +77,33 @@
}
void Camera3IOStreamBase::dump(int fd, [[maybe_unused]] const Vector<String16> &args) const {
- String8 lines;
+ std::ostringstream lines;
uint64_t consumerUsage = 0;
status_t res = getEndpointUsage(&consumerUsage);
if (res != OK) consumerUsage = 0;
- lines.appendFormat(" State: %d\n", mState);
- lines.appendFormat(" Dims: %d x %d, format 0x%x, dataspace 0x%x\n",
+ lines << fmt::sprintf(" State: %d\n", mState);
+ lines << fmt::sprintf(" Dims: %d x %d, format 0x%x, dataspace 0x%x\n",
camera_stream::width, camera_stream::height,
camera_stream::format, camera_stream::data_space);
- lines.appendFormat(" Max size: %zu\n", mMaxSize);
- lines.appendFormat(" Combined usage: 0x%" PRIx64 ", max HAL buffers: %d\n",
+ lines << fmt::sprintf(" Max size: %zu\n", mMaxSize);
+ lines << fmt::sprintf(" Combined usage: 0x%" PRIx64 ", max HAL buffers: %d\n",
mUsage | consumerUsage, camera_stream::max_buffers);
- if (strlen(camera_stream::physical_camera_id) > 0) {
- lines.appendFormat(" Physical camera id: %s\n", camera_stream::physical_camera_id);
+ if (!camera_stream::physical_camera_id.empty()) {
+ lines << " Physical camera id: " << camera_stream::physical_camera_id << "\n";
}
- lines.appendFormat(" Dynamic Range Profile: 0x%" PRIx64 "\n",
+ lines << fmt::sprintf(" Dynamic Range Profile: 0x%" PRIx64 "\n",
camera_stream::dynamic_range_profile);
- lines.appendFormat(" Stream use case: %" PRId64 "\n", camera_stream::use_case);
- lines.appendFormat(" Timestamp base: %d\n", getTimestampBase());
- lines.appendFormat(" Frames produced: %d, last timestamp: %" PRId64 " ns\n",
+ lines << fmt::sprintf(" Stream use case: %" PRId64 "\n", camera_stream::use_case);
+ lines << fmt::sprintf(" Timestamp base: %d\n", getTimestampBase());
+ lines << fmt::sprintf(" Frames produced: %d, last timestamp: %" PRId64 " ns\n",
mFrameCount, mLastTimestamp);
- lines.appendFormat(" Total buffers: %zu, currently dequeued: %zu, currently cached: %zu\n",
- mTotalBufferCount, mHandoutTotalBufferCount, mCachedOutputBufferCount);
- write(fd, lines.string(), lines.size());
+ lines << fmt::sprintf(" Total buffers: %zu, currently dequeued: %zu, "
+ "currently cached: %zu\n", mTotalBufferCount, mHandoutTotalBufferCount,
+ mCachedOutputBufferCount);
+ std::string linesStr = std::move(lines.str());
+ write(fd, linesStr.c_str(), linesStr.size());
Camera3Stream::dump(fd, args);
}
@@ -266,7 +271,7 @@
// carry on
if (releaseFence != 0) {
- mCombinedFence = Fence::merge(mName, mCombinedFence, releaseFence);
+ mCombinedFence = Fence::merge(toString8(mName), mCombinedFence, releaseFence);
}
if (output) {
diff --git a/services/camera/libcameraservice/device3/Camera3IOStreamBase.h b/services/camera/libcameraservice/device3/Camera3IOStreamBase.h
index ca1f238..1086955 100644
--- a/services/camera/libcameraservice/device3/Camera3IOStreamBase.h
+++ b/services/camera/libcameraservice/device3/Camera3IOStreamBase.h
@@ -35,7 +35,7 @@
Camera3IOStreamBase(int id, camera_stream_type_t type,
uint32_t width, uint32_t height, size_t maxSize, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
int setId = CAMERA3_STREAM_SET_ID_INVALID, bool isMultiResolution = false,
int64_t dynamicProfile = ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD,
diff --git a/services/camera/libcameraservice/device3/Camera3InputStream.cpp b/services/camera/libcameraservice/device3/Camera3InputStream.cpp
index 631bb43..54ffbd7 100644
--- a/services/camera/libcameraservice/device3/Camera3InputStream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3InputStream.cpp
@@ -21,13 +21,14 @@
#include <gui/BufferItem.h>
#include <utils/Log.h>
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
#include "Camera3InputStream.h"
namespace android {
namespace camera3 {
-const String8 Camera3InputStream::FAKE_ID;
+const std::string Camera3InputStream::FAKE_ID;
Camera3InputStream::Camera3InputStream(int id,
uint32_t width, uint32_t height, int format) :
@@ -216,9 +217,9 @@
}
void Camera3InputStream::dump(int fd, [[maybe_unused]] const Vector<String16> &args) const {
- String8 lines;
- lines.appendFormat(" Stream[%d]: Input\n", mId);
- write(fd, lines.string(), lines.size());
+ std::string lines;
+ lines += fmt::sprintf(" Stream[%d]: Input\n", mId);
+ write(fd, lines.c_str(), lines.size());
Camera3IOStreamBase::dump(fd, args);
}
diff --git a/services/camera/libcameraservice/device3/Camera3InputStream.h b/services/camera/libcameraservice/device3/Camera3InputStream.h
index 5e0587b..d4f4b15 100644
--- a/services/camera/libcameraservice/device3/Camera3InputStream.h
+++ b/services/camera/libcameraservice/device3/Camera3InputStream.h
@@ -53,7 +53,7 @@
sp<IGraphicBufferProducer> mProducer;
Vector<BufferItem> mBuffersInFlight;
- static const String8 FAKE_ID;
+ static const std::string FAKE_ID;
/**
* Camera3IOStreamBase
diff --git a/services/camera/libcameraservice/device3/Camera3OfflineSession.cpp b/services/camera/libcameraservice/device3/Camera3OfflineSession.cpp
index 1e7bd57..172b62a 100644
--- a/services/camera/libcameraservice/device3/Camera3OfflineSession.cpp
+++ b/services/camera/libcameraservice/device3/Camera3OfflineSession.cpp
@@ -27,7 +27,9 @@
#include <inttypes.h>
+#include <android-base/stringprintf.h>
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
#include <android/hardware/camera2/ICameraDeviceCallbacks.h>
@@ -42,7 +44,7 @@
namespace android {
-Camera3OfflineSession::Camera3OfflineSession(const String8 &id,
+Camera3OfflineSession::Camera3OfflineSession(const std::string &id,
const sp<camera3::Camera3Stream>& inputStream,
const camera3::StreamSet& offlineStreamSet,
camera3::BufferRecords&& bufferRecords,
@@ -75,15 +77,15 @@
mRotateAndCropMappers(offlineStates.mRotateAndCropMappers),
mStatus(STATUS_UNINITIALIZED) {
ATRACE_CALL();
- ALOGV("%s: Created offline session for camera %s", __FUNCTION__, mId.string());
+ ALOGV("%s: Created offline session for camera %s", __FUNCTION__, mId.c_str());
}
Camera3OfflineSession::~Camera3OfflineSession() {
ATRACE_CALL();
- ALOGV("%s: Tearing down offline session for camera id %s", __FUNCTION__, mId.string());
+ ALOGV("%s: Tearing down offline session for camera id %s", __FUNCTION__, mId.c_str());
}
-const String8& Camera3OfflineSession::getId() const {
+const std::string& Camera3OfflineSession::getId() const {
return mId;
}
@@ -109,7 +111,7 @@
return OK; // don't close twice
} else if (mStatus == STATUS_ERROR) {
ALOGE("%s: offline session %s shutting down in error state",
- __FUNCTION__, mId.string());
+ __FUNCTION__, mId.c_str());
}
listener = mListener.promote();
}
@@ -217,8 +219,9 @@
void Camera3OfflineSession::setErrorStateLockedV(const char *fmt, va_list args) {
// Print out all error messages to log
- String8 errorCause = String8::formatV(fmt, args);
- ALOGE("Camera %s: %s", mId.string(), errorCause.string());
+ std::string errorCause;
+ base::StringAppendV(&errorCause, fmt, args);
+ ALOGE("Camera %s: %s", mId.c_str(), errorCause.c_str());
// But only do error state transition steps for the first error
if (mStatus == STATUS_ERROR || mStatus == STATUS_UNINITIALIZED) return;
diff --git a/services/camera/libcameraservice/device3/Camera3OfflineSession.h b/services/camera/libcameraservice/device3/Camera3OfflineSession.h
index e780043..b5fd486 100644
--- a/services/camera/libcameraservice/device3/Camera3OfflineSession.h
+++ b/services/camera/libcameraservice/device3/Camera3OfflineSession.h
@@ -20,9 +20,6 @@
#include <memory>
#include <mutex>
-#include <utils/String8.h>
-#include <utils/String16.h>
-
#include <android/hardware/camera/device/3.6/ICameraOfflineSession.h>
#include <fmq/MessageQueue.h>
@@ -138,7 +135,7 @@
public:
// initialize by Camera3Device.
- explicit Camera3OfflineSession(const String8& id,
+ explicit Camera3OfflineSession(const std::string& id,
const sp<camera3::Camera3Stream>& inputStream,
const camera3::StreamSet& offlineStreamSet,
camera3::BufferRecords&& bufferRecords,
@@ -158,7 +155,7 @@
/**
* FrameProducer interface
*/
- const String8& getId() const override;
+ const std::string& getId() const override;
const CameraMetadata& info() const override;
status_t waitForNextFrame(nsecs_t timeout) override;
status_t getNextResult(CaptureResult *frame) override;
@@ -171,7 +168,7 @@
protected:
// Camera device ID
- const String8 mId;
+ const std::string mId;
sp<camera3::Camera3Stream> mInputStream;
camera3::StreamSet mOutputStreams;
camera3::BufferRecords mBufferRecords;
@@ -236,7 +233,7 @@
std::mutex mProcessCaptureResultLock;
// Tracking cause of fatal errors when in STATUS_ERROR
- String8 mErrorCause;
+ std::string mErrorCause;
// Lock to ensure requestStreamBuffers() callbacks are serialized
std::mutex mRequestBufferInterfaceLock;
diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
index 4268e61..290836c 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
@@ -30,6 +30,7 @@
#include <ui/GraphicBuffer.h>
#include <utils/Log.h>
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
#include <common/CameraDeviceBase.h>
#include "api1/client2/JpegProcessor.h"
@@ -52,7 +53,7 @@
sp<Surface> consumer,
uint32_t width, uint32_t height, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation,
- nsecs_t timestampOffset, const String8& physicalCameraId,
+ nsecs_t timestampOffset, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed, IPCTransport transport,
int setId, bool isMultiResolution, int64_t dynamicRangeProfile,
int64_t streamUseCase, bool deviceTimeBaseIsRealtime, int timestampBase,
@@ -87,7 +88,7 @@
sp<Surface> consumer,
uint32_t width, uint32_t height, size_t maxSize, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation,
- nsecs_t timestampOffset, const String8& physicalCameraId,
+ nsecs_t timestampOffset, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed, IPCTransport transport,
int setId, bool isMultiResolution, int64_t dynamicRangeProfile,
int64_t streamUseCase, bool deviceTimeBaseIsRealtime, int timestampBase,
@@ -127,7 +128,7 @@
uint32_t width, uint32_t height, int format,
uint64_t consumerUsage, android_dataspace dataSpace,
camera_stream_rotation_t rotation, nsecs_t timestampOffset,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed, IPCTransport transport,
int setId, bool isMultiResolution, int64_t dynamicRangeProfile,
int64_t streamUseCase, bool deviceTimeBaseIsRealtime, int timestampBase,
@@ -163,7 +164,7 @@
mState = STATE_ERROR;
}
- mConsumerName = String8("Deferred");
+ mConsumerName = "Deferred";
bool needsReleaseNotify = setId > CAMERA3_STREAM_SET_ID_INVALID;
mBufferProducerListener = new BufferProducerListener(this, needsReleaseNotify);
}
@@ -173,7 +174,7 @@
int format,
android_dataspace dataSpace,
camera_stream_rotation_t rotation,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
IPCTransport transport,
uint64_t consumerUsage, nsecs_t timestampOffset,
@@ -522,10 +523,10 @@
}
void Camera3OutputStream::dump(int fd, [[maybe_unused]] const Vector<String16> &args) const {
- String8 lines;
- lines.appendFormat(" Stream[%d]: Output\n", mId);
- lines.appendFormat(" Consumer name: %s\n", mConsumerName.string());
- write(fd, lines.string(), lines.size());
+ std::string lines;
+ lines += fmt::sprintf(" Stream[%d]: Output\n", mId);
+ lines += fmt::sprintf(" Consumer name: %s\n", mConsumerName);
+ write(fd, lines.c_str(), lines.size());
Camera3IOStreamBase::dump(fd, args);
@@ -709,7 +710,8 @@
// service. So update mMaxCachedBufferCount.
mMaxCachedBufferCount = 1;
mTotalBufferCount += mMaxCachedBufferCount;
- res = mPreviewFrameSpacer->run(String8::format("PreviewSpacer-%d", mId).string());
+ res = mPreviewFrameSpacer->run((std::string("PreviewSpacer-")
+ + std::to_string(mId)).c_str());
if (res != OK) {
ALOGE("%s: Unable to start preview spacer", __FUNCTION__);
return res;
@@ -1236,7 +1238,7 @@
return OK;
}
-const String8& Camera3OutputStream::getPhysicalCameraId() const {
+const std::string& Camera3OutputStream::getPhysicalCameraId() const {
Mutex::Autolock l(mLock);
return physicalCameraId();
}
@@ -1340,7 +1342,7 @@
// Output image data to file
std::string filePath = "/data/misc/cameraserver/";
filePath += imageFileName;
- std::ofstream imageFile(filePath.c_str(), std::ofstream::binary);
+ std::ofstream imageFile(filePath, std::ofstream::binary);
if (!imageFile.is_open()) {
ALOGE("%s: Unable to create file %s", __FUNCTION__, filePath.c_str());
graphicBuffer->unlock();
diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.h b/services/camera/libcameraservice/device3/Camera3OutputStream.h
index a719d6b..c44b842 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputStream.h
+++ b/services/camera/libcameraservice/device3/Camera3OutputStream.h
@@ -89,7 +89,7 @@
Camera3OutputStream(int id, sp<Surface> consumer,
uint32_t width, uint32_t height, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation,
- nsecs_t timestampOffset, const String8& physicalCameraId,
+ nsecs_t timestampOffset, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed, IPCTransport transport,
int setId = CAMERA3_STREAM_SET_ID_INVALID, bool isMultiResolution = false,
int64_t dynamicProfile = ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD,
@@ -106,7 +106,7 @@
Camera3OutputStream(int id, sp<Surface> consumer,
uint32_t width, uint32_t height, size_t maxSize, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation,
- nsecs_t timestampOffset, const String8& physicalCameraId,
+ nsecs_t timestampOffset, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed, IPCTransport transport,
int setId = CAMERA3_STREAM_SET_ID_INVALID, bool isMultiResolution = false,
int64_t dynamicProfile = ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD,
@@ -122,7 +122,7 @@
Camera3OutputStream(int id, uint32_t width, uint32_t height, int format,
uint64_t consumerUsage, android_dataspace dataSpace,
camera_stream_rotation_t rotation, nsecs_t timestampOffset,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed, IPCTransport transport,
int setId = CAMERA3_STREAM_SET_ID_INVALID, bool isMultiResolution = false,
int64_t dynamicProfile = ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD,
@@ -208,7 +208,7 @@
/**
* Query the physical camera id for the output stream.
*/
- virtual const String8& getPhysicalCameraId() const override;
+ virtual const std::string& getPhysicalCameraId() const override;
/**
* Set the graphic buffer manager to get/return the stream buffers.
@@ -270,7 +270,7 @@
Camera3OutputStream(int id, camera_stream_type_t type,
uint32_t width, uint32_t height, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed, IPCTransport transport,
uint64_t consumerUsage = 0, nsecs_t timestampOffset = 0,
int setId = CAMERA3_STREAM_SET_ID_INVALID, bool isMultiResolution = false,
@@ -319,7 +319,7 @@
bool mTraceFirstBuffer;
// Name of Surface consumer
- String8 mConsumerName;
+ std::string mConsumerName;
/**
* GraphicBuffer manager this stream is registered to. Used to replace the buffer
diff --git a/services/camera/libcameraservice/device3/Camera3OutputStreamInterface.h b/services/camera/libcameraservice/device3/Camera3OutputStreamInterface.h
index 4baa7e8..1ab8162 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputStreamInterface.h
+++ b/services/camera/libcameraservice/device3/Camera3OutputStreamInterface.h
@@ -94,7 +94,7 @@
/**
* Query the physical camera id for the output stream.
*/
- virtual const String8& getPhysicalCameraId() const = 0;
+ virtual const std::string& getPhysicalCameraId() const = 0;
/**
* Set the batch size for buffer operations. The output stream will request
diff --git a/services/camera/libcameraservice/device3/Camera3OutputUtils.cpp b/services/camera/libcameraservice/device3/Camera3OutputUtils.cpp
index 5021f29..f25137a 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputUtils.cpp
+++ b/services/camera/libcameraservice/device3/Camera3OutputUtils.cpp
@@ -43,6 +43,7 @@
#include <android/hardware/camera/device/3.5/ICameraDeviceSession.h>
#include <camera/CameraUtils.h>
+#include <camera/StringUtils.h>
#include <camera_metadata_hidden.h>
#include "device3/Camera3OutputUtils.h"
@@ -189,16 +190,16 @@
// and RotationAndCrop mappers.
std::set<uint32_t> keysToRemove;
- auto iter = states.distortionMappers.find(states.cameraId.c_str());
+ auto iter = states.distortionMappers.find(states.cameraId);
if (iter != states.distortionMappers.end()) {
const auto& remappedKeys = iter->second.getRemappedKeys();
keysToRemove.insert(remappedKeys.begin(), remappedKeys.end());
}
- const auto& remappedKeys = states.zoomRatioMappers[states.cameraId.c_str()].getRemappedKeys();
+ const auto& remappedKeys = states.zoomRatioMappers[states.cameraId].getRemappedKeys();
keysToRemove.insert(remappedKeys.begin(), remappedKeys.end());
- auto mapper = states.rotateAndCropMappers.find(states.cameraId.c_str());
+ auto mapper = states.rotateAndCropMappers.find(states.cameraId);
if (mapper != states.rotateAndCropMappers.end()) {
const auto& remappedKeys = iter->second.getRemappedKeys();
keysToRemove.insert(remappedKeys.begin(), remappedKeys.end());
@@ -282,14 +283,14 @@
physicalMetadata.mPhysicalCameraMetadata.find(ANDROID_SENSOR_TIMESTAMP);
if (timestamp.count == 0) {
SET_ERR("No timestamp provided by HAL for physical camera %s frame %d!",
- String8(physicalMetadata.mPhysicalCameraId).c_str(), frameNumber);
+ physicalMetadata.mPhysicalCameraId.c_str(), frameNumber);
return;
}
}
// Fix up some result metadata to account for HAL-level distortion correction
status_t res = OK;
- auto iter = states.distortionMappers.find(states.cameraId.c_str());
+ auto iter = states.distortionMappers.find(states.cameraId);
if (iter != states.distortionMappers.end()) {
res = iter->second.correctCaptureResult(&captureResult.mMetadata);
if (res != OK) {
@@ -301,8 +302,8 @@
// Fix up result metadata to account for zoom ratio availabilities between
// HAL and app.
- bool zoomRatioIs1 = cameraIdsWithZoom.find(states.cameraId.c_str()) == cameraIdsWithZoom.end();
- res = states.zoomRatioMappers[states.cameraId.c_str()].updateCaptureResult(
+ bool zoomRatioIs1 = cameraIdsWithZoom.find(states.cameraId) == cameraIdsWithZoom.end();
+ res = states.zoomRatioMappers[states.cameraId].updateCaptureResult(
&captureResult.mMetadata, zoomRatioIs1);
if (res != OK) {
SET_ERR("Failed to update capture result zoom ratio metadata for frame %d: %s (%d)",
@@ -312,7 +313,7 @@
// Fix up result metadata to account for rotateAndCrop in AUTO mode
if (rotateAndCropAuto) {
- auto mapper = states.rotateAndCropMappers.find(states.cameraId.c_str());
+ auto mapper = states.rotateAndCropMappers.find(states.cameraId);
if (mapper != states.rotateAndCropMappers.end()) {
res = mapper->second.updateCaptureResult(
&captureResult.mMetadata);
@@ -325,8 +326,8 @@
}
for (auto& physicalMetadata : captureResult.mPhysicalMetadatas) {
- String8 cameraId8(physicalMetadata.mPhysicalCameraId);
- auto mapper = states.distortionMappers.find(cameraId8.c_str());
+ const std::string cameraId = physicalMetadata.mPhysicalCameraId;
+ auto mapper = states.distortionMappers.find(cameraId);
if (mapper != states.distortionMappers.end()) {
res = mapper->second.correctCaptureResult(
&physicalMetadata.mPhysicalCameraMetadata);
@@ -337,12 +338,12 @@
}
}
- zoomRatioIs1 = cameraIdsWithZoom.find(cameraId8.c_str()) == cameraIdsWithZoom.end();
- res = states.zoomRatioMappers[cameraId8.c_str()].updateCaptureResult(
+ zoomRatioIs1 = cameraIdsWithZoom.find(cameraId) == cameraIdsWithZoom.end();
+ res = states.zoomRatioMappers[cameraId].updateCaptureResult(
&physicalMetadata.mPhysicalCameraMetadata, zoomRatioIs1);
if (res != OK) {
SET_ERR("Failed to update camera %s's physical zoom ratio metadata for "
- "frame %d: %s(%d)", cameraId8.c_str(), frameNumber, strerror(-res), res);
+ "frame %d: %s(%d)", cameraId.c_str(), frameNumber, strerror(-res), res);
return;
}
}
@@ -354,9 +355,9 @@
return;
}
for (auto& physicalMetadata : captureResult.mPhysicalMetadatas) {
- String8 cameraId8(physicalMetadata.mPhysicalCameraId);
+ const std::string &cameraId = physicalMetadata.mPhysicalCameraId;
res = fixupMonochromeTags(states,
- states.physicalDeviceInfoMap.at(cameraId8.c_str()),
+ states.physicalDeviceInfoMap.at(cameraId),
physicalMetadata.mPhysicalCameraMetadata);
if (res != OK) {
SET_ERR("Failed to override result metadata: %s (%d)", strerror(-res), res);
@@ -366,7 +367,7 @@
std::unordered_map<std::string, CameraMetadata> monitoredPhysicalMetadata;
for (auto& m : physicalMetadatas) {
- monitoredPhysicalMetadata.emplace(String8(m.mPhysicalCameraId).string(),
+ monitoredPhysicalMetadata.emplace(m.mPhysicalCameraId,
CameraMetadata(m.mPhysicalCameraMetadata));
}
states.tagMonitor.monitorMetadata(TagMonitor::RESULT,
@@ -452,7 +453,7 @@
// Erase the subset of physicalCameraIds that contains id
bool erasePhysicalCameraIdSet(
- std::set<std::set<String8>>& physicalCameraIds, const String8& id) {
+ std::set<std::set<std::string>>& physicalCameraIds, const std::string& id) {
bool found = false;
for (auto iter = physicalCameraIds.begin(); iter != physicalCameraIds.end(); iter++) {
if (iter->count(id) == 1) {
@@ -610,7 +611,7 @@
return;
}
for (uint32_t i = 0; i < result->num_physcam_metadata; i++) {
- String8 physicalId(result->physcam_ids[i]);
+ const std::string physicalId = result->physcam_ids[i];
bool validPhysicalCameraMetadata =
erasePhysicalCameraIdSet(request.physicalCameraIds, physicalId);
if (!validPhysicalCameraMetadata) {
@@ -666,7 +667,7 @@
for (uint32_t i = 0; i < result->num_physcam_metadata; i++) {
CameraMetadata physicalMetadata;
physicalMetadata.append(result->physcam_metadata[i]);
- request.physicalMetadatas.push_back({String16(result->physcam_ids[i]),
+ request.physicalMetadatas.push_back({result->physcam_ids[i],
physicalMetadata});
}
if (shutterTimestamp == 0) {
@@ -892,7 +893,7 @@
}
if (r.hasCallback) {
ALOGVV("Camera %s: %s: Shutter fired for frame %d (id %d) at %" PRId64,
- states.cameraId.string(), __FUNCTION__,
+ states.cameraId.c_str(), __FUNCTION__,
msg.frame_number, r.resultExtras.requestId, msg.timestamp);
// Call listener, if any
if (states.listener != nullptr) {
@@ -947,15 +948,15 @@
hardware::camera2::ICameraDeviceCallbacks::ERROR_CAMERA_INVALID_ERROR;
int streamId = 0;
- String16 physicalCameraId;
+ std::string physicalCameraId;
if (msg.error_stream != nullptr) {
Camera3Stream *stream =
Camera3Stream::cast(msg.error_stream);
streamId = stream->getId();
- physicalCameraId = String16(stream->physicalCameraId());
+ physicalCameraId = stream->physicalCameraId();
}
ALOGV("Camera %s: %s: HAL error, frame %d, stream %d: %d",
- states.cameraId.string(), __FUNCTION__, msg.frame_number,
+ states.cameraId.c_str(), __FUNCTION__, msg.frame_number,
streamId, msg.error_code);
CaptureResultExtras resultExtras;
@@ -977,13 +978,12 @@
if (hardware::camera2::ICameraDeviceCallbacks::ERROR_CAMERA_RESULT ==
errorCode) {
if (physicalCameraId.size() > 0) {
- String8 cameraId(physicalCameraId);
bool validPhysicalCameraId =
- erasePhysicalCameraIdSet(r.physicalCameraIds, cameraId);
+ erasePhysicalCameraIdSet(r.physicalCameraIds, physicalCameraId);
if (!validPhysicalCameraId) {
ALOGE("%s: Reported result failure for physical camera device: %s "
" which is not part of the respective request!",
- __FUNCTION__, cameraId.string());
+ __FUNCTION__, physicalCameraId.c_str());
break;
}
resultExtras.errorPhysicalCameraId = physicalCameraId;
@@ -1008,7 +1008,7 @@
} else {
resultExtras.frameNumber = msg.frame_number;
ALOGE("Camera %s: %s: cannot find in-flight request on "
- "frame %" PRId64 " error", states.cameraId.string(), __FUNCTION__,
+ "frame %" PRId64 " error", states.cameraId.c_str(), __FUNCTION__,
resultExtras.frameNumber);
}
}
@@ -1017,7 +1017,7 @@
states.listener->notifyError(errorCode, resultExtras);
} else {
ALOGE("Camera %s: %s: no listener available",
- states.cameraId.string(), __FUNCTION__);
+ states.cameraId.c_str(), __FUNCTION__);
}
break;
case hardware::camera2::ICameraDeviceCallbacks::ERROR_CAMERA_BUFFER:
diff --git a/services/camera/libcameraservice/device3/Camera3OutputUtils.h b/services/camera/libcameraservice/device3/Camera3OutputUtils.h
index d5328c5..134c037 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputUtils.h
+++ b/services/camera/libcameraservice/device3/Camera3OutputUtils.h
@@ -71,7 +71,7 @@
// Camera3Device/Camera3OfflineSession internal states used in notify/processCaptureResult
// callbacks
struct CaptureOutputStates {
- const String8& cameraId;
+ const std::string& cameraId;
std::mutex& inflightLock;
int64_t& lastCompletedRegularFrameNumber;
int64_t& lastCompletedReprocessFrameNumber;
@@ -115,7 +115,7 @@
void notify(CaptureOutputStates& states, const camera_notify_msg *msg);
struct RequestBufferStates {
- const String8& cameraId;
+ const std::string& cameraId;
std::mutex& reqBufferLock; // lock to serialize request buffer calls
const bool useHalBufManager;
StreamSet& outputStreams;
@@ -126,7 +126,7 @@
};
struct ReturnBufferStates {
- const String8& cameraId;
+ const std::string& cameraId;
const bool useHalBufManager;
StreamSet& outputStreams;
SessionStatsBuilder& sessionStatsBuilder;
@@ -134,7 +134,7 @@
};
struct FlushInflightReqStates {
- const String8& cameraId;
+ const std::string& cameraId;
std::mutex& inflightLock;
InFlightRequestMap& inflightMap; // end of inflightLock scope
const bool useHalBufManager;
diff --git a/services/camera/libcameraservice/device3/Camera3OutputUtilsTemplated.h b/services/camera/libcameraservice/device3/Camera3OutputUtilsTemplated.h
index 2e05dda..3ac666b 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputUtilsTemplated.h
+++ b/services/camera/libcameraservice/device3/Camera3OutputUtilsTemplated.h
@@ -296,7 +296,7 @@
const VecStreamBufferType& buffers) {
if (!states.useHalBufManager) {
ALOGE("%s: Camera %s does not support HAL buffer managerment",
- __FUNCTION__, states.cameraId.string());
+ __FUNCTION__, states.cameraId.c_str());
return;
}
diff --git a/services/camera/libcameraservice/device3/Camera3SharedOutputStream.cpp b/services/camera/libcameraservice/device3/Camera3SharedOutputStream.cpp
index 9215f23..64810d4 100644
--- a/services/camera/libcameraservice/device3/Camera3SharedOutputStream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3SharedOutputStream.cpp
@@ -31,7 +31,7 @@
uint32_t width, uint32_t height, int format,
uint64_t consumerUsage, android_dataspace dataSpace,
camera_stream_rotation_t rotation,
- nsecs_t timestampOffset, const String8& physicalCameraId,
+ nsecs_t timestampOffset, const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed, IPCTransport transport,
int setId, bool useHalBufManager, int64_t dynamicProfile,
int64_t streamUseCase, bool deviceTimeBaseIsRealtime, int timestampBase,
diff --git a/services/camera/libcameraservice/device3/Camera3SharedOutputStream.h b/services/camera/libcameraservice/device3/Camera3SharedOutputStream.h
index aac3c2a..0caa90b 100644
--- a/services/camera/libcameraservice/device3/Camera3SharedOutputStream.h
+++ b/services/camera/libcameraservice/device3/Camera3SharedOutputStream.h
@@ -37,7 +37,7 @@
uint32_t width, uint32_t height, int format,
uint64_t consumerUsage, android_dataspace dataSpace,
camera_stream_rotation_t rotation, nsecs_t timestampOffset,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed, IPCTransport transport,
int setId = CAMERA3_STREAM_SET_ID_INVALID,
bool useHalBufManager = false,
diff --git a/services/camera/libcameraservice/device3/Camera3Stream.cpp b/services/camera/libcameraservice/device3/Camera3Stream.cpp
index 2c21e7e..27269a6 100644
--- a/services/camera/libcameraservice/device3/Camera3Stream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Stream.cpp
@@ -22,6 +22,7 @@
#include <utils/Log.h>
#include <utils/Trace.h>
+#include <camera/StringUtils.h>
#include "device3/Camera3Stream.h"
#include "device3/StatusTracker.h"
#include "utils/TraceHFR.h"
@@ -52,14 +53,14 @@
camera_stream_type type,
uint32_t width, uint32_t height, size_t maxSize, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
int setId, bool isMultiResolution, int64_t dynamicRangeProfile,
int64_t streamUseCase, bool deviceTimeBaseIsRealtime, int timestampBase) :
camera_stream(),
mId(id),
mSetId(setId),
- mName(String8::format("Camera3Stream[%d]", id)),
+ mName(fmt::sprintf("Camera3Stream[%d]", id)),
mMaxSize(maxSize),
mState(STATE_CONSTRUCTED),
mStatusId(StatusTracker::NO_STATUS_ID),
@@ -91,7 +92,7 @@
camera_stream::data_space = dataSpace;
camera_stream::rotation = rotation;
camera_stream::max_buffers = 0;
- camera_stream::physical_camera_id = mPhysicalCameraId.string();
+ camera_stream::physical_camera_id = mPhysicalCameraId;
camera_stream::sensor_pixel_modes_used = sensorPixelModesUsed;
camera_stream::dynamic_range_profile = dynamicRangeProfile;
camera_stream::use_case = streamUseCase;
@@ -171,7 +172,7 @@
return mOriginalDataSpace;
}
-const String8& Camera3Stream::physicalCameraId() const {
+const std::string& Camera3Stream::physicalCameraId() const {
return mPhysicalCameraId;
}
@@ -370,7 +371,7 @@
sp<StatusTracker> statusTracker = mStatusTracker.promote();
if (statusTracker != 0 && mStatusId == StatusTracker::NO_STATUS_ID) {
std::string name = std::string("Stream ") + std::to_string(mId);
- mStatusId = statusTracker->addComponent(name.c_str());
+ mStatusId = statusTracker->addComponent(name);
}
// Check if the stream configuration is unchanged, and skip reallocation if
diff --git a/services/camera/libcameraservice/device3/Camera3Stream.h b/services/camera/libcameraservice/device3/Camera3Stream.h
index 214618a..e451fa4 100644
--- a/services/camera/libcameraservice/device3/Camera3Stream.h
+++ b/services/camera/libcameraservice/device3/Camera3Stream.h
@@ -19,7 +19,6 @@
#include <gui/Surface.h>
#include <utils/RefBase.h>
-#include <utils/String8.h>
#include <utils/String16.h>
#include <utils/List.h>
@@ -163,24 +162,24 @@
/**
* Get the stream's dimensions and format
*/
- uint32_t getWidth() const;
- uint32_t getHeight() const;
- int getFormat() const;
- android_dataspace getDataSpace() const;
- uint64_t getUsage() const;
- void setUsage(uint64_t usage);
- void setFormatOverride(bool formatOverriden);
- bool isFormatOverridden() const;
- int getOriginalFormat() const;
- int64_t getDynamicRangeProfile() const;
- void setDataSpaceOverride(bool dataSpaceOverriden);
- bool isDataSpaceOverridden() const;
- android_dataspace getOriginalDataSpace() const;
- int getMaxHalBuffers() const;
- const String8& physicalCameraId() const;
- int64_t getStreamUseCase() const;
- int getTimestampBase() const;
- bool isDeviceTimeBaseRealtime() const;
+ uint32_t getWidth() const;
+ uint32_t getHeight() const;
+ int getFormat() const;
+ android_dataspace getDataSpace() const;
+ uint64_t getUsage() const;
+ void setUsage(uint64_t usage);
+ void setFormatOverride(bool formatOverridden);
+ bool isFormatOverridden() const;
+ int getOriginalFormat() const;
+ int64_t getDynamicRangeProfile() const;
+ void setDataSpaceOverride(bool dataSpaceOverridden);
+ bool isDataSpaceOverridden() const;
+ android_dataspace getOriginalDataSpace() const;
+ int getMaxHalBuffers() const;
+ const std::string& physicalCameraId() const;
+ int64_t getStreamUseCase() const;
+ int getTimestampBase() const;
+ bool isDeviceTimeBaseRealtime() const;
void setOfflineProcessingSupport(bool) override;
bool getOfflineProcessingSupport() const override;
@@ -486,7 +485,7 @@
*/
const int mSetId;
- const String8 mName;
+ const std::string mName;
// Zero for formats with fixed buffer size for given dimensions.
const size_t mMaxSize;
@@ -506,7 +505,7 @@
Camera3Stream(int id, camera_stream_type type,
uint32_t width, uint32_t height, size_t maxSize, int format,
android_dataspace dataSpace, camera_stream_rotation_t rotation,
- const String8& physicalCameraId,
+ const std::string& physicalCameraId,
const std::unordered_set<int32_t> &sensorPixelModesUsed,
int setId, bool isMultiResolution, int64_t dynamicRangeProfile,
int64_t streamUseCase, bool deviceTimeBaseIsRealtime, int timestampBase);
@@ -632,7 +631,7 @@
bool mDataSpaceOverridden;
const android_dataspace mOriginalDataSpace;
- String8 mPhysicalCameraId;
+ std::string mPhysicalCameraId;
nsecs_t mLastTimestamp;
bool mIsMultiResolution = false;
diff --git a/services/camera/libcameraservice/device3/Camera3StreamInterface.h b/services/camera/libcameraservice/device3/Camera3StreamInterface.h
index 6812e89..d715306 100644
--- a/services/camera/libcameraservice/device3/Camera3StreamInterface.h
+++ b/services/camera/libcameraservice/device3/Camera3StreamInterface.h
@@ -62,7 +62,7 @@
uint32_t max_buffers;
android_dataspace_t data_space;
camera_stream_rotation_t rotation;
- const char* physical_camera_id;
+ std::string physical_camera_id;
std::unordered_set<int32_t> sensor_pixel_modes_used;
int64_t dynamic_range_profile;
diff --git a/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp b/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp
index fd23958..8175eb5 100644
--- a/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp
+++ b/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp
@@ -25,6 +25,7 @@
#include <gui/IGraphicBufferProducer.h>
#include <gui/BufferQueue.h>
#include <gui/Surface.h>
+#include <camera/StringUtils.h>
#include <ui/GraphicBuffer.h>
@@ -92,7 +93,7 @@
if (mBufferItemConsumer == nullptr) {
return NO_MEMORY;
}
- mConsumer->setConsumerName(mConsumerName);
+ mConsumer->setConsumerName(toString8(mConsumerName));
*consumer = new Surface(mProducer);
if (*consumer == nullptr) {
@@ -408,9 +409,9 @@
return res;
}
-String8 Camera3StreamSplitter::getUniqueConsumerName() {
+std::string Camera3StreamSplitter::getUniqueConsumerName() {
static volatile int32_t counter = 0;
- return String8::format("Camera3StreamSplitter-%d", android_atomic_inc(&counter));
+ return fmt::sprintf("Camera3StreamSplitter-%d", android_atomic_inc(&counter));
}
status_t Camera3StreamSplitter::notifyBufferReleased(const sp<GraphicBuffer>& buffer) {
diff --git a/services/camera/libcameraservice/device3/Camera3StreamSplitter.h b/services/camera/libcameraservice/device3/Camera3StreamSplitter.h
index 0f728a0..639353c 100644
--- a/services/camera/libcameraservice/device3/Camera3StreamSplitter.h
+++ b/services/camera/libcameraservice/device3/Camera3StreamSplitter.h
@@ -30,10 +30,10 @@
#include <utils/StrongPointer.h>
#include <utils/Timers.h>
-#define SP_LOGV(x, ...) ALOGV("[%s] " x, mConsumerName.string(), ##__VA_ARGS__)
-#define SP_LOGI(x, ...) ALOGI("[%s] " x, mConsumerName.string(), ##__VA_ARGS__)
-#define SP_LOGW(x, ...) ALOGW("[%s] " x, mConsumerName.string(), ##__VA_ARGS__)
-#define SP_LOGE(x, ...) ALOGE("[%s] " x, mConsumerName.string(), ##__VA_ARGS__)
+#define SP_LOGV(x, ...) ALOGV("[%s] " x, mConsumerName.c_str(), ##__VA_ARGS__)
+#define SP_LOGI(x, ...) ALOGI("[%s] " x, mConsumerName.c_str(), ##__VA_ARGS__)
+#define SP_LOGW(x, ...) ALOGW("[%s] " x, mConsumerName.c_str(), ##__VA_ARGS__)
+#define SP_LOGE(x, ...) ALOGE("[%s] " x, mConsumerName.c_str(), ##__VA_ARGS__)
namespace android {
@@ -222,7 +222,7 @@
const BufferItem& bufferItem, size_t surfaceId);
// Get unique name for the buffer queue consumer
- String8 getUniqueConsumerName();
+ std::string getUniqueConsumerName();
// Helper function to get the BufferQueue slot where a particular buffer is attached to.
int getSlotForOutputLocked(const sp<IGraphicBufferProducer>& gbp,
@@ -289,7 +289,7 @@
// Currently acquired input buffers
size_t mAcquiredInputBuffers;
- String8 mConsumerName;
+ std::string mConsumerName;
const bool mUseHalBufManager;
};
diff --git a/services/camera/libcameraservice/device3/InFlightRequest.h b/services/camera/libcameraservice/device3/InFlightRequest.h
index 444445b..4c19349 100644
--- a/services/camera/libcameraservice/device3/InFlightRequest.h
+++ b/services/camera/libcameraservice/device3/InFlightRequest.h
@@ -21,7 +21,6 @@
#include <camera/CaptureResult.h>
#include <camera/CameraMetadata.h>
-#include <utils/String8.h>
#include <utils/Timers.h>
#include "common/CameraDeviceBase.h"
@@ -168,7 +167,7 @@
// For request on a physical camera stream, the inside set contains one Id
// For request on a stream group containing physical camera streams, the
// inside set contains all stream Ids in the group.
- std::set<std::set<String8>> physicalCameraIds;
+ std::set<std::set<std::string>> physicalCameraIds;
// Map of physicalCameraId <-> Metadata
std::vector<PhysicalCaptureResultInfo> physicalMetadatas;
@@ -220,7 +219,7 @@
InFlightRequest(int numBuffers, CaptureResultExtras extras, bool hasInput,
bool hasAppCallback, nsecs_t minDuration, nsecs_t maxDuration, bool fixedFps,
- const std::set<std::set<String8>>& physicalCameraIdSet, bool isStillCapture,
+ const std::set<std::set<std::string>>& physicalCameraIdSet, bool isStillCapture,
bool isZslCapture, bool rotateAndCropAuto, const std::set<std::string>& idsWithZoom,
nsecs_t requestNs, const SurfaceMap& outSurfaces = SurfaceMap{}) :
shutterTimestamp(0),
diff --git a/services/camera/libcameraservice/device3/aidl/AidlCamera3Device.cpp b/services/camera/libcameraservice/device3/aidl/AidlCamera3Device.cpp
index 1bc9ef2..1f9313e 100644
--- a/services/camera/libcameraservice/device3/aidl/AidlCamera3Device.cpp
+++ b/services/camera/libcameraservice/device3/aidl/AidlCamera3Device.cpp
@@ -26,10 +26,10 @@
#endif
// Convenience macro for transient errors
-#define CLOGE(fmt, ...) ALOGE("Camera %s: %s: " fmt, mId.string(), __FUNCTION__, \
+#define CLOGE(fmt, ...) ALOGE("Camera %s: %s: " fmt, mId.c_str(), __FUNCTION__, \
##__VA_ARGS__)
-#define CLOGW(fmt, ...) ALOGW("Camera %s: %s: " fmt, mId.string(), __FUNCTION__, \
+#define CLOGW(fmt, ...) ALOGW("Camera %s: %s: " fmt, mId.c_str(), __FUNCTION__, \
##__VA_ARGS__)
// Convenience macros for transitioning to the error state
@@ -53,6 +53,7 @@
#include <aidlcommonsupport/NativeHandle.h>
#include <android/binder_ibinder_platform.h>
#include <android/hardware/camera2/ICameraDeviceUser.h>
+#include <camera/StringUtils.h>
#include "utils/CameraTraces.h"
#include "mediautils/SchedulingPolicyService.h"
@@ -162,19 +163,19 @@
return (uint64_t)usage;
}
-AidlCamera3Device::AidlCamera3Device(const String8& id, bool overrideForPerfClass,
+AidlCamera3Device::AidlCamera3Device(const std::string& id, bool overrideForPerfClass,
bool overrideToPortrait, bool legacyClient) :
Camera3Device(id, overrideForPerfClass, overrideToPortrait, legacyClient) {
mCallbacks = ndk::SharedRefBase::make<AidlCameraDeviceCallbacks>(this);
}
status_t AidlCamera3Device::initialize(sp<CameraProviderManager> manager,
- const String8& monitorTags) {
+ const std::string& monitorTags) {
ATRACE_CALL();
Mutex::Autolock il(mInterfaceLock);
Mutex::Autolock l(mLock);
- ALOGV("%s: Initializing AIDL device for camera %s", __FUNCTION__, mId.string());
+ ALOGV("%s: Initializing AIDL device for camera %s", __FUNCTION__, mId.c_str());
if (mStatus != STATUS_UNINITIALIZED) {
CLOGE("Already initialized!");
return INVALID_OPERATION;
@@ -183,7 +184,7 @@
std::shared_ptr<camera::device::ICameraDeviceSession> session;
ATRACE_BEGIN("CameraHal::openSession");
- status_t res = manager->openAidlSession(mId.string(), mCallbacks,
+ status_t res = manager->openAidlSession(mId, mCallbacks,
/*out*/ &session);
ATRACE_END();
if (res != OK) {
@@ -194,17 +195,17 @@
SET_ERR("Session iface returned is null");
return INVALID_OPERATION;
}
- res = manager->getCameraCharacteristics(mId.string(), mOverrideForPerfClass, &mDeviceInfo,
+ res = manager->getCameraCharacteristics(mId, mOverrideForPerfClass, &mDeviceInfo,
mOverrideToPortrait);
if (res != OK) {
SET_ERR_L("Could not retrieve camera characteristics: %s (%d)", strerror(-res), res);
session->close();
return res;
}
- mSupportNativeZoomRatio = manager->supportNativeZoomRatio(mId.string());
+ mSupportNativeZoomRatio = manager->supportNativeZoomRatio(mId);
std::vector<std::string> physicalCameraIds;
- bool isLogical = manager->isLogicalCamera(mId.string(), &physicalCameraIds);
+ bool isLogical = manager->isLogicalCamera(mId, &physicalCameraIds);
if (isLogical) {
for (auto& physicalId : physicalCameraIds) {
// Do not override characteristics for physical cameras
@@ -295,10 +296,10 @@
mInterface = new AidlHalInterface(session, queue, mUseHalBufManager, mSupportOfflineProcessing);
std::string providerType;
- mVendorTagId = manager->getProviderTagIdLocked(mId.string());
+ mVendorTagId = manager->getProviderTagIdLocked(mId);
mTagMonitor.initialize(mVendorTagId);
- if (!monitorTags.isEmpty()) {
- mTagMonitor.parseTagsToMonitor(String8(monitorTags));
+ if (!monitorTags.empty()) {
+ mTagMonitor.parseTagsToMonitor(monitorTags);
}
for (size_t i = 0; i < capabilities.count; i++) {
@@ -916,7 +917,7 @@
cam3stream->getOriginalDataSpace() : src->data_space);
dst.bufferSize = bufferSizes[i];
- if (src->physical_camera_id != nullptr) {
+ if (!src->physical_camera_id.empty()) {
dst.physicalCameraId = src->physical_camera_id;
}
dst.groupId = cam3stream->getHalStreamGroupId();
@@ -1093,7 +1094,7 @@
mapToAidlDataspace(cam3stream->isDataSpaceOverridden() ?
cam3stream->getOriginalDataSpace() : src->data_space);
dst.bufferSize = bufferSizes[i];
- if (src->physical_camera_id != nullptr) {
+ if (!src->physical_camera_id.empty()) {
dst.physicalCameraId = src->physical_camera_id;
}
dst.groupId = cam3stream->getHalStreamGroupId();
@@ -1448,7 +1449,7 @@
}
status_t AidlCamera3Device::AidlCamera3DeviceInjectionMethods::injectionInitialize(
- const String8& injectedCamId, sp<CameraProviderManager> manager,
+ const std::string& injectedCamId, sp<CameraProviderManager> manager,
const std::shared_ptr<camera::device::ICameraDeviceCallback>&callback) {
ATRACE_CALL();
Mutex::Autolock lock(mInjectionLock);
@@ -1472,7 +1473,7 @@
mInjectedCamId = injectedCamId;
std::shared_ptr<camera::device::ICameraInjectionSession> injectionSession;
ATRACE_BEGIN("Injection CameraHal::openSession");
- status_t res = manager->openAidlInjectionSession(injectedCamId.string(), callback,
+ status_t res = manager->openAidlInjectionSession(injectedCamId, callback,
/*out*/ &injectionSession);
ATRACE_END();
if (res != OK) {
@@ -1571,7 +1572,7 @@
return OK;
}
-status_t AidlCamera3Device::injectionCameraInitialize(const String8 &injectedCamId,
+status_t AidlCamera3Device::injectionCameraInitialize(const std::string &injectedCamId,
sp<CameraProviderManager> manager) {
return (static_cast<AidlCamera3DeviceInjectionMethods *>
(mInjectionMethods.get()))->injectionInitialize(injectedCamId, manager,
diff --git a/services/camera/libcameraservice/device3/aidl/AidlCamera3Device.h b/services/camera/libcameraservice/device3/aidl/AidlCamera3Device.h
index 630985f..f4554d4 100644
--- a/services/camera/libcameraservice/device3/aidl/AidlCamera3Device.h
+++ b/services/camera/libcameraservice/device3/aidl/AidlCamera3Device.h
@@ -39,7 +39,7 @@
using AidlRequestMetadataQueue = AidlMessageQueue<int8_t, SynchronizedReadWrite>;
class AidlCameraDeviceCallbacks;
friend class AidlCameraDeviceCallbacks;
- explicit AidlCamera3Device(const String8& id, bool overrideForPerfClass, bool overrideToPortrait,
+ explicit AidlCamera3Device(const std::string& id, bool overrideForPerfClass, bool overrideToPortrait,
bool legacyClient = false);
virtual ~AidlCamera3Device() { }
@@ -69,7 +69,7 @@
virtual status_t switchToOffline(const std::vector<int32_t>& /*streamsToKeep*/,
/*out*/ sp<CameraOfflineSessionBase>* /*session*/) override;
- status_t initialize(sp<CameraProviderManager> manager, const String8& monitorTags) override;
+ status_t initialize(sp<CameraProviderManager> manager, const std::string& monitorTags) override;
class AidlHalInterface : public Camera3Device::HalInterface {
public:
AidlHalInterface(std::shared_ptr<
@@ -191,7 +191,7 @@
public:
// Initialize the injection camera and generate an hal interface.
status_t injectionInitialize(
- const String8& injectedCamId, sp<CameraProviderManager> manager,
+ const std::string& injectedCamId, sp<CameraProviderManager> manager,
const std::shared_ptr<
aidl::android::hardware::camera::device::ICameraDeviceCallback>&
callback);
@@ -252,7 +252,7 @@
};
private:
- virtual status_t injectionCameraInitialize(const String8 &injectCamId,
+ virtual status_t injectionCameraInitialize(const std::string &injectCamId,
sp<CameraProviderManager> manager) override;
virtual sp<RequestThread> createNewRequestThread(wp<Camera3Device> parent,
diff --git a/services/camera/libcameraservice/device3/aidl/AidlCamera3OfflineSession.cpp b/services/camera/libcameraservice/device3/aidl/AidlCamera3OfflineSession.cpp
index 3c3db97..01c4e88 100644
--- a/services/camera/libcameraservice/device3/aidl/AidlCamera3OfflineSession.cpp
+++ b/services/camera/libcameraservice/device3/aidl/AidlCamera3OfflineSession.cpp
@@ -31,6 +31,7 @@
#include <android/hardware/camera2/ICameraDeviceCallbacks.h>
#include <android/binder_ibinder_platform.h>
+#include <camera/StringUtils.h>
#include "device3/aidl/AidlCamera3OfflineSession.h"
#include "device3/Camera3OutputStream.h"
@@ -47,7 +48,7 @@
AidlCamera3OfflineSession::~AidlCamera3OfflineSession() {
ATRACE_CALL();
- ALOGV("%s: Tearing down aidl offline session for camera id %s", __FUNCTION__, mId.string());
+ ALOGV("%s: Tearing down aidl offline session for camera id %s", __FUNCTION__, mId.c_str());
Camera3OfflineSession::disconnectImpl();
}
@@ -113,7 +114,7 @@
std::string activePhysicalId(""); // Unused
AidlCaptureOutputStates states {
- {mId,
+ { mId,
mOfflineReqsLock, mLastCompletedRegularFrameNumber,
mLastCompletedReprocessFrameNumber, mLastCompletedZslFrameNumber,
mOfflineReqs, mOutputLock, mResultQueue, mResultSignal,
@@ -160,7 +161,7 @@
std::string activePhysicalId(""); // Unused
AidlCaptureOutputStates states {
- {mId,
+ { mId,
mOfflineReqsLock, mLastCompletedRegularFrameNumber,
mLastCompletedReprocessFrameNumber, mLastCompletedZslFrameNumber,
mOfflineReqs, mOutputLock, mResultQueue, mResultSignal,
diff --git a/services/camera/libcameraservice/device3/aidl/AidlCamera3OfflineSession.h b/services/camera/libcameraservice/device3/aidl/AidlCamera3OfflineSession.h
index b31ffb7..33b638c 100644
--- a/services/camera/libcameraservice/device3/aidl/AidlCamera3OfflineSession.h
+++ b/services/camera/libcameraservice/device3/aidl/AidlCamera3OfflineSession.h
@@ -20,7 +20,6 @@
#include <memory>
#include <mutex>
-#include <utils/String8.h>
#include <utils/String16.h>
#include "AidlCamera3OutputUtils.h"
@@ -106,7 +105,7 @@
};
// initialize by Camera3Device.
- explicit AidlCamera3OfflineSession(const String8& id,
+ explicit AidlCamera3OfflineSession(const std::string& id,
const sp<camera3::Camera3Stream>& inputStream,
const camera3::StreamSet& offlineStreamSet,
camera3::BufferRecords&& bufferRecords,
diff --git a/services/camera/libcameraservice/device3/aidl/AidlCamera3OutputUtils.cpp b/services/camera/libcameraservice/device3/aidl/AidlCamera3OutputUtils.cpp
index b2accc1..74d4230 100644
--- a/services/camera/libcameraservice/device3/aidl/AidlCamera3OutputUtils.cpp
+++ b/services/camera/libcameraservice/device3/aidl/AidlCamera3OutputUtils.cpp
@@ -145,7 +145,7 @@
outBuffers->clear();
if (!states.useHalBufManager) {
ALOGE("%s: Camera %s does not support HAL buffer management",
- __FUNCTION__, states.cameraId.string());
+ __FUNCTION__, states.cameraId.c_str());
*status = BufferRequestStatus::FAILED_ILLEGAL_ARGUMENTS;
return;
}
diff --git a/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.cpp b/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.cpp
index c675c63..c22aad6 100644
--- a/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.cpp
+++ b/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.cpp
@@ -26,7 +26,7 @@
#endif
// Convenience macro for transient errors
-#define CLOGE(fmt, ...) ALOGE("Camera %s: %s: " fmt, mId.string(), __FUNCTION__, \
+#define CLOGE(fmt, ...) ALOGE("Camera %s: %s: " fmt, mId.c_str(), __FUNCTION__, \
##__VA_ARGS__)
// Convenience macros for transitioning to the error state
@@ -46,6 +46,7 @@
#include <utils/Trace.h>
#include <utils/Timers.h>
#include <cutils/properties.h>
+#include <camera/StringUtils.h>
#include <android/hardware/camera/device/3.7/ICameraInjectionSession.h>
#include <android/hardware/camera2/ICameraDeviceUser.h>
@@ -140,12 +141,12 @@
}
status_t HidlCamera3Device::initialize(sp<CameraProviderManager> manager,
- const String8& monitorTags) {
+ const std::string& monitorTags) {
ATRACE_CALL();
Mutex::Autolock il(mInterfaceLock);
Mutex::Autolock l(mLock);
- ALOGV("%s: Initializing HIDL device for camera %s", __FUNCTION__, mId.string());
+ ALOGV("%s: Initializing HIDL device for camera %s", __FUNCTION__, mId.c_str());
if (mStatus != STATUS_UNINITIALIZED) {
CLOGE("Already initialized!");
return INVALID_OPERATION;
@@ -154,7 +155,7 @@
sp<ICameraDeviceSession> session;
ATRACE_BEGIN("CameraHal::openSession");
- status_t res = manager->openHidlSession(mId.string(), this,
+ status_t res = manager->openHidlSession(mId, this,
/*out*/ &session);
ATRACE_END();
if (res != OK) {
@@ -162,17 +163,17 @@
return res;
}
- res = manager->getCameraCharacteristics(mId.string(), mOverrideForPerfClass, &mDeviceInfo,
+ res = manager->getCameraCharacteristics(mId, mOverrideForPerfClass, &mDeviceInfo,
/*overrideToPortrait*/false);
if (res != OK) {
SET_ERR_L("Could not retrieve camera characteristics: %s (%d)", strerror(-res), res);
session->close();
return res;
}
- mSupportNativeZoomRatio = manager->supportNativeZoomRatio(mId.string());
+ mSupportNativeZoomRatio = manager->supportNativeZoomRatio(mId);
std::vector<std::string> physicalCameraIds;
- bool isLogical = manager->isLogicalCamera(mId.string(), &physicalCameraIds);
+ bool isLogical = manager->isLogicalCamera(mId, &physicalCameraIds);
if (isLogical) {
for (auto& physicalId : physicalCameraIds) {
// Do not override characteristics for physical cameras
@@ -271,17 +272,17 @@
mInterface = new HidlHalInterface(session, queue, mUseHalBufManager, mSupportOfflineProcessing);
std::string providerType;
- mVendorTagId = manager->getProviderTagIdLocked(mId.string());
+ mVendorTagId = manager->getProviderTagIdLocked(mId);
mTagMonitor.initialize(mVendorTagId);
- if (!monitorTags.isEmpty()) {
- mTagMonitor.parseTagsToMonitor(String8(monitorTags));
+ if (!monitorTags.empty()) {
+ mTagMonitor.parseTagsToMonitor(monitorTags);
}
// Metadata tags needs fixup for monochrome camera device version less
// than 3.5.
hardware::hidl_version maxVersion{0,0};
IPCTransport transport = IPCTransport::HIDL;
- res = manager->getHighestSupportedVersion(mId.string(), &maxVersion, &transport);
+ res = manager->getHighestSupportedVersion(mId, &maxVersion, &transport);
if (res != OK) {
ALOGE("%s: Error in getting camera device version id: %s (%d)",
__FUNCTION__, strerror(-res), res);
@@ -416,7 +417,7 @@
}
HidlCaptureOutputStates states {
- {mId,
+ { mId,
mInFlightLock, mLastCompletedRegularFrameNumber,
mLastCompletedReprocessFrameNumber, mLastCompletedZslFrameNumber,
mInFlightMap, mOutputLock, mResultQueue, mResultSignal,
@@ -464,7 +465,7 @@
}
HidlCaptureOutputStates states {
- {mId,
+ { mId,
mInFlightLock, mLastCompletedRegularFrameNumber,
mLastCompletedReprocessFrameNumber, mLastCompletedZslFrameNumber,
mInFlightMap, mOutputLock, mResultQueue, mResultSignal,
@@ -714,7 +715,7 @@
return new HidlCamera3DeviceInjectionMethods(parent);
}
-status_t HidlCamera3Device::injectionCameraInitialize(const String8 &injectedCamId,
+status_t HidlCamera3Device::injectionCameraInitialize(const std::string &injectedCamId,
sp<CameraProviderManager> manager) {
return (static_cast<HidlCamera3DeviceInjectionMethods *>(
mInjectionMethods.get()))->injectionInitialize(injectedCamId, manager, this);
@@ -939,7 +940,7 @@
}
dst3_4.v3_2 = dst3_2;
dst3_4.bufferSize = bufferSizes[i];
- if (src->physical_camera_id != nullptr) {
+ if (!src->physical_camera_id.empty()) {
dst3_4.physicalCameraId = src->physical_camera_id;
}
dst3_7.v3_4 = dst3_4;
@@ -1257,7 +1258,7 @@
}
dst3_4.v3_2 = dst3_2;
dst3_4.bufferSize = bufferSizes[i];
- if (src->physical_camera_id != nullptr) {
+ if (!src->physical_camera_id.empty()) {
dst3_4.physicalCameraId = src->physical_camera_id;
}
dst3_7.v3_4 = dst3_4;
@@ -1736,7 +1737,7 @@
}
status_t HidlCamera3Device::HidlCamera3DeviceInjectionMethods::injectionInitialize(
- const String8& injectedCamId, sp<CameraProviderManager> manager,
+ const std::string& injectedCamId, sp<CameraProviderManager> manager,
const sp<android::hardware::camera::device::V3_2::ICameraDeviceCallback>&
callback) {
ATRACE_CALL();
@@ -1756,7 +1757,7 @@
mInjectedCamId = injectedCamId;
sp<ICameraDeviceSession> session;
ATRACE_BEGIN("Injection CameraHal::openSession");
- status_t res = manager->openHidlSession(injectedCamId.string(), callback,
+ status_t res = manager->openHidlSession(injectedCamId, callback,
/*out*/ &session);
ATRACE_END();
if (res != OK) {
diff --git a/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.h b/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.h
index 72343bc..e64bcf0 100644
--- a/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.h
+++ b/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.h
@@ -31,7 +31,7 @@
public Camera3Device {
public:
- explicit HidlCamera3Device(const String8& id, bool overrideForPerfClass, bool overrideToPortrait,
+ explicit HidlCamera3Device(const std::string& id, bool overrideForPerfClass, bool overrideToPortrait,
bool legacyClient = false) : Camera3Device(id, overrideForPerfClass, overrideToPortrait,
legacyClient) { }
@@ -57,7 +57,7 @@
static uint64_t mapProducerToFrameworkUsage(
hardware::camera::device::V3_2::BufferUsageFlags usage);
- status_t initialize(sp<CameraProviderManager> manager, const String8& monitorTags) override;
+ status_t initialize(sp<CameraProviderManager> manager, const std::string& monitorTags) override;
/**
* Implementation of android::hardware::camera::device::V3_5::ICameraDeviceCallback
@@ -187,7 +187,7 @@
public:
// Initialize the injection camera and generate an hal interface.
status_t injectionInitialize(
- const String8& injectedCamId, sp<CameraProviderManager> manager,
+ const std::string& injectedCamId, sp<CameraProviderManager> manager,
const sp<
android::hardware::camera::device::V3_2 ::ICameraDeviceCallback>&
callback);
@@ -213,7 +213,7 @@
hardware::Return<void> notifyHelper(
const hardware::hidl_vec<NotifyMsgType>& msgs);
- virtual status_t injectionCameraInitialize(const String8 &injectCamId,
+ virtual status_t injectionCameraInitialize(const std::string &injectCamId,
sp<CameraProviderManager> manager) override;
virtual sp<RequestThread> createNewRequestThread(wp<Camera3Device> parent,
diff --git a/services/camera/libcameraservice/device3/hidl/HidlCamera3OfflineSession.cpp b/services/camera/libcameraservice/device3/hidl/HidlCamera3OfflineSession.cpp
index 28b2b47..e328ef6 100644
--- a/services/camera/libcameraservice/device3/hidl/HidlCamera3OfflineSession.cpp
+++ b/services/camera/libcameraservice/device3/hidl/HidlCamera3OfflineSession.cpp
@@ -23,6 +23,7 @@
#include <utils/Trace.h>
#include <android/hardware/camera2/ICameraDeviceCallbacks.h>
+#include <camera/StringUtils.h>
#include "device3/hidl/HidlCamera3OfflineSession.h"
#include "device3/Camera3OutputStream.h"
@@ -38,7 +39,7 @@
HidlCamera3OfflineSession::~HidlCamera3OfflineSession() {
ATRACE_CALL();
- ALOGV("%s: Tearing down hidl offline session for camera id %s", __FUNCTION__, mId.string());
+ ALOGV("%s: Tearing down hidl offline session for camera id %s", __FUNCTION__, mId.c_str());
Camera3OfflineSession::disconnectImpl();
}
@@ -94,7 +95,7 @@
std::string activePhysicalId("");
HidlCaptureOutputStates states {
- {mId,
+ { mId,
mOfflineReqsLock, mLastCompletedRegularFrameNumber,
mLastCompletedReprocessFrameNumber, mLastCompletedZslFrameNumber,
mOfflineReqs, mOutputLock, mResultQueue, mResultSignal,
@@ -136,7 +137,7 @@
std::string activePhysicalId("");
HidlCaptureOutputStates states {
- {mId,
+ { mId,
mOfflineReqsLock, mLastCompletedRegularFrameNumber,
mLastCompletedReprocessFrameNumber, mLastCompletedZslFrameNumber,
mOfflineReqs, mOutputLock, mResultQueue, mResultSignal,
@@ -173,7 +174,7 @@
std::string activePhysicalId("");
HidlCaptureOutputStates states {
- {mId,
+ { mId,
mOfflineReqsLock, mLastCompletedRegularFrameNumber,
mLastCompletedReprocessFrameNumber, mLastCompletedZslFrameNumber,
mOfflineReqs, mOutputLock, mResultQueue, mResultSignal,
diff --git a/services/camera/libcameraservice/device3/hidl/HidlCamera3OfflineSession.h b/services/camera/libcameraservice/device3/hidl/HidlCamera3OfflineSession.h
index d22a447..df306b2 100644
--- a/services/camera/libcameraservice/device3/hidl/HidlCamera3OfflineSession.h
+++ b/services/camera/libcameraservice/device3/hidl/HidlCamera3OfflineSession.h
@@ -20,7 +20,6 @@
#include <memory>
#include <mutex>
-#include <utils/String8.h>
#include <utils/String16.h>
#include <android/hardware/camera/device/3.6/ICameraOfflineSession.h>
@@ -53,7 +52,7 @@
public:
// initialize by Camera3Device.
- explicit HidlCamera3OfflineSession(const String8& id,
+ explicit HidlCamera3OfflineSession(const std::string& id,
const sp<camera3::Camera3Stream>& inputStream,
const camera3::StreamSet& offlineStreamSet,
camera3::BufferRecords&& bufferRecords,
diff --git a/services/camera/libcameraservice/gui/RingBufferConsumer.cpp b/services/camera/libcameraservice/gui/RingBufferConsumer.cpp
index ee018c3..cd4a92c 100644
--- a/services/camera/libcameraservice/gui/RingBufferConsumer.cpp
+++ b/services/camera/libcameraservice/gui/RingBufferConsumer.cpp
@@ -23,6 +23,7 @@
#include <utils/Log.h>
#include <gui/RingBufferConsumer.h>
+#include <camera/StringUtils.h>
#define BI_LOGV(x, ...) ALOGV("[%s] " x, mName.string(), ##__VA_ARGS__)
#define BI_LOGD(x, ...) ALOGD("[%s] " x, mName.string(), ##__VA_ARGS__)
@@ -53,10 +54,10 @@
RingBufferConsumer::~RingBufferConsumer() {
}
-void RingBufferConsumer::setName(const String8& name) {
+void RingBufferConsumer::setName(const std::string& name) {
Mutex::Autolock _l(mMutex);
- mName = name;
- mConsumer->setConsumerName(name);
+ mName = toString8(name);
+ mConsumer->setConsumerName(mName);
}
sp<PinnedBufferItem> RingBufferConsumer::pinSelectedBuffer(
diff --git a/services/camera/libcameraservice/gui/RingBufferConsumer.h b/services/camera/libcameraservice/gui/RingBufferConsumer.h
index b737469..2e523d1 100644
--- a/services/camera/libcameraservice/gui/RingBufferConsumer.h
+++ b/services/camera/libcameraservice/gui/RingBufferConsumer.h
@@ -27,8 +27,6 @@
namespace android {
-class String8;
-
/**
* The RingBufferConsumer maintains a ring buffer of BufferItem objects,
* (which are 'acquired' as long as they are part of the ring buffer, and
@@ -67,7 +65,7 @@
// set the name of the RingBufferConsumer that will be used to identify it in
// log messages.
- void setName(const String8& name);
+ void setName(const std::string& name);
// setDefaultBufferSize is used to set the size of buffers returned by
// requestBuffers when a with and height of zero is requested.
diff --git a/services/camera/libcameraservice/hidl/AidlCameraServiceListener.cpp b/services/camera/libcameraservice/hidl/AidlCameraServiceListener.cpp
index add9121..2b81224 100644
--- a/services/camera/libcameraservice/hidl/AidlCameraServiceListener.cpp
+++ b/services/camera/libcameraservice/hidl/AidlCameraServiceListener.cpp
@@ -16,6 +16,7 @@
#include <hidl/AidlCameraServiceListener.h>
#include <hidl/Utils.h>
+#include <camera/StringUtils.h>
namespace android {
namespace frameworks {
@@ -28,11 +29,11 @@
typedef frameworks::cameraservice::service::V2_1::ICameraServiceListener HCameraServiceListener2_1;
binder::Status H2BCameraServiceListener::onStatusChanged(
- int32_t status, const ::android::String16& cameraId) {
+ int32_t status, const std::string& cameraId) {
HCameraDeviceStatus hCameraDeviceStatus = convertToHidlCameraDeviceStatus(status);
CameraStatusAndId cameraStatusAndId;
cameraStatusAndId.deviceStatus = hCameraDeviceStatus;
- cameraStatusAndId.cameraId = String8(cameraId).string();
+ cameraStatusAndId.cameraId = cameraId;
auto ret = mBase->onStatusChanged(cameraStatusAndId);
if (!ret.isOk()) {
ALOGE("%s OnStatusChanged callback failed due to %s",__FUNCTION__,
@@ -42,8 +43,8 @@
}
binder::Status H2BCameraServiceListener::onPhysicalCameraStatusChanged(
- int32_t status, const ::android::String16& cameraId,
- const ::android::String16& physicalCameraId) {
+ int32_t status, const std::string& cameraId,
+ const std::string& physicalCameraId) {
auto cast2_1 = HCameraServiceListener2_1::castFrom(mBase);
sp<HCameraServiceListener2_1> interface2_1 = nullptr;
if (cast2_1.isOk()) {
@@ -52,8 +53,8 @@
HCameraDeviceStatus hCameraDeviceStatus = convertToHidlCameraDeviceStatus(status);
V2_1::PhysicalCameraStatusAndId cameraStatusAndId;
cameraStatusAndId.deviceStatus = hCameraDeviceStatus;
- cameraStatusAndId.cameraId = String8(cameraId).string();
- cameraStatusAndId.physicalCameraId = String8(physicalCameraId).string();
+ cameraStatusAndId.cameraId = cameraId;
+ cameraStatusAndId.physicalCameraId = physicalCameraId;
auto ret = interface2_1->onPhysicalCameraStatusChanged(cameraStatusAndId);
if (!ret.isOk()) {
ALOGE("%s OnPhysicalCameraStatusChanged callback failed due to %s",__FUNCTION__,
@@ -65,13 +66,13 @@
}
::android::binder::Status H2BCameraServiceListener::onTorchStatusChanged(
- int32_t, const ::android::String16&) {
+ int32_t, const std::string&) {
// We don't implement onTorchStatusChanged
return binder::Status::ok();
}
::android::binder::Status H2BCameraServiceListener::onTorchStrengthLevelChanged(
- const ::android::String16&, int32_t) {
+ const std::string&, int32_t) {
return binder::Status::ok();
}
diff --git a/services/camera/libcameraservice/hidl/AidlCameraServiceListener.h b/services/camera/libcameraservice/hidl/AidlCameraServiceListener.h
index 7ef413f..91a4c16 100644
--- a/services/camera/libcameraservice/hidl/AidlCameraServiceListener.h
+++ b/services/camera/libcameraservice/hidl/AidlCameraServiceListener.h
@@ -47,25 +47,25 @@
~H2BCameraServiceListener() { }
virtual ::android::binder::Status onStatusChanged(int32_t status,
- const ::android::String16& cameraId) override;
+ const std::string& cameraId) override;
virtual ::android::binder::Status onPhysicalCameraStatusChanged(int32_t status,
- const ::android::String16& cameraId,
- const ::android::String16& physicalCameraId) override;
+ const std::string& cameraId,
+ const std::string& physicalCameraId) override;
virtual ::android::binder::Status onTorchStatusChanged(
- int32_t status, const ::android::String16& cameraId) override;
+ int32_t status, const std::string& cameraId) override;
virtual ::android::binder::Status onTorchStrengthLevelChanged(
- const ::android::String16& cameraId, int32_t newStrengthLevel) override;
+ const std::string& cameraId, int32_t newStrengthLevel) override;
virtual binder::Status onCameraAccessPrioritiesChanged() {
// TODO: no implementation yet.
return binder::Status::ok();
}
- virtual binder::Status onCameraOpened(const ::android::String16& /*cameraId*/,
- const ::android::String16& /*clientPackageId*/) {
+ virtual binder::Status onCameraOpened(const std::string& /*cameraId*/,
+ const std::string& /*clientPackageId*/) {
// empty implementation
return binder::Status::ok();
}
- virtual binder::Status onCameraClosed(const ::android::String16& /*cameraId*/) {
+ virtual binder::Status onCameraClosed(const std::string& /*cameraId*/) {
// empty implementation
return binder::Status::ok();
}
diff --git a/services/camera/libcameraservice/hidl/HidlCameraDeviceUser.cpp b/services/camera/libcameraservice/hidl/HidlCameraDeviceUser.cpp
index 26e813a..beedba8 100644
--- a/services/camera/libcameraservice/hidl/HidlCameraDeviceUser.cpp
+++ b/services/camera/libcameraservice/hidl/HidlCameraDeviceUser.cpp
@@ -108,7 +108,7 @@
physicalCameraSettings->emplace_back();
CaptureRequest::PhysicalCameraSettings &physicalCameraSetting =
physicalCameraSettings->back();
- physicalCameraSetting.id = e.id.c_str();
+ physicalCameraSetting.id = e.id;
// Read the settings either from the fmq or straightaway from the
// request. We don't need any synchronization, since submitRequestList
diff --git a/services/camera/libcameraservice/hidl/HidlCameraService.cpp b/services/camera/libcameraservice/hidl/HidlCameraService.cpp
index fc063ab..0c0fa7a 100644
--- a/services/camera/libcameraservice/hidl/HidlCameraService.cpp
+++ b/services/camera/libcameraservice/hidl/HidlCameraService.cpp
@@ -64,7 +64,7 @@
android::CameraMetadata cameraMetadata;
HStatus status = HStatus::NO_ERROR;
binder::Status serviceRet =
- mAidlICameraService->getCameraCharacteristics(String16(cameraId.c_str()),
+ mAidlICameraService->getCameraCharacteristics(cameraId,
/*targetSdkVersion*/__ANDROID_API_FUTURE__, /*overrideToPortrait*/false,
&cameraMetadata);
HCameraMetadata hidlMetadata;
@@ -115,7 +115,7 @@
}
sp<hardware::camera2::ICameraDeviceCallbacks> callbacks = hybridCallbacks;
binder::Status serviceRet = mAidlICameraService->connectDevice(
- callbacks, String16(cameraId.c_str()), String16(""), {},
+ callbacks, cameraId, std::string(), {},
hardware::ICameraService::USE_CALLING_UID, 0/*oomScoreOffset*/,
/*targetSdkVersion*/__ANDROID_API_FUTURE__, /*overrideToPortrait*/false,
/*out*/&deviceRemote);
@@ -241,7 +241,7 @@
[this](const hardware::CameraStatus& s) {
bool supportsHAL3 = false;
binder::Status sRet =
- mAidlICameraService->supportsCameraApi(String16(s.cameraId),
+ mAidlICameraService->supportsCameraApi(s.cameraId,
hardware::ICameraService::API_VERSION_2, &supportsHAL3);
return !sRet.isOk() || !supportsHAL3;
}), cameraStatusAndIds->end());
diff --git a/services/camera/libcameraservice/hidl/Utils.cpp b/services/camera/libcameraservice/hidl/Utils.cpp
index 057a6e9..ea05636 100644
--- a/services/camera/libcameraservice/hidl/Utils.cpp
+++ b/services/camera/libcameraservice/hidl/Utils.cpp
@@ -19,6 +19,7 @@
#include <gui/bufferqueue/1.0/H2BGraphicBufferProducer.h>
#include <cutils/native_handle.h>
#include <mediautils/AImageReaderUtils.h>
+#include <camera/StringUtils.h>
namespace android {
namespace hardware {
@@ -90,9 +91,9 @@
for (auto &handle : windowHandles) {
iGBPs.push_back(new H2BGraphicBufferProducer(AImageReader_getHGBPFromHandle(handle)));
}
- String16 physicalCameraId16(hOutputConfiguration.physicalCameraId.c_str());
hardware::camera2::params::OutputConfiguration outputConfiguration(
- iGBPs, convertFromHidl(hOutputConfiguration.rotation), physicalCameraId16,
+ iGBPs, convertFromHidl(hOutputConfiguration.rotation),
+ hOutputConfiguration.physicalCameraId,
hOutputConfiguration.windowGroupId, OutputConfiguration::SURFACE_TYPE_UNKNOWN, 0, 0,
(windowHandles.size() > 1));
return outputConfiguration;
@@ -158,8 +159,8 @@
hCaptureResultExtras.frameNumber = captureResultExtras.frameNumber;
hCaptureResultExtras.partialResultCount = captureResultExtras.partialResultCount;
hCaptureResultExtras.errorStreamId = captureResultExtras.errorStreamId;
- hCaptureResultExtras.errorPhysicalCameraId = hidl_string(String8(
- captureResultExtras.errorPhysicalCameraId).string());
+ hCaptureResultExtras.errorPhysicalCameraId = hidl_string(
+ captureResultExtras.errorPhysicalCameraId.c_str());
return hCaptureResultExtras;
}
@@ -192,7 +193,7 @@
size_t i = 0;
for (auto &statusAndId : src) {
auto &a = (*dst)[i++];
- a.cameraId = statusAndId.cameraId.c_str();
+ a.cameraId = statusAndId.cameraId;
a.deviceStatus = convertToHidlCameraDeviceStatus(statusAndId.status);
}
return;
@@ -204,12 +205,12 @@
size_t i = 0;
for (const auto &statusAndId : src) {
auto &a = (*dst)[i++];
- a.v2_0.cameraId = statusAndId.cameraId.c_str();
+ a.v2_0.cameraId = statusAndId.cameraId;
a.v2_0.deviceStatus = convertToHidlCameraDeviceStatus(statusAndId.status);
size_t numUnvailPhysicalCameras = statusAndId.unavailablePhysicalIds.size();
a.unavailPhysicalCameraIds.resize(numUnvailPhysicalCameras);
for (size_t j = 0; j < numUnvailPhysicalCameras; j++) {
- a.unavailPhysicalCameraIds[j] = statusAndId.unavailablePhysicalIds[j].c_str();
+ a.unavailPhysicalCameraIds[j] = statusAndId.unavailablePhysicalIds[j];
}
}
return;
@@ -266,7 +267,7 @@
std::shared_ptr<CaptureResultMetadataQueue> &captureResultMetadataQueue) {
HPhysicalCaptureResultInfo hPhysicalCaptureResultInfo;
hPhysicalCaptureResultInfo.physicalCameraId =
- String8(physicalCaptureResultInfo.mPhysicalCameraId).string();
+ toString8(physicalCaptureResultInfo.mPhysicalCameraId);
const camera_metadata_t *rawMetadata =
physicalCaptureResultInfo.mPhysicalCameraMetadata.getAndLock();
// Try using fmq at first.
diff --git a/services/camera/libcameraservice/libcameraservice_fuzzer/camera_service_fuzzer.cpp b/services/camera/libcameraservice/libcameraservice_fuzzer/camera_service_fuzzer.cpp
index 120d43d..11a2d09 100644
--- a/services/camera/libcameraservice/libcameraservice_fuzzer/camera_service_fuzzer.cpp
+++ b/services/camera/libcameraservice/libcameraservice_fuzzer/camera_service_fuzzer.cpp
@@ -213,13 +213,13 @@
}
void CameraFuzzer::getCameraInformation(int32_t cameraId) {
- String16 cameraIdStr = String16(String8::format("%d", cameraId));
+ std::string cameraIdStr = std::to_string(cameraId);
bool isSupported = false;
mCameraService->supportsCameraApi(
cameraIdStr, kCameraApiVersion[mFuzzedDataProvider->ConsumeBool()], &isSupported);
mCameraService->isHiddenPhysicalCamera(cameraIdStr, &isSupported);
- String16 parameters;
+ std::string parameters;
mCameraService->getLegacyParameters(cameraId, ¶meters);
std::vector<hardware::camera2::utils::ConcurrentCameraIdCombination> concurrentCameraIds;
@@ -318,7 +318,7 @@
::android::binder::Status rc;
sp<ICamera> cameraDevice;
- rc = mCameraService->connect(this, cameraId, String16(),
+ rc = mCameraService->connect(this, cameraId, std::string(),
android::CameraService::USE_CALLING_UID, android::CameraService::USE_CALLING_PID,
/*targetSdkVersion*/__ANDROID_API_FUTURE__, /*overrideToPortrait*/true,
/*forceSlowJpegMode*/false,
@@ -439,17 +439,18 @@
public:
virtual ~TestCameraServiceListener() {};
- virtual binder::Status onStatusChanged(int32_t , const String16&) {
+ virtual binder::Status onStatusChanged(int32_t, const std::string&) {
return binder::Status::ok();
};
virtual binder::Status onPhysicalCameraStatusChanged(int32_t /*status*/,
- const String16& /*cameraId*/, const String16& /*physicalCameraId*/) {
+ const std::string& /*cameraId*/, const std::string& /*physicalCameraId*/) {
// No op
return binder::Status::ok();
};
- virtual binder::Status onTorchStatusChanged(int32_t /*status*/, const String16& /*cameraId*/) {
+ virtual binder::Status onTorchStatusChanged(int32_t /*status*/,
+ const std::string& /*cameraId*/) {
return binder::Status::ok();
};
@@ -458,18 +459,18 @@
return binder::Status::ok();
}
- virtual binder::Status onCameraOpened(const String16& /*cameraId*/,
- const String16& /*clientPackageName*/) {
+ virtual binder::Status onCameraOpened(const std::string& /*cameraId*/,
+ const std::string& /*clientPackageName*/) {
// No op
return binder::Status::ok();
}
- virtual binder::Status onCameraClosed(const String16& /*cameraId*/) {
+ virtual binder::Status onCameraClosed(const std::string& /*cameraId*/) {
// No op
return binder::Status::ok();
}
- virtual binder::Status onTorchStrengthLevelChanged(const String16& /*cameraId*/,
+ virtual binder::Status onTorchStrengthLevelChanged(const std::string& /*cameraId*/,
int32_t /*torchStrength*/) {
// No op
return binder::Status::ok();
@@ -534,7 +535,7 @@
for (auto s : statuses) {
sp<TestCameraDeviceCallbacks> callbacks(new TestCameraDeviceCallbacks());
sp<hardware::camera2::ICameraDeviceUser> device;
- mCameraService->connectDevice(callbacks, String16(s.cameraId), String16(), {},
+ mCameraService->connectDevice(callbacks, s.cameraId, std::string(), {},
android::CameraService::USE_CALLING_UID, 0/*oomScoreDiff*/,
/*targetSdkVersion*/__ANDROID_API_FUTURE__, /*overrideToPortrait*/true,
&device);
@@ -555,7 +556,7 @@
sp<Surface> surface(new Surface(gbProducer, /*controlledByApp*/false));
- String16 noPhysicalId;
+ std::string noPhysicalId;
size_t rotations = sizeof(kRotations) / sizeof(int32_t) - 1;
OutputConfiguration output(gbProducer,
kRotations[mFuzzedDataProvider->ConsumeIntegralInRange<size_t>(0, rotations)],
@@ -581,9 +582,9 @@
kSensorPixelModes[mFuzzedDataProvider->ConsumeBool() ? 1 : 0];
requestTemplate.update(ANDROID_SENSOR_PIXEL_MODE, &sensorPixelMode, 1);
request.mPhysicalCameraSettings.clear();
- request.mPhysicalCameraSettings.push_back({s.cameraId.string(), requestTemplate});
+ request.mPhysicalCameraSettings.push_back({s.cameraId, requestTemplate});
device->submitRequest(request, /*streaming*/false, /*out*/&info);
- ALOGV("%s : camera id %s submit request id %d",__FUNCTION__, s.cameraId.string(),
+ ALOGV("%s : camera id %s submit request id %d",__FUNCTION__, s.cameraId.c_str(),
info.mRequestId);
}
device->disconnect();
diff --git a/services/camera/libcameraservice/tests/CameraProviderManagerTest.cpp b/services/camera/libcameraservice/tests/CameraProviderManagerTest.cpp
index 1a6b2e0..c0cd1a9 100644
--- a/services/camera/libcameraservice/tests/CameraProviderManagerTest.cpp
+++ b/services/camera/libcameraservice/tests/CameraProviderManagerTest.cpp
@@ -302,15 +302,15 @@
~TestStatusListener() {}
- void onDeviceStatusChanged(const String8 &,
+ void onDeviceStatusChanged(const std::string &,
CameraDeviceStatus) override {}
- void onDeviceStatusChanged(const String8 &, const String8 &,
+ void onDeviceStatusChanged(const std::string &, const std::string &,
CameraDeviceStatus) override {
mPhysicalCameraStatusChangeCount++;
}
- void onTorchStatusChanged(const String8 &,
+ void onTorchStatusChanged(const std::string &,
TorchModeStatus) override {}
- void onTorchStatusChanged(const String8 &,
+ void onTorchStatusChanged(const std::string &,
TorchModeStatus, SystemCameraKind) override {}
void onNewProviderRegistered() override {}
};
diff --git a/services/camera/libcameraservice/tests/DistortionMapperTest.cpp b/services/camera/libcameraservice/tests/DistortionMapperTest.cpp
index b367571..33cc61a 100644
--- a/services/camera/libcameraservice/tests/DistortionMapperTest.cpp
+++ b/services/camera/libcameraservice/tests/DistortionMapperTest.cpp
@@ -19,8 +19,8 @@
#include <random>
+#include <fmt/printf.h>
#include <gtest/gtest.h>
-#include <android-base/stringprintf.h>
#include <android-base/chrono_utils.h>
#include "../device3/DistortionMapper.h"
@@ -260,9 +260,9 @@
rawToCorrectedDurationMs) / (randCoords.size() / 2) ).count();
test->RecordProperty("CorrectedToRawDurationPerCoordUs",
- base::StringPrintf("%f", correctedToRawDurationPerCoordUs));
+ fmt::sprintf("%f", correctedToRawDurationPerCoordUs));
test->RecordProperty("RawToCorrectedDurationPerCoordUs",
- base::StringPrintf("%f", rawToCorrectedDurationPerCoordUs));
+ fmt::sprintf("%f", rawToCorrectedDurationPerCoordUs));
// Calculate mapping errors after round trip
float totalErrorSq = 0;
@@ -296,9 +296,9 @@
}
float rmsError = std::sqrt(totalErrorSq / randCoords.size());
- test->RecordProperty("RmsError", base::StringPrintf("%f", rmsError));
+ test->RecordProperty("RmsError", fmt::sprintf("%f", rmsError));
for (size_t i = 0; i < histogram.size(); i++) {
- std::string label = base::StringPrintf("HistogramBin[%f,%f)",
+ std::string label = fmt::sprintf("HistogramBin[%f,%f)",
(float)i/bucketsPerPixel, (float)(i + 1)/bucketsPerPixel);
test->RecordProperty(label, histogram[i]);
}
diff --git a/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.cpp b/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.cpp
index dae5eea..f6ad2fe 100644
--- a/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.cpp
+++ b/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.cpp
@@ -20,6 +20,8 @@
#include <inttypes.h>
#include <utils/Log.h>
+#include <utils/String16.h>
+#include <camera/StringUtils.h>
#include <binder/IServiceManager.h>
#include "CameraServiceProxyWrapper.h"
@@ -33,7 +35,7 @@
sp<hardware::ICameraServiceProxy> CameraServiceProxyWrapper::sCameraServiceProxy;
Mutex CameraServiceProxyWrapper::mLock;
-std::map<String8, std::shared_ptr<CameraServiceProxyWrapper::CameraSessionStatsWrapper>>
+std::map<std::string, std::shared_ptr<CameraServiceProxyWrapper::CameraSessionStatsWrapper>>
CameraServiceProxyWrapper::mSessionStatsMap;
/**
@@ -88,7 +90,7 @@
mSessionStats.mRequestCount = requestCount;
mSessionStats.mResultErrorCount = resultErrorCount;
mSessionStats.mDeviceError = deviceError;
- mSessionStats.mUserTag = String16(userTag.c_str());
+ mSessionStats.mUserTag = userTag;
mSessionStats.mVideoStabilizationMode = videoStabilizationMode;
mSessionStats.mStreamStats = streamStats;
updateProxyDeviceState(mSessionStats);
@@ -124,12 +126,13 @@
proxyBinder->pingForUserUpdate();
}
-int CameraServiceProxyWrapper::getRotateAndCropOverride(String16 packageName, int lensFacing,
- int userId) {
+int CameraServiceProxyWrapper::getRotateAndCropOverride(const std::string &packageName,
+ int lensFacing, int userId) {
sp<ICameraServiceProxy> proxyBinder = getCameraServiceProxy();
if (proxyBinder == nullptr) return true;
int ret = 0;
- auto status = proxyBinder->getRotateAndCropOverride(packageName, lensFacing, userId, &ret);
+ auto status = proxyBinder->getRotateAndCropOverride(packageName, lensFacing,
+ userId, &ret);
if (!status.isOk()) {
ALOGE("%s: Failed during top activity orientation query: %s", __FUNCTION__,
status.exceptionMessage().c_str());
@@ -144,7 +147,7 @@
proxyBinder->notifyCameraState(sessionStats);
}
-void CameraServiceProxyWrapper::logStreamConfigured(const String8& id,
+void CameraServiceProxyWrapper::logStreamConfigured(const std::string& id,
int operatingMode, bool internalConfig, int32_t latencyMs) {
std::shared_ptr<CameraSessionStatsWrapper> sessionStats;
{
@@ -162,7 +165,7 @@
sessionStats->onStreamConfigured(operatingMode, internalConfig, latencyMs);
}
-void CameraServiceProxyWrapper::logActive(const String8& id, float maxPreviewFps) {
+void CameraServiceProxyWrapper::logActive(const std::string& id, float maxPreviewFps) {
std::shared_ptr<CameraSessionStatsWrapper> sessionStats;
{
Mutex::Autolock l(mLock);
@@ -178,7 +181,7 @@
sessionStats->onActive(maxPreviewFps);
}
-void CameraServiceProxyWrapper::logIdle(const String8& id,
+void CameraServiceProxyWrapper::logIdle(const std::string& id,
int64_t requestCount, int64_t resultErrorCount, bool deviceError,
const std::string& userTag, int32_t videoStabilizationMode,
const std::vector<hardware::CameraStreamStats>& streamStats) {
@@ -209,8 +212,8 @@
videoStabilizationMode, streamStats);
}
-void CameraServiceProxyWrapper::logOpen(const String8& id, int facing,
- const String16& clientPackageName, int effectiveApiLevel, bool isNdk,
+void CameraServiceProxyWrapper::logOpen(const std::string& id, int facing,
+ const std::string& clientPackageName, int effectiveApiLevel, bool isNdk,
int32_t latencyMs) {
std::shared_ptr<CameraSessionStatsWrapper> sessionStats;
{
@@ -226,7 +229,7 @@
apiLevel = CameraSessionStats::CAMERA_API_LEVEL_2;
}
- sessionStats = std::make_shared<CameraSessionStatsWrapper>(String16(id), facing,
+ sessionStats = std::make_shared<CameraSessionStatsWrapper>(id, facing,
CameraSessionStats::CAMERA_STATE_OPEN, clientPackageName,
apiLevel, isNdk, latencyMs);
mSessionStatsMap.emplace(id, sessionStats);
@@ -238,7 +241,7 @@
sessionStats->onOpen();
}
-void CameraServiceProxyWrapper::logClose(const String8& id, int32_t latencyMs) {
+void CameraServiceProxyWrapper::logClose(const std::string& id, int32_t latencyMs) {
std::shared_ptr<CameraSessionStatsWrapper> sessionStats;
{
Mutex::Autolock l(mLock);
diff --git a/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.h b/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.h
index eb818d1..aee875f 100644
--- a/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.h
+++ b/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.h
@@ -20,10 +20,9 @@
#include <android/hardware/ICameraServiceProxy.h>
#include <utils/Mutex.h>
-#include <utils/String8.h>
-#include <utils/String16.h>
#include <utils/StrongPointer.h>
#include <utils/Timers.h>
+#include <string>
#include <camera/CameraSessionStats.h>
@@ -40,8 +39,8 @@
hardware::CameraSessionStats mSessionStats;
Mutex mLock; // lock for per camera session stats
- CameraSessionStatsWrapper(const String16& cameraId, int facing, int newCameraState,
- const String16& clientName, int apiLevel, bool isNdk, int32_t latencyMs) :
+ CameraSessionStatsWrapper(const std::string& cameraId, int facing, int newCameraState,
+ const std::string& clientName, int apiLevel, bool isNdk, int32_t latencyMs) :
mSessionStats(cameraId, facing, newCameraState, clientName, apiLevel, isNdk, latencyMs)
{}
@@ -57,7 +56,7 @@
// Lock for camera session stats map
static Mutex mLock;
// Map from camera id to the camera's session statistics
- static std::map<String8, std::shared_ptr<CameraSessionStatsWrapper>> mSessionStatsMap;
+ static std::map<std::string, std::shared_ptr<CameraSessionStatsWrapper>> mSessionStatsMap;
/**
* Update the session stats of a given camera device (open/close/active/idle) with
@@ -70,22 +69,22 @@
public:
// Open
- static void logOpen(const String8& id, int facing,
- const String16& clientPackageName, int apiLevel, bool isNdk,
+ static void logOpen(const std::string& id, int facing,
+ const std::string& clientPackageName, int apiLevel, bool isNdk,
int32_t latencyMs);
// Close
- static void logClose(const String8& id, int32_t latencyMs);
+ static void logClose(const std::string& id, int32_t latencyMs);
// Stream configuration
- static void logStreamConfigured(const String8& id, int operatingMode, bool internalReconfig,
+ static void logStreamConfigured(const std::string& id, int operatingMode, bool internalReconfig,
int32_t latencyMs);
// Session state becomes active
- static void logActive(const String8& id, float maxPreviewFps);
+ static void logActive(const std::string& id, float maxPreviewFps);
// Session state becomes idle
- static void logIdle(const String8& id,
+ static void logIdle(const std::string& id,
int64_t requestCount, int64_t resultErrorCount, bool deviceError,
const std::string& userTag, int32_t videoStabilizationMode,
const std::vector<hardware::CameraStreamStats>& streamStats);
@@ -94,7 +93,7 @@
static void pingCameraServiceProxy();
// Return the current top activity rotate and crop override.
- static int getRotateAndCropOverride(String16 packageName, int lensFacing, int userId);
+ static int getRotateAndCropOverride(const std::string &packageName, int lensFacing, int userId);
// Detect if the camera is disabled by device policy.
static bool isCameraDisabled(int userId);
diff --git a/services/camera/libcameraservice/utils/CameraTraces.h b/services/camera/libcameraservice/utils/CameraTraces.h
index 71fa334..be8d393 100644
--- a/services/camera/libcameraservice/utils/CameraTraces.h
+++ b/services/camera/libcameraservice/utils/CameraTraces.h
@@ -18,7 +18,6 @@
#define ANDROID_SERVERS_CAMERA_TRACES_H_
#include <utils/Errors.h>
-#include <utils/String16.h>
#include <utils/Vector.h>
namespace android {
diff --git a/services/camera/libcameraservice/utils/LatencyHistogram.cpp b/services/camera/libcameraservice/utils/LatencyHistogram.cpp
index e2bdc43..a167068 100644
--- a/services/camera/libcameraservice/utils/LatencyHistogram.cpp
+++ b/services/camera/libcameraservice/utils/LatencyHistogram.cpp
@@ -16,8 +16,9 @@
#define LOG_TAG "CameraLatencyHistogram"
#include <inttypes.h>
+#include <android-base/stringprintf.h>
#include <utils/Log.h>
-#include <utils/String8.h>
+#include <camera/StringUtils.h>
#include "LatencyHistogram.h"
@@ -55,18 +56,18 @@
return;
}
- String8 lines;
- lines.appendFormat("%s (%" PRId64 ") samples\n", name, mTotalCount);
+ std::string lines;
+ lines += fmt::sprintf("%s (%" PRId64 ") samples\n", name, mTotalCount);
- String8 lineBins, lineBinCounts;
+ std::string lineBins, lineBinCounts;
formatHistogramText(lineBins, lineBinCounts);
- lineBins.append("\n");
- lineBinCounts.append("\n");
- lines.append(lineBins);
- lines.append(lineBinCounts);
+ lineBins += ("\n");
+ lineBinCounts += ("\n");
+ lines += lineBins;
+ lines += lineBinCounts;
- write(fd, lines.string(), lines.size());
+ write(fd, lines.c_str(), lines.size());
}
void CameraLatencyHistogram::log(const char* fmt, ...) {
@@ -76,11 +77,12 @@
va_list args;
va_start(args, fmt);
- String8 histogramName = String8::formatV(fmt, args);
- ALOGI("%s (%" PRId64 ") samples:", histogramName.string(), mTotalCount);
+ std::string histogramName;
+ base::StringAppendV(&histogramName, fmt, args);
+ ALOGI("%s (%" PRId64 ") samples:", histogramName.c_str(), mTotalCount);
va_end(args);
- String8 lineBins, lineBinCounts;
+ std::string lineBins, lineBinCounts;
formatHistogramText(lineBins, lineBinCounts);
ALOGI("%s", lineBins.c_str());
@@ -88,19 +90,19 @@
}
void CameraLatencyHistogram::formatHistogramText(
- String8& lineBins, String8& lineBinCounts) const {
+ std::string& lineBins, std::string& lineBinCounts) const {
lineBins = " ";
lineBinCounts = " ";
for (int32_t i = 0; i < mBinCount; i++) {
if (i == mBinCount - 1) {
- lineBins.append(" inf (max ms)");
+ lineBins += " inf (max ms)";
} else {
- lineBins.appendFormat("%7d", mBinSizeMs*(i+1));
+ lineBins += fmt::sprintf("%7d", mBinSizeMs*(i+1));
}
- lineBinCounts.appendFormat(" %02.2f", 100.0*mBins[i]/mTotalCount);
+ lineBinCounts += fmt::sprintf(" %02.2f", 100.0*mBins[i]/mTotalCount);
}
- lineBinCounts.append(" (%)");
+ lineBinCounts += " (%)";
}
}; //namespace android
diff --git a/services/camera/libcameraservice/utils/LatencyHistogram.h b/services/camera/libcameraservice/utils/LatencyHistogram.h
index bfd9b1b..89a9cc1 100644
--- a/services/camera/libcameraservice/utils/LatencyHistogram.h
+++ b/services/camera/libcameraservice/utils/LatencyHistogram.h
@@ -40,7 +40,7 @@
std::vector<int64_t> mBins;
uint64_t mTotalCount;
- void formatHistogramText(String8& lineBins, String8& lineBinCounts) const;
+ void formatHistogramText(std::string& lineBins, std::string& lineBinCounts) const;
}; // class CameraLatencyHistogram
}; // namespace android
diff --git a/services/camera/libcameraservice/utils/SessionConfigurationUtils.cpp b/services/camera/libcameraservice/utils/SessionConfigurationUtils.cpp
index ad02959..c9520d5 100644
--- a/services/camera/libcameraservice/utils/SessionConfigurationUtils.cpp
+++ b/services/camera/libcameraservice/utils/SessionConfigurationUtils.cpp
@@ -26,6 +26,7 @@
#include "device3/hidl/HidlCamera3Device.h"
#include "device3/Camera3OutputStream.h"
#include "system/graphics-base-v1.1.h"
+#include <camera/StringUtils.h>
using android::camera3::OutputStreamInfo;
using android::camera3::OutputStreamInfo;
@@ -334,14 +335,14 @@
binder::Status createSurfaceFromGbp(
OutputStreamInfo& streamInfo, bool isStreamInfoValid,
sp<Surface>& surface, const sp<IGraphicBufferProducer>& gbp,
- const String8 &logicalCameraId, const CameraMetadata &physicalCameraMetadata,
+ const std::string &logicalCameraId, const CameraMetadata &physicalCameraMetadata,
const std::vector<int32_t> &sensorPixelModesUsed, int64_t dynamicRangeProfile,
int64_t streamUseCase, int timestampBase, int mirrorMode) {
// bufferProducer must be non-null
if (gbp == nullptr) {
- String8 msg = String8::format("Camera %s: Surface is NULL", logicalCameraId.string());
- ALOGW("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Surface is NULL", logicalCameraId.c_str());
+ ALOGW("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
// HACK b/10949105
// Query consumer usage bits to set async operation mode for
@@ -350,14 +351,14 @@
uint64_t consumerUsage = 0;
status_t err;
if ((err = gbp->getConsumerUsage(&consumerUsage)) != OK) {
- String8 msg = String8::format("Camera %s: Failed to query Surface consumer usage: %s (%d)",
- logicalCameraId.string(), strerror(-err), err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Failed to query Surface consumer usage: %s (%d)",
+ logicalCameraId.c_str(), strerror(-err), err);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
}
if (consumerUsage & GraphicBuffer::USAGE_HW_TEXTURE) {
ALOGW("%s: Camera %s with consumer usage flag: %" PRIu64 ": Forcing asynchronous mode for"
- "stream", __FUNCTION__, logicalCameraId.string(), consumerUsage);
+ "stream", __FUNCTION__, logicalCameraId.c_str(), consumerUsage);
useAsync = true;
}
@@ -375,29 +376,29 @@
int width, height, format;
android_dataspace dataSpace;
if ((err = anw->query(anw, NATIVE_WINDOW_WIDTH, &width)) != OK) {
- String8 msg = String8::format("Camera %s: Failed to query Surface width: %s (%d)",
- logicalCameraId.string(), strerror(-err), err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Failed to query Surface width: %s (%d)",
+ logicalCameraId.c_str(), strerror(-err), err);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
}
if ((err = anw->query(anw, NATIVE_WINDOW_HEIGHT, &height)) != OK) {
- String8 msg = String8::format("Camera %s: Failed to query Surface height: %s (%d)",
- logicalCameraId.string(), strerror(-err), err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Failed to query Surface height: %s (%d)",
+ logicalCameraId.c_str(), strerror(-err), err);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
}
if ((err = anw->query(anw, NATIVE_WINDOW_FORMAT, &format)) != OK) {
- String8 msg = String8::format("Camera %s: Failed to query Surface format: %s (%d)",
- logicalCameraId.string(), strerror(-err), err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Failed to query Surface format: %s (%d)",
+ logicalCameraId.c_str(), strerror(-err), err);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
}
if ((err = anw->query(anw, NATIVE_WINDOW_DEFAULT_DATASPACE,
reinterpret_cast<int*>(&dataSpace))) != OK) {
- String8 msg = String8::format("Camera %s: Failed to query Surface dataspace: %s (%d)",
- logicalCameraId.string(), strerror(-err), err);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: Failed to query Surface dataspace: %s (%d)",
+ logicalCameraId.c_str(), strerror(-err), err);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION, msg.c_str());
}
// FIXME: remove this override since the default format should be
@@ -406,16 +407,16 @@
((consumerUsage & GRALLOC_USAGE_HW_MASK) &&
((consumerUsage & GRALLOC_USAGE_SW_READ_MASK) == 0))) {
ALOGW("%s: Camera %s: Overriding format %#x to IMPLEMENTATION_DEFINED",
- __FUNCTION__, logicalCameraId.string(), format);
+ __FUNCTION__, logicalCameraId.c_str(), format);
format = HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED;
}
std::unordered_set<int32_t> overriddenSensorPixelModes;
if (checkAndOverrideSensorPixelModesUsed(sensorPixelModesUsed, format, width, height,
physicalCameraMetadata, flexibleConsumer, &overriddenSensorPixelModes) != OK) {
- String8 msg = String8::format("Camera %s: sensor pixel modes for stream with "
- "format %#x are not valid",logicalCameraId.string(), format);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: sensor pixel modes for stream with "
+ "format %#x are not valid",logicalCameraId.c_str(), format);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
bool foundInMaxRes = false;
if (overriddenSensorPixelModes.find(ANDROID_SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION) !=
@@ -428,48 +429,48 @@
!SessionConfigurationUtils::roundBufferDimensionNearest(width, height,
format, dataSpace, physicalCameraMetadata, foundInMaxRes, /*out*/&width,
/*out*/&height)) {
- String8 msg = String8::format("Camera %s: No supported stream configurations with "
+ std::string msg = fmt::sprintf("Camera %s: No supported stream configurations with "
"format %#x defined, failed to create output stream",
- logicalCameraId.string(), format);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ logicalCameraId.c_str(), format);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (!SessionConfigurationUtils::isDynamicRangeProfileSupported(dynamicRangeProfile,
physicalCameraMetadata)) {
- String8 msg = String8::format("Camera %s: Dynamic range profile 0x%" PRIx64
- " not supported,failed to create output stream", logicalCameraId.string(),
+ std::string msg = fmt::sprintf("Camera %s: Dynamic range profile 0x%" PRIx64
+ " not supported,failed to create output stream", logicalCameraId.c_str(),
dynamicRangeProfile);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (SessionConfigurationUtils::is10bitDynamicRangeProfile(dynamicRangeProfile) &&
!SessionConfigurationUtils::is10bitCompatibleFormat(format)) {
- String8 msg = String8::format("Camera %s: No 10-bit supported stream configurations with "
+ std::string msg = fmt::sprintf("Camera %s: No 10-bit supported stream configurations with "
"format %#x defined and profile %" PRIx64 ", failed to create output stream",
- logicalCameraId.string(), format, dynamicRangeProfile);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ logicalCameraId.c_str(), format, dynamicRangeProfile);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (!SessionConfigurationUtils::isStreamUseCaseSupported(streamUseCase,
physicalCameraMetadata)) {
- String8 msg = String8::format("Camera %s: stream use case %" PRId64 " not supported,"
- " failed to create output stream", logicalCameraId.string(), streamUseCase);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: stream use case %" PRId64 " not supported,"
+ " failed to create output stream", logicalCameraId.c_str(), streamUseCase);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (timestampBase < OutputConfiguration::TIMESTAMP_BASE_DEFAULT ||
timestampBase > OutputConfiguration::TIMESTAMP_BASE_MAX) {
- String8 msg = String8::format("Camera %s: invalid timestamp base %d",
- logicalCameraId.string(), timestampBase);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: invalid timestamp base %d",
+ logicalCameraId.c_str(), timestampBase);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (mirrorMode < OutputConfiguration::MIRROR_MODE_AUTO ||
mirrorMode > OutputConfiguration::MIRROR_MODE_V) {
- String8 msg = String8::format("Camera %s: invalid mirroring mode %d",
- logicalCameraId.string(), mirrorMode);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s: invalid mirroring mode %d",
+ logicalCameraId.c_str(), mirrorMode);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (!isStreamInfoValid) {
@@ -486,45 +487,45 @@
return binder::Status::ok();
}
if (width != streamInfo.width) {
- String8 msg = String8::format("Camera %s:Surface width doesn't match: %d vs %d",
- logicalCameraId.string(), width, streamInfo.width);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s:Surface width doesn't match: %d vs %d",
+ logicalCameraId.c_str(), width, streamInfo.width);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (height != streamInfo.height) {
- String8 msg = String8::format("Camera %s:Surface height doesn't match: %d vs %d",
- logicalCameraId.string(), height, streamInfo.height);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s:Surface height doesn't match: %d vs %d",
+ logicalCameraId.c_str(), height, streamInfo.height);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (format != streamInfo.format) {
- String8 msg = String8::format("Camera %s:Surface format doesn't match: %d vs %d",
- logicalCameraId.string(), format, streamInfo.format);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s:Surface format doesn't match: %d vs %d",
+ logicalCameraId.c_str(), format, streamInfo.format);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (format != HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) {
if (dataSpace != streamInfo.dataSpace) {
- String8 msg = String8::format("Camera %s:Surface dataSpace doesn't match: %d vs %d",
- logicalCameraId.string(), dataSpace, streamInfo.dataSpace);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg = fmt::sprintf("Camera %s:Surface dataSpace doesn't match: %d vs %d",
+ logicalCameraId.c_str(), dataSpace, streamInfo.dataSpace);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
//At the native side, there isn't a way to check whether 2 surfaces come from the same
//surface class type. Use usage flag to approximate the comparison.
if (consumerUsage != streamInfo.consumerUsage) {
- String8 msg = String8::format(
+ std::string msg = fmt::sprintf(
"Camera %s:Surface usage flag doesn't match %" PRIu64 " vs %" PRIu64 "",
- logicalCameraId.string(), consumerUsage, streamInfo.consumerUsage);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ logicalCameraId.c_str(), consumerUsage, streamInfo.consumerUsage);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
}
return binder::Status::ok();
}
void mapStreamInfo(const OutputStreamInfo &streamInfo,
- camera3::camera_stream_rotation_t rotation, String8 physicalId,
+ camera3::camera_stream_rotation_t rotation, const std::string &physicalId,
int32_t groupId, aidl::android::hardware::camera::device::Stream *stream /*out*/) {
if (stream == nullptr) {
return;
@@ -540,7 +541,7 @@
stream->dataSpace = AidlCamera3Device::mapToAidlDataspace(streamInfo.dataSpace);
stream->rotation = AidlCamera3Device::mapToAidlStreamRotation(rotation);
stream->id = -1; // Invalid stream id
- stream->physicalCameraId = std::string(physicalId.string());
+ stream->physicalCameraId = physicalId;
stream->bufferSize = 0;
stream->groupId = groupId;
stream->sensorPixelModesUsed.resize(streamInfo.sensorPixelModesUsed.size());
@@ -561,33 +562,34 @@
binder::Status
convertToHALStreamCombination(
const SessionConfiguration& sessionConfiguration,
- const String8 &logicalCameraId, const CameraMetadata &deviceInfo,
+ const std::string &logicalCameraId, const CameraMetadata &deviceInfo,
metadataGetter getMetadata, const std::vector<std::string> &physicalCameraIds,
aidl::android::hardware::camera::device::StreamConfiguration &streamConfiguration,
bool overrideForPerfClass, bool *earlyExit) {
using SensorPixelMode = aidl::android::hardware::camera::metadata::SensorPixelMode;
auto operatingMode = sessionConfiguration.getOperatingMode();
- binder::Status res = checkOperatingMode(operatingMode, deviceInfo, logicalCameraId);
+ binder::Status res = checkOperatingMode(operatingMode, deviceInfo,
+ logicalCameraId);
if (!res.isOk()) {
return res;
}
if (earlyExit == nullptr) {
- String8 msg("earlyExit nullptr");
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ std::string msg("earlyExit nullptr");
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
*earlyExit = false;
auto ret = AidlCamera3Device::mapToAidlStreamConfigurationMode(
static_cast<camera_stream_configuration_mode_t> (operatingMode),
/*out*/ &streamConfiguration.operationMode);
if (ret != OK) {
- String8 msg = String8::format(
+ std::string msg = fmt::sprintf(
"Camera %s: Failed mapping operating mode %d requested: %s (%d)",
- logicalCameraId.string(), operatingMode, strerror(-ret), ret);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
+ logicalCameraId.c_str(), operatingMode, strerror(-ret), ret);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
- msg.string());
+ msg.c_str());
}
bool isInputValid = (sessionConfiguration.getInputWidth() > 0) &&
@@ -632,7 +634,7 @@
const std::vector<sp<IGraphicBufferProducer>>& bufferProducers =
it.getGraphicBufferProducers();
bool deferredConsumer = it.isDeferred();
- String8 physicalCameraId = String8(it.getPhysicalCameraId());
+ const std::string &physicalCameraId = it.getPhysicalCameraId();
int64_t dynamicRangeProfile = it.getDynamicRangeProfile();
std::vector<int32_t> sensorPixelModesUsed = it.getSensorPixelModesUsed();
@@ -716,11 +718,11 @@
deviceInfo, &compositeStreams);
}
if (ret != OK) {
- String8 msg = String8::format(
+ std::string msg = fmt::sprintf(
"Camera %s: Failed adding composite streams: %s (%d)",
- logicalCameraId.string(), strerror(-ret), ret);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ logicalCameraId.c_str(), strerror(-ret), ret);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
if (compositeStreams.size() == 0) {
@@ -752,17 +754,17 @@
}
binder::Status checkPhysicalCameraId(
- const std::vector<std::string> &physicalCameraIds, const String8 &physicalCameraId,
- const String8 &logicalCameraId) {
+ const std::vector<std::string> &physicalCameraIds, const std::string &physicalCameraId,
+ const std::string &logicalCameraId) {
if (physicalCameraId.size() == 0) {
return binder::Status::ok();
}
if (std::find(physicalCameraIds.begin(), physicalCameraIds.end(),
- physicalCameraId.string()) == physicalCameraIds.end()) {
- String8 msg = String8::format("Camera %s: Camera doesn't support physicalCameraId %s.",
- logicalCameraId.string(), physicalCameraId.string());
- ALOGE("%s: %s", __FUNCTION__, msg.string());
- return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.string());
+ physicalCameraId) == physicalCameraIds.end()) {
+ std::string msg = fmt::sprintf("Camera %s: Camera doesn't support physicalCameraId %s.",
+ logicalCameraId.c_str(), physicalCameraId.c_str());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
+ return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT, msg.c_str());
}
return binder::Status::ok();
}
@@ -790,13 +792,13 @@
}
binder::Status checkOperatingMode(int operatingMode,
- const CameraMetadata &staticInfo, const String8 &cameraId) {
+ const CameraMetadata &staticInfo, const std::string &cameraId) {
if (operatingMode < 0) {
- String8 msg = String8::format(
- "Camera %s: Invalid operating mode %d requested", cameraId.string(), operatingMode);
- ALOGE("%s: %s", __FUNCTION__, msg.string());
+ std::string msg = fmt::sprintf(
+ "Camera %s: Invalid operating mode %d requested", cameraId.c_str(), operatingMode);
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
- msg.string());
+ msg.c_str());
}
bool isConstrainedHighSpeed = (operatingMode == ICameraDeviceUser::CONSTRAINED_HIGH_SPEED_MODE);
@@ -811,12 +813,12 @@
}
}
if (!isConstrainedHighSpeedSupported) {
- String8 msg = String8::format(
+ std::string msg = fmt::sprintf(
"Camera %s: Try to create a constrained high speed configuration on a device"
- " that doesn't support it.", cameraId.string());
- ALOGE("%s: %s", __FUNCTION__, msg.string());
+ " that doesn't support it.", cameraId.c_str());
+ ALOGE("%s: %s", __FUNCTION__, msg.c_str());
return STATUS_ERROR(CameraService::ERROR_ILLEGAL_ARGUMENT,
- msg.string());
+ msg.c_str());
}
}
diff --git a/services/camera/libcameraservice/utils/SessionConfigurationUtils.h b/services/camera/libcameraservice/utils/SessionConfigurationUtils.h
index a127c7b..220d1f8 100644
--- a/services/camera/libcameraservice/utils/SessionConfigurationUtils.h
+++ b/services/camera/libcameraservice/utils/SessionConfigurationUtils.h
@@ -21,6 +21,7 @@
#include <camera/camera2/OutputConfiguration.h>
#include <camera/camera2/SessionConfiguration.h>
#include <camera/camera2/SubmitInfo.h>
+#include <camera/StringUtils.h>
#include <aidl/android/hardware/camera/device/ICameraDevice.h>
#include <android/hardware/camera/device/3.4/ICameraDeviceSession.h>
#include <android/hardware/camera/device/3.7/ICameraDeviceSession.h>
@@ -37,17 +38,18 @@
#define STATUS_ERROR(errorCode, errorString) \
binder::Status::fromServiceSpecificError(errorCode, \
- String8::format("%s:%d: %s", __FUNCTION__, __LINE__, errorString))
+ fmt::sprintf("%s:%d: %s", __FUNCTION__, __LINE__, errorString).c_str())
#define STATUS_ERROR_FMT(errorCode, errorString, ...) \
binder::Status::fromServiceSpecificError(errorCode, \
- String8::format("%s:%d: " errorString, __FUNCTION__, __LINE__, \
- __VA_ARGS__))
+ fmt::sprintf("%s:%d: " errorString, __FUNCTION__, __LINE__, \
+ __VA_ARGS__).c_str())
namespace android {
namespace camera3 {
-typedef std::function<CameraMetadata (const String8 &, bool overrideForPerfClass)> metadataGetter;
+typedef std::function<CameraMetadata (const std::string &, bool overrideForPerfClass)>
+ metadataGetter;
class StreamConfiguration {
public:
@@ -96,7 +98,7 @@
binder::Status createSurfaceFromGbp(
camera3::OutputStreamInfo& streamInfo, bool isStreamInfoValid,
sp<Surface>& surface, const sp<IGraphicBufferProducer>& gbp,
- const String8 &logicalCameraId, const CameraMetadata &physicalCameraMetadata,
+ const std::string &logicalCameraId, const CameraMetadata &physicalCameraMetadata,
const std::vector<int32_t> &sensorPixelModesUsed, int64_t dynamicRangeProfile,
int64_t streamUseCase, int timestampBase, int mirrorMode);
@@ -112,25 +114,25 @@
bool isStreamUseCaseSupported(int64_t streamUseCase, const CameraMetadata &deviceInfo);
void mapStreamInfo(const OutputStreamInfo &streamInfo,
- camera3::camera_stream_rotation_t rotation, String8 physicalId,
+ camera3::camera_stream_rotation_t rotation, const std::string &physicalId,
int32_t groupId, aidl::android::hardware::camera::device::Stream *stream /*out*/);
// Check that the physicalCameraId passed in is spported by the camera
// device.
binder::Status checkPhysicalCameraId(
-const std::vector<std::string> &physicalCameraIds, const String8 &physicalCameraId,
-const String8 &logicalCameraId);
+const std::vector<std::string> &physicalCameraIds, const std::string &physicalCameraId,
+const std::string &logicalCameraId);
binder::Status checkSurfaceType(size_t numBufferProducers,
bool deferredConsumer, int surfaceType);
binder::Status checkOperatingMode(int operatingMode,
-const CameraMetadata &staticInfo, const String8 &cameraId);
+const CameraMetadata &staticInfo, const std::string &cameraId);
binder::Status
convertToHALStreamCombination(
const SessionConfiguration& sessionConfiguration,
- const String8 &logicalCameraId, const CameraMetadata &deviceInfo,
+ const std::string &logicalCameraId, const CameraMetadata &deviceInfo,
metadataGetter getMetadata, const std::vector<std::string> &physicalCameraIds,
aidl::android::hardware::camera::device::StreamConfiguration &streamConfiguration,
bool overrideForPerfClass, bool *earlyExit);
diff --git a/services/camera/libcameraservice/utils/SessionConfigurationUtilsHidl.cpp b/services/camera/libcameraservice/utils/SessionConfigurationUtilsHidl.cpp
index 5444f2a..f63eea1 100644
--- a/services/camera/libcameraservice/utils/SessionConfigurationUtilsHidl.cpp
+++ b/services/camera/libcameraservice/utils/SessionConfigurationUtilsHidl.cpp
@@ -105,7 +105,7 @@
binder::Status
convertToHALStreamCombination(
const SessionConfiguration& sessionConfiguration,
- const String8 &logicalCameraId, const CameraMetadata &deviceInfo,
+ const std::string &logicalCameraId, const CameraMetadata &deviceInfo,
metadataGetter getMetadata, const std::vector<std::string> &physicalCameraIds,
hardware::camera::device::V3_7::StreamConfiguration &streamConfiguration,
bool overrideForPerfClass, bool *earlyExit) {
diff --git a/services/camera/libcameraservice/utils/SessionConfigurationUtilsHidl.h b/services/camera/libcameraservice/utils/SessionConfigurationUtilsHidl.h
index c47abe0..eae2e30 100644
--- a/services/camera/libcameraservice/utils/SessionConfigurationUtilsHidl.h
+++ b/services/camera/libcameraservice/utils/SessionConfigurationUtilsHidl.h
@@ -34,7 +34,7 @@
// isn't valid.
binder::Status
convertToHALStreamCombination(const SessionConfiguration& sessionConfiguration,
- const String8 &cameraId, const CameraMetadata &deviceInfo,
+ const std::string &cameraId, const CameraMetadata &deviceInfo,
metadataGetter getMetadata, const std::vector<std::string> &physicalCameraIds,
hardware::camera::device::V3_7::StreamConfiguration &streamConfiguration,
bool overrideForPerfClass, bool *earlyExit);
diff --git a/services/camera/libcameraservice/utils/TagMonitor.cpp b/services/camera/libcameraservice/utils/TagMonitor.cpp
index fe87ed6..38de93a 100644
--- a/services/camera/libcameraservice/utils/TagMonitor.cpp
+++ b/services/camera/libcameraservice/utils/TagMonitor.cpp
@@ -18,11 +18,15 @@
#define ATRACE_TAG ATRACE_TAG_CAMERA
//#define LOG_NDEBUG 0
+#include <iostream>
+#include <sstream>
+
#include "TagMonitor.h"
#include <inttypes.h>
#include <utils/Log.h>
#include <camera/VendorTagDescriptor.h>
+#include <camera/StringUtils.h>
#include <camera_metadata_hidden.h>
#include <device3/Camera3Stream.h>
@@ -44,7 +48,7 @@
mMonitoringEvents(other.mMonitoringEvents),
mVendorTagId(other.mVendorTagId) {}
-const String16 TagMonitor::kMonitorOption = String16("-m");
+const std::string TagMonitor::kMonitorOption("-m");
const char* TagMonitor::k3aTags =
"android.control.aeMode, android.control.afMode, android.control.awbMode,"
@@ -56,17 +60,17 @@
"android.control.effectMode, android.control.mode, android.control.sceneMode,"
"android.control.videoStabilizationMode";
-void TagMonitor::parseTagsToMonitor(String8 tagNames) {
+void TagMonitor::parseTagsToMonitor(std::string tagNames) {
std::lock_guard<std::mutex> lock(mMonitorMutex);
// Expand shorthands
ssize_t idx = tagNames.find("3a");
if (idx != -1) {
ssize_t end = tagNames.find(",", idx);
- char* start = tagNames.lockBuffer(tagNames.size());
- start[idx] = '\0';
- char* rest = (end != -1) ? (start + end) : (start + tagNames.size());
- tagNames = String8::format("%s%s%s", start, k3aTags, rest);
+ tagNames = tagNames.substr(0, idx) + k3aTags;
+ if (end != -1) {
+ tagNames += tagNames.substr(end);
+ }
}
sp<VendorTagDescriptor> vTags =
@@ -81,14 +85,13 @@
bool gotTag = false;
- char *tokenized = tagNames.lockBuffer(tagNames.size());
- char *savePtr;
- char *nextTagName = strtok_r(tokenized, ", ", &savePtr);
- while (nextTagName != nullptr) {
+ std::istringstream iss(tagNames);
+ std::string nextTagName;
+ while (std::getline(iss, nextTagName, ',')) {
uint32_t tag;
- status_t res = CameraMetadata::getTagFromName(nextTagName, vTags.get(), &tag);
+ status_t res = CameraMetadata::getTagFromName(nextTagName.c_str(), vTags.get(), &tag);
if (res != OK) {
- ALOGW("%s: Unknown tag %s, ignoring", __FUNCTION__, nextTagName);
+ ALOGW("%s: Unknown tag %s, ignoring", __FUNCTION__, nextTagName.c_str());
} else {
if (!gotTag) {
mMonitoredTagList.clear();
@@ -96,11 +99,9 @@
}
mMonitoredTagList.push_back(tag);
}
- nextTagName = strtok_r(nullptr, ", ", &savePtr);
+ iss >> std::ws;
}
- tagNames.unlockBuffer();
-
if (gotTag) {
// Got at least one new tag
mMonitoringEnabled = true;
@@ -269,7 +270,7 @@
for (const auto& event : mMonitoringEvents) {
int indentation = (event.source == REQUEST) ? 15 : 30;
- String8 eventString = String8::format("f%d:%" PRId64 "ns:%*s%*s",
+ std::string eventString = fmt::sprintf("f%d:%" PRId64 "ns:%*s%*s",
event.frameNumber, event.timestamp,
2, event.cameraId.c_str(),
indentation,
@@ -278,20 +279,20 @@
if (!event.outputStreamIds.empty()) {
eventString += " output stream ids:";
for (const auto& id : event.outputStreamIds) {
- eventString.appendFormat(" %d", id);
+ eventString += fmt::sprintf(" %d", id);
}
eventString += "\n";
- vec.emplace_back(eventString.string());
+ vec.emplace_back(eventString);
continue;
}
if (event.inputStreamId != -1) {
- eventString.appendFormat(" input stream id: %d\n", event.inputStreamId);
- vec.emplace_back(eventString.string());
+ eventString += fmt::sprintf(" input stream id: %d\n", event.inputStreamId);
+ vec.emplace_back(eventString);
continue;
}
- eventString += String8::format(
+ eventString += fmt::sprintf(
"%s.%s: ",
get_local_camera_metadata_section_name_vendor_id(event.tag, mVendorTagId),
get_local_camera_metadata_tag_name_vendor_id(event.tag, mVendorTagId));
@@ -303,14 +304,14 @@
event.newData.data(), event.tag, event.type,
event.newData.size() / camera_metadata_type_size[event.type], indentation + 18);
}
- vec.emplace_back(eventString.string());
+ vec.emplace_back(eventString);
}
}
#define CAMERA_METADATA_ENUM_STRING_MAX_SIZE 29
-String8 TagMonitor::getEventDataString(const uint8_t* data_ptr, uint32_t tag, int type, int count,
- int indentation) {
+std::string TagMonitor::getEventDataString(const uint8_t* data_ptr, uint32_t tag, int type,
+ int count, int indentation) {
static int values_per_line[NUM_TYPES] = {
[TYPE_BYTE] = 16,
[TYPE_INT32] = 8,
@@ -327,11 +328,11 @@
int lines = count / values_per_line[type];
if (count % values_per_line[type] != 0) lines++;
- String8 returnStr = String8();
+ std::ostringstream returnStr;
int index = 0;
int j, k;
for (j = 0; j < lines; j++) {
- returnStr.appendFormat("%*s[", (j != 0) ? indentation + 4 : 0, "");
+ returnStr << fmt::sprintf("%*s[", (j != 0) ? indentation + 4 : 0, "");
for (k = 0;
k < values_per_line[type] && count > 0;
k++, count--, index += type_size) {
@@ -344,9 +345,9 @@
value_string_tmp,
sizeof(value_string_tmp))
== OK) {
- returnStr += value_string_tmp;
+ returnStr << value_string_tmp;
} else {
- returnStr.appendFormat("%hhu", *(data_ptr + index));
+ returnStr << fmt::sprintf("%hhu ", *(data_ptr + index));
}
break;
case TYPE_INT32:
@@ -357,33 +358,33 @@
value_string_tmp,
sizeof(value_string_tmp))
== OK) {
- returnStr += value_string_tmp;
+ returnStr << value_string_tmp;
} else {
- returnStr.appendFormat("%" PRId32 " ", *(int32_t*)(data_ptr + index));
+ returnStr << fmt::sprintf("%" PRId32 " ", *(int32_t*)(data_ptr + index));
}
break;
case TYPE_FLOAT:
- returnStr.appendFormat("%0.8f", *(float*)(data_ptr + index));
+ returnStr << fmt::sprintf("%0.8f ", *(float*)(data_ptr + index));
break;
case TYPE_INT64:
- returnStr.appendFormat("%" PRId64 " ", *(int64_t*)(data_ptr + index));
+ returnStr << fmt::sprintf("%" PRId64 " ", *(int64_t*)(data_ptr + index));
break;
case TYPE_DOUBLE:
- returnStr.appendFormat("%0.8f ", *(double*)(data_ptr + index));
+ returnStr << fmt::sprintf("%0.8f ", *(double*)(data_ptr + index));
break;
case TYPE_RATIONAL: {
int32_t numerator = *(int32_t*)(data_ptr + index);
int32_t denominator = *(int32_t*)(data_ptr + index + 4);
- returnStr.appendFormat("(%d / %d) ", numerator, denominator);
+ returnStr << fmt::sprintf("(%d / %d) ", numerator, denominator);
break;
}
default:
- returnStr += "??? ";
+ returnStr << "??? ";
}
}
- returnStr += "]\n";
+ returnStr << "]\n";
}
- return returnStr;
+ return std::move(returnStr.str());
}
template<typename T>
diff --git a/services/camera/libcameraservice/utils/TagMonitor.h b/services/camera/libcameraservice/utils/TagMonitor.h
index 9ded15d..bff4de0 100644
--- a/services/camera/libcameraservice/utils/TagMonitor.h
+++ b/services/camera/libcameraservice/utils/TagMonitor.h
@@ -21,9 +21,9 @@
#include <atomic>
#include <mutex>
#include <unordered_map>
+#include <string>
#include <utils/RefBase.h>
-#include <utils/String8.h>
#include <utils/Timers.h>
#include <media/RingBuffer.h>
@@ -42,7 +42,7 @@
public:
// Monitor argument
- static const String16 kMonitorOption;
+ static const std::string kMonitorOption;
enum eventSource {
REQUEST,
@@ -59,7 +59,7 @@
// If invalid, do nothing.
// Recognizes "3a" as a shortcut for enabling tracking 3A state, mode, and
// triggers
- void parseTagsToMonitor(String8 tagNames);
+ void parseTagsToMonitor(std::string tagNames);
// Disable monitoring; does not clear the event log
void disableMonitoring();
@@ -85,8 +85,8 @@
// function.
void dumpMonitoredTagEventsToVectorLocked(std::vector<std::string> &out);
- static String8 getEventDataString(const uint8_t* data_ptr, uint32_t tag, int type, int count,
- int indentation);
+ static std::string getEventDataString(const uint8_t* data_ptr, uint32_t tag, int type,
+ int count, int indentation);
void monitorSingleMetadata(TagMonitor::eventSource source, int64_t frameNumber,
nsecs_t timestamp, const std::string& cameraId, uint32_t tag,