-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MSE-in-Workers: {Audio,Video,Text}Track{,List} IDL in HTML need additional DedicatedWorker in Exposed #280
Comments
Specifies expansion of MSE API to usage from DedicatedWorker contexts. This is an MSEv2 feature tracked by issue w3c#175. See also earlier WICG explainer [1]. This is a squashed commit of 23 original commits, notably: * Adds `closing` issue and link to w3c#276. * Adds the `github:` respecConfig key and an issues-summary appendix. * Removes redundant 'Repository' otherLinks config (addition of 'github' to respecConfig has make the manual enumeration in the 'Repository' otherLinks portion of respecConfig redundant.) * Adds subsections for each of the extended HTMLMediaElement's .seekable and .buffered attributes. * Adds more normative detail to the .buffered extension. * Specifies what .seekable and .buffered do when worker has terminated, and references w3c#277 for further discussion. * Describes cross-context track object aliasing. AudioTrack, VideoTrack, TextTrack extensions' sourceBuffer attribute must be null in the Window context's alias of the track if the track is an alias to a worker-created track from MSE-in-Worker. This is to prevent any assumption that cross-context object references are somehow now allowed in MSE or HTMLMediaElement+MSE. * Describes a MessageChannel-based cross-context communication mechanism in a new section, including how MessagePorts on that channel are given to each side (media element, MediaSource) for communicating state needed by algorithms. Updates multiple algorithms and methods to use this mechanism where necessary. Resolves w3c#279. * Specifies how to detect this feature using new `canConstructInDedicatedWorker` attribute without requiring the detection happening in a DedicatedWorker context. * Modernizes to use respec's new variable syntax (`|...|` with types inlined)) for related lines. Wider modernization is an editorial item that is out of scope of this feature. * Modernizes to use internal slots for the new cross-context communication mechanism's channel and ports. Wider modernization is an editorial item out of scope of this feature.o Note, multiple simultaneous changes to track's `selected`, `enabled` or `hidden`/`showing` states could be in-flight from window to worker, and from worker to window. A non-normative note might be good to add here to warn API users of this possibility. See w3c#278. Note, {Audio,Video,Track}{,List} IDL need to be exposed in DedicatedWorker. This might need to be directly in the media element spec. See w3c#280. Note, a reference to an MSE-in-Worker example/demo would be good in the merged PR. Such a demo exists already at [2]. [1] https://github.com/wicg/media-source/blob/mse-in-workers-using-handle/mse-in-workers-using-handle-explainer.md [2] https://wolenetz.github.io/mse-in-workers-demo/mse-in-workers-demo.html
Specifies expansion of MSE API to usage from DedicatedWorker contexts. This is an MSEv2 feature tracked by issue #175. See also earlier WICG explainer [1]. This is a squashed commit of 23 original commits, notably: * Adds `closing` issue and link to #276. * Adds the `github:` respecConfig key and an issues-summary appendix. * Removes redundant 'Repository' otherLinks config (addition of 'github' to respecConfig has make the manual enumeration in the 'Repository' otherLinks portion of respecConfig redundant.) * Adds subsections for each of the extended HTMLMediaElement's .seekable and .buffered attributes. * Adds more normative detail to the .buffered extension. * Specifies what .seekable and .buffered do when worker has terminated, and references #277 for further discussion. * Describes cross-context track object aliasing. AudioTrack, VideoTrack, TextTrack extensions' sourceBuffer attribute must be null in the Window context's alias of the track if the track is an alias to a worker-created track from MSE-in-Worker. This is to prevent any assumption that cross-context object references are somehow now allowed in MSE or HTMLMediaElement+MSE. * Describes a MessageChannel-based cross-context communication mechanism in a new section, including how MessagePorts on that channel are given to each side (media element, MediaSource) for communicating state needed by algorithms. Updates multiple algorithms and methods to use this mechanism where necessary. Resolves #279. * Specifies how to detect this feature using new `canConstructInDedicatedWorker` attribute without requiring the detection happening in a DedicatedWorker context. * Modernizes to use respec's new variable syntax (`|...|` with types inlined)) for related lines. Wider modernization is an editorial item that is out of scope of this feature. * Modernizes to use internal slots for the new cross-context communication mechanism's channel and ports. Wider modernization is an editorial item out of scope of this feature.o Note, multiple simultaneous changes to track's `selected`, `enabled` or `hidden`/`showing` states could be in-flight from window to worker, and from worker to window. A non-normative note might be good to add here to warn API users of this possibility. See #278. Note, {Audio,Video,Track}{,List} IDL need to be exposed in DedicatedWorker. This might need to be directly in the media element spec. See #280. There were some still unresolved cosmetic comments on this PR during later portion of review that I'll follow-up on in a later PR. Note, a reference to an MSE-in-Worker example/demo would be good in the merged PR. Such a demo exists already at [2]. [1] https://github.com/wicg/media-source/blob/mse-in-workers-using-handle/mse-in-workers-using-handle-explainer.md [2] https://wolenetz.github.io/mse-in-workers-demo/mse-in-workers-demo.html
Requesting this be discussed at Sept 14 Media WG meeting. |
--enable-experimental-web-platform-features enables many features, at least one of which (AudioVideoTracks) is incomplete in the MediaSourceInWorkers implementation (pending spec and implementation resolution - see w3c/media-source#280).
I noticed this issue because HTML's and MSE's Web IDL put together are invalid right now, causing test failures in web-platform-tests/wpt#29414. I can't find an issue about this in HTML yet, would be great if someone could file an issue at https://github.com/whatwg/html/issues/new. |
I've reactivated the most closely related Chromium implementation bug (https://crbug.com/487288) to help track fixing this issue in implementation, too (currently behind the experimental AudioVideoTracks blink runtime-enabled feature). |
…TextTrack+MediaSource.idl' with WebIDL Specification https://bugs.webkit.org/show_bug.cgi?id=264939 Reviewed by Jean-Yves Avenard. This PR is to sync WebKit with Web-Specifications [1], [2] and [3] by exposing it to 'Window' and also add FIXME for 'DedicatedWorker' [4]. [1] https://w3c.github.io/media-source/#audio-track-extensions [2] https://w3c.github.io/media-source/#text-track-extensions [3] https://w3c.github.io/media-source/#video-track-extensions [4] w3c/media-source#280 * Source/WebCore/Modules/mediasource/AudioTrack+MediaSource.idl: * Source/WebCore/Modules/mediasource/TextTrack+MediaSource.idl: * Source/WebCore/Modules/mediasource/VideoTrack+MediaSource.idl: Canonical link: https://commits.webkit.org/270873@main
There are unfortunately much more DOM objects that need updating, in particular TextTrackCueList / TextTrackCue ; in TextTrack the method addCue and removeCue which have references on how they are to be rendered on the MediaElement (https://w3c.github.io/webvtt/#rules-for-updating-the-display-of-webvtt-text-tracks) with their respective CSS block boxes etc.. None of which is applicable with DedicatedWorker |
…ncluding MSE in worker) https://bugs.webkit.org/show_bug.cgi?id=269461 rdar://problem/123006531 Reviewed by Youenn Fablet. The MSE spec now defines that a MediaSource can be constructed in a DedicatedWorker and attached to a HTMLMediaElement running in the main thread through a MediaSourceHandle object. To determine if a MediaSource can be constructed in a DedicatedWorker a new attribute has been added. This commit adds support for all those latest functionalities and is placed behind a MediaSourceInWorker pref currently off by default. Some architectural explanations: The MediaSource and SourceBuffer were ThreadSafeRefCounted objects which was problematic as we couldn't guarantee which thread those objets would be destructed on. To solve this, we make MediaSource and SourceBuffer be RefCounted instead and use a ThreadSafeRefCounted {MediaSource|SourceBuffer}PrivateClient each providing a function dispatcher used for the {MediaSource|SourceBuffer}Private to communicate with their client. The function dispatcher guarantees that: 1- The function will always be run on the MediaSource's thread. 2- That the MediaSource hasn't been destructed in-between calls 3- That the MediaSource's readyState is not "Closed". As such, {MediaSource|SourceBuffer} methods are only ever called on the correct thread, it is no longer the responsibility of either the MediaSource or the SourceBuffer to run on the correct thread, so we can remove the now redundant `assertIsCurrent(m_dispatcher)` and the m_dispatcher member. Guarantees 2 and 3 allows to remove the checks made in each method, allowing to simplify the code. One of the existing complexity, was that the media element directly interacted with the MediaSource through both sync and asynchronous methods which is no longer a possibility if the MediaSource now exists in the DedicatedWorker. We introduce the MediaSourceInterfaceProxy virtual interface so that the media element can continue to interact with the MediaSource with the minimum amount of changes. Two implementation are provided. MediaSourceInterfaceMainThread, which performs a simple, passthrough connection and the MediaSourceInterfaceWorker which is constructed from the MediaSourceHandle. The MediaSourceHandle implementation contains the minimum information so that the MediaSourceInterfaceProxy can be established. While asynchronous calls can be easily achieved with the MediaSourceHandle's function dispatcher, synchronous calls can't (you can't dispatch synchronously to a worker) As such, all information needed to be synchronously retrieved by the HTMLMediaElement from the MediaSource are now moved to the MediaSourcePrivate instead, this includes: - readyState - duration - buffered range - seekable range - live seekable range. In order to avoid duplicating such handling with all MediaSourcePrivate implementations: (AVF, Mock, GStreamer, GPU) we place it in the MediaSourcePrivate base class. Various small changes had to be performed for things to operate when a worker is in use. - Tracks validity where being checked using main thread's only AtomString, we change the code use litteral strings for now. - Some calls from the MediaSource (worker) are made directly to the MediaPlayer (which lives in the main thread), rather than making the code thread-safe, we instead dispatch synchronously to the main thread. Present issues: - The handling of Tracks and TrackList in the worker is currently broken as the MSE spec do not cater yet for necessary changes (such as {Audio|Video|Text}Track objects are currently only exposed to the `Document` (see w3c/media-source#280) - Media Logging in the Worker is currently disabled. - There appear to still be some unnecessary hops via the main thread while a MediaSource is in operation in the work, which results in some janks still occurring when the main thread is under heavy load. - When in the main thread, it is possible via dynamic preferences to limit the codec's supported configuration. As Settings aren't available in the Worker, this functionality is disabled. MediaSource in a Worker functionality is currently turn off by default. Tests will be added at a later stage. No changes in observable behaviour, currently covered by extensive existing tests. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WTF/wtf/PlatformEnable.h: * Source/WTF/wtf/PlatformEnableCocoa.h: * Source/WebCore/CMakeLists.txt: * Source/WebCore/DerivedSources-input.xcfilelist: * Source/WebCore/DerivedSources-output.xcfilelist: * Source/WebCore/DerivedSources.make: * Source/WebCore/Headers.cmake: * Source/WebCore/Modules/mediasource/DOMURLMediaSource.cpp: (WebCore::DOMURLMediaSource::createObjectURL): * Source/WebCore/Modules/mediasource/ManagedMediaSource.cpp: (WebCore::ManagedMediaSource::setStreaming): (WebCore::ManagedMediaSource::ensurePrefsRead): (WebCore::ManagedMediaSource::monitorSourceBuffers): (WebCore::ManagedMediaSource::streamingTimerFired): * Source/WebCore/Modules/mediasource/ManagedMediaSource.idl: * Source/WebCore/Modules/mediasource/MediaSource.cpp: (WebCore::MediaSource::setRegistry): (WebCore::MediaSource::MediaSource): (WebCore::MediaSource::logger): (WebCore::MediaSource::didLogMessage): (WebCore::MediaSource::setPrivateAndOpen): (WebCore::MediaSource::currentTime const): (WebCore::MediaSource::buffered const): (WebCore::MediaSource::waitForTarget): (WebCore::MediaSource::completeSeek): (WebCore::MediaSource::seekToTime): (WebCore::MediaSource::seekable): (WebCore::MediaSource::setLiveSeekableRange): (WebCore::MediaSource::clearLiveSeekableRange): (WebCore::MediaSource::hasBufferedTime): (WebCore::MediaSource::hasFutureTime): (WebCore::MediaSource::monitorSourceBuffers): (WebCore::MediaSource::setDuration): (WebCore::MediaSource::setDurationInternal): (WebCore::MediaSource::setReadyState): (WebCore::MediaSource::endOfStream): (WebCore::MediaSource::streamEndedWithError): (WebCore::MediaSource::addSourceBuffer): (WebCore::MediaSource::removeSourceBuffer): (WebCore::MediaSource::isTypeSupported): (WebCore::MediaSource::isOpen const): (WebCore::MediaSource::isClosed const): (WebCore::MediaSource::isEnded const): (WebCore::MediaSource::detachFromElement): (WebCore::MediaSource::attachToElement): (WebCore::MediaSource::openIfInEndedState): (WebCore::MediaSource::openIfDeferredOpen): (WebCore::MediaSource::stop): (WebCore::MediaSource::readyState const): (WebCore::MediaSource::onReadyStateChange): (WebCore::MediaSource::activeRanges const): (WebCore::MediaSource::regenerateActiveSourceBuffers): (WebCore::MediaSource::notifyElementUpdateMediaState const): (WebCore::MediaSource::ensureWeakOnHTMLMediaElementContext const): (WebCore::MediaSource::sourceBufferBufferedChanged): (WebCore::MediaSource::updateBufferedIfNeeded): (WebCore::MediaSource::failedToCreateRenderer): (WebCore::MediaSource::sourceBufferReceivedFirstInitializationSegmentChanged): (WebCore::MediaSource::sourceBufferActiveTrackFlagChanged): (WebCore::MediaSource::setMediaPlayerReadyState): (WebCore::MediaSource::incrementDroppedFrameCount): (WebCore::MediaSource::addAudioTrackToElement): (WebCore::MediaSource::addTextTrackToElement): (WebCore::MediaSource::addVideoTrackToElement): (WebCore::MediaSource::addAudioTrackMirrorToElement): (WebCore::MediaSource::addTextTrackMirrorToElement): (WebCore::MediaSource::addVideoTrackMirrorToElement): (WebCore::MediaSource::memoryPressure): (WebCore::MediaSource::client const): (WebCore::MediaSource::enabledForContext): (WebCore::MediaSource::handle): (WebCore::MediaSource::canConstructInDedicatedWorker): (WebCore::MediaSource::settings const): Deleted. (WebCore::MediaSource::ensureWeakOnDispatcher const): Deleted. * Source/WebCore/Modules/mediasource/MediaSource.h: (WebCore::MediaSource::promisedWeakOnDispatcher const): Deleted. * Source/WebCore/Modules/mediasource/MediaSource.idl: * Source/WebCore/Modules/mediasource/MediaSourceHandle.cpp: Added. (WebCore::MediaSourceHandle::create): (WebCore::MediaSourceHandle::MediaSourceHandle): (WebCore::MediaSourceHandle::canDetach const): (WebCore::MediaSourceHandle::setHasEverBeenAssignedAsSrcObject): (WebCore::MediaSourceHandle::hasEverBeenAssignedAsSrcObject const): (WebCore::MediaSourceHandle::isManaged const): (WebCore::MediaSourceHandle::ensureOnDispatcher const): (WebCore::MediaSourceHandle::detach): (WebCore::MediaSourceHandle::mediaSourcePrivateClient const): (WebCore::MediaSourceHandle::mediaSourceDidOpen): (WebCore::MediaSourceHandle::mediaSourcePrivate const): * Source/WebCore/Modules/mediasource/MediaSourceHandle.h: Added. (WebCore::MediaSourceHandle::isDetached const): (WebCore::MediaSourceHandle::setDetached): * Source/WebCore/Modules/mediasource/MediaSourceHandle.idl: Copied from Source/WebCore/Modules/mediasource/ManagedMediaSource.idl. * Source/WebCore/Modules/mediasource/MediaSourceInterfaceMainThread.cpp: Added. (WebCore::MediaSourceInterfaceMainThread::MediaSourceInterfaceMainThread): (WebCore::MediaSourceInterfaceMainThread::client const): (WebCore::MediaSourceInterfaceMainThread::monitorSourceBuffers): (WebCore::MediaSourceInterfaceMainThread::isClosed const): (WebCore::MediaSourceInterfaceMainThread::duration const): (WebCore::MediaSourceInterfaceMainThread::buffered const): (WebCore::MediaSourceInterfaceMainThread::seekable const): (WebCore::MediaSourceInterfaceMainThread::isStreamingContent const): (WebCore::MediaSourceInterfaceMainThread::attachToElement): (WebCore::MediaSourceInterfaceMainThread::detachFromElement): (WebCore::MediaSourceInterfaceMainThread::openIfDeferredOpen): (WebCore::MediaSourceInterfaceMainThread::isManaged const): (WebCore::MediaSourceInterfaceMainThread::setAsSrcObject): (WebCore::MediaSourceInterfaceMainThread::memoryPressure): * Source/WebCore/Modules/mediasource/MediaSourceInterfaceMainThread.h: Copied from Source/WebCore/Modules/pictureinpicture/PictureInPictureWindow.cpp. (WebCore::MediaSourceInterfaceMainThread::create): * Source/WebCore/Modules/mediasource/MediaSourceInterfaceProxy.h: Copied from Source/WebCore/Modules/pictureinpicture/PictureInPictureWindow.cpp. * Source/WebCore/Modules/mediasource/MediaSourceInterfaceWorker.cpp: Added. (WebCore::MediaSourceInterfaceWorker::MediaSourceInterfaceWorker): (WebCore::MediaSourceInterfaceWorker::client const): (WebCore::MediaSourceInterfaceWorker::monitorSourceBuffers): (WebCore::MediaSourceInterfaceWorker::isClosed const): (WebCore::MediaSourceInterfaceWorker::duration const): (WebCore::MediaSourceInterfaceWorker::buffered const): (WebCore::MediaSourceInterfaceWorker::seekable const): (WebCore::MediaSourceInterfaceWorker::isStreamingContent const): (WebCore::MediaSourceInterfaceWorker::attachToElement): (WebCore::MediaSourceInterfaceWorker::detachFromElement): (WebCore::MediaSourceInterfaceWorker::openIfDeferredOpen): (WebCore::MediaSourceInterfaceWorker::isManaged const): (WebCore::MediaSourceInterfaceWorker::setAsSrcObject): (WebCore::MediaSourceInterfaceWorker::memoryPressure): * Source/WebCore/Modules/mediasource/MediaSourceInterfaceWorker.h: Copied from Source/WebCore/Modules/pictureinpicture/PictureInPictureWindow.cpp. (WebCore::MediaSourceInterfaceWorker::create): * Source/WebCore/Modules/mediasource/SourceBuffer.cpp: (WebCore::SourceBuffer::SourceBuffer): (WebCore::m_logIdentifier): (WebCore::SourceBuffer::~SourceBuffer): (WebCore::SourceBuffer::abort): (WebCore::SourceBuffer::rangeRemoval): (WebCore::SourceBuffer::changeType): (WebCore::SourceBuffer::abortIfUpdating): (WebCore::SourceBuffer::removedFromMediaSource): (WebCore::SourceBuffer::seekToTime): (WebCore::SourceBuffer::appendBufferInternal): (WebCore::SourceBuffer::sourceBufferPrivateAppendComplete): (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveRenderingError): (WebCore::SourceBuffer::maximumBufferSize const): (WebCore::SourceBuffer::setActive): (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment): (WebCore::SourceBuffer::validateInitializationSegment): (WebCore::SourceBuffer::sourceBufferPrivateDurationChanged): (WebCore::SourceBuffer::sourceBufferPrivateHighestPresentationTimestampChanged): (WebCore::SourceBuffer::sourceBufferPrivateDidDropSample): (WebCore::SourceBuffer::bufferedSamplesForTrackId): (WebCore::SourceBuffer::enqueuedSamplesForTrackID): (WebCore::SourceBuffer::sourceBufferPrivateBufferedChanged): (WebCore::SourceBuffer::enabledForContext): (WebCore::SourceBuffer::settings const): Deleted. (WebCore::SourceBuffer::ensureWeakOnDispatcher const): Deleted. (WebCore::SourceBuffer::promisedWeakOnDispatcher const): Deleted. * Source/WebCore/Modules/mediasource/SourceBuffer.h: * Source/WebCore/Modules/mediasource/SourceBuffer.idl: * Source/WebCore/Modules/pictureinpicture/PictureInPictureWindow.cpp: * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/bindings/js/SerializedScriptValue.cpp: (WebCore::name): (WebCore::isTypeExposedToGlobalObject): (WebCore::CloneSerializer::serialize): (WebCore::CloneSerializer::CloneSerializer): (WebCore::CloneSerializer::dumpMediaSourceHandle): (WebCore::CloneSerializer::dumpIfTerminal): (WebCore::CloneDeserializer::deserialize): (WebCore::CloneDeserializer::CloneDeserializer): (WebCore::CloneDeserializer::takeDetachedMediaSourceHandles): (WebCore::CloneDeserializer::readMediaSourceHandle): (WebCore::CloneDeserializer::readTerminal): (WebCore::validateSerializedResult): (WebCore::SerializedScriptValue::SerializedScriptValue): (WebCore::canDetachMediaSourceHandles): (WebCore::SerializedScriptValue::create): (WebCore::SerializedScriptValue::deserialize): * Source/WebCore/bindings/js/SerializedScriptValue.h: * Source/WebCore/bindings/js/WebCoreBuiltinNames.h: * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::selectMediaResource): (WebCore::HTMLMediaElement::loadResource): (WebCore::HTMLMediaElement::hasManagedMediaSource const): (WebCore::HTMLMediaElement::detachMediaSource): (WebCore::HTMLMediaElement::mediaState const): * Source/WebCore/html/HTMLMediaElement.h: * Source/WebCore/html/HTMLMediaElement.idl: * Source/WebCore/html/track/AudioTrack.cpp: (WebCore::AudioTrack::isValidKind const): (WebCore::AudioTrack::updateKindFromPrivate): * Source/WebCore/html/track/VideoTrack.cpp: (WebCore::VideoTrack::isValidKind const): (WebCore::VideoTrack::updateKindFromPrivate): * Source/WebCore/platform/graphics/MediaPlayer.cpp: (WebCore::applicationOctetStream): * Source/WebCore/platform/graphics/MediaSourcePrivate.cpp: (WebCore::MediaSourcePrivate::MediaSourcePrivate): (WebCore::MediaSourcePrivate::seekable const): (WebCore::MediaSourcePrivate::setLiveSeekableRange): (WebCore::MediaSourcePrivate::clearLiveSeekableRange): (WebCore::MediaSourcePrivate::liveSeekableRange const): * Source/WebCore/platform/graphics/MediaSourcePrivate.h: * Source/WebCore/platform/graphics/MediaSourcePrivateClient.h: (WebCore::MediaSourcePrivateClient::logger const): * Source/WebCore/platform/graphics/SourceBufferPrivate.cpp: (WebCore::SourceBufferPrivate::setClient): * Source/WebCore/platform/graphics/SourceBufferPrivateClient.h: * Source/WebCore/platform/graphics/TrackPrivateBase.h: * Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in: * Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.cpp: (WebKit::MediaSourcePrivateRemote::MediaSourcePrivateRemote): (WebKit::MediaSourcePrivateRemote::mediaPlayerReadyState const): (WebKit::MediaSourcePrivateRemote::setMediaPlayerReadyState): (WebKit::MediaSourcePrivateRemote::MessageReceiver::mediaSourcePrivateShuttingDown): * Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.h: Canonical link: https://commits.webkit.org/274853@main
MSE-in-Workers feature issue is #175.
This issue tracks making sure the extended HTML AudioTrack, VideoTrack, TextTrack, and their *TrackList IDLs are all updated to have exposure to both Window and DedicatedWorker, not just Window.
In the initial spec draft of MSE-in-Workers, the assumption is made that such exposure is already included in HTML, but at the moment of filing this issue, it hasn't.
Per WebIDL https://heycam.github.io/webidl/#Exposed, it looks like HTML spec's original definitions of these IDL would need to include DedicatedWorker in their Exposed (otherwise, some significant rework or even removal of track/tracklist visibility in MSE-in-Worker would be necessary):
The text was updated successfully, but these errors were encountered: