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.
Change-Id: I59330ac03c8a52b6c21a2388bba0c143e68af4cf
Bug: 265487852
Test: Presubmit, ran CtsCameraTestCases on Cuttlefish, adb shell dumpsys media camera and observed output
diff --git a/services/camera/libcameraservice/common/Camera2ClientBase.cpp b/services/camera/libcameraservice/common/Camera2ClientBase.cpp
index 6e10f30..a54ba9b 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 @@
const sp<CameraService>& cameraService,
const sp<TCamCallbacks>& remoteCallback,
std::shared_ptr<CameraServiceProxyWrapper> cameraServiceProxyWrapper,
- 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,
@@ -69,8 +70,8 @@
mCameraServiceProxyWrapper(cameraServiceProxyWrapper),
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;
@@ -91,21 +92,21 @@
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;
IPCTransport providerTransport = IPCTransport::INVALID;
- res = providerPtr->getCameraIdIPCTransport(TClientBase::mCameraIdStr.string(),
+ res = providerPtr->getCameraIdIPCTransport(TClientBase::mCameraIdStr,
&providerTransport);
if (res != OK) {
return res;
@@ -125,19 +126,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;
}
@@ -152,7 +153,7 @@
res = mDevice->setNotifyCallback(weakThis);
if (res != OK) {
ALOGE("%s: Camera %s: Unable to set notify callback: %s (%d)",
- __FUNCTION__, TClientBase::mCameraIdStr.string(), strerror(-res), res);
+ __FUNCTION__, TClientBase::mCameraIdStr.c_str(), strerror(-res), res);
return res;
}
@@ -183,30 +184,30 @@
}
ALOGI("%s: Client object's dtor for Camera Id %s completed. Client was: %s (PID %d, UID %u)",
- __FUNCTION__, TClientBase::mCameraIdStr.string(),
- String8(TClientBase::mClientPackageName).string(),
+ __FUNCTION__, 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");
@@ -241,23 +242,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;
@@ -284,23 +285,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();
}
@@ -308,7 +309,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;
}
@@ -318,7 +319,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>
@@ -334,7 +335,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;
@@ -365,8 +366,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) {
@@ -387,7 +387,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;
}
mCameraServiceProxyWrapper->logActive(TClientBase::mCameraIdStr, maxPreviewFps);
@@ -407,7 +407,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);
}
mCameraServiceProxyWrapper->logIdle(TClientBase::mCameraIdStr,
requestCount, resultErrorCount, deviceError, userTag, videoStabilizationMode,
@@ -522,7 +522,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 5cf3033..30c763d 100644
--- a/services/camera/libcameraservice/common/Camera2ClientBase.h
+++ b/services/camera/libcameraservice/common/Camera2ClientBase.h
@@ -50,10 +50,10 @@
Camera2ClientBase(const sp<CameraService>& cameraService,
const sp<TCamCallbacks>& remoteCallback,
std::shared_ptr<CameraServiceProxyWrapper> cameraServiceProxyWrapper,
- 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,
@@ -65,11 +65,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
@@ -130,7 +131,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;
@@ -181,7 +182,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 919108d..017da0f 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;
virtual bool isCompositeJpegRDisabled() const { return false; };
@@ -188,7 +188,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,
@@ -212,7 +212,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,
@@ -510,7 +510,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 1a6e341..23051ef 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
@@ -43,6 +43,7 @@
#include <hwbinder/IPCThreadState.h>
#include <utils/Trace.h>
#include <ui/PublicFormat.h>
+#include <camera/StringUtils.h>
#include "api2/HeicCompositeStream.h"
#include "device3/ZoomRatioMapper.h"
@@ -143,7 +144,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",
@@ -774,14 +775,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) {
@@ -796,7 +797,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
@@ -805,7 +806,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 "
@@ -823,7 +824,7 @@
{
std::lock_guard<std::mutex> lock(mInterfaceMutex);
- res = addAidlProviderLocked(String8(name).c_str());
+ res = addAidlProviderLocked(toStdString(name));
}
sp<StatusListener> listener = getStatusListener();
@@ -2035,14 +2036,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);
@@ -2182,7 +2183,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);
@@ -2222,8 +2223,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();
}
}
@@ -2324,8 +2324,7 @@
CameraDeviceStatus internalNewStatus = newStatus;
if (!mInitialized) {
mCachedStatus.emplace_back(false /*isPhysicalCameraStatus*/,
- cameraDeviceName.c_str(), std::string().c_str(),
- internalNewStatus);
+ cameraDeviceName, std::string(), internalNewStatus);
return;
}
@@ -2339,7 +2338,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);
}
}
@@ -2415,8 +2414,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;
}
@@ -2467,7 +2465,7 @@
}
*id = cameraId;
- *physicalId = physicalCameraDeviceName.c_str();
+ *physicalId = physicalCameraDeviceName;
return OK;
}
@@ -2511,7 +2509,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 e6e4619..a2ec576 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;
};
@@ -784,7 +784,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 b18cbd4..5e79d6b 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));
}
@@ -735,7 +735,7 @@
camera::device::StreamConfiguration streamConfiguration;
bool earlyExit = false;
auto bRes = SessionConfigurationUtils::convertToHALStreamCombination(configuration,
- String8(mId.c_str()), mCameraCharacteristics, mCompositeJpegRDisabled, getMetadata,
+ mId, mCameraCharacteristics, mCompositeJpegRDisabled, getMetadata,
mPhysicalIds, streamConfiguration, overrideForPerfClass, &earlyExit);
if (!bRes.isOk()) {
@@ -789,9 +789,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;
@@ -801,7 +801,7 @@
bStatus =
SessionConfigurationUtils::convertToHALStreamCombination(
cameraIdAndSessionConfig.mSessionConfiguration,
- String8(cameraId.c_str()), deviceInfo,
+ cameraId, deviceInfo,
mManager->isCompositeJpegRDisabledLocked(cameraId), getMetadata,
physicalCameraIds, streamConfiguration,
overrideForPerfClass, &shouldExit);
diff --git a/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp b/services/camera/libcameraservice/common/hidl/HidlProviderInfo.cpp
index 8ff5c3f..bf7a471 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));
}
@@ -837,7 +837,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()) {
@@ -927,9 +927,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;
};
@@ -938,7 +938,7 @@
bStatus =
SessionConfigurationUtils::convertToHALStreamCombination(
cameraIdAndSessionConfig.mSessionConfiguration,
- String8(cameraId.c_str()), deviceInfo, getMetadata,
+ cameraId, deviceInfo, getMetadata,
physicalCameraIds, streamConfiguration,
overrideForPerfClass, &shouldExit);
if (!bStatus.isOk()) {