14a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov/* 24a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * Copyright (C) 2016 The Android Open Source Project 34a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * 44a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * Licensed under the Apache License, Version 2.0 (the "License"); 54a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * you may not use this file except in compliance with the License. 64a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * You may obtain a copy of the License at 74a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * 84a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * http://www.apache.org/licenses/LICENSE-2.0 94a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * 104a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * Unless required by applicable law or agreed to in writing, software 114a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * distributed under the License is distributed on an "AS IS" BASIS, 124a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * See the License for the specific language governing permissions and 144a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov * limitations under the License. 154a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov */ 164a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 174a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov#ifndef ANDROID_HARDWARE_EFFECT_HAL_LOCAL_H 184a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov#define ANDROID_HARDWARE_EFFECT_HAL_LOCAL_H 194a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 2000260b5e6996b0a4b12f71c5b84e44adea040534Mikhail Naganov#include <hardware/audio_effect.h> 21a0c91339814f37ea78365afb436c9f3d1f0a0090Mikhail Naganov#include <media/audiohal/EffectHalInterface.h> 224a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 234a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganovnamespace android { 244a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 254a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganovclass EffectHalLocal : public EffectHalInterface 264a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov{ 274a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov public: 28022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov // Set the input buffer. 29022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual status_t setInBuffer(const sp<EffectBufferHalInterface>& buffer); 30022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 31022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov // Set the output buffer. 32022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual status_t setOutBuffer(const sp<EffectBufferHalInterface>& buffer); 33022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 34022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov // Effect process function. 35022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual status_t process(); 364a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 374a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov // Process reverse stream function. This function is used to pass 384a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov // a reference stream to the effect engine. 39022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual status_t processReverse(); 404a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 414a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov // Send a command and receive a response to/from effect engine. 424a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov virtual status_t command(uint32_t cmdCode, uint32_t cmdSize, void *pCmdData, 434a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov uint32_t *replySize, void *pReplyData); 444a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 454a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov // Returns the effect descriptor. 464a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov virtual status_t getDescriptor(effect_descriptor_t *pDescriptor); 474a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 48022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov // Free resources on the remote side. 49022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual status_t close(); 50022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 516b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov // Whether it's a local implementation. 526b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov virtual bool isLocal() const { return true; } 536b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov 544a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov effect_handle_t handle() const { return mHandle; } 554a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 564a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov private: 574a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov effect_handle_t mHandle; 58022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov sp<EffectBufferHalInterface> mInBuffer; 59022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov sp<EffectBufferHalInterface> mOutBuffer; 604a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 614a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov friend class EffectsFactoryHalLocal; 624a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 634a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov // Can not be constructed directly by clients. 644a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov explicit EffectHalLocal(effect_handle_t handle); 651dc98674f701dada94143b4d31b7221c58346c6cMikhail Naganov 661dc98674f701dada94143b4d31b7221c58346c6cMikhail Naganov // The destructor automatically releases the effect. 671dc98674f701dada94143b4d31b7221c58346c6cMikhail Naganov virtual ~EffectHalLocal(); 684a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov}; 694a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 704a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov} // namespace android 714a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov 724a3d5c23f79189eb7ab9f31c440c7da5b15947a2Mikhail Naganov#endif // ANDROID_HARDWARE_EFFECT_HAL_LOCAL_H 73