diff --git a/desktop/build.py b/desktop/build.py index 4e613ad..37c63a8 100644 --- a/desktop/build.py +++ b/desktop/build.py @@ -57,7 +57,9 @@ def build(destination): libdir = plugin_dir.parent for relative in ('pipewire-0.3/libpipewire-module-protocol-native.so', 'pipewire-0.3/libpipewire-module-client-node.so', - 'spa-0.2/support/libspa-support.so'): + 'pipewire-0.3/libpipewire-module-adapter.so', + 'spa-0.2/support/libspa-support.so', + 'spa-0.2/videoconvert/libspa-videoconvert.so'): source = libdir / relative if not source.is_file(): raise SystemExit('Missing PipeWire runtime library: ' + str(source)) @@ -68,10 +70,11 @@ def build(destination): config = destination / 'share' / 'pipewire' config.mkdir(parents=True, exist_ok=True) (config / 'client.conf').write_text( - 'context.spa-libs = { support.* = support/libspa-support }\n' + 'context.spa-libs = { support.* = support/libspa-support video.convert.* = videoconvert/libspa-videoconvert }\n' 'context.modules = [\n' ' { name = libpipewire-module-protocol-native }\n' ' { name = libpipewire-module-client-node }\n' + ' { name = libpipewire-module-adapter }\n' ']\n') copied = set() while pending: diff --git a/tests/test_pcview.py b/tests/test_pcview.py index 8a5cc1e..f18db17 100644 --- a/tests/test_pcview.py +++ b/tests/test_pcview.py @@ -186,6 +186,9 @@ for name, ret, args in [ ('pw_main_loop_new', C.c_void_p, [C.c_void_p]), ('pw_main_loop_get_loop', C.c_void_p, [C.c_void_p]), ('pw_context_new', C.c_void_p, [C.c_void_p, C.c_void_p, C.c_size_t]), + ('pw_context_find_factory', C.c_void_p, [C.c_void_p, C.c_char_p]), + ('pw_context_load_spa_handle', C.c_void_p, [C.c_void_p, C.c_char_p, C.c_void_p]), + ('pw_unload_spa_handle', C.c_int, [C.c_void_p]), ('pw_context_destroy', None, [C.c_void_p]), ('pw_main_loop_destroy', None, [C.c_void_p])]: fn = getattr(lib, name) @@ -195,6 +198,10 @@ loop = lib.pw_main_loop_new(None) assert loop, 'bundled SPA loop support did not load' context = lib.pw_context_new(lib.pw_main_loop_get_loop(loop), None, 0) assert context, 'bundled PipeWire client modules did not load' +assert lib.pw_context_find_factory(context, b'adapter'), 'video adapter factory is missing' +handle = lib.pw_context_load_spa_handle(context, b'video.convert', None) +assert handle, 'bundled SPA video converter did not load' +lib.pw_unload_spa_handle(handle) lib.pw_context_destroy(context) lib.pw_main_loop_destroy(loop) """