
In practice we always create a remote and connect to pipewire. Any other scenario is invalid, therefore, it is not justified to be confused with so many classes for such small functionality. This simplifies a lot the modules code. Also, this commit exposes the pw_core and pw_remote objects out of WpCore. This is in practice useful when dealing with low-level pw and spa factories, which are used in the monitors. Let's not add API wrappers for everything... Bindings will never use this functionality anyway, since it depends on low level pipewire C API.
37 lines
1.2 KiB
C
37 lines
1.2 KiB
C
/* WirePlumber
|
|
*
|
|
* Copyright © 2019 Collabora Ltd.
|
|
* @author George Kiagiadakis <george.kiagiadakis@collabora.com>
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
/**
|
|
* module-pipewire provides basic integration between wireplumber and pipewire.
|
|
* It provides the pipewire core and remote, connects to pipewire and provides
|
|
* the most primitive implementations of WpEndpoint and WpEndpointLink
|
|
*/
|
|
|
|
#include <wp/wp.h>
|
|
#include <pipewire/pipewire.h>
|
|
|
|
void simple_endpoint_factory (WpFactory * factory, GType type,
|
|
GVariant * properties, GAsyncReadyCallback ready, gpointer user_data);
|
|
void simple_endpoint_link_factory (WpFactory * factory, GType type,
|
|
GVariant * properties, GAsyncReadyCallback ready, gpointer user_data);
|
|
|
|
void
|
|
wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
|
|
{
|
|
struct pw_core *pw_core = wp_core_get_pw_core (core);
|
|
|
|
pw_module_load (pw_core, "libpipewire-module-client-device", NULL, NULL);
|
|
pw_module_load (pw_core, "libpipewire-module-adapter", NULL, NULL);
|
|
|
|
/* Register simple-endpoint and simple-endpoint-link */
|
|
wp_factory_new (core, "pipewire-simple-endpoint",
|
|
simple_endpoint_factory);
|
|
wp_factory_new (core, "pipewire-simple-endpoint-link",
|
|
simple_endpoint_link_factory);
|
|
}
|