mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Audio Effect : Add base implementation of commandImpl method
Removing code repeatation and moving this method to base class. Effect implementations can override enable, disable and reset methods. Bug: 305866207 Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit Change-Id: Iceb7ad51185d6f6bd2b6d70a5a1dd51e7bd37276
This commit is contained in:
@@ -242,4 +242,17 @@ RetCode EffectContext::notifyDataMqUpdate() {
|
||||
LOG(VERBOSE) << __func__ << " : signal client for reopen";
|
||||
return RetCode::SUCCESS;
|
||||
}
|
||||
|
||||
RetCode EffectContext::enable() {
|
||||
return RetCode::SUCCESS;
|
||||
}
|
||||
|
||||
RetCode EffectContext::disable() {
|
||||
return RetCode::SUCCESS;
|
||||
}
|
||||
|
||||
RetCode EffectContext::reset() {
|
||||
return RetCode::SUCCESS;
|
||||
}
|
||||
|
||||
} // namespace aidl::android::hardware::audio::effect
|
||||
|
||||
@@ -246,7 +246,6 @@ ndk::ScopedAStatus EffectImpl::command(CommandId command) {
|
||||
startThread();
|
||||
break;
|
||||
case CommandId::STOP:
|
||||
case CommandId::RESET:
|
||||
RETURN_OK_IF(mState == State::IDLE);
|
||||
mState = State::IDLE;
|
||||
RETURN_IF(notifyEventFlag(mDataMqNotEmptyEf) != RetCode::SUCCESS, EX_ILLEGAL_STATE,
|
||||
@@ -254,6 +253,13 @@ ndk::ScopedAStatus EffectImpl::command(CommandId command) {
|
||||
stopThread();
|
||||
RETURN_IF_ASTATUS_NOT_OK(commandImpl(command), "commandImplFailed");
|
||||
break;
|
||||
case CommandId::RESET:
|
||||
mState = State::IDLE;
|
||||
RETURN_IF(notifyEventFlag(mDataMqNotEmptyEf) != RetCode::SUCCESS, EX_ILLEGAL_STATE,
|
||||
"notifyEventFlagNotEmptyFailed");
|
||||
stopThread();
|
||||
RETURN_IF_ASTATUS_NOT_OK(commandImpl(command), "commandImplFailed");
|
||||
break;
|
||||
default:
|
||||
LOG(ERROR) << getEffectNameWithVersion() << __func__ << " instance still processing";
|
||||
return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT,
|
||||
@@ -266,8 +272,22 @@ ndk::ScopedAStatus EffectImpl::command(CommandId command) {
|
||||
|
||||
ndk::ScopedAStatus EffectImpl::commandImpl(CommandId command) {
|
||||
RETURN_IF(!mImplContext, EX_NULL_POINTER, "nullContext");
|
||||
if (command == CommandId::RESET) {
|
||||
mImplContext->resetBuffer();
|
||||
switch (command) {
|
||||
case CommandId::START:
|
||||
mImplContext->enable();
|
||||
break;
|
||||
case CommandId::STOP:
|
||||
mImplContext->disable();
|
||||
break;
|
||||
case CommandId::RESET:
|
||||
mImplContext->disable();
|
||||
mImplContext->reset();
|
||||
mImplContext->resetBuffer();
|
||||
break;
|
||||
default:
|
||||
LOG(ERROR) << __func__ << " commandId " << toString(command) << " not supported";
|
||||
return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT,
|
||||
"commandIdNotSupported");
|
||||
}
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
@@ -82,6 +82,10 @@ class EffectContext {
|
||||
|
||||
virtual ::android::hardware::EventFlag* getStatusEventFlag();
|
||||
|
||||
virtual RetCode enable();
|
||||
virtual RetCode disable();
|
||||
virtual RetCode reset();
|
||||
|
||||
protected:
|
||||
int mVersion = 0;
|
||||
size_t mInputFrameSize = 0;
|
||||
|
||||
@@ -397,10 +397,10 @@ class EffectHelper {
|
||||
outputBuffer.size(), outputBuffer));
|
||||
}
|
||||
|
||||
// Disable the process
|
||||
ASSERT_NO_FATAL_FAILURE(command(effect, CommandId::STOP));
|
||||
EXPECT_NO_FATAL_FAILURE(EffectHelper::readFromFmq(statusMQ, 0, outputMQ, 0, outputBuffer));
|
||||
|
||||
// Disable the process
|
||||
ASSERT_NO_FATAL_FAILURE(command(effect, CommandId::RESET));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user