| 73 | } |
| 74 | |
| 75 | QJsonObject deviceToJson(const QAudioDevice& device, |
| 76 | const QAudioDevice& selected, |
| 77 | const QAudioDevice& defaultDevice, |
| 78 | const QString& direction) |
| 79 | { |
| 80 | QJsonObject obj; |
| 81 | obj["direction"] = direction; |
| 82 | obj["available"] = !device.isNull(); |
| 83 | if (device.isNull()) { |
| 84 | obj["description"] = "Unavailable"; |
| 85 | obj["bus_type"] = "Unknown"; |
| 86 | obj["bus_type_source"] = "no device"; |
| 87 | return obj; |
| 88 | } |
| 89 | |
| 90 | const AudioBusType bus = inferAudioBusType(device.description(), device.id()); |
| 91 | obj["description"] = device.description(); |
| 92 | obj["id_available"] = !device.id().isEmpty(); |
| 93 | obj["id_fingerprint"] = idFingerprint(device.id()); |
| 94 | obj["bus_type"] = bus.type; |
| 95 | obj["bus_type_source"] = bus.source; |
| 96 | obj["selected"] = sameDevice(device, selected); |
| 97 | obj["default"] = sameDevice(device, defaultDevice); |
| 98 | obj["minimum_sample_rate"] = device.minimumSampleRate(); |
| 99 | obj["maximum_sample_rate"] = device.maximumSampleRate(); |
| 100 | obj["minimum_channel_count"] = device.minimumChannelCount(); |
| 101 | obj["maximum_channel_count"] = device.maximumChannelCount(); |
| 102 | obj["preferred_format"] = formatToJson(device.preferredFormat()); |
| 103 | |
| 104 | if (direction == QStringLiteral("output")) { |
| 105 | obj["supports_24k_float_stereo"] = supportsFormat(device, 24000, 2, QAudioFormat::Float); |
| 106 | obj["supports_48k_float_stereo"] = supportsFormat(device, 48000, 2, QAudioFormat::Float); |
| 107 | } else { |
| 108 | obj["supports_24k_int16_stereo"] = supportsFormat(device, 24000, 2, QAudioFormat::Int16); |
| 109 | obj["supports_48k_int16_stereo"] = supportsFormat(device, 48000, 2, QAudioFormat::Int16); |
| 110 | obj["supports_24k_int16_mono"] = supportsFormat(device, 24000, 1, QAudioFormat::Int16); |
| 111 | obj["supports_48k_int16_mono"] = supportsFormat(device, 48000, 1, QAudioFormat::Int16); |
| 112 | } |
| 113 | |
| 114 | return obj; |
| 115 | } |
| 116 | |
| 117 | QJsonObject basicDeviceToJson(const QAudioDevice& device, |
| 118 | const QAudioDevice& selected, |
no test coverage detected