blob: 5c70743e7e9656124e70b89ebf552367083ea3d9 [file] [log] [blame]
Mikhail Naganov022b9952017-01-04 16:36:51 -08001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef ANDROID_HARDWARE_EFFECT_BUFFER_HAL_HIDL_H
18#define ANDROID_HARDWARE_EFFECT_BUFFER_HAL_HIDL_H
19
20#include <android/hardware/audio/effect/2.0/types.h>
21#include <android/hidl/memory/1.0/IMemory.h>
22#include <hidl/HidlSupport.h>
23#include <media/audiohal/EffectBufferHalInterface.h>
24#include <system/audio_effect.h>
25
26using android::hardware::audio::effect::V2_0::AudioBuffer;
27using android::hardware::hidl_memory;
28using android::hidl::memory::V1_0::IMemory;
29
30namespace android {
Kevin Rocarddf9b4202018-05-10 19:56:08 -070031namespace V2_0 {
Mikhail Naganov022b9952017-01-04 16:36:51 -080032
33class EffectBufferHalHidl : public EffectBufferHalInterface
34{
35 public:
Kevin Rocard7588ff42018-01-08 11:11:30 -080036 static status_t allocate(size_t size, sp<EffectBufferHalInterface>* buffer);
37 static status_t mirror(void* external, size_t size, sp<EffectBufferHalInterface>* buffer);
38
Mikhail Naganov022b9952017-01-04 16:36:51 -080039 virtual audio_buffer_t* audioBuffer();
40 virtual void* externalData() const;
41
rago94a1ee82017-07-21 15:11:02 -070042 virtual size_t getSize() const override { return mBufferSize; }
43
Mikhail Naganov022b9952017-01-04 16:36:51 -080044 virtual void setExternalData(void* external);
45 virtual void setFrameCount(size_t frameCount);
Mikhail Naganov40be8a32017-04-26 17:22:00 -070046 virtual bool checkFrameCountChange();
Mikhail Naganov022b9952017-01-04 16:36:51 -080047
48 virtual void update();
49 virtual void commit();
Mikhail Naganov66916c22017-01-24 17:46:33 -080050 virtual void update(size_t size);
51 virtual void commit(size_t size);
Mikhail Naganov022b9952017-01-04 16:36:51 -080052
53 const AudioBuffer& hidlBuffer() const { return mHidlBuffer; }
54
55 private:
56 friend class EffectBufferHalInterface;
57
58 static uint64_t makeUniqueId();
59
60 const size_t mBufferSize;
Mikhail Naganov40be8a32017-04-26 17:22:00 -070061 bool mFrameCountChanged;
Mikhail Naganov022b9952017-01-04 16:36:51 -080062 void* mExternalData;
63 AudioBuffer mHidlBuffer;
64 sp<IMemory> mMemory;
65 audio_buffer_t mAudioBuffer;
66
67 // Can not be constructed directly by clients.
68 explicit EffectBufferHalHidl(size_t size);
69
70 virtual ~EffectBufferHalHidl();
71
72 status_t init();
73};
74
Kevin Rocarddf9b4202018-05-10 19:56:08 -070075} // namespace V2_0
Mikhail Naganov022b9952017-01-04 16:36:51 -080076} // namespace android
77
78#endif // ANDROID_HARDWARE_EFFECT_BUFFER_HAL_HIDL_H