1022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov/* 2022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * Copyright (C) 2017 The Android Open Source Project 3022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * 4022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * Licensed under the Apache License, Version 2.0 (the "License"); 5022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * you may not use this file except in compliance with the License. 6022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * You may obtain a copy of the License at 7022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * 8022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * http://www.apache.org/licenses/LICENSE-2.0 9022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * 10022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * Unless required by applicable law or agreed to in writing, software 11022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * distributed under the License is distributed on an "AS IS" BASIS, 12022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * See the License for the specific language governing permissions and 14022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov * limitations under the License. 15022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov */ 16022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 17022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov#ifndef ANDROID_HARDWARE_EFFECT_BUFFER_HAL_LOCAL_H 18022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov#define ANDROID_HARDWARE_EFFECT_BUFFER_HAL_LOCAL_H 19022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 20022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov#include <memory> 21022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 22022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov#include <media/audiohal/EffectBufferHalInterface.h> 23022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov#include <system/audio_effect.h> 24022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 25022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovnamespace android { 26022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 27022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovclass EffectBufferHalLocal : public EffectBufferHalInterface 28022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov{ 29022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov public: 30022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual audio_buffer_t* audioBuffer(); 31022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual void* externalData() const; 32022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 33022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual void setExternalData(void* external); 34022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual void setFrameCount(size_t frameCount); 3540be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganov virtual bool checkFrameCountChange(); 36022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 37022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual void update(); 38022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual void commit(); 3966916c26a7055c9e10471720502a29f759609819Mikhail Naganov virtual void update(size_t size); 4066916c26a7055c9e10471720502a29f759609819Mikhail Naganov virtual void commit(size_t size); 41022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 42022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov private: 43022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov friend class EffectBufferHalInterface; 44022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 45022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov std::unique_ptr<uint8_t[]> mOwnBuffer; 46022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov const size_t mBufferSize; 4740be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganov bool mFrameCountChanged; 48022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov audio_buffer_t mAudioBuffer; 49022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 50022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov // Can not be constructed directly by clients. 51022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov explicit EffectBufferHalLocal(size_t size); 52022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov EffectBufferHalLocal(void* external, size_t size); 53022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 54022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov virtual ~EffectBufferHalLocal(); 55022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 56022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov status_t init(); 57022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov}; 58022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 59022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} // namespace android 60022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 61022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov#endif // ANDROID_HARDWARE_EFFECT_BUFFER_HAL_LOCAL_H 62