Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7abc8d66 authored by Shunkai Yao's avatar Shunkai Yao
Browse files

libaudiohal: spatializer conversion fix

- correct supported headtracking connection modes get logic
- unify the range validation logic

Flag: EXEMPT bugfix
Bug: 422674072
Test: enable Spatial audio on BLE headset

Change-Id: I9fc508688326686faf36d4acfb7fd66e69efa2c1
parent 7ce6d782
Loading
Loading
Loading
Loading
+3 −18
Original line number Diff line number Diff line
@@ -174,16 +174,11 @@ status_t AidlConversionSpatializer::getParameter(EffectParamWriter& param) {

        switch (command) {
            case SPATIALIZER_PARAM_SUPPORTED_LEVELS: {
                const auto& range = getRange<Range::spatializer, Range::SpatializerRange>(
                        mDesc.capability, Spatializer::spatializationLevel);
                if (!range) {
                    return BAD_VALUE;
                }
                std::vector<Spatialization::Level> levels;
                for (const auto level : ::ndk::enum_range<Spatialization::Level>()) {
                    const auto spatializer =
                            Spatializer::make<Spatializer::spatializationLevel>(level);
                    if (spatializer >= range->min && spatializer <= range->max) {
                    if (inRange<Range::spatializer>(spatializer, mDesc.capability)) {
                        levels.emplace_back(level);
                    }
                }
@@ -252,16 +247,11 @@ status_t AidlConversionSpatializer::getParameter(EffectParamWriter& param) {
                return OK;
            }
            case SPATIALIZER_PARAM_SUPPORTED_SPATIALIZATION_MODES: {
                const auto& range = getRange<Range::spatializer, Range::SpatializerRange>(
                        mDesc.capability, Spatializer::spatializationMode);
                if (!range) {
                    return BAD_VALUE;
                }
                std::vector<Spatialization::Mode> modes;
                for (const auto mode : ::ndk::enum_range<Spatialization::Mode>()) {
                    if (const auto spatializer =
                                Spatializer::make<Spatializer::spatializationMode>(mode);
                        spatializer >= range->min && spatializer <= range->max) {
                        inRange<Range::spatializer>(spatializer, mDesc.capability)) {
                        modes.emplace_back(mode);
                    }
                }
@@ -273,16 +263,11 @@ status_t AidlConversionSpatializer::getParameter(EffectParamWriter& param) {
                return OK;
            }
            case SPATIALIZER_PARAM_SUPPORTED_HEADTRACKING_CONNECTION: {
                const auto& range = getRange<Range::spatializer, Range::SpatializerRange>(
                        mDesc.capability, Spatializer::headTrackingConnectionMode);
                if (!range) {
                    return BAD_VALUE;
                }
                std::vector<HeadTracking::ConnectionMode> modes;
                for (const auto mode : ::ndk::enum_range<HeadTracking::ConnectionMode>()) {
                    if (const auto spatializer =
                                Spatializer::make<Spatializer::headTrackingConnectionMode>(mode);
                        spatializer < range->min || spatializer > range->max) {
                        inRange<Range::spatializer>(spatializer, mDesc.capability)) {
                        modes.emplace_back(mode);
                    }
                }