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/aidl/AidlCameraService.cpp b/services/camera/libcameraservice/aidl/AidlCameraService.cpp
index 4232a81..a62f6de 100644
--- a/services/camera/libcameraservice/aidl/AidlCameraService.cpp
+++ b/services/camera/libcameraservice/aidl/AidlCameraService.cpp
@@ -86,7 +86,7 @@
if (_aidl_return == nullptr) { return fromSStatus(SStatus::ILLEGAL_ARGUMENT); }
::android::CameraMetadata cameraMetadata;
- UStatus ret = mCameraService->getCameraCharacteristics(String16(in_cameraId.c_str()),
+ UStatus ret = mCameraService->getCameraCharacteristics(in_cameraId,
mVndkVersion,
/* overrideToPortrait= */ false,
&cameraMetadata);
@@ -140,8 +140,8 @@
sp<hardware::camera2::ICameraDeviceCallbacks> callbacks = hybridCallbacks;
binder::Status serviceRet = mCameraService->connectDevice(
callbacks,
- String16(in_cameraId.c_str()),
- String16(""),
+ in_cameraId,
+ std::string(),
/* clientFeatureId= */{},
hardware::ICameraService::USE_CALLING_UID,
/* scoreOffset= */ 0,
@@ -249,7 +249,7 @@
[this](const hardware::CameraStatus& s) {
bool supportsHAL3 = false;
binder::Status sRet =
- mCameraService->supportsCameraApi(String16(s.cameraId),
+ mCameraService->supportsCameraApi(s.cameraId,
UICameraService::API_VERSION_2, &supportsHAL3);
return !sRet.isOk() || !supportsHAL3;
}), cameraStatusAndIds->end());
diff --git a/services/camera/libcameraservice/aidl/AidlCameraServiceListener.cpp b/services/camera/libcameraservice/aidl/AidlCameraServiceListener.cpp
index e183063..d7ab0d9 100644
--- a/services/camera/libcameraservice/aidl/AidlCameraServiceListener.cpp
+++ b/services/camera/libcameraservice/aidl/AidlCameraServiceListener.cpp
@@ -18,6 +18,7 @@
#include <aidl/AidlUtils.h>
#include <aidl/android/frameworks/cameraservice/common/Status.h>
#include <aidl/android/frameworks/cameraservice/service/CameraStatusAndId.h>
+#include <camera/StringUtils.h>
namespace android::frameworks::cameraservice::service::implementation {
@@ -27,34 +28,31 @@
using SStatus = ::aidl::android::frameworks::cameraservice::common::Status;
binder::Status AidlCameraServiceListener::onStatusChanged(
- int32_t status, const ::android::String16& cameraId) {
+ int32_t status, const std::string& cameraId) {
SCameraDeviceStatus sStatus = convertCameraStatusToAidl(status);
- std::string sCameraId = String8(cameraId).string();
- auto ret = mBase->onStatusChanged(sStatus, sCameraId);
+ auto ret = mBase->onStatusChanged(sStatus, cameraId);
LOG_STATUS_ERROR_IF_NOT_OK(ret, "onStatusChanged")
return binder::Status::ok();
}
binder::Status AidlCameraServiceListener::onPhysicalCameraStatusChanged(
- int32_t status, const ::android::String16& cameraId,
- const ::android::String16& physicalCameraId) {
+ int32_t status, const std::string& cameraId,
+ const std::string& physicalCameraId) {
SCameraDeviceStatus sStatus = convertCameraStatusToAidl(status);
- std::string sCameraId = String8(cameraId).string();
- std::string sPhysicalCameraId = String8(physicalCameraId).string();
- auto ret = mBase->onPhysicalCameraStatusChanged(sStatus, sCameraId, sPhysicalCameraId);
+ auto ret = mBase->onPhysicalCameraStatusChanged(sStatus, cameraId, physicalCameraId);
LOG_STATUS_ERROR_IF_NOT_OK(ret, "onPhysicalCameraStatusChanged")
return binder::Status::ok();
}
::android::binder::Status AidlCameraServiceListener::onTorchStatusChanged(
- int32_t, const ::android::String16&) {
+ int32_t, const std::string&) {
// We don't implement onTorchStatusChanged
return binder::Status::ok();
}
::android::binder::Status AidlCameraServiceListener::onTorchStrengthLevelChanged(
- const ::android::String16&, int32_t) {
+ const std::string&, int32_t) {
// We don't implement onTorchStrengthLevelChanged
return binder::Status::ok();
}
diff --git a/services/camera/libcameraservice/aidl/AidlCameraServiceListener.h b/services/camera/libcameraservice/aidl/AidlCameraServiceListener.h
index 906dd8e..6483fe1 100644
--- a/services/camera/libcameraservice/aidl/AidlCameraServiceListener.h
+++ b/services/camera/libcameraservice/aidl/AidlCameraServiceListener.h
@@ -45,25 +45,25 @@
~AidlCameraServiceListener() = default;
::android::binder::Status onStatusChanged(int32_t status,
- const ::android::String16& cameraId) override;
+ const std::string& cameraId) override;
::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;
::android::binder::Status onTorchStatusChanged(
- int32_t status, const ::android::String16& cameraId) override;
+ int32_t status, const std::string& cameraId) override;
::android::binder::Status onTorchStrengthLevelChanged(
- const ::android::String16& cameraId, int32_t newStrengthLevel) override;
+ const std::string& cameraId, int32_t newStrengthLevel) override;
binder::Status onCameraAccessPrioritiesChanged() override {
// TODO: no implementation yet.
return binder::Status::ok();
}
- binder::Status onCameraOpened(const ::android::String16& /*cameraId*/,
- const ::android::String16& /*clientPackageId*/) override {
+ binder::Status onCameraOpened(const std::string& /*cameraId*/,
+ const std::string& /*clientPackageId*/) override {
// empty implementation
return binder::Status::ok();
}
- binder::Status onCameraClosed(const ::android::String16& /*cameraId*/) override {
+ binder::Status onCameraClosed(const std::string& /*cameraId*/) override {
// empty implementation
return binder::Status::ok();
}
diff --git a/services/camera/libcameraservice/aidl/AidlUtils.cpp b/services/camera/libcameraservice/aidl/AidlUtils.cpp
index 1b8e53b..7291c5f 100644
--- a/services/camera/libcameraservice/aidl/AidlUtils.cpp
+++ b/services/camera/libcameraservice/aidl/AidlUtils.cpp
@@ -22,6 +22,7 @@
#include <device3/Camera3StreamInterface.h>
#include <gui/bufferqueue/1.0/H2BGraphicBufferProducer.h>
#include <mediautils/AImageReaderUtils.h>
+#include <camera/StringUtils.h>
namespace android::hardware::cameraservice::utils::conversion::aidl {
@@ -80,9 +81,8 @@
iGBPs.push_back(new H2BGraphicBufferProducer(AImageReader_getHGBPFromHandle(nh)));
native_handle_delete(nh);
}
- String16 physicalCameraId16(src.physicalCameraId.c_str());
UOutputConfiguration outputConfiguration(
- iGBPs, convertFromAidl(src.rotation), physicalCameraId16,
+ iGBPs, convertFromAidl(src.rotation), src.physicalCameraId,
src.windowGroupId, OutputConfiguration::SURFACE_TYPE_UNKNOWN, 0, 0,
(windowHandles.size() > 1));
return outputConfiguration;
@@ -175,7 +175,7 @@
dst.frameNumber = src.frameNumber;
dst.partialResultCount = src.partialResultCount;
dst.errorStreamId = src.errorStreamId;
- dst.errorPhysicalCameraId = String8(src.errorPhysicalCameraId).string();
+ dst.errorPhysicalCameraId = src.errorPhysicalCameraId;
return dst;
}
@@ -217,7 +217,7 @@
SPhysicalCaptureResultInfo convertToAidl(const UPhysicalCaptureResultInfo & src,
std::shared_ptr<CaptureResultMetadataQueue> & fmq) {
SPhysicalCaptureResultInfo dst;
- dst.physicalCameraId = String8(src.mPhysicalCameraId).string();
+ dst.physicalCameraId = src.mPhysicalCameraId;
const camera_metadata_t *rawMetadata = src.mPhysicalCameraMetadata.getAndLock();
// Try using fmq at first.
@@ -242,12 +242,12 @@
size_t i = 0;
for (const auto &statusAndId : src) {
auto &a = (*dst)[i++];
- a.cameraId = statusAndId.cameraId.c_str();
+ a.cameraId = statusAndId.cameraId;
a.deviceStatus = convertCameraStatusToAidl(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];
}
}
}
@@ -302,4 +302,4 @@
return OK;
}
-} // namespace android::hardware::cameraservice::utils::conversion::aidl
\ No newline at end of file
+} // namespace android::hardware::cameraservice::utils::conversion::aidl