Loading media/audioaidlconversion/include/media/AidlConversionUtil.h +16 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <error/Result.h> #if defined(BACKEND_NDK) #include <android/binder_auto_utils.h> #include <android/binder_enums.h> #include <android/binder_status.h> Loading Loading @@ -362,6 +363,20 @@ static inline ::android::status_t statusTFromBinderStatus(const ::android::binde // standard Java exception (fromExceptionCode) } #if defined(BACKEND_NDK) static inline ::android::status_t statusTFromBinderStatus(const ::ndk::ScopedAStatus &status) { // What we want to do is to 'return statusTFromBinderStatus(status.get()->get())' // However, since the definition of AStatus is not exposed, we have to do the same // via methods of ScopedAStatus: return status.isOk() ? ::android::OK // check ::android::OK, : status.getServiceSpecificError() // service-side error, not standard Java exception // (fromServiceSpecificError) ?: status.getStatus() // a native binder transaction error (fromStatusT) ?: statusTFromExceptionCode(status.getExceptionCode()); // a service-side error with a // standard Java exception (fromExceptionCode) } #endif /** * Return a binder::Status from native service status. * Loading media/libaudiohal/impl/EffectHalAidl.cpp +8 −5 Original line number Diff line number Diff line Loading @@ -17,9 +17,10 @@ #define LOG_TAG "EffectHalAidl" //#define LOG_NDEBUG 0 #include <error/expected_utils.h> #include <media/AidlConversionCppNdk.h> #include <media/AidlConversionNdk.h> #include <media/audiohal/AudioHalUtils.h> #include <media/AidlConversionUtil.h> #include <media/EffectsFactoryApi.h> #include <mediautils/TimeCheck.h> #include <utils/Log.h> Loading @@ -30,6 +31,7 @@ #include <aidl/android/hardware/audio/effect/IEffect.h> using ::aidl::android::aidl_utils::statusTFromBinderStatus; using ::aidl::android::hardware::audio::effect::CommandId; using ::aidl::android::hardware::audio::effect::Descriptor; using ::aidl::android::hardware::audio::effect::IEffect; Loading Loading @@ -85,7 +87,7 @@ status_t EffectHalAidl::handleSetConfig(uint32_t cmdCode, uint32_t cmdSize, void memcpy(&mConfig, pCmdData, cmdSize); State state; RETURN_IF_BINDER_FAIL(mEffect->getState(&state)); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getState(&state))); // effect not open yet, save settings locally if (state != State::INIT) { effect_config_t* legacyConfig = static_cast<effect_config_t*>(pCmdData); Loading @@ -103,7 +105,7 @@ status_t EffectHalAidl::handleSetConfig(uint32_t cmdCode, uint32_t cmdSize, void Parameter::Id id; id.set<Parameter::Id::commonTag>(Parameter::common); aidlParam.set<Parameter::common>(aidlCommon); RETURN_IF_BINDER_FAIL(mEffect->setParameter(aidlParam)); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->setParameter(aidlParam))); } *(int*)pReplyData = 0; *static_cast<int32_t*>(pReplyData) = OK; Loading Loading @@ -153,7 +155,8 @@ status_t EffectHalAidl::command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdDa // open with default effect_config_t (convert to Parameter.Common) IEffect::OpenEffectReturn ret; Parameter::Common common; RETURN_IF_BINDER_FAIL(mEffect->open(common, std::nullopt, &ret)); RETURN_STATUS_IF_ERROR( statusTFromBinderStatus(mEffect->open(common, std::nullopt, &ret))); return OK; } case EFFECT_CMD_SET_CONFIG: Loading Loading @@ -212,7 +215,7 @@ status_t EffectHalAidl::getDescriptor(effect_descriptor_t* pDescriptor) { return BAD_VALUE; } Descriptor aidlDesc; RETURN_IF_BINDER_FAIL(mEffect->getDescriptor(&aidlDesc)); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getDescriptor(&aidlDesc))); *pDescriptor = VALUE_OR_RETURN_STATUS( ::aidl::android::aidl2legacy_Descriptor_effect_descriptor(aidlDesc)); Loading media/libaudiohal/impl/EffectsFactoryHalAidl.cpp +4 −5 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ #include <android/binder_manager.h> #include <media/AidlConversionCppNdk.h> #include <media/AidlConversionNdk.h> #include <media/audiohal/AudioHalUtils.h> #include <utils/Log.h> #include "EffectBufferHalAidl.h" Loading Loading @@ -55,7 +54,7 @@ status_t EffectsFactoryHalAidl::queryNumberEffects(uint32_t *pNumEffects) { { std::lock_guard lg(mLock); RETURN_IF_NOT_OK(queryEffectList_l()); RETURN_STATUS_IF_ERROR(queryEffectList_l()); *pNumEffects = mDescList->size(); } ALOGI("%s %d", __func__, *pNumEffects); Loading @@ -68,7 +67,7 @@ status_t EffectsFactoryHalAidl::getDescriptor(uint32_t index, effect_descriptor_ } std::lock_guard lg(mLock); RETURN_IF_NOT_OK(queryEffectList_l()); RETURN_STATUS_IF_ERROR(queryEffectList_l()); auto listSize = mDescList->size(); if (index >= listSize) { Loading Loading @@ -174,7 +173,7 @@ status_t EffectsFactoryHalAidl::getHalDescriptorWithImplUuid_l(const AudioUuid& return BAD_VALUE; } if (!mDescList) { RETURN_IF_NOT_OK(queryEffectList_l()); RETURN_STATUS_IF_ERROR(queryEffectList_l()); } auto matchIt = std::find_if(mDescList->begin(), mDescList->end(), Loading @@ -195,7 +194,7 @@ status_t EffectsFactoryHalAidl::getHalDescriptorWithTypeUuid_l( return BAD_VALUE; } if (!mDescList) { RETURN_IF_NOT_OK(queryEffectList_l()); RETURN_STATUS_IF_ERROR(queryEffectList_l()); } std::vector<Descriptor> result; std::copy_if(mDescList->begin(), mDescList->end(), std::back_inserter(result), Loading media/libaudiohal/include/media/audiohal/AudioHalUtils.hdeleted 100644 → 0 +0 −35 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #define RETURN_IF_BINDER_FAIL(expr) \ do { \ const ::ndk::ScopedAStatus _temp_status_ = (expr); \ if (!_temp_status_.isOk()) { \ ALOGE("%s:%d return with expr %s msg %s", __func__, __LINE__, #expr, \ _temp_status_.getMessage()); \ return _temp_status_.getStatus(); \ } \ } while (false) #define RETURN_IF_NOT_OK(statement) \ do { \ auto tmp = (statement); \ if (tmp != OK) { \ return tmp; \ } \ } while (false) Loading
media/audioaidlconversion/include/media/AidlConversionUtil.h +16 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <error/Result.h> #if defined(BACKEND_NDK) #include <android/binder_auto_utils.h> #include <android/binder_enums.h> #include <android/binder_status.h> Loading Loading @@ -362,6 +363,20 @@ static inline ::android::status_t statusTFromBinderStatus(const ::android::binde // standard Java exception (fromExceptionCode) } #if defined(BACKEND_NDK) static inline ::android::status_t statusTFromBinderStatus(const ::ndk::ScopedAStatus &status) { // What we want to do is to 'return statusTFromBinderStatus(status.get()->get())' // However, since the definition of AStatus is not exposed, we have to do the same // via methods of ScopedAStatus: return status.isOk() ? ::android::OK // check ::android::OK, : status.getServiceSpecificError() // service-side error, not standard Java exception // (fromServiceSpecificError) ?: status.getStatus() // a native binder transaction error (fromStatusT) ?: statusTFromExceptionCode(status.getExceptionCode()); // a service-side error with a // standard Java exception (fromExceptionCode) } #endif /** * Return a binder::Status from native service status. * Loading
media/libaudiohal/impl/EffectHalAidl.cpp +8 −5 Original line number Diff line number Diff line Loading @@ -17,9 +17,10 @@ #define LOG_TAG "EffectHalAidl" //#define LOG_NDEBUG 0 #include <error/expected_utils.h> #include <media/AidlConversionCppNdk.h> #include <media/AidlConversionNdk.h> #include <media/audiohal/AudioHalUtils.h> #include <media/AidlConversionUtil.h> #include <media/EffectsFactoryApi.h> #include <mediautils/TimeCheck.h> #include <utils/Log.h> Loading @@ -30,6 +31,7 @@ #include <aidl/android/hardware/audio/effect/IEffect.h> using ::aidl::android::aidl_utils::statusTFromBinderStatus; using ::aidl::android::hardware::audio::effect::CommandId; using ::aidl::android::hardware::audio::effect::Descriptor; using ::aidl::android::hardware::audio::effect::IEffect; Loading Loading @@ -85,7 +87,7 @@ status_t EffectHalAidl::handleSetConfig(uint32_t cmdCode, uint32_t cmdSize, void memcpy(&mConfig, pCmdData, cmdSize); State state; RETURN_IF_BINDER_FAIL(mEffect->getState(&state)); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getState(&state))); // effect not open yet, save settings locally if (state != State::INIT) { effect_config_t* legacyConfig = static_cast<effect_config_t*>(pCmdData); Loading @@ -103,7 +105,7 @@ status_t EffectHalAidl::handleSetConfig(uint32_t cmdCode, uint32_t cmdSize, void Parameter::Id id; id.set<Parameter::Id::commonTag>(Parameter::common); aidlParam.set<Parameter::common>(aidlCommon); RETURN_IF_BINDER_FAIL(mEffect->setParameter(aidlParam)); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->setParameter(aidlParam))); } *(int*)pReplyData = 0; *static_cast<int32_t*>(pReplyData) = OK; Loading Loading @@ -153,7 +155,8 @@ status_t EffectHalAidl::command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdDa // open with default effect_config_t (convert to Parameter.Common) IEffect::OpenEffectReturn ret; Parameter::Common common; RETURN_IF_BINDER_FAIL(mEffect->open(common, std::nullopt, &ret)); RETURN_STATUS_IF_ERROR( statusTFromBinderStatus(mEffect->open(common, std::nullopt, &ret))); return OK; } case EFFECT_CMD_SET_CONFIG: Loading Loading @@ -212,7 +215,7 @@ status_t EffectHalAidl::getDescriptor(effect_descriptor_t* pDescriptor) { return BAD_VALUE; } Descriptor aidlDesc; RETURN_IF_BINDER_FAIL(mEffect->getDescriptor(&aidlDesc)); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getDescriptor(&aidlDesc))); *pDescriptor = VALUE_OR_RETURN_STATUS( ::aidl::android::aidl2legacy_Descriptor_effect_descriptor(aidlDesc)); Loading
media/libaudiohal/impl/EffectsFactoryHalAidl.cpp +4 −5 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ #include <android/binder_manager.h> #include <media/AidlConversionCppNdk.h> #include <media/AidlConversionNdk.h> #include <media/audiohal/AudioHalUtils.h> #include <utils/Log.h> #include "EffectBufferHalAidl.h" Loading Loading @@ -55,7 +54,7 @@ status_t EffectsFactoryHalAidl::queryNumberEffects(uint32_t *pNumEffects) { { std::lock_guard lg(mLock); RETURN_IF_NOT_OK(queryEffectList_l()); RETURN_STATUS_IF_ERROR(queryEffectList_l()); *pNumEffects = mDescList->size(); } ALOGI("%s %d", __func__, *pNumEffects); Loading @@ -68,7 +67,7 @@ status_t EffectsFactoryHalAidl::getDescriptor(uint32_t index, effect_descriptor_ } std::lock_guard lg(mLock); RETURN_IF_NOT_OK(queryEffectList_l()); RETURN_STATUS_IF_ERROR(queryEffectList_l()); auto listSize = mDescList->size(); if (index >= listSize) { Loading Loading @@ -174,7 +173,7 @@ status_t EffectsFactoryHalAidl::getHalDescriptorWithImplUuid_l(const AudioUuid& return BAD_VALUE; } if (!mDescList) { RETURN_IF_NOT_OK(queryEffectList_l()); RETURN_STATUS_IF_ERROR(queryEffectList_l()); } auto matchIt = std::find_if(mDescList->begin(), mDescList->end(), Loading @@ -195,7 +194,7 @@ status_t EffectsFactoryHalAidl::getHalDescriptorWithTypeUuid_l( return BAD_VALUE; } if (!mDescList) { RETURN_IF_NOT_OK(queryEffectList_l()); RETURN_STATUS_IF_ERROR(queryEffectList_l()); } std::vector<Descriptor> result; std::copy_if(mDescList->begin(), mDescList->end(), std::back_inserter(result), Loading
media/libaudiohal/include/media/audiohal/AudioHalUtils.hdeleted 100644 → 0 +0 −35 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #define RETURN_IF_BINDER_FAIL(expr) \ do { \ const ::ndk::ScopedAStatus _temp_status_ = (expr); \ if (!_temp_status_.isOk()) { \ ALOGE("%s:%d return with expr %s msg %s", __func__, __LINE__, #expr, \ _temp_status_.getMessage()); \ return _temp_status_.getStatus(); \ } \ } while (false) #define RETURN_IF_NOT_OK(statement) \ do { \ auto tmp = (statement); \ if (tmp != OK) { \ return tmp; \ } \ } while (false)