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();
    43   static std::unique_ptr<IAESink> Create(std::string& device, 
AEAudioFormat& desiredFormat);
    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_headPosOld;
    66   uint32_t m_stuckCounter;
    67   uint64_t m_timestampPos = 0;
    70   double                GetMovingAverageDelay(
double newestdelay);
    75   std::deque<double>   m_linearmovingaverage;
    81   static std::set<unsigned int>       m_sink_sampleRates;
    82   static bool m_sinkSupportsFloat;
    83   static bool m_sinkSupportsMultiChannelFloat;
    84   static bool m_passthrough_use_eac3;
    87   int16_t           *m_alignedS16;
    88   unsigned int       m_sink_frameSize;
    89   unsigned int       m_sink_sampleRate;
    91   double             m_audiotrackbuffer_sec;
    92   double m_audiotrackbuffer_sec_orig;
    94   double m_pause_ms = 0.0;
    96   double m_hw_delay = 0.0;
    97   CJNIAudioTimestamp m_timestamp;
    99   bool m_superviseAudioDelay = 
false;
   101   std::vector<float> m_floatbuf;
   102   std::vector<int16_t> m_shortbuf;
   103   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:642
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:811
void AddPause(unsigned int millis) override
instruct the sink to add a pause 
Definition: AESinkAUDIOTRACK.cpp:969
Definition: AESinkAUDIOTRACK.h:23