aboutsummaryrefslogtreecommitdiff
path: root/externals/oboe/src/aaudio/AudioStreamAAudio.h
diff options
context:
space:
mode:
Diffstat (limited to 'externals/oboe/src/aaudio/AudioStreamAAudio.h')
-rw-r--r--externals/oboe/src/aaudio/AudioStreamAAudio.h171
1 files changed, 0 insertions, 171 deletions
diff --git a/externals/oboe/src/aaudio/AudioStreamAAudio.h b/externals/oboe/src/aaudio/AudioStreamAAudio.h
deleted file mode 100644
index 53df75da68..0000000000
--- a/externals/oboe/src/aaudio/AudioStreamAAudio.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef OBOE_STREAM_AAUDIO_H_
-#define OBOE_STREAM_AAUDIO_H_
-
-#include <atomic>
-#include <shared_mutex>
-#include <mutex>
-#include <thread>
-
-#include <common/AdpfWrapper.h>
-#include "oboe/AudioStreamBuilder.h"
-#include "oboe/AudioStream.h"
-#include "oboe/Definitions.h"
-#include "AAudioLoader.h"
-
-namespace oboe {
-
-/**
- * Implementation of OboeStream that uses AAudio.
- *
- * Do not create this class directly.
- * Use an OboeStreamBuilder to create one.
- */
-class AudioStreamAAudio : public AudioStream {
-public:
- AudioStreamAAudio();
- explicit AudioStreamAAudio(const AudioStreamBuilder &builder);
-
- virtual ~AudioStreamAAudio() = default;
-
- /**
- *
- * @return true if AAudio is supported on this device.
- */
- static bool isSupported();
-
- // These functions override methods in AudioStream.
- // See AudioStream for documentation.
- Result open() override;
- Result release() override;
- Result close() override;
-
- Result requestStart() override;
- Result requestPause() override;
- Result requestFlush() override;
- Result requestStop() override;
-
- ResultWithValue<int32_t> write(const void *buffer,
- int32_t numFrames,
- int64_t timeoutNanoseconds) override;
-
- ResultWithValue<int32_t> read(void *buffer,
- int32_t numFrames,
- int64_t timeoutNanoseconds) override;
-
- ResultWithValue<int32_t> setBufferSizeInFrames(int32_t requestedFrames) override;
- int32_t getBufferSizeInFrames() override;
- ResultWithValue<int32_t> getXRunCount() override;
- bool isXRunCountSupported() const override { return true; }
-
- ResultWithValue<double> calculateLatencyMillis() override;
-
- Result waitForStateChange(StreamState currentState,
- StreamState *nextState,
- int64_t timeoutNanoseconds) override;
-
- Result getTimestamp(clockid_t clockId,
- int64_t *framePosition,
- int64_t *timeNanoseconds) override;
-
- StreamState getState() override;
-
- AudioApi getAudioApi() const override {
- return AudioApi::AAudio;
- }
-
- DataCallbackResult callOnAudioReady(AAudioStream *stream,
- void *audioData,
- int32_t numFrames);
-
- bool isMMapUsed();
-
- void closePerformanceHint() override {
- mAdpfWrapper.close();
- mAdpfOpenAttempted = false;
- }
-
- oboe::Result reportWorkload(int32_t appWorkload) override {
- if (!isPerformanceHintEnabled()) {
- return oboe::Result::ErrorInvalidState;
- }
- mAdpfWrapper.reportWorkload(appWorkload);
- return oboe::Result::OK;
- }
-
- Result setOffloadDelayPadding(int32_t delayInFrames, int32_t paddingInFrames) override;
- ResultWithValue<int32_t> getOffloadDelay() override;
- ResultWithValue<int32_t> getOffloadPadding() override;
- Result setOffloadEndOfStream() override;
-
-protected:
- static void internalErrorCallback(
- AAudioStream *stream,
- void *userData,
- aaudio_result_t error);
-
- static void internalPresentationEndCallback(
- AAudioStream *stream,
- void *userData);
-
- void *getUnderlyingStream() const override {
- return mAAudioStream.load();
- }
-
- void updateFramesRead() override;
- void updateFramesWritten() override;
-
- void logUnsupportedAttributes();
-
- void beginPerformanceHintInCallback() override;
-
- void endPerformanceHintInCallback(int32_t numFrames) override;
-
- // set by callback (or app when idle)
- std::atomic<bool> mAdpfOpenAttempted{false};
- AdpfWrapper mAdpfWrapper;
-
-private:
- // Must call under mLock. And stream must NOT be nullptr.
- Result requestStop_l(AAudioStream *stream);
-
- /**
- * Launch a thread that will stop the stream.
- */
- void launchStopThread();
-
- void updateDeviceIds();
-
-private:
-
- std::atomic<bool> mCallbackThreadEnabled;
- std::atomic<bool> mStopThreadAllowed{false};
-
- // pointer to the underlying 'C' AAudio stream, valid if open, null if closed
- std::atomic<AAudioStream *> mAAudioStream{nullptr};
- std::shared_mutex mAAudioStreamLock; // to protect mAAudioStream while closing
-
- static AAudioLoader *mLibLoader;
-
- // We may not use this but it is so small that it is not worth allocating dynamically.
- AudioStreamErrorCallback mDefaultErrorCallback;
-};
-
-} // namespace oboe
-
-#endif // OBOE_STREAM_AAUDIO_H_