1f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov/* 2f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * Copyright (C) 2016 The Android Open Source Project 3f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * 4f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * Licensed under the Apache License, Version 2.0 (the "License"); 5f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * you may not use this file except in compliance with the License. 6f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * You may obtain a copy of the License at 7f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * 8f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * http://www.apache.org/licenses/LICENSE-2.0 9f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * 10f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * Unless required by applicable law or agreed to in writing, software 11f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * distributed under the License is distributed on an "AS IS" BASIS, 12f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * See the License for the specific language governing permissions and 14f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov * limitations under the License. 15f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov */ 16f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 17f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov#ifndef ANDROID_HARDWARE_EFFECTS_FACTORY_HAL_HIDL_H 18f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov#define ANDROID_HARDWARE_EFFECTS_FACTORY_HAL_HIDL_H 19f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 20f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov#include <android/hardware/audio/effect/2.0/IEffectsFactory.h> 21f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov#include <android/hardware/audio/effect/2.0/types.h> 22f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov#include <media/audiohal/EffectsFactoryHalInterface.h> 23f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 24f558e0218d2677a813c9c600886f673894eec927Mikhail Naganovnamespace android { 25f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 26f558e0218d2677a813c9c600886f673894eec927Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::EffectDescriptor; 27f558e0218d2677a813c9c600886f673894eec927Mikhail Naganovusing ::android::hardware::audio::effect::V2_0::IEffectsFactory; 28f558e0218d2677a813c9c600886f673894eec927Mikhail Naganovusing ::android::hardware::hidl_vec; 29f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 30e83be8af690ef1ac820a63414d522e77ca9d4db6Steven Morelandclass EffectsFactoryHalHidl : public EffectsFactoryHalInterface, public ConversionHelperHidl 31f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov{ 32f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov public: 33f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov // Returns the number of different effects in all loaded libraries. 34f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov virtual status_t queryNumberEffects(uint32_t *pNumEffects); 35f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 36f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov // Returns a descriptor of the next available effect. 37f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov virtual status_t getDescriptor(uint32_t index, 38f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov effect_descriptor_t *pDescriptor); 39f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 40f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov virtual status_t getDescriptor(const effect_uuid_t *pEffectUuid, 41f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov effect_descriptor_t *pDescriptor); 42f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 43f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov // Creates an effect engine of the specified type. 44f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov // To release the effect engine, it is necessary to release references 45f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov // to the returned effect object. 46f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov virtual status_t createEffect(const effect_uuid_t *pEffectUuid, 47f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov int32_t sessionId, int32_t ioId, 48f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov sp<EffectHalInterface> *effect); 49f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 50f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov virtual status_t dumpEffects(int fd); 51f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 52f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov private: 53f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov friend class EffectsFactoryHalInterface; 54f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 55f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov sp<IEffectsFactory> mEffectsFactory; 56f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov hidl_vec<EffectDescriptor> mLastDescriptors; 57f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 58f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov // Can not be constructed directly by clients. 59f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov EffectsFactoryHalHidl(); 60f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov virtual ~EffectsFactoryHalHidl(); 61f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 62f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov status_t queryAllDescriptors(); 63f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov}; 64f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 65f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov} // namespace android 66f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov 67f558e0218d2677a813c9c600886f673894eec927Mikhail Naganov#endif // ANDROID_HARDWARE_EFFECTS_FACTORY_HAL_HIDL_H 68