/* * Copyright 2022 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 SIMPLE_NOISE_MAKER_H #define SIMPLE_NOISE_MAKER_H #include "oboe/Oboe.h" /** * Play white noise using Oboe. */ class SimpleNoiseMaker { public: /** * Open an Oboe stream. * @return OK or negative error code. */ oboe::Result open(); oboe::Result start(); oboe::Result stop(); oboe::Result close(); private: class MyDataCallback : public oboe::AudioStreamDataCallback { public: oboe::DataCallbackResult onAudioReady( oboe::AudioStream *audioStream, void *audioData, int32_t numFrames) override; }; class MyErrorCallback : public oboe::AudioStreamErrorCallback { public: MyErrorCallback(SimpleNoiseMaker *parent) : mParent(parent) {} virtual ~MyErrorCallback() { } void onErrorAfterClose(oboe::AudioStream *oboeStream, oboe::Result error) override; private: SimpleNoiseMaker *mParent; }; std::shared_ptr mStream; std::shared_ptr mDataCallback; std::shared_ptr mErrorCallback; static constexpr int kChannelCount = 2; }; #endif //SIMPLE_NOISE_MAKER_H