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#define LOG_TAG "EffectBufferHalLocal" 18022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov//#define LOG_NDEBUG 0 19022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 20022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov#include <utils/Log.h> 21022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 22022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov#include "EffectBufferHalLocal.h" 23022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 24022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovnamespace android { 25022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 26022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov// static 27022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovstatus_t EffectBufferHalInterface::allocate( 28022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov size_t size, sp<EffectBufferHalInterface>* buffer) { 29022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov *buffer = new EffectBufferHalLocal(size); 30022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov return OK; 31022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 32022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 33022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov// static 34022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovstatus_t EffectBufferHalInterface::mirror( 35022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov void* external, size_t size, sp<EffectBufferHalInterface>* buffer) { 36022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov *buffer = new EffectBufferHalLocal(external, size); 37022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov return OK; 38022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 39022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 40022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail NaganovEffectBufferHalLocal::EffectBufferHalLocal(size_t size) 41022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov : mOwnBuffer(new uint8_t[size]), 4240be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganov mBufferSize(size), mFrameCountChanged(false), 43022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov mAudioBuffer{0, {mOwnBuffer.get()}} { 44022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 45022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 46022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail NaganovEffectBufferHalLocal::EffectBufferHalLocal(void* external, size_t size) 47022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov : mOwnBuffer(nullptr), 4840be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganov mBufferSize(size), mFrameCountChanged(false), 49022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov mAudioBuffer{0, {external}} { 50022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 51022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 52022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail NaganovEffectBufferHalLocal::~EffectBufferHalLocal() { 53022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 54022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 55022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovaudio_buffer_t* EffectBufferHalLocal::audioBuffer() { 56022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov return &mAudioBuffer; 57022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 58022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 59022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovvoid* EffectBufferHalLocal::externalData() const { 60022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov return mAudioBuffer.raw; 61022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 62022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 63022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovvoid EffectBufferHalLocal::setFrameCount(size_t frameCount) { 64022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov mAudioBuffer.frameCount = frameCount; 6540be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganov mFrameCountChanged = true; 66022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 67022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 68022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovvoid EffectBufferHalLocal::setExternalData(void* external) { 69022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov ALOGE_IF(mOwnBuffer != nullptr, "Attempt to set external data for allocated buffer"); 70022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov mAudioBuffer.raw = external; 71022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 72022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 7340be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganovbool EffectBufferHalLocal::checkFrameCountChange() { 7440be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganov bool result = mFrameCountChanged; 7540be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganov mFrameCountChanged = false; 7640be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganov return result; 7740be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganov} 7840be8a343e8ceb7ae087bfb8988247731fa5ae75Mikhail Naganov 79022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovvoid EffectBufferHalLocal::update() { 80022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 81022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 82022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganovvoid EffectBufferHalLocal::commit() { 83022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} 84022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov 85ec4e6811657a099a2a8a404d81a956955b8b9b44Mikhail Naganovvoid EffectBufferHalLocal::update(size_t) { 8666916c26a7055c9e10471720502a29f759609819Mikhail Naganov} 8766916c26a7055c9e10471720502a29f759609819Mikhail Naganov 88ec4e6811657a099a2a8a404d81a956955b8b9b44Mikhail Naganovvoid EffectBufferHalLocal::commit(size_t) { 8966916c26a7055c9e10471720502a29f759609819Mikhail Naganov} 9066916c26a7055c9e10471720502a29f759609819Mikhail Naganov 91022b9953153bdb1984f0abb17d21ef8c1826ad49Mikhail Naganov} // namespace android 92