summaryrefslogtreecommitdiff
path: root/toolkit/content
diff options
context:
space:
mode:
authorJeremy Andrews <athenian200@outlook.com>2021-08-24 14:35:49 -0500
committerJeremy Andrews <athenian200@outlook.com>2021-08-24 14:35:49 -0500
commit893fc903790e1ca5bba598113c49d94a165e333b (patch)
tree3d5c4f557b0ddf422d75b3616015cde10b390cd5 /toolkit/content
parent41b1b3947c99d5f9478e0d3bd60a95b781c69431 (diff)
downloaduxp-893fc903790e1ca5bba598113c49d94a165e333b.tar.gz
Issue #1806 - Part 4: Add more audio troubleshooting information.
This should help us troubleshoot audio issues better in the future in general, since we'll know more about the hardware involved, etc.
Diffstat (limited to 'toolkit/content')
-rw-r--r--toolkit/content/aboutSupport.js106
-rw-r--r--toolkit/content/aboutSupport.xhtml85
2 files changed, 190 insertions, 1 deletions
diff --git a/toolkit/content/aboutSupport.js b/toolkit/content/aboutSupport.js
index f9a0abcb0e..86f1fa35b7 100644
--- a/toolkit/content/aboutSupport.js
+++ b/toolkit/content/aboutSupport.js
@@ -310,7 +310,6 @@ var snapshotFormatters = {
addRowFromKey("features", "webgl2DriverExtensions");
addRowFromKey("features", "webgl2Extensions");
addRowFromKey("features", "supportsHardwareH264", "hardwareH264");
- addRowFromKey("features", "currentAudioBackend", "audioBackend");
addRowFromKey("features", "direct2DEnabled", "#Direct2D");
if ("directWriteEnabled" in data) {
@@ -462,6 +461,111 @@ var snapshotFormatters = {
}
},
+ media: function media(data) {
+ let strings = stringBundle();
+
+ function insertBasicInfo(key, value) {
+ function createRow(key, value) {
+ let th = $.new("th", strings.GetStringFromName(key), "column");
+ let td = $.new("td", value);
+ td.style["white-space"] = "pre-wrap";
+ return $.new("tr", [th, td]);
+ }
+ $.append($("media-info-tbody"), [createRow(key, value)]);
+ }
+
+ function createDeviceInfoRow(device) {
+ let deviceInfo = Ci.nsIAudioDeviceInfo;
+
+ let states = {};
+ states[deviceInfo.STATE_DISABLED] = "Disabled";
+ states[deviceInfo.STATE_UNPLUGGED] = "Unplugged";
+ states[deviceInfo.STATE_ENABLED] = "Enabled";
+
+ let preferreds = {};
+ preferreds[deviceInfo.PREF_NONE] = "None";
+ preferreds[deviceInfo.PREF_MULTIMEDIA] = "Multimedia";
+ preferreds[deviceInfo.PREF_VOICE] = "Voice";
+ preferreds[deviceInfo.PREF_NOTIFICATION] = "Notification";
+ preferreds[deviceInfo.PREF_ALL] = "All";
+
+ let formats = {};
+ formats[deviceInfo.FMT_S16LE] = "S16LE";
+ formats[deviceInfo.FMT_S16BE] = "S16BE";
+ formats[deviceInfo.FMT_F32LE] = "F32LE";
+ formats[deviceInfo.FMT_F32BE] = "F32BE";
+
+ function toPreferredString(preferred) {
+ if (preferred == deviceInfo.PREF_NONE) {
+ return preferreds[deviceInfo.PREF_NONE];
+ } else if (preferred & deviceInfo.PREF_ALL) {
+ return preferreds[deviceInfo.PREF_ALL];
+ }
+ let str = "";
+ for (let pref of [deviceInfo.PREF_MULTIMEDIA,
+ deviceInfo.PREF_VOICE,
+ deviceInfo.PREF_NOTIFICATION]) {
+ if (preferred & pref) {
+ str += " " + preferreds[pref];
+ }
+ }
+ return str;
+ }
+
+ function toFromatString(dev) {
+ let str = "default: " + formats[dev.defaultFormat] + ", support:";
+ for (let fmt of [deviceInfo.FMT_S16LE,
+ deviceInfo.FMT_S16BE,
+ deviceInfo.FMT_F32LE,
+ deviceInfo.FMT_F32BE]) {
+ if (dev.supportedFormat & fmt) {
+ str += " " + formats[fmt];
+ }
+ }
+ return str;
+ }
+
+ function toRateString(dev) {
+ return "default: " + dev.defaultRate +
+ ", support: " + dev.minRate + " - " + dev.maxRate;
+ }
+
+ function toLatencyString(dev) {
+ return dev.minLatency + " - " + dev.maxLatency;
+ }
+
+ return $.new("tr", [$.new("td", device.name),
+ $.new("td", device.groupId),
+ $.new("td", device.vendor),
+ $.new("td", states[device.state]),
+ $.new("td", toPreferredString(device.preferred)),
+ $.new("td", toFromatString(device)),
+ $.new("td", device.maxChannels),
+ $.new("td", toRateString(device)),
+ $.new("td", toLatencyString(device))]);
+ }
+
+ function insertDeviceInfo(side, devices) {
+ let rows = [];
+ for (let dev of devices) {
+ rows.push(createDeviceInfoRow(dev));
+ }
+ $.append($("media-" + side + "-devices-tbody"), rows);
+ }
+
+ // Basic information
+ insertBasicInfo("audioBackend", data.currentAudioBackend);
+ insertBasicInfo("maxAudioChannels", data.currentMaxAudioChannels);
+ insertBasicInfo("sampleRate", data.currentPreferredSampleRate);
+
+ // Output devices information
+ insertDeviceInfo("output", data.audioOutputDevices);
+
+ // Input devices information
+ insertDeviceInfo("input", data.audioInputDevices);
+ },
+
+
javaScript: function javaScript(data) {
$("javascript-incremental-gc").textContent = data.incrementalGCEnabled;
},
diff --git a/toolkit/content/aboutSupport.xhtml b/toolkit/content/aboutSupport.xhtml
index 4ae9927399..7772f6497a 100644
--- a/toolkit/content/aboutSupport.xhtml
+++ b/toolkit/content/aboutSupport.xhtml
@@ -346,6 +346,91 @@
<!-- - - - - - - - - - - - - - - - - - - - - -->
<h2 class="major-section">
+ &aboutSupport.mediaTitle;
+ </h2>
+ <table>
+ <tbody id="media-info-tbody">
+ </tbody>
+
+ <tbody id="media-output-devices-tbody">
+ <tr>
+ <th colspan="10" class="title-column">
+ &aboutSupport.mediaOutputDevicesTitle;
+ </th>
+ </tr>
+ <tr>
+ <th>
+ &aboutSupport.mediaDeviceName;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceGroup;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceVendor;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceState;
+ </th>
+ <th>
+ &aboutSupport.mediaDevicePreferred;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceFormat;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceChannels;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceRate;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceLatency;
+ </th>
+ </tr>
+ </tbody>
+
+ <tbody id="media-input-devices-tbody">
+ <tr>
+ <th colspan="10" class="title-column">
+ &aboutSupport.mediaInputDevicesTitle;
+ </th>
+ </tr>
+ <tr>
+ <th>
+ &aboutSupport.mediaDeviceName;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceGroup;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceVendor;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceState;
+ </th>
+ <th>
+ &aboutSupport.mediaDevicePreferred;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceFormat;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceChannels;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceRate;
+ </th>
+ <th>
+ &aboutSupport.mediaDeviceLatency;
+ </th>
+ </tr>
+ </tbody>
+
+ </table>
+
+ <!-- - - - - - - - - - - - - - - - - - - - - -->
+
+ <h2 class="major-section">
&aboutSupport.modifiedKeyPrefsTitle;
</h2>