-
Notifications
You must be signed in to change notification settings - Fork 152
Wpe 2.38 quirks #1297
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
Wpe 2.38 quirks #1297
Conversation
a4cac78 to
071ee86
Compare
|
Hold on, I forgot to remove one ifdef... |
This fixed, the PR is ready for testing/review! |
emutavchi
left a comment
There was a problem hiding this 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.
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
Outdated
Show resolved
Hide resolved
I wasn't aware of that. Yeah definitely, @calvaris already suggested removing those native-video/etc ifdefs. I can take a look. |
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
|
I've rebased the branch and backported the changes requested by @emutavchi (see most recent commit). |
calvaris
left a comment
There was a problem hiding this 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 .
emutavchi
left a comment
There was a problem hiding this 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.
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:
Backport of https://commits.webkit.org/276450@main keeping old ifdefs compatibility, so the GStreamerQuirksManager::getAdditionalPlaybinFlags() implementation diverges from upstream version.
Downstream GStreamer is already patched for playbin3 decoder/sink handling.
|
@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. |
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):
emutavchi
left a comment
There was a problem hiding this 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
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
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
No description provided.