haikuwebkit/Source/WebCore/platform/graphics/gstreamer
Alicia Boya Garcia 569fdc337c [MSE][GStreamer] Implement multi-track support
https://bugs.webkit.org/show_bug.cgi?id=229072

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

This patch adds support for SourceBuffer having more than one track in
the GStreamer port.

This fixes the following LayoutTests:

imported/w3c/web-platform-tests/media-source/mediasource-activesourcebuffers.html
media/media-source/media-source-has-audio-video.html
media/media-source/only-bcp47-language-tags-accepted-as-valid.html

* platform/graphics/gstreamer/GStreamerCommon.h:
(GstIteratorAdaptor::GstIteratorAdaptor):
(GstIteratorAdaptor::iterator::iterator):
(GstIteratorAdaptor::iterator::operator*):
(GstIteratorAdaptor::iterator::operator++):
(GstIteratorAdaptor::iterator::operator==):
(GstIteratorAdaptor::iterator::operator!=):
(GstIteratorAdaptor::begin):
(GstIteratorAdaptor::end):
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::AppendPipeline):
(WebCore::AppendPipeline::~AppendPipeline):
(WebCore::AppendPipeline::parseDemuxerSrcPadCaps):
(WebCore::AppendPipeline::appsinkCapsChanged):
(WebCore::AppendPipeline::handleEndOfAppend):
(WebCore::AppendPipeline::appsinkNewSample):
(WebCore::AppendPipeline::didReceiveInitializationSegment):
(WebCore::AppendPipeline::consumeAppsinksAvailableSamples):
(WebCore::AppendPipeline::resetParserState):
(WebCore::AppendPipeline::handleAppsinkNewSampleFromStreamingThread):
(WebCore::createOptionalParserForFormat):
(WebCore::AppendPipeline::generateTrackId):
(WebCore::AppendPipeline::tryCreateTrackFromPad):
(WebCore::AppendPipeline::tryMatchPadToExistingTrack):
(WebCore::AppendPipeline::linkPadWithTrack):
(WebCore::AppendPipeline::makeWebKitTrack):
(WebCore::AppendPipeline::Track::initializeElements):
(WebCore::AppendPipeline::hookTrackEvents):
(WebCore::AppendPipeline::streamTypeToString):
(WebCore::AppendPipeline::id): Deleted.
(WebCore::AppendPipeline::trackId): Deleted.
(WebCore::AppendPipeline::consumeAppsinkAvailableSamples): Deleted.
(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsinkFromStreamingThread): Deleted.
(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink): Deleted.
(WebCore::AppendPipeline::disconnectDemuxerSrcPadFromAppsinkFromAnyThread): Deleted.
* platform/graphics/gstreamer/mse/AppendPipeline.h:
(WebCore::AppendPipeline::sourceBufferPrivate):
(WebCore::AppendPipeline::Track::Track):
(WebCore::AppendPipeline::appsrc):
(WebCore::AppendPipeline::appsinkCaps): Deleted.
(WebCore::AppendPipeline::track): Deleted.
(WebCore::AppendPipeline::appsink): Deleted.
(WebCore::AppendPipeline::demuxerSrcPadCaps): Deleted.
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::setInitialVideoSize):
(WebCore::MediaPlayerPrivateGStreamerMSE::trackDetected): Deleted.
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:

LayoutTests:

Update expectations and rebaseline one test is which the buffered
ranges have changed slightly due to the audio track previously
discarded now being parsed.

* platform/glib/TestExpectations:
* platform/glib/imported/w3c/web-platform-tests/media-source/mediasource-remove-expected.txt:


Canonical link: https://commits.webkit.org/240823@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@281440 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-08-23 13:22:29 +00:00
..
eme [GStreamer][EME] Try to parse XML init datas that could possibly come from MPD manifests 2021-08-18 08:26:33 +00:00
mse [MSE][GStreamer] Implement multi-track support 2021-08-23 13:22:29 +00:00
AudioTrackPrivateGStreamer.cpp Unreviewed, reverting r281093. 2021-08-16 20:53:42 +00:00
AudioTrackPrivateGStreamer.h Unreviewed, reverting r281093. 2021-08-16 20:53:42 +00:00
GLVideoSinkGStreamer.cpp
GLVideoSinkGStreamer.h
GRefPtrGStreamer.cpp
GRefPtrGStreamer.h
GStreamerAudioMixer.cpp
GStreamerAudioMixer.h
GStreamerCommon.cpp
GStreamerCommon.h [MSE][GStreamer] Implement multi-track support 2021-08-23 13:22:29 +00:00
GStreamerRegistryScanner.cpp
GStreamerRegistryScanner.h
GStreamerVideoFrameHolder.cpp
GStreamerVideoFrameHolder.h
GUniquePtrGStreamer.h
GstAllocatorFastMalloc.cpp
GstAllocatorFastMalloc.h
ImageDecoderGStreamer.cpp
ImageDecoderGStreamer.h
ImageGStreamer.h
ImageGStreamerCairo.cpp
InbandMetadataTextTrackPrivateGStreamer.h
InbandTextTrackPrivateGStreamer.cpp REGRESSION(r278981): [GStreamer][Debug] Assert crashes when running media/track tests 2021-08-17 10:16:41 +00:00
InbandTextTrackPrivateGStreamer.h REGRESSION(r278981): [GStreamer][Debug] Assert crashes when running media/track tests 2021-08-17 10:16:41 +00:00
MainThreadNotifier.h
MediaEngineConfigurationFactoryGStreamer.cpp
MediaEngineConfigurationFactoryGStreamer.h
MediaPlayerPrivateGStreamer.cpp REGRESSION(r218083): [GStreamer] webrtc unexpected failures 2021-08-17 13:47:41 +00:00
MediaPlayerPrivateGStreamer.h Rename MediaPlayer::setVisible to MediaPlayer::setPageIsVisible 2021-08-19 08:40:05 +00:00
MediaPlayerRequestInstallMissingPluginsCallback.h
MediaSampleGStreamer.cpp
MediaSampleGStreamer.h
PlatformDisplayGStreamer.cpp
TextCombinerGStreamer.cpp
TextCombinerGStreamer.h
TextCombinerPadGStreamer.cpp
TextCombinerPadGStreamer.h
TextSinkGStreamer.cpp
TextSinkGStreamer.h
TrackPrivateBaseGStreamer.cpp Unreviewed, reverting r281093. 2021-08-16 20:53:42 +00:00
TrackPrivateBaseGStreamer.h Unreviewed, reverting r281093. 2021-08-16 20:53:42 +00:00
VideoSinkGStreamer.cpp
VideoSinkGStreamer.h
VideoTextureCopierGStreamer.cpp
VideoTextureCopierGStreamer.h
VideoTrackPrivateGStreamer.cpp Unreviewed, reverting r281093. 2021-08-16 20:53:42 +00:00
VideoTrackPrivateGStreamer.h Unreviewed, reverting r281093. 2021-08-16 20:53:42 +00:00
WebKitAudioSinkGStreamer.cpp
WebKitAudioSinkGStreamer.h
WebKitWebSourceGStreamer.cpp
WebKitWebSourceGStreamer.h