Add DirectShow in about:support

This commit is contained in:
wuggy 2026-09-09 05:34:07 -07:00
commit 77cfca739d
5 changed files with 23 additions and 2 deletions

View file

@ -12,6 +12,7 @@
#include "SourceFilter.h" #include "SourceFilter.h"
#include "SampleSink.h" #include "SampleSink.h"
#include "VideoUtils.h" #include "VideoUtils.h"
#include "mozilla/Preferences.h"
using namespace mozilla::media; using namespace mozilla::media;
@ -35,16 +36,22 @@ DirectShowReader::DirectShowReader(AbstractMediaDecoder* aDecoder)
mAudioRate(0), mAudioRate(0),
mBytesPerSample(0), mBytesPerSample(0),
mIsH264(aDecoder->GetResource()->GetContentType().EqualsLiteral("video/h264") || 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_ASSERT(NS_IsMainThread(), "Must be on main thread.");
MOZ_COUNT_CTOR(DirectShowReader); MOZ_COUNT_CTOR(DirectShowReader);
if (mIsH264) {
Preferences::SetBool("media.directshow.h264.active", true);
}
} }
DirectShowReader::~DirectShowReader() DirectShowReader::~DirectShowReader()
{ {
MOZ_ASSERT(NS_IsMainThread(), "Must be on main thread."); MOZ_ASSERT(NS_IsMainThread(), "Must be on main thread.");
MOZ_COUNT_DTOR(DirectShowReader); MOZ_COUNT_DTOR(DirectShowReader);
if (mIsH264) {
Preferences::SetBool("media.directshow.h264.active", false);
}
#ifdef DIRECTSHOW_REGISTER_GRAPH #ifdef DIRECTSHOW_REGISTER_GRAPH
if (mRotRegister) { if (mRotRegister) {
RemoveGraphFromRunningObjectTable(mRotRegister); RemoveGraphFromRunningObjectTable(mRotRegister);

View file

@ -394,6 +394,7 @@ pref("media.hardware-video-decoding.force-enabled", false);
#ifdef MOZ_DIRECTSHOW #ifdef MOZ_DIRECTSHOW
pref("media.directshow.enabled", true); pref("media.directshow.enabled", true);
pref("media.directshow.h264.active", false);
#endif #endif
#ifdef MOZ_FMP4 #ifdef MOZ_FMP4

View file

@ -337,6 +337,16 @@ var snapshotFormatters = {
addRowFromKey("features", "webgl2Extensions"); addRowFromKey("features", "webgl2Extensions");
addRowFromKey("features", "supportsHardwareH264", "hardwareH264"); addRowFromKey("features", "supportsHardwareH264", "hardwareH264");
addRowFromKey("features", "currentAudioBackend", "audioBackend"); 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"); addRowFromKey("features", "direct2DEnabled", "#Direct2D");
if ("directWriteEnabled" in data) { if ("directWriteEnabled" in data) {

View file

@ -60,6 +60,8 @@ clearTypeParameters = ClearType Parameters
compositing = Compositing compositing = Compositing
hardwareH264 = Hardware H264 Decoding hardwareH264 = Hardware H264 Decoding
audioBackend = Audio Backend audioBackend = Audio Backend
directShowEnabled = DirectShow H264 Backend Enabled
directShowH264Active = DirectShow H264 Decoding Active
mainThreadNoOMTC = main thread, no OMTC mainThreadNoOMTC = main thread, no OMTC
yes = Yes yes = Yes
no = No no = No

View file

@ -358,6 +358,8 @@ var dataProviders = {
} catch (e) {} } catch (e) {}
data.currentAudioBackend = winUtils.currentAudioBackend; 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) { if (!data.numAcceleratedWindows && gfxInfo) {
#ifdef XP_WIN #ifdef XP_WIN
@ -551,4 +553,3 @@ var dataProviders = {
}); });
} }
}; };