xpra icon
Bug tracker and wiki

This bug tracker and wiki are being discontinued
please use https://github.com/Xpra-org/xpra instead.


Opened 8 years ago

Closed 8 years ago

Last modified 4 months ago

#289 closed defect (fixed)

ensure the osx build include all the gstreamer modules we need (and only those)

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: major Milestone: 0.9
Component: platforms Version: trunk
Keywords: packaging Cc:

Description

And as a result, sound does not work unless the GStreamer framework is installed locally, and the option is now shown in the menu.

Change History (4)

comment:1 Changed 8 years ago by Antoine Martin

Status: newassigned
Summary: osx build does not include all gstreamer componentsosx build does not include all / too many gstreamer components

r2930 sets up the correct paths, which means we can now see the plugins from wherever the application is installed (here on a clean/minimal 10.6.8 system):

$ Xpra.app/Contents/Helpers/Python -c "from xpra.sound import gstreamer_util;gstreamer_util.main()"
2013-03-10 13:16:58,570 GStreamer plugins found: 3gppmux, aacparse, ac3iec958, \
    ac3parse, adder, adpcmdec .......

And the configuration class also sees them:

$ Xpra.app/Contents/Helpers/Python -c \
    "from xpra.scripts.config import get_codecs;print('codecs=%s' % get_codecs(True,False))"
codecs=['mp3', 'wav']
$ Xpra.app/Contents/Helpers/Python -c \
    "from xpra.scripts.config import get_codecs;print('codecs=%s' % get_codecs(False,False))"
codecs=['mp3', 'wav']

Problem is that somehow the xpra attach command somehow does not!?:

WARNING: some of the specified speaker codecs are not available: mp3
WARNING: some of the specified microphone codecs are not available: mp3

So, still left to do:

  • fix "xpra attach"
  • ensure we ship all the required dylibs to support aac, opus, etc..
  • trim down the list of plugins we ship (similar to r2776 for win32)
Last edited 8 years ago by Antoine Martin (previous) (diff)

comment:2 Changed 8 years ago by Antoine Martin

Summary: osx build does not include all / too many gstreamer componentsensure the osx build include all the gstreamer modules we need (and only those)

First, the osx build instructions needed updating to include all the audio codecs we want to support. Then re-build all the gstreamer modules... (long)


Then we need to figure out which dylibs we want to include, since py2app and gtk-mac-bundler fail to do this automagically for us.

Here is how to get the list of dylibs for a plugin :

otool -L Xpra.app/Contents/Resources/lib/gstreamer-0.10/libgstfaac.so 
Xpra.app/Contents/Resources/lib/gstreamer-0.10/libgstfaac.so:
	@executable_path/../Resources/lib/libfaac.0.dylib (compatibility version 1.0.0, current version 1.0.0)
	@executable_path/../Resources/lib/libgstbase-0.10.0.dylib (compatibility version 30.0.0, current version 30.0.0)
	@executable_path/../Resources/lib/libgstreamer-0.10.0.dylib (compatibility version 30.0.0, current version 30.0.0)
	@executable_path/../Resources/lib/libgobject-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.1.0)
	@executable_path/../Resources/lib/libgmodule-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.1.0)
	@executable_path/../Resources/lib/libgthread-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.1.0)
	@executable_path/../Resources/lib/libxml2.2.dylib (compatibility version 12.0.0, current version 12.0.0)
	@executable_path/../Resources/lib/libglib-2.0.0.dylib (compatibility version 3401.0.0, current version 3401.1.0)
	@executable_path/../Resources/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.1.0)
	@executable_path/../Resources/lib/libgstaudio-0.10.0.dylib (compatibility version 25.0.0, current version 25.0.0)
	/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)

The lib directory already contains the base plugins (which need a little bit of trimming):

libgst*0.10.dylib
libgstapp-0.10.dylib
libgstaudio-0.10.dylib
libgstbase-0.10.dylib
libgstbasevideo-0.10.dylib
libgstcdda-0.10.dylib
libgstcheck-0.10.dylib
libgstcontroller-0.10.dylib
libgstdataprotocol-0.10.dylib
libgstfft-0.10.dylib
libgstinterfaces-0.10.dylib
libgstnet-0.10.dylib
libgstnetbuffer-0.10.dylib
libgstpbutils-0.10.dylib
libgstphotography-0.10.dylib
libgstreamer-0.10.dylib
libgstriff-0.10.dylib
libgstrtp-0.10.dylib
libgstrtsp-0.10.dylib
libgstsdp-0.10.dylib
libgstsignalprocessor-0.10.dylib
libgsttag-0.10.dylib
libgstvideo-0.10.dylib

And the following generic dylibs which are also used/included by gtk:

libgobject-2.0.0.dylib
libgmodule-2.0.0.dylib
libgthread-2.0.0.dylib
libxml2.2.dylib
libglib-2.0.0.dylib
libintl.8.dylib

And now the list of extras we need:

  • libfaac.0.dylib:
    libfaac.0.dylib
    
  • libfaad.0.dylib:
    libfaad.2.dylib
    
  • libgstvorbis.so:
    libvorbisenc.2.dylib
    libvorbis.0.dylib
    
  • libgstmad.so:
    libmad.0.dylib
    
  • libgstlame.so:
    libmp3lame.0.dylib
    
  • libgstflac.so:
    libFLAC.8.dylib
    
  • libgstmpegaudioparse.so: none
  • libgstspeex.so:
    libspeex.1.dylib
    
  • libgstwavpack.so:
    libwavpack.1.dylib
    
  • libgstwavparse.so: none

That is now what is included in the OSX builds as of r2931.


Notes:

  • a number of codecs are sub-optimal on OSX (flac lacks assembler optimizations, opus build moans about the lack of "fast float approximations").
  • opus support is not included since it is not supported in the gstreamer 0.10.x versions that build properly on OSX

comment:3 Changed 8 years ago by Antoine Martin

Resolution: fixed
Status: assignedclosed

The missing plugins error is fixed in r2933

Closing - this works OK-ish for now on OSX, just be aware of #249

comment:4 Changed 4 months ago by migration script

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/289

Note: See TracTickets for help on using tickets.