2 * Copyright (C) 2010-2021 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
11 #include "cores/AudioEngine/Interfaces/AESink.h"
12 #include "cores/AudioEngine/Utils/AEDeviceInfo.h"
20 class CPipewireStream
;
29 class CAESinkPipewire
: public IAESink
32 CAESinkPipewire() = default;
33 ~CAESinkPipewire() override
= default;
35 static bool Register();
36 static std::unique_ptr
<IAESink
> Create(std::string
& device
, AEAudioFormat
& desiredFormat
);
37 static void EnumerateDevicesEx(AEDeviceInfoList
& list
, bool force
= false);
38 static void Destroy();
40 // overrides via IAESink
41 const char* GetName() override
{ return "PIPEWIRE"; }
43 bool Initialize(AEAudioFormat
& format
, std::string
& device
) override
;
44 void Deinitialize() override
;
46 double GetCacheTotal() override
;
47 void GetDelay(AEDelayStatus
& status
) override
;
49 unsigned int AddPackets(uint8_t** data
, unsigned int frames
, unsigned int offset
) override
;
50 void Drain() override
;
53 AEAudioFormat m_format
;
54 std::chrono::duration
<double, std::ratio
<1>> m_latency
;
56 std::unique_ptr
<KODI::PIPEWIRE::CPipewireStream
> m_stream
;