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