LibWeb: Add AudioContext.createMediaElementSource() factory method

This commit is contained in:
Tim Ledbetter 2025-01-15 23:08:23 +00:00 committed by Luke Wilde
commit 31532e36a8
Notes: github-actions[bot] 2025-01-17 19:05:41 +00:00
4 changed files with 18 additions and 5 deletions

View file

@ -342,4 +342,12 @@ bool AudioContext::start_rendering_audio_graph()
return render_result; return render_result;
} }
// https://webaudio.github.io/web-audio-api/#dom-audiocontext-createmediaelementsource
WebIDL::ExceptionOr<GC::Ref<MediaElementAudioSourceNode>> AudioContext::create_media_element_source(GC::Ptr<HTML::HTMLMediaElement> media_element)
{
MediaElementAudioSourceOptions options;
options.media_element = media_element;
return MediaElementAudioSourceNode::create(realm(), *this, options);
}
} }

View file

@ -9,6 +9,7 @@
#include <LibWeb/Bindings/AudioContextPrototype.h> #include <LibWeb/Bindings/AudioContextPrototype.h>
#include <LibWeb/HighResolutionTime/DOMHighResTimeStamp.h> #include <LibWeb/HighResolutionTime/DOMHighResTimeStamp.h>
#include <LibWeb/WebAudio/BaseAudioContext.h> #include <LibWeb/WebAudio/BaseAudioContext.h>
#include <LibWeb/WebAudio/MediaElementAudioSourceNode.h>
namespace Web::WebAudio { namespace Web::WebAudio {
@ -39,6 +40,8 @@ public:
WebIDL::ExceptionOr<GC::Ref<WebIDL::Promise>> suspend(); WebIDL::ExceptionOr<GC::Ref<WebIDL::Promise>> suspend();
WebIDL::ExceptionOr<GC::Ref<WebIDL::Promise>> close(); WebIDL::ExceptionOr<GC::Ref<WebIDL::Promise>> close();
WebIDL::ExceptionOr<GC::Ref<MediaElementAudioSourceNode>> create_media_element_source(GC::Ptr<HTML::HTMLMediaElement>);
private: private:
explicit AudioContext(JS::Realm& realm) explicit AudioContext(JS::Realm& realm)
: BaseAudioContext(realm) : BaseAudioContext(realm)

View file

@ -13,7 +13,7 @@ interface AudioContext : BaseAudioContext {
Promise<undefined> resume (); Promise<undefined> resume ();
Promise<undefined> suspend (); Promise<undefined> suspend ();
Promise<undefined> close (); Promise<undefined> close ();
[FIXME] MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement mediaElement); MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement mediaElement);
[FIXME] MediaStreamAudioSourceNode createMediaStreamSource (MediaStream mediaStream); [FIXME] MediaStreamAudioSourceNode createMediaStreamSource (MediaStream mediaStream);
[FIXME] MediaStreamTrackAudioSourceNode createMediaStreamTrackSource (MediaStreamTrack mediaStreamTrack); [FIXME] MediaStreamTrackAudioSourceNode createMediaStreamTrackSource (MediaStreamTrack mediaStreamTrack);
[FIXME] MediaStreamAudioDestinationNode createMediaStreamDestination (); [FIXME] MediaStreamAudioDestinationNode createMediaStreamDestination ();

View file

@ -1,9 +1,9 @@
Harness status: OK Harness status: OK
Found 304 tests Found 306 tests
294 Pass 297 Pass
10 Fail 9 Fail
Pass # AUDIT TASK RUNNER STARTED. Pass # AUDIT TASK RUNNER STARTED.
Pass Executing "initialize" Pass Executing "initialize"
Pass Executing "Offline createGain" Pass Executing "Offline createGain"
@ -24,7 +24,7 @@ Fail Executing "Offline createScriptProcessor"
Pass Executing "Offline createPeriodicWave" Pass Executing "Offline createPeriodicWave"
Pass Executing "Offline createChannelSplitter" Pass Executing "Offline createChannelSplitter"
Pass Executing "Offline createChannelMerger" Pass Executing "Offline createChannelMerger"
Fail Executing "Online createMediaElementSource" Pass Executing "Online createMediaElementSource"
Fail Executing "Online createMediaStreamDestination" Fail Executing "Online createMediaStreamDestination"
Pass Executing "AudioListener" Pass Executing "AudioListener"
Pass Executing "verifyTests" Pass Executing "verifyTests"
@ -243,6 +243,8 @@ Pass > [Offline createChannelMerger]
Pass AudioNode has no AudioParams as expected Pass AudioNode has no AudioParams as expected
Pass < [Offline createChannelMerger] All assertions passed. (total 1 assertions) Pass < [Offline createChannelMerger] All assertions passed. (total 1 assertions)
Pass > [Online createMediaElementSource] Pass > [Online createMediaElementSource]
Pass MediaElementAudioSourceNode has no AudioParams as expected
Pass < [Online createMediaElementSource] All assertions passed. (total 1 assertions)
Pass > [Online createMediaStreamDestination] Pass > [Online createMediaStreamDestination]
Pass > [AudioListener] Pass > [AudioListener]
Pass AudioListener.positionX.minValue is equal to -3.4028234663852886e+38. Pass AudioListener.positionX.minValue is equal to -3.4028234663852886e+38.