Oboe  1.0
A library for creating real-time audio apps on Android
AudioStreamBuilder.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_BUILDER_H_
18 #define OBOE_STREAM_BUILDER_H_
19 
20 #include "oboe/Definitions.h"
21 #include "oboe/AudioStreamBase.h"
22 
23 namespace oboe {
24 
29 public:
30 
32 
39  AudioStreamBuilder *setChannelCount(int channelCount) {
40  mChannelCount = channelCount;
41  return this;
42  }
43 
50  mDirection = direction;
51  return this;
52  }
53 
65  AudioStreamBuilder *setSampleRate(int32_t sampleRate) {
66  mSampleRate = sampleRate;
67  return this;
68  }
69 
84  AudioStreamBuilder *setFramesPerCallback(int framesPerCallback) {
85  mFramesPerCallback = framesPerCallback;
86  return this;
87  }
88 
96  mFormat = format;
97  return this;
98  }
99 
109  AudioStreamBuilder *setBufferCapacityInFrames(int32_t bufferCapacityInFrames) {
110  mBufferCapacityInFrames = bufferCapacityInFrames;
111  return this;
112  }
113 
121  AudioApi getAudioApi() const { return mAudioApi; }
122 
133  mAudioApi = audioApi;
134  return this;
135  }
136 
144  static bool isAAudioSupported();
145 
153  static bool isAAudioRecommended();
154 
164  mSharingMode = sharingMode;
165  return this;
166  }
167 
177  mPerformanceMode = performanceMode;
178  return this;
179  }
180 
181 
195  mUsage = usage;
196  return this;
197  }
198 
212  mContentType = contentType;
213  return this;
214  }
215 
232  mInputPreset = inputPreset;
233  return this;
234  }
235 
261  mSessionId = sessionId;
262  return this;
263  }
264 
277  AudioStreamBuilder *setDeviceId(int32_t deviceId) {
278  mDeviceId = deviceId;
279  return this;
280  }
281 
301  mStreamCallback = streamCallback;
302  return this;
303  }
304 
311  Result openStream(AudioStream **stream);
312 
313 protected:
314 
315 private:
316 
322  oboe::AudioStream *build();
323 
324  AudioApi mAudioApi = AudioApi::Unspecified;
325 };
326 
327 } // namespace oboe
328 
329 #endif /* OBOE_STREAM_BUILDER_H_ */
AudioStreamBuilder * setDeviceId(int32_t deviceId)
Definition: AudioStreamBuilder.h:277
Direction
Definition: Definitions.h:87
Definition: AudioStreamBuilder.h:28
SessionId mSessionId
Definition: AudioStreamBase.h:166
AudioStreamBuilder * setPerformanceMode(PerformanceMode performanceMode)
Definition: AudioStreamBuilder.h:176
Direction mDirection
Definition: AudioStreamBase.h:155
AudioFormat mFormat
Definition: AudioStreamBase.h:153
ContentType mContentType
Definition: AudioStreamBase.h:162
static bool isAAudioRecommended()
SessionId
Definition: Definitions.h:394
AudioStreamBuilder * setSessionId(SessionId sessionId)
Definition: AudioStreamBuilder.h:260
PerformanceMode mPerformanceMode
Definition: AudioStreamBase.h:157
Result
Definition: Definitions.h:140
Definition: AudioStreamCallback.h:33
SharingMode mSharingMode
Definition: AudioStreamBase.h:151
AudioStreamBuilder * setContentType(ContentType contentType)
Definition: AudioStreamBuilder.h:211
int32_t mChannelCount
Definition: AudioStreamBase.h:135
AudioApi
Definition: Definitions.h:216
AudioStreamBuilder * setUsage(Usage usage)
Definition: AudioStreamBuilder.h:194
int32_t mDeviceId
Definition: AudioStreamBase.h:139
static bool isAAudioSupported()
AudioStreamBuilder * setFramesPerCallback(int framesPerCallback)
Definition: AudioStreamBuilder.h:84
AudioStreamBuilder * setDirection(Direction direction)
Definition: AudioStreamBuilder.h:49
AudioStreamBuilder * setFormat(AudioFormat format)
Definition: AudioStreamBuilder.h:95
Usage mUsage
Definition: AudioStreamBase.h:160
Definition: AudioStream.h:42
AudioStreamBuilder * setAudioApi(AudioApi audioApi)
Definition: AudioStreamBuilder.h:132
AudioStreamBuilder * setInputPreset(InputPreset inputPreset)
Definition: AudioStreamBuilder.h:231
AudioStreamBuilder * setSampleRate(int32_t sampleRate)
Definition: AudioStreamBuilder.h:65
AudioFormat
Definition: Definitions.h:103
int32_t mSampleRate
Definition: AudioStreamBase.h:137
Definition: AudioStreamBase.h:29
int32_t mBufferCapacityInFrames
Definition: AudioStreamBase.h:141
AudioStreamBuilder * setBufferCapacityInFrames(int32_t bufferCapacityInFrames)
Definition: AudioStreamBuilder.h:109
Result openStream(AudioStream **stream)
ContentType
Definition: Definitions.h:327
SharingMode
Definition: Definitions.h:176
AudioStreamBuilder * setSharingMode(SharingMode sharingMode)
Definition: AudioStreamBuilder.h:163
Definition: AudioStream.h:29
PerformanceMode
Definition: Definitions.h:195
InputPreset mInputPreset
Definition: AudioStreamBase.h:164
AudioStreamCallback * mStreamCallback
Definition: AudioStreamBase.h:131
InputPreset
Definition: Definitions.h:360
AudioStreamBuilder * setChannelCount(int channelCount)
Definition: AudioStreamBuilder.h:39
AudioStreamBuilder * setCallback(AudioStreamCallback *streamCallback)
Definition: AudioStreamBuilder.h:300
Usage
Definition: Definitions.h:249
int32_t mFramesPerCallback
Definition: AudioStreamBase.h:133
AudioApi getAudioApi() const
Definition: AudioStreamBuilder.h:121