1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
/*
* Copyright (C) 2005-2018 Team Kodi
* This file is part of Kodi - https://kodi.tv
*
* SPDX-License-Identifier: GPL-2.0-or-later
* See LICENSES/README.md for more information.
*/
#pragma once
#include "cores/AudioEngine/Interfaces/AESink.h"
#include "cores/AudioEngine/Utils/AEDeviceInfo.h"
#define DO_440HZ_TONE_TEST 0
#if DO_440HZ_TONE_TEST
typedef struct
{
float currentPhase;
float phaseIncrement;
} SineWaveGenerator;
#endif
class AERingBuffer;
class CAAudioUnitSink;
class CAESinkDARWINTVOS : public IAESink
{
public:
const char* GetName() override { return "DARWINTVOS"; }
CAESinkDARWINTVOS();
~CAESinkDARWINTVOS() override = default;
static void Register();
static void EnumerateDevicesEx(AEDeviceInfoList& list, bool force);
static IAESink* Create(std::string& device, AEAudioFormat& desiredFormat);
bool Initialize(AEAudioFormat& format, std::string& device) override;
void Deinitialize() override;
void GetDelay(AEDelayStatus& status) override;
double GetCacheTotal() override;
unsigned int AddPackets(uint8_t** data, unsigned int frames, unsigned int offset) override;
void Drain() override;
bool HasVolume() override;
private:
static AEDeviceInfoList m_devices;
CAEDeviceInfo m_info;
AEAudioFormat m_format;
CAAudioUnitSink* m_audioSink = nullptr;
#if DO_440HZ_TONE_TEST
SineWaveGenerator m_SineWaveGenerator;
#endif
};
|