xref: /aosp_15_r20/hardware/libhardware_legacy/audio/AudioHardwareStub.h (revision 79330504eb3d14022296e3b041867f86289dd52c)
1*79330504STreehugger Robot /* //device/servers/AudioFlinger/AudioHardwareStub.h
2*79330504STreehugger Robot **
3*79330504STreehugger Robot ** Copyright 2007, The Android Open Source Project
4*79330504STreehugger Robot **
5*79330504STreehugger Robot ** Licensed under the Apache License, Version 2.0 (the "License");
6*79330504STreehugger Robot ** you may not use this file except in compliance with the License.
7*79330504STreehugger Robot ** You may obtain a copy of the License at
8*79330504STreehugger Robot **
9*79330504STreehugger Robot **     http://www.apache.org/licenses/LICENSE-2.0
10*79330504STreehugger Robot **
11*79330504STreehugger Robot ** Unless required by applicable law or agreed to in writing, software
12*79330504STreehugger Robot ** distributed under the License is distributed on an "AS IS" BASIS,
13*79330504STreehugger Robot ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*79330504STreehugger Robot ** See the License for the specific language governing permissions and
15*79330504STreehugger Robot ** limitations under the License.
16*79330504STreehugger Robot */
17*79330504STreehugger Robot 
18*79330504STreehugger Robot #ifndef ANDROID_AUDIO_HARDWARE_STUB_H
19*79330504STreehugger Robot #define ANDROID_AUDIO_HARDWARE_STUB_H
20*79330504STreehugger Robot 
21*79330504STreehugger Robot #include <stdint.h>
22*79330504STreehugger Robot #include <sys/types.h>
23*79330504STreehugger Robot 
24*79330504STreehugger Robot #include <hardware_legacy/AudioHardwareBase.h>
25*79330504STreehugger Robot 
26*79330504STreehugger Robot namespace android_audio_legacy {
27*79330504STreehugger Robot 
28*79330504STreehugger Robot // ----------------------------------------------------------------------------
29*79330504STreehugger Robot 
30*79330504STreehugger Robot class AudioStreamOutStub : public AudioStreamOut {
31*79330504STreehugger Robot public:
32*79330504STreehugger Robot     virtual status_t    set(int *pFormat, uint32_t *pChannels, uint32_t *pRate);
sampleRate()33*79330504STreehugger Robot     virtual uint32_t    sampleRate() const { return 44100; }
bufferSize()34*79330504STreehugger Robot     virtual size_t      bufferSize() const { return 4096; }
channels()35*79330504STreehugger Robot     virtual uint32_t    channels() const { return AudioSystem::CHANNEL_OUT_STEREO; }
format()36*79330504STreehugger Robot     virtual int         format() const { return AudioSystem::PCM_16_BIT; }
latency()37*79330504STreehugger Robot     virtual uint32_t    latency() const { return 0; }
setVolume(float left,float right)38*79330504STreehugger Robot     virtual status_t    setVolume(float left, float right) { return NO_ERROR; }
39*79330504STreehugger Robot     virtual ssize_t     write(const void* buffer, size_t bytes);
40*79330504STreehugger Robot     virtual status_t    standby();
41*79330504STreehugger Robot     virtual status_t    dump(int fd, const Vector<String16>& args);
setParameters(const String8 & keyValuePairs)42*79330504STreehugger Robot     virtual status_t    setParameters(const String8& keyValuePairs) { return NO_ERROR;}
43*79330504STreehugger Robot     virtual String8     getParameters(const String8& keys);
44*79330504STreehugger Robot     virtual status_t    getRenderPosition(uint32_t *dspFrames);
45*79330504STreehugger Robot };
46*79330504STreehugger Robot 
47*79330504STreehugger Robot class AudioStreamInStub : public AudioStreamIn {
48*79330504STreehugger Robot public:
49*79330504STreehugger Robot     virtual status_t    set(int *pFormat, uint32_t *pChannels, uint32_t *pRate, AudioSystem::audio_in_acoustics acoustics);
sampleRate()50*79330504STreehugger Robot     virtual uint32_t    sampleRate() const { return 8000; }
bufferSize()51*79330504STreehugger Robot     virtual size_t      bufferSize() const { return 320; }
channels()52*79330504STreehugger Robot     virtual uint32_t    channels() const { return AudioSystem::CHANNEL_IN_MONO; }
format()53*79330504STreehugger Robot     virtual int         format() const { return AudioSystem::PCM_16_BIT; }
setGain(float gain)54*79330504STreehugger Robot     virtual status_t    setGain(float gain) { return NO_ERROR; }
55*79330504STreehugger Robot     virtual ssize_t     read(void* buffer, ssize_t bytes);
56*79330504STreehugger Robot     virtual status_t    dump(int fd, const Vector<String16>& args);
standby()57*79330504STreehugger Robot     virtual status_t    standby() { return NO_ERROR; }
setParameters(const String8 & keyValuePairs)58*79330504STreehugger Robot     virtual status_t    setParameters(const String8& keyValuePairs) { return NO_ERROR;}
59*79330504STreehugger Robot     virtual String8     getParameters(const String8& keys);
getInputFramesLost()60*79330504STreehugger Robot     virtual unsigned int  getInputFramesLost() const { return 0; }
addAudioEffect(effect_handle_t effect)61*79330504STreehugger Robot     virtual status_t addAudioEffect(effect_handle_t effect) { return NO_ERROR; }
removeAudioEffect(effect_handle_t effect)62*79330504STreehugger Robot     virtual status_t removeAudioEffect(effect_handle_t effect) { return NO_ERROR; }
63*79330504STreehugger Robot };
64*79330504STreehugger Robot 
65*79330504STreehugger Robot class AudioHardwareStub : public  AudioHardwareBase
66*79330504STreehugger Robot {
67*79330504STreehugger Robot public:
68*79330504STreehugger Robot                         AudioHardwareStub();
69*79330504STreehugger Robot     virtual             ~AudioHardwareStub();
70*79330504STreehugger Robot     virtual status_t    initCheck();
71*79330504STreehugger Robot     virtual status_t    setVoiceVolume(float volume);
72*79330504STreehugger Robot     virtual status_t    setMasterVolume(float volume);
73*79330504STreehugger Robot 
74*79330504STreehugger Robot     // mic mute
setMicMute(bool state)75*79330504STreehugger Robot     virtual status_t    setMicMute(bool state) { mMicMute = state;  return  NO_ERROR; }
getMicMute(bool * state)76*79330504STreehugger Robot     virtual status_t    getMicMute(bool* state) { *state = mMicMute ; return NO_ERROR; }
77*79330504STreehugger Robot 
78*79330504STreehugger Robot     // create I/O streams
79*79330504STreehugger Robot     virtual AudioStreamOut* openOutputStream(
80*79330504STreehugger Robot                                 uint32_t devices,
81*79330504STreehugger Robot                                 int *format=0,
82*79330504STreehugger Robot                                 uint32_t *channels=0,
83*79330504STreehugger Robot                                 uint32_t *sampleRate=0,
84*79330504STreehugger Robot                                 status_t *status=0);
85*79330504STreehugger Robot     virtual    void        closeOutputStream(AudioStreamOut* out);
86*79330504STreehugger Robot 
87*79330504STreehugger Robot     virtual AudioStreamIn* openInputStream(
88*79330504STreehugger Robot                                 uint32_t devices,
89*79330504STreehugger Robot                                 int *format,
90*79330504STreehugger Robot                                 uint32_t *channels,
91*79330504STreehugger Robot                                 uint32_t *sampleRate,
92*79330504STreehugger Robot                                 status_t *status,
93*79330504STreehugger Robot                                 AudioSystem::audio_in_acoustics acoustics);
94*79330504STreehugger Robot     virtual    void        closeInputStream(AudioStreamIn* in);
95*79330504STreehugger Robot 
96*79330504STreehugger Robot protected:
97*79330504STreehugger Robot     virtual status_t    dump(int fd, const Vector<String16>& args);
98*79330504STreehugger Robot 
99*79330504STreehugger Robot             bool        mMicMute;
100*79330504STreehugger Robot private:
101*79330504STreehugger Robot     status_t            dumpInternals(int fd, const Vector<String16>& args);
102*79330504STreehugger Robot };
103*79330504STreehugger Robot 
104*79330504STreehugger Robot // ----------------------------------------------------------------------------
105*79330504STreehugger Robot 
106*79330504STreehugger Robot }; // namespace android
107*79330504STreehugger Robot 
108*79330504STreehugger Robot #endif // ANDROID_AUDIO_HARDWARE_STUB_H
109