commit b62008043969b426a001987caf80da71088fa220
parent 371c2babef9b736604032073be5861b706d14bcf
Author: Chun-Min Chang <chun.m.chang@gmail.com>
Date: Tue, 30 Sep 2025 23:39:49 +0000
Bug 1986544 - Validate EncoderConfig against PEM before encoder creation r=media-playback-reviewers,padenot
This patch adds a check to verify whether the given EncoderConfig is supported
by the current PlatformEncoderModule before creating an encoder.
Some Windows hardware encoders may reject configurations with resolutions
greater than 4K. By checking support in advance, we can provide clearer
diagnostics when issues occur. Although all current test configurations are
below or equal to 4K, adding this safeguard prevents the mentioned errors in the
future and makes failures easier to be diagnosed.
Differential Revision: https://phabricator.services.mozilla.com/D265503
Diffstat:
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/dom/media/gtest/TestMediaDataEncoder.cpp b/dom/media/gtest/TestMediaDataEncoder.cpp
@@ -210,19 +210,19 @@ already_AddRefed<MediaDataEncoder> CreateVideoEncoder(
return nullptr;
}
+ const EncoderConfig config(
+ aCodec, aSize, aUsage, aFormat, FRAME_RATE /* FPS */,
+ KEYFRAME_INTERVAL /* keyframe interval */, BIT_RATE /* bitrate */, 0, 0,
+ BIT_RATE_MODE, HardwarePreference::None /* hardware preference */,
+ aScalabilityMode, aSpecific);
+ if (f->Supports(config).isEmpty()) {
+ return nullptr;
+ }
+
const RefPtr<TaskQueue> taskQueue(
TaskQueue::Create(GetMediaThreadPool(MediaThreadType::PLATFORM_ENCODER),
"TestMediaDataEncoder"));
-
- RefPtr<MediaDataEncoder> e;
- const HardwarePreference pref = HardwarePreference::None;
- e = f->CreateEncoder(
- EncoderConfig(aCodec, aSize, aUsage, aFormat, FRAME_RATE /* FPS */,
- KEYFRAME_INTERVAL /* keyframe interval */,
- BIT_RATE /* bitrate */, 0, 0, BIT_RATE_MODE, pref,
- aScalabilityMode, aSpecific),
- taskQueue);
-
+ RefPtr<MediaDataEncoder> e = f->CreateEncoder(config, taskQueue);
return e.forget();
}