Changeset 267018 in webkit


Ignore:
Timestamp:
Sep 14, 2020 10:00:56 AM (4 years ago)
Author:
Chris Dumez
Message:

Some WebAudio tests give different output on different machines
https://bugs.webkit.org/show_bug.cgi?id=216371
<rdar://problem/68653909>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline existing tests.

  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt:

Source/WebCore:

Hardcode default sample rate for AudioContext to 44100 for WPT tests instead
of using the hardware sample rate. This allows some tests to output consistent
results on different machines.

No new tests, unskipped existing test.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::defaultSampleRateForTesting):
(WebCore::AudioContext::setDefaultSampleRateForTesting):
(WebCore::AudioContext::create):

  • Modules/webaudio/AudioContext.h:

(WebCore::AudioContext::create):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setDefaultAudioContextSampleRate):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

LayoutTests:

Unskip test that should now have consistent results across machines.

  • resources/testharnessreport.js:

Hardcode default sample rate for AudioContext to 44100 for WPT tests instead
of using the hardware sample rate.

Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r267015 r267018  
     12020-09-14  Chris Dumez  <cdumez@apple.com>
     2
     3        Some WebAudio tests give different output on different machines
     4        https://bugs.webkit.org/show_bug.cgi?id=216371
     5        <rdar://problem/68653909>
     6
     7        Reviewed by Alex Christensen.
     8
     9        * TestExpectations:
     10        Unskip test that should now have consistent results across machines.
     11
     12        * resources/testharnessreport.js:
     13        Hardcode default sample rate for AudioContext to 44100 for WPT tests instead
     14        of using the hardware sample rate.
     15
    1162020-09-14  Hector Lopez  <hector_i_lopez@apple.com>
    217
  • trunk/LayoutTests/TestExpectations

    r266984 r267018  
    322322
    323323# Test prints out sample rate, which appears to be hardware-specific.
    324 imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html [ Pass Failure ]
    325324imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html [ Pass Failure ]
    326325imported/w3c/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html [ Pass Failure ]
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r266984 r267018  
     12020-09-14  Chris Dumez  <cdumez@apple.com>
     2
     3        Some WebAudio tests give different output on different machines
     4        https://bugs.webkit.org/show_bug.cgi?id=216371
     5        <rdar://problem/68653909>
     6
     7        Reviewed by Alex Christensen.
     8
     9        Rebaseline existing tests.
     10
     11        * web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions-expected.txt:
     12        * web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse-expected.txt:
     13        * web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt:
     14
    1152020-09-12  Darin Adler  <darin@apple.com>
    216
  • trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions-expected.txt

    r266895 r267018  
    77PASS > [test-audiocontextoptions-latencyHint-basic] Test creating contexts with basic latencyHint types.
    88PASS   context = new AudioContext() did not throw an exception.
    9 PASS   context.sampleRate (48000 Hz) is greater than 0.
     9PASS   context.sampleRate (44100 Hz) is greater than 0.
    1010PASS   default baseLatency is greater than or equal to 0.
    1111PASS   context = new AudioContext({'latencyHint': 'interactive'}) did not throw an exception.
    12 PASS   interactive baseLatency is equal to 0.0026666666666666666.
     12PASS   interactive baseLatency is equal to 0.0029024943310657597.
    1313PASS   context = new AudioContext({'latencyHint': 'balanced'}) did not throw an exception.
    14 PASS   balanced baseLatency is greater than or equal to 0.0026666666666666666.
     14PASS   balanced baseLatency is greater than or equal to 0.0029024943310657597.
    1515PASS   context = new AudioContext({'latencyHint': 'playback'}) did not throw an exception.
    16 PASS   playback baseLatency is greater than or equal to 0.0026666666666666666.
     16PASS   playback baseLatency is greater than or equal to 0.0029024943310657597.
    1717PASS < [test-audiocontextoptions-latencyHint-basic] All assertions passed. (total 9 assertions)
    1818PASS > [test-audiocontextoptions-latencyHint-double] Test creating contexts with explicit latencyHint values.
    1919PASS   context = new AudioContext({'latencyHint': interactiveLatency/2}) did not throw an exception.
    20 PASS   double-constructor baseLatency small is less than or equal to 0.0026666666666666666.
     20PASS   double-constructor baseLatency small is less than or equal to 0.0029024943310657597.
    2121PASS   context = new AudioContext({'latencyHint': validLatency}) did not throw an exception.
    22 PASS   double-constructor baseLatency inrange 1 is greater than or equal to 0.0026666666666666666.
    23 PASS   double-constructor baseLatency inrange 2 is less than or equal to 0.0026666666666666666.
     22PASS   double-constructor baseLatency inrange 1 is greater than or equal to 0.0029024943310657597.
     23PASS   double-constructor baseLatency inrange 2 is less than or equal to 0.0029024943310657597.
    2424PASS   creating two high latency contexts did not throw an exception.
    25 PASS   high latency context baseLatency is equal to 0.0026666666666666666.
    26 PASS   high latency context baseLatency is greater than or equal to 0.0026666666666666666.
     25PASS   high latency context baseLatency is equal to 0.0029024943310657597.
     26PASS   high latency context baseLatency is greater than or equal to 0.0029024943310657597.
    2727PASS   context = new AudioContext({'latencyHint': 'foo'}) threw TypeError: "Type error".
    2828PASS   context = new AudioContext('latencyHint') threw TypeError: "Type error".
  • trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse-expected.txt

    r266895 r267018  
    1717PASS   lowpass: Number of non-finite values in expected phase response is equal to 0.
    1818PASS   lowpass: Actual and expected results contained only finite values is true.
    19 PASS   lowpass: Max error (-73.01781972755178 dB) of magnitude response at frequency 23952 Hz is less than or equal to -73.01779999999998.
    20 PASS   lowpass: Max error (0.000008043596428984033 deg) in phase response at frequency 1992 Hz is less than or equal to 0.000460864332091429.
     19PASS   lowpass: Max error (-74.12964393692768 dB) of magnitude response at frequency 22027.94921875 Hz is less than or equal to -73.01779999999998.
     20PASS   lowpass: Max error (0.00000925724159344549 deg) in phase response at frequency 1477.3499755859375 Hz is less than or equal to 0.000460864332091429.
    2121PASS < [lowpass] All assertions passed. (total 7 assertions)
    2222PASS > [highpass] Frequency response
     
    2626PASS   highpass: Number of non-finite values in expected phase response is equal to 0.
    2727PASS   highpass: Actual and expected results contained only finite values is true.
    28 PASS   highpass: Max error (-117.54613270502502 dB) of magnitude response at frequency 408 Hz is less than or equal to -117.5461.
    29 PASS   highpass: Max error (0.000006969012786694054 deg) in phase response at frequency 912 Hz is less than or equal to 0.00039930001700462205.
     28PASS   highpass: Max error (-121.35728191866156 dB) of magnitude response at frequency 418.95001220703125 Hz is less than or equal to -117.5461.
     29PASS   highpass: Max error (0.000006632961778326638 deg) in phase response at frequency 132.3000030517578 Hz is less than or equal to 0.00039930001700462205.
    3030PASS < [highpass] All assertions passed. (total 7 assertions)
    3131PASS > [bandpass] Frequency response
     
    3535PASS   bandpass: Number of non-finite values in expected phase response is equal to 0.
    3636PASS   bandpass: Actual and expected results contained only finite values is true.
    37 PASS   bandpass: Max error (-79.01394922508145 dB) of magnitude response at frequency 23952 Hz is less than or equal to -79.01389999999999.
    38 PASS   bandpass: Max error (0.000004937042988127661 deg) in phase response at frequency 816 Hz is less than or equal to 0.0002828749930340387.
     37PASS   bandpass: Max error (-80.14384658243245 dB) of magnitude response at frequency 22027.94921875 Hz is less than or equal to -79.01389999999999.
     38PASS   bandpass: Max error (0.000004663540170181627 deg) in phase response at frequency 1455.300048828125 Hz is less than or equal to 0.0002828749930340387.
    3939PASS < [bandpass] All assertions passed. (total 7 assertions)
    4040PASS > [lowshelf] Frequency response
     
    4444PASS   lowshelf: Number of non-finite values in expected phase response is equal to 0.
    4545PASS   lowshelf: Actual and expected results contained only finite values is true.
    46 PASS   lowshelf: Max error (-125.72006443816068 dB) of magnitude response at frequency 9048 Hz is less than or equal to -120.4038.
    47 PASS   lowshelf: Max error (0.0000010998019550260546 deg) in phase response at frequency 1176 Hz is less than or equal to 0.00023333133248907645.
     46PASS   lowshelf: Max error (-125.26371834201264 dB) of magnitude response at frequency 1653.75 Hz is less than or equal to -120.4038.
     47PASS   lowshelf: Max error (0.0000013776021539855112 deg) in phase response at frequency 749.7000122070312 Hz is less than or equal to 0.00023333133248907645.
    4848PASS < [lowshelf] All assertions passed. (total 7 assertions)
    4949PASS > [highshelf] Frequency response
     
    5353PASS   highshelf: Number of non-finite values in expected phase response is equal to 0.
    5454PASS   highshelf: Actual and expected results contained only finite values is true.
    55 PASS   highshelf: Max error (-125.38513197921183 dB) of magnitude response at frequency 864 Hz is less than or equal to -119.99999999999999.
    56 PASS   highshelf: Max error (0.000001099801293470681 deg) in phase response at frequency 1176 Hz is less than or equal to 0.00023333133248907645.
     55PASS   highshelf: Max error (-125.22346912810059 dB) of magnitude response at frequency 992.25 Hz is less than or equal to -119.99999999999999.
     56PASS   highshelf: Max error (0.0000013776027010409165 deg) in phase response at frequency 749.7000122070312 Hz is less than or equal to 0.00023333133248907645.
    5757PASS < [highshelf] All assertions passed. (total 7 assertions)
    5858PASS > [peaking] Frequency response
     
    6262PASS   peaking: Number of non-finite values in expected phase response is equal to 0.
    6363PASS   peaking: Actual and expected results contained only finite values is true.
    64 PASS   peaking: Max error (-124.9664097542858 dB) of magnitude response at frequency 1992 Hz is less than or equal to -119.11759999999998.
    65 PASS   peaking: Max error (0.0000022600132665057376 deg) in phase response at frequency 1080 Hz is less than or equal to 0.0000037084120332047404.
     64PASS   peaking: Max error (-125.41901251646009 dB) of magnitude response at frequency 1411.199951171875 Hz is less than or equal to -119.11759999999998.
     65PASS   peaking: Max error (0.000002668179955442939 deg) in phase response at frequency 992.25 Hz is less than or equal to 0.0000037084120332047404.
    6666PASS < [peaking] All assertions passed. (total 7 assertions)
    6767PASS > [notch] Frequency response
     
    7171PASS   notch: Number of non-finite values in expected phase response is equal to 0.
    7272PASS   notch: Actual and expected results contained only finite values is true.
    73 PASS   notch: Max error (-96.65213672776751 dB) of magnitude response at frequency 1008 Hz is less than or equal to -87.08079999999998.
    74 PASS   notch: Max error (0.0000066299355314361 deg) in phase response at frequency 1080 Hz is less than or equal to 0.0003798710181717358.
     73PASS   notch: Max error (-87.0808201946387 dB) of magnitude response at frequency 992.25 Hz is less than or equal to -87.08079999999998.
     74PASS   notch: Max error (0.000007963823283129813 deg) in phase response at frequency 992.25 Hz is less than or equal to 0.0003798710181717358.
    7575PASS < [notch] All assertions passed. (total 7 assertions)
    7676PASS > [allpass] Frequency response
     
    8080PASS   allpass: Number of non-finite values in expected phase response is equal to 0.
    8181PASS   allpass: Actual and expected results contained only finite values is true.
    82 PASS   allpass: Max error (-266.8735521058153 dB) of magnitude response at frequency 1056 Hz is less than or equal to -265.35169999999994.
    83 PASS   allpass: Max error (0.000013259871597205388 deg) in phase response at frequency 1080 Hz is less than or equal to 0.0007597420363434716.
     82PASS   allpass: Max error (-265.35174872440564 dB) of magnitude response at frequency 1146.5999755859375 Hz is less than or equal to -265.35169999999994.
     83PASS   allpass: Max error (0.000015927642291594136 deg) in phase response at frequency 992.25 Hz is less than or equal to 0.0007597420363434716.
    8484PASS < [allpass] All assertions passed. (total 7 assertions)
    8585PASS > [getFrequencyResponse] Test out-of-bounds frequency values
  • trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt

    r266892 r267018  
    44PASS Audit report
    55PASS > [test] Test convolver with real-time context
    6 FAIL X SNR is not greater than or equal to 88.457. Got 76.82504506274849. assert_true: expected true got false
     6FAIL X SNR is not greater than or equal to 88.457. Got 76.95278846153181. assert_true: expected true got false
    77FAIL < [test] 1 out of 1 assertions were failed. assert_true: expected true got false
    88FAIL # AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed. assert_true: expected true got false
  • trunk/LayoutTests/resources/testharnessreport.js

    r266446 r267018  
    2323        setTimeout(timeout, testRunner.timeout * 0.9);
    2424
    25     // Make WebAudio map to webkitWebAudio for WPT tests
    2625    if (location.port == 8800 || location.port == 9443) {
     26        // Make WebAudio map to webkitWebAudio for WPT tests
    2727        if (window.webkitAudioContext && !window.AudioContext)
    2828            Object.defineProperty(self, "AudioContext", Object.getOwnPropertyDescriptor(self, "webkitAudioContext"));
     
    3131        if (window.webkitAudioPannerNode && !window.PannerNode)
    3232            Object.defineProperty(self, "PannerNode", Object.getOwnPropertyDescriptor(self, "webkitAudioPannerNode"));
    33         if (self.internals)
     33        if (self.internals) {
     34            // Use 44100 sample rate by default instead of the hardware sample rate so that we get consistent results across machines.
     35            internals.settings.setDefaultAudioContextSampleRate(44100);
     36
    3437            internals.settings.setLazyIframeLoadingEnabled(location.pathname.indexOf('iframe-loading-lazy') !== -1);
     38        }
    3539    }
    3640
  • trunk/Source/WebCore/ChangeLog

    r267016 r267018  
     12020-09-14  Chris Dumez  <cdumez@apple.com>
     2
     3        Some WebAudio tests give different output on different machines
     4        https://bugs.webkit.org/show_bug.cgi?id=216371
     5        <rdar://problem/68653909>
     6
     7        Reviewed by Alex Christensen.
     8
     9        Hardcode default sample rate for AudioContext to 44100 for WPT tests instead
     10        of using the hardware sample rate. This allows some tests to output consistent
     11        results on different machines.
     12
     13        No new tests, unskipped existing test.
     14
     15        * Modules/webaudio/AudioContext.cpp:
     16        (WebCore::defaultSampleRateForTesting):
     17        (WebCore::AudioContext::setDefaultSampleRateForTesting):
     18        (WebCore::AudioContext::create):
     19        * Modules/webaudio/AudioContext.h:
     20        (WebCore::AudioContext::create):
     21        * testing/InternalSettings.cpp:
     22        (WebCore::InternalSettings::Backup::restoreTo):
     23        (WebCore::InternalSettings::setDefaultAudioContextSampleRate):
     24        * testing/InternalSettings.h:
     25        * testing/InternalSettings.idl:
     26
    1272020-09-14  Said Abou-Hallawa  <sabouhallawa@apple.com>
    228
  • trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp

    r265797 r267018  
    5959WTF_MAKE_ISO_ALLOCATED_IMPL(AudioContext);
    6060
    61 ExceptionOr<Ref<AudioContext>> AudioContext::create(Document& document, const AudioContextOptions& contextOptions)
     61static Optional<float>& defaultSampleRateForTesting()
     62{
     63    static Optional<float> sampleRate;
     64    return sampleRate;
     65}
     66
     67void AudioContext::setDefaultSampleRateForTesting(Optional<float> sampleRate)
     68{
     69    defaultSampleRateForTesting() = sampleRate;
     70}
     71
     72ExceptionOr<Ref<AudioContext>> AudioContext::create(Document& document, AudioContextOptions&& contextOptions)
    6273{
    6374    ASSERT(isMainThread());
     
    7182   
    7283    // FIXME: Figure out where latencyHint should go.
     84
     85    if (!contextOptions.sampleRate && defaultSampleRateForTesting())
     86        contextOptions.sampleRate = *defaultSampleRateForTesting();
    7387
    7488    if (contextOptions.sampleRate.hasValue() && !isSupportedSampleRate(contextOptions.sampleRate.value()))
  • trunk/Source/WebCore/Modules/webaudio/AudioContext.h

    r265797 r267018  
    4040public:
    4141    // Create an AudioContext for rendering to the audio hardware.
    42     static ExceptionOr<Ref<AudioContext>> create(Document&, const AudioContextOptions& = { });
     42    static ExceptionOr<Ref<AudioContext>> create(Document&, AudioContextOptions&& = { });
     43    WEBCORE_EXPORT static void setDefaultSampleRateForTesting(Optional<float>);
    4344
    4445    void close(DOMPromiseDeferred<void>&&);
  • trunk/Source/WebCore/testing/InternalSettings.cpp

    r266360 r267018  
    5252#endif
    5353
     54#if ENABLE(WEB_AUDIO)
     55#include "AudioContext.h"
     56#endif
     57
    5458namespace WebCore {
    5559
     
    172176    settings.setShouldDisplayCaptions(m_shouldDisplayCaptions);
    173177    settings.setShouldDisplayTextDescriptions(m_shouldDisplayTextDescriptions);
     178#endif
     179#if ENABLE(WEB_AUDIO)
     180    AudioContext::setDefaultSampleRateForTesting(WTF::nullopt);
    174181#endif
    175182    settings.setDefaultVideoPosterURL(m_defaultVideoPosterURL);
     
    488495}
    489496
     497void InternalSettings::setDefaultAudioContextSampleRate(float sampleRate)
     498{
     499#if ENABLE(WEB_AUDIO)
     500    AudioContext::setDefaultSampleRateForTesting(sampleRate);
     501#else
     502    UNUSED_PARAM(sampleRate);
     503#endif
     504}
     505
    490506ExceptionOr<void> InternalSettings::setEditingBehavior(const String& editingBehavior)
    491507{
  • trunk/Source/WebCore/testing/InternalSettings.h

    r266360 r267018  
    6868    ExceptionOr<void> setAllowsAirPlayForMediaPlayback(bool);
    6969    ExceptionOr<void> setMediaCaptureRequiresSecureConnection(bool);
     70    void setDefaultAudioContextSampleRate(float);
    7071
    7172    ExceptionOr<void> setEditingBehavior(const String&);
  • trunk/Source/WebCore/testing/InternalSettings.idl

    r266662 r267018  
    6161    undefined setAllowsAirPlayForMediaPlayback(boolean available);
    6262    [Conditional=MEDIA_STREAM, MayThrowException] undefined setMediaCaptureRequiresSecureConnection(boolean enable);
     63    undefined setDefaultAudioContextSampleRate(float sampleRate);
    6364
    6465    [MayThrowException] undefined setForcePendingWebGLPolicy(boolean forced);
Note: See TracChangeset for help on using the changeset viewer.