diff options
author | Jeremy Andrews <athenian200@outlook.com> | 2021-08-24 14:35:49 -0500 |
---|---|---|
committer | Jeremy Andrews <athenian200@outlook.com> | 2021-08-24 14:35:49 -0500 |
commit | 893fc903790e1ca5bba598113c49d94a165e333b (patch) | |
tree | 3d5c4f557b0ddf422d75b3616015cde10b390cd5 /toolkit/content | |
parent | 41b1b3947c99d5f9478e0d3bd60a95b781c69431 (diff) | |
download | uxp-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.js | 106 | ||||
-rw-r--r-- | toolkit/content/aboutSupport.xhtml | 85 |
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> |