Loading audio/aidl/default/spatializer/SpatializerSw.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -64,7 +64,12 @@ namespace aidl::android::hardware::audio::effect { const std::string SpatializerSw::kEffectName = "SpatializerSw"; const AudioChannelLayout kSupportedChannelMask = AudioChannelLayout::make<AudioChannelLayout::layoutMask>( AudioChannelLayout::LAYOUT_5POINT1); const std::vector<Range::SpatializerRange> SpatializerSw::kRanges = { MAKE_RANGE(Spatializer, supportedChannelLayout, {kSupportedChannelMask}, {kSupportedChannelMask}), MAKE_RANGE(Spatializer, spatializationLevel, Spatialization::Level::NONE, Spatialization::Level::BED_PLUS_OBJECTS), MAKE_RANGE(Spatializer, spatializationMode, Spatialization::Mode::BINAURAL, Loading Loading @@ -133,6 +138,11 @@ ndk::ScopedAStatus SpatializerSw::getParameterSpecific(const Parameter::Id& id, } std::shared_ptr<EffectContext> SpatializerSw::createContext(const Parameter::Common& common) { if (common.input.base.channelMask != kSupportedChannelMask) { LOG(ERROR) << __func__ << " channelMask not supported: " << common.input.base.channelMask.toString(); return nullptr; } if (mContext) { LOG(DEBUG) << __func__ << " context already exist"; } else { Loading audio/aidl/vts/EffectHelper.h +40 −14 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <algorithm> #include <memory> #include <optional> #include <string> #include <type_traits> #include <unordered_map> Loading @@ -42,13 +43,18 @@ using namespace android; using aidl::android::hardware::audio::effect::CommandId; using aidl::android::hardware::audio::effect::Descriptor; using aidl::android::hardware::audio::effect::getEffectTypeUuidSpatializer; using aidl::android::hardware::audio::effect::getRange; using aidl::android::hardware::audio::effect::IEffect; using aidl::android::hardware::audio::effect::isRangeValid; using aidl::android::hardware::audio::effect::kEffectTypeUuidSpatializer; using aidl::android::hardware::audio::effect::kEventFlagDataMqNotEmpty; using aidl::android::hardware::audio::effect::kEventFlagDataMqUpdate; using aidl::android::hardware::audio::effect::kEventFlagNotEmpty; using aidl::android::hardware::audio::effect::kReopenSupportedVersion; using aidl::android::hardware::audio::effect::Parameter; using aidl::android::hardware::audio::effect::Range; using aidl::android::hardware::audio::effect::Spatializer; using aidl::android::hardware::audio::effect::State; using aidl::android::hardware::common::fmq::SynchronizedReadWrite; using aidl::android::media::audio::common::AudioChannelLayout; Loading Loading @@ -79,7 +85,7 @@ static inline std::string getPrefix(Descriptor& descriptor) { class EffectHelper { public: static void create(std::shared_ptr<IFactory> factory, std::shared_ptr<IEffect>& effect, void create(std::shared_ptr<IFactory> factory, std::shared_ptr<IEffect>& effect, Descriptor& desc, binder_status_t status = EX_NONE) { ASSERT_NE(factory, nullptr); auto& id = desc.common.id; Loading @@ -87,6 +93,8 @@ class EffectHelper { if (status == EX_NONE) { ASSERT_NE(effect, nullptr) << toString(id.uuid); } mIsSpatializer = id.type == getEffectTypeUuidSpatializer(); mDescriptor = desc; } static void destroyIgnoreRet(std::shared_ptr<IFactory> factory, Loading @@ -110,10 +118,9 @@ class EffectHelper { ASSERT_STATUS(status, effect->open(common, specific, ret)); } static void open(std::shared_ptr<IEffect> effect, int session = 0, binder_status_t status = EX_NONE) { void open(std::shared_ptr<IEffect> effect, int session = 0, binder_status_t status = EX_NONE) { ASSERT_NE(effect, nullptr); Parameter::Common common = EffectHelper::createParamCommon(session); Parameter::Common common = createParamCommon(session); IEffect::OpenEffectReturn ret; ASSERT_NO_FATAL_FAILURE(open(effect, common, std::nullopt /* specific */, &ret, status)); } Loading Loading @@ -207,15 +214,31 @@ class EffectHelper { true /* retry */)); EXPECT_TRUE(efState & kEventFlagDataMqUpdate); } static Parameter::Common createParamCommon( int session = 0, int ioHandle = -1, int iSampleRate = 48000, int oSampleRate = 48000, long iFrameCount = 0x100, long oFrameCount = 0x100, AudioChannelLayout inputChannelLayout = AudioChannelLayout::make<AudioChannelLayout::layoutMask>( AudioChannelLayout::LAYOUT_STEREO), AudioChannelLayout outputChannelLayout = AudioChannelLayout::make<AudioChannelLayout::layoutMask>( AudioChannelLayout::LAYOUT_STEREO)) { Parameter::Common createParamCommon(int session = 0, int ioHandle = -1, int iSampleRate = 48000, int oSampleRate = 48000, long iFrameCount = 0x100, long oFrameCount = 0x100) { AudioChannelLayout defaultLayout = AudioChannelLayout::make<AudioChannelLayout::layoutMask>( AudioChannelLayout::LAYOUT_STEREO); // query supported input layout and use it as the default parameter in common if (mIsSpatializer && isRangeValid<Range::spatializer>(Spatializer::supportedChannelLayout, mDescriptor.capability)) { const auto layoutRange = getRange<Range::spatializer, Range::SpatializerRange>( mDescriptor.capability, Spatializer::supportedChannelLayout); if (std::vector<AudioChannelLayout> layouts; layoutRange && 0 != (layouts = layoutRange->min.get<Spatializer::supportedChannelLayout>()) .size()) { defaultLayout = layouts[0]; } } return createParamCommon(session, ioHandle, iSampleRate, oSampleRate, iFrameCount, oFrameCount, defaultLayout, defaultLayout); } static Parameter::Common createParamCommon(int session, int ioHandle, int iSampleRate, int oSampleRate, long iFrameCount, long oFrameCount, AudioChannelLayout inputChannelLayout, AudioChannelLayout outputChannelLayout) { Parameter::Common common; common.session = session; common.ioHandle = ioHandle; Loading Loading @@ -379,4 +402,7 @@ class EffectHelper { return bufferMag; } bool mIsSpatializer; Descriptor mDescriptor; }; audio/aidl/vts/VtsHalAECTargetTest.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ class AECParamTest : public ::testing::TestWithParam<AECParamTestParam>, public ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor)); auto specific = getDefaultParamSpecific(); Parameter::Common common = EffectHelper::createParamCommon( Parameter::Common common = createParamCommon( 0 /* session */, 1 /* ioHandle */, 44100 /* iSampleRate */, 44100 /* oSampleRate */, kInputFrameCount /* iFrameCount */, kOutputFrameCount /* oFrameCount */); IEffect::OpenEffectReturn ret; Loading audio/aidl/vts/VtsHalAGC1TargetTest.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ class AGC1ParamTest : public ::testing::TestWithParam<AGC1ParamTestParam>, publi ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor)); Parameter::Specific specific = getDefaultParamSpecific(); Parameter::Common common = EffectHelper::createParamCommon( Parameter::Common common = createParamCommon( 0 /* session */, 1 /* ioHandle */, 44100 /* iSampleRate */, 44100 /* oSampleRate */, kInputFrameCount /* iFrameCount */, kOutputFrameCount /* oFrameCount */); IEffect::OpenEffectReturn ret; Loading audio/aidl/vts/VtsHalAGC2TargetTest.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ class AGC2ParamTest : public ::testing::TestWithParam<AGC2ParamTestParam>, publi ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor)); Parameter::Specific specific = getDefaultParamSpecific(); Parameter::Common common = EffectHelper::createParamCommon( Parameter::Common common = createParamCommon( 0 /* session */, 1 /* ioHandle */, 44100 /* iSampleRate */, 44100 /* oSampleRate */, kInputFrameCount /* iFrameCount */, kOutputFrameCount /* oFrameCount */); IEffect::OpenEffectReturn ret; Loading Loading
audio/aidl/default/spatializer/SpatializerSw.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -64,7 +64,12 @@ namespace aidl::android::hardware::audio::effect { const std::string SpatializerSw::kEffectName = "SpatializerSw"; const AudioChannelLayout kSupportedChannelMask = AudioChannelLayout::make<AudioChannelLayout::layoutMask>( AudioChannelLayout::LAYOUT_5POINT1); const std::vector<Range::SpatializerRange> SpatializerSw::kRanges = { MAKE_RANGE(Spatializer, supportedChannelLayout, {kSupportedChannelMask}, {kSupportedChannelMask}), MAKE_RANGE(Spatializer, spatializationLevel, Spatialization::Level::NONE, Spatialization::Level::BED_PLUS_OBJECTS), MAKE_RANGE(Spatializer, spatializationMode, Spatialization::Mode::BINAURAL, Loading Loading @@ -133,6 +138,11 @@ ndk::ScopedAStatus SpatializerSw::getParameterSpecific(const Parameter::Id& id, } std::shared_ptr<EffectContext> SpatializerSw::createContext(const Parameter::Common& common) { if (common.input.base.channelMask != kSupportedChannelMask) { LOG(ERROR) << __func__ << " channelMask not supported: " << common.input.base.channelMask.toString(); return nullptr; } if (mContext) { LOG(DEBUG) << __func__ << " context already exist"; } else { Loading
audio/aidl/vts/EffectHelper.h +40 −14 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <algorithm> #include <memory> #include <optional> #include <string> #include <type_traits> #include <unordered_map> Loading @@ -42,13 +43,18 @@ using namespace android; using aidl::android::hardware::audio::effect::CommandId; using aidl::android::hardware::audio::effect::Descriptor; using aidl::android::hardware::audio::effect::getEffectTypeUuidSpatializer; using aidl::android::hardware::audio::effect::getRange; using aidl::android::hardware::audio::effect::IEffect; using aidl::android::hardware::audio::effect::isRangeValid; using aidl::android::hardware::audio::effect::kEffectTypeUuidSpatializer; using aidl::android::hardware::audio::effect::kEventFlagDataMqNotEmpty; using aidl::android::hardware::audio::effect::kEventFlagDataMqUpdate; using aidl::android::hardware::audio::effect::kEventFlagNotEmpty; using aidl::android::hardware::audio::effect::kReopenSupportedVersion; using aidl::android::hardware::audio::effect::Parameter; using aidl::android::hardware::audio::effect::Range; using aidl::android::hardware::audio::effect::Spatializer; using aidl::android::hardware::audio::effect::State; using aidl::android::hardware::common::fmq::SynchronizedReadWrite; using aidl::android::media::audio::common::AudioChannelLayout; Loading Loading @@ -79,7 +85,7 @@ static inline std::string getPrefix(Descriptor& descriptor) { class EffectHelper { public: static void create(std::shared_ptr<IFactory> factory, std::shared_ptr<IEffect>& effect, void create(std::shared_ptr<IFactory> factory, std::shared_ptr<IEffect>& effect, Descriptor& desc, binder_status_t status = EX_NONE) { ASSERT_NE(factory, nullptr); auto& id = desc.common.id; Loading @@ -87,6 +93,8 @@ class EffectHelper { if (status == EX_NONE) { ASSERT_NE(effect, nullptr) << toString(id.uuid); } mIsSpatializer = id.type == getEffectTypeUuidSpatializer(); mDescriptor = desc; } static void destroyIgnoreRet(std::shared_ptr<IFactory> factory, Loading @@ -110,10 +118,9 @@ class EffectHelper { ASSERT_STATUS(status, effect->open(common, specific, ret)); } static void open(std::shared_ptr<IEffect> effect, int session = 0, binder_status_t status = EX_NONE) { void open(std::shared_ptr<IEffect> effect, int session = 0, binder_status_t status = EX_NONE) { ASSERT_NE(effect, nullptr); Parameter::Common common = EffectHelper::createParamCommon(session); Parameter::Common common = createParamCommon(session); IEffect::OpenEffectReturn ret; ASSERT_NO_FATAL_FAILURE(open(effect, common, std::nullopt /* specific */, &ret, status)); } Loading Loading @@ -207,15 +214,31 @@ class EffectHelper { true /* retry */)); EXPECT_TRUE(efState & kEventFlagDataMqUpdate); } static Parameter::Common createParamCommon( int session = 0, int ioHandle = -1, int iSampleRate = 48000, int oSampleRate = 48000, long iFrameCount = 0x100, long oFrameCount = 0x100, AudioChannelLayout inputChannelLayout = AudioChannelLayout::make<AudioChannelLayout::layoutMask>( AudioChannelLayout::LAYOUT_STEREO), AudioChannelLayout outputChannelLayout = AudioChannelLayout::make<AudioChannelLayout::layoutMask>( AudioChannelLayout::LAYOUT_STEREO)) { Parameter::Common createParamCommon(int session = 0, int ioHandle = -1, int iSampleRate = 48000, int oSampleRate = 48000, long iFrameCount = 0x100, long oFrameCount = 0x100) { AudioChannelLayout defaultLayout = AudioChannelLayout::make<AudioChannelLayout::layoutMask>( AudioChannelLayout::LAYOUT_STEREO); // query supported input layout and use it as the default parameter in common if (mIsSpatializer && isRangeValid<Range::spatializer>(Spatializer::supportedChannelLayout, mDescriptor.capability)) { const auto layoutRange = getRange<Range::spatializer, Range::SpatializerRange>( mDescriptor.capability, Spatializer::supportedChannelLayout); if (std::vector<AudioChannelLayout> layouts; layoutRange && 0 != (layouts = layoutRange->min.get<Spatializer::supportedChannelLayout>()) .size()) { defaultLayout = layouts[0]; } } return createParamCommon(session, ioHandle, iSampleRate, oSampleRate, iFrameCount, oFrameCount, defaultLayout, defaultLayout); } static Parameter::Common createParamCommon(int session, int ioHandle, int iSampleRate, int oSampleRate, long iFrameCount, long oFrameCount, AudioChannelLayout inputChannelLayout, AudioChannelLayout outputChannelLayout) { Parameter::Common common; common.session = session; common.ioHandle = ioHandle; Loading Loading @@ -379,4 +402,7 @@ class EffectHelper { return bufferMag; } bool mIsSpatializer; Descriptor mDescriptor; };
audio/aidl/vts/VtsHalAECTargetTest.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ class AECParamTest : public ::testing::TestWithParam<AECParamTestParam>, public ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor)); auto specific = getDefaultParamSpecific(); Parameter::Common common = EffectHelper::createParamCommon( Parameter::Common common = createParamCommon( 0 /* session */, 1 /* ioHandle */, 44100 /* iSampleRate */, 44100 /* oSampleRate */, kInputFrameCount /* iFrameCount */, kOutputFrameCount /* oFrameCount */); IEffect::OpenEffectReturn ret; Loading
audio/aidl/vts/VtsHalAGC1TargetTest.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ class AGC1ParamTest : public ::testing::TestWithParam<AGC1ParamTestParam>, publi ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor)); Parameter::Specific specific = getDefaultParamSpecific(); Parameter::Common common = EffectHelper::createParamCommon( Parameter::Common common = createParamCommon( 0 /* session */, 1 /* ioHandle */, 44100 /* iSampleRate */, 44100 /* oSampleRate */, kInputFrameCount /* iFrameCount */, kOutputFrameCount /* oFrameCount */); IEffect::OpenEffectReturn ret; Loading
audio/aidl/vts/VtsHalAGC2TargetTest.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ class AGC2ParamTest : public ::testing::TestWithParam<AGC2ParamTestParam>, publi ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor)); Parameter::Specific specific = getDefaultParamSpecific(); Parameter::Common common = EffectHelper::createParamCommon( Parameter::Common common = createParamCommon( 0 /* session */, 1 /* ioHandle */, 44100 /* iSampleRate */, 44100 /* oSampleRate */, kInputFrameCount /* iFrameCount */, kOutputFrameCount /* oFrameCount */); IEffect::OpenEffectReturn ret; Loading