19f011fed92c4982819f78c7cfb4c07b27adf7651rago/* 29f011fed92c4982819f78c7cfb4c07b27adf7651rago * Copyright (C) 2018 The Android Open Source Project 39f011fed92c4982819f78c7cfb4c07b27adf7651rago * 49f011fed92c4982819f78c7cfb4c07b27adf7651rago * Licensed under the Apache License, Version 2.0 (the "License"); 59f011fed92c4982819f78c7cfb4c07b27adf7651rago * you may not use this file except in compliance with the License. 69f011fed92c4982819f78c7cfb4c07b27adf7651rago * You may obtain a copy of the License at 79f011fed92c4982819f78c7cfb4c07b27adf7651rago * 89f011fed92c4982819f78c7cfb4c07b27adf7651rago * http://www.apache.org/licenses/LICENSE-2.0 99f011fed92c4982819f78c7cfb4c07b27adf7651rago * 109f011fed92c4982819f78c7cfb4c07b27adf7651rago * Unless required by applicable law or agreed to in writing, software 119f011fed92c4982819f78c7cfb4c07b27adf7651rago * distributed under the License is distributed on an "AS IS" BASIS, 129f011fed92c4982819f78c7cfb4c07b27adf7651rago * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139f011fed92c4982819f78c7cfb4c07b27adf7651rago * See the License for the specific language governing permissions and 149f011fed92c4982819f78c7cfb4c07b27adf7651rago * limitations under the License. 159f011fed92c4982819f78c7cfb4c07b27adf7651rago */ 169f011fed92c4982819f78c7cfb4c07b27adf7651rago 17ff0a51f978a6307153cc752b8071144d642b54acrago#define LOG_TAG "DPBase" 18ff0a51f978a6307153cc752b8071144d642b54acrago//#define LOG_NDEBUG 0 19ff0a51f978a6307153cc752b8071144d642b54acrago 20ff0a51f978a6307153cc752b8071144d642b54acrago#include <log/log.h> 219f011fed92c4982819f78c7cfb4c07b27adf7651rago#include "DPBase.h" 22ff0a51f978a6307153cc752b8071144d642b54acrago#include "DPFrequency.h" 239f011fed92c4982819f78c7cfb4c07b27adf7651rago 249f011fed92c4982819f78c7cfb4c07b27adf7651ragonamespace dp_fx { 259f011fed92c4982819f78c7cfb4c07b27adf7651rago 269f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPStage::DPStage() : mInUse(DP_DEFAULT_STAGE_INUSE), 279f011fed92c4982819f78c7cfb4c07b27adf7651rago mEnabled(DP_DEFAULT_STAGE_ENABLED) { 289f011fed92c4982819f78c7cfb4c07b27adf7651rago} 299f011fed92c4982819f78c7cfb4c07b27adf7651rago 309f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPStage::init(bool inUse, bool enabled) { 319f011fed92c4982819f78c7cfb4c07b27adf7651rago mInUse = inUse; 329f011fed92c4982819f78c7cfb4c07b27adf7651rago mEnabled = enabled; 339f011fed92c4982819f78c7cfb4c07b27adf7651rago} 349f011fed92c4982819f78c7cfb4c07b27adf7651rago 359f011fed92c4982819f78c7cfb4c07b27adf7651rago//---- 369f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPBandStage::DPBandStage() : mBandCount(0) { 379f011fed92c4982819f78c7cfb4c07b27adf7651rago} 389f011fed92c4982819f78c7cfb4c07b27adf7651rago 399f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPBandStage::init(bool inUse, bool enabled, int bandCount) { 409f011fed92c4982819f78c7cfb4c07b27adf7651rago DPStage::init(inUse, enabled); 419f011fed92c4982819f78c7cfb4c07b27adf7651rago mBandCount = inUse ? bandCount : 0; 429f011fed92c4982819f78c7cfb4c07b27adf7651rago} 439f011fed92c4982819f78c7cfb4c07b27adf7651rago 449f011fed92c4982819f78c7cfb4c07b27adf7651rago//--- 459f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPBandBase::DPBandBase() { 469f011fed92c4982819f78c7cfb4c07b27adf7651rago init(DP_DEFAULT_BAND_ENABLED, 479f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_BAND_CUTOFF_FREQUENCY_HZ); 489f011fed92c4982819f78c7cfb4c07b27adf7651rago} 499f011fed92c4982819f78c7cfb4c07b27adf7651rago 509f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPBandBase::init(bool enabled, float cutoffFrequency){ 519f011fed92c4982819f78c7cfb4c07b27adf7651rago mEnabled = enabled; 529f011fed92c4982819f78c7cfb4c07b27adf7651rago mCutoofFrequencyHz = cutoffFrequency; 539f011fed92c4982819f78c7cfb4c07b27adf7651rago} 549f011fed92c4982819f78c7cfb4c07b27adf7651rago 559f011fed92c4982819f78c7cfb4c07b27adf7651rago//----- 569f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPEqBand::DPEqBand() { 579f011fed92c4982819f78c7cfb4c07b27adf7651rago init(DP_DEFAULT_BAND_ENABLED, 589f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_BAND_CUTOFF_FREQUENCY_HZ, 599f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_GAIN_DB); 609f011fed92c4982819f78c7cfb4c07b27adf7651rago} 619f011fed92c4982819f78c7cfb4c07b27adf7651rago 629f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPEqBand::init(bool enabled, float cutoffFrequency, float gain) { 639f011fed92c4982819f78c7cfb4c07b27adf7651rago DPBandBase::init(enabled, cutoffFrequency); 649f011fed92c4982819f78c7cfb4c07b27adf7651rago setGain(gain); 659f011fed92c4982819f78c7cfb4c07b27adf7651rago} 669f011fed92c4982819f78c7cfb4c07b27adf7651rago 679f011fed92c4982819f78c7cfb4c07b27adf7651ragofloat DPEqBand::getGain() const{ 689f011fed92c4982819f78c7cfb4c07b27adf7651rago return mGainDb; 699f011fed92c4982819f78c7cfb4c07b27adf7651rago} 709f011fed92c4982819f78c7cfb4c07b27adf7651rago 719f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPEqBand::setGain(float gain) { 729f011fed92c4982819f78c7cfb4c07b27adf7651rago mGainDb = gain; 739f011fed92c4982819f78c7cfb4c07b27adf7651rago} 749f011fed92c4982819f78c7cfb4c07b27adf7651rago 759f011fed92c4982819f78c7cfb4c07b27adf7651rago//------ 769f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPMbcBand::DPMbcBand() { 779f011fed92c4982819f78c7cfb4c07b27adf7651rago init(DP_DEFAULT_BAND_ENABLED, 789f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_BAND_CUTOFF_FREQUENCY_HZ, 799f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_ATTACK_TIME_MS, 809f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_RELEASE_TIME_MS, 819f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_RATIO, 829f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_THRESHOLD_DB, 839f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_KNEE_WIDTH_DB, 849f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_NOISE_GATE_THRESHOLD_DB, 859f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_EXPANDER_RATIO, 869f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_GAIN_DB, 879f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_GAIN_DB); 889f011fed92c4982819f78c7cfb4c07b27adf7651rago} 899f011fed92c4982819f78c7cfb4c07b27adf7651rago 909f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPMbcBand::init(bool enabled, float cutoffFrequency, float attackTime, float releaseTime, 919f011fed92c4982819f78c7cfb4c07b27adf7651rago float ratio, float threshold, float kneeWidth, float noiseGateThreshold, 929f011fed92c4982819f78c7cfb4c07b27adf7651rago float expanderRatio, float preGain, float postGain) { 939f011fed92c4982819f78c7cfb4c07b27adf7651rago DPBandBase::init(enabled, cutoffFrequency); 949f011fed92c4982819f78c7cfb4c07b27adf7651rago setAttackTime(attackTime); 959f011fed92c4982819f78c7cfb4c07b27adf7651rago setReleaseTime(releaseTime); 969f011fed92c4982819f78c7cfb4c07b27adf7651rago setRatio(ratio); 979f011fed92c4982819f78c7cfb4c07b27adf7651rago setThreshold(threshold); 989f011fed92c4982819f78c7cfb4c07b27adf7651rago setKneeWidth(kneeWidth); 999f011fed92c4982819f78c7cfb4c07b27adf7651rago setNoiseGateThreshold(noiseGateThreshold); 1009f011fed92c4982819f78c7cfb4c07b27adf7651rago setExpanderRatio(expanderRatio); 1019f011fed92c4982819f78c7cfb4c07b27adf7651rago setPreGain(preGain); 1029f011fed92c4982819f78c7cfb4c07b27adf7651rago setPostGain(postGain); 1039f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1049f011fed92c4982819f78c7cfb4c07b27adf7651rago 1059f011fed92c4982819f78c7cfb4c07b27adf7651rago//------ 1069f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPEq::DPEq() { 1079f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1089f011fed92c4982819f78c7cfb4c07b27adf7651rago 1099f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPEq::init(bool inUse, bool enabled, uint32_t bandCount) { 1109f011fed92c4982819f78c7cfb4c07b27adf7651rago DPBandStage::init(inUse, enabled, bandCount); 1119f011fed92c4982819f78c7cfb4c07b27adf7651rago mBands.resize(getBandCount()); 1129f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1139f011fed92c4982819f78c7cfb4c07b27adf7651rago 1149f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPEqBand * DPEq::getBand(uint32_t band) { 1159f011fed92c4982819f78c7cfb4c07b27adf7651rago if (band < getBandCount()) { 1169f011fed92c4982819f78c7cfb4c07b27adf7651rago return &mBands[band]; 1179f011fed92c4982819f78c7cfb4c07b27adf7651rago } 1189f011fed92c4982819f78c7cfb4c07b27adf7651rago return NULL; 1199f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1209f011fed92c4982819f78c7cfb4c07b27adf7651rago 1219f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPEq::setBand(uint32_t band, DPEqBand &src) { 1229f011fed92c4982819f78c7cfb4c07b27adf7651rago if (band < getBandCount()) { 1239f011fed92c4982819f78c7cfb4c07b27adf7651rago mBands[band] = src; 1249f011fed92c4982819f78c7cfb4c07b27adf7651rago } 1259f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1269f011fed92c4982819f78c7cfb4c07b27adf7651rago 1279f011fed92c4982819f78c7cfb4c07b27adf7651rago//------ 1289f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPMbc::DPMbc() { 1299f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1309f011fed92c4982819f78c7cfb4c07b27adf7651rago 1319f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPMbc::init(bool inUse, bool enabled, uint32_t bandCount) { 1329f011fed92c4982819f78c7cfb4c07b27adf7651rago DPBandStage::init(inUse, enabled, bandCount); 1339f011fed92c4982819f78c7cfb4c07b27adf7651rago if (isInUse()) { 1349f011fed92c4982819f78c7cfb4c07b27adf7651rago mBands.resize(bandCount); 1359f011fed92c4982819f78c7cfb4c07b27adf7651rago } else { 1369f011fed92c4982819f78c7cfb4c07b27adf7651rago mBands.resize(0); 1379f011fed92c4982819f78c7cfb4c07b27adf7651rago } 1389f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1399f011fed92c4982819f78c7cfb4c07b27adf7651rago 1409f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPMbcBand * DPMbc::getBand(uint32_t band) { 1419f011fed92c4982819f78c7cfb4c07b27adf7651rago if (band < getBandCount()) { 1429f011fed92c4982819f78c7cfb4c07b27adf7651rago return &mBands[band]; 1439f011fed92c4982819f78c7cfb4c07b27adf7651rago } 1449f011fed92c4982819f78c7cfb4c07b27adf7651rago return NULL; 1459f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1469f011fed92c4982819f78c7cfb4c07b27adf7651rago 1479f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPMbc::setBand(uint32_t band, DPMbcBand &src) { 1489f011fed92c4982819f78c7cfb4c07b27adf7651rago if (band < getBandCount()) { 1499f011fed92c4982819f78c7cfb4c07b27adf7651rago mBands[band] = src; 1509f011fed92c4982819f78c7cfb4c07b27adf7651rago } 1519f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1529f011fed92c4982819f78c7cfb4c07b27adf7651rago 1539f011fed92c4982819f78c7cfb4c07b27adf7651rago//------ 1549f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPLimiter::DPLimiter() { 1559f011fed92c4982819f78c7cfb4c07b27adf7651rago init(DP_DEFAULT_STAGE_INUSE, 1569f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_STAGE_ENABLED, 1579f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_LINK_GROUP, 1589f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_ATTACK_TIME_MS, 1599f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_RELEASE_TIME_MS, 1609f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_RATIO, 1619f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_THRESHOLD_DB, 1629f011fed92c4982819f78c7cfb4c07b27adf7651rago DP_DEFAULT_GAIN_DB); 1639f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1649f011fed92c4982819f78c7cfb4c07b27adf7651rago 1659f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPLimiter::init(bool inUse, bool enabled, uint32_t linkGroup, float attackTime, float releaseTime, 1669f011fed92c4982819f78c7cfb4c07b27adf7651rago float ratio, float threshold, float postGain) { 1679f011fed92c4982819f78c7cfb4c07b27adf7651rago DPStage::init(inUse, enabled); 1689f011fed92c4982819f78c7cfb4c07b27adf7651rago setLinkGroup(linkGroup); 1699f011fed92c4982819f78c7cfb4c07b27adf7651rago setAttackTime(attackTime); 1709f011fed92c4982819f78c7cfb4c07b27adf7651rago setReleaseTime(releaseTime); 1719f011fed92c4982819f78c7cfb4c07b27adf7651rago setRatio(ratio); 1729f011fed92c4982819f78c7cfb4c07b27adf7651rago setThreshold(threshold); 1739f011fed92c4982819f78c7cfb4c07b27adf7651rago setPostGain(postGain); 1749f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1759f011fed92c4982819f78c7cfb4c07b27adf7651rago 1769f011fed92c4982819f78c7cfb4c07b27adf7651rago//---- 177d24e983ec1ff00ef82e3accc042d160f4fca6435ragoDPChannel::DPChannel() : mInitialized(false), mInputGainDb(0), mOutputGainDb(0), 178d24e983ec1ff00ef82e3accc042d160f4fca6435rago mPreEqInUse(false), mMbcInUse(false), mPostEqInUse(false), mLimiterInUse(false) { 1799f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1809f011fed92c4982819f78c7cfb4c07b27adf7651rago 1819f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPChannel::init(float inputGain, bool preEqInUse, uint32_t preEqBandCount, 1829f011fed92c4982819f78c7cfb4c07b27adf7651rago bool mbcInUse, uint32_t mbcBandCount, bool postEqInUse, uint32_t postEqBandCount, 1839f011fed92c4982819f78c7cfb4c07b27adf7651rago bool limiterInUse) { 1849f011fed92c4982819f78c7cfb4c07b27adf7651rago setInputGain(inputGain); 1859f011fed92c4982819f78c7cfb4c07b27adf7651rago mPreEqInUse = preEqInUse; 1869f011fed92c4982819f78c7cfb4c07b27adf7651rago mMbcInUse = mbcInUse; 1879f011fed92c4982819f78c7cfb4c07b27adf7651rago mPostEqInUse = postEqInUse; 1889f011fed92c4982819f78c7cfb4c07b27adf7651rago mLimiterInUse = limiterInUse; 1899f011fed92c4982819f78c7cfb4c07b27adf7651rago 1909f011fed92c4982819f78c7cfb4c07b27adf7651rago mPreEq.init(mPreEqInUse, false, preEqBandCount); 1919f011fed92c4982819f78c7cfb4c07b27adf7651rago mMbc.init(mMbcInUse, false, mbcBandCount); 1929f011fed92c4982819f78c7cfb4c07b27adf7651rago mPostEq.init(mPostEqInUse, false, postEqBandCount); 1939f011fed92c4982819f78c7cfb4c07b27adf7651rago mLimiter.init(mLimiterInUse, false, 0, 50, 120, 2, -30, 0); 1949f011fed92c4982819f78c7cfb4c07b27adf7651rago mInitialized = true; 1959f011fed92c4982819f78c7cfb4c07b27adf7651rago} 1969f011fed92c4982819f78c7cfb4c07b27adf7651rago 1979f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPEq* DPChannel::getPreEq() { 1989f011fed92c4982819f78c7cfb4c07b27adf7651rago if (!mInitialized) { 1999f011fed92c4982819f78c7cfb4c07b27adf7651rago return NULL; 2009f011fed92c4982819f78c7cfb4c07b27adf7651rago } 2019f011fed92c4982819f78c7cfb4c07b27adf7651rago return &mPreEq; 2029f011fed92c4982819f78c7cfb4c07b27adf7651rago} 2039f011fed92c4982819f78c7cfb4c07b27adf7651rago 2049f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPMbc* DPChannel::getMbc() { 2059f011fed92c4982819f78c7cfb4c07b27adf7651rago if (!mInitialized) { 2069f011fed92c4982819f78c7cfb4c07b27adf7651rago return NULL; 2079f011fed92c4982819f78c7cfb4c07b27adf7651rago } 2089f011fed92c4982819f78c7cfb4c07b27adf7651rago return &mMbc; 2099f011fed92c4982819f78c7cfb4c07b27adf7651rago} 2109f011fed92c4982819f78c7cfb4c07b27adf7651rago 2119f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPEq* DPChannel::getPostEq() { 2129f011fed92c4982819f78c7cfb4c07b27adf7651rago if (!mInitialized) { 2139f011fed92c4982819f78c7cfb4c07b27adf7651rago return NULL; 2149f011fed92c4982819f78c7cfb4c07b27adf7651rago } 2159f011fed92c4982819f78c7cfb4c07b27adf7651rago return &mPostEq; 2169f011fed92c4982819f78c7cfb4c07b27adf7651rago} 2179f011fed92c4982819f78c7cfb4c07b27adf7651rago 2189f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPLimiter* DPChannel::getLimiter() { 2199f011fed92c4982819f78c7cfb4c07b27adf7651rago if (!mInitialized) { 2209f011fed92c4982819f78c7cfb4c07b27adf7651rago return NULL; 2219f011fed92c4982819f78c7cfb4c07b27adf7651rago } 2229f011fed92c4982819f78c7cfb4c07b27adf7651rago return &mLimiter; 2239f011fed92c4982819f78c7cfb4c07b27adf7651rago} 2249f011fed92c4982819f78c7cfb4c07b27adf7651rago 2259f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPChannel::setLimiter(DPLimiter &limiter) { 2269f011fed92c4982819f78c7cfb4c07b27adf7651rago if (!mInitialized) { 2279f011fed92c4982819f78c7cfb4c07b27adf7651rago return; 2289f011fed92c4982819f78c7cfb4c07b27adf7651rago } 2299f011fed92c4982819f78c7cfb4c07b27adf7651rago mLimiter = limiter; 2309f011fed92c4982819f78c7cfb4c07b27adf7651rago} 2319f011fed92c4982819f78c7cfb4c07b27adf7651rago 2329f011fed92c4982819f78c7cfb4c07b27adf7651rago//---- 2339f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPBase::DPBase() : mInitialized(false), mChannelCount(0), mPreEqInUse(false), mPreEqBandCount(0), 2349f011fed92c4982819f78c7cfb4c07b27adf7651rago mMbcInUse(false), mMbcBandCount(0), mPostEqInUse(false), mPostEqBandCount(0), 2359f011fed92c4982819f78c7cfb4c07b27adf7651rago mLimiterInUse(false) { 2369f011fed92c4982819f78c7cfb4c07b27adf7651rago} 2379f011fed92c4982819f78c7cfb4c07b27adf7651rago 2389f011fed92c4982819f78c7cfb4c07b27adf7651ragovoid DPBase::init(uint32_t channelCount, bool preEqInUse, uint32_t preEqBandCount, 2399f011fed92c4982819f78c7cfb4c07b27adf7651rago bool mbcInUse, uint32_t mbcBandCount, bool postEqInUse, uint32_t postEqBandCount, 2409f011fed92c4982819f78c7cfb4c07b27adf7651rago bool limiterInUse) { 241ff0a51f978a6307153cc752b8071144d642b54acrago ALOGV("DPBase::init"); 2429f011fed92c4982819f78c7cfb4c07b27adf7651rago mChannelCount = channelCount; 2439f011fed92c4982819f78c7cfb4c07b27adf7651rago mPreEqInUse = preEqInUse; 2449f011fed92c4982819f78c7cfb4c07b27adf7651rago mPreEqBandCount = preEqBandCount; 2459f011fed92c4982819f78c7cfb4c07b27adf7651rago mMbcInUse = mbcInUse; 2469f011fed92c4982819f78c7cfb4c07b27adf7651rago mMbcBandCount = mbcBandCount; 2479f011fed92c4982819f78c7cfb4c07b27adf7651rago mPostEqInUse = postEqInUse; 2489f011fed92c4982819f78c7cfb4c07b27adf7651rago mPostEqBandCount = postEqBandCount; 2499f011fed92c4982819f78c7cfb4c07b27adf7651rago mLimiterInUse = limiterInUse; 2509f011fed92c4982819f78c7cfb4c07b27adf7651rago mChannel.resize(mChannelCount); 2519f011fed92c4982819f78c7cfb4c07b27adf7651rago for (size_t ch = 0; ch < mChannelCount; ch++) { 2529f011fed92c4982819f78c7cfb4c07b27adf7651rago mChannel[ch].init(0, preEqInUse, preEqBandCount, mbcInUse, mbcBandCount, 2539f011fed92c4982819f78c7cfb4c07b27adf7651rago postEqInUse, postEqBandCount, limiterInUse); 2549f011fed92c4982819f78c7cfb4c07b27adf7651rago } 2559f011fed92c4982819f78c7cfb4c07b27adf7651rago mInitialized = true; 2569f011fed92c4982819f78c7cfb4c07b27adf7651rago} 2579f011fed92c4982819f78c7cfb4c07b27adf7651rago 2589f011fed92c4982819f78c7cfb4c07b27adf7651ragoDPChannel* DPBase::getChannel(uint32_t channelIndex) { 2599f011fed92c4982819f78c7cfb4c07b27adf7651rago if (!mInitialized || channelIndex < 0 || channelIndex >= mChannel.size()) { 2609f011fed92c4982819f78c7cfb4c07b27adf7651rago return NULL; 2619f011fed92c4982819f78c7cfb4c07b27adf7651rago } 2629f011fed92c4982819f78c7cfb4c07b27adf7651rago return & mChannel[channelIndex]; 2639f011fed92c4982819f78c7cfb4c07b27adf7651rago} 2649f011fed92c4982819f78c7cfb4c07b27adf7651rago 2659f011fed92c4982819f78c7cfb4c07b27adf7651rago} //namespace dp_fx 266