1 /* //device/servers/AudioFlinger/AudioDumpInterface.h
3 ** Copyright 2008, The Android Open Source Project
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
9 ** http://www.apache.org/licenses/LICENSE-2.0
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
18 #ifndef ANDROID_AUDIO_DUMP_INTERFACE_H
19 #define ANDROID_AUDIO_DUMP_INTERFACE_H
22 #include <sys/types.h>
23 #include <utils/String8.h>
24 #include <utils/SortedVector.h>
26 #include <hardware_legacy/AudioHardwareBase.h>
30 #define AUDIO_DUMP_WAVE_HDR_SIZE 44
32 class AudioDumpInterface;
34 class AudioStreamOutDump : public AudioStreamOut {
36 AudioStreamOutDump(AudioDumpInterface *interface,
38 AudioStreamOut* finalStream,
43 ~AudioStreamOutDump();
45 virtual ssize_t write(const void* buffer, size_t bytes);
46 virtual uint32_t sampleRate() const;
47 virtual size_t bufferSize() const;
48 virtual uint32_t channels() const;
49 virtual int format() const;
50 virtual uint32_t latency() const;
51 virtual status_t setVolume(float left, float right);
52 virtual status_t standby();
53 virtual status_t setParameters(const String8& keyValuePairs);
54 virtual String8 getParameters(const String8& keys);
55 virtual status_t dump(int fd, const Vector<String16>& args);
57 AudioStreamOut* finalStream() { return mFinalStream; }
58 uint32_t device() { return mDevice; }
59 int getId() { return mId; }
60 virtual status_t getRenderPosition(uint32_t *dspFrames);
63 AudioDumpInterface *mInterface;
65 uint32_t mSampleRate; //
67 uint32_t mChannels; // output configuration
69 uint32_t mDevice; // current device this output is routed to
71 AudioStreamOut *mFinalStream;
72 FILE *mFile; // output file
76 class AudioStreamInDump : public AudioStreamIn {
78 AudioStreamInDump(AudioDumpInterface *interface,
80 AudioStreamIn* finalStream,
87 virtual uint32_t sampleRate() const;
88 virtual size_t bufferSize() const;
89 virtual uint32_t channels() const;
90 virtual int format() const;
92 virtual status_t setGain(float gain);
93 virtual ssize_t read(void* buffer, ssize_t bytes);
94 virtual status_t standby();
95 virtual status_t setParameters(const String8& keyValuePairs);
96 virtual String8 getParameters(const String8& keys);
97 virtual unsigned int getInputFramesLost() const;
98 virtual status_t dump(int fd, const Vector<String16>& args);
100 AudioStreamIn* finalStream() { return mFinalStream; }
101 uint32_t device() { return mDevice; }
104 AudioDumpInterface *mInterface;
106 uint32_t mSampleRate; //
108 uint32_t mChannels; // output configuration
109 uint32_t mDevice; // current device this output is routed to
111 AudioStreamIn *mFinalStream;
112 FILE *mFile; // output file
116 class AudioDumpInterface : public AudioHardwareBase
120 AudioDumpInterface(AudioHardwareInterface* hw);
121 virtual AudioStreamOut* openOutputStream(
124 uint32_t *channels=0,
125 uint32_t *sampleRate=0,
127 virtual void closeOutputStream(AudioStreamOut* out);
129 virtual ~AudioDumpInterface();
131 virtual status_t initCheck()
132 {return mFinalInterface->initCheck();}
133 virtual status_t setVoiceVolume(float volume)
134 {return mFinalInterface->setVoiceVolume(volume);}
135 virtual status_t setMasterVolume(float volume)
136 {return mFinalInterface->setMasterVolume(volume);}
138 virtual status_t setMode(int mode);
141 virtual status_t setMicMute(bool state)
142 {return mFinalInterface->setMicMute(state);}
143 virtual status_t getMicMute(bool* state)
144 {return mFinalInterface->getMicMute(state);}
146 virtual status_t setParameters(const String8& keyValuePairs);
147 virtual String8 getParameters(const String8& keys);
149 virtual size_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount);
151 virtual AudioStreamIn* openInputStream(uint32_t devices, int *format, uint32_t *channels,
152 uint32_t *sampleRate, status_t *status, AudioSystem::audio_in_acoustics acoustics);
153 virtual void closeInputStream(AudioStreamIn* in);
155 virtual status_t dump(int fd, const Vector<String16>& args) { return mFinalInterface->dumpState(fd, args); }
157 String8 fileName() const { return mFileName; }
160 AudioHardwareInterface *mFinalInterface;
161 SortedVector<AudioStreamOutDump *> mOutputs;
162 SortedVector<AudioStreamInDump *> mInputs;
164 String8 mPolicyCommands;
168 }; // namespace android
170 #endif // ANDROID_AUDIO_DUMP_INTERFACE_H