1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #pragma once 18 19 #include <RoutingStrategy.h> 20 #include <hardware/audio_effect.h> 21 #include <utils/KeyedVector.h> 22 #include <utils/RefBase.h> 23 #include <utils/Errors.h> 24 25 namespace android { 26 27 28 class EffectDescriptor : public RefBase 29 { 30 public: 31 status_t dump(int fd); 32 33 int mIo; // io the effect is attached to 34 routing_strategy mStrategy; // routing strategy the effect is associated to 35 int mSession; // audio session the effect is on 36 effect_descriptor_t mDesc; // effect descriptor 37 bool mEnabled; // enabled state: CPU load being used or not 38 }; 39 40 class EffectDescriptorCollection : public KeyedVector<int, sp<EffectDescriptor> > 41 { 42 public: 43 EffectDescriptorCollection(); 44 45 status_t registerEffect(const effect_descriptor_t *desc, audio_io_handle_t io, 46 uint32_t strategy, int session, int id); 47 status_t unregisterEffect(int id); 48 status_t setEffectEnabled(int id, bool enabled); 49 uint32_t getMaxEffectsCpuLoad() const; 50 uint32_t getMaxEffectsMemory() const; 51 bool isNonOffloadableEffectEnabled(); 52 53 status_t dump(int fd); 54 55 private: 56 status_t setEffectEnabled(const sp<EffectDescriptor> &effectDesc, bool enabled); 57 58 uint32_t mTotalEffectsCpuLoad; // current CPU load used by effects (in MIPS) 59 uint32_t mTotalEffectsMemory; // current memory used by effects (in KB) 60 uint32_t mTotalEffectsMemoryMaxUsed; // maximum memory used by effects (in KB) 61 62 /** 63 * Maximum CPU load allocated to audio effects in 0.1 MIPS (ARMv5TE, 0 WS memory) units 64 */ 65 static const uint32_t MAX_EFFECTS_CPU_LOAD = 1000; 66 /** 67 * Maximum memory allocated to audio effects in KB 68 */ 69 static const uint32_t MAX_EFFECTS_MEMORY = 512; 70 }; 71 72 }; // namespace android 73