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

switch to gstreamer 1.x on win32 #1041

Closed
totaam opened this issue Nov 23, 2015 · 15 comments
Closed

switch to gstreamer 1.x on win32 #1041

totaam opened this issue Nov 23, 2015 · 15 comments

Comments

@totaam
Copy link
Collaborator

totaam commented Nov 23, 2015

Split from #970.

In particular, #970#comment:17

We will probably need to build things twice and bundle a nested app.
Hopefully this won't be too big.
This may have some benefits too:

  • we could ship a different version of python for the sound process (ie: python3)
  • this ensures that the sound modules and dlls cannot be loaded from the main process at all
@totaam
Copy link
Collaborator Author

totaam commented Jan 3, 2016

After many fixes to the py3k build and its packaging, and updating it to the latest gobject win32 binaries (ie: r11567), we can run the gstreamer 1.x sound helper from a python2 / gtk2 client:

  • run the py3k build and install the client
  • run the py2k build and install somewhere else
  • use the XPRA_SOUND_COMMAND override to point the py2k client at the py3k helper

This needs packaging and trimming down - oh, that's going to be fun.

@totaam
Copy link
Collaborator Author

totaam commented Jan 4, 2016

Re gtkglext, see #640#comment:34.

Lots of preparatory work related to python3 packaging done in r11573 + r11575 (batch file refactoring), r11571 (DLL packaging).
Added support for GStreamer 1.x opus and vorbis in r11572.
Finally, the big one in r11579.

Still TODO:

  • trim down the python3 build further (remove "--with-gtk3" and "--with-client" which should not be needed)
  • fix bencode warning (and related alert box?)

I think we'll keep GStreamer 0.10 in this release so we still have a fallback, and remove it completely in 0.18: #1071.

@totaam
Copy link
Collaborator Author

totaam commented Jan 5, 2016

2016-01-05 04:53:39: antoine uploaded file win32-sound-env-filter.patch (2.2 KiB)

could be useful if we need to modify the environment on win32 before launching the sound subprocess

@totaam
Copy link
Collaborator Author

totaam commented Jan 5, 2016

Done in r11584, with some self-contained general code improvements in r11586, r11587, r11583, r11581, r11588, r11589.

The compressed installer has gained a bit of weight (about 10MB) because of the extra duplicate binaries it now contains: python 3.4 interpreter, gstreamer 1.x libraries, python modules..
The actual disk space used has increased by 45MB from ~92MB to 137MB.

We can reduce this by removing gstreamer 0.10 from the installation (#1071 scheduled for 0.18), but for the time being I prefer to keep both so that we can toggle which one is used at runtime using the XPRA_GSTREAMER1=0 env var (could be useful for debugging and comparing).

The version of gstreamer currently in use can be seen in the client output, or on the session info dialog.

@afarr: ready for testing, there should be no user visible changes, apart from the availability of newer codecs (opus).
It might make sense to test this one with #1074.


Still on my TODO list / nice to have / later:

  • get rid of the warning about missing "bencode" (we don't care, we use rencode)
  • trim DLL dependencies further (dupe msvcr..)
  • split gobject util so we can include the gobject bits without any gtk
  • better error handling in the "xpra_cmd.exe" built without client / server support

@totaam
Copy link
Collaborator Author

totaam commented Jan 13, 2016

the bencode warning was meant to be fixed (really ugly fix) in r11685 - doesn't seem to have done it :(

@totaam
Copy link
Collaborator Author

totaam commented Feb 29, 2016

@smo: I've updated to the latest gi aio build (pygi aio 3.18.2 rev5 released yesterday), and got gstreamer 1.6.3 for free.

Please update your build system and re-assign to afarr.

@totaam
Copy link
Collaborator Author

totaam commented Mar 31, 2016

2016-03-31 23:33:26: smo commented


I've updated this and built new installers. Looks to have all the necessary files I will pass on to afarr for some more testing.

@totaam
Copy link
Collaborator Author

totaam commented Apr 15, 2016

Note: version 3.18.2 rev6 of the gi bindings is out, but this does not update gstreamer, still at 1.6.3

@totaam
Copy link
Collaborator Author

totaam commented Jul 27, 2016

2016-07-27 19:17:26: maxmylyn commented


Did some testing with the r13031 trunk Windows client (from /beta) against a trunk r13101 Fedora 23 server:

  • Most codecs and containers work fine. I used --speaker-codec= on the client side to force a specific codec+container combo.

  • I got an error with flac+ogg :

2016-07-27 11:11:53,022 sound output pipeline error: gst-stream-error-quark: Internal data flow error. (1)
2016-07-27 11:11:53,024 sound output  gstbasesrc.c(2943)
2016-07-27 11:11:53,025 sound output  gst_base_src_loop ()
2016-07-27 11:11:53,025 sound output  /GstPipeline:pipeline0/GstAppSrc:src:
2016-07-27 11:11:53,026 sound output  streaming task paused, reason not-negotiated (-4)
2016-07-27 11:11:53,026 sound output stopping
2016-07-27 11:11:53,028 stopping speaker because of error: gst-stream-error-quark: Internal data flow error. (1)
2016-07-27 11:11:53,522 sound output using audio codec flac

It consistently fails, so it's not a one time thing.


Other than that combo not working, everything else I tried worked fine.

@totaam
Copy link
Collaborator Author

totaam commented Jul 28, 2016

I got an error with flac+ogg

Fixed in r13102. (edit: backport not needed)

Most codecs and containers work fine.. Other than that combo not working, everything else I tried worked fine.

Assuming that other platforms have been tested (osx, ubuntu, etc) and that removing flac+ogg is enough, please close.

@totaam
Copy link
Collaborator Author

totaam commented Jul 28, 2016

Had problems with flac+ogg on Fedora, so now it is disabled on all platforms by default: r13108. (even though it seems to work with osx clients)

@totaam
Copy link
Collaborator Author

totaam commented Aug 8, 2016

2016-08-08 20:43:47: maxmylyn commented


Did some further testing with newer versions:

  • Fedora 23 trunk r13283 behaves nicely. No issues with sound codecs

  • OSX r13235 on the other hand does not have working vorbis and flac at all, all combinations fail. The other codecs behave nicely, however

  • They fail with the same error as mentioned in comment:8

@totaam
Copy link
Collaborator Author

totaam commented Aug 9, 2016

This ticket is about win32 and can be close IF all the codecs work on win32.
Please update #1276 for OSX and record the OSX version(s) used for testing there (since different versions of OSX seem to give different results).

@totaam
Copy link
Collaborator Author

totaam commented Aug 9, 2016

2016-08-09 17:13:59: maxmylyn commented


I had a feeling that's what you'd say, but just wanted to make sure.

All the other codec combinations I've tried (I am fairly sure I hit them all) worked fine in Win32.

Closing.

@totaam totaam closed this as completed Aug 9, 2016
@totaam
Copy link
Collaborator Author

totaam commented Jul 10, 2017

Note: we no longer use python3 for the sound subprocess on win32 since #678, because cx_freeze chokes on the python3 bits.

This could be re-added, see #640 and #1568.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant