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/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 da4484a..33220ce 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;
}
@@ -183,7 +184,9 @@
return err;
}
- parcel->readString16(&mPhysicalCameraId);
+ String16 physicalCameraId;
+ parcel->readString16(&physicalCameraId);
+ mPhysicalCameraId = toStdString(physicalCameraId);
int isMultiResolution = 0;
if ((err = parcel->readInt32(&isMultiResolution)) != OK) {
@@ -246,7 +249,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);
}
@@ -258,14 +261,14 @@
" physicalCameraId = %s, isMultiResolution = %d, streamUseCase = %" PRId64
", timestampBase = %d, mirrorMode = %d, useReadoutTimestamp = %d",
__FUNCTION__, mRotation, mSurfaceSetID, mSurfaceType,
- String8(mPhysicalCameraId).string(), mIsMultiResolution, mStreamUseCase, timestampBase,
+ mPhysicalCameraId.c_str(), mIsMultiResolution, mStreamUseCase, timestampBase,
mMirrorMode, mUseReadoutTimestamp);
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;
@@ -284,7 +287,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),
@@ -331,7 +334,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);