Skip to content
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

Windows GStreamer DLL packaging needs to include more plugins #23631

Closed
jdm opened this issue Jun 24, 2019 · 1 comment
Closed

Windows GStreamer DLL packaging needs to include more plugins #23631

jdm opened this issue Jun 24, 2019 · 1 comment

Comments

@jdm
Copy link
Member

@jdm jdm commented Jun 24, 2019

From an email with friends at Centricular:

> https://github.com/servo/servo/blob/8e783577d24cac2983fbea1b46d5452ffa5fb44f/python/servo/build_commands.py#L737-L759
>

That lists all the libraries that Servo links to, but it doesn't list
the plugins that are loaded at runtime. For UWP you'll need to add
those as assets alongside the libraries. I grepped the servo/media
source:

grep -rie gst::ElementFactory::make * | sed -ne 's/.*gst::ElementFactory::make("\([^"]*\)".*/\1/p' | sort | uniq

This yielded the following elements:

appsink
appsrc
audioconvert
audioresample
audiotestsrc
autoaudiosink
capsfilter
decodebin
deinterleave
glsinkbin
opusenc
proxysink
proxysrc
queue
rtpopuspay
rtpvp8pay
videoconvert
videotestsrc
vp8enc
webrtcbin

These correspond to the following plugins:

gstapp
gstaudioconvert
gstaudioresample
gstaudiotestsrc
gstautodetect
gstcoreelements
gstplayback
gstinterleave
gstopengl
gstopus (*)
gstproxy
gstrtp
gstvideoconvert
gstvideotestsrc
gstvpx (*)
gstwebrtc (*)

And:

I forgot to mention another thing: autovideosink, autoaudiosink
(gstautodetect), and decodebin (gstplayback) will autodetect which
elements can / should be used for the pipeline and load them
dynamically. So you'll also need at least wasapisink (gstwasapi),
glimagesink (gstopengl) and avdec_{h264,vp8,aac,opus,*} (gstlibav). 
@jdm
Copy link
Member Author

@jdm jdm commented Jul 3, 2019

We should do a few things here:

  • increase the set of packaged DLLs to include the plugins that live in $gst_root/libs/gstreamer-1.0
  • add an explicit step when initializing the media backend to load the packaged plugins into the gstreamer registry

This will allow local desktop builds to work as well as nightly builds.

bors-servo added a commit that referenced this issue Jul 5, 2019
Support WebAudio on Windows

These changes improve the GStreamer experience on Windows in several ways:
* we package the set of plugins and their dependencies that Servo requires for media support
* we explicitly load those plugins when starting the media engine rather than relying on an existing gstreamer installation

These changes do not affect the experience on non-Windows platforms, but the path is clear to do so in order to fix problems like #23519. With these changes I can successfully hear a tone when loading https://joshmatthews.net/osc.html in both a desktop build and a UWP build.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23631 and fix #23698
- [x] These changes do not require tests because no tests on windows ;_;

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23712)
<!-- Reviewable:end -->
bors-servo added a commit that referenced this issue Jul 8, 2019
Support WebAudio on Windows

These changes improve the GStreamer experience on Windows in several ways:
* we package the set of plugins and their dependencies that Servo requires for media support
* we explicitly load those plugins when starting the media engine rather than relying on an existing gstreamer installation

These changes do not affect the experience on non-Windows platforms, but the path is clear to do so in order to fix problems like #23519. With these changes I can successfully hear a tone when loading https://joshmatthews.net/osc.html in both a desktop build and a UWP build.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23631 and fix #23698
- [x] These changes do not require tests because no tests on windows ;_;

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23712)
<!-- Reviewable:end -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

1 participant
You can’t perform that action at this time.