24#include "oboe/Definitions.h"
25#include "oboe/ResultWithValue.h"
26#include "oboe/AudioStreamBuilder.h"
27#include "oboe/AudioStreamBase.h"
164 int64_t timeoutNanoseconds) = 0;
179 return Result::ErrorUnimplemented;
300 return Result::ErrorUnimplemented;
412 return previousCallback;
425 return previousCallback;
448 int64_t timeoutNanoseconds);
454 return mErrorCallbackResult;
458 int32_t getDelayBeforeCloseMillis()
const {
459 return mDelayBeforeCloseMillis;
477 mDelayBeforeCloseMillis = delayBeforeCloseMillis;
492 return mErrorCallbackCalled.exchange(
true);
503 int64_t timeoutNanoseconds);
513 return DataCallbackResult::Stop;
530 return mDataCallbackEnabled;
538 mDataCallbackEnabled = enabled;
551 if (mDelayBeforeCloseMillis > 0) {
552 usleep(mDelayBeforeCloseMillis * 1000);
560 void setWeakThis(std::shared_ptr<oboe::AudioStream> &sharedStream) {
561 mWeakThis = sharedStream;
567 std::shared_ptr<oboe::AudioStream> lockWeakThis() {
568 return mWeakThis.lock();
571 std::weak_ptr<AudioStream> mWeakThis;
601 static constexpr int kMinDelayBeforeCloseMillis = 10;
602 int32_t mDelayBeforeCloseMillis = kMinDelayBeforeCloseMillis;
607 void checkScheduler();
608 int mPreviousScheduler = -1;
610 std::atomic<bool> mDataCallbackEnabled{
false};
611 std::atomic<bool> mErrorCallbackCalled{
false};
621 audioStream->
close();
Definition: AudioStreamBase.h:30
int32_t mChannelCount
Definition: AudioStreamBase.h:200
AudioStreamDataCallback * mDataCallback
Definition: AudioStreamBase.h:190
AudioStreamErrorCallback * mErrorCallback
Definition: AudioStreamBase.h:194
Definition: AudioStreamBuilder.h:34
Definition: AudioStreamCallback.h:34
Definition: AudioStreamCallback.h:101
Definition: AudioStream.h:44
int32_t mFramesPerBurst
Definition: AudioStream.h:597
virtual Result pause(int64_t timeoutNanoseconds=kDefaultTimeoutNanos)
std::atomic< int64_t > mFramesRead
Definition: AudioStream.h:587
virtual Result waitForStateChange(StreamState inputState, StreamState *nextState, int64_t timeoutNanoseconds)=0
virtual DataCallbackResult onDefaultCallback(void *, int)
Definition: AudioStream.h:512
void setDataCallbackEnabled(bool enabled)
Definition: AudioStream.h:537
bool usesAAudio() const
Definition: AudioStream.h:374
virtual AudioApi getAudioApi() const =0
int32_t getFramesPerBurst() const
Definition: AudioStream.h:208
virtual Result flush(int64_t timeoutNanoseconds=kDefaultTimeoutNanos)
virtual Result requestStart()=0
virtual ResultWithValue< double > calculateLatencyMillis()
Definition: AudioStream.h:272
virtual ResultWithValue< int32_t > read(void *, int32_t, int64_t)
Definition: AudioStream.h:356
virtual bool isXRunCountSupported() const =0
int32_t getBytesPerSample() const
virtual ResultWithValue< int32_t > getXRunCount()
Definition: AudioStream.h:194
virtual void updateFramesRead()=0
virtual StreamState getState()=0
int32_t getBytesPerFrame() const
Definition: AudioStream.h:219
void sleepBeforeClose()
Definition: AudioStream.h:550
virtual void updateFramesWritten()=0
virtual Result open()
Definition: AudioStream.h:67
virtual Result requestFlush()=0
virtual Result requestPause()=0
virtual Result requestStop()=0
std::atomic< int64_t > mFramesWritten
Definition: AudioStream.h:579
virtual Result waitForStateTransition(StreamState startingState, StreamState endingState, int64_t timeoutNanoseconds)
virtual void * getUnderlyingStream() const
Definition: AudioStream.h:386
AudioStream(const AudioStreamBuilder &builder)
virtual oboe::Result getLastErrorCallbackResult() const
Definition: AudioStream.h:453
bool wasErrorCallbackCalled()
Definition: AudioStream.h:491
ResultWithValue< int32_t > getAvailableFrames()
virtual ResultWithValue< int32_t > setBufferSizeInFrames(int32_t)
Definition: AudioStream.h:178
virtual int64_t getFramesWritten()
DataCallbackResult fireDataCallback(void *audioData, int numFrames)
ResultWithValue< int32_t > waitForAvailableFrames(int32_t numFrames, int64_t timeoutNanoseconds)
virtual Result getTimestamp(clockid_t, int64_t *, int64_t *)
Definition: AudioStream.h:297
virtual ResultWithValue< int32_t > write(const void *, int32_t, int64_t)
Definition: AudioStream.h:338
bool isDataCallbackEnabled()
Definition: AudioStream.h:529
virtual Result stop(int64_t timeoutNanoseconds=kDefaultTimeoutNanos)
virtual int64_t getFramesRead()
void calculateDefaultDelayBeforeCloseMillis()
virtual Result start(int64_t timeoutNanoseconds=kDefaultTimeoutNanos)
void setDelayBeforeCloseMillis(int32_t delayBeforeCloseMillis)
Definition: AudioStream.h:476
virtual ResultWithValue< FrameTimestamp > getTimestamp(clockid_t)
Definition: ResultWithValue.h:47
Definition: AudioStream.h:31
Result
Definition: Definitions.h:157
constexpr int64_t kNanosPerMillisecond
Definition: Definitions.h:42
StreamState
Definition: Definitions.h:57
AudioApi
Definition: Definitions.h:239
constexpr int64_t kDefaultTimeoutNanos
Definition: AudioStream.h:39
constexpr int32_t kUnspecified
Definition: Definitions.h:31
DataCallbackResult
Definition: Definitions.h:145
Definition: AudioStream.h:618