Loading audio/effect/all-versions/default/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ cc_defaults { ], shared_libs: [ "libaudioutils", "libbase", "libcutils", "libeffects", Loading @@ -48,6 +49,7 @@ cc_defaults { "libeffects_headers", "libhardware_headers", "libmedia_headers", "libmediautils_headers", ], } Loading audio/effect/all-versions/default/Effect.cpp +26 −16 Original line number Diff line number Diff line Loading @@ -22,13 +22,11 @@ #include "Effect.h" #include "common/all-versions/default/EffectMap.h" #include <memory.h> #define ATRACE_TAG ATRACE_TAG_AUDIO #include <HidlUtils.h> #include <android/log.h> #include <media/EffectsFactoryApi.h> #include <mediautils/ScopedStatistics.h> #include <util/EffectUtils.h> #include <utils/Trace.h> Loading @@ -49,12 +47,17 @@ using ::android::hardware::audio::common::COMMON_TYPES_CPP_VERSION::implementati namespace { #define SCOPED_STATS() \ ::android::mediautils::ScopedStatistics scopedStatistics { \ std::string("EffectHal::").append(__func__), mEffectHal->mStatistics \ } class ProcessThread : public Thread { public: // ProcessThread's lifespan never exceeds Effect's lifespan. ProcessThread(std::atomic<bool>* stop, effect_handle_t effect, std::atomic<audio_buffer_t*>* inBuffer, std::atomic<audio_buffer_t*>* outBuffer, Effect::StatusMQ* statusMQ, EventFlag* efGroup) Effect::StatusMQ* statusMQ, EventFlag* efGroup, Effect* effectHal) : Thread(false /*canCallJava*/), mStop(stop), mEffect(effect), Loading @@ -62,7 +65,8 @@ class ProcessThread : public Thread { mInBuffer(inBuffer), mOutBuffer(outBuffer), mStatusMQ(statusMQ), mEfGroup(efGroup) {} mEfGroup(efGroup), mEffectHal(effectHal) {} virtual ~ProcessThread() {} private: Loading @@ -73,6 +77,7 @@ class ProcessThread : public Thread { std::atomic<audio_buffer_t*>* mOutBuffer; Effect::StatusMQ* mStatusMQ; EventFlag* mEfGroup; Effect* const mEffectHal; bool threadLoop() override; }; Loading Loading @@ -102,6 +107,9 @@ bool ProcessThread::threadLoop() { audio_buffer_t* outBuffer = std::atomic_load_explicit(mOutBuffer, std::memory_order_relaxed); if (inBuffer != nullptr && outBuffer != nullptr) { // Time this effect process SCOPED_STATS(); if (efState & static_cast<uint32_t>(MessageQueueFlagBits::REQUEST_PROCESS)) { processResult = (*mEffect)->process(mEffect, inBuffer, outBuffer); } else { Loading Loading @@ -359,7 +367,7 @@ Return<void> Effect::prepareForProcessing(prepareForProcessing_cb _hidl_cb) { // Create and launch the thread. mProcessThread = new ProcessThread(&mStopProcessThread, mHandle, &mHalInBufferPtr, &mHalOutBufferPtr, tempStatusMQ.get(), mEfGroup); &mHalOutBufferPtr, tempStatusMQ.get(), mEfGroup, this); status = mProcessThread->run("effect", PRIORITY_URGENT_AUDIO); if (status != OK) { ALOGW("failed to start effect processing thread: %s", strerror(-status)); Loading Loading @@ -749,6 +757,8 @@ Return<void> Effect::debug(const hidl_handle& fd, const hidl_vec<hidl_string>& / if (fd.getNativeHandle() != nullptr && fd->numFds == 1) { uint32_t cmdData = fd->data[0]; (void)sendCommand(EFFECT_CMD_DUMP, "DUMP", sizeof(cmdData), &cmdData); const std::string s = mStatistics->dump(); if (s.size() != 0) write(cmdData, s.c_str(), s.size()); } return Void(); } Loading audio/effect/all-versions/default/Effect.h +6 −1 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ #include <fmq/MessageQueue.h> #include <hidl/MQDescriptor.h> #include <hidl/Status.h> #include <mediautils/MethodStatistics.h> #include <utils/Thread.h> #include <hardware/audio_effect.h> Loading Loading @@ -169,6 +170,10 @@ struct Effect : public IEffect { Result setParameterImpl(uint32_t paramSize, const void* paramData, uint32_t valueSize, const void* valueData); // process execution statistics const std::shared_ptr<mediautils::MethodStatistics<std::string>> mStatistics = std::make_shared<mediautils::MethodStatistics<std::string>>(); private: friend struct VirtualizerEffect; // for getParameterImpl friend struct VisualizerEffect; // to allow executing commands Loading Loading
audio/effect/all-versions/default/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ cc_defaults { ], shared_libs: [ "libaudioutils", "libbase", "libcutils", "libeffects", Loading @@ -48,6 +49,7 @@ cc_defaults { "libeffects_headers", "libhardware_headers", "libmedia_headers", "libmediautils_headers", ], } Loading
audio/effect/all-versions/default/Effect.cpp +26 −16 Original line number Diff line number Diff line Loading @@ -22,13 +22,11 @@ #include "Effect.h" #include "common/all-versions/default/EffectMap.h" #include <memory.h> #define ATRACE_TAG ATRACE_TAG_AUDIO #include <HidlUtils.h> #include <android/log.h> #include <media/EffectsFactoryApi.h> #include <mediautils/ScopedStatistics.h> #include <util/EffectUtils.h> #include <utils/Trace.h> Loading @@ -49,12 +47,17 @@ using ::android::hardware::audio::common::COMMON_TYPES_CPP_VERSION::implementati namespace { #define SCOPED_STATS() \ ::android::mediautils::ScopedStatistics scopedStatistics { \ std::string("EffectHal::").append(__func__), mEffectHal->mStatistics \ } class ProcessThread : public Thread { public: // ProcessThread's lifespan never exceeds Effect's lifespan. ProcessThread(std::atomic<bool>* stop, effect_handle_t effect, std::atomic<audio_buffer_t*>* inBuffer, std::atomic<audio_buffer_t*>* outBuffer, Effect::StatusMQ* statusMQ, EventFlag* efGroup) Effect::StatusMQ* statusMQ, EventFlag* efGroup, Effect* effectHal) : Thread(false /*canCallJava*/), mStop(stop), mEffect(effect), Loading @@ -62,7 +65,8 @@ class ProcessThread : public Thread { mInBuffer(inBuffer), mOutBuffer(outBuffer), mStatusMQ(statusMQ), mEfGroup(efGroup) {} mEfGroup(efGroup), mEffectHal(effectHal) {} virtual ~ProcessThread() {} private: Loading @@ -73,6 +77,7 @@ class ProcessThread : public Thread { std::atomic<audio_buffer_t*>* mOutBuffer; Effect::StatusMQ* mStatusMQ; EventFlag* mEfGroup; Effect* const mEffectHal; bool threadLoop() override; }; Loading Loading @@ -102,6 +107,9 @@ bool ProcessThread::threadLoop() { audio_buffer_t* outBuffer = std::atomic_load_explicit(mOutBuffer, std::memory_order_relaxed); if (inBuffer != nullptr && outBuffer != nullptr) { // Time this effect process SCOPED_STATS(); if (efState & static_cast<uint32_t>(MessageQueueFlagBits::REQUEST_PROCESS)) { processResult = (*mEffect)->process(mEffect, inBuffer, outBuffer); } else { Loading Loading @@ -359,7 +367,7 @@ Return<void> Effect::prepareForProcessing(prepareForProcessing_cb _hidl_cb) { // Create and launch the thread. mProcessThread = new ProcessThread(&mStopProcessThread, mHandle, &mHalInBufferPtr, &mHalOutBufferPtr, tempStatusMQ.get(), mEfGroup); &mHalOutBufferPtr, tempStatusMQ.get(), mEfGroup, this); status = mProcessThread->run("effect", PRIORITY_URGENT_AUDIO); if (status != OK) { ALOGW("failed to start effect processing thread: %s", strerror(-status)); Loading Loading @@ -749,6 +757,8 @@ Return<void> Effect::debug(const hidl_handle& fd, const hidl_vec<hidl_string>& / if (fd.getNativeHandle() != nullptr && fd->numFds == 1) { uint32_t cmdData = fd->data[0]; (void)sendCommand(EFFECT_CMD_DUMP, "DUMP", sizeof(cmdData), &cmdData); const std::string s = mStatistics->dump(); if (s.size() != 0) write(cmdData, s.c_str(), s.size()); } return Void(); } Loading
audio/effect/all-versions/default/Effect.h +6 −1 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ #include <fmq/MessageQueue.h> #include <hidl/MQDescriptor.h> #include <hidl/Status.h> #include <mediautils/MethodStatistics.h> #include <utils/Thread.h> #include <hardware/audio_effect.h> Loading Loading @@ -169,6 +170,10 @@ struct Effect : public IEffect { Result setParameterImpl(uint32_t paramSize, const void* paramData, uint32_t valueSize, const void* valueData); // process execution statistics const std::shared_ptr<mediautils::MethodStatistics<std::string>> mStatistics = std::make_shared<mediautils::MethodStatistics<std::string>>(); private: friend struct VirtualizerEffect; // for getParameterImpl friend struct VisualizerEffect; // to allow executing commands Loading