Merge "Use String8/16 c_str [media]" into main
diff --git a/media/codec2/hal/client/Android.bp b/media/codec2/hal/client/Android.bp
index 7a0525b..61ec10e 100644
--- a/media/codec2/hal/client/Android.bp
+++ b/media/codec2/hal/client/Android.bp
@@ -28,6 +28,10 @@
"output.cpp",
],
+ defaults: [
+ "libcodec2-aidl-client-defaults",
+ ],
+
header_libs: [
"libcodec2_internal", // private
],
diff --git a/media/codec2/hal/client/client.cpp b/media/codec2/hal/client/client.cpp
index eb3b936..b0ce733 100644
--- a/media/codec2/hal/client/client.cpp
+++ b/media/codec2/hal/client/client.cpp
@@ -44,6 +44,7 @@
#include <android-base/properties.h>
#include <bufferpool/ClientManager.h>
+#include <codec2/aidl/ParamTypes.h>
#include <codec2/hidl/1.0/types.h>
#include <codec2/hidl/1.1/types.h>
#include <codec2/hidl/1.2/types.h>
@@ -584,33 +585,202 @@
const std::vector<C2Param::Index> &heapParamIndices,
c2_blocking_t mayBlock,
std::vector<std::unique_ptr<C2Param>>* const heapParams) const {
- (void)stackParams, (void)heapParamIndices, (void)mayBlock, (void)heapParams;
- // TODO: implementation
- return C2_OMITTED;
+ std::vector<int> indices(
+ stackParams.size() + heapParamIndices.size());
+ size_t numIndices = 0;
+ for (C2Param* const& stackParam : stackParams) {
+ if (!stackParam) {
+ LOG(WARNING) << "query -- null stack param encountered.";
+ continue;
+ }
+ indices[numIndices++] = int(stackParam->index());
+ }
+ size_t numStackIndices = numIndices;
+ for (const C2Param::Index& index : heapParamIndices) {
+ indices[numIndices++] = int(static_cast<uint32_t>(index));
+ }
+ indices.resize(numIndices);
+ if (heapParams) {
+ heapParams->reserve(heapParams->size() + numIndices);
+ }
+ c2_aidl::Params result;
+ ndk::ScopedAStatus transStatus = mBase->query(indices, (mayBlock == C2_MAY_BLOCK), &result);
+ if (!transStatus.isOk()) {
+ if (transStatus.getExceptionCode() == EX_SERVICE_SPECIFIC) {
+ c2_status_t status = static_cast<c2_status_t>(transStatus.getServiceSpecificError());
+ LOG(DEBUG) << "query -- call failed: " << status << ".";
+ return status;
+ } else {
+ LOG(ERROR) << "query -- transaction failed.";
+ return C2_TRANSACTION_FAILED;
+ }
+ }
+
+ c2_status_t status = C2_OK;
+ std::vector<C2Param*> paramPointers;
+ if (!c2_aidl::utils::ParseParamsBlob(¶mPointers, result)) {
+ LOG(ERROR) << "query -- error while parsing params.";
+ return C2_CORRUPTED;
+ }
+ size_t i = 0;
+ for (auto it = paramPointers.begin();
+ it != paramPointers.end(); ) {
+ C2Param* paramPointer = *it;
+ if (numStackIndices > 0) {
+ --numStackIndices;
+ if (!paramPointer) {
+ LOG(DEBUG) << "query -- null stack param.";
+ ++it;
+ continue;
+ }
+ for (; i < stackParams.size() && !stackParams[i]; ) {
+ ++i;
+ }
+ if (i >= stackParams.size()) {
+ LOG(ERROR) << "query -- unexpected error.";
+ status = C2_CORRUPTED;
+ break;
+ }
+ if (stackParams[i]->index() != paramPointer->index()) {
+ LOG(DEBUG) << "query -- param skipped: "
+ "index = "
+ << stackParams[i]->index() << ".";
+ stackParams[i++]->invalidate();
+ // this means that the param could not be queried.
+ // signalling C2_BAD_INDEX to the client.
+ status = C2_BAD_INDEX;
+ continue;
+ }
+ if (!stackParams[i++]->updateFrom(*paramPointer)) {
+ LOG(WARNING) << "query -- param update failed: "
+ "index = "
+ << paramPointer->index() << ".";
+ }
+ } else {
+ if (!paramPointer) {
+ LOG(DEBUG) << "query -- null heap param.";
+ ++it;
+ continue;
+ }
+ if (!heapParams) {
+ LOG(WARNING) << "query -- "
+ "unexpected extra stack param.";
+ } else {
+ heapParams->emplace_back(C2Param::Copy(*paramPointer));
+ }
+ }
+ ++it;
+ }
+ return status;
}
c2_status_t Codec2ConfigurableClient::AidlImpl::config(
const std::vector<C2Param*> ¶ms,
c2_blocking_t mayBlock,
std::vector<std::unique_ptr<C2SettingResult>>* const failures) {
- (void)params, (void)mayBlock, (void)failures;
- // TODO: implementation
- return C2_OMITTED;
+ c2_aidl::Params aidlParams;
+ if (!c2_aidl::utils::CreateParamsBlob(&aidlParams, params)) {
+ LOG(ERROR) << "config -- bad input.";
+ return C2_TRANSACTION_FAILED;
+ }
+ c2_aidl::IConfigurable::ConfigResult result;
+ ndk::ScopedAStatus transStatus = mBase->config(aidlParams, (mayBlock == C2_MAY_BLOCK), &result);
+ if (!transStatus.isOk()) {
+ if (transStatus.getExceptionCode() == EX_SERVICE_SPECIFIC) {
+ c2_status_t status = static_cast<c2_status_t>(transStatus.getServiceSpecificError());
+ LOG(DEBUG) << "config -- call failed: " << status << ".";
+ return status;
+ } else {
+ LOG(ERROR) << "config -- transaction failed.";
+ return C2_TRANSACTION_FAILED;
+ }
+ }
+ c2_status_t status = C2_OK;
+ size_t i = failures->size();
+ failures->resize(i + result.failures.size());
+ for (const c2_aidl::SettingResult& sf : result.failures) {
+ if (!c2_aidl::utils::FromAidl(&(*failures)[i++], sf)) {
+ LOG(ERROR) << "config -- invalid SettingResult returned.";
+ return C2_CORRUPTED;
+ }
+ }
+ if (!c2_aidl::utils::UpdateParamsFromBlob(params, result.params)) {
+ LOG(ERROR) << "config -- "
+ << "failed to parse returned params.";
+ status = C2_CORRUPTED;
+ }
+ return status;
}
c2_status_t Codec2ConfigurableClient::AidlImpl::querySupportedParams(
std::vector<std::shared_ptr<C2ParamDescriptor>>* const params) const {
- (void)params;
- // TODO: implementation
- return C2_OMITTED;
+ // TODO: Cache and query properly!
+ std::vector<c2_aidl::ParamDescriptor> result;
+ ndk::ScopedAStatus transStatus = mBase->querySupportedParams(
+ std::numeric_limits<uint32_t>::min(),
+ std::numeric_limits<uint32_t>::max(),
+ &result);
+ if (!transStatus.isOk()) {
+ if (transStatus.getExceptionCode() == EX_SERVICE_SPECIFIC) {
+ c2_status_t status = static_cast<c2_status_t>(transStatus.getServiceSpecificError());
+ LOG(DEBUG) << "querySupportedParams -- call failed: " << status << ".";
+ return status;
+ } else {
+ LOG(ERROR) << "querySupportedParams -- transaction failed.";
+ return C2_TRANSACTION_FAILED;
+ }
+ }
+ c2_status_t status = C2_OK;
+ size_t i = params->size();
+ params->resize(i + result.size());
+ for (const c2_aidl::ParamDescriptor& sp : result) {
+ if (!c2_aidl::utils::FromAidl(&(*params)[i++], sp)) {
+ LOG(ERROR) << "querySupportedParams -- invalid returned ParamDescriptor.";
+ return C2_CORRUPTED;
+ }
+ }
+ return status;
}
c2_status_t Codec2ConfigurableClient::AidlImpl::querySupportedValues(
std::vector<C2FieldSupportedValuesQuery>& fields,
c2_blocking_t mayBlock) const {
- (void)fields, (void)mayBlock;
- // TODO: implementation
- return C2_OMITTED;
+ std::vector<c2_aidl::FieldSupportedValuesQuery> inFields(fields.size());
+ for (size_t i = 0; i < fields.size(); ++i) {
+ if (!c2_aidl::utils::ToAidl(&inFields[i], fields[i])) {
+ LOG(ERROR) << "querySupportedValues -- bad input";
+ return C2_TRANSACTION_FAILED;
+ }
+ }
+
+ std::vector<c2_aidl::FieldSupportedValuesQueryResult> result;
+ ndk::ScopedAStatus transStatus = mBase->querySupportedValues(
+ inFields, (mayBlock == C2_MAY_BLOCK), &result);
+ if (!transStatus.isOk()) {
+ if (transStatus.getExceptionCode() == EX_SERVICE_SPECIFIC) {
+ c2_status_t status = static_cast<c2_status_t>(transStatus.getServiceSpecificError());
+ LOG(DEBUG) << "querySupportedValues -- call failed: " << status << ".";
+ return status;
+ } else {
+ LOG(ERROR) << "querySupportedValues -- transaction failed.";
+ return C2_TRANSACTION_FAILED;
+ }
+ }
+ c2_status_t status = C2_OK;
+ if (result.size() != fields.size()) {
+ LOG(ERROR) << "querySupportedValues -- "
+ "input and output lists "
+ "have different sizes.";
+ return C2_CORRUPTED;
+ }
+ for (size_t i = 0; i < fields.size(); ++i) {
+ if (!c2_aidl::utils::FromAidl(&fields[i], inFields[i], result[i])) {
+ LOG(ERROR) << "querySupportedValues -- "
+ "invalid returned value.";
+ return C2_CORRUPTED;
+ }
+ }
+ return status;
}
// Codec2ConfigurableClient
@@ -1719,6 +1889,8 @@
static_cast<uint64_t>(blockPoolId),
bqId == 0 ? nullHgbp : igbp);
+ mOutputBufferQueue->expireOldWaiters();
+
if (!transStatus.isOk()) {
LOG(ERROR) << "setOutputSurface -- transaction failed.";
return C2_TRANSACTION_FAILED;
@@ -1764,6 +1936,7 @@
<< status << ".";
}
}
+ mOutputBufferQueue->expireOldWaiters();
}
c2_status_t Codec2Client::Component::connectToInputSurface(
diff --git a/media/codec2/hal/client/include/codec2/hidl/output.h b/media/codec2/hal/client/include/codec2/hidl/output.h
index 35a0224..2e89c3b 100644
--- a/media/codec2/hal/client/include/codec2/hidl/output.h
+++ b/media/codec2/hal/client/include/codec2/hidl/output.h
@@ -51,6 +51,10 @@
int maxDequeueBufferCount,
std::shared_ptr<V1_2::SurfaceSyncObj> *syncObj);
+ // If there are waiters to allocate from the old surface, wake up and expire
+ // them.
+ void expireOldWaiters();
+
// Stop using the current output surface. Pending buffer opeations will not
// perform anymore.
void stop();
@@ -90,6 +94,8 @@
std::weak_ptr<_C2BlockPoolData> mPoolDatas[BufferQueueDefs::NUM_BUFFER_SLOTS];
std::shared_ptr<C2SurfaceSyncMemory> mSyncMem;
bool mStopped;
+ std::mutex mOldMutex;
+ std::shared_ptr<C2SurfaceSyncMemory> mOldMem;
bool registerBuffer(const C2ConstGraphicBlock& block);
};
diff --git a/media/codec2/hal/client/output.cpp b/media/codec2/hal/client/output.cpp
index dd10691..a42229f 100644
--- a/media/codec2/hal/client/output.cpp
+++ b/media/codec2/hal/client/output.cpp
@@ -217,6 +217,7 @@
sp<GraphicBuffer> buffers[BufferQueueDefs::NUM_BUFFER_SLOTS];
std::weak_ptr<_C2BlockPoolData>
poolDatas[BufferQueueDefs::NUM_BUFFER_SLOTS];
+ std::shared_ptr<C2SurfaceSyncMemory> oldMem;
{
std::scoped_lock<std::mutex> l(mMutex);
bool stopped = mStopped;
@@ -238,7 +239,7 @@
}
return false;
}
- std::shared_ptr<C2SurfaceSyncMemory> oldMem = mSyncMem;
+ oldMem = mSyncMem;
C2SyncVariables *oldSync = mSyncMem ? mSyncMem->mem() : nullptr;
if (oldSync) {
oldSync->lock();
@@ -314,11 +315,26 @@
newSync->unlock();
}
}
+ {
+ std::scoped_lock<std::mutex> l(mOldMutex);
+ mOldMem = oldMem;
+ }
ALOGD("remote graphic buffer migration %zu/%zu",
success, tryNum);
return true;
}
+void OutputBufferQueue::expireOldWaiters() {
+ std::scoped_lock<std::mutex> l(mOldMutex);
+ if (mOldMem) {
+ C2SyncVariables *oldSync = mOldMem->mem();
+ if (oldSync) {
+ oldSync->notifyAll();
+ }
+ mOldMem.reset();
+ }
+}
+
void OutputBufferQueue::stop() {
std::scoped_lock<std::mutex> l(mMutex);
mStopped = true;
diff --git a/media/codec2/vndk/include/C2SurfaceSyncObj.h b/media/codec2/vndk/include/C2SurfaceSyncObj.h
index d858f27..b193b4a 100644
--- a/media/codec2/vndk/include/C2SurfaceSyncObj.h
+++ b/media/codec2/vndk/include/C2SurfaceSyncObj.h
@@ -112,6 +112,11 @@
*/
c2_status_t waitForChange(uint32_t waitId, c2_nsecs_t timeoutNs);
+ /**
+ * Wake up and expire all waitors.
+ */
+ void notifyAll();
+
C2SyncVariables() {}
private:
diff --git a/media/codec2/vndk/platform/C2SurfaceSyncObj.cpp b/media/codec2/vndk/platform/C2SurfaceSyncObj.cpp
index 01fd30b..d8c2292 100644
--- a/media/codec2/vndk/platform/C2SurfaceSyncObj.cpp
+++ b/media/codec2/vndk/platform/C2SurfaceSyncObj.cpp
@@ -278,6 +278,12 @@
return C2_BAD_VALUE;
}
+void C2SyncVariables::notifyAll() {
+ this->lock();
+ this->broadcast();
+ this->unlock();
+}
+
int C2SyncVariables::signal() {
mCond++;
diff --git a/media/img_utils/src/FileInput.cpp b/media/img_utils/src/FileInput.cpp
index 4c85a51..1eb614b 100644
--- a/media/img_utils/src/FileInput.cpp
+++ b/media/img_utils/src/FileInput.cpp
@@ -33,12 +33,12 @@
status_t FileInput::open() {
if (mOpen) {
- ALOGW("%s: Open called when file %s already open.", __FUNCTION__, mPath.string());
+ ALOGW("%s: Open called when file %s already open.", __FUNCTION__, mPath.c_str());
return OK;
}
mFp = ::fopen(mPath, "rb");
if (!mFp) {
- ALOGE("%s: Could not open file %s", __FUNCTION__, mPath.string());
+ ALOGE("%s: Could not open file %s", __FUNCTION__, mPath.c_str());
return BAD_VALUE;
}
mOpen = true;
@@ -47,14 +47,14 @@
ssize_t FileInput::read(uint8_t* buf, size_t offset, size_t count) {
if (!mOpen) {
- ALOGE("%s: Could not read file %s, file not open.", __FUNCTION__, mPath.string());
+ ALOGE("%s: Could not read file %s, file not open.", __FUNCTION__, mPath.c_str());
return BAD_VALUE;
}
size_t bytesRead = ::fread(buf + offset, sizeof(uint8_t), count, mFp);
int error = ::ferror(mFp);
if (error != 0) {
- ALOGE("%s: Error %d occurred while reading file %s.", __FUNCTION__, error, mPath.string());
+ ALOGE("%s: Error %d occurred while reading file %s.", __FUNCTION__, error, mPath.c_str());
return BAD_VALUE;
}
@@ -68,13 +68,13 @@
status_t FileInput::close() {
if(!mOpen) {
- ALOGW("%s: Close called when file %s already close.", __FUNCTION__, mPath.string());
+ ALOGW("%s: Close called when file %s already close.", __FUNCTION__, mPath.c_str());
return OK;
}
status_t ret = OK;
if(::fclose(mFp) != 0) {
- ALOGE("%s: Failed to close file %s.", __FUNCTION__, mPath.string());
+ ALOGE("%s: Failed to close file %s.", __FUNCTION__, mPath.c_str());
ret = BAD_VALUE;
}
mOpen = false;
diff --git a/media/img_utils/src/FileOutput.cpp b/media/img_utils/src/FileOutput.cpp
index 0346762..5e37324 100644
--- a/media/img_utils/src/FileOutput.cpp
+++ b/media/img_utils/src/FileOutput.cpp
@@ -25,19 +25,19 @@
FileOutput::~FileOutput() {
if (mOpen) {
- ALOGW("%s: Destructor called with %s still open.", __FUNCTION__, mPath.string());
+ ALOGW("%s: Destructor called with %s still open.", __FUNCTION__, mPath.c_str());
close();
}
}
status_t FileOutput::open() {
if (mOpen) {
- ALOGW("%s: Open called when file %s already open.", __FUNCTION__, mPath.string());
+ ALOGW("%s: Open called when file %s already open.", __FUNCTION__, mPath.c_str());
return OK;
}
mFp = ::fopen(mPath, "wb");
if (!mFp) {
- ALOGE("%s: Could not open file %s", __FUNCTION__, mPath.string());
+ ALOGE("%s: Could not open file %s", __FUNCTION__, mPath.c_str());
return BAD_VALUE;
}
mOpen = true;
@@ -46,7 +46,7 @@
status_t FileOutput::write(const uint8_t* buf, size_t offset, size_t count) {
if (!mOpen) {
- ALOGE("%s: Could not write file %s, file not open.", __FUNCTION__, mPath.string());
+ ALOGE("%s: Could not write file %s, file not open.", __FUNCTION__, mPath.c_str());
return BAD_VALUE;
}
@@ -54,7 +54,7 @@
int error = ::ferror(mFp);
if (error != 0) {
- ALOGE("%s: Error %d occurred while writing file %s.", __FUNCTION__, error, mPath.string());
+ ALOGE("%s: Error %d occurred while writing file %s.", __FUNCTION__, error, mPath.c_str());
return BAD_VALUE;
}
return OK;
@@ -62,13 +62,13 @@
status_t FileOutput::close() {
if(!mOpen) {
- ALOGW("%s: Close called when file %s already close.", __FUNCTION__, mPath.string());
+ ALOGW("%s: Close called when file %s already close.", __FUNCTION__, mPath.c_str());
return OK;
}
status_t ret = OK;
if(::fclose(mFp) != 0) {
- ALOGE("%s: Failed to close file %s.", __FUNCTION__, mPath.string());
+ ALOGE("%s: Failed to close file %s.", __FUNCTION__, mPath.c_str());
ret = BAD_VALUE;
}
mOpen = false;
diff --git a/media/img_utils/src/TiffIfd.cpp b/media/img_utils/src/TiffIfd.cpp
index 3fb00cc..b272814 100644
--- a/media/img_utils/src/TiffIfd.cpp
+++ b/media/img_utils/src/TiffIfd.cpp
@@ -377,7 +377,7 @@
size_t s = mEntries.size();
ALOGI("[ifd: %x, num_entries: %zu, entries:\n", getId(), s);
for(size_t i = 0; i < s; ++i) {
- ALOGI("\t%s", mEntries[i]->toString().string());
+ ALOGI("\t%s", mEntries[i]->toString().c_str());
}
ALOGI(", next_ifd: %x]", ((mNextIfd != NULL) ? mNextIfd->getId() : 0));
}
diff --git a/media/janitors/avic_OWNERS b/media/janitors/avic_OWNERS
index eca9978..81aac3a 100644
--- a/media/janitors/avic_OWNERS
+++ b/media/janitors/avic_OWNERS
@@ -3,4 +3,3 @@
arifdikici@google.com
dichenzhang@google.com
kyslov@google.com
-richardxie@google.com
diff --git a/media/libaudioclient/AudioRecord.cpp b/media/libaudioclient/AudioRecord.cpp
index 91b54a8..00c6d63 100644
--- a/media/libaudioclient/AudioRecord.cpp
+++ b/media/libaudioclient/AudioRecord.cpp
@@ -745,7 +745,7 @@
mInput, mLatency, mSelectedDeviceId, mRoutedDeviceId);
result.appendFormat(" mic direction(%d) mic field dimension(%f)",
mSelectedMicDirection, mSelectedMicFieldDimension);
- ::write(fd, result.string(), result.size());
+ ::write(fd, result.c_str(), result.size());
return NO_ERROR;
}
diff --git a/media/libaudioclient/AudioSystem.cpp b/media/libaudioclient/AudioSystem.cpp
index d58181c..377c242 100644
--- a/media/libaudioclient/AudioSystem.cpp
+++ b/media/libaudioclient/AudioSystem.cpp
@@ -86,7 +86,7 @@
void AudioSystem::setAudioFlingerBinder(const sp<IBinder>& audioFlinger) {
if (audioFlinger->getInterfaceDescriptor() != media::IAudioFlingerService::descriptor) {
ALOGE("setAudioFlingerBinder: received a binder of type %s",
- String8(audioFlinger->getInterfaceDescriptor()).string());
+ String8(audioFlinger->getInterfaceDescriptor()).c_str());
return;
}
Mutex::Autolock _l(gLock);
diff --git a/media/libaudioclient/AudioTrack.cpp b/media/libaudioclient/AudioTrack.cpp
index 0fa814c..97306c4 100644
--- a/media/libaudioclient/AudioTrack.cpp
+++ b/media/libaudioclient/AudioTrack.cpp
@@ -3005,7 +3005,7 @@
param.addInt(String8(AudioParameter::keyPresentationId), presentationId);
param.addInt(String8(AudioParameter::keyProgramId), programId);
ALOGV("%s(%d): PresentationId/ProgramId[%s]",
- __func__, mPortId, param.toString().string());
+ __func__, mPortId, param.toString().c_str());
status_t status;
mAudioTrack->setParameters(param.toString().c_str(), &status);
@@ -3448,7 +3448,7 @@
if (output != AUDIO_IO_HANDLE_NONE) {
return AudioSystem::getParameters(output, keys);
} else {
- return String8::empty();
+ return String8();
}
}
@@ -3494,7 +3494,7 @@
mLatency, mSelectedDeviceId, mRoutedDeviceId);
result.appendFormat(" output(%d) AF latency (%u) AF frame count(%zu) AF SampleRate(%u)\n",
mOutput, mAfLatency, mAfFrameCount, mAfSampleRate);
- ::write(fd, result.string(), result.size());
+ ::write(fd, result.c_str(), result.size());
return NO_ERROR;
}
diff --git a/media/libaudiohal/impl/ConversionHelperAidl.cpp b/media/libaudiohal/impl/ConversionHelperAidl.cpp
index 7197bf2..46abfda 100644
--- a/media/libaudiohal/impl/ConversionHelperAidl.cpp
+++ b/media/libaudiohal/impl/ConversionHelperAidl.cpp
@@ -69,7 +69,7 @@
// Re-parse the vendor-provided string to ensure that it is correct.
AudioParameter reparse(String8(vendorParameters.c_str()));
if (reparse.size() != 0) {
- if (!values->empty()) {
+ if (values->length() > 0) {
values->append(";");
}
values->append(reparse.toString().c_str());
diff --git a/media/libaudiohal/impl/CoreConversionHelperHidl.cpp b/media/libaudiohal/impl/CoreConversionHelperHidl.cpp
index 2ac8a42..bd18902 100644
--- a/media/libaudiohal/impl/CoreConversionHelperHidl.cpp
+++ b/media/libaudiohal/impl/CoreConversionHelperHidl.cpp
@@ -69,7 +69,7 @@
keepValueParam.add(key, value);
key = keepValueParam.toString();
}
- (*hidlKeys)[i] = key.string();
+ (*hidlKeys)[i] = key.c_str();
}
return OK;
}
@@ -84,8 +84,8 @@
String8 key, value;
status_t status = params.getAt(i, key, value);
if (status != OK) return status;
- (*hidlParams)[i].key = key.string();
- (*hidlParams)[i].value = value.string();
+ (*hidlParams)[i].key = key.c_str();
+ (*hidlParams)[i].value = value.c_str();
}
return OK;
}
diff --git a/media/libaudiohal/impl/EffectConversionHelperAidl.cpp b/media/libaudiohal/impl/EffectConversionHelperAidl.cpp
index 9cf0cb8..4e34fca 100644
--- a/media/libaudiohal/impl/EffectConversionHelperAidl.cpp
+++ b/media/libaudiohal/impl/EffectConversionHelperAidl.cpp
@@ -25,6 +25,7 @@
#include <media/AidlConversionCppNdk.h>
#include <media/AidlConversionNdk.h>
#include <media/AidlConversionEffect.h>
+#include <media/AudioContainers.h>
#include <system/audio_effects/effect_visualizer.h>
#include <utils/Log.h>
@@ -61,6 +62,7 @@
{EFFECT_CMD_RESET, &EffectConversionHelperAidl::handleReset},
{EFFECT_CMD_ENABLE, &EffectConversionHelperAidl::handleEnable},
{EFFECT_CMD_DISABLE, &EffectConversionHelperAidl::handleDisable},
+ {EFFECT_CMD_SET_AUDIO_MODE, &EffectConversionHelperAidl::handleSetAudioMode},
{EFFECT_CMD_SET_AUDIO_SOURCE, &EffectConversionHelperAidl::handleSetAudioSource},
{EFFECT_CMD_SET_DEVICE, &EffectConversionHelperAidl::handleSetDevice},
{EFFECT_CMD_SET_INPUT_DEVICE, &EffectConversionHelperAidl::handleSetDevice},
@@ -279,6 +281,10 @@
pReplyData);
return BAD_VALUE;
}
+ if (!getDescriptor().common.flags.audioSourceIndication) {
+ ALOGW("%s parameter no audioSourceIndication, skipping", __func__);
+ return OK;
+ }
audio_source_t source = *(audio_source_t*)pCmdData;
AudioSource aidlSource =
@@ -295,6 +301,10 @@
pReplyData);
return BAD_VALUE;
}
+ if (!getDescriptor().common.flags.audioModeIndication) {
+ ALOGW("%s parameter no audioModeIndication, skipping", __func__);
+ return OK;
+ }
audio_mode_t mode = *(audio_mode_t *)pCmdData;
AudioMode aidlMode =
VALUE_OR_RETURN_STATUS(::aidl::android::legacy2aidl_audio_mode_t_AudioMode(mode));
@@ -310,9 +320,26 @@
pReplyData);
return BAD_VALUE;
}
- // TODO: convert from audio_devices_t to std::vector<AudioDeviceDescription>
- // const auto& legacyDevice = *(uint32_t*)(pCmdData);
+ if (!getDescriptor().common.flags.deviceIndication) {
+ ALOGW("%s parameter no deviceIndication, skipping", __func__);
+ return OK;
+ }
+ // convert from bitmask of audio_devices_t to std::vector<AudioDeviceDescription>
+ auto legacyDevices = *(uint32_t*)(pCmdData);
+ // extract the input bit and remove it from bitmasks
+ const auto inputBit = legacyDevices & AUDIO_DEVICE_BIT_IN;
+ legacyDevices &= ~AUDIO_DEVICE_BIT_IN;
std::vector<AudioDeviceDescription> aidlDevices;
+ while (legacyDevices) {
+ // get audio_devices_t represented by the last true bit and convert to AIDL
+ const auto lowestBitDevice = legacyDevices & -legacyDevices;
+ AudioDeviceDescription deviceDesc = VALUE_OR_RETURN_STATUS(
+ ::aidl::android::legacy2aidl_audio_devices_t_AudioDeviceDescription(
+ static_cast<audio_devices_t>(lowestBitDevice | inputBit)));
+ aidlDevices.emplace_back(deviceDesc);
+ legacyDevices -= lowestBitDevice;
+ }
+
RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(
mEffect->setParameter(Parameter::make<Parameter::deviceDescription>(aidlDevices))));
return *static_cast<int32_t*>(pReplyData) = OK;
@@ -435,5 +462,19 @@
(mIsProxyEffect && std::static_pointer_cast<EffectProxy>(mEffect)->isBypassing()));
}
+Descriptor EffectConversionHelperAidl::getDescriptor() const {
+ if (!mIsProxyEffect) {
+ return mDesc;
+ }
+
+ Descriptor desc;
+ if (const auto status = mEffect->getDescriptor(&desc); !status.isOk()) {
+ ALOGE("%s failed to get proxy descriptor (%d:%s), using default", __func__,
+ status.getStatus(), status.getMessage());
+ return mDesc;
+ }
+ return desc;
+}
+
} // namespace effect
} // namespace android
diff --git a/media/libaudiohal/impl/EffectConversionHelperAidl.h b/media/libaudiohal/impl/EffectConversionHelperAidl.h
index 7c8f11b..85e877e 100644
--- a/media/libaudiohal/impl/EffectConversionHelperAidl.h
+++ b/media/libaudiohal/impl/EffectConversionHelperAidl.h
@@ -43,6 +43,8 @@
std::shared_ptr<android::hardware::EventFlag> getEventFlagGroup() { return mEfGroup; }
bool isBypassing() const;
+ ::aidl::android::hardware::audio::effect::Descriptor getDescriptor() const;
+
protected:
const int32_t mSessionId;
const int32_t mIoId;
@@ -134,7 +136,6 @@
virtual status_t visualizerMeasure(uint32_t* replySize __unused, void* pReplyData __unused) {
return BAD_VALUE;
}
-
};
} // namespace effect
diff --git a/media/libaudiohal/impl/EffectHalAidl.cpp b/media/libaudiohal/impl/EffectHalAidl.cpp
index b8e62ae..642d352 100644
--- a/media/libaudiohal/impl/EffectHalAidl.cpp
+++ b/media/libaudiohal/impl/EffectHalAidl.cpp
@@ -69,7 +69,6 @@
mEffect(effect),
mSessionId(sessionId),
mIoId(ioId),
- mDesc(desc),
mIsProxyEffect(isProxyEffect) {
createAidlConversion(effect, sessionId, ioId, desc);
}
@@ -169,7 +168,8 @@
State state = State::INIT;
if (mConversion->isBypassing() || !mEffect->getState(&state).isOk() ||
state != State::PROCESSING) {
- ALOGI("%s skipping %s process because it's %s", __func__, mDesc.common.name.c_str(),
+ ALOGI("%s skipping %s process because it's %s", __func__,
+ mConversion->getDescriptor().common.name.c_str(),
mConversion->isBypassing()
? "bypassing"
: aidl::android::hardware::audio::effect::toString(state).c_str());
@@ -225,8 +225,8 @@
return INVALID_OPERATION;
}
- ALOGD("%s %s consumed %zu produced %zu", __func__, mDesc.common.name.c_str(), floatsToWrite,
- floatsToRead);
+ ALOGD("%s %s consumed %zu produced %zu", __func__,
+ mConversion->getDescriptor().common.name.c_str(), floatsToWrite, floatsToRead);
return OK;
}
diff --git a/media/libaudiohal/impl/EffectHalAidl.h b/media/libaudiohal/impl/EffectHalAidl.h
index 1b7a3d6..bbcb7e2 100644
--- a/media/libaudiohal/impl/EffectHalAidl.h
+++ b/media/libaudiohal/impl/EffectHalAidl.h
@@ -72,7 +72,6 @@
const std::shared_ptr<::aidl::android::hardware::audio::effect::IEffect> mEffect;
const int32_t mSessionId;
const int32_t mIoId;
- const ::aidl::android::hardware::audio::effect::Descriptor mDesc;
const bool mIsProxyEffect;
std::unique_ptr<EffectConversionHelperAidl> mConversion;
diff --git a/media/libaudiohal/impl/EffectProxy.cpp b/media/libaudiohal/impl/EffectProxy.cpp
index 5e465d9..7b5e195 100644
--- a/media/libaudiohal/impl/EffectProxy.cpp
+++ b/media/libaudiohal/impl/EffectProxy.cpp
@@ -169,12 +169,6 @@
common.flags.hwAcceleratorMode = Flags::HardwareAccelerator::TUNNEL;
}
- // initial flag values before we know which sub-effect to active (with setOffloadParam)
- // same as HIDL EffectProxy flags
- common.flags.type = Flags::Type::INSERT;
- common.flags.insert = Flags::Insert::LAST;
- common.flags.volume = Flags::Volume::NONE;
-
// set indication if any sub-effect indication was set
common.flags.offloadIndication |= desc.common.flags.offloadIndication;
common.flags.deviceIndication |= desc.common.flags.deviceIndication;
@@ -238,7 +232,10 @@
}
// proceed with others
- for (size_t i = 0; i < mSubEffects.size() && i != mActiveSubIdx; i++) {
+ for (size_t i = 0; i < mSubEffects.size(); i++) {
+ if (i == mActiveSubIdx) {
+ continue;
+ }
if (!mSubEffects[i].handle) {
ALOGE("%s null sub-effect interface for %s", __func__,
mSubEffects[i].descriptor.common.id.uuid.toString().c_str());
diff --git a/media/libaudiohal/tests/EffectsFactoryHalInterface_test.cpp b/media/libaudiohal/tests/EffectsFactoryHalInterface_test.cpp
index 2854496..0cb654c 100644
--- a/media/libaudiohal/tests/EffectsFactoryHalInterface_test.cpp
+++ b/media/libaudiohal/tests/EffectsFactoryHalInterface_test.cpp
@@ -347,6 +347,45 @@
}
}
+TEST_P(libAudioHalEffectParamTest, deviceIndicationUpdate) {
+ for (auto& interface : mHalInterfaces) {
+ EXPECT_NO_FATAL_FAILURE(initEffect(interface));
+
+ // output device
+ uint32_t deviceTypes = AUDIO_DEVICE_OUT_SPEAKER | AUDIO_DEVICE_OUT_BLE_SPEAKER;
+ status_t cmdStatus;
+ uint32_t replySize = sizeof(cmdStatus);
+ EXPECT_EQ(OK, interface->command(EFFECT_CMD_SET_DEVICE, sizeof(uint32_t), &deviceTypes,
+ &replySize, &cmdStatus));
+ // input device
+ deviceTypes = AUDIO_DEVICE_IN_WIRED_HEADSET | AUDIO_DEVICE_IN_BLUETOOTH_BLE;
+ EXPECT_EQ(OK, interface->command(EFFECT_CMD_SET_DEVICE, sizeof(uint32_t), &deviceTypes,
+ &replySize, &cmdStatus));
+ }
+}
+
+TEST_P(libAudioHalEffectParamTest, audioModeIndicationUpdate) {
+ for (auto& interface : mHalInterfaces) {
+ EXPECT_NO_FATAL_FAILURE(initEffect(interface));
+ uint32_t mode = AUDIO_MODE_IN_CALL;
+ status_t cmdStatus;
+ uint32_t replySize = sizeof(cmdStatus);
+ EXPECT_EQ(OK, interface->command(EFFECT_CMD_SET_AUDIO_MODE, sizeof(uint32_t), &mode,
+ &replySize, &cmdStatus));
+ }
+}
+
+TEST_P(libAudioHalEffectParamTest, audioSourceIndicationUpdate) {
+ for (auto& interface : mHalInterfaces) {
+ EXPECT_NO_FATAL_FAILURE(initEffect(interface));
+ uint32_t source = AUDIO_SOURCE_MIC;
+ status_t cmdStatus;
+ uint32_t replySize = sizeof(cmdStatus);
+ EXPECT_EQ(OK, interface->command(EFFECT_CMD_SET_AUDIO_SOURCE, sizeof(uint32_t), &source,
+ &replySize, &cmdStatus));
+ }
+}
+
INSTANTIATE_TEST_SUITE_P(
libAudioHalEffectParamTest, libAudioHalEffectParamTest, ::testing::ValuesIn(testPairs),
[](const testing::TestParamInfo<libAudioHalEffectParamTest::ParamType>& info) {
diff --git a/media/libdatasource/MediaHTTP.cpp b/media/libdatasource/MediaHTTP.cpp
index 58c1ce8..b1f2140 100644
--- a/media/libdatasource/MediaHTTP.cpp
+++ b/media/libdatasource/MediaHTTP.cpp
@@ -156,7 +156,7 @@
String8 MediaHTTP::getUri() {
if (mInitCheck != OK) {
- return String8::empty();
+ return String8();
}
String8 uri;
diff --git a/media/libmedia/IMediaExtractor.cpp b/media/libmedia/IMediaExtractor.cpp
index 499569b..8485ac0 100644
--- a/media/libmedia/IMediaExtractor.cpp
+++ b/media/libmedia/IMediaExtractor.cpp
@@ -339,7 +339,7 @@
if (source != NULL) {
instance.trackDescriptions.push_front(source->getFormat()->toString());
} else {
- instance.trackDescriptions.push_front(String8::empty());
+ instance.trackDescriptions.push_front(String8());
}
break;
}
diff --git a/media/libmediahelper/AudioParameter.cpp b/media/libmediahelper/AudioParameter.cpp
index c081629..f21ea53 100644
--- a/media/libmediahelper/AudioParameter.cpp
+++ b/media/libmediahelper/AudioParameter.cpp
@@ -96,7 +96,7 @@
mKeyValuePairs = keyValuePairs;
char *last;
- strcpy(str, keyValuePairs.string());
+ strcpy(str, keyValuePairs.c_str());
char *pair = strtok_r(str, ";", &last);
while (pair != NULL) {
if (strlen(pair) != 0) {
@@ -208,7 +208,7 @@
value = 0;
if (result == NO_ERROR) {
int val;
- if (sscanf(str8.string(), "%d", &val) == 1) {
+ if (sscanf(str8.c_str(), "%d", &val) == 1) {
value = val;
} else {
result = INVALID_OPERATION;
@@ -224,7 +224,7 @@
value = 0;
if (result == NO_ERROR) {
float val;
- if (sscanf(str8.string(), "%f", &val) == 1) {
+ if (sscanf(str8.c_str(), "%f", &val) == 1) {
value = val;
} else {
result = INVALID_OPERATION;
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 2a2a37b..f08c516 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -2007,7 +2007,7 @@
String8 MediaPlayerService::AudioOutput::getParameters(const String8& keys)
{
Mutex::Autolock lock(mLock);
- if (mTrack == 0) return String8::empty();
+ if (mTrack == 0) return String8();
return mTrack->getParameters(keys);
}
diff --git a/media/libmediaplayerservice/include/MediaPlayerInterface.h b/media/libmediaplayerservice/include/MediaPlayerInterface.h
index 1cbd8a0..994c64a 100644
--- a/media/libmediaplayerservice/include/MediaPlayerInterface.h
+++ b/media/libmediaplayerservice/include/MediaPlayerInterface.h
@@ -147,7 +147,7 @@
virtual bool needsTrailingPadding() { return true; }
virtual status_t setParameters(const String8& /* keyValuePairs */) { return NO_ERROR; }
- virtual String8 getParameters(const String8& /* keys */) { return String8::empty(); }
+ virtual String8 getParameters(const String8& /* keys */) { return String8(); }
virtual media::VolumeShaper::Status applyVolumeShaper(
const sp<media::VolumeShaper::Configuration>& configuration,
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 57c4791..b37a131 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -132,6 +132,7 @@
mMediaClock(mediaClock),
mPlaybackSettings(AUDIO_PLAYBACK_RATE_DEFAULT),
mAudioFirstAnchorTimeMediaUs(-1),
+ mAudioAnchorTimeMediaUs(-1),
mAnchorTimeMediaUs(-1),
mAnchorNumFramesWritten(-1),
mVideoLateByUs(0LL),
@@ -433,6 +434,7 @@
// Called on renderer looper.
void NuPlayer::Renderer::clearAnchorTime() {
mMediaClock->clearAnchor();
+ mAudioAnchorTimeMediaUs = -1;
mAnchorTimeMediaUs = -1;
mAnchorNumFramesWritten = -1;
}
@@ -1261,7 +1263,7 @@
Mutex::Autolock autoLock(mLock);
// TRICKY: vorbis decoder generates multiple frames with the same
// timestamp, so only update on the first frame with a given timestamp
- if (mediaTimeUs == mAnchorTimeMediaUs) {
+ if (mediaTimeUs == mAudioAnchorTimeMediaUs) {
return;
}
setAudioFirstAnchorTimeIfNeeded_l(mediaTimeUs);
@@ -1299,6 +1301,7 @@
}
}
mAnchorNumFramesWritten = mNumFramesWritten;
+ mAudioAnchorTimeMediaUs = mediaTimeUs;
mAnchorTimeMediaUs = mediaTimeUs;
}
diff --git a/media/libmediaplayerservice/nuplayer/include/nuplayer/NuPlayerRenderer.h b/media/libmediaplayerservice/nuplayer/include/nuplayer/NuPlayerRenderer.h
index 2659979..5c62ec6 100644
--- a/media/libmediaplayerservice/nuplayer/include/nuplayer/NuPlayerRenderer.h
+++ b/media/libmediaplayerservice/nuplayer/include/nuplayer/NuPlayerRenderer.h
@@ -177,6 +177,9 @@
float mVideoFpsHint;
int64_t mAudioFirstAnchorTimeMediaUs;
+ // previous audio anchor timestamp, in media time base.
+ int64_t mAudioAnchorTimeMediaUs;
+ // previous anchor timestamp (audio or video), in media time base.
int64_t mAnchorTimeMediaUs;
int64_t mAnchorNumFramesWritten;
int64_t mVideoLateByUs;
diff --git a/media/libnblog/PerformanceAnalysis.cpp b/media/libnblog/PerformanceAnalysis.cpp
index e91a511..507295a 100644
--- a/media/libnblog/PerformanceAnalysis.cpp
+++ b/media/libnblog/PerformanceAnalysis.cpp
@@ -409,7 +409,7 @@
// Writes a string into specified file descriptor
void dumpLine(int fd, int indent, const String8 &body) {
- dprintf(fd, "%.*s%s \n", indent, "", body.string());
+ dprintf(fd, "%.*s%s \n", indent, "", body.c_str());
}
} // namespace ReportPerformance
diff --git a/media/libnblog/Reader.cpp b/media/libnblog/Reader.cpp
index 67d028d..36e4da5 100644
--- a/media/libnblog/Reader.cpp
+++ b/media/libnblog/Reader.cpp
@@ -280,7 +280,7 @@
break;
}
if (!body.isEmpty()) {
- dprintf(fd, "%.*s%s %s\n", (int)indent, "", timestamp.string(), body.string());
+ dprintf(fd, "%.*s%s %s\n", (int)indent, "", timestamp.c_str(), body.c_str());
body.clear();
}
timestamp.clear();
diff --git a/media/module/codecs/m4v_h263/OWNERS b/media/module/codecs/m4v_h263/OWNERS
new file mode 100644
index 0000000..e537138
--- /dev/null
+++ b/media/module/codecs/m4v_h263/OWNERS
@@ -0,0 +1,4 @@
+# owners for frameworks/av/media/module/codecs/m4v_h263
+include platform/frameworks/av:/media/janitors/avic_OWNERS
+include platform/frameworks/av:/media/janitors/codec_OWNERS
+essick@google.com
diff --git a/media/module/extractors/mp3/MP3Extractor.cpp b/media/module/extractors/mp3/MP3Extractor.cpp
index 328b790..d0e9852 100644
--- a/media/module/extractors/mp3/MP3Extractor.cpp
+++ b/media/module/extractors/mp3/MP3Extractor.cpp
@@ -379,8 +379,8 @@
String8 commentdesc;
String8 commentvalue;
com->getString(&commentdesc, &commentvalue);
- const char * desc = commentdesc.string();
- const char * value = commentvalue.string();
+ const char * desc = commentdesc.c_str();
+ const char * value = commentvalue.c_str();
// first 3 characters are the language, which we don't care about
if(strlen(desc) > 3 && strcmp(desc + 3, "iTunSMPB") == 0) {
@@ -652,7 +652,7 @@
it->getString(&s);
delete it;
- AMediaFormat_setString(meta, kMap[i].key, s.string());
+ AMediaFormat_setString(meta, kMap[i].key, s.c_str());
}
size_t dataSize;
diff --git a/media/module/extractors/mp4/MPEG4Extractor.cpp b/media/module/extractors/mp4/MPEG4Extractor.cpp
index 38cf29d..6a1c5f1 100644
--- a/media/module/extractors/mp4/MPEG4Extractor.cpp
+++ b/media/module/extractors/mp4/MPEG4Extractor.cpp
@@ -1794,7 +1794,7 @@
String8 mimeFormat(str + 8 + encoding_length + 1,
chunk_data_size - 8 - encoding_length - 1);
AMediaFormat_setString(mLastTrack->meta,
- AMEDIAFORMAT_KEY_MIME, mimeFormat.string());
+ AMEDIAFORMAT_KEY_MIME, mimeFormat.c_str());
}
break;
}
@@ -2813,7 +2813,7 @@
String8 s;
if (convertTimeToDate(creationTime, &s)) {
- AMediaFormat_setString(mFileMetaData, AMEDIAFORMAT_KEY_DATE, s.string());
+ AMediaFormat_setString(mFileMetaData, AMEDIAFORMAT_KEY_DATE, s.c_str());
}
break;
@@ -4368,7 +4368,7 @@
} else {
// Convert from UTF-16 string to UTF-8 string.
String8 tmpUTF8str(framedata, len16);
- AMediaFormat_setString(mFileMetaData, metadataKey, tmpUTF8str.string());
+ AMediaFormat_setString(mFileMetaData, metadataKey, tmpUTF8str.c_str());
}
}
diff --git a/media/module/foundation/ALooperRoster.cpp b/media/module/foundation/ALooperRoster.cpp
index 4334f1e..451725d 100644
--- a/media/module/foundation/ALooperRoster.cpp
+++ b/media/module/foundation/ALooperRoster.cpp
@@ -168,7 +168,7 @@
}
s.append("\n");
}
- (void)write(fd, s.string(), s.size());
+ (void)write(fd, s.c_str(), s.size());
}
} // namespace android
diff --git a/media/module/foundation/AString.cpp b/media/module/foundation/AString.cpp
index a5e0ff8..2f8011d 100644
--- a/media/module/foundation/AString.cpp
+++ b/media/module/foundation/AString.cpp
@@ -70,7 +70,7 @@
: mData(NULL),
mSize(0),
mAllocSize(1) {
- setTo(from.string(), from.length());
+ setTo(from.c_str(), from.length());
}
AString::AString(const AString &from)
diff --git a/media/module/foundation/MetaDataBase.cpp b/media/module/foundation/MetaDataBase.cpp
index 3370748..da383fa 100644
--- a/media/module/foundation/MetaDataBase.cpp
+++ b/media/module/foundation/MetaDataBase.cpp
@@ -434,7 +434,7 @@
char cc[5];
MakeFourCCString(key, cc);
const typed_data &item = mInternalData->mItems.valueAt(i);
- s.appendFormat("%s: %s", cc, item.asString(false).string());
+ s.appendFormat("%s: %s", cc, item.asString(false).c_str());
if (i != 0) {
s.append(", ");
}
@@ -448,7 +448,7 @@
char cc[5];
MakeFourCCString(key, cc);
const typed_data &item = mInternalData->mItems.valueAt(i);
- ALOGI("%s: %s", cc, item.asString(true /* verbose */).string());
+ ALOGI("%s: %s", cc, item.asString(true /* verbose */).c_str());
}
}
diff --git a/media/module/foundation/tests/Base64_test.cpp b/media/module/foundation/tests/Base64_test.cpp
index 7a4289e..a3f93d9 100644
--- a/media/module/foundation/tests/Base64_test.cpp
+++ b/media/module/foundation/tests/Base64_test.cpp
@@ -49,7 +49,7 @@
paddedText.append(kBase64Padding);
}
}
- sp<ABuffer> result = decodeBase64(AString(paddedText.string()));
+ sp<ABuffer> result = decodeBase64(AString(paddedText.c_str()));
ASSERT_EQ(AStringUtils::Compare(expected[i].c_str(),
reinterpret_cast<char*>(result->data()),
diff --git a/media/module/id3/test/ID3Test.cpp b/media/module/id3/test/ID3Test.cpp
index a0a84ec..9da28d2 100644
--- a/media/module/id3/test/ID3Test.cpp
+++ b/media/module/id3/test/ID3Test.cpp
@@ -94,7 +94,7 @@
String8 text;
countTextFrames++;
it.getString(&text);
- ALOGV("Found text frame %s : %s \n", id.string(), text.string());
+ ALOGV("Found text frame %s : %s \n", id.c_str(), text.c_str());
}
it.next();
}
@@ -106,10 +106,10 @@
ASSERT_GT(id.length(), 0) << "Found an ID3 tag of 0 size";
it.getString(&text);
// if the tag has a value
- if (strcmp(text.string(), "")) {
+ if (strcmp(text.c_str(), "")) {
countTextFrames++;
ALOGV("ID: %s\n", id.c_str());
- ALOGV("Text string: %s\n", text.string());
+ ALOGV("Text string: %s\n", text.c_str());
}
it.next();
}
@@ -134,7 +134,7 @@
if (albumArtPresent) {
if (data) {
- ALOGV("Found album art: size = %zu mime = %s \n", dataSize, mime.string());
+ ALOGV("Found album art: size = %zu mime = %s \n", dataSize, mime.c_str());
}
ASSERT_NE(data, nullptr) << "Expected album art, found none! " << path;
} else {
@@ -168,7 +168,7 @@
String8 mime;
const void *data = tag.getAlbumArt(&dataSize, &mime);
if (data) {
- ALOGV("Found album art: size = %zu mime = %s \n", dataSize, mime.string());
+ ALOGV("Found album art: size = %zu mime = %s \n", dataSize, mime.c_str());
#if (LOG_NDEBUG == 0)
hexdump(data, dataSize > 128 ? 128 : dataSize);
#endif
diff --git a/media/module/id3/testid3.cpp b/media/module/id3/testid3.cpp
index 5cd51cf..e4f524b 100644
--- a/media/module/id3/testid3.cpp
+++ b/media/module/id3/testid3.cpp
@@ -90,9 +90,9 @@
String8 text;
it.getString(&text);
- printf(" found text frame '%s': %s\n", id.string(), text.string());
+ printf(" found text frame '%s': %s\n", id.c_str(), text.c_str());
} else {
- printf(" found frame '%s'.\n", id.string());
+ printf(" found frame '%s'.\n", id.c_str());
}
it.next();
@@ -104,7 +104,7 @@
if (data) {
printf("found album art: size=%zu mime='%s'\n", dataSize,
- mime.string());
+ mime.c_str());
hexdump(data, dataSize > 128 ? 128 : dataSize);
}
diff --git a/media/module/libmediatranscoding/TranscodingClientManager.cpp b/media/module/libmediatranscoding/TranscodingClientManager.cpp
index 6dbcaf9..18702a4 100644
--- a/media/module/libmediatranscoding/TranscodingClientManager.cpp
+++ b/media/module/libmediatranscoding/TranscodingClientManager.cpp
@@ -354,7 +354,7 @@
result.append(buffer);
}
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
bool TranscodingClientManager::isTrustedCaller(pid_t pid, uid_t uid) {
diff --git a/media/module/libmediatranscoding/TranscodingSessionController.cpp b/media/module/libmediatranscoding/TranscodingSessionController.cpp
index ea3e518..e9d19d3 100644
--- a/media/module/libmediatranscoding/TranscodingSessionController.cpp
+++ b/media/module/libmediatranscoding/TranscodingSessionController.cpp
@@ -421,7 +421,7 @@
dumpSession_l(session, result, true /*closedSession*/);
}
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
/*
diff --git a/media/module/service.mediatranscoding/MediaTranscodingService.cpp b/media/module/service.mediatranscoding/MediaTranscodingService.cpp
index 2a20981..2c73f3e 100644
--- a/media/module/service.mediatranscoding/MediaTranscodingService.cpp
+++ b/media/module/service.mediatranscoding/MediaTranscodingService.cpp
@@ -110,7 +110,7 @@
"Permission Denial: "
"can't dump MediaTranscodingService from pid=%d, uid=%d\n",
AIBinder_getCallingPid(), AIBinder_getCallingUid());
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
return PERMISSION_DENIED;
}
}
@@ -120,7 +120,7 @@
snprintf(buffer, SIZE, "MediaTranscodingService: %p\n", this);
result.append(buffer);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
Vector<String16> args;
mClientManager->dumpAllClients(fd, args);
diff --git a/media/module/service.mediatranscoding/tests/MediaTranscodingServiceTestHelper.h b/media/module/service.mediatranscoding/tests/MediaTranscodingServiceTestHelper.h
index 8e17f55..723bd77 100644
--- a/media/module/service.mediatranscoding/tests/MediaTranscodingServiceTestHelper.h
+++ b/media/module/service.mediatranscoding/tests/MediaTranscodingServiceTestHelper.h
@@ -76,7 +76,7 @@
PermissionController pc;
uid = pc.getPackageUid(packageName, 0);
if (uid <= 0) {
- ALOGE("Unknown package: '%s'", String8(packageName).string());
+ ALOGE("Unknown package: '%s'", String8(packageName).c_str());
return BAD_VALUE;
}
diff --git a/media/mtp/tests/MtpFuzzer/mtp_data_packet_fuzzer.cpp b/media/mtp/tests/MtpFuzzer/mtp_data_packet_fuzzer.cpp
index f5faf77..83c6076 100644
--- a/media/mtp/tests/MtpFuzzer/mtp_data_packet_fuzzer.cpp
+++ b/media/mtp/tests/MtpFuzzer/mtp_data_packet_fuzzer.cpp
@@ -212,7 +212,7 @@
if (mFdp.ConsumeBool()) {
std::string str = mFdp.ConsumeRandomLengthString(kMaxLength);
android::String16 s(str.c_str());
- char16_t* data = const_cast<char16_t*>(s.string());
+ char16_t* data = const_cast<char16_t*>(s.c_str());
mtpDataPacket.putString(reinterpret_cast<uint16_t*>(data));
} else {
mtpDataPacket.putString(static_cast<uint16_t*>(nullptr));
diff --git a/media/mtp/tests/MtpFuzzer/mtp_property_fuzzer.cpp b/media/mtp/tests/MtpFuzzer/mtp_property_fuzzer.cpp
index b4e659c..6300256 100644
--- a/media/mtp/tests/MtpFuzzer/mtp_property_fuzzer.cpp
+++ b/media/mtp/tests/MtpFuzzer/mtp_property_fuzzer.cpp
@@ -101,7 +101,7 @@
std::string str = mFdp.ConsumeRandomLengthString(kMaxLength);
android::String16 s(str.c_str());
if (mFdp.ConsumeBool()) {
- data = const_cast<char16_t*>(s.string());
+ data = const_cast<char16_t*>(s.c_str());
}
if (mFdp.ConsumeBool()) {
diff --git a/media/ndk/NdkImageReader.cpp b/media/ndk/NdkImageReader.cpp
index 9270499..27b2c84 100644
--- a/media/ndk/NdkImageReader.cpp
+++ b/media/ndk/NdkImageReader.cpp
@@ -340,7 +340,7 @@
}
mCbLooper = new ALooper;
- mCbLooper->setName(consumerName.string());
+ mCbLooper->setName(consumerName.c_str());
res = mCbLooper->start(
/*runOnCallingThread*/false,
/*canCallJava*/ true,
diff --git a/media/ndk/NdkMediaDrm.cpp b/media/ndk/NdkMediaDrm.cpp
index 0df7636..28a0233 100644
--- a/media/ndk/NdkMediaDrm.cpp
+++ b/media/ndk/NdkMediaDrm.cpp
@@ -478,7 +478,7 @@
*keyRequest = mObj->mKeyRequest.array();
*keyRequestSize = mObj->mKeyRequest.size();
if (defaultUrl != NULL)
- *defaultUrl = mObj->mDefaultUrl.string();
+ *defaultUrl = mObj->mDefaultUrl.c_str();
switch(requestType) {
case DrmPlugin::kKeyRequestType_Initial:
mObj->mkeyRequestType = KEY_REQUEST_TYPE_INITIAL;
@@ -606,8 +606,8 @@
}
for (size_t i = 0; i < mObj->mQueryResults.size(); i++) {
- keyValuePairs[i].mKey = mObj->mQueryResults.keyAt(i).string();
- keyValuePairs[i].mValue = mObj->mQueryResults.valueAt(i).string();
+ keyValuePairs[i].mKey = mObj->mQueryResults.keyAt(i).c_str();
+ keyValuePairs[i].mValue = mObj->mQueryResults.valueAt(i).c_str();
}
*numPairs = mObj->mQueryResults.size();
return AMEDIA_OK;
@@ -630,7 +630,7 @@
} else {
*provisionRequest = mObj->mProvisionRequest.array();
*provisionRequestSize = mObj->mProvisionRequest.size();
- *serverUrl = mObj->mProvisionUrl.string();
+ *serverUrl = mObj->mProvisionUrl.c_str();
}
return AMEDIA_OK;
}
@@ -714,7 +714,7 @@
mObj->mPropertyString);
if (status == OK) {
- *propertyValue = mObj->mPropertyString.string();
+ *propertyValue = mObj->mPropertyString.c_str();
} else {
*propertyValue = NULL;
}
diff --git a/media/ndk/NdkMediaFormat.cpp b/media/ndk/NdkMediaFormat.cpp
index a95e874..8f691b7 100644
--- a/media/ndk/NdkMediaFormat.cpp
+++ b/media/ndk/NdkMediaFormat.cpp
@@ -142,7 +142,7 @@
}
ret.append("}");
mData->mDebug = ret;
- return mData->mDebug.string();
+ return mData->mDebug.c_str();
}
EXPORT
@@ -238,7 +238,7 @@
return false;
}
for (size_t i = 0; i < mData->mStringCache.size(); i++) {
- if (strcmp(mData->mStringCache.keyAt(i).string(), name) == 0) {
+ if (strcmp(mData->mStringCache.keyAt(i).c_str(), name) == 0) {
mData->mStringCache.removeItemsAt(i, 1);
break;
}
@@ -251,7 +251,7 @@
if (i < 0) {
return false;
}
- *out = mData->mStringCache.valueAt(i).string();
+ *out = mData->mStringCache.valueAt(i).c_str();
return true;
}
return false;
diff --git a/media/utils/ServiceUtilities.cpp b/media/utils/ServiceUtilities.cpp
index 83b84e3..eef460f 100644
--- a/media/utils/ServiceUtilities.cpp
+++ b/media/utils/ServiceUtilities.cpp
@@ -403,7 +403,7 @@
PermissionController{}.getPackagesForUid(uid, str16PackageNames);
std::vector<std::string> packageNames;
for (const auto& str16PackageName : str16PackageNames) {
- packageNames.emplace_back(String8(str16PackageName).string());
+ packageNames.emplace_back(String8(str16PackageName).c_str());
}
if (packageNames.empty()) {
ALOGW("%s: Playback capture for uid %u is denied as no package name could be retrieved "
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index dd84bd5..18627bd 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -806,7 +806,7 @@
result.appendFormat(" %7d %4d %7d %6u %s\n", r->mSessionid, r->mCnt, r->mPid,
r->mUid, info.package.c_str());
}
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
@@ -822,7 +822,7 @@
hardwareStatus,
(uint32_t)(mStandbyTimeInNsecs / 1000000));
result.append(buffer);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
void AudioFlinger::dumpPermissionDenial(int fd, const Vector<String16>& args __unused)
@@ -835,7 +835,7 @@
IPCThreadState::self()->getCallingPid(),
IPCThreadState::self()->getCallingUid());
result.append(buffer);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
bool AudioFlinger::dumpTryLock(Mutex& mutex)
@@ -854,7 +854,7 @@
bool hardwareLocked = dumpTryLock(mHardwareLock);
if (!hardwareLocked) {
String8 result(kHardwareLockedString);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
} else {
mHardwareLock.unlock();
}
@@ -864,20 +864,20 @@
// failed to lock - AudioFlinger is probably deadlocked
if (!locked) {
String8 result(kDeadlockedString);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
bool clientLocked = dumpTryLock(mClientLock);
if (!clientLocked) {
String8 result(kClientLockedString);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
if (mEffectsFactoryHal != 0) {
mEffectsFactoryHal->dumpEffects(fd);
} else {
String8 result(kNoEffectsFactory);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
dumpClients(fd, args);
@@ -1871,7 +1871,7 @@
status_t AudioFlinger::setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs)
{
ALOGV("setParameters(): io %d, keyvalue %s, calling pid %d calling uid %d",
- ioHandle, keyValuePairs.string(),
+ ioHandle, keyValuePairs.c_str(),
IPCThreadState::self()->getCallingPid(), IPCThreadState::self()->getCallingUid());
// check calling permissions
@@ -1882,7 +1882,7 @@
String8 filteredKeyValuePairs = keyValuePairs;
filterReservedParameters(filteredKeyValuePairs, IPCThreadState::self()->getCallingUid());
- ALOGV("%s: filtered keyvalue %s", __func__, filteredKeyValuePairs.string());
+ ALOGV("%s: filtered keyvalue %s", __func__, filteredKeyValuePairs.c_str());
// AUDIO_IO_HANDLE_NONE means the parameters are global to the audio hardware interface
if (ioHandle == AUDIO_IO_HANDLE_NONE) {
@@ -1957,7 +1957,7 @@
String8 AudioFlinger::getParameters(audio_io_handle_t ioHandle, const String8& keys) const
{
ALOGVV("getParameters() io %d, keys %s, calling pid %d",
- ioHandle, keys.string(), IPCThreadState::self()->getCallingPid());
+ ioHandle, keys.c_str(), IPCThreadState::self()->getCallingPid());
Mutex::Autolock _l(mLock);
@@ -2970,7 +2970,7 @@
deviceType,
flags,
halConfig,
- address.string());
+ address.c_str());
mHardwareStatus = AUDIO_HW_IDLE;
diff --git a/services/audioflinger/DeviceEffectManager.cpp b/services/audioflinger/DeviceEffectManager.cpp
index 8484f95..cc9e367 100644
--- a/services/audioflinger/DeviceEffectManager.cpp
+++ b/services/audioflinger/DeviceEffectManager.cpp
@@ -166,16 +166,16 @@
const bool locked = dumpTryLock(mLock);
if (!locked) {
String8 result("DeviceEffectManager may be deadlocked\n");
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
String8 heading("\nDevice Effects:\n");
- write(fd, heading.string(), heading.size());
+ write(fd, heading.c_str(), heading.size());
for (const auto& iter : mDeviceEffects) {
String8 outStr;
outStr.appendFormat("%*sEffect for device %s address %s:\n", 2, "",
::android::toString(iter.first.mType).c_str(), iter.first.getAddress());
- write(fd, outStr.string(), outStr.size());
+ write(fd, outStr.c_str(), outStr.size());
iter.second->dump(fd, 4);
}
diff --git a/services/audioflinger/Effects.cpp b/services/audioflinger/Effects.cpp
index c3735be..42c4986 100644
--- a/services/audioflinger/Effects.cpp
+++ b/services/audioflinger/Effects.cpp
@@ -524,7 +524,7 @@
result.appendFormat("\t\t- apiVersion: %08X\n\t\t- flags: %08X (%s)\n",
mDescriptor.apiVersion,
mDescriptor.flags,
- effectFlagsToString(mDescriptor.flags).string());
+ effectFlagsToString(mDescriptor.flags).c_str());
result.appendFormat("\t\t- name: %s\n",
mDescriptor.name);
@@ -545,7 +545,7 @@
mLock.unlock();
}
- write(fd, result.string(), result.length());
+ write(fd, result.c_str(), result.length());
}
// ----------------------------------------------------------------------------
@@ -1653,7 +1653,7 @@
dumpInOutBuffer(false /* isInput */, mOutBuffer).c_str(),
dumpInOutBuffer(false /* isInput */, mOutConversionBuffer).c_str());
- write(fd, result.string(), result.length());
+ write(fd, result.c_str(), result.length());
if (mEffectInterface != 0) {
dprintf(fd, "\tEffect ID %d HAL dump:\n", mId);
@@ -2635,7 +2635,7 @@
(int)outBufferStr.size(), "Out buffer ");
result.appendFormat("\t%s %s %d\n",
inBufferStr.c_str(), outBufferStr.c_str(), mActiveTrackCnt);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
for (size_t i = 0; i < numEffects; ++i) {
sp<EffectModule> effect = mEffects[i];
@@ -2648,7 +2648,7 @@
mLock.unlock();
}
} else {
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
}
@@ -3432,7 +3432,7 @@
const bool locked = dumpTryLock(mProxyLock);
if (!locked) {
String8 result("DeviceEffectProxy may be deadlocked\n");
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
String8 outStr;
@@ -3441,16 +3441,16 @@
} else {
outStr.appendFormat("%*sNO HAL Effect\n", spaces, "");
}
- write(fd, outStr.string(), outStr.size());
+ write(fd, outStr.c_str(), outStr.size());
outStr.clear();
outStr.appendFormat("%*sSub Effects:\n", spaces, "");
- write(fd, outStr.string(), outStr.size());
+ write(fd, outStr.c_str(), outStr.size());
outStr.clear();
for (const auto& iter : mEffectHandles) {
outStr.appendFormat("%*sEffect for patch handle %d:\n", spaces + 2, "", iter.first);
- write(fd, outStr.string(), outStr.size());
+ write(fd, outStr.c_str(), outStr.size());
outStr.clear();
sp<EffectBase> effect = iter.second->effect().promote();
if (effect != nullptr) {
diff --git a/services/audioflinger/PatchPanel.cpp b/services/audioflinger/PatchPanel.cpp
index b54b41f..972c870 100644
--- a/services/audioflinger/PatchPanel.cpp
+++ b/services/audioflinger/PatchPanel.cpp
@@ -906,7 +906,7 @@
patchPanelDump += "\nPatches:\n";
headerPrinted = true;
}
- patchPanelDump.appendFormat("%s%s\n", indent, iter.second.dump(iter.first).string());
+ patchPanelDump.appendFormat("%s%s\n", indent, iter.second.dump(iter.first).c_str());
}
headerPrinted = false;
@@ -924,12 +924,12 @@
for (const auto& patch : module.second.sw_patches) {
moduleDump.appendFormat("%d ", patch);
}
- patchPanelDump.appendFormat("%s%s\n", indent, moduleDump.string());
+ patchPanelDump.appendFormat("%s%s\n", indent, moduleDump.c_str());
}
}
if (!patchPanelDump.isEmpty()) {
- write(fd, patchPanelDump.string(), patchPanelDump.size());
+ write(fd, patchPanelDump.c_str(), patchPanelDump.size());
}
}
diff --git a/services/audioflinger/PlaybackTracks.h b/services/audioflinger/PlaybackTracks.h
index 2602efb..181829f 100644
--- a/services/audioflinger/PlaybackTracks.h
+++ b/services/audioflinger/PlaybackTracks.h
@@ -55,7 +55,7 @@
sp<PlayAudioOpCallback> mOpCallback;
// called by PlayAudioOpCallback when OP_PLAY_AUDIO is updated in AppOp callback
- void checkPlayAudioForUsage();
+ void checkPlayAudioForUsage(bool doBroadcast);
wp<AudioFlinger::ThreadBase> mThread;
std::atomic_bool mHasOpPlayAudio;
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index ef5e727..6aafa07 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -488,7 +488,7 @@
" us per mix loop: mean=%.0f stddev=%.0f min=%.0f max=%.0f\n"
" %% of wall: mean=%.1f stddev=%.1f min=%.1f max=%.1f\n"
" MHz: mean=%.1f, stddev=%.1f, min=%.1f max=%.1f",
- title.string(),
+ title.c_str(),
elapsed * .000000001, n, perLoop * .000001,
mean * .001,
stddev * .001,
@@ -612,7 +612,7 @@
status_t AudioFlinger::ThreadBase::setParameters(const String8& keyValuePairs)
{
- ALOGV("ThreadBase::setParameters() %s", keyValuePairs.string());
+ ALOGV("ThreadBase::setParameters() %s", keyValuePairs.c_str());
Mutex::Autolock _l(mLock);
return sendSetParameterConfigEvent_l(keyValuePairs);
@@ -797,7 +797,7 @@
if (checkForNewParameter_l(data->mKeyValuePairs, event->mStatus)) {
configChanged = true;
mLocalLog.log("CFG_EVENT_SET_PARAMETER: (%s) configuration changed",
- data->mKeyValuePairs.string());
+ data->mKeyValuePairs.c_str());
}
} break;
case CFG_EVENT_CREATE_AUDIO_PATCH: {
@@ -982,7 +982,7 @@
dprintf(fd, " HAL buffer size: %zu bytes\n", mBufferSize);
dprintf(fd, " Channel count: %u\n", mChannelCount);
dprintf(fd, " Channel mask: 0x%08x (%s)\n", mChannelMask,
- channelMaskToString(mChannelMask, mType != RECORD).string());
+ channelMaskToString(mChannelMask, mType != RECORD).c_str());
dprintf(fd, " Processing format: 0x%x (%s)\n", mFormat, formatToString(mFormat).c_str());
dprintf(fd, " Processing frame size: %zu bytes\n", mFrameSize);
dprintf(fd, " Pending config events:");
@@ -1918,7 +1918,7 @@
if (mLocalLog != nullptr) {
String8 result;
track->appendDump(result, false /* active */);
- mLocalLog->log("AT::%-10s(%p) %s", funcName, track.get(), result.string());
+ mLocalLog->log("AT::%-10s(%p) %s", funcName, track.get(), result.c_str());
}
}
@@ -2171,7 +2171,7 @@
}
}
result.append("\n");
- write(fd, result.string(), result.length());
+ write(fd, result.c_str(), result.length());
result.clear();
// These values are "raw"; they will wrap around. See prepareTracks_l() for a better way.
@@ -2217,7 +2217,7 @@
}
}
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
void AudioFlinger::PlaybackThread::dumpInternals_l(int fd, const Vector<String16>& args)
@@ -2827,7 +2827,7 @@
String8 result;
track->appendDump(result, false /* active */);
- mLocalLog.log("removeTrack_l (%p) %s", track.get(), result.string());
+ mLocalLog.log("removeTrack_l (%p) %s", track.get(), result.c_str());
mTracks.remove(track);
{
@@ -3886,9 +3886,9 @@
releaseWakeLock_l();
// wait until we have something to do...
- ALOGV("%s going to sleep", myName.string());
+ ALOGV("%s going to sleep", myName.c_str());
mWaitWorkCV.wait(mLock);
- ALOGV("%s waking up", myName.string());
+ ALOGV("%s waking up", myName.c_str());
acquireWakeLock_l();
mMixerStatus = MIXER_IDLE;
@@ -8817,7 +8817,7 @@
{
String8 result;
track->appendDump(result, false /* active */);
- mLocalLog.log("removeTrack_l (%p) %s", track.get(), result.string());
+ mLocalLog.log("removeTrack_l (%p) %s", track.get(), result.c_str());
mTracks.remove(track);
// need anything related to effects here?
@@ -8896,7 +8896,7 @@
}
}
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
void AudioFlinger::RecordThread::setRecordSilenced(audio_port_handle_t portId, bool silenced)
@@ -9933,9 +9933,9 @@
}
// wait until we have something to do...
- ALOGV("%s going to sleep", myName.string());
+ ALOGV("%s going to sleep", myName.c_str());
mWaitWorkCV.wait(mLock);
- ALOGV("%s waking up", myName.string());
+ ALOGV("%s waking up", myName.c_str());
checkSilentMode_l();
@@ -10303,7 +10303,7 @@
} else {
dprintf(fd, "\n");
}
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
AudioFlinger::MmapPlaybackThread::MmapPlaybackThread(
diff --git a/services/audioflinger/Threads.h b/services/audioflinger/Threads.h
index b867774..1d00a34 100644
--- a/services/audioflinger/Threads.h
+++ b/services/audioflinger/Threads.h
@@ -167,7 +167,7 @@
mKeyValuePairs(keyValuePairs) {}
virtual void dump(char *buffer, size_t size) {
- snprintf(buffer, size, "- KeyValue: %s\n", mKeyValuePairs.string());
+ snprintf(buffer, size, "- KeyValue: %s\n", mKeyValuePairs.c_str());
}
const String8 mKeyValuePairs;
diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp
index 4f4ad93..14c45f7 100644
--- a/services/audioflinger/Tracks.cpp
+++ b/services/audioflinger/Tracks.cpp
@@ -564,7 +564,9 @@
void AudioFlinger::PlaybackThread::OpPlayAudioMonitor::onFirstRef()
{
- checkPlayAudioForUsage();
+ // make sure not to broadcast the initial state since it is not needed and could
+ // cause a deadlock since this method can be called with the mThread->mLock held
+ checkPlayAudioForUsage(/*doBroadcast=*/false);
if (mAttributionSource.packageName.has_value()) {
mOpCallback = new PlayAudioOpCallback(this);
mAppOpsManager.startWatchingMode(AppOpsManager::OP_PLAY_AUDIO,
@@ -579,7 +581,7 @@
// Note this method is never called (and never to be) for audio server / patch record track
// - not called from constructor due to check on UID,
// - not called from PlayAudioOpCallback because the callback is not installed in this case
-void AudioFlinger::PlaybackThread::OpPlayAudioMonitor::checkPlayAudioForUsage()
+void AudioFlinger::PlaybackThread::OpPlayAudioMonitor::checkPlayAudioForUsage(bool doBroadcast)
{
const bool hasAppOps = mAttributionSource.packageName.has_value()
&& mAppOpsManager.checkAudioOpNoThrow(
@@ -589,11 +591,13 @@
bool shouldChange = !hasAppOps; // check if we need to update.
if (mHasOpPlayAudio.compare_exchange_strong(shouldChange, hasAppOps)) {
ALOGD("OpPlayAudio: track:%d usage:%d %smuted", mId, mUsage, hasAppOps ? "not " : "");
- auto thread = mThread.promote();
- if (thread != nullptr && thread->type() == AudioFlinger::ThreadBase::OFFLOAD) {
- // Wake up Thread if offloaded, otherwise it may be several seconds for update.
- Mutex::Autolock _l(thread->mLock);
- thread->broadcast_l();
+ if (doBroadcast) {
+ auto thread = mThread.promote();
+ if (thread != nullptr && thread->type() == AudioFlinger::ThreadBase::OFFLOAD) {
+ // Wake up Thread if offloaded, otherwise it may be several seconds for update.
+ Mutex::Autolock _l(thread->mLock);
+ thread->broadcast_l();
+ }
}
}
}
@@ -611,7 +615,7 @@
}
sp<OpPlayAudioMonitor> monitor = mMonitor.promote();
if (monitor != NULL) {
- monitor->checkPlayAudioForUsage();
+ monitor->checkPlayAudioForUsage(/*doBroadcast=*/true);
}
}
diff --git a/services/audiopolicy/common/managerdefinitions/include/HwModule.h b/services/audiopolicy/common/managerdefinitions/include/HwModule.h
index e994758..cf20260 100644
--- a/services/audiopolicy/common/managerdefinitions/include/HwModule.h
+++ b/services/audiopolicy/common/managerdefinitions/include/HwModule.h
@@ -43,7 +43,7 @@
HwModule(const char *name, uint32_t halVersion = 0);
~HwModule();
- const char *getName() const { return mName.string(); }
+ const char *getName() const { return mName.c_str(); }
const DeviceVector &getDeclaredDevices() const { return mDeclaredDevices; }
void setDeclaredDevices(const DeviceVector &devices);
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp
index 56c0603..f5cf7e3 100644
--- a/services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp
@@ -126,7 +126,7 @@
dst->appendFormat("%*s- device type: %s\n", spaces, "", toString(mDeviceType).c_str());
- dst->appendFormat("%*s- device address: %s\n", spaces, "", mDeviceAddress.string());
+ dst->appendFormat("%*s- device address: %s\n", spaces, "", mDeviceAddress.c_str());
dst->appendFormat("%*s- output: %d\n", spaces, "",
mOutput == nullptr ? 0 : mOutput->mIoHandle);
@@ -170,7 +170,7 @@
if (mix.mDeviceType == registeredMix->mDeviceType
&& mix.mDeviceAddress.compare(registeredMix->mDeviceAddress) == 0) {
ALOGE("registerMix(): mix already registered for dev=0x%x addr=%s",
- mix.mDeviceType, mix.mDeviceAddress.string());
+ mix.mDeviceType, mix.mDeviceAddress.c_str());
return BAD_VALUE;
}
}
@@ -182,7 +182,7 @@
sp<AudioPolicyMix> policyMix = sp<AudioPolicyMix>::make(mix);
add(policyMix);
ALOGD("registerMix(): adding mix for dev=0x%x addr=%s",
- policyMix->mDeviceType, policyMix->mDeviceAddress.string());
+ policyMix->mDeviceType, policyMix->mDeviceAddress.c_str());
if (desc != nullptr) {
desc->mPolicyMix = policyMix;
@@ -198,14 +198,14 @@
if (mix.mDeviceType == registeredMix->mDeviceType
&& mix.mDeviceAddress.compare(registeredMix->mDeviceAddress) == 0) {
ALOGD("unregisterMix(): removing mix for dev=0x%x addr=%s",
- mix.mDeviceType, mix.mDeviceAddress.string());
+ mix.mDeviceType, mix.mDeviceAddress.c_str());
removeAt(i);
return NO_ERROR;
}
}
ALOGE("unregisterMix(): mix not registered for dev=0x%x addr=%s",
- mix.mDeviceType, mix.mDeviceAddress.string());
+ mix.mDeviceType, mix.mDeviceAddress.c_str());
return BAD_VALUE;
}
@@ -213,20 +213,20 @@
const String8& address, sp<AudioPolicyMix> &policyMix) const
{
- ALOGV("getAudioPolicyMix() for dev=0x%x addr=%s", deviceType, address.string());
+ ALOGV("getAudioPolicyMix() for dev=0x%x addr=%s", deviceType, address.c_str());
for (ssize_t i = 0; i < size(); i++) {
// Workaround: when an in audio policy is registered, it opens an output
// that tries to find the audio policy, thus the device must be ignored.
if (itemAt(i)->mDeviceAddress.compare(address) == 0) {
policyMix = itemAt(i);
ALOGV("getAudioPolicyMix: found mix %zu match (devType=0x%x addr=%s)",
- i, deviceType, address.string());
+ i, deviceType, address.c_str());
return NO_ERROR;
}
}
ALOGE("getAudioPolicyMix(): mix not registered for dev=0x%x addr=%s",
- deviceType, address.string());
+ deviceType, address.c_str());
return BAD_VALUE;
}
@@ -326,7 +326,7 @@
// if there is an address match, prioritize that match
if (strncmp(attributes.tags, "addr=", strlen("addr=")) == 0 &&
strncmp(attributes.tags + strlen("addr="),
- mix->mDeviceAddress.string(),
+ mix->mDeviceAddress.c_str(),
AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - strlen("addr=") - 1) == 0) {
ALOGV("\tgetOutputForAttr will use mix %zu", mixIndex);
return MixMatchStatus::MATCH;
@@ -340,7 +340,7 @@
if (attributes.usage == AUDIO_USAGE_VIRTUAL_SOURCE &&
strncmp(attributes.tags, "addr=", strlen("addr=")) == 0 &&
strncmp(attributes.tags + strlen("addr="),
- mix->mDeviceAddress.string(),
+ mix->mDeviceAddress.c_str(),
AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - strlen("addr=") - 1) == 0) {
return MixMatchStatus::MATCH;
}
@@ -402,10 +402,10 @@
#ifdef LOG_NDEBUG
ALOGV("getInputMixForAttr looking for address %s for source %d\n mixes available:",
- address.string(), attr.source);
+ address.c_str(), attr.source);
for (size_t i = 0; i < size(); i++) {
const sp<AudioPolicyMix> audioPolicyMix = itemAt(i);
- ALOGV("\tmix %zu address=%s", i, audioPolicyMix->mDeviceAddress.string());
+ ALOGV("\tmix %zu address=%s", i, audioPolicyMix->mDeviceAddress.c_str());
}
#endif
@@ -414,18 +414,18 @@
const sp<AudioPolicyMix>& registeredMix = itemAt(index);
if (registeredMix->mDeviceAddress.compare(address) == 0) {
ALOGD("getInputMixForAttr found addr=%s dev=0x%x",
- registeredMix->mDeviceAddress.string(), registeredMix->mDeviceType);
+ registeredMix->mDeviceAddress.c_str(), registeredMix->mDeviceType);
break;
}
}
if (index == size()) {
- ALOGW("getInputMixForAttr() no policy for address %s", address.string());
+ ALOGW("getInputMixForAttr() no policy for address %s", address.c_str());
return BAD_VALUE;
}
const sp<AudioPolicyMix> audioPolicyMix = itemAt(index);
if (audioPolicyMix->mMixType != MIX_TYPE_PLAYERS) {
- ALOGW("getInputMixForAttr() bad policy mix type for address %s", address.string());
+ ALOGW("getInputMixForAttr() bad policy mix type for address %s", address.c_str());
return BAD_VALUE;
}
if (policyMix != nullptr) {
@@ -463,7 +463,7 @@
}
// check if this mix goes to a device in the list of devices
bool deviceMatch = false;
- const AudioDeviceTypeAddr mixDevice(mix->mDeviceType, mix->mDeviceAddress.string());
+ const AudioDeviceTypeAddr mixDevice(mix->mDeviceType, mix->mDeviceAddress.c_str());
for (size_t j = 0; j < devices.size(); j++) {
if (mixDevice.equals(devices[j])) {
deviceMatch = true;
@@ -519,7 +519,7 @@
}
}
if (ruleAllowsUid) {
- devices.add(AudioDeviceTypeAddr(mix->mDeviceType, mix->mDeviceAddress.string()));
+ devices.add(AudioDeviceTypeAddr(mix->mDeviceType, mix->mDeviceAddress.c_str()));
}
}
return NO_ERROR;
@@ -554,7 +554,7 @@
}
// check if this mix goes to a device in the list of devices
bool deviceMatch = false;
- const AudioDeviceTypeAddr mixDevice(mix->mDeviceType, mix->mDeviceAddress.string());
+ const AudioDeviceTypeAddr mixDevice(mix->mDeviceType, mix->mDeviceAddress.c_str());
for (size_t j = 0; j < devices.size(); j++) {
if (mixDevice.equals(devices[j])) {
deviceMatch = true;
@@ -611,7 +611,7 @@
}
}
if (ruleAllowsUserId) {
- devices.add(AudioDeviceTypeAddr(mix->mDeviceType, mix->mDeviceAddress.string()));
+ devices.add(AudioDeviceTypeAddr(mix->mDeviceType, mix->mDeviceAddress.c_str()));
}
}
return NO_ERROR;
diff --git a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
index a909331..62e5bd4 100644
--- a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
@@ -185,7 +185,7 @@
}
std::string descBaseDumpStr;
- DeviceDescriptorBase::dump(&descBaseDumpStr, spaces, extraInfo.string(), verbose);
+ DeviceDescriptorBase::dump(&descBaseDumpStr, spaces, extraInfo.c_str(), verbose);
dst->append(descBaseDumpStr.c_str());
}
@@ -325,7 +325,7 @@
}
}
ALOGV("DeviceVector::%s() for type %08x address \"%s\" found %p format %08x",
- __func__, type, address.string(), device.get(), format);
+ __func__, type, address.c_str(), device.get(), format);
return device;
}
@@ -448,7 +448,7 @@
if (isEmpty()) {
return;
}
- dst->appendFormat("%*s%s devices (%zu):\n", spaces, "", tag.string(), size());
+ dst->appendFormat("%*s%s devices (%zu):\n", spaces, "", tag.c_str(), size());
for (size_t i = 0; i < size(); i++) {
const std::string prefix = base::StringPrintf("%*s %zu. ", spaces, "", i + 1);
dst->appendFormat("%s", prefix.c_str());
diff --git a/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
index 95f8d14..2c8e50b 100644
--- a/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
@@ -67,7 +67,7 @@
config->sample_rate));
sp<DeviceDescriptor> devDesc =
- new DeviceDescriptor(device, getTagForDevice(device), address.string());
+ new DeviceDescriptor(device, getTagForDevice(device), address.c_str());
addDynamicDevice(devDesc);
// Reciprocally attach the device to the module
devDesc->attach(this);
@@ -135,7 +135,7 @@
config->sample_rate));
sp<DeviceDescriptor> devDesc =
- new DeviceDescriptor(device, getTagForDevice(device), address.string());
+ new DeviceDescriptor(device, getTagForDevice(device), address.c_str());
addDynamicDevice(devDesc);
// Reciprocally attach the device to the module
devDesc->attach(this);
@@ -375,7 +375,7 @@
if (allowToCreate) {
moduleDevice->attach(hwModule);
// Name may be overwritten, restored on detach.
- moduleDevice->setAddress(devAddress.string());
+ moduleDevice->setAddress(devAddress.c_str());
// Name may be overwritten, restored on detach.
moduleDevice->setName(name);
}
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 106f90c..87da6fa 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -273,7 +273,7 @@
sp<AudioPolicyMix> policyMix = desc->mPolicyMix.promote();
if (policyMix != nullptr
&& policyMix->mMixType == MIX_TYPE_RECORDERS
- && device->address() == policyMix->mDeviceAddress.string()) {
+ && device->address() == policyMix->mDeviceAddress.c_str()) {
doCheckForDeviceAndOutputChanges = false;
break;
}
@@ -2098,7 +2098,7 @@
const char *address = NULL;
if (policyMix != nullptr) {
audio_devices_t newDeviceType;
- address = policyMix->mDeviceAddress.string();
+ address = policyMix->mDeviceAddress.c_str();
if ((policyMix->mRouteFlags & MIX_ROUTE_FLAG_LOOP_BACK) == MIX_ROUTE_FLAG_LOOP_BACK) {
newDeviceType = AUDIO_DEVICE_OUT_REMOTE_SUBMIX;
} else {
@@ -3451,7 +3451,7 @@
}
if (mPolicyMixes.registerMix(mix, 0 /*output desc*/) != NO_ERROR) {
- ALOGE("Error registering mix %zu for address %s", i, address.string());
+ ALOGE("Error registering mix %zu for address %s", i, address.c_str());
res = INVALID_OPERATION;
break;
}
@@ -3468,16 +3468,16 @@
if ((res = setDeviceConnectionStateInt(deviceTypeToMakeAvailable,
AUDIO_POLICY_DEVICE_STATE_AVAILABLE,
- address.string(), "remote-submix", AUDIO_FORMAT_DEFAULT)) != NO_ERROR) {
+ address.c_str(), "remote-submix", AUDIO_FORMAT_DEFAULT)) != NO_ERROR) {
ALOGE("Failed to set remote submix device available, type %u, address %s",
- mix.mDeviceType, address.string());
+ mix.mDeviceType, address.c_str());
break;
}
} else if ((mix.mRouteFlags & MIX_ROUTE_FLAG_RENDER) == MIX_ROUTE_FLAG_RENDER) {
String8 address = mix.mDeviceAddress;
audio_devices_t type = mix.mDeviceType;
ALOGV(" registerPolicyMixes() mix %zu of %zu is RENDER, dev=0x%X addr=%s",
- i, mixes.size(), type, address.string());
+ i, mixes.size(), type, address.c_str());
sp<DeviceDescriptor> device = mHwModules.getDeviceDescriptor(
mix.mDeviceType, mix.mDeviceAddress,
@@ -3495,7 +3495,7 @@
if (!desc->isDuplicated() && desc->supportedDevices().contains(device)) {
if (mPolicyMixes.registerMix(mix, desc) != NO_ERROR) {
ALOGE("Could not register mix RENDER, dev=0x%X addr=%s", type,
- address.string());
+ address.c_str());
res = INVALID_OPERATION;
} else {
foundOutput = true;
@@ -3512,7 +3512,7 @@
if (profile->isDirectOutput() && profile->supportsDevice(device)) {
if (mPolicyMixes.registerMix(mix, nullptr) != NO_ERROR) {
ALOGE("Could not register mix RENDER, dev=0x%X addr=%s", type,
- address.string());
+ address.c_str());
res = INVALID_OPERATION;
} else {
foundOutput = true;
@@ -3522,12 +3522,12 @@
}
if (res != NO_ERROR) {
ALOGE(" Error registering mix %zu for device 0x%X addr %s",
- i, type, address.string());
+ i, type, address.c_str());
res = INVALID_OPERATION;
break;
} else if (!foundOutput) {
ALOGE(" Output not found for mix %zu for device 0x%X addr %s",
- i, type, address.string());
+ i, type, address.c_str());
res = INVALID_OPERATION;
break;
} else {
@@ -3571,14 +3571,14 @@
}
for (auto device : {AUDIO_DEVICE_IN_REMOTE_SUBMIX, AUDIO_DEVICE_OUT_REMOTE_SUBMIX}) {
- if (getDeviceConnectionState(device, address.string()) ==
+ if (getDeviceConnectionState(device, address.c_str()) ==
AUDIO_POLICY_DEVICE_STATE_AVAILABLE) {
res = setDeviceConnectionStateInt(device, AUDIO_POLICY_DEVICE_STATE_UNAVAILABLE,
- address.string(), "remote-submix",
+ address.c_str(), "remote-submix",
AUDIO_FORMAT_DEFAULT);
if (res != OK) {
ALOGE("Error making RemoteSubmix device unavailable for mix "
- "with type %d, address %s", device, address.string());
+ "with type %d, address %s", device, address.c_str());
}
}
}
@@ -3937,7 +3937,7 @@
{
String8 result;
dump(&result);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
return NO_ERROR;
}
@@ -5974,7 +5974,7 @@
}
ALOGV("opening output for device %08x with params %s profile %p name %s",
- deviceType, address.string(), profile.get(), profile->getName().c_str());
+ deviceType, address.c_str(), profile.get(), profile->getName().c_str());
desc = openOutputWithProfileAndDevice(profile, DeviceVector(device));
audio_io_handle_t output = desc == nullptr ? AUDIO_IO_HANDLE_NONE : desc->mIoHandle;
if (output == AUDIO_IO_HANDLE_NONE) {
@@ -7697,12 +7697,12 @@
if (profiles.hasDynamicFormat()) {
reply = mpClientInterface->getParameters(
ioHandle, String8(AudioParameter::keyStreamSupportedFormats));
- ALOGV("%s: supported formats %d, %s", __FUNCTION__, ioHandle, reply.string());
+ ALOGV("%s: supported formats %d, %s", __FUNCTION__, ioHandle, reply.c_str());
AudioParameter repliedParameters(reply);
FormatVector formats;
if (repliedParameters.get(
String8(AudioParameter::keyStreamSupportedFormats), reply) == NO_ERROR) {
- formats = formatsFromString(reply.string());
+ formats = formatsFromString(reply.c_str());
} else if (devDesc->hasValidAudioProfile()) {
ALOGD("%s: using the device profiles", __func__);
formats = devDesc->getAudioProfiles().getSupportedFormats();
@@ -7729,11 +7729,11 @@
ioHandle,
requestedParameters.toString() + ";" +
AudioParameter::keyStreamSupportedSamplingRates);
- ALOGV("%s: supported sampling rates %s", __FUNCTION__, reply.string());
+ ALOGV("%s: supported sampling rates %s", __FUNCTION__, reply.c_str());
AudioParameter repliedParameters(reply);
if (repliedParameters.get(
String8(AudioParameter::keyStreamSupportedSamplingRates), reply) == NO_ERROR) {
- samplingRates = samplingRatesFromString(reply.string());
+ samplingRates = samplingRatesFromString(reply.c_str());
} else {
samplingRates = devDesc->getAudioProfiles().getSampleRatesFor(format);
}
@@ -7742,11 +7742,11 @@
reply = mpClientInterface->getParameters(ioHandle,
requestedParameters.toString() + ";" +
AudioParameter::keyStreamSupportedChannels);
- ALOGV("%s: supported channel masks %s", __FUNCTION__, reply.string());
+ ALOGV("%s: supported channel masks %s", __FUNCTION__, reply.c_str());
AudioParameter repliedParameters(reply);
if (repliedParameters.get(
String8(AudioParameter::keyStreamSupportedChannels), reply) == NO_ERROR) {
- channelMasks = channelMasksFromString(reply.string());
+ channelMasks = channelMasksFromString(reply.c_str());
} else {
channelMasks = devDesc->getAudioProfiles().getChannelMasksFor(format);
}
@@ -7915,7 +7915,7 @@
desc->mPolicyMix = policyMix;
} else {
ALOGW("checkOutputsForDevice() cannot find policy for address %s",
- address.string());
+ address.c_str());
}
} else if (hasPrimaryOutput() && speaker != nullptr
diff --git a/services/audiopolicy/service/AudioPolicyClientImpl.cpp b/services/audiopolicy/service/AudioPolicyClientImpl.cpp
index 290db97..dd06bd5 100644
--- a/services/audiopolicy/service/AudioPolicyClientImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyClientImpl.cpp
@@ -194,7 +194,7 @@
const String8& keyValuePairs,
int delay_ms)
{
- mAudioPolicyService->setParameters(io_handle, keyValuePairs.string(), delay_ms);
+ mAudioPolicyService->setParameters(io_handle, keyValuePairs.c_str(), delay_ms);
}
String8 AudioPolicyService::AudioPolicyClient::getParameters(audio_io_handle_t io_handle,
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index 50c2c46..5ec12bc 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -456,7 +456,7 @@
void AudioPolicyService::onDynamicPolicyMixStateUpdate(const String8& regId, int32_t state)
{
ALOGV("AudioPolicyService::onDynamicPolicyMixStateUpdate(%s, %d)",
- regId.string(), state);
+ regId.c_str(), state);
mOutputCommandThread->dynamicPolicyMixStateUpdateCommand(regId, state);
}
@@ -800,7 +800,7 @@
msg << std::endl;
result.append(msg.str().c_str());
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
mUidPolicy->dumpInternals(fd);
return NO_ERROR;
@@ -1207,19 +1207,19 @@
const bool locked = dumpTryLock(mLock);
if (!locked) {
String8 result(kDeadlockedString);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
dumpInternals(fd);
String8 actPtr = String8::format("AudioCommandThread: %p\n", mAudioCommandThread.get());
- write(fd, actPtr.string(), actPtr.size());
+ write(fd, actPtr.c_str(), actPtr.size());
if (mAudioCommandThread != 0) {
mAudioCommandThread->dump(fd);
}
String8 octPtr = String8::format("OutputCommandThread: %p\n", mOutputCommandThread.get());
- write(fd, octPtr.string(), octPtr.size());
+ write(fd, octPtr.c_str(), octPtr.size());
if (mOutputCommandThread != 0) {
mOutputCommandThread->dump(fd);
}
@@ -1228,7 +1228,7 @@
mAudioPolicyManager->dump(fd);
} else {
String8 apmPtr = String8::format("AudioPolicyManager: %p\n", mAudioPolicyManager);
- write(fd, apmPtr.string(), apmPtr.size());
+ write(fd, apmPtr.c_str(), apmPtr.size());
}
mPackageManager.dump(fd);
@@ -1262,7 +1262,7 @@
IPCThreadState::self()->getCallingPid(),
IPCThreadState::self()->getCallingUid());
result.append(buffer);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
return NO_ERROR;
}
@@ -1437,8 +1437,8 @@
PermissionController pc;
uid = pc.getPackageUid(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'", String8(packageName).c_str());
+ dprintf(err, "Unknown package: '%s'\n", String8(packageName).c_str());
return BAD_VALUE;
}
@@ -1457,7 +1457,7 @@
if (args[2] == String16("active")) {
active = true;
} else if ((args[2] != String16("idle"))) {
- ALOGE("Expected active or idle but got: '%s'", String8(args[2]).string());
+ ALOGE("Expected active or idle but got: '%s'", String8(args[2]).c_str());
return BAD_VALUE;
}
@@ -1827,7 +1827,7 @@
snprintf(buffer, SIZE, "\tIs RTT Enabled: %s\n", (mRttEnabled ? "True":"False"));
result.append(buffer);
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
}
// ----------- AudioPolicyService::SensorPrivacyService implementation ----------
@@ -1971,14 +1971,14 @@
AudioPolicyService::AudioCommandThread::~AudioCommandThread()
{
if (!mAudioCommands.isEmpty()) {
- release_wake_lock(mName.string());
+ release_wake_lock(mName.c_str());
}
mAudioCommands.clear();
}
void AudioPolicyService::AudioCommandThread::onFirstRef()
{
- run(mName.string(), ANDROID_PRIORITY_AUDIO);
+ run(mName.c_str(), ANDROID_PRIORITY_AUDIO);
}
bool AudioPolicyService::AudioCommandThread::threadLoop()
@@ -2015,7 +2015,7 @@
case SET_PARAMETERS: {
ParametersData *data = (ParametersData *)command->mParam.get();
ALOGV("AudioCommandThread() processing set parameters string %s, io %d",
- data->mKeyValuePairs.string(), data->mIO);
+ data->mKeyValuePairs.c_str(), data->mIO);
mLock.unlock();
command->mStatus = AudioSystem::setParameters(data->mIO, data->mKeyValuePairs);
mLock.lock();
@@ -2124,7 +2124,7 @@
DynPolicyMixStateUpdateData *data =
(DynPolicyMixStateUpdateData *)command->mParam.get();
ALOGV("AudioCommandThread() processing dyn policy mix state update %s %d",
- data->mRegId.string(), data->mState);
+ data->mRegId.c_str(), data->mState);
svc = mService.promote();
if (svc == 0) {
break;
@@ -2249,7 +2249,7 @@
// release delayed commands wake lock as many times as we made the queue is
// empty during popping.
while (numTimesBecameEmpty--) {
- release_wake_lock(mName.string());
+ release_wake_lock(mName.c_str());
}
// At this stage we have either an empty command queue or the first command in the queue
@@ -2265,7 +2265,7 @@
}
// release delayed commands wake lock before quitting
if (!mAudioCommands.isEmpty()) {
- release_wake_lock(mName.string());
+ release_wake_lock(mName.c_str());
}
mLock.unlock();
return false;
@@ -2280,7 +2280,7 @@
const bool locked = dumpTryLock(mLock);
if (!locked) {
String8 result2(kCmdDeadlockedString);
- write(fd, result2.string(), result2.size());
+ write(fd, result2.c_str(), result2.size());
}
snprintf(buffer, SIZE, "- Commands:\n");
@@ -2298,7 +2298,7 @@
result.append(" none\n");
}
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
dumpReleaseLock(mLock, locked);
@@ -2485,7 +2485,7 @@
data->mState = state;
command->mParam = data;
ALOGV("AudioCommandThread() sending dynamic policy mix (id=%s) state update to %d",
- regId.string(), state);
+ regId.c_str(), state);
sendCommand(command);
}
@@ -2582,7 +2582,7 @@
// acquire wake lock to make sure delayed commands are processed
if (mAudioCommands.isEmpty()) {
- acquire_wake_lock(PARTIAL_WAKE_LOCK, mName.string());
+ acquire_wake_lock(PARTIAL_WAKE_LOCK, mName.c_str());
}
// check same pending commands with later time stamps and eliminate them
@@ -2607,7 +2607,7 @@
ParametersData *data2 = (ParametersData *)command2->mParam.get();
if (data->mIO != data2->mIO) break;
ALOGV("Comparing parameter command %s to new command %s",
- data2->mKeyValuePairs.string(), data->mKeyValuePairs.string());
+ data2->mKeyValuePairs.c_str(), data->mKeyValuePairs.c_str());
AudioParameter param = AudioParameter(data->mKeyValuePairs);
AudioParameter param2 = AudioParameter(data2->mKeyValuePairs);
for (size_t j = 0; j < param.size(); j++) {
@@ -2620,7 +2620,7 @@
param2.getAt(k, key2, value2);
if (key2 == key) {
param2.remove(key2);
- ALOGV("Filtering out parameter %s", key2.string());
+ ALOGV("Filtering out parameter %s", key2.c_str());
break;
}
}
diff --git a/services/medialog/MediaLogService.cpp b/services/medialog/MediaLogService.cpp
index 902af66..abe5f16 100644
--- a/services/medialog/MediaLogService.cpp
+++ b/services/medialog/MediaLogService.cpp
@@ -107,7 +107,7 @@
if (args.size() > 0) {
const String8 arg0(args[0]);
- if (!strcmp(arg0.string(), "-r")) {
+ if (!strcmp(arg0.c_str(), "-r")) {
// needed because mReaders is protected by mLock
bool locked = dumpTryLock(mLock);
@@ -115,9 +115,9 @@
if (!locked) {
String8 result(kDeadlockedString);
if (fd >= 0) {
- write(fd, result.string(), result.size());
+ write(fd, result.c_str(), result.size());
} else {
- ALOGW("%s:", result.string());
+ ALOGW("%s:", result.c_str());
}
return NO_ERROR;
}
diff --git a/services/mediametrics/MediaMetricsService.cpp b/services/mediametrics/MediaMetricsService.cpp
index adb2217..baca57d 100644
--- a/services/mediametrics/MediaMetricsService.cpp
+++ b/services/mediametrics/MediaMetricsService.cpp
@@ -278,14 +278,14 @@
} else if (args[i] == prefixOption) {
++i;
if (i < n) {
- prefix = String8(args[i]).string();
+ prefix = String8(args[i]).c_str();
}
} else if (args[i] == sinceOption) {
++i;
if (i < n) {
String8 value(args[i]);
char *endp;
- const char *p = value.string();
+ const char *p = value.c_str();
const auto sec = (int64_t)strtoll(p, &endp, 10);
if (endp == p || *endp != '\0' || sec == 0) {
sinceNs = 0;