From 77cfca739d79e679522ccb87ba2efcba077081c7 Mon Sep 17 00:00:00 2001 From: wuggy Date: Wed, 9 Sep 2026 05:34:07 -0700 Subject: [PATCH] Add DirectShow in about:support --- dom/media/directshow/DirectShowReader.cpp | 9 ++++++++- modules/libpref/init/all.js | 1 + toolkit/content/aboutSupport.js | 10 ++++++++++ .../en-US/chrome/global/aboutSupport.properties | 2 ++ toolkit/modules/Troubleshoot.jsm | 3 ++- 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/dom/media/directshow/DirectShowReader.cpp b/dom/media/directshow/DirectShowReader.cpp index 1e3a2cceed..cc7278146e 100644 --- a/dom/media/directshow/DirectShowReader.cpp +++ b/dom/media/directshow/DirectShowReader.cpp @@ -12,6 +12,7 @@ #include "SourceFilter.h" #include "SampleSink.h" #include "VideoUtils.h" +#include "mozilla/Preferences.h" using namespace mozilla::media; @@ -35,16 +36,22 @@ DirectShowReader::DirectShowReader(AbstractMediaDecoder* aDecoder) mAudioRate(0), mBytesPerSample(0), mIsH264(aDecoder->GetResource()->GetContentType().EqualsLiteral("video/h264") || - aDecoder->GetResource()->GetContentType().EqualsLiteral("video/avc")) + aDecoder->GetResource()->GetContentType().EqualsLiteral("video/avc")) { MOZ_ASSERT(NS_IsMainThread(), "Must be on main thread."); MOZ_COUNT_CTOR(DirectShowReader); + if (mIsH264) { + Preferences::SetBool("media.directshow.h264.active", true); + } } DirectShowReader::~DirectShowReader() { MOZ_ASSERT(NS_IsMainThread(), "Must be on main thread."); MOZ_COUNT_DTOR(DirectShowReader); + if (mIsH264) { + Preferences::SetBool("media.directshow.h264.active", false); + } #ifdef DIRECTSHOW_REGISTER_GRAPH if (mRotRegister) { RemoveGraphFromRunningObjectTable(mRotRegister); diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index 5ed5c3b0e9..5e124ff937 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -394,6 +394,7 @@ pref("media.hardware-video-decoding.force-enabled", false); #ifdef MOZ_DIRECTSHOW pref("media.directshow.enabled", true); +pref("media.directshow.h264.active", false); #endif #ifdef MOZ_FMP4 diff --git a/toolkit/content/aboutSupport.js b/toolkit/content/aboutSupport.js index 9684e80ba7..a1825c7cad 100644 --- a/toolkit/content/aboutSupport.js +++ b/toolkit/content/aboutSupport.js @@ -337,6 +337,16 @@ var snapshotFormatters = { addRowFromKey("features", "webgl2Extensions"); addRowFromKey("features", "supportsHardwareH264", "hardwareH264"); addRowFromKey("features", "currentAudioBackend", "audioBackend"); + if ("directShowEnabled" in data) { + addRow("features", "directShowEnabled", + strings.GetStringFromName(data.directShowEnabled ? "yes" : "no")); + delete data.directShowEnabled; + } + if ("directShowH264Active" in data) { + addRow("features", "directShowH264Active", + strings.GetStringFromName(data.directShowH264Active ? "yes" : "no")); + delete data.directShowH264Active; + } addRowFromKey("features", "direct2DEnabled", "#Direct2D"); if ("directWriteEnabled" in data) { diff --git a/toolkit/locales/en-US/chrome/global/aboutSupport.properties b/toolkit/locales/en-US/chrome/global/aboutSupport.properties index b452514158..629651d81f 100644 --- a/toolkit/locales/en-US/chrome/global/aboutSupport.properties +++ b/toolkit/locales/en-US/chrome/global/aboutSupport.properties @@ -60,6 +60,8 @@ clearTypeParameters = ClearType Parameters compositing = Compositing hardwareH264 = Hardware H264 Decoding audioBackend = Audio Backend +directShowEnabled = DirectShow H264 Backend Enabled +directShowH264Active = DirectShow H264 Decoding Active mainThreadNoOMTC = main thread, no OMTC yes = Yes no = No diff --git a/toolkit/modules/Troubleshoot.jsm b/toolkit/modules/Troubleshoot.jsm index c25cbce433..1cf7333ed5 100644 --- a/toolkit/modules/Troubleshoot.jsm +++ b/toolkit/modules/Troubleshoot.jsm @@ -358,6 +358,8 @@ var dataProviders = { } catch (e) {} data.currentAudioBackend = winUtils.currentAudioBackend; + data.directShowEnabled = Services.prefs.getBoolPref("media.directshow.enabled", false); + data.directShowH264Active = Services.prefs.getBoolPref("media.directshow.h264.active", false); if (!data.numAcceleratedWindows && gfxInfo) { #ifdef XP_WIN @@ -551,4 +553,3 @@ var dataProviders = { }); } }; -