Changeset 267036 in webkit


Ignore:
Timestamp:
Sep 14, 2020 1:31:34 PM (4 years ago)
Author:
Chris Dumez
Message:

AudioDestinationCocoa should stop hardcoding the number of output channels to 2
https://bugs.webkit.org/show_bug.cgi?id=216491

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline existing test.

  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt:

Source/WebCore:

Stop hardcoding the number of output channels in AudioDestinationCocoa and instead use the AudioDestinationNode's
number of output channels.

  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestination::create):
(WebCore::AudioDestinationCocoa::AudioDestinationCocoa):
(WebCore::AudioDestinationCocoa::numberOfOutputChannels const):
(WebCore::AudioDestinationCocoa::setAudioStreamBasicDescription):
(): Deleted.

  • platform/audio/cocoa/AudioDestinationCocoa.h:
  • platform/mock/MockAudioDestinationCocoa.cpp:

(WebCore::MockAudioDestinationCocoa::MockAudioDestinationCocoa):

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r267020 r267036  
     12020-09-14  Chris Dumez  <cdumez@apple.com>
     2
     3        AudioDestinationCocoa should stop hardcoding the number of output channels to 2
     4        https://bugs.webkit.org/show_bug.cgi?id=216491
     5
     6        Reviewed by Darin Adler.
     7
     8        Rebaseline existing test.
     9
     10        * web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt:
     11
    1122020-09-14  Sam Weinig  <weinig@apple.com>
    213
  • trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt

    r267018 r267036  
    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.95278846153181. assert_true: expected true got false
     6FAIL X SNR is not greater than or equal to 88.457. Got 77.00623887904952. 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/Source/WebCore/ChangeLog

    r267034 r267036  
     12020-09-14  Chris Dumez  <cdumez@apple.com>
     2
     3        AudioDestinationCocoa should stop hardcoding the number of output channels to 2
     4        https://bugs.webkit.org/show_bug.cgi?id=216491
     5
     6        Reviewed by Darin Adler.
     7
     8        Stop hardcoding the number of output channels in AudioDestinationCocoa and instead use the AudioDestinationNode's
     9        number of output channels.
     10
     11        * platform/audio/cocoa/AudioDestinationCocoa.cpp:
     12        (WebCore::AudioDestination::create):
     13        (WebCore::AudioDestinationCocoa::AudioDestinationCocoa):
     14        (WebCore::AudioDestinationCocoa::numberOfOutputChannels const):
     15        (WebCore::AudioDestinationCocoa::setAudioStreamBasicDescription):
     16        (): Deleted.
     17        * platform/audio/cocoa/AudioDestinationCocoa.h:
     18        * platform/mock/MockAudioDestinationCocoa.cpp:
     19        (WebCore::MockAudioDestinationCocoa::MockAudioDestinationCocoa):
     20
    1212020-09-14  Fujii Hironori  <Hironori.Fujii@sony.com>
    222
  • trunk/Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp

    r267014 r267036  
    5757        return AudioDestinationCocoa::createOverride(callback, sampleRate);
    5858
    59     auto destination = makeUnique<AudioDestinationCocoa>(callback, sampleRate);
     59    auto destination = makeUnique<AudioDestinationCocoa>(callback, numberOfOutputChannels, sampleRate);
    6060    destination->configure();
    6161    return destination;
     
    7272}
    7373
    74 // FIXME: We should not be hardcoding the number of input channels.
    75 constexpr unsigned legacyNumberOfOutputChannels { 2 };
    76 
    77 AudioDestinationCocoa::AudioDestinationCocoa(AudioIOCallback& callback, float sampleRate)
     74AudioDestinationCocoa::AudioDestinationCocoa(AudioIOCallback& callback, unsigned numberOfOutputChannels, float sampleRate)
    7875    : m_outputUnit(0)
    7976    , m_callback(callback)
    80     , m_outputBus(AudioBus::create(legacyNumberOfOutputChannels, kRenderBufferSize, false).releaseNonNull())
    81     , m_renderBus(AudioBus::create(legacyNumberOfOutputChannels, kRenderBufferSize).releaseNonNull())
    82     , m_fifo(makeUniqueRef<PushPullFIFO>(legacyNumberOfOutputChannels, fifoSize))
     77    , m_outputBus(AudioBus::create(numberOfOutputChannels, kRenderBufferSize, false).releaseNonNull())
     78    , m_renderBus(AudioBus::create(numberOfOutputChannels, kRenderBufferSize).releaseNonNull())
     79    , m_fifo(makeUniqueRef<PushPullFIFO>(numberOfOutputChannels, fifoSize))
    8380    , m_contextSampleRate(sampleRate)
    8481{
     
    8885    if (sampleRate != hardwareSampleRate) {
    8986        double scaleFactor = static_cast<double>(sampleRate) / hardwareSampleRate;
    90         m_resampler = makeUnique<MultiChannelResampler>(scaleFactor, legacyNumberOfOutputChannels, kRenderBufferSize);
     87        m_resampler = makeUnique<MultiChannelResampler>(scaleFactor, numberOfOutputChannels, kRenderBufferSize);
    9188    }
    9289}
     
    9693    if (m_outputUnit)
    9794        AudioComponentInstanceDispose(m_outputUnit);
     95}
     96
     97unsigned AudioDestinationCocoa::numberOfOutputChannels() const
     98{
     99    return m_renderBus->numberOfChannels();
    98100}
    99101
     
    140142    streamFormat.mFramesPerPacket = 1;
    141143    streamFormat.mBytesPerFrame = bytesPerFloat;
    142     streamFormat.mChannelsPerFrame = 2;
     144    streamFormat.mChannelsPerFrame = numberOfOutputChannels();
    143145    streamFormat.mBitsPerChannel = bitsPerByte * bytesPerFloat;
    144146}
  • trunk/Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.h

    r267014 r267036  
    4646class AudioDestinationCocoa : public AudioDestination, public AudioSourceProvider {
    4747public:
    48     AudioDestinationCocoa(AudioIOCallback&, float sampleRate);
     48    AudioDestinationCocoa(AudioIOCallback&, unsigned numberOfOutputChannels, float sampleRate);
    4949    virtual ~AudioDestinationCocoa();
    5050
     
    5858    unsigned framesPerBuffer() const final;
    5959    AudioUnit& outputUnit() { return m_outputUnit; }
     60
     61    unsigned numberOfOutputChannels() const;
    6062   
    6163    // DefaultOutputUnit callback
  • trunk/Source/WebCore/platform/mock/MockAudioDestinationCocoa.cpp

    r267014 r267036  
    3838
    3939MockAudioDestinationCocoa::MockAudioDestinationCocoa(AudioIOCallback& callback, float sampleRate)
    40     : AudioDestinationCocoa(callback, sampleRate)
     40    : AudioDestinationCocoa(callback, 2, sampleRate)
    4141    , m_workQueue(WorkQueue::create("MockAudioDestinationCocoa Render Queue"))
    4242    , m_timer(RunLoop::current(), this, &MockAudioDestinationCocoa::tick)
Note: See TracChangeset for help on using the changeset viewer.