Skip to content

Wpe 2.38 quirks - #1297

Merged
philn merged 17 commits into
wpe-2.38from
wpe-2.38-quirks
Mar 29, 2024
Merged

Wpe 2.38 quirks#1297
philn merged 17 commits into
wpe-2.38from
wpe-2.38-quirks

Conversation

@philn

Copy link
Copy Markdown

No description provided.

@philn
philnforce-pushed the wpe-2.38-quirks branch 2 times, most recently from a4cac78 to 071ee86CompareMarch 12, 2024 09:49
@philn
philn marked this pull request as ready for review March 13, 2024 09:55
@philn

Copy link
Copy Markdown
Author

Hold on, I forgot to remove one ifdef...

@philn

Copy link
Copy Markdown
Author

Hold on, I forgot to remove one ifdef...

This fixed, the PR is ready for testing/review!

@emutavchiemutavchi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quirks should also allow changing playbin flags in MediaPlayerPrivateGStreamer::setPlaybackFlags . For example native-audio is Broadcom quirk.

Comment threadSource/WebCore/platform/gstreamer/GStreamerQuirks.h Outdated
Comment threadSource/WebCore/platform/gstreamer/GStreamerQuirkWesteros.cpp Outdated
Comment threadSource/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.cpp Outdated
Comment threadSource/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.cpp Outdated
Comment threadSource/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp Outdated
@philn

Copy link
Copy Markdown
Author

Quirks should also allow changing playbin flags in MediaPlayerPrivateGStreamer::setPlaybackFlags . For example native-audio is Broadcom quirk.

I wasn't aware of that. Yeah definitely, @calvaris already suggested removing those native-video/etc ifdefs. I can take a look.

webkit-commit-queue pushed a commit to philn/WebKit that referenced this pull request Mar 21, 2024
https://bugs.webkit.org/show_bug.cgi?id=271308
Reviewed by Xabier Rodriguez-Calvar.
The USE_GSTREAMER_TEXT_SINK and USE_GSTREAMER_NATIVE_{AUDIO,VIDEO} ifdefs were replaced with runtime
quirks. This patch also includes changes requested in
WebPlatformForEmbedded/WPEWebKit#1297.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::setPlaybackFlags):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
(WebCore::MediaPlayerPrivateGStreamer::pipeline const):
* Source/WebCore/platform/gstreamer/GStreamerHolePunchQuirkWesteros.cpp:
(WebCore::GStreamerHolePunchQuirkWesteros::createHolePunchVideoSink):
* Source/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.cpp:
(WebCore::GStreamerQuirkAmLogic::configureElement):
* Source/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.h:
* Source/WebCore/platform/gstreamer/GStreamerQuirks.cpp:
(WebCore::GStreamerQuirksManager::getAdditionalPlaybinFlags const):
* Source/WebCore/platform/gstreamer/GStreamerQuirks.h:
(WebCore::GStreamerQuirk::getAdditionalPlaybinFlags const):
* Source/cmake/GStreamerDefinitions.cmake:
Canonical link: https://commits.webkit.org/276450@main
@philn

Copy link
Copy Markdown
Author

I've rebased the branch and backported the changes requested by @emutavchi (see most recent commit).

@philn
philn requested a review from emutavchiMarch 21, 2024 10:12
Comment threadSource/WebCore/platform/gstreamer/GStreamerQuirkWesteros.cpp Outdated
@philn
philn requested a review from calvarisMarch 21, 2024 13:33

@calvariscalvaris left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. What I don't know is if we should wait until we have a confirmation from @emutavchi .

@emutavchiemutavchi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Few more changes required, that were overlooked last time.

Comment threadSource/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.cpp Outdated
Comment threadSource/WebCore/platform/gstreamer/GStreamerQuirkRealtek.cpp Outdated
Comment threadSource/WebCore/platform/gstreamer/GStreamerQuirkWesteros.cpp Outdated
philn added 5 commits March 27, 2024 09:03
https://bugs.webkit.org/show_bug.cgi?id=269287
Reviewed by NOBODY (OOPS!).
Compile-time quirks prevent re-usability of the same binaries across different platforms (using
containers). The proposed solution is to always compile those, they don't depend on any specific
APIs so that shouldn't be an issue. Then at runtime quirks can be tweaked using the
WEBKIT_GST_QUIRKS and WEBKIT_GST_HOLE_PUNCH environment variables.
* Source/WebCore/platform/SourcesGStreamer.txt:
* Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):
* Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:
(WebCore::decodebinAutoplugSelectCallback):
(WebCore::AudioFileReader::~AudioFileReader):
(WebCore::AudioFileReader::decodeAudioForBusCreation):
* Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::ensureGStreamerInitialized):
(WebCore::registerWebKitGStreamerElements):
* Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
(WebCore::GStreamerRegistryScanner::ElementFactories::ElementFactories):
(WebCore::GStreamerRegistryScanner::ElementFactories::hasElementForCaps const):
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):
(WebCore::setSyncOnClock):
(WebCore::MediaPlayerPrivateGStreamer::createAudioSink):
(WebCore::MediaPlayerPrivateGStreamer::gstreamerPositionFromSinks const):
(WebCore::MediaPlayerPrivateGStreamer::naturalSize const):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::configureElement):
(WebCore::MediaPlayerPrivateGStreamer::configureElementPlatformQuirks):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::swapBuffersIfNeeded):
(WebCore::setRectangleToVideoSink):
(WebCore::MediaPlayerPrivateGStreamer::isHolePunchRenderingEnabled const):
(WebCore::MediaPlayerPrivateGStreamer::createHolePunchVideoSink):
(WebCore::MediaPlayerPrivateGStreamer::shouldIgnoreIntrinsicSize):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* Source/WebCore/platform/gstreamer/GStreamerHolePunchQuirkBcmNexus.cpp: Added.
(WebCore::GStreamerHolePunchQuirkBcmNexus::setHolePunchVideoRectangle):
* Source/WebCore/platform/gstreamer/GStreamerHolePunchQuirkBcmNexus.h: Added.
* Source/WebCore/platform/gstreamer/GStreamerHolePunchQuirkWesteros.cpp: Added.
(WebCore::GStreamerHolePunchQuirkWesteros::createHolePunchVideoSink):
(WebCore::GStreamerHolePunchQuirkWesteros::setHolePunchVideoRectangle):
* Source/WebCore/platform/gstreamer/GStreamerHolePunchQuirkWesteros.h: Added.
* Source/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.cpp: Added.
(WebCore::GStreamerQuirkAmLogic::GStreamerQuirkAmLogic):
(WebCore::GStreamerQuirkAmLogic::createWebAudioSink):
(WebCore::GStreamerQuirkAmLogic::configureElement):
* Source/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.h: Added.
* Source/WebCore/platform/gstreamer/GStreamerQuirkBcmNexus.cpp: Added.
(WebCore::GStreamerQuirkBcmNexus::GStreamerQuirkBcmNexus):
(WebCore::GStreamerQuirkBcmNexus::isHardwareAccelerated):
* Source/WebCore/platform/gstreamer/GStreamerQuirkBcmNexus.h: Added.
* Source/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.cpp: Added.
(WebCore::GStreamerQuirkBroadcom::GStreamerQuirkBroadcom):
(WebCore::GStreamerQuirkBroadcom::configureElement):
(WebCore::GStreamerQuirkBroadcom::isHardwareAccelerated):
* Source/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.h: Added.
* Source/WebCore/platform/gstreamer/GStreamerQuirkRealtek.cpp: Added.
(WebCore::GStreamerQuirkRealtek::GStreamerQuirkRealtek):
(WebCore::GStreamerQuirkRealtek::createWebAudioSink):
(WebCore::GStreamerQuirkRealtek::configureElement):
(WebCore::GStreamerQuirkRealtek::isHardwareAccelerated):
* Source/WebCore/platform/gstreamer/GStreamerQuirkRealtek.h: Added.
* Source/WebCore/platform/gstreamer/GStreamerQuirkWesteros.cpp: Added.
(WebCore::GStreamerQuirkWesteros::GStreamerQuirkWesteros):
(WebCore::GStreamerQuirkWesteros::configureElement):
(WebCore::GStreamerQuirkWesteros::isHardwareAccelerated):
* Source/WebCore/platform/gstreamer/GStreamerQuirkWesteros.h: Added.
* Source/WebCore/platform/gstreamer/GStreamerQuirks.cpp: Added.
(WebCore::GStreamerQuirksManager::singleton):
(WebCore::GStreamerQuirksManager::GStreamerQuirksManager):
(WebCore::GStreamerQuirksManager::isEnabled const):
(WebCore::GStreamerQuirksManager::createWebAudioSink):
(WebCore::GStreamerQuirksManager::createHolePunchVideoSink):
(WebCore::GStreamerQuirksManager::setHolePunchVideoRectangle):
(WebCore::GStreamerQuirksManager::configureElement):
(WebCore::GStreamerQuirksManager::isHardwareAccelerated const):
(WebCore::GStreamerQuirksManager::supportsVideoHolePunchRendering const):
(WebCore::GStreamerQuirksManager::audioVideoDecoderFactoryListType const):
(WebCore::GStreamerQuirksManager::disallowedWebAudioDecoders const):
* Source/WebCore/platform/gstreamer/GStreamerQuirks.h: Added.
(WebCore::GStreamerQuirk::isPlatformSupported const):
(WebCore::GStreamerQuirk::createWebAudioSink):
(WebCore::GStreamerQuirk::configureElement):
(WebCore::GStreamerQuirk::isHardwareAccelerated):
(WebCore::GStreamerQuirk::audioVideoDecoderFactoryListType const):
(WebCore::GStreamerQuirk::disallowedWebAudioDecoders const):
(WebCore::GStreamerHolePunchQuirk::createHolePunchVideoSink):
(WebCore::GStreamerHolePunchQuirk::setHolePunchVideoRectangle):
* Source/cmake/OptionsWPE.cmake:
@modeveci

Copy link
Copy Markdown

@emutavchi , Once you approved this PR, then I think we are ready to merge. @philn let's wait Eugene's approval and then we can continue.

philn added 2 commits March 29, 2024 09:58
https://bugs.webkit.org/show_bug.cgi?id=271697
Reviewed by NOBODY (OOPS!).
On some platforms it is desirable to apply that quirk unconditionally, because multiple
platform-specific quirks are requested.
* Source/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.cpp:
(WebCore::GStreamerQuirkAmLogic::configureElement):
* Source/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.h:
* Source/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.cpp:
(WebCore::GStreamerQuirkBroadcom::configureElement):
* Source/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.h:
* Source/WebCore/platform/gstreamer/GStreamerQuirkRealtek.cpp:
(WebCore::GStreamerQuirkRealtek::configureElement):
* Source/WebCore/platform/gstreamer/GStreamerQuirkRealtek.h:
* Source/WebCore/platform/gstreamer/GStreamerQuirkWesteros.cpp:
(WebCore::GStreamerQuirkWesteros::configureElement):
* Source/WebCore/platform/gstreamer/GStreamerQuirkWesteros.h:
* Source/WebCore/platform/gstreamer/GStreamerQuirks.cpp:
(WebCore::GStreamerQuirksManager::configureElement):
* Source/WebCore/platform/gstreamer/GStreamerQuirks.h:
(WebCore::GStreamerQuirk::configureElement):
https://bugs.webkit.org/show_bug.cgi?id=271751
Reviewed by NOBODY (OOPS!).
Allow the decoder pipeline to skip auto-plugging of hardware-accelerated decoders and also to
disable parsing, both for Broadcom and Realtek quirks.
* Source/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.h:
* Source/WebCore/platform/gstreamer/GStreamerQuirkRealtek.h:
* Source/WebCore/platform/gstreamer/GStreamerQuirks.cpp:
(WebCore::GStreamerQuirksManager::shouldParseIncomingLibWebRTCBitStream const):
* Source/WebCore/platform/gstreamer/GStreamerQuirks.h:
(WebCore::GStreamerQuirk::shouldParseIncomingLibWebRTCBitStream const):
* Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoDecoderFactory.cpp:
(WebCore::GStreamerWebRTCVideoDecoder::getGstAutoplugSelectResult):
(WebCore::H264Decoder::H264Decoder):
@philn
philn requested a review from emutavchiMarch 29, 2024 10:41

@emutavchiemutavchi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me

@philn
philn merged commit 99973c6 into wpe-2.38Mar 29, 2024
@philn
philn deleted the wpe-2.38-quirks branch March 29, 2024 14:34
calvaris pushed a commit that referenced this pull request May 14, 2024
https://bugs.webkit.org/show_bug.cgi?id=271308
Reviewed by Xabier Rodriguez-Calvar.
The USE_GSTREAMER_TEXT_SINK and USE_GSTREAMER_NATIVE_{AUDIO,VIDEO} ifdefs were replaced with runtime
quirks. This patch also includes changes requested in
#1297.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::setPlaybackFlags):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
(WebCore::MediaPlayerPrivateGStreamer::pipeline const):
* Source/WebCore/platform/gstreamer/GStreamerHolePunchQuirkWesteros.cpp:
(WebCore::GStreamerHolePunchQuirkWesteros::createHolePunchVideoSink):
* Source/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.cpp:
(WebCore::GStreamerQuirkAmLogic::configureElement):
* Source/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.h:
* Source/WebCore/platform/gstreamer/GStreamerQuirks.cpp:
(WebCore::GStreamerQuirksManager::getAdditionalPlaybinFlags const):
* Source/WebCore/platform/gstreamer/GStreamerQuirks.h:
(WebCore::GStreamerQuirk::getAdditionalPlaybinFlags const):
* Source/cmake/GStreamerDefinitions.cmake:
Canonical link: https://commits.webkit.org/276450@main
calvaris pushed a commit that referenced this pull request Jul 1, 2024
https://bugs.webkit.org/show_bug.cgi?id=271308
Reviewed by Xabier Rodriguez-Calvar.
The USE_GSTREAMER_TEXT_SINK and USE_GSTREAMER_NATIVE_{AUDIO,VIDEO} ifdefs were replaced with runtime
quirks. This patch also includes changes requested in
#1297.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::setPlaybackFlags):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
(WebCore::MediaPlayerPrivateGStreamer::pipeline const):
* Source/WebCore/platform/gstreamer/GStreamerHolePunchQuirkWesteros.cpp:
(WebCore::GStreamerHolePunchQuirkWesteros::createHolePunchVideoSink):
* Source/WebCore/platform/gstreamer/GStreamerQuirkAmLogic.cpp:
(WebCore::GStreamerQuirkAmLogic::configureElement):
* Source/WebCore/platform/gstreamer/GStreamerQuirkBroadcom.h:
* Source/WebCore/platform/gstreamer/GStreamerQuirks.cpp:
(WebCore::GStreamerQuirksManager::getAdditionalPlaybinFlags const):
* Source/WebCore/platform/gstreamer/GStreamerQuirks.h:
(WebCore::GStreamerQuirk::getAdditionalPlaybinFlags const):
* Source/cmake/GStreamerDefinitions.cmake:
Canonical link: https://commits.webkit.org/276450@main
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

4 participants

@philn@modeveci@emutavchi@calvaris