source: smplayer/vendor/current/src/deviceinfo.h

Last change on this file was 186, checked in by Silvan Scherrer, 8 years ago

SMPlayer: update vendor to 17.1.0

File size: 3.2 KB
Line 
1/* smplayer, GUI front-end for mplayer.
2 Copyright (C) 2006-2017 Ricardo Villalba <rvm@users.sourceforge.net>
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17*/
18
19#ifndef DEVICEINFO_H
20#define DEVICEINFO_H
21
22#include <QString>
23#include <QVariant>
24#include <QList>
25
26#ifdef Q_OS_WIN
27#define USE_DSOUND_DEVICES 1
28#define USE_MPV_WASAPI_DEVICES 1
29#else
30#define USE_ALSA_DEVICES 0
31#define USE_MPV_ALSA_DEVICES 0
32#define USE_PULSEAUDIO_DEVICES 1
33#define USE_XV_ADAPTORS 1
34#endif
35
36#if defined(USE_MPV_ALSA_DEVICES) || defined(USE_MPV_WASAPI_DEVICES)
37#define MPV_AUDIO_DEVICES 1
38#endif
39
40#ifndef Q_OS_WIN
41#define CACHE_DEVICE_INFO
42#endif
43
44class QSettings;
45
46class DeviceData {
47
48public:
49 DeviceData() {};
50 DeviceData(QVariant ID, QString desc) { _id = ID; _desc = desc; };
51 ~DeviceData() {};
52
53 void setID(QVariant ID) { _id = ID; };
54 void setDesc(QString desc) { _desc = desc; };
55
56 QVariant ID() const { return _id; };
57 QString desc() const { return _desc; };
58
59private:
60 QVariant _id;
61 QString _desc;
62};
63
64
65typedef QList<DeviceData> DeviceList;
66
67
68class DeviceInfo {
69
70public:
71#ifdef Q_OS_WIN
72 static DeviceList dsoundDevices();
73 static DeviceList displayDevices();
74#else
75 #if USE_PULSEAUDIO_DEVICES
76 static DeviceList paDevices();
77 #endif
78 #if USE_ALSA_DEVICES
79 static DeviceList alsaDevices();
80 #endif
81 #if USE_XV_ADAPTORS
82 static DeviceList xvAdaptors();
83 #endif
84#endif
85
86#if MPV_AUDIO_DEVICES
87 static void setMpvBin(const QString & bin) { mpv_bin = bin; };
88
89 #if USE_MPV_ALSA_DEVICES
90 static DeviceList mpvAlsaDevices();
91 #endif
92
93 #if USE_MPV_WASAPI_DEVICES
94 static DeviceList mpvWasapiDevices();
95 #endif
96
97 static DeviceList mpvAudioDevices(const QString & mpv_bin, const QString & filter);
98 static DeviceList mpvAudioDevices(const QString & filter);
99#endif
100
101 static QString printableName(const QString & driver_name, const DeviceData & device);
102 static QString internalName(const QString & driver_name, const DeviceData & device);
103
104 static QString printableName(const QString & driver_name, const QString & id, const QString & desc);
105 static QString internalName(const QString & driver_name, const QString & id, const QString & desc);
106 static QStringList extractDevice(const QString & internal_name);
107
108protected:
109#ifdef CACHE_DEVICE_INFO
110 static void saveList(QSettings * set, const QString & section_name, const DeviceList & list);
111 static DeviceList loadList(QSettings * set, const QString & section_name);
112#endif
113
114#ifdef Q_OS_WIN
115 enum DeviceType { Sound = 0, Display = 1 };
116
117 static DeviceList retrieveDevices(DeviceType type);
118#endif
119
120#if MPV_AUDIO_DEVICES
121 static QString mpv_bin;
122#endif
123};
124
125#endif
126
Note: See TracBrowser for help on using the repository browser.