diff options
Diffstat (limited to 'src/voip/CallDevices.h')
-rw-r--r-- | src/voip/CallDevices.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/voip/CallDevices.h b/src/voip/CallDevices.h new file mode 100644 index 00000000..d30ce644 --- /dev/null +++ b/src/voip/CallDevices.h @@ -0,0 +1,47 @@ +// SPDX-FileCopyrightText: 2021 Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include <string> +#include <utility> +#include <vector> + +#include <QObject> + +typedef struct _GstDevice GstDevice; + +class CallDevices : public QObject +{ + Q_OBJECT + +public: + static CallDevices &instance() + { + static CallDevices instance; + return instance; + } + + bool haveMic() const; + bool haveCamera() const; + std::vector<std::string> names(bool isVideo, const std::string &defaultDevice) const; + std::vector<std::string> resolutions(const std::string &cameraName) const; + std::vector<std::string> frameRates(const std::string &cameraName, + const std::string &resolution) const; + +signals: + void devicesChanged(); + +private: + CallDevices(); + + friend class WebRTCSession; + void init(); + GstDevice *audioDevice() const; + GstDevice *videoDevice(std::pair<int, int> &resolution, std::pair<int, int> &frameRate) const; + +public: + CallDevices(CallDevices const &) = delete; + void operator=(CallDevices const &) = delete; +}; |