Skip to content

Conversation

@philn
Copy link

@philn philn commented Mar 11, 2024

No description provided.

@philn philn added the wpe-2.38 label Mar 11, 2024
@philn philn force-pushed the wpe-2.38-quirks branch 2 times, most recently from a4cac78 to 071ee86 Compare March 12, 2024 09:49
@philn philn marked this pull request as ready for review March 13, 2024 09:55
@modeveci modeveci requested review from emutavchi and modeveci March 13, 2024 12:32
@philn
Copy link
Author

philn commented Mar 13, 2024

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

@philn
Copy link
Author

philn commented Mar 13, 2024

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

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

Copy link
Collaborator

@emutavchi emutavchi left a comment

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.

@philn
Copy link
Author

philn commented Mar 20, 2024

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 philn force-pushed the wpe-2.38-quirks branch from 7012c58 to a5fd98e Compare March 21, 2024 10:09
@philn
Copy link
Author

philn commented Mar 21, 2024

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

@philn philn requested a review from emutavchi March 21, 2024 10:12
@philn philn requested a review from calvaris March 21, 2024 13:33
Copy link
Member

@calvaris calvaris left a comment

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 .

Copy link
Collaborator

@emutavchi emutavchi left a comment

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.

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:
@philn philn force-pushed the wpe-2.38-quirks branch from b49989a to 6bac194 Compare March 27, 2024 09:06
@modeveci
Copy link

@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 emutavchi March 29, 2024 10:41
Copy link
Collaborator

@emutavchi emutavchi left a comment

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.38 Mar 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 free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

5 participants