17#ifndef OBOE_FULL_DUPLEX_STREAM_
18#define OBOE_FULL_DUPLEX_STREAM_
21#include "oboe/Definitions.h"
22#include "oboe/AudioStream.h"
23#include "oboe/AudioStreamCallback.h"
98 mCountCallbacksToDrain = kNumCallbacksToDrain;
99 mCountInputBurstsCushion = mNumInputBurstsCushion;
100 mCountCallbacksToDiscard = kNumCallbacksToDiscard;
106 mInputBuffer = std::make_unique<float[]>(
bufferSize);
111 if (
result != oboe::Result::OK) {
190 if (mCountCallbacksToDrain > 0) {
204 mCountCallbacksToDrain--;
207 }
else if (mCountInputBurstsCushion > 0) {
209 mCountInputBurstsCushion--;
211 }
else if (mCountCallbacksToDiscard > 0) {
212 mCountCallbacksToDiscard--;
274 return mNumInputBurstsCushion;
292 return mMinimumFramesBeforeRead;
298 static constexpr int32_t kNumCallbacksToDrain = 20;
299 static constexpr int32_t kNumCallbacksToDiscard = 30;
302 int32_t mNumInputBurstsCushion = 0;
303 int32_t mMinimumFramesBeforeRead = 0;
309 int32_t mCountCallbacksToDrain = kNumCallbacksToDrain;
311 int32_t mCountInputBurstsCushion = mNumInputBurstsCushion;
313 int32_t mCountCallbacksToDiscard = kNumCallbacksToDiscard;
319 std::unique_ptr<float[]> mInputBuffer;
int32_t getChannelCount() const
Definition AudioStreamBase.h:53
virtual int32_t getBufferCapacityInFrames() const
Definition AudioStreamBase.h:91
Definition AudioStreamCallback.h:34
Definition AudioStream.h:44
virtual Result requestStart()=0
virtual ResultWithValue< int32_t > read(void *, int32_t, int64_t)
Definition AudioStream.h:386
int32_t getBytesPerFrame() const
Definition AudioStream.h:249
virtual Result requestStop()=0
ResultWithValue< int32_t > getAvailableFrames()
Definition FullDuplexStream.h:50
void setOutputStream(AudioStream *stream)
Definition FullDuplexStream.h:78
int32_t getMinimumFramesBeforeRead() const
Definition FullDuplexStream.h:291
virtual Result stop()
Definition FullDuplexStream.h:122
void setNumInputBurstsCushion(int32_t numBursts)
Definition FullDuplexStream.h:264
virtual ResultWithValue< int32_t > readInput(int32_t numFrames)
Definition FullDuplexStream.h:145
AudioStream * getOutputStream()
Definition FullDuplexStream.h:87
virtual DataCallbackResult onBothStreamsReady(const void *inputData, int numInputFrames, void *outputData, int numOutputFrames)=0
AudioStream * getInputStream()
Definition FullDuplexStream.h:69
DataCallbackResult onAudioReady(AudioStream *, void *audioData, int numFrames)
Definition FullDuplexStream.h:179
int32_t getNumInputBurstsCushion() const
Definition FullDuplexStream.h:273
void setInputStream(AudioStream *stream)
Definition FullDuplexStream.h:60
void setMinimumFramesBeforeRead(int32_t numFrames)
Definition FullDuplexStream.h:282
virtual Result start()
Definition FullDuplexStream.h:97
Definition ResultWithValue.h:47
T value() const
Definition ResultWithValue.h:81
Definition AudioStream.h:31
Result
Definition Definitions.h:172
DataCallbackResult
Definition Definitions.h:160