Xpra-org / xpra

Persistent remote applications for X11; screen sharing for X11, MacOS and MSWindows.
https://xpra.org/
GNU General Public License v2.0
1.91k stars 164 forks source link

M1 Macbook support for sound #3150

Closed davideger closed 2 years ago

davideger commented 3 years ago

I've installed Xpra 4.2 on an M1 Macbook Air running Mac OS X 10.16, and can run a remote firefox on an Ubuntu machine and display it on the mac, but the client is having trouble initializing sound on the mac. Unfortunately I do not see the file Xpra.app/Contents/MacOS/Xpra _sound_query in the distribution I have, but here is the relevant output with debugging on for the xpra invocation I used -- it looks like the packaged up gstreamer is broken, as all of the plugins seem missing.

$ GST_DEBUG=1 xpra -d sound start ssh://lynn@100.127.48.71/ --start=firefox      

2021-06-01 21:56:22,180 Xpra GTK3 client version 4.2-r0 64-bit
2021-06-01 21:56:22,215  running on Mac OS X 10.16
2021-06-01 21:56:23,765 query_sound() command=['/Applications/Xpra.app/Contents/Xpra_NoDock.app/Contents/Helpers/Xpra', '--windows=no', '--video-encoders=none', '--csc-modules=none', '--video-decoders=none', '--proxy-video-encoders=none', '_sound_query', '-d', 'sound'], env={'TERM': 'xterm', 'SHELL': '/bin/zsh', 'TMPDIR': '/var/folders/b7/s6ht04c57xs4srrl6ffs52f40000gn/T/', 'WINDOWID': '6291468', 'GTK_IM_MODULE_FILE': '/Applications/Xpra.app/Contents/Resources/etc/gtk-2.0/gtk.immodules', 'LC_ALL': 'C', 'XTERM_SHELL': '/bin/zsh', 'USER': 'eger', 'GST_DEBUG': '1', 'COMMAND_MODE': 'unix2003', 'PANGO_SYSCONFDIR': '/Applications/Xpra.app/Contents/Resources/etc', 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.Ff9IkGa5yH/Listeners', '__CF_USER_TEXT_ENCODING': '0x1F5:0x0:0x0', 'XDG_CONFIG_DIRS': '/Applications/Xpra.app/Contents/Resources/etc/xdg', 'PATH': '/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:/opt/X11/bin:/usr/sbin', 'GSETTINGS_SCHEMA_DIR': '/Applications/Xpra.app/Contents/Resources/share/glib-2.0/schemas/', 'PANGO_RC_FILE': '/Applications/Xpra.app/Contents/Resources/etc/pango/pangorc', '__CFBundleIdentifier': 'org.xquartz.X11', 'GDK_PIXBUF_MODULE_FILE': '/Applications/Xpra.app/Contents/Resources/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache', 'PWD': '/Users/eger', 'LANG': 'C', 'GST_BUNDLE_CONTENTS': '/Applications/Xpra.app/Contents', 'GTK_THEME': 'Adwaita', 'PYTHONHOME': '/Applications/Xpra.app/Contents/Resources', 'XPC_FLAGS': '0x0', 'XTERM_LOCALE': 'C', 'XTERM_VERSION': 'XTerm(367)', 'XPC_SERVICE_NAME': '0', 'SHLVL': '2', 'HOME': '/Users/eger', 'DYLD_LIBRARY_PATH': '/Applications/Xpra.app/Contents/Resources/lib', 'GTK_PATH': '/Applications/Xpra.app/Contents/Resources', 'PYTHONPATH': '/Applications/Xpra.app/Contents/Resources/lib/pygtk/2.0:/Applications/Xpra.app/Contents/Resources/lib/python/:/Applications/Xpra.app/Contents/Resources/lib/python/site-packages.zip:/Applications/Xpra.app/Contents/Resources/lib/python/lib-dynload/:/Applications/Xpra.app/Contents/Resources/lib:', 'LOGNAME': 'eger', 'XDG_DATA_DIRS': '/Applications/Xpra.app/Contents/Resources/share', 'GTK_DATA_PREFIX': '/Applications/Xpra.app/Contents/Resources', 'GI_TYPELIB_PATH': '/Applications/Xpra.app/Contents/Resources/lib/girepository-1.0', 'DISPLAY': '/private/tmp/com.apple.launchd.8ibvGmVp12/org.xquartz:0', 'PANGO_LIBDIR': '/Applications/Xpra.app/Contents/Resources/lib', 'GTK_EXE_PREFIX': '/Applications/Xpra.app/Contents/Resources', 'X11_PREFS_DOMAIN': 'org.xquartz.X11', 'CHARSETALIASDIR': '/Applications/Xpra.app/Contents/Resources/lib', 'PYTHON': '/Applications/Xpra.app/Contents/Resources/bin/Xpra', 'GDK_SCALE': '1', 'GDK_DPI_SCALE': '1', 'GTK_CSD': '0', 'XPRA_SKIP_UI': '1', 'XPRA_FORCE_COLOR_LOG': '1'}, kwargs={'stderr': 2}
OSX: GST_BUNDLE_CONTENTS=/Applications/Xpra.app/Contents
GStreamer 1.x environment: {'GST_DEBUG': '1', 'PATH': '/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:/opt/X11/bin:/usr/sbin', 'GST_BUNDLE_CONTENTS': '/Applications/Xpra.app/Contents', 'GI_TYPELIB_PATH': '/Applications/Xpra.app/Contents/Resources/lib/girepository-1.0', 'GST_PLUGIN_PATH': '/Applications/Xpra.app/Contents/Resources/lib/gstreamer-1.0', 'GST_PLUGIN_SCANNER': '/Applications/Xpra.app/Contents/Resources/bin/gst-plugin-scanner-1.0'}
GStreamer 1.x sys.path=, /Applications/Xpra.app/Contents/Resources/lib/pygtk/2.0, /Applications/Xpra.app/Contents/Resources/lib/python, /Applications/Xpra.app/Contents/Resources/lib/python/site-packages.zip, /Applications/Xpra.app/Contents/Resources/lib/python/lib-dynload, /Applications/Xpra.app/Contents/Resources/lib, /Users/eger, /Applications/Xpra.app/Contents/Resources/lib/python39.zip, /Applications/Xpra.app/Contents/Resources/lib/python3.9, /Applications/Xpra.app/Contents/Resources/lib/python3.9/lib-dynload, /Applications/Xpra.app/Contents/Resources/lib/python/lib/python3.9/site-packages.zip, /Applications/Xpra.app/Contents/Resources/lib/python/lib/python3.9/site-packages
import gi
Gst=<IntrospectionModule 'Gst' from '/Applications/Xpra.app/Contents/Resources/lib/girepository-1.0/Gst-1.0.typelib'>
run_sound(_sound_query, <function main.<locals>.err at 0x1140eed30>, {'start': [], 'start_child': [], 'start_after_connect': [], 'start_child_after_connect': [], 'start_on_connect': [], 'start_child_on_connect': [], 'start_on_last_client_exit': [], 'start_child_on_last_client_exit': [], 'exec_wrapper': '', 'terminate_children': False, 'exit_with_children': False, 'start_new_commands': True, 'start_via_proxy': False, 'proxy_start_sessions': True, 'dbus_launch': 'dbus-launch --sh-syntax --close-stderr', 'source': [], 'source_start': [], 'start_env': [], 'systemd_run': 'no', 'systemd_run_args': '', 'tcp_proxy': '', 'html': 'auto', 'http_scripts': 'all', 'attach': None, 'file_transfer': 'auto', 'open_files': 'auto', 'open_url': 'auto', 'printing': 'yes', 'file_size_limit': '100M', 'exit_with_client': False, 'idle_timeout': 0, 'server_idle_timeout': 0, 'resize_display': 'no', 'bind': ['auto'], 'bind_tcp': [], 'bind_udp': [], 'bind_ws': [], 'bind_wss': [], 'bind_ssl': [], 'bind_ssh': [], 'bind_rfb': [], 'mdns': True, 'bandwidth_limit': 'auto', 'bandwidth_detection': True, 'readonly': False, 'clipboard': 'yes', 'clipboard_direction': 'both', 'notifications': True, 'system_tray': True, 'cursors': True, 'bell': True, 'webcam': 'no', 'mousewheel': 'on', 'global_menus': True, 'xsettings': 'no', 'mmap': 'yes', 'sharing': None, 'lock': None, 'remote_logging': 'both', 'speaker': 'on', 'speaker_codec': [], 'microphone': 'off', 'microphone_codec': [], 'sound_source': '', 'av_sync': True, 'encodings': ['all'], 'encoding': 'auto', 'video_encoders': [], 'proxy_video_encoders': [], 'csc_modules': [], 'video_decoders': [], 'video_scaling': 'auto', 'min_quality': 30, 'quality': 0, 'min_speed': 30, 'speed': 0, 'auto_refresh_delay': 0.15, 'compressors': ['none', 'lz4', 'lzo', 'zlib', 'brotli'], 'packet_encoders': ['rencode', 'bencode', 'yaml'], 'compression_level': 1, 'opengl': 'probe', 'splash': None, 'headerbar': 'no', 'windows': False, 'session_name': '', 'min_size': '', 'max_size': '', 'desktop_scaling': 'on', 'desktop_fullscreen': False, 'border': 'auto,5:off', 'title': '@title@ on @hostinfo@', 'window_close': 'auto', 'window_icon': '', 'dock_icon': '', 'swap_keys': True, 'tray_icon': '', 'shortcut_modifiers': 'auto', 'key_shortcut': ['Control+Menu:toggle_keyboard_grab', 'Shift+Menu:toggle_pointer_grab', 'Control+F11:toggle_fullscreen', '#+F1:show_menu', '#+F2:show_start_new_command', '#+F3:show_bug_report', '#+F4:quit', '#+F5:show_window_info', '#+F10:magic_key', '#+F11:show_session_info', '#+F12:toggle_debug', '#+plus:scaleup', '#+plusminus:scaleup', '#+minus:scaledown', '#+underscore:scaledown', '#+emdash:scaledown', '#+KP_Add:scaleup', '#+KP_Subtract:scaledown', '#+KP_Multiply:scalereset', '#+bar:scalereset', '#+question:scalingoff', '#+degree:scalereset', 'meta+grave:void', 'meta+shift+asciitilde:void'], 'keyboard_sync': True, 'keyboard_raw': False, 'keyboard_layout': '', 'keyboard_layouts': [], 'keyboard_variant': '', 'keyboard_variants': [], 'keyboard_options': '', 'ssl': 'auto', 'ssl_key': '', 'ssl_cert': '', 'ssl_protocol': 'TLSv1_2', 'ssl_ca_certs': 'default', 'ssl_ca_data': '', 'ssl_ciphers': 'DEFAULT', 'ssl_client_verify_mode': 'optional', 'ssl_server_verify_mode': 'required', 'ssl_verify_flags': 'X509_STRICT', 'ssl_check_hostname': True, 'ssl_server_hostname': '', 'ssl_options': 'ALL,NO_COMPRESSION', 'env': [], 'challenge_handlers': ['all'], 'password_file': [], 'forward_xdg_open': True, 'open_command': 'open', 'modal_windows': False, 'input_method': 'none', 'dpi': 0, 'pixel_depth': 0, 'sync_xvfb': 0, 'client_socket_dirs': ['~/.xpra/clients'], 'socket_dirs': ['~/.xpra'], 'socket_dir': '', 'system_proxy_socket': '/run/xpra/system', 'ssh_upgrade': True, 'rfb_upgrade': 5, 'debug': 'sound', 'ssh': 'auto', 'exit_ssh': True, 'username': 'eger', 'auth': [], 'tcp_auth': [], 'udp_auth': [], 'ws_auth': [], 'wss_auth': [], 'ssl_auth': [], 'ssh_auth': [], 'rfb_auth': [], 'min_port': 1024, 'mmap_group': 'auto', 'socket_permissions': '600', 'pings': 5, 'clipboard_filter_file': '', 'local_clipboard': 'CLIPBOARD', 'remote_clipboard': 'CLIPBOARD', 'remote_xpra': ['xpra', '$XDG_RUNTIME_DIR/xpra/run-xpra', '/usr/local/bin/xpra', '~/.xpra/run-xpra', 'Xpra_cmd.exe'], 'encryption': '', 'encryption_keyfile': '', 'tcp_encryption': '', 'tcp_encryption_keyfile': '', 'display': '', 'wm_name': 'Xpra', 'download_path': '~/Downloads', 'uid': 501, 'gid': 20, 'daemon': False, 'pidfile': '', 'log_file': '$DISPLAY.log', 'log_dir': 'auto', 'chdir': '', 'lpadmin': '/usr/sbin/lpadmin', 'lpinfo': '/usr/sbin/lpinfo', 'pdf_printer': '', 'postscript_printer': 'drv:///sample.drv/generic.ppd', 'add_printer_options': ['-u allow:$USER', '-E', '-o printer-is-shared=false'], 'use_display': 'auto', 'xvfb': 'Xvfb +extension GLX +extension Composite -screen 0  8192x4096x24+32 -nolisten tcp -noreset -auth $XAUTHORITY  -dpi 96', 'displayfd': 0, 'fake_xinerama': 'no', 'bind_vsock': [], 'pulseaudio': False, 'pulseaudio_command': '', 'dbus_proxy': False, 'dbus_control': False, 'pulseaudio_configure_commands': ['pactl set-default-sink Xpra-Speaker', 'pactl set-default-source Xpra-Microphone.monitor'], 'input_devices': 'auto', 'tray': True, 'delay_tray': False, 'vsock_auth': [], 'password': ''}, []) gst=<IntrospectionModule 'Gst' from '/Applications/Xpra.app/Contents/Resources/lib/girepository-1.0/Gst-1.0.typelib'>
found the following plugins: ['bin', 'pipeline']
get_sink_plugins() no pulsesink: No module named 'xpra.sound.pulseaudio'
missing ['vorbisenc', 'matroskamux'] from ('vorbisenc', 'matroskamux')
missing ['vorbisdec', 'matroskademux'] from ('vorbisdec', 'matroskademux')
missing ['vorbisenc', 'webmmux'] from ('vorbisenc', 'webmmux')
missing ['vorbisdec', 'matroskademux'] from ('vorbisdec', 'matroskademux')
missing ['vorbisenc', 'oggmux'] from ('vorbisenc', 'oggmux')
missing ['vorbisparse', 'vorbisdec', 'oggdemux'] from ('vorbisparse ! vorbisdec', 'oggdemux')
missing ['vorbisenc'] from ('vorbisenc', None)
missing ['vorbisparse', 'vorbisdec'] from ('vorbisparse ! vorbisdec', None)
missing ['flacenc'] from ('flacenc', None)
missing ['flacparse', 'flacdec'] from ('flacparse ! flacdec', None)
missing ['flacenc', 'oggmux'] from ('flacenc', 'oggmux')
missing ['flacparse', 'flacdec', 'oggdemux'] from ('flacparse ! flacdec', 'oggdemux')
missing ['lamemp3enc'] from ('lamemp3enc', None)
missing ['mpegaudioparse', 'mad'] from ('mpegaudioparse ! mad', None)
missing ['lamemp3enc', 'id3v2mux'] from ('lamemp3enc', 'id3v2mux')
missing ['mpegaudioparse', 'mpg123audiodec', 'id3demux'] from ('mpegaudioparse ! mpg123audiodec', 'id3demux')
missing ['lamemp3enc'] from ('lamemp3enc', None)
missing ['mpegaudioparse', 'mpg123audiodec'] from ('mpegaudioparse ! mpg123audiodec', None)
missing ['lamemp3enc', 'mp4mux'] from ('lamemp3enc', 'mp4mux')
missing ['mpegaudioparse', 'mad', 'qtdemux'] from ('mpegaudioparse ! mad', 'qtdemux')
missing ['wavenc'] from ('wavenc', None)
missing ['wavparse'] from ('wavparse', None)
missing ['wavenc'] from ('wavenc', None)
missing ['wavparse'] from ('wavparse', None)
missing ['wavenc'] from ('wavenc', None)
missing ['wavparse'] from ('wavparse', None)
avoiding opus+ogg on Mac OS X
missing ['opusdec', 'oggdemux'] from ('opusdec', 'oggdemux')
missing ['opusenc'] from ('opusenc', None)
missing ['opusparse', 'opusdec'] from ('opusparse ! opusdec', None)
missing ['opusenc', 'matroskamux'] from ('opusenc', 'matroskamux')
missing ['opusdec', 'matroskademux'] from ('opusdec', 'matroskademux')
missing ['opusenc', 'webmmux'] from ('opusenc', 'webmmux')
missing ['opusdec', 'matroskademux'] from ('opusdec', 'matroskademux')
missing ['speexenc', 'oggmux'] from ('speexenc', 'oggmux')
missing ['speexdec', 'oggdemux'] from ('speexdec', 'oggdemux')
missing ['wavpackenc'] from ('wavpackenc', None)
missing ['wavpackparse', 'wavpackdec'] from ('wavpackparse ! wavpackdec', None)
missing ['faac', 'mp4mux'] from ('faac', 'mp4mux')
missing ['faad', 'qtdemux'] from ('faad', 'qtdemux')
missing ['avenc_aac', 'mp4mux'] from ('avenc_aac', 'mp4mux')
missing ['avdec_aac', 'qtdemux'] from ('avdec_aac', 'qtdemux')
initialized sound codecs:
  - encoder/decoder       (de)payloader         stream-compressor     
missing ['osxaudiosrc'] from ('osxaudiosrc',)
missing ['autoaudiosrc'] from ('autoaudiosrc',)
missing ['alsasrc'] from ('alsasrc',)
missing ['osssrc'] from ('osssrc',)
missing ['oss4src'] from ('oss4src',)
missing ['jackaudiosrc'] from ('jackaudiosrc',)
missing ['audiotestsrc'] from ('audiotestsrc',)
get_sink_plugins() no pulsesink: No module named 'xpra.sound.pulseaudio'
get_default_sink_plugin() no pulsesink: No module named 'xpra.sound.pulseaudio'
missing ['osxaudiosink'] from ('osxaudiosink',)
missing ['autoaudiosink'] from ('autoaudiosink',)
missing ['alsasink'] from ('alsasink',)
missing ['osssink'] from ('osssink',)
missing ['oss4sink'] from ('oss4sink',)
missing ['jackaudiosink'] from ('jackaudiosink',)
missing ['oggmux'] from ('oggmux',)
missing ['webmmux'] from ('webmmux',)
missing ['matroskamux'] from ('matroskamux',)
missing ['mp4mux'] from ('mp4mux',)
missing ['oggdemux'] from ('oggdemux',)
missing ['matroskademux'] from ('matroskademux',)
missing ['matroskademux'] from ('matroskademux',)
missing ['qtdemux'] from ('qtdemux',)
2021-06-01 21:56:24,478 query_sound() process returned 0
2021-06-01 21:56:24,479 query_sound() out=b'encoders=\ndecoders=\nsources=\nsource.default=\nsinks=\nsink.default=\nmuxers=\ndemuxers=\ngst.version=1,18,4,0\npygst.version=3,32,2\nplugins=bin,pipeline\npython.version=3,9,5\npython.bits=64\nbundle-metadata=True\n', err=None
2021-06-01 21:56:24,479 query_sound()={'encoders': [''], 'decoders': [''], 'sources': [''], 'source.default': [''], 'sinks': [''], 'sink.default': [''], 'muxers': [''], 'demuxers': [''], 'gst.version': ['1', '18', '4', '0'], 'pygst.version': ['3', '32', '2'], 'plugins': ['bin', 'pipeline'], 'python.version': ['3', '9', '5'], 'python.bits': b'64', 'bundle-metadata': ['True']}
2021-06-01 21:56:24,479 GStreamer version 1.18.4 for Python 3.9.5 64-bit
2021-06-01 21:56:24,479 sound_option_or_all('speaker-codec', [], ('',))
2021-06-01 21:56:24,480 speaker-codec=
2021-06-01 21:56:24,480 sound_option_or_all('microphone-codec', [], ('',))
2021-06-01 21:56:24,480 microphone-codec=
2021-06-01 21:56:24,480 speaker: codecs=('',), allowed=True, enabled=
2021-06-01 21:56:24,480 microphone: codecs=('',), allowed=True, enabled=, default device=None
2021-06-01 21:56:24,480 av-sync=True
2021-06-01 21:56:34,914 pulseaudio id=1000@bd4ad192b14c43e6829d6808239c0549/648386, server={bd4ad192b14c43e6829d6808239c0549}unix:/run/user/1000/xpra/pulse-3/pulse/native, sound decoders=opus+ogg, vorbis+mka, vorbis+ogg, vorbis, mp3, mp3+id3v2, flac+ogg, aac+mpeg4, wav+lz4, wav+lzo, wav, wavpack, speex+ogg, vorbis, opus+mka, flac, sound encoders=opus, opus+ogg, vorbis+mka, vorbis+ogg, vorbis, mp3, mp3+id3v2, flac+ogg, aac+mpeg4, wav+lz4, wav+lzo, wav, wavpack, speex+ogg, vorbis, opus+mka, flac, mp3+mpeg4, receive=True, send=True
2021-06-01 21:56:34,915 start_receiving_sound() sound sink=None
2021-06-01 21:56:34,916 get_matching_codecs(('',), ('opus', 'opus+ogg', 'vorbis+mka', 'vorbis+ogg', 'vorbis', 'mp3', 'mp3+id3v2', 'flac+ogg', 'aac+mpeg4', 'wav+lz4', 'wav+lzo', 'wav', 'wavpack', 'speex+ogg', 'vorbis', 'opus+mka', 'flac', 'mp3+mpeg4'))=()
2021-06-01 21:56:34,916 start_receiving_sound() matching codecs: 
2021-06-01 21:56:34,922 Error: Failed to start speaker forwarding
2021-06-01 21:56:34,922  server supports: opus, opus+ogg, vorbis+mka, vorbis+ogg, vorbis, mp3, mp3+id3v2, flac+ogg, aac+mpeg4, wav+lz4, wav+lzo, wav, wavpack, speex+ogg, vorbis, opus+mka, flac, mp3+mpeg4
2021-06-01 21:56:34,922  client supports: 
2021-06-01 21:56:34,922 start_receiving_sound() done, speaker_enabled=False
2021-06-01 21:56:34,936 enabled remote logging
2021-06-01 21:56:34,937 Xpra X11 seamless server version 4.2-r0 64-bit
2021-06-01 21:56:34,937  running on Linux Ubuntu 20.04 focal
2021-06-01 21:56:34,937 init_authenticated_packet_handlers()
2021-06-01 21:56:35,383 running
...

Separately, some parts of the GTK error out with the attached screenshot trying and failing to dlopen /System/Library/Frameworks/c.framework/c; I'm not sure if it's related.

Screen Shot 2021-06-01 at 10 07 13 PM
totaam commented 3 years ago

My guess is that both problems are the result of Apple breaking dlopen in Big Sur: 0b9e6d1ee0edd2884d36d8d149553ed332f1efc6. Perhaps we need to apply the same fix to zeroconf to fix the launcher backtrace. Fixing gstreamer may be harder, as I have no idea how to fix the loading of modules. Clearly it's not finding any.

ghost commented 3 years ago

I'm having the same issue on my MacBook Pro, Retina late 2013 (x86-64).

totaam commented 3 years ago

Please try one of the latest beta builds from https://xpra.org/beta/MacOS/

21be080b52599b04feb2b489180750b9159dc8e0 indicates that the meson build of gstreamer has switched to dylibs, this may help the module loader.

Unless someone can lend me an M1 to test, I don't think there's much else I can do to move this forward. We'll have to hope that jralls@gtk-osx finds the time to get this working.

davideger commented 3 years ago

Hi Antoine,

Thanks for the updated attempt! After I install the latest beta, Xpra-Python3-x86_64-4.3-r29437.pkg https://xpra.org/beta/MacOS/Xpra-Python3-x86_64-4.3-r29437.pkg, I get this error when trying to run it on my M1 macbook air:

 % Xpra start ***@***.***/ --start-child=xterm
xpra main error:
Traceback (most recent call last):
  File
"/Applications/Xpra.app/Contents/Resources/lib/python/gi/importer.py", line
137, in load_module
    introspection_module = get_introspection_module(namespace)
  File "/Applications/Xpra.app/Contents/Resources/lib/python/gi/module.py",
line 257, in get_introspection_module
    module = IntrospectionModule(namespace, version)
  File "/Applications/Xpra.app/Contents/Resources/lib/python/gi/module.py",
line 109, in __init__
    repository.require(namespace, version)
gi.RepositoryError: Typelib file for namespace 'HarfBuzz', version '0.0'
not found
totaam commented 3 years ago

gi.RepositoryError: Typelib file for namespace 'HarfBuzz', version '0.0'

Sorry about that, I had not tried this build on a clean system. The fix above should take care of this, and this time I have tested it properly.

davideger commented 3 years ago

Xpra runs again and I think we're getting closer. I get this output:

# on the macbook air m1
$  Xpra  start ssh://eger@xxx.yy.zz.qq/ --start=firefox      
(Xpra:7814): Gtk-CRITICAL **: 11:02:39.713: gtk_window_add_accel_group: assertion 'GTK_IS_WINDOW (window)' failed
2021-07-18 11:02:39,809 Xpra GTK3 client version 4.3-r29455 (g3215efdba) 64-bit
2021-07-18 11:02:39,844  running on Mac OS X 10.16
2021-07-18 11:02:41,821 GStreamer version 1.18.4 for Python 3.9.5 64-bit
2021-07-18 11:02:41,839 created unix domain socket '/Users/eger/.xpra/clients/Davids-MacBook-Air.local-7814'
...
2021-07-18 11:02:47,009 audio playback using 'opus' audio codec

This all seems fine except no sound comes out of my speakers.

The following does work to make audio come out of my speakers, so I have some faith that gstreamer has gotten built correctly:

$ GST_PLUGIN_PATH=/Applications/Xpra.app/Contents/Resources/lib/gstreamer-1.0 /Applications/Xpra.app/Contents/Resources/bin/gst-launch-1.0 audiotestsrc ! audioconvert ! audioresample ! osxaudiosink

With -d sound I get more output, though I'm not sure which part might be enlightening:

$ Xpra -d sound  start ssh://eger@xxx.yy.zz.qq/ --start=firefox      
2021-07-18 11:14:46,426 debug enabled for xpra.sound.common / ('sound',)
2021-07-18 11:14:46,426 debug enabled for xpra.sound.gstreamer_util / ('sound', 'gstreamer')

(Xpra:8699): Gtk-CRITICAL **: 11:14:46.776: gtk_window_add_accel_group: assertion 'GTK_IS_WINDOW (window)' failed
2021-07-18 11:14:46,831 debug enabled for xpra.client.mixins.audio / ('client', 'sound')
2021-07-18 11:14:46,866 Xpra GTK3 client version 4.3-r29455 (g3215efdba) 64-bit
2021-07-18 11:14:46,899  running on Mac OS X 10.16
2021-07-18 11:14:48,308 debug enabled for xpra.sound.wrapper / ('sound',)
2021-07-18 11:14:48,309 query_sound() command=['/Applications/Xpra.app/Contents/Xpra_NoDock.app/Contents/Helpers/Xpra', '--windows=no', '--video-encoders=none', '--csc-modules=none', '--video-decoders=none', '--proxy-video-encoders=none', '_sound_query', '-d', 'sound'], env={'NIX_PROFILES': '/nix/var/nix/profiles/default /Users/eger/.nix-profile', 'PYENV_ROOT': '/Users/eger/.pyenv', 'TERM': 'xterm', 'SHELL': '/bin/zsh', 'TMPDIR': '/var/folders/b7/s6ht04c57xs4srrl6ffs52f40000gn/T/', 'WINDOWID': '6291468', 'GTK_IM_MODULE_FILE': '/Applications/Xpra.app/Contents/Resources/etc/gtk-2.0/gtk.immodules', 'LC_ALL': 'C', 'XTERM_SHELL': '/bin/zsh', 'USER': 'eger', 'COMMAND_MODE': 'unix2003', 'PANGO_SYSCONFDIR': '/Applications/Xpra.app/Contents/Resources/etc', 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.YjVfyiUimw/Listeners', '__CF_USER_TEXT_ENCODING': '0x1F5:0x0:0x0', 'XDG_CONFIG_DIRS': '/Applications/Xpra.app/Contents/Resources/etc/xdg', 'PATH': '/Users/eger/.nix-profile/bin:/Users/eger/.nix-profile/bin:/Users/eger/.pyenv/shims:/Users/eger/.pyenv/bin:/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/eger/.nix-profile/bin:/Users/eger/devel//gtk-py-venv//bin:/Users/eger/devel/local/bin:/opt/X11/bin:/usr/sbin', 'GSETTINGS_SCHEMA_DIR': '/Applications/Xpra.app/Contents/Resources/share/glib-2.0/schemas/', 'PANGO_RC_FILE': '/Applications/Xpra.app/Contents/Resources/etc/pango/pangorc', '__CFBundleIdentifier': 'org.xquartz.X11', 'GDK_PIXBUF_MODULE_FILE': '/Applications/Xpra.app/Contents/Resources/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache', 'PWD': '/Users/eger', 'NIX_PATH': '/Users/eger/.nix-defexpr/channels:/Users/eger/.nix-defexpr/channels:/Users/eger/.nix-defexpr/channels', 'LANG': 'C', 'GST_BUNDLE_CONTENTS': '/Applications/Xpra.app/Contents', 'GTK_THEME': 'Adwaita', 'PYTHONHOME': '/Applications/Xpra.app/Contents/Resources', 'XPC_FLAGS': '0x0', 'NIX_SSL_CERT_FILE': '/Users/eger/.nix-profile/etc/ssl/certs/ca-bundle.crt', 'XTERM_LOCALE': 'C', 'XTERM_VERSION': 'XTerm(367)', 'XPC_SERVICE_NAME': '0', 'SHLVL': '3', 'HOME': '/Users/eger', 'DYLD_LIBRARY_PATH': '/Applications/Xpra.app/Contents/Resources/lib', 'GTK_PATH': '/Applications/Xpra.app/Contents/Resources', 'PYTHONPATH': '/Applications/Xpra.app/Contents/Resources/lib/pygtk/2.0:/Applications/Xpra.app/Contents/Resources/lib/python/:/Applications/Xpra.app/Contents/Resources/lib/python/site-packages.zip:/Applications/Xpra.app/Contents/Resources/lib/python/lib-dynload/:/Applications/Xpra.app/Contents/Resources/lib:', 'LOGNAME': 'eger', 'XDG_DATA_DIRS': '/Applications/Xpra.app/Contents/Resources/share', 'GTK_DATA_PREFIX': '/Applications/Xpra.app/Contents/Resources', 'GI_TYPELIB_PATH': '/Applications/Xpra.app/Contents/Resources/lib/girepository-1.0', 'DISPLAY': '/private/tmp/com.apple.launchd.G6PKtblCZI/org.xquartz:0', 'PANGO_LIBDIR': '/Applications/Xpra.app/Contents/Resources/lib', 'GTK_EXE_PREFIX': '/Applications/Xpra.app/Contents/Resources', 'X11_PREFS_DOMAIN': 'org.xquartz.X11', 'CHARSETALIASDIR': '/Applications/Xpra.app/Contents/Resources/lib', 'PYTHON': '/Applications/Xpra.app/Contents/Resources/bin/Xpra', 'GDK_SCALE': '1', 'GDK_DPI_SCALE': '1', 'GTK_CSD': '0', 'XPRA_SKIP_UI': '1', 'XPRA_FORCE_COLOR_LOG': '1'}, kwargs={'stderr': 2}
...
get_sink_plugins() no pulsesink: No module named 'xpra.sound.pulseaudio'
missing ['mad'] from ('mpegaudioparse ! mad', None)
missing ['id3v2mux'] from ('lamemp3enc', 'id3v2mux')
missing ['mpg123audiodec', 'id3demux'] from ('mpegaudioparse ! mpg123audiodec', 'id3demux')
missing ['mpg123audiodec'] from ('mpegaudioparse ! mpg123audiodec', None)
missing ['mad'] from ('mpegaudioparse ! mad', 'qtdemux')
avoiding opus+ogg on Mac OS X
missing ['wavpackenc'] from ('wavpackenc', None)
missing ['wavpackdec'] from ('wavpackparse ! wavpackdec', None)
initialized sound codecs:
  - encoder/decoder       (de)payloader         stream-compressor     
* opus :
  - opusenc                                                           
  - opusparse ! opusdec                                               
* opus+ogg :
  - opusdec               oggdemux                                    
* vorbis+mka :
  - vorbisenc             matroskamux                                 
  - vorbisdec             matroskademux                               
* vorbis+ogg :
  - vorbisenc             oggmux                                      
  - vorbisparse ! vorbisdecoggdemux                                    
* vorbis :
  - vorbisenc                                                         
  -   - vorbisparse ! vorbisdec                                            
* opus+mka :
  - opusenc               matroskamux                                 
  - opusdec               matroskademux                               
* flac :
  - flacenc                                                           
  - flacparse ! flacdec                                               
* mp3+mpeg4 :
  - lamemp3enc            mp4mux                                      
get_sink_plugins() no pulsesink: No module named 'xpra.sound.pulseaudio'
get_default_sink_plugin() no pulsesink: No module named 'xpra.sound.pulseaudio'
2021-07-18 11:14:48,873 query_sound() process returned 0
...
2021-07-18 11:14:48,875 GStreamer version 1.18.4 for Python 3.9.5 64-bit
2021-07-18 11:14:48,875 sound_option_or_all('speaker-codec', [], ('opus', 'opus+ogg', 'vorbis+mka', 'vorbis+ogg', 'vorbis', 'flac+ogg', 'aac+mpeg4', 'wav+lz4', 'wav+lzo', 'wav', 'speex+ogg', 'vorbis', 'opus+mka', 'flac'))
2021-07-18 11:14:48,875 speaker-codec=opus, opus+ogg, vorbis+mka, vorbis+ogg, vorbis, flac+ogg, aac+mpeg4, wav+lz4, wav+lzo, wav, speex+ogg, vorbis, opus+mka, flac
2021-07-18 11:14:48,875 sound_option_or_all('microphone-codec', [], ('opus', 'vorbis+mka', 'vorbis+ogg', 'vorbis', 'mp3', 'flac+ogg', 'aac+mpeg4', 'wav+lz4', 'wav+lzo', 'wav', 'speex+ogg', 'vorbis', 'opus+mka', 'flac', 'mp3+mpeg4'))
2021-07-18 11:14:48,875 microphone-codec=opus, vorbis+mka, vorbis+ogg, vorbis, mp3, flac+ogg, aac+mpeg4, wav+lz4, wav+lzo, wav, speex+ogg, vorbis, opus+mka, flac, mp3+mpeg4
2021-07-18 11:14:48,875 speaker: codecs=('opus', 'vorbis+mka', 'vorbis+ogg', 'vorbis', 'mp3', 'flac+ogg', 'aac+mpeg4', 'wav+lz4', 'wav+lzo', 'wav', 'speex+ogg', 'vorbis', 'opus+mka', 'flac', 'mp3+mpeg4'), allowed=True, enabled=opus, opus+ogg, vorbis+mka, vorbis+ogg, vorbis, flac+ogg, aac+mpeg4, wav+lz4, wav+lzo, wav, speex+ogg, vorbis, opus+mka, flac
2021-07-18 11:14:48,876 microphone: codecs=('opus', 'opus+ogg', 'vorbis+mka', 'vorbis+ogg', 'vorbis', 'flac+ogg', 'aac+mpeg4', 'wav+lz4', 'wav+lzo', 'wav', 'speex+ogg', 'vorbis', 'opus+mka', 'flac'), allowed=True, enabled=opus, vorbis+mka, vorbis+ogg, vorbis, mp3, flac+ogg, aac+mpeg4, wav+lz4, wav+lzo, wav, speex+ogg, vorbis, opus+mka, flac, mp3+mpeg4, default device=None
2021-07-18 11:14:48,876 av-sync=True
...
2021-07-18 11:14:49,963  keyboard settings: layout=us
2021-07-18 11:14:49,968  desktop size is 1440x900:
2021-07-18 11:14:49,968   davids-macbook-air.local (286x179 mm - DPI: 128x128) workarea: 1440x815  at    0x25  
2021-07-18 11:14:49,973 audio capabilities: {'codec-full-names': True, 'decoders': ['opus', 'opus+ogg', 'vorbis+mka', 'vorbis+ogg', 'vorbis', 'flac+ogg', 'aac+mpeg4', 'wav+lz4', 'wav+lzo', 'wav', 'speex+ogg', 'vorbis', 'opus+mka', 'flac'], 'encoders': ['opus', 'vorbis+mka', 'vorbis+ogg', 'vorbis', 'mp3', 'flac+ogg', 'aac+mpeg4', 'wav+lz4', 'wav+lzo', 'wav', 'speex+ogg', 'vorbis', 'opus+mka', 'flac', 'mp3+mpeg4'], 'send': True, 'receive': True, 'sources': ['osxaudiosrc', 'oss4src', 'audiotestsrc'], 'source.default': ['osxaudiosrc'], 'sinks': ['osxaudiosink', 'oss4sink'], 'sink.default': ['osxaudiosink'], 'muxers': ['ogg', 'mka', 'mka', 'mpeg4'], 'demuxers': ['ogg', 'mka', 'mka', 'mpeg4'], 'gst.version': ['1', '18', '4', '0'], 'pygst.version': ['3', '40', '1'], 'plugins': ['3gppmux', 'aacparse', 'ac3parse', 'amrparse', 'appsink', 'appsrc', 'audioamplify', 'audiobuffersplit', 'audiochannelmix', 'audiochebband', 'audiocheblimit', 'audioconvert', 'audiodynamic', 'audioecho', 'audiofirfilter', 'audioiirfilter', 'audiointerleave', 'audioinvert', 'audiokaraoke', 'audiolatency', 'audiomixer', 'audiomixmatrix', 'audiopanorama', 'audiorate', 'audioresample', 'audiotestsrc', 'audiowsincband', 'audiowsinclimit', 'bin', 'capsfilter', 'clocksync', 'concat', 'dataurisrc', 'dcaparse', 'downloadbuffer', 'faac', 'faad', 'fakesink', 'fakesrc', 'fdsink', 'fdsrc', 'filesink', 'filesrc', 'flacdec', 'flacenc', 'flacparse', 'flactag', 'funnel', 'gdpdepay', 'gdppay', 'identity', 'input-selector', 'ismlmux', 'lamemp3enc', 'liveadder', 'matroskademux', 'matroskamux', 'matroskaparse', 'mj2mux', 'mp4mux', 'mpegaudioparse', 'multiqueue', 'oggaviparse', 'oggdemux', 'oggmux', 'oggparse', 'ogmaudioparse', 'ogmtextparse', 'ogmvideoparse', 'opusdec', 'opusenc', 'opusparse', 'oss4sink', 'oss4src', 'osxaudiosink', 'osxaudiosrc', 'output-selector', 'pipeline', 'qtdemux', 'qtmoovrecover', 'qtmux', 'queue', 'queue2', 'rtpxqtdepay', 'sbcparse', 'scaletempo', 'spacescope', 'spectrascope', 'speexdec', 'speexenc', 'stereo', 'streamiddemux', 'synaescope', 'tee', 'typefind', 'valve', 'volume', 'vorbisdec', 'vorbisenc', 'vorbisparse', 'vorbistag', 'wavenc', 'wavescope', 'wavpackparse', 'wavparse', 'webmmux'], 'python.version': ['3', '9', '5'], 'python.bits': b'64', 'bundle-metadata': ['True']}

(Xpra:8699): Gtk-WARNING **: 11:14:49.985: Theme file for hicolor has no name

(Xpra:8699): Gtk-WARNING **: 11:14:49.985: Theme file for hicolor has no directories
2021-07-18 11:14:51,108  SSH: 'Actual display used: :16'
2021-07-18 11:14:51,108  SSH: 'Actual log file name is now: /run/user/1000/xpra/:16.log'
2021-07-18 11:14:52,265 pulseaudio id=1000@a0942c4a4def499cb628e2eb899814e1/86784, server={a0942c4a4def499cb628e2eb899814e1}unix:/run/user/1000/xpra/pulse-16/pulse/native, sound decoders=opus, opus+ogg, vorbis+mka, vorbis+ogg, vorbis, mp3, mp3+id3v2, flac+ogg, aac+mpeg4, wav+lz4, wav, wavpack, speex+ogg, vorbis, opus+mka, flac, sound encoders=opus, opus+ogg, vorbis+mka, vorbis+ogg, vorbis, mp3, mp3+id3v2, flac+ogg, wav+lz4, wav, wavpack, speex+ogg, vorbis, opus+mka, flac, mp3+mpeg4, receive=True, send=True
2021-07-18 11:14:52,265 start_receiving_sound() sound sink=None
2021-07-18 11:14:52,266 get_matching_codecs(('opus', 'opus+ogg', 'vorbis+mka', 'vorbis+ogg', 'vorbis', 'flac+ogg', 'aac+mpeg4', 'wav+lz4', 'wav+lzo', 'wav', 'speex+ogg', 'vorbis', 'opus+mka', 'flac'), ('opus', 'opus+ogg', 'vorbis+mka', 'vorbis+ogg', 'vorbis', 'mp3', 'mp3+id3v2', 'flac+ogg', 'wav+lz4', 'wav', 'wavpack', 'speex+ogg', 'vorbis', 'opus+mka', 'flac', 'mp3+mpeg4'))=('opus', 'opus+ogg', 'vorbis+mka', 'vorbis+ogg', 'vorbis', 'flac+ogg', 'wav+lz4', 'wav', 'speex+ogg', 'vorbis', 'opus+mka', 'flac')
2021-07-18 11:14:52,267 start_receiving_sound() matching codecs: opus, opus+ogg, vorbis+mka, vorbis+ogg, vorbis, flac+ogg, wav+lz4, wav, speex+ogg, vorbis, opus+mka, flac
2021-07-18 11:14:52,267 start_sound_sink(opus)
2021-07-18 11:14:52,268 starting opus sound sink
2021-07-18 11:14:52,268 start_receiving_sound(opus)
2021-07-18 11:14:52,289 start() audio playback subprocess(['/Applications/Xpra.app/Contents/Xpra_NoDock.app/Contents/Helpers/Xpra', '--windows=no', '--video-encoders=none', '--csc-modules=none', '--video-decoders=none', '--proxy-video-encoders=none', '_sound_play', '-', '-', '', '', 'opus', '', '1.0', '-d', 'sound'])=8795
2021-07-18 11:14:52,292 opus sound sink started
2021-07-18 11:14:52,292 start_receiving_sound() done, speaker_enabled=True
totaam commented 3 years ago

Almost there. It's trying to use opus which should be fine.

Can you run the client with -d gstreamer? (preferably in attach mode with an existing session) I want to see what pipeline it is using.

davideger commented 3 years ago

Debug shows a lot of output that looks like it's pumping data through, just nothing comes out of my speakers. This might be the relevant bit of log. Volume says zero but there were log messages later about incrementing it upwards (see fullish log):

2021-07-19 07:25:49,205 audio playback pipeline elements=['appsrc name=src emit-signals=0 block=0 is-live=0 stream-type=0 format=4', 'opusparse ! opusdec', 'audioconveraudioresample', 'queue name=queue min-threshold-time=0 max-size-buffers=0 max-size-bytes=0 max-size-time=450000000 leaky=2', 'volume name=volume volume=0', 'osxaudiosinc=False async=True qos=True name="sink"']
2021-07-19 07:25:49,205 audio playback pipeline=appsrc name=src emit-signals=0 block=0 is-live=0 stream-type=0 format=4 ! opusparse ! opusdec ! audioconvert ! audioresa! queue name=queue min-threshold-time=0 max-size-buffers=0 max-size-bytes=0 max-size-time=450000000 leaky=2 ! volume name=volume volume=0 ! osxaudiosink sync=False asyne qos=True name="sink"

Truncated but otherwise full log below:

% Xpra -d gstreamer  start ssh://eger@yyy.zz.ww.xx/ --start=firefox
2021-07-19 07:25:43,083 debug enabled for xpra.sound.gstreamer_util / ('sound', 'gstreamer')

(Xpra:22641): Gtk-CRITICAL **: 07:25:43.409: gtk_window_add_accel_group: assertion 'GTK_IS_WINDOW (window)' failed
2021-07-19 07:25:43,433 Xpra GTK3 client version 4.3-r29455 (g3215efdba) 64-bit
2021-07-19 07:25:43,466  running on Mac OS X 10.16
debug enabled for xpra.sound.gstreamer_util / ('sound', 'gstreamer')
OSX: GST_BUNDLE_CONTENTS=/Applications/Xpra.app/Contents
GStreamer 1.x environment: {'PATH': '/Users/eger/.nix-profile/bin:/Users/eger/.pyenv/shims:/Users/eger/.pyenv/bin:/Library/Frameworks/Python.framework/Versions/3.9/bin:local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/eger/.nix-profile/bin:/Users/eger/devel//gtk-py-venv//bin:/Users/eger/devel/local/bin/sbin', 'GST_BUNDLE_CONTENTS': '/Applications/Xpra.app/Contents', 'GI_TYPELIB_PATH': '/Applications/Xpra.app/Contents/Resources/lib/girepository-1.0', 'GST_PLUGIN_PATH'pplications/Xpra.app/Contents/Resources/lib/gstreamer-1.0', 'GST_PLUGIN_SCANNER': '/Applications/Xpra.app/Contents/Resources/bin/gst-plugin-scanner-1.0'}
GStreamer 1.x sys.path=, /Applications/Xpra.app/Contents/Resources/lib/pygtk/2.0, /Applications/Xpra.app/Contents/Resources/lib/python, /Applications/Xpra.app/Contents/rces/lib/python/site-packages.zip, /Applications/Xpra.app/Contents/Resources/lib/python/lib-dynload, /Applications/Xpra.app/Contents/Resources/lib, /Users/eger, /Applics/Xpra.app/Contents/Resources/lib/python39.zip, /Applications/Xpra.app/Contents/Resources/lib/python3.9, /Applications/Xpra.app/Contents/Resources/lib/python3.9/lib-dyn /Applications/Xpra.app/Contents/Resources/lib/python/lib/python3.9/site-packages.zip, /Applications/Xpra.app/Contents/Resources/lib/python/lib/python3.9/site-packages
import gi
Gst=<IntrospectionModule 'Gst' from '/Applications/Xpra.app/Contents/Resources/lib/girepository-1.0/Gst-1.0.typelib'>
found the following plugins: ['3gppmux', 'aacparse', 'ac3parse', 'amrparse', 'appsink', 'appsrc', 'audioamplify', 'audiobuffersplit', 'audiochannelmix', 'audiochebband'diocheblimit', 'audioconvert', 'audiodynamic', 'audioecho', 'audiofirfilter', 'audioiirfilter', 'audiointerleave', 'audioinvert', 'audiokaraoke', 'audiolatency', 'audio', 'audiomixmatrix', 'audiopanorama', 'audiorate', 'audioresample', 'audiotestsrc', 'audiowsincband', 'audiowsinclimit', 'bin', 'capsfilter', 'clocksync', 'concat', 'dasrc', 'dcaparse', 'downloadbuffer', 'faac', 'faad', 'fakesink', 'fakesrc', 'fdsink', 'fdsrc', 'filesink', 'filesrc', 'flacdec', 'flacenc', 'flacparse', 'flactag', 'funn'gdpdepay', 'gdppay', 'identity', 'input-selector', 'ismlmux', 'lamemp3enc', 'liveadder', 'matroskademux', 'matroskamux', 'matroskaparse', 'mj2mux', 'mp4mux', 'mpegaudie', 'multiqueue', 'oggaviparse', 'oggdemux', 'oggmux', 'oggparse', 'ogmaudioparse', 'ogmtextparse', 'ogmvideoparse', 'opusdec', 'opusenc', 'opusparse', 'oss4sink', 'oss, 'osxaudiosink', 'osxaudiosrc', 'output-selector', 'pipeline', 'qtdemux', 'qtmoovrecover', 'qtmux', 'queue', 'queue2', 'rtpxqtdepay', 'sbcparse', 'scaletempo', 'spaces, 'spectrascope', 'speexdec', 'speexenc', 'stereo', 'streamiddemux', 'synaescope', 'tee', 'typefind', 'valve', 'volume', 'vorbisdec', 'vorbisenc', 'vorbisparse', 'vorbi, 'wavenc', 'wavescope', 'wavpackparse', 'wavparse', 'webmmux']
get_sink_plugins() no pulsesink: No module named 'xpra.sound.pulseaudio'
missing ['mad'] from ('mpegaudioparse ! mad', None)
missing ['id3v2mux'] from ('lamemp3enc', 'id3v2mux')
missing ['mpg123audiodec', 'id3demux'] from ('mpegaudioparse ! mpg123audiodec', 'id3demux')
missing ['mpg123audiodec'] from ('mpegaudioparse ! mpg123audiodec', None)
missing ['mad'] from ('mpegaudioparse ! mad', 'qtdemux')
avoiding opus+ogg on Mac OS X
missing ['wavpackenc'] from ('wavpackenc', None)
missing ['wavpackdec'] from ('wavpackparse ! wavpackdec', None)
initialized sound codecs:
  - encoder/decoder       (de)payloader         stream-compressor     
* opus :
  - opusenc                                                           
  - opusparse ! opusdec                                               
* opus+ogg :
  - opusdec               oggdemux       
  -                                    
* vorbis+mka :
  - vorbisenc             matroskamux                                 
  - vorbisdec             matroskademux                               
* vorbis+ogg :
  - vorbisenc             oggmux                                      
  - vorbisparse ! vorbisdecoggdemux                                    
* vorbis :
  - vorbisenc                                                         
  - vorbisparse ! vorbisdec                                            
* mp3 :
  - lamemp3enc                                                        
* flac+ogg :
  - flacenc               oggmux                                      
  - flacparse ! flacdec   oggdemux                                    
* aac+mpeg4 :
  - faac                  mp4mux                                      
  - faad                  qtdemux                                     
* wav+lz4 :
  - wavenc                                      lz4                   
  - wavparse                                    lz4                   
* wav+lzo :
  - wavenc                                      lzo                   
  - wavparse                                    lzo                   
* wav :
  - wavenc                                                            
  - wavparse                                                          
* speex+ogg :
  - speexenc              oggmux                                      
  - speexdec              oggdemux                                    
* vorbis :
  - vorbisenc                                                         
  - vorbisparse ! vorbisdec                                            
* opus+mka :
  - opusenc               matroskamux                                 
  - opusdec               matroskademux                               
* flac :
  - flacenc                                                           
  - flacparse ! flacdec                                               
* mp3+mpeg4 :
  - lamemp3enc            mp4mux                                      
get_sink_plugins() no pulsesink: No module named 'xpra.sound.pulseaudio'
get_default_sink_plugin() no pulsesink: No module named 'xpra.sound.pulseaudio'
2021-07-19 07:25:45,156 GStreamer version 1.18.4 for Python 3.9.5 64-bit
2021-07-19 07:25:45,171 created unix domain socket '/Users/eger/.xpra/clients/Davids-MacBook-Air.local-22641'
2021-07-19 07:25:45,252 OpenGL_accelerate module loaded
2021-07-19 07:25:45,266 Using accelerated ArrayDatatype
2021-07-19 07:25:45,591 OpenGL enabled with Apple M1
2021-07-19 07:25:45,617 Connected (version 2.0, client OpenSSH_8.4p1)
2021-07-19 07:25:46,185 Authentication (publickey) successful!
2021-07-19 07:25:46,390  SSH: "2021-07-19 07:25:46,378 setproctitle not installed: No module named 'setproctitle'"
2021-07-19 07:25:46,391  SSH: "debug enabled for xpra.sound.gstreamer_util / ('sound', 'gstreamer')"
2021-07-19 07:25:46,433  SSH: "2021-07-19 07:25:46,430 setproctitle not installed: No module named 'setproctitle'"
2021-07-19 07:25:46,433  SSH: "2021-07-19 07:25:46,430 debug enabled for xpra.sound.gstreamer_util / ('sound', 'gstreamer')"
2021-07-19 07:25:46,433  SSH: 'Entering daemon mode; any further errors will be reported to:'
2021-07-19 07:25:46,433  SSH: '  /run/user/1000/xpra/S185636.log'

(Xpra:22641): Gtk-CRITICAL **: 07:25:46.436: gtk_window_add_accel_group: assertion 'GTK_IS_WINDOW (window)' failed
2021-07-19 07:25:46,461  keyboard settings: layout=us
2021-07-19 07:25:46,466  desktop size is 1440x900:
2021-07-19 07:25:46,466   davids-macbook-air.local (286x179 mm - DPI: 128x128) workarea: 1440x807  at    0x25  

(Xpra:22641): Gtk-WARNING **: 07:25:46.480: Theme file for hicolor has no name

(Xpra:22641): Gtk-WARNING **: 07:25:46.480: Theme file for hicolor has no directories
2021-07-19 07:25:47,522  SSH: 'Actual display used: :24'
2021-07-19 07:25:47,523  SSH: 'Actual log file name is now: /run/user/1000/xpra/:24.log'
2021-07-19 07:25:48,787 enabled remote logging
2021-07-19 07:25:48,788 Xpra X11 seamless server version 4.3-r29437 64-bit
2021-07-19 07:25:48,788  running on Linux Ubuntu 21.04 hirsute
2021-07-19 07:25:49,136 running
2021-07-19 07:25:49,156 audio playback debug enabled for xpra.sound.gstreamer_util / ('sound', 'gstreamer')
2021-07-19 07:25:49,193 audio playback OSX: GST_BUNDLE_CONTENTS=/Applications/Xpra.app/Contents
2021-07-19 07:25:49,193 audio playback GStreamer 1.x environment: {'PATH': '/Users/eger/.nix-profile/bin:/Users/eger/.pyenv/shims:/Users/eger/.pyenv/bin:/Library/FramewPython.framework/Versions/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/eger/.nix-profile/bin:/Users/eger/devel//gtk-pv//bin:/Users/eger/devel/local/bin:/usr/sbin', 'GST_BUNDLE_CONTENTS': '/Applications/Xpra.app/Contents', 'GI_TYPELIB_PATH': '/Applications/Xpra.app/Contents/Resources/lrepository-1.0', 'GST_PLUGIN_PATH': '/Applications/Xpra.app/Contents/Resources/lib/gstreamer-1.0', 'GST_PLUGIN_SCANNER': '/Applications/Xpra.app/Contents/Resources/bin/lugin-scanner-1.0'}
2021-07-19 07:25:49,193 audio playback GStreamer 1.x sys.path=, /Applications/Xpra.app/Contents/Resources/lib/pygtk/2.0, /Applications/Xpra.app/Contents/Resources/lib/p, /Applications/Xpra.app/Contents/Resources/lib/python/site-packages.zip, /Applications/Xpra.app/Contents/Resources/lib/python/lib-dynload, /Applications/Xpra.app/Conteesources/lib, /Users/eger, /Applications/Xpra.app/Contents/Resources/lib/python39.zip, /Applications/Xpra.app/Contents/Resources/lib/python3.9, /Applications/Xpra.app/Cts/Resources/lib/python3.9/lib-dynload, /Applications/Xpra.app/Contents/Resources/lib/python/lib/python3.9/site-packages.zip, /Applications/Xpra.app/Contents/Resources/ython/lib/python3.9/site-packages
2021-07-19 07:25:49,193 audio playback import gi
2021-07-19 07:25:49,196 audio playback Gst=<IntrospectionModule 'Gst' from '/Applications/Xpra.app/Contents/Resources/lib/girepository-1.0/Gst-1.0.typelib'>
2021-07-19 07:25:49,201 audio playback debug enabled for xpra.sound.sound_pipeline / ('gstreamer',)
2021-07-19 07:25:49,202 audio playback debug enabled for xpra.sound.sink / ('gstreamer',)
2021-07-19 07:25:49,202 audio playback get_sink_plugins() no pulsesink: No module named 'xpra.sound.pulseaudio'
2021-07-19 07:25:49,202 audio playback get_default_sink_plugin() no pulsesink: No module named 'xpra.sound.pulseaudio'
2021-07-19 07:25:49,203 audio playback found the following plugins: ['3gppmux', 'aacparse', 'ac3parse', 'amrparse', 'appsink', 'appsrc', 'audioamplify', 'audiobufferspl'audiochannelmix', 'audiochebband', 'audiocheblimit', 'audioconvert', 'audiodynamic', 'audioecho', 'audiofirfilter', 'audioiirfilter', 'audiointerleave', 'audioinvert',iokaraoke', 'audiolatency', 'audiomixer', 'audiomixmatrix', 'audiopanorama', 'audiorate', 'audioresample', 'audiotestsrc', 'audiowsincband', 'audiowsinclimit', 'bin', 'ilter', 'clocksync', 'concat', 'dataurisrc', 'dcaparse', 'downloadbuffer', 'faac', 'faad', 'fakesink', 'fakesrc', 'fdsink', 'fdsrc', 'filesink', 'filesrc', 'flacdec', 'nc', 'flacparse', 'flactag', 'funnel', 'gdpdepay', 'gdppay', 'identity', 'input-selector', 'ismlmux', 'lamemp3enc', 'liveadder', 'matroskademux', 'matroskamux', 'matrosse', 'mj2mux', 'mp4mux', 'mpegaudioparse', 'multiqueue', 'oggaviparse', 'oggdemux', 'oggmux', 'oggparse', 'ogmaudioparse', 'ogmtextparse', 'ogmvideoparse', 'opusdec', 'nc', 'opusparse', 'oss4sink', 'oss4src', 'osxaudiosink', 'osxaudiosrc', 'output-selector', 'pipeline', 'qtdemux', 'qtmoovrecover', 'qtmux', 'queue', 'queue2', 'rtpxqtde 'sbcparse', 'scaletempo', 'spacescope', 'spectrascope', 'speexdec', 'speexenc', 'stereo', 'streamiddemux', 'synaescope', 'tee', 'typefind', 'valve', 'volume', 'vorbisd'vorbisenc', 'vorbisparse', 'vorbistag', 'wavenc', 'wavescope', 'wavpackparse', 'wavparse', 'webmmux']
2021-07-19 07:25:49,203 audio playback get_sink_plugins() no pulsesink: No module named 'xpra.sound.pulseaudio'
2021-07-19 07:25:49,203 audio playback missing ['mad'] from ('mpegaudioparse ! mad', None)
2021-07-19 07:25:49,203 audio playback missing ['id3v2mux'] from ('lamemp3enc', 'id3v2mux')
2021-07-19 07:25:49,203 audio playback missing ['mpg123audiodec', 'id3demux'] from ('mpegaudioparse ! mpg123audiodec', 'id3demux')
2021-07-19 07:25:49,203 audio playback missing ['mpg123audiodec'] from ('mpegaudioparse ! mpg123audiodec', None)
2021-07-19 07:25:49,203 audio playback missing ['mad'] from ('mpegaudioparse ! mad', 'qtdemux')
2021-07-19 07:25:49,203 audio playback avoiding opus+ogg on Mac OS X
2021-07-19 07:25:49,203 audio playback missing ['wavpackenc'] from ('wavpackenc', None)                       
2021-07-19 07:25:49,203 audio playback missing ['wavpackdec'] from ('wavpackparse ! wavpackdec', None)
2021-07-19 07:25:49,203 audio playback initialized sound codecs:
2021-07-19 07:25:49,203 audio playback   - encoder/decoder       (de)payloader         stream-compressor     
2021-07-19 07:25:49,203 audio playback * opus :
2021-07-19 07:25:49,203 audio playback   - opusenc                                                           
2021-07-19 07:25:49,203 audio playback   - opusparse ! opusdec                                               
2021-07-19 07:25:49,203 audio playback * opus+ogg :
2021-07-19 07:25:49,203 audio playback   - opusdec               oggdemux                                    
2021-07-19 07:25:49,203 audio playback * vorbis+mka :
2021-07-19 07:25:49,203 audio playback   - vorbisenc             matroskamux                                 
2021-07-19 07:25:49,203 audio playback   - vorbisdec             matroskademux                               
2021-07-19 07:25:49,203 audio playback * vorbis+ogg :
2021-07-19 07:25:49,203 audio playback   - vorbisenc             oggmux                                      
2021-07-19 07:25:49,203 audio playback   - vorbisparse ! vorbisdecoggdemux                                    
2021-07-19 07:25:49,203 audio playback * vorbis :
2021-07-19 07:25:49,203 audio playback   - vorbisenc                                                         
2021-07-19 07:25:49,204 audio playback   - vorbisparse ! vorbisdec                                            
2021-07-19 07:25:49,204 audio playback * mp3 :
2021-07-19 07:25:49,204 audio playback   - lamemp3enc                                                        
2021-07-19 07:25:49,204 audio playback * flac+ogg :
2021-07-19 07:25:49,204 audio playback   - flacenc               oggmux                                      
2021-07-19 07:25:49,204 audio playback   - flacparse ! flacdec   oggdemux                                    
2021-07-19 07:25:49,204 audio playback * aac+mpeg4 :
2021-07-19 07:25:49,204 audio playback   - faac                  mp4mux                                      
2021-07-19 07:25:49,204 audio playback   - faad                  qtdemux                                     
2021-07-19 07:25:49,204 audio playback * wav+lz4 :
2021-07-19 07:25:49,204 audio playback   - wavenc                                      lz4                   
2021-07-19 07:25:49,204 audio playback   - wavparse                                    lz4                   
2021-07-19 07:25:49,204 audio playback * wav+lzo :
2021-07-19 07:25:49,204 audio playback   - wavenc                                      lzo                   
2021-07-19 07:25:49,204 audio playback   - wavparse                                    lzo                   
2021-07-19 07:25:49,204 audio playback * wav :
2021-07-19 07:25:49,204 audio playback   - wavenc                                                            
2021-07-19 07:25:49,204 audio playback   - wavparse                                                          
2021-07-19 07:25:49,204 audio playback * speex+ogg :
2021-07-19 07:25:49,204 audio playback   - speexenc              oggmux                                      
2021-07-19 07:25:49,204 audio playback   - speexdec              oggdemux                                    
2021-07-19 07:25:49,204 audio playback * vorbis :
2021-07-19 07:25:49,204 audio playback   - vorbisenc                                                         
2021-07-19 07:25:49,204 audio playback   - vorbisparse ! vorbisdec                                            
2021-07-19 07:25:49,204 audio playback * opus+mka :
2021-07-19 07:25:49,204 audio playback   - opusenc               matroskamux                                 
2021-07-19 07:25:49,205 audio playback   - opusdec               matroskademux                               
2021-07-19 07:25:49,205 audio playback * flac :
2021-07-19 07:25:49,205 audio playback   - flacenc                                                           
2021-07-19 07:25:49,205 audio playback   - flacparse ! flacdec                                               
2021-07-19 07:25:49,205 audio playback * mp3+mpeg4 :
2021-07-19 07:25:49,205 audio playback   - lamemp3enc            mp4mux                                      
2021-07-19 07:25:49,205 audio playback pipeline elements=['appsrc name=src emit-signals=0 block=0 is-live=0 stream-type=0 format=4', 'opusparse ! opusdec', 'audioconveraudioresample', 'queue name=queue min-threshold-time=0 max-size-buffers=0 max-size-bytes=0 max-size-time=450000000 leaky=2', 'volume name=volume volume=0', 'osxaudiosinc=False async=True qos=True name="sink"']
2021-07-19 07:25:49,205 audio playback pipeline=appsrc name=src emit-signals=0 block=0 is-live=0 stream-type=0 format=4 ! opusparse ! opusdec ! audioconvert ! audioresa! queue name=queue min-threshold-time=0 max-size-buffers=0 max-size-bytes=0 max-size-time=450000000 leaky=2 ! volume name=volume volume=0 ! osxaudiosink sync=False asyne qos=True name="sink"
2021-07-19 07:25:49,261 audio playback ignoring underrun during startup
2021-07-19 07:25:49,261 audio playback queue_running
2021-07-19 07:25:49,262 audio playback queue_pushing
2021-07-19 07:25:49,262 audio playback ignoring underrun during startup
2021-07-19 07:25:49,262 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae05a0)>
2021-07-19 07:25:49,262 audio playback state-changed on <__gi__.GstOsxAudioSink object at 0x117a784c0 (GstOsxAudioSink at 0x7fe57eaa3300)>: READY
2021-07-19 07:25:49,262 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae0620)>
2021-07-19 07:25:49,263 audio playback state-changed on <__gi__.GstVolume object at 0x117a75880 (GstVolume at 0x7fe57eaa20d0)>: READY
2021-07-19 07:25:49,263 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae06a0)>
2021-07-19 07:25:49,263 audio playback state-changed on <__gi__.GstQueue object at 0x117a78180 (GstQueue at 0x7fe57f036090)>: READY
2021-07-19 07:25:49,263 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae0720)>
2021-07-19 07:25:49,263 audio playback state-changed on <__gi__.GstAudioResample object at 0x117a67f40 (GstAudioResample at 0x7fe57f010ed0)>: READY
2021-07-19 07:25:49,263 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2000)>
2021-07-19 07:25:49,263 audio playback state-changed on <__gi__.GstAudioConvert object at 0x117a67f80 (GstAudioConvert at 0x7fe57ead12d0)>: READY
2021-07-19 07:25:49,263 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2080)>
2021-07-19 07:25:49,263 audio playback state-changed on <__gi__.GstOpusDec object at 0x118c6fa40 (GstOpusDec at 0x7fe57ead0ae0)>: READY
2021-07-19 07:25:49,263 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2100)>
2021-07-19 07:25:49,263 audio playback state-changed on <__gi__.GstOpusParse object at 0x118c6fc80 (GstOpusParse at 0x7fe57f008860)>: READY
2021-07-19 07:25:49,263 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2180)>
2021-07-19 07:25:49,263 audio playback state-changed on <__gi__.GstAppSrc object at 0x117a75f00 (GstAppSrc at 0x7fe57eacf290)>: READY
2021-07-19 07:25:49,263 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2200)>
2021-07-19 07:25:49,263 audio playback state-changed on <Gst.Pipeline object at 0x117a5dd00 (GstPipeline at 0x7fe57eadc1f0)>: READY
2021-07-19 07:25:49,263 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2380)>
2021-07-19 07:25:49,263 audio playback state-changed on <__gi__.GstVolume object at 0x117a75880 (GstVolume at 0x7fe57eaa20d0)>: PAUSED
2021-07-19 07:25:49,263 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2480)>
2021-07-19 07:25:49,263 audio playback stream status: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2480)>
2021-07-19 07:25:49,264 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2500)>
2021-07-19 07:25:49,264 audio playback state-changed on <__gi__.GstQueue object at 0x117a78180 (GstQueue at 0x7fe57f036090)>: PAUSED
2021-07-19 07:25:49,264 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eaed840)>
2021-07-19 07:25:49,264 audio playback stream status: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eaed840)>
2021-07-19 07:25:49,264 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2580)>
2021-07-19 07:25:49,264 audio playback state-changed on <__gi__.GstAudioResample object at 0x117a75240 (GstAudioResample at 0x7fe57f010ed0)>: PAUSED
2021-07-19 07:25:49,264 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2600)>
2021-07-19 07:25:49,264 audio playback state-changed on <__gi__.GstAudioConvert object at 0x117a5dcc0 (GstAudioConvert at 0x7fe57ead12d0)>: PAUSED
2021-07-19 07:25:49,264 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2680)>
2021-07-19 07:25:49,264 audio playback state-changed on <__gi__.GstOpusDec object at 0x117a75240 (GstOpusDec at 0x7fe57ead0ae0)>: PAUSED
2021-07-19 07:25:49,264 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eae2280)>
2021-07-19 07:25:49,264 audio playback state-changed on <__gi__.GstOpusParse object at 0x117a5dcc0 (GstOpusParse at 0x7fe57f008860)>: PAUSED
2021-07-19 07:25:49,264 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eaede40)>
2021-07-19 07:25:49,264 audio playback stream status: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eaede40)>
2021-07-19 07:25:49,264 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eaedec0)>
2021-07-19 07:25:49,264 audio playback state-changed on <__gi__.GstAppSrc object at 0x117a75f00 (GstAppSrc at 0x7fe57eacf290)>: PAUSED
2021-07-19 07:25:49,264 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57f038480)>
2021-07-19 07:25:49,264 audio playback stream status: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57f038480)>
2021-07-19 07:25:49,264 audio playback on_message: <Gst.Message object at 0x117a7f280 (GstMessage at 0x7fe57eaed940)>
2021-07-19 07:25:49,770 audio playback using 'opus' audio codec
2021-07-19 07:25:50,307 audio playback set_min_level mtt=150, max-size-time=450, lrange=0, mrange=150 (UNDERRUN_MIN_LEVEL=150)
2021-07-19 07:25:50,307 audio playback set_min_level min-threshold-time=150
2021-07-19 07:25:50,309 audio playback add_data: refill=True, level=0, min=150
2021-07-19 07:25:50,309 audio playback add_data: refill=True, level=0, min=150
2021-07-19 07:25:50,310 audio playback add_data: refill=True, level=0, min=150
2021-07-19 07:25:50,310 audio playback add_data: refill=True, level=0, min=150
2021-07-19 07:25:50,310 audio playback add_data: refill=True, level=0, min=150
2021-07-19 07:25:50,311 audio playback add_data: refill=True, level=0, min=150
2021-07-19 07:25:50,311 audio playback add_data: refill=True, level=0, min=150
2021-07-19 07:25:50,327 audio playback queue_running
2021-07-19 07:25:50,327 audio playback queue_pushing
2021-07-19 07:25:50,336 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe57eaed9c0)>
2021-07-19 07:25:50,351 audio playback state-changed on <__gi__.GstOsxAudioSink object at 0x117a784c0 (GstOsxAudioSink at 0x7fe57eaa3300)>: PAUSED
2021-07-19 07:25:50,351 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe57eaedbc0)>
2021-07-19 07:25:50,351 audio playback state-changed on <Gst.Pipeline object at 0x117a5dd00 (GstPipeline at 0x7fe57eadc1f0)>: PAUSED
2021-07-19 07:25:50,351 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe57eaedb40)>
2021-07-19 07:25:50,351 audio playback <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe57eaedb40)>
2021-07-19 07:25:50,351 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe588008b10)>
2021-07-19 07:25:50,356 audio playback <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe588008b10)>
2021-07-19 07:25:50,356 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe588008b90)>
2021-07-19 07:25:50,356 audio playback state-changed on <__gi__.GstOsxAudioSink object at 0x117a784c0 (GstOsxAudioSink at 0x7fe57eaa3300)>: PLAYING
2021-07-19 07:25:50,356 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe588008c10)>
2021-07-19 07:25:50,356 audio playback state-changed on <__gi__.GstVolume object at 0x117a75880 (GstVolume at 0x7fe57eaa20d0)>: PLAYING
2021-07-19 07:25:50,356 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe588008c90)>
2021-07-19 07:25:50,356 audio playback state-changed on <__gi__.GstQueue object at 0x117a78180 (GstQueue at 0x7fe57f036090)>: PLAYING
2021-07-19 07:25:50,356 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe588008d10)>
2021-07-19 07:25:50,356 audio playback state-changed on <__gi__.GstAudioResample object at 0x118c7d7c0 (GstAudioResample at 0x7fe57f010ed0)>: PLAYING
2021-07-19 07:25:50,356 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe588008d90)>
2021-07-19 07:25:50,356 audio playback state-changed on <__gi__.GstAudioConvert object at 0x118c7cb80 (GstAudioConvert at 0x7fe57ead12d0)>: PLAYING
2021-07-19 07:25:50,356 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe588008e10)>
2021-07-19 07:25:50,356 audio playback state-changed on <__gi__.GstOpusDec object at 0x118c7d340 (GstOpusDec at 0x7fe57ead0ae0)>: PLAYING
2021-07-19 07:25:50,357 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe588008e90)>
2021-07-19 07:25:50,357 audio playback state-changed on <__gi__.GstOpusParse object at 0x118c7cb80 (GstOpusParse at 0x7fe57f008860)>: PLAYING
2021-07-19 07:25:50,357 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe588008f10)>
2021-07-19 07:25:50,357 audio playback state-changed on <__gi__.GstAppSrc object at 0x117a75f00 (GstAppSrc at 0x7fe57eacf290)>: PLAYING
2021-07-19 07:25:50,357 audio playback on_message: <Gst.Message object at 0x117a7f880 (GstMessage at 0x7fe57eb23000)>
2021-07-19 07:25:50,357 audio playback state-changed on <Gst.Pipeline object at 0x117a5dd00 (GstPipeline at 0x7fe57eadc1f0)>: PLAYING
2021-07-19 07:25:50,365 audio playback adjust_volume current volume=0.00, change=0.07
2021-07-19 07:25:50,381 audio playback ignoring underrun during startup
2021-07-19 07:25:50,385 audio playback queue_running
2021-07-19 07:25:50,385 audio playback queue_pushing
2021-07-19 07:25:50,386 audio playback ignoring underrun during startup
2021-07-19 07:25:50,438 audio playback queue_running
2021-07-19 07:25:50,438 audio playback queue_pushing
2021-07-19 07:25:50,438 audio playback ignoring underrun during startup
2021-07-19 07:25:50,442 audio playback queue_running
2021-07-19 07:25:50,442 audio playback queue_pushing
2021-07-19 07:25:50,442 audio playback ignoring underrun during startup
2021-07-19 07:25:50,444 audio playback queue_running
2021-07-19 07:25:50,445 audio playback queue_pushing
2021-07-19 07:25:50,445 audio playback ignoring underrun during startup
2021-07-19 07:25:50,465 audio playback adjust_volume current volume=0.07, change=0.06
2021-07-19 07:25:50,466 audio playback queue_running
2021-07-19 07:25:50,466 audio playback queue_pushing
2021-07-19 07:25:50,466 audio playback ignoring underrun during startup
2021-07-19 07:25:50,485 audio playback queue_running
2021-07-19 07:25:50,485 audio playback queue_pushing
2021-07-19 07:25:50,485 audio playback ignoring underrun during startup
2021-07-19 07:25:50,505 audio playback queue_running
2021-07-19 07:25:50,505 audio playback queue_pushing
2021-07-19 07:25:50,505 audio playback ignoring underrun during startup
2021-07-19 07:25:50,525 audio playback queue_running
2021-07-19 07:25:50,525 audio playback queue_pushing
2021-07-19 07:25:50,525 audio playback ignoring underrun during startup
2021-07-19 07:25:50,545 audio playback queue_running
2021-07-19 07:25:50,545 audio playback queue_pushing
2021-07-19 07:25:50,545 audio playback ignoring underrun during startup
2021-07-19 07:25:50,571 audio playback adjust_volume current volume=0.13, change=0.06
2021-07-19 07:25:50,585 audio playback queue_running
2021-07-19 07:25:50,585 audio playback queue_pushing
2021-07-19 07:25:50,585 audio playback ignoring underrun during startup
2021-07-19 07:25:50,604 audio playback queue_running
2021-07-19 07:25:50,605 audio playback queue_pushing
2021-07-19 07:25:50,605 audio playback ignoring underrun during startup
2021-07-19 07:25:50,625 audio playback queue_running
2021-07-19 07:25:50,625 audio playback queue_pushing
2021-07-19 07:25:50,625 audio playback ignoring underrun during startup
2021-07-19 07:25:50,656 audio playback queue_running
2021-07-19 07:25:50,656 audio playback queue_pushing
2021-07-19 07:25:50,657 audio playback ignoring underrun during startup
2021-07-19 07:25:50,675 audio playback adjust_volume current volume=0.19, change=0.06
2021-07-19 07:25:50,679 audio playback queue_running
2021-07-19 07:25:50,679 audio playback queue_pushing
2021-07-19 07:25:50,679 audio playback ignoring underrun during startup
2021-07-19 07:25:50,684 audio playback queue_running
2021-07-19 07:25:50,684 audio playback queue_pushing
2021-07-19 07:25:50,684 audio playback ignoring underrun during startup
2021-07-19 07:25:50,705 audio playback queue_running
2021-07-19 07:25:50,705 audio playback queue_pushing
2021-07-19 07:25:50,705 audio playback ignoring underrun during startup
2021-07-19 07:25:50,724 audio playback queue_running
2021-07-19 07:25:50,724 audio playback queue_pushing
2021-07-19 07:25:50,725 audio playback ignoring underrun during startup
2021-07-19 07:25:50,745 audio playback queue_running
2021-07-19 07:25:50,745 audio playback queue_pushing
2021-07-19 07:25:50,745 audio playback ignoring underrun during startup
2021-07-19 07:25:50,766 audio playback queue_running
2021-07-19 07:25:50,766 audio playback queue_pushing
2021-07-19 07:25:50,766 audio playback ignoring underrun during startup
2021-07-19 07:25:50,766 audio playback queue_running
2021-07-19 07:25:50,767 audio playback queue_pushing
2021-07-19 07:25:50,767 audio playback ignoring underrun during startup
2021-07-19 07:25:50,778 audio playback adjust_volume current volume=0.25, change=0.06
2021-07-19 07:25:50,805 audio playback queue_running
2021-07-19 07:25:50,805 audio playback queue_pushing
2021-07-19 07:25:50,805 audio playback ignoring underrun during startup
2021-07-19 07:25:50,825 audio playback queue_running
2021-07-19 07:25:50,825 audio playback queue_pushing
2021-07-19 07:25:50,825 audio playback ignoring underrun during startup
2021-07-19 07:25:50,845 audio playback queue_running
2021-07-19 07:25:50,845 audio playback queue_pushing
...
totaam commented 3 years ago

The pipeline is here:

2021-07-19 07:25:49,205 audio playback pipeline=appsrc name=src \
    emit-signals=0 block=0 is-live=0 stream-type=0 format=4 ! opusparse ! opusdec ! \
    audioconvert ! audioresa! \
    queue name=queue min-threshold-time=0 max-size-buffers=0 max-size-bytes=0 max-size-time=450000000 leaky=2 ! \
    volume name=volume volume=0 ! osxaudiosink sync=False asyne qos=True name="sink"

But something went wrong when you copied the log file over because there are lots of typos in there. It should be audioresample and async=True not asyne. There are more typos further down. Please attach the unedited log to this ticket, in full. After a second or two, the underruns should stop and audio should be playing smoothly.

Volume says zero but there were log messages later about incrementing it upwards

Yes, we do this to protect your speakers and your ears. Starting at full volume can be painful.

found the following plugins: ['3gppmux', 'aacparse', 'ac3parse', ..

It is finding modules that we do not ship. So perhaps you have another gstreamer installation on your system and this is causing problems somehow?

davideger commented 3 years ago

Sorry about that, the log must have truncated oddly when I resized my xterm, try the attached. As for another gstreamer installation, I did try to build xpra from source on the M1 but didn't get terribly far due (I think) to Python 3.9 being a "universal binary" of x86_64+arm64 and the xpra build targeting just one architecture led to Python failing when trying to dlopen() a built library giving up with the error no suitable image found... blahblah.so: mach-o, but wrong architecture)

2021-07-20 08:59:45,382 audio playback pipeline elements=['appsrc name=src emit-signals=0 block=0 is-live=0 stream-type=0 format=4', 'opusparse ! opusdec', 'audioconvert', 'audioresample', 'queue name=queue min-threshold-time=0 max-size-buffers=0 max-size-bytes=0 max-size-time=450000000 leaky=2', 'volume name=volume volume=0', 'osxaudiosink sync=False async=True qos=True name="sink"']
2021-07-20 08:59:45,382 audio playback pipeline=appsrc name=src emit-signals=0 block=0 is-live=0 stream-type=0 format=4 ! opusparse ! opusdec ! audioconvert ! audioresample ! queue name=queue min-threshold-time=0 max-size-buffers=0 max-size-bytes=0 max-size-time=450000000 leaky=2 ! volume name=volume volume=0 ! osxaudiosink sync=False async=True qos=True name="sink"

xpra.log

totaam commented 3 years ago

Looking at your log: the pipeline goes to playing state, the playback buffer fills up but then the queue keeps bouncing between running, pushing and underrun.
This is not something you can reproduce with your test pipeline: gst-launch-1.0 audiotestsrc ! audioconvert ! audioresample ! osxaudiosink because audiotestsrc will produce enough buffers to never go into underrun.

This is going to be very difficult without access to the actual hardware (speaker output and all)... You could try running with:

XPRA_SOUND_UNDERRUN_MIN_LEVEL=500 XPRA_SOUND_MARGIN=200 xpra attach ...

As for building an x86_64+arm64 binary: https://github.com/jralls/gtk-osx-build/blob/f8de425111e45177dceee96d3a1a85fef174dc21/jhbuildrc-gtk-osx#L291-L292 WARNING: Universal builds are neither prohibited nor supported. It might work, but if it doesn't you're on your own. Again, I can't test any of this.

totaam commented 2 years ago

Not heard back. Closing.

Perhaps the next version of gstreamer will work better on this hardware. Until then, there's not much I can do.

davideger commented 2 years ago

Sorry to not have more I could offer in terms of debugging. I never resolved the issue and eventually shifted over to using tailscale instead of xpra for accessing my private dev workstation.

totaam commented 1 year ago

@davideger we now have beta arm64 builds that should be able to run on M1 and later, they require MacOS 12: https://github.com/Xpra-org/xpra/wiki/Download#-macos