CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
hrydgard

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: hrydgard/ppsspp
Path: blob/master/android/jni/AndroidAudio.h
Views: 1401
1
#pragma once
2
3
#include <string>
4
#include <mutex>
5
6
typedef int (*AndroidAudioCallback)(short *buffer, int numSamples, int sampleRateHz);
7
8
class AudioContext {
9
public:
10
AudioContext(AndroidAudioCallback cb, int _FramesPerBuffer, int _SampleRate);
11
virtual bool Init() { return false; }
12
virtual bool AudioRecord_Start(int sampleRate) { return false; };
13
virtual bool AudioRecord_Stop() { return false; };
14
15
int SampleRate() const { return sampleRate; }
16
17
virtual ~AudioContext() {}
18
19
protected:
20
void SetErrorString(const std::string &error);
21
AndroidAudioCallback audioCallback;
22
23
int framesPerBuffer;
24
int sampleRate;
25
std::mutex errorMutex_;
26
};
27
28
struct AndroidAudioState;
29
30
// TODO: Get rid of this unnecessary wrapper layer from the old .so days
31
32
// It's okay for optimalFramesPerBuffer and optimalSampleRate to be 0. Defaults will be used.
33
AndroidAudioState *AndroidAudio_Init(AndroidAudioCallback cb, int optimalFramesPerBuffer, int optimalSampleRate);
34
bool AndroidAudio_Recording_SetSampleRate(AndroidAudioState *state, int sampleRate);
35
bool AndroidAudio_Recording_Start(AndroidAudioState *state);
36
bool AndroidAudio_Recording_Stop(AndroidAudioState *state);
37
bool AndroidAudio_Recording_State(AndroidAudioState *state);
38
bool AndroidAudio_Pause(AndroidAudioState *state);
39
bool AndroidAudio_Resume(AndroidAudioState *state);
40
bool AndroidAudio_Shutdown(AndroidAudioState *state);
41
const std::string AndroidAudio_GetErrorString(AndroidAudioState *state);
42
43