AudioHardware: Dispatch setParameters to input and output
[tinyalsa-audio.git] / AudioStreamIn.h
1 /*
2  * Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr>
3  *
4  * This is based on TinyHardware:
5  * Copyright 2011 Wolfson Microelectronics plc
6  *
7  * This is based on Nexus S AudioHardware implementation:
8  * Copyright 2010, The Android Open-Source Project
9  *
10  * Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  *
14  *     http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  */
22
23 #ifndef TINYALSA_AUDIO_STREAM_IN_H
24 #define TINYALSA_AUDIO_STREAM_IN_H
25
26 #include <hardware_legacy/AudioHardwareBase.h>
27 #include "AudioHardware.h"
28 #include "AudioResampler.h"
29
30 namespace android {
31
32 class AudioHardware;
33 class TinyALSAAudioResampler;
34
35 class TinyALSAAudioStreamIn : public AudioStreamIn
36 {
37 public:
38         TinyALSAAudioStreamIn();
39         virtual ~TinyALSAAudioStreamIn();
40
41         virtual status_t set(AudioHardware *hw, uint32_t devices,
42                 int *pFormat, uint32_t *pChannels, uint32_t *pRate,
43                 AudioSystem::audio_in_acoustics acoustics);
44
45         virtual uint32_t sampleRate(void) const;
46         virtual size_t bufferSize(void) const;
47         virtual uint32_t channels(void) const;
48         virtual int format(void) const;
49
50         virtual ssize_t read(void* buffer, ssize_t bytes);
51         virtual status_t standby();
52
53         virtual status_t setParameters(const String8& keyValuePairs);
54         virtual String8 getParameters(const String8& keys);
55
56         virtual unsigned int getInputFramesLost() const;
57         virtual status_t setGain(float gain);
58         virtual status_t dump(int fd, const Vector<String16>& args);
59
60         AudioHardware *mAudioHardware;
61         TinyALSAAudioResampler *mAudioResampler;
62         TinyALSAMixer *mMixer;
63
64 private:
65         Mutex mLock;
66
67         struct pcm *mPcm;
68         struct pcm_config mPcmConfig;
69
70         uint32_t mDevice;
71 };
72
73 }; // namespace android
74
75 #endif