Bug 1364872 - take zero tolerance of decoding error in debug and playback test. r?jya
MozReview-Commit-ID: 9DYBfyIvGvk
--- a/dom/media/MediaFormatReader.cpp
+++ b/dom/media/MediaFormatReader.cpp
@@ -1093,19 +1093,19 @@ MediaFormatReader::DemuxerProxy::NotifyD
});
}
MediaFormatReader::MediaFormatReader(AbstractMediaDecoder* aDecoder,
MediaDataDemuxer* aDemuxer,
VideoFrameContainer* aVideoFrameContainer)
: MediaDecoderReader(aDecoder)
, mAudio(this, MediaData::AUDIO_DATA,
- Preferences::GetUint("media.audio-max-decode-error", 3))
+ MediaPrefs::MaxAudioDecodeError())
, mVideo(this, MediaData::VIDEO_DATA,
- Preferences::GetUint("media.video-max-decode-error", 2))
+ MediaPrefs::MaxVideoDecodeError())
, mDemuxer(new DemuxerProxy(aDemuxer))
, mDemuxerInitDone(false)
, mPendingNotifyDataArrived(false)
, mLastReportedNumDecodedFrames(0)
, mPreviousDecodedKeyframeTime_us(sNoPreviousDecodedKeyframe)
, mInitDone(false)
, mTrackDemuxersMayBlock(false)
, mSeekScheduled(false)
--- a/dom/media/MediaPrefs.h
+++ b/dom/media/MediaPrefs.h
@@ -160,16 +160,25 @@ private:
DECL_MEDIA_PREF("media.webspeech.test.fake_fsm_events", WebSpeechFakeFSMEvents, bool, false);
DECL_MEDIA_PREF(TEST_PREFERENCE_FAKE_RECOGNITION_SERVICE, WebSpeechFakeRecognitionService, bool, false);
DECL_MEDIA_PREF("media.webspeech.recognition.enable", WebSpeechRecognitionEnabled, bool, false);
DECL_MEDIA_PREF("media.webspeech.recognition.force_enable", WebSpeechRecognitionForceEnabled, bool, false);
DECL_MEDIA_PREF("media.num-decode-threads", MediaThreadPoolDefaultCount, uint32_t, 4);
DECL_MEDIA_PREF("media.decoder.limit", MediaDecoderLimit, int32_t, MediaDecoderLimitDefault());
+#if defined(RELEASE_OR_BETA)
+ DECL_MEDIA_PREF("media.audio-max-decode-error", MaxAudioDecodeError, uint32_t, 3);
+ DECL_MEDIA_PREF("media.video-max-decode-error", MaxVideoDecodeError, uint32_t, 2);
+#else
+ // Take zero tolerance of decoding error in debug for any decoder regression.
+ DECL_MEDIA_PREF("media.audio-max-decode-error", MaxAudioDecodeError, uint32_t, 0);
+ DECL_MEDIA_PREF("media.video-max-decode-error", MaxVideoDecodeError, uint32_t, 0);
+#endif
+
// Ogg
DECL_MEDIA_PREF("media.ogg.enabled", OggEnabled, bool, true);
// Flac
DECL_MEDIA_PREF("media.ogg.flac.enabled", FlacInOgg, bool, false);
DECL_MEDIA_PREF("media.flac.enabled", FlacEnabled, bool, true);
#if !defined(RELEASE_OR_BETA)
DECL_MEDIA_PREF("media.rust.test_mode", RustTestMode, bool, false);
--- a/dom/media/mediasource/test/mediasource.js
+++ b/dom/media/mediasource/test/mediasource.js
@@ -1,12 +1,14 @@
// Helpers for Media Source Extensions tests
var gMSETestPrefs = [
- [ "media.mediasource.enabled", true ]
+ [ "media.mediasource.enabled", true ],
+ ['media.audio-max-decode-error', 0],
+ ['media.video-max-decode-error', 0],
];
// Called before runWithMSE() to set the prefs before running MSE tests.
function addMSEPrefs(...prefs) {
gMSETestPrefs = gMSETestPrefs.concat(prefs);
}
function runWithMSE(testFunction) {
--- a/dom/media/test/manifest.js
+++ b/dom/media/test/manifest.js
@@ -1588,16 +1588,18 @@ function Log(token, msg) {
// Number of tests to run in parallel.
var PARALLEL_TESTS = 2;
// Prefs to set before running tests. Use this to improve coverage of
// conditions that might not otherwise be encountered on the test data.
var gTestPrefs = [
['media.recorder.max_memory', 1024],
+ ['media.audio-max-decode-error', 0],
+ ['media.video-max-decode-error', 0],
];
// When true, we'll loop forever on whatever test we run. Use this to debug
// intermittent test failures.
const DEBUG_TEST_LOOP_FOREVER = false;
// Manages a run of media tests. Runs them in chunks in order to limit
// the number of media elements/threads running in parallel. This limits peak