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
Merged-In: I59330ac03c8a52b6c21a2388bba0c143e68af4cf
Bug: 265487852
Test: Presubmit, ran CtsCameraTestCases on Cuttlefish, adb shell dumpsys media camera and observed output
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 0f7f127..59fc1cd 100644
--- a/services/camera/libcameraservice/hidl/HidlCameraDeviceUser.cpp
+++ b/services/camera/libcameraservice/hidl/HidlCameraDeviceUser.cpp
@@ -112,7 +112,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 d6910fe..4f12933 100644
--- a/services/camera/libcameraservice/hidl/HidlCameraService.cpp
+++ b/services/camera/libcameraservice/hidl/HidlCameraService.cpp
@@ -65,7 +65,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;
@@ -116,7 +116,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);
@@ -242,7 +242,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 2a24a23..b5dddf7 100644
--- a/services/camera/libcameraservice/hidl/Utils.cpp
+++ b/services/camera/libcameraservice/hidl/Utils.cpp
@@ -18,6 +18,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 {
@@ -89,9 +90,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;
@@ -157,8 +158,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;
}
@@ -191,7 +192,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;
@@ -203,12 +204,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;
@@ -265,7 +266,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.