Branch: refs/heads/webkitglib/2.50 Home: https://github.com/WebKit/WebKit Commit: b26f2952fad82ea177346345d0f8f4f2abaae7ed https://github.com/WebKit/WebKit/commit/b26f2952fad82ea177346345d0f8f4f2abaae7ed Author: Vivienne Watermeier <vwaterme...@igalia.com> Date: 2025-08-30 (Sat, 30 Aug 2025)
Changed paths: M LayoutTests/TestExpectations A LayoutTests/media/media-source/content/counting-h264-mp4ttsimple-manifest.json A LayoutTests/media/media-source/content/counting-h264-mp4ttsimple.mp4 A LayoutTests/media/media-source/content/test-inband-cea608-track-manifest.json A LayoutTests/media/media-source/content/test-inband-cea608-track.mp4 A LayoutTests/media/media-source/media-source-inband-cea608-track-expected.txt A LayoutTests/media/media-source/media-source-inband-cea608-track.html A LayoutTests/media/media-source/media-source-mp4ttsimple-expected.txt A LayoutTests/media/media-source/media-source-mp4ttsimple.html M LayoutTests/platform/glib/TestExpectations M Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp M Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.h M Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp M Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp M Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.h M Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp Log Message: ----------- Cherry-pick 298284@main (37fb0a0ead92). https://bugs.webkit.org/show_bug.cgi?id=295634 [GStreamer][MSE] Extend text track support to MP4/3GPP timed text and CEA-608 https://bugs.webkit.org/show_bug.cgi?id=295634 Reviewed by Philippe Normand and Alicia Boya Garcia. Adds support for MPEG-4/3GPP timed text (known in MP4 as tx3g), as well as experimental support for CEA-608 captions. Both formats are supported by converting to WebVTT, using the optional parser/encoder elements in the append pipeline. tx3g support is straightforward - since qtdemux pushes raw text buffers, we just need to plug webvttenc. CEA-608 support rests on two elements: ccconverter and cea608tott. As 608 captions are essentially a constant stream of byte pairs, translating them into WebVTT is not quite so simple. Specifically, cea608tott currently swallows the very last cue of the stream, as without an EOS event it can never know at what point that caption is "complete". For experimental support, I consider this "good enough for now". Considerations for solving this in the future: - append pipeline does not expect EOS events in normal operation, so while it would work to push the final cue, it will introduce much bigger issues - instead, we could modify cea608tott itself to introduce a custom event, which would have the same effect on the element, without breaking the append pipeline - the other issue is with timing of this event: - pushing it in response to endOfStream(), append pipeline would end up receiving a buffer outside of an append, which it can't handle - pushing it at each end-of-append will work, but will have the side effect of cutting any caption that stretches across multiple source buffers Note also that currently, we expect the 608 captions to exist in the MP4 as a separate track, just like other subtitle formats would, though it is more common to see it inserted into the video stream. To extract those, we would need to additionally plug the corresponding *ccextractor element after the video decoder. That would require extra effort to handle this "hidden" track properly in AppendPipeline. * LayoutTests/TestExpectations: * LayoutTests/platform/glib/TestExpectations: Enable the new tests only for GTK + WPE ports. * LayoutTests/media/media-source/content/counting-h264-mp4ttsimple-manifest.json: Added. * LayoutTests/media/media-source/content/counting-h264-mp4ttsimple.mp4: Added. * LayoutTests/media/media-source/media-source-mp4ttsimple-expected.txt: Added. * LayoutTests/media/media-source/media-source-mp4ttsimple.html: Added. Same as media-source-vttsimple. * LayoutTests/media/media-source/content/test-inband-cea608-track-manifest.json: Added. * LayoutTests/media/media-source/content/test-inband-cea608-track.mp4: Added. * LayoutTests/media/media-source/media-source-inband-cea608-track-expected.txt: Added. * LayoutTests/media/media-source/media-source-inband-cea608-track.html: Added. Tests conversion to WebVTT. Note cea608tott only pushes 29 cues, instead of the expected 30 (see above). * Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp: Indicate support for tx3g and x-cea-608, if webvttenc and cea608tott respectively are available. (WebCore::GStreamerRegistryScanner::ElementFactories::ElementFactories): (WebCore::GStreamerRegistryScanner::ElementFactories::~ElementFactories): (WebCore::GStreamerRegistryScanner::ElementFactories::elementFactoryTypeToString): (WebCore::GStreamerRegistryScanner::ElementFactories::factory const): (WebCore::GStreamerRegistryScanner::ElementFactories::hasElementForCaps const): (WebCore::GStreamerRegistryScanner::initializeDecoders): * Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.h: Add ElementFactories::Type::CaptionEncoder * Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp: Fix some logging. (WebCore::InbandTextTrackPrivateGStreamer::InbandTextTrackPrivateGStreamer): (WebCore::InbandTextTrackPrivateGStreamer::notifyTrackOfSample): * Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp: (WebCore::AppendPipeline::appsrcEndOfAppendCheckerProbe): Write pipeline dump at end-of-append. (WebCore::AppendPipeline::parseDemuxerSrcPadCaps): Handle closedcaption/x-cea-608 as StreamType::Text (WebCore::AppendPipeline::appsinkCapsChanged): Small fix for some "incompatible caps" errors I encountered. (WebCore::createOptionalParserForFormat): Plug ccconverter for closedcaption/x-cea-608 (WebCore::createOptionalEncoderForFormat): Plug cea608tott for closedcaption/x-cea-608 (WebCore::AppendPipeline::Track::emplaceOptionalElementsForFormat): Combine both emplaceOptional... methods into one. (WebCore::AppendPipeline::Track::emplaceOptionalParserForFormat): Deleted. (WebCore::AppendPipeline::Track::emplaceOptionalEncoderForFormat): Deleted. (WebCore::AppendPipeline::Track::initializeElements): (WebCore::AppendPipeline::recycleTrackForPad): * Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.h: * Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp: (WebCore::SourceBufferPrivateGStreamer::enqueueSample): Log contents of text samples. (WebCore::SourceBufferPrivateGStreamer::isReadyForMoreSamples): Fix some logging. Canonical link: https://commits.webkit.org/298284@main Canonical link: https://commits.webkit.org/298234.92@webkitglib/2.50 Commit: a6527fadfa60c0703ce050a38b29be9420d5d1d0 https://github.com/WebKit/WebKit/commit/a6527fadfa60c0703ce050a38b29be9420d5d1d0 Author: Philippe Normand <ph...@igalia.com> Date: 2025-08-30 (Sat, 30 Aug 2025) Changed paths: M LayoutTests/platform/glib/TestExpectations A LayoutTests/platform/glib/imported/w3c/web-platform-tests/media-source/mediasource-remove-expected.txt M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp M Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp M Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.h Log Message: ----------- Cherry-pick 299318@main (b87a52fd5788). https://bugs.webkit.org/show_bug.cgi?id=297116 [GStreamer] Audio is distorted in Kaltura videos https://bugs.webkit.org/show_bug.cgi?id=297116 Reviewed by Xabier Rodriguez-Calvar. Re-allow decodebin(3) to autoplug avdec_aac decoders after making sure the MSE AAC parser emits frames with ADTS headers. Raw AAC doesn't seem very well supported in avdec_aac, leading to garbled audio rendering. The fdkaacdec decoder handles raw AAC better, but depends on FDK-AAC which might not be shipped by every distro, or requires explicit installation from non-free repositories. Canonical link: https://commits.webkit.org/299318@main Canonical link: https://commits.webkit.org/298234.93@webkitglib/2.50 Compare: https://github.com/WebKit/WebKit/compare/5519f11b83fd...a6527fadfa60 To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes