Oboe  1.2
A library for creating real-time audio apps on Android
AudioStreamBase.h
1 /*
2  * Copyright 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef OBOE_STREAM_BASE_H_
18 #define OBOE_STREAM_BASE_H_
19 
20 #include <memory>
21 #include "oboe/AudioStreamCallback.h"
22 #include "oboe/Definitions.h"
23 
24 namespace oboe {
25 
30 public:
31 
32  AudioStreamBase() {}
33 
34  virtual ~AudioStreamBase() = default;
35 
36  // This class only contains primitives so we can use default constructor and copy methods.
37 
41  AudioStreamBase(const AudioStreamBase&) = default;
42 
46  AudioStreamBase& operator=(const AudioStreamBase&) = default;
47 
51  int32_t getChannelCount() const { return mChannelCount; }
52 
56  Direction getDirection() const { return mDirection; }
57 
61  int32_t getSampleRate() const { return mSampleRate; }
62 
66  int32_t getFramesPerCallback() const { return mFramesPerCallback; }
67 
71  AudioFormat getFormat() const { return mFormat; }
72 
79  virtual int32_t getBufferSizeInFrames() { return mBufferSizeInFrames; }
80 
84  virtual int32_t getBufferCapacityInFrames() const { return mBufferCapacityInFrames; }
85 
90 
95 
99  int32_t getDeviceId() const { return mDeviceId; }
100 
105  return mStreamCallback;
106  }
107 
111  Usage getUsage() const { return mUsage; }
112 
117 
122 
126  SessionId getSessionId() const { return mSessionId; }
127 
132  return mChannelConversionAllowed;
133  }
134 
139  return mFormatConversionAllowed;
140  }
141 
146  return mSampleRateConversionQuality;
147  }
148 
149 protected:
150 
170 
174  AudioFormat mFormat = AudioFormat::Unspecified;
178  PerformanceMode mPerformanceMode = PerformanceMode::None;
179 
183  ContentType mContentType = ContentType::Music;
187  InputPreset mInputPreset = InputPreset::VoiceRecognition;
189  SessionId mSessionId = SessionId::None;
190 
191  // Control whether Oboe can convert channel counts to achieve optimal results.
192  bool mChannelConversionAllowed = false;
193  // Control whether Oboe can convert data formats to achieve optimal results.
194  bool mFormatConversionAllowed = false;
195  // Control whether and how Oboe can convert sample rates to achieve optimal results.
196  SampleRateConversionQuality mSampleRateConversionQuality = SampleRateConversionQuality::None;
197 };
198 
199 } // namespace oboe
200 
201 #endif /* OBOE_STREAM_BASE_H_ */
bool isChannelConversionAllowed() const
Definition: AudioStreamBase.h:131
int32_t mBufferSizeInFrames
Definition: AudioStreamBase.h:164
SessionId mSessionId
Definition: AudioStreamBase.h:189
Direction mDirection
Definition: AudioStreamBase.h:176
int32_t getDeviceId() const
Definition: AudioStreamBase.h:99
AudioFormat mFormat
Definition: AudioStreamBase.h:174
int32_t getFramesPerCallback() const
Definition: AudioStreamBase.h:66
ContentType mContentType
Definition: AudioStreamBase.h:183
PerformanceMode
Definition: Definitions.h:192
SessionId
Definition: Definitions.h:414
PerformanceMode mPerformanceMode
Definition: AudioStreamBase.h:178
PerformanceMode getPerformanceMode() const
Definition: AudioStreamBase.h:94
int32_t getChannelCount() const
Definition: AudioStreamBase.h:51
SessionId getSessionId() const
Definition: AudioStreamBase.h:126
Definition: AudioStreamCallback.h:33
SharingMode mSharingMode
Definition: AudioStreamBase.h:172
int32_t mChannelCount
Definition: AudioStreamBase.h:156
bool isFormatConversionAllowed() const
Definition: AudioStreamBase.h:138
AudioFormat getFormat() const
Definition: AudioStreamBase.h:71
ContentType
Definition: Definitions.h:339
int32_t mDeviceId
Definition: AudioStreamBase.h:160
ContentType getContentType() const
Definition: AudioStreamBase.h:116
Usage mUsage
Definition: AudioStreamBase.h:181
Usage
Definition: Definitions.h:263
int32_t getSampleRate() const
Definition: AudioStreamBase.h:61
int32_t mSampleRate
Definition: AudioStreamBase.h:158
AudioStreamCallback * getCallback() const
Definition: AudioStreamBase.h:104
int32_t mFramesPerBurst
Definition: AudioStreamBase.h:169
SharingMode getSharingMode() const
Definition: AudioStreamBase.h:89
Definition: AudioStreamBase.h:29
int32_t mBufferCapacityInFrames
Definition: AudioStreamBase.h:162
SampleRateConversionQuality getSampleRateConversionQuality() const
Definition: AudioStreamBase.h:145
AudioStreamBase & operator=(const AudioStreamBase &)=default
virtual int32_t getBufferSizeInFrames()
Definition: AudioStreamBase.h:79
AudioFormat
Definition: Definitions.h:94
constexpr int32_t kUnspecified
Definition: Definitions.h:32
virtual int32_t getBufferCapacityInFrames() const
Definition: AudioStreamBase.h:84
Definition: AudioStream.h:31
SampleRateConversionQuality
Definition: Definitions.h:235
InputPreset mInputPreset
Definition: AudioStreamBase.h:187
AudioStreamCallback * mStreamCallback
Definition: AudioStreamBase.h:152
Direction
Definition: Definitions.h:78
Direction getDirection() const
Definition: AudioStreamBase.h:56
SharingMode
Definition: Definitions.h:167
InputPreset
Definition: Definitions.h:372
int32_t mFramesPerCallback
Definition: AudioStreamBase.h:154
Usage getUsage() const
Definition: AudioStreamBase.h:111
InputPreset getInputPreset() const
Definition: AudioStreamBase.h:121