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