[go: up one dir, main page]

Skip to content
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

Open
wolenetz opened this issue Jun 25, 2021 · 4 comments
Assignees
Milestone

Comments

@wolenetz
Copy link
Member

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):

If [Exposed] appears on a partial interface or partial namespace, then the partial’s own exposure set must be a subset of the exposure set of the partial’s original interface or namespace.

wolenetz added a commit to wolenetz/media-source that referenced this issue Jun 25, 2021
wolenetz added a commit to wolenetz/media-source that referenced this issue Jun 30, 2021
wolenetz added a commit to wolenetz/media-source that referenced this issue Jul 26, 2021
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
wolenetz added a commit that referenced this issue Aug 31, 2021
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
@wolenetz wolenetz self-assigned this Sep 3, 2021
@wolenetz wolenetz added this to the V2 milestone Sep 3, 2021
@wolenetz wolenetz added the agenda Topic should be discussed in a group call label Sep 3, 2021
@wolenetz
Copy link
Member Author
wolenetz commented Sep 3, 2021

Requesting this be discussed at Sept 14 Media WG meeting.

wolenetz added a commit to wolenetz/mse-in-workers-demo that referenced this issue Sep 11, 2021
--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).
@foolip
Copy link
Member
foolip commented Sep 15, 2021

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.

@wolenetz
Copy link
Member Author

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).

@dalecurtis dalecurtis modified the milestones: V3, V2 Mar 14, 2023
@chrisn chrisn removed the agenda Topic should be discussed in a group call label Apr 5, 2023
webkit-commit-queue pushed a commit to Ahmad-S792/WebKit that referenced this issue Nov 17, 2023
…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
@jyavenard
Copy link
Member
jyavenard commented Feb 12, 2024

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..
while those examples are in relation to WebVTT, there's nothing preventing the use of WebVTT cues in inbandTextTrack

None of which is applicable with DedicatedWorker

webkit-commit-queue pushed a commit to jyavenard/WebKit that referenced this issue Feb 16, 2024
…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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants