blob: 9a941021e651a5651488f078efa0c87e184585d5 [file] [log] [blame]
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001/* //device/servers/AudioFlinger/AudioDumpInterface.h
2**
3** Copyright 2008, The Android Open Source Project
4**
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -08005** 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
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07008**
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -08009** http://www.apache.org/licenses/LICENSE-2.0
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070010**
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080011** 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
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070015** limitations under the License.
16*/
17
18#ifndef ANDROID_AUDIO_DUMP_INTERFACE_H
19#define ANDROID_AUDIO_DUMP_INTERFACE_H
20
21#include <stdint.h>
22#include <sys/types.h>
23
The Android Open Source Project9266c552009-01-15 16:12:10 -080024#include <hardware_legacy/AudioHardwareBase.h>
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070025
26namespace android {
27
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080028#define FLINGER_DUMP_NAME "/data/FlingerOut.pcm" // name of file used for dump
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070029
30class AudioStreamOutDump : public AudioStreamOut {
31public:
32 AudioStreamOutDump( AudioStreamOut* FinalStream);
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080033 ~AudioStreamOutDump();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070034 virtual ssize_t write(const void* buffer, size_t bytes);
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080035
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070036 virtual uint32_t sampleRate() const { return mFinalStream->sampleRate(); }
37 virtual size_t bufferSize() const { return mFinalStream->bufferSize(); }
38 virtual int channelCount() const { return mFinalStream->channelCount(); }
39 virtual int format() const { return mFinalStream->format(); }
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080040 virtual uint32_t latency() const { return mFinalStream->latency(); }
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070041 virtual status_t setVolume(float volume)
42 { return mFinalStream->setVolume(volume); }
The Android Open Source Projectb7986892009-01-09 17:51:23 -080043 virtual status_t standby();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070044 virtual status_t dump(int fd, const Vector<String16>& args) { return mFinalStream->dump(fd, args); }
45 void Close(void);
46
47private:
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080048 AudioStreamOut *mFinalStream;
49 FILE *mOutFile; // output file
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070050};
51
52
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080053class AudioDumpInterface : public AudioHardwareBase
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070054{
55
56public:
57 AudioDumpInterface(AudioHardwareInterface* hw);
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070058 virtual AudioStreamOut* openOutputStream(
59 int format=0,
60 int channelCount=0,
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080061 uint32_t sampleRate=0,
62 status_t *status=0);
63 virtual ~AudioDumpInterface();
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070064
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070065 virtual status_t initCheck()
66 {return mFinalInterface->initCheck();}
67 virtual status_t setVoiceVolume(float volume)
68 {return mFinalInterface->setVoiceVolume(volume);}
69 virtual status_t setMasterVolume(float volume)
70 {return mFinalInterface->setMasterVolume(volume);}
71
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070072 // mic mute
73 virtual status_t setMicMute(bool state)
74 {return mFinalInterface->setMicMute(state);}
75 virtual status_t getMicMute(bool* state)
76 {return mFinalInterface->getMicMute(state);}
77
78 virtual status_t setParameter(const char* key, const char* value)
79 {return mFinalInterface->setParameter(key, value);}
80
The Android Open Source Project3001a032009-02-19 10:57:31 -080081 virtual AudioStreamIn* openInputStream( int format, int channelCount, uint32_t sampleRate, status_t *status,
82 AudioSystem::audio_in_acoustics acoustics)
83 {return mFinalInterface->openInputStream( format, channelCount, sampleRate, status, acoustics);}
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070084
85 virtual status_t dump(int fd, const Vector<String16>& args) { return mFinalInterface->dumpState(fd, args); }
86
87protected:
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080088 virtual status_t doRouting() {return mFinalInterface->setRouting(mMode, mRoutes[mMode]);}
89
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070090 AudioHardwareInterface *mFinalInterface;
91 AudioStreamOutDump *mStreamOut;
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080092
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070093};
94
95}; // namespace android
96
97#endif // ANDROID_AUDIO_DUMP_INTERFACE_H