11 #include "cores/AudioEngine/Interfaces/AESink.h" 12 #include "cores/AudioEngine/Utils/AEDeviceInfo.h" 13 #include "cores/AudioEngine/Utils/AEUtil.h" 14 #include "threads/CriticalSection.h" 15 #include "threads/SystemClock.h" 16 #include "threads/Thread.h" 21 #include <androidjni/AudioTrack.h> 26 const char* GetName()
override {
return "AUDIOTRACK"; }
31 bool Initialize(
AEAudioFormat& format, std::string& device)
override;
32 void Deinitialize()
override;
36 double GetLatency()
override;
37 double GetCacheTotal()
override;
38 unsigned int AddPackets(uint8_t** data,
unsigned int frames,
unsigned int offset)
override;
39 void AddPause(
unsigned int millis)
override;
40 void Drain()
override;
41 static void EnumerateDevicesEx(AEDeviceInfoList &list,
bool force =
false);
42 static void Register();
46 static jni::CJNIAudioTrack *CreateAudioTrack(
int stream,
int sampleRate,
int channelMask,
int encoding,
int bufferSize);
47 static bool IsSupported(
int sampleRateInHz,
int channelConfig,
int audioFormat);
48 static bool VerifySinkConfiguration(
int sampleRate,
52 static void UpdateAvailablePCMCapabilities();
53 static void UpdateAvailablePassthroughCapabilities(
bool isRaw =
false);
55 int AudioTrackWrite(
char* audioData,
int offsetInBytes,
int sizeInBytes);
56 int AudioTrackWrite(
char* audioData,
int sizeInBytes, int64_t timestamp);
59 jni::CJNIAudioTrack *m_at_jni;
62 double m_duration_written;
63 unsigned int m_min_buffer_size;
65 uint64_t m_timestampPos = 0;
68 double GetMovingAverageDelay(
double newestdelay);
73 std::deque<double> m_linearmovingaverage;
79 static std::set<unsigned int> m_sink_sampleRates;
80 static bool m_sinkSupportsFloat;
81 static bool m_sinkSupportsMultiChannelFloat;
82 static bool m_passthrough_use_eac3;
85 int16_t *m_alignedS16;
86 unsigned int m_sink_frameSize;
87 unsigned int m_sink_sampleRate;
89 double m_audiotrackbuffer_sec;
92 double m_hw_delay = 0.0;
93 CJNIAudioTimestamp m_timestamp;
96 std::vector<float> m_floatbuf;
97 std::vector<int16_t> m_shortbuf;
98 std::vector<char> m_charbuf;
This classt provides the details of what the audio output hardware is capable of. ...
Definition: AEDeviceInfo.h:31
Definition: SystemClock.h:31
void GetDelay(AEDelayStatus &status) override
Return a timestamped status structure with delay and sink info.
Definition: AESinkAUDIOTRACK.cpp:658
unsigned int AddPackets(uint8_t **data, unsigned int frames, unsigned int offset) override
Adds packets to be sent out, this routine MUST block or sleep.
Definition: AESinkAUDIOTRACK.cpp:809
void AddPause(unsigned int millis) override
instruct the sink to add a pause
Definition: AESinkAUDIOTRACK.cpp:937
Definition: AESinkAUDIOTRACK.h:23