16 spec.rate =
format.sampleRate();
17 spec.channels =
format.channelCount();
18 spec.format = PA_SAMPLE_INVALID;
22 spec.format = PA_SAMPLE_U8;
24 spec.format = isBigEndian ? PA_SAMPLE_S16BE : PA_SAMPLE_S16LE;
26 spec.format = isBigEndian ? PA_SAMPLE_S32BE : PA_SAMPLE_S32LE;
28 spec.format = isBigEndian ? PA_SAMPLE_FLOAT32BE : PA_SAMPLE_FLOAT32LE;
45 map.map[0] = PA_CHANNEL_POSITION_MONO;
48 map.map[
map.channels++] = PA_CHANNEL_POSITION_FRONT_LEFT;
50 map.map[
map.channels++] = PA_CHANNEL_POSITION_FRONT_RIGHT;
52 map.map[
map.channels++] = PA_CHANNEL_POSITION_FRONT_CENTER;
54 map.map[
map.channels++] = PA_CHANNEL_POSITION_LFE;
56 map.map[
map.channels++] = PA_CHANNEL_POSITION_REAR_LEFT;
58 map.map[
map.channels++] = PA_CHANNEL_POSITION_REAR_RIGHT;
60 map.map[
map.channels++] = PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER;
62 map.map[
map.channels++] = PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER;
64 map.map[
map.channels++] = PA_CHANNEL_POSITION_REAR_CENTER;
66 map.map[
map.channels++] = PA_CHANNEL_POSITION_LFE;
68 map.map[
map.channels++] = PA_CHANNEL_POSITION_SIDE_LEFT;
70 map.map[
map.channels++] = PA_CHANNEL_POSITION_SIDE_RIGHT;
72 map.map[
map.channels++] = PA_CHANNEL_POSITION_TOP_FRONT_LEFT;
74 map.map[
map.channels++] = PA_CHANNEL_POSITION_TOP_FRONT_RIGHT;
76 map.map[
map.channels++] = PA_CHANNEL_POSITION_TOP_FRONT_CENTER;
78 map.map[
map.channels++] = PA_CHANNEL_POSITION_TOP_CENTER;
80 map.map[
map.channels++] = PA_CHANNEL_POSITION_TOP_REAR_LEFT;
82 map.map[
map.channels++] = PA_CHANNEL_POSITION_TOP_REAR_RIGHT;
84 map.map[
map.channels++] = PA_CHANNEL_POSITION_AUX0;
86 map.map[
map.channels++] = PA_CHANNEL_POSITION_AUX1;
88 map.map[
map.channels++] = PA_CHANNEL_POSITION_TOP_REAR_CENTER;
90 map.map[
map.channels++] = PA_CHANNEL_POSITION_AUX2;
92 map.map[
map.channels++] = PA_CHANNEL_POSITION_AUX3;
94 map.map[
map.channels++] = PA_CHANNEL_POSITION_AUX4;
104 for (
int i = 0;
i <
map.channels; ++
i) {
105 switch (
map.map[
i]) {
106 case PA_CHANNEL_POSITION_MONO:
107 case PA_CHANNEL_POSITION_FRONT_CENTER:
110 case PA_CHANNEL_POSITION_FRONT_LEFT:
113 case PA_CHANNEL_POSITION_FRONT_RIGHT:
116 case PA_CHANNEL_POSITION_REAR_CENTER:
119 case PA_CHANNEL_POSITION_REAR_LEFT:
122 case PA_CHANNEL_POSITION_REAR_RIGHT:
125 case PA_CHANNEL_POSITION_LFE:
128 case PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER:
131 case PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER:
134 case PA_CHANNEL_POSITION_SIDE_LEFT:
137 case PA_CHANNEL_POSITION_SIDE_RIGHT:
141 case PA_CHANNEL_POSITION_TOP_CENTER:
144 case PA_CHANNEL_POSITION_TOP_FRONT_LEFT:
147 case PA_CHANNEL_POSITION_TOP_FRONT_RIGHT:
150 case PA_CHANNEL_POSITION_TOP_FRONT_CENTER:
153 case PA_CHANNEL_POSITION_TOP_REAR_LEFT:
156 case PA_CHANNEL_POSITION_TOP_REAR_RIGHT:
159 case PA_CHANNEL_POSITION_TOP_REAR_CENTER:
173 format.setSampleRate(spec.rate);
174 format.setChannelCount(spec.channels);
176 switch (spec.format) {
180 case PA_SAMPLE_S16LE:
181 case PA_SAMPLE_S16BE:
184 case PA_SAMPLE_FLOAT32LE:
185 case PA_SAMPLE_FLOAT32BE:
188 case PA_SAMPLE_S32LE:
189 case PA_SAMPLE_S32BE:
196 format.setSampleFormat(sampleFormat);
QMap< QString, QString > map
[6]
pa_channel_map channelMapForAudioFormat(const QAudioFormat &format)
QAudioFormat::ChannelConfig channelConfigFromMap(const pa_channel_map &map)
QAudioFormat sampleSpecToAudioFormat(const pa_sample_spec &spec)
pa_sample_spec audioFormatToSampleSpec(const QAudioFormat &format)
Combined button and popup list for selecting options.
Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR uint qPopulationCount(quint32 v) noexcept
#define Q_LOGGING_CATEGORY(name,...)
GLint GLsizei GLsizei GLenum format