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

View file

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

View file

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