Oboe  1.2
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 
112  AudioStreamBuilder *setBufferCapacityInFrames(int32_t bufferCapacityInFrames) {
113  mBufferCapacityInFrames = bufferCapacityInFrames;
114  return this;
115  }
116 
127  AudioApi getAudioApi() const { return mAudioApi; }
128 
139  mAudioApi = audioApi;
140  return this;
141  }
142 
150  static bool isAAudioSupported();
151 
160  static bool isAAudioRecommended();
161 
171  mSharingMode = sharingMode;
172  return this;
173  }
174 
184  mPerformanceMode = performanceMode;
185  return this;
186  }
187 
188 
202  mUsage = usage;
203  return this;
204  }
205 
219  mContentType = contentType;
220  return this;
221  }
222 
239  mInputPreset = inputPreset;
240  return this;
241  }
242 
268  mSessionId = sessionId;
269  return this;
270  }
271 
284  AudioStreamBuilder *setDeviceId(int32_t deviceId) {
285  mDeviceId = deviceId;
286  return this;
287  }
288 
311  mStreamCallback = streamCallback;
312  return this;
313  }
314 
323  Result openStream(AudioStream **stream);
324 
325 protected:
326 
327 private:
328 
336  oboe::AudioStream *build();
337 
338  AudioApi mAudioApi = AudioApi::Unspecified;
339 };
340 
341 } // namespace oboe
342 
343 #endif /* OBOE_STREAM_BUILDER_H_ */
AudioStreamBuilder * setDeviceId(int32_t deviceId)
Definition: AudioStreamBuilder.h:284
Definition: AudioStreamBuilder.h:28
SessionId mSessionId
Definition: AudioStreamBase.h:166
AudioStreamBuilder * setPerformanceMode(PerformanceMode performanceMode)
Definition: AudioStreamBuilder.h:183
Direction mDirection
Definition: AudioStreamBase.h:155
AudioFormat mFormat
Definition: AudioStreamBase.h:153
ContentType mContentType
Definition: AudioStreamBase.h:162
static bool isAAudioRecommended()
PerformanceMode
Definition: Definitions.h:192
SessionId
Definition: Definitions.h:382
AudioStreamBuilder * setSessionId(SessionId sessionId)
Definition: AudioStreamBuilder.h:267
PerformanceMode mPerformanceMode
Definition: AudioStreamBase.h:157
Definition: AudioStreamCallback.h:33
SharingMode mSharingMode
Definition: AudioStreamBase.h:151
AudioStreamBuilder * setContentType(ContentType contentType)
Definition: AudioStreamBuilder.h:218
int32_t mChannelCount
Definition: AudioStreamBase.h:135
AudioApi
Definition: Definitions.h:213
ContentType
Definition: Definitions.h:315
AudioStreamBuilder * setUsage(Usage usage)
Definition: AudioStreamBuilder.h:201
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:44
Usage
Definition: Definitions.h:239
AudioStreamBuilder * setAudioApi(AudioApi audioApi)
Definition: AudioStreamBuilder.h:138
AudioStreamBuilder * setInputPreset(InputPreset inputPreset)
Definition: AudioStreamBuilder.h:238
AudioStreamBuilder * setSampleRate(int32_t sampleRate)
Definition: AudioStreamBuilder.h:65
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:112
Result openStream(AudioStream **stream)
AudioFormat
Definition: Definitions.h:94
Result
Definition: Definitions.h:131
AudioStreamBuilder * setSharingMode(SharingMode sharingMode)
Definition: AudioStreamBuilder.h:170
Definition: AudioStream.h:31
InputPreset mInputPreset
Definition: AudioStreamBase.h:164
AudioStreamCallback * mStreamCallback
Definition: AudioStreamBase.h:131
Direction
Definition: Definitions.h:78
SharingMode
Definition: Definitions.h:167
InputPreset
Definition: Definitions.h:348
AudioStreamBuilder * setChannelCount(int channelCount)
Definition: AudioStreamBuilder.h:39
AudioStreamBuilder * setCallback(AudioStreamCallback *streamCallback)
Definition: AudioStreamBuilder.h:310
int32_t mFramesPerCallback
Definition: AudioStreamBase.h:133
AudioApi getAudioApi() const
Definition: AudioStreamBuilder.h:127