pipewire 1.1.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -21,20 +21,6 @@ npm run build
21
21
 
22
22
  ## Usage
23
23
 
24
- ```ts
25
- import * as pw from "pipewire";
26
-
27
- pw.pipewire.pw_init(0, null);
28
-
29
- const loop = pw.main_loop.pw_main_loop_new(null);
30
- const context = pw.context.pw_context_new(pw.main_loop.pw_main_loop_get_loop(loop), null, 0);
31
- const core = pw.core.pw_context_connect(context, null, 0);
32
- const registry = pw.core.pw_core_get_registry(core, 3, 0);
33
-
34
- // ...add listeners, then run the main loop
35
- await new Promise((resolve) => pw.main_loop.pw_main_loop_run.async(loop, resolve));
36
- ```
37
-
38
24
  See [`examples/event-registry.ts`](examples/event-registry.ts) for a complete example:
39
25
 
40
26
  ```bash
package/dist/core.d.ts CHANGED
@@ -18,7 +18,8 @@ export declare const pw_core_get_registry: {
18
18
  result: import("koffi").TypeObject;
19
19
  };
20
20
  };
21
- export declare const pw_registry_events_globals: import("koffi").TypeObject;
21
+ export declare const pw_registry_events_global: import("koffi").TypeObject;
22
+ export declare const pw_registry_events_global_remove: import("koffi").TypeObject;
22
23
  export declare const pw_registry_events: import("koffi").TypeObject;
23
24
  export declare const pw_core_disconnect: {
24
25
  (...args: any[]): any;
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,4BAA0B,CAAC;AAC/C,eAAO,MAAM,WAAW,4BAA8B,CAAC;AAEvD,eAAO,MAAM,kBAAkB;;;;;;;;CAI7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;CAI/B,CAAC;AAEH,eAAO,MAAM,0BAA0B,4BAOrC,CAAC;AAEH,eAAO,MAAM,kBAAkB,4BAI7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;CAAuE,CAAC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,4BAA0B,CAAC;AAC/C,eAAO,MAAM,WAAW,4BAA8B,CAAC;AAEvD,eAAO,MAAM,kBAAkB;;;;;;;;CAI7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;CAI/B,CAAC;AAEH,eAAO,MAAM,yBAAyB,4BAOpC,CAAC;AAEH,eAAO,MAAM,gCAAgC,4BAG3C,CAAC;AAEH,eAAO,MAAM,kBAAkB,4BAI7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;CAAuE,CAAC"}
package/dist/core.js CHANGED
@@ -14,7 +14,7 @@ export const pw_core_get_registry = pipewire.func("pw_core_get_registry", koffi.
14
14
  "uint32_t",
15
15
  "size_t"
16
16
  ]);
17
- export const pw_registry_events_globals = koffi.proto("void", [
17
+ export const pw_registry_events_global = koffi.proto("void", [
18
18
  "void*", // data
19
19
  "uint32_t", // id
20
20
  "uint32_t", // permissions
@@ -22,10 +22,14 @@ export const pw_registry_events_globals = koffi.proto("void", [
22
22
  "uint32_t", // version
23
23
  "void*" // props
24
24
  ]);
25
+ export const pw_registry_events_global_remove = koffi.proto("void", [
26
+ "void*", // data
27
+ "uint32_t" // id
28
+ ]);
25
29
  export const pw_registry_events = koffi.struct("pw_registry_events", {
26
- vesion: "uint32_t",
27
- global: "void*", // TODO
28
- global_remove: "void*" // TODO
30
+ version: "uint32_t",
31
+ global: koffi.pointer(pw_registry_events_global),
32
+ global_remove: koffi.pointer(pw_registry_events_global_remove)
29
33
  });
30
34
  export const pw_core_disconnect = pipewire.func("pw_core_disconnect", "int", [koffi.pointer(pw_core)]);
31
35
  //# sourceMappingURL=core.js.map
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IAC1F,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;IACzB,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;IAC5B,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;IAClG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;IACtB,UAAU;IACV,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1D,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,cAAc;IAC1B,aAAa,EAAE,OAAO;IACtB,UAAU,EAAE,UAAU;IACtB,OAAO,CAAC,QAAQ;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE;IACjE,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,OAAO,EAAE,OAAO;IACxB,aAAa,EAAE,OAAO,CAAC,OAAO;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IAC1F,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;IACzB,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;IAC5B,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;IAClG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;IACtB,UAAU;IACV,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;IACzD,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,cAAc;IAC1B,aAAa,EAAE,OAAO;IACtB,UAAU,EAAE,UAAU;IACtB,OAAO,CAAC,QAAQ;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;IAChE,OAAO,EAAE,OAAO;IAChB,UAAU,CAAC,KAAK;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE;IACjE,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC;IAChD,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,gCAAgC,CAAC;CACjE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  import * as context from "./context.js";
2
2
  import * as core from "./core.js";
3
+ import * as dict from "./dict.js";
3
4
  import * as hook from "./hook.js";
4
5
  import * as main_loop from "./main-loop.js";
6
+ import * as node from "./node.js";
7
+ import * as param from "./param.js";
5
8
  import * as pipewire from "./pipewire.js";
9
+ import * as pod from "./pod.js";
10
+ import * as props from "./props.js";
6
11
  import * as proxy from "./proxy.js";
7
12
  import * as registry from "./registry.js";
8
- export { context, core, hook, main_loop, pipewire, proxy, registry };
13
+ export { context, core, dict, hook, main_loop, node, param, pod, props, pipewire, proxy, registry };
9
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,14 @@
1
1
  import * as context from "./context.js";
2
2
  import * as core from "./core.js";
3
+ import * as dict from "./dict.js";
3
4
  import * as hook from "./hook.js";
4
5
  import * as main_loop from "./main-loop.js";
6
+ import * as node from "./node.js";
7
+ import * as param from "./param.js";
5
8
  import * as pipewire from "./pipewire.js";
9
+ import * as pod from "./pod.js";
10
+ import * as props from "./props.js";
6
11
  import * as proxy from "./proxy.js";
7
12
  import * as registry from "./registry.js";
8
- export { context, core, hook, main_loop, pipewire, proxy, registry };
13
+ export { context, core, dict, hook, main_loop, node, param, pod, props, pipewire, proxy, registry };
9
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ export declare const pw_node: import("koffi").TypeObject;
2
+ export declare const pw_node_state: import("koffi").TypeObject;
3
+ export declare const PW_NODE_CHANGE_MASK: {
4
+ INPUT_PORTS: number;
5
+ OUTPUT_PORTS: number;
6
+ STATE: number;
7
+ PROPS: number;
8
+ PARAMS: number;
9
+ };
10
+ export declare const pw_node_info: import("koffi").TypeObject;
11
+ export declare const pw_node_events_info: import("koffi").TypeObject;
12
+ export declare const pw_node_events_param: import("koffi").TypeObject;
13
+ export declare const pw_node_events: import("koffi").TypeObject;
14
+ export declare const pw_node_add_listener: {
15
+ (...args: any[]): any;
16
+ async: (...args: any[]) => any;
17
+ info: {
18
+ name: string;
19
+ arguments: import("koffi").TypeObject[];
20
+ result: import("koffi").TypeObject;
21
+ };
22
+ };
23
+ export declare const pw_node_enum_params: {
24
+ (...args: any[]): any;
25
+ async: (...args: any[]) => any;
26
+ info: {
27
+ name: string;
28
+ arguments: import("koffi").TypeObject[];
29
+ result: import("koffi").TypeObject;
30
+ };
31
+ };
32
+ export declare const pw_node_subscribe_params: {
33
+ (...args: any[]): any;
34
+ async: (...args: any[]) => any;
35
+ info: {
36
+ name: string;
37
+ arguments: import("koffi").TypeObject[];
38
+ result: import("koffi").TypeObject;
39
+ };
40
+ };
41
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,OAAO,4BAA0B,CAAC;AAE/C,eAAO,MAAM,aAAa,4BAMxB,CAAC;AAEH,eAAO,MAAM,mBAAmB;IAC5B,WAAW;IACX,YAAY;IACZ,KAAK;IACL,KAAK;IACL,MAAM;CACT,CAAC;AAEF,eAAO,MAAM,YAAY,4BAYvB,CAAC;AAEH,eAAO,MAAM,mBAAmB,4BAG9B,CAAC;AAEH,eAAO,MAAM,oBAAoB,4BAO/B,CAAC;AAEH,eAAO,MAAM,cAAc,4BAIzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;CAK/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;CAO9B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;CAInC,CAAC"}
package/dist/node.js ADDED
@@ -0,0 +1,71 @@
1
+ import koffi from "koffi";
2
+ import { spa_hook } from "./hook.js";
3
+ import { spa_pod } from "./pod.js";
4
+ import { spa_dict } from "./dict.js";
5
+ import { spa_param_info } from "./param.js";
6
+ const pipewire = koffi.load("libpipewire-0.3.so.0");
7
+ export const pw_node = koffi.opaque("pw_node");
8
+ export const pw_node_state = koffi.enumeration("pw_node_state", {
9
+ PW_NODE_STATE_ERROR: -1,
10
+ PW_NODE_STATE_CREATING: 0,
11
+ PW_NODE_STATE_SUSPENDED: 1,
12
+ PW_NODE_STATE_IDLE: 2,
13
+ PW_NODE_STATE_RUNNING: 3
14
+ });
15
+ export const PW_NODE_CHANGE_MASK = {
16
+ INPUT_PORTS: 1 << 0,
17
+ OUTPUT_PORTS: 1 << 1,
18
+ STATE: 1 << 2,
19
+ PROPS: 1 << 3,
20
+ PARAMS: 1 << 4
21
+ };
22
+ export const pw_node_info = koffi.struct("pw_node_info", {
23
+ id: "uint32_t",
24
+ max_input_ports: "uint32_t",
25
+ max_output_ports: "uint32_t",
26
+ change_mask: "uint64_t",
27
+ n_input_ports: "uint32_t",
28
+ n_output_ports: "uint32_t",
29
+ state: pw_node_state,
30
+ error: "const char*",
31
+ props: koffi.pointer(spa_dict),
32
+ params: koffi.pointer(spa_param_info),
33
+ n_params: "uint32_t"
34
+ });
35
+ export const pw_node_events_info = koffi.proto("void", [
36
+ "void*", // data
37
+ koffi.pointer(pw_node_info) // info
38
+ ]);
39
+ export const pw_node_events_param = koffi.proto("void", [
40
+ "void*", // data
41
+ "int", // seq
42
+ "uint32_t", // id
43
+ "uint32_t", // index
44
+ "uint32_t", // next
45
+ koffi.pointer(spa_pod) // param
46
+ ]);
47
+ export const pw_node_events = koffi.struct("pw_node_events", {
48
+ version: "uint32_t",
49
+ info: koffi.pointer(pw_node_events_info),
50
+ param: koffi.pointer(pw_node_events_param)
51
+ });
52
+ export const pw_node_add_listener = pipewire.func("pw_node_add_listener", "int", [
53
+ koffi.pointer(pw_node), // object
54
+ koffi.pointer(spa_hook), // listener
55
+ koffi.pointer(pw_node_events), // events
56
+ "void*" // data
57
+ ]);
58
+ export const pw_node_enum_params = pipewire.func("pw_node_enum_params", "int", [
59
+ koffi.pointer(pw_node), // object
60
+ "int", // seq
61
+ "uint32_t", // id
62
+ "uint32_t", // start
63
+ "uint32_t", // num
64
+ koffi.pointer(spa_pod) // filter
65
+ ]);
66
+ export const pw_node_subscribe_params = pipewire.func("pw_node_subscribe_params", "int", [
67
+ koffi.pointer(pw_node), // object
68
+ "uint32_t*", // ids
69
+ "uint32_t" // n_ids
70
+ ]);
71
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export declare const spa_param_info: import("koffi").TypeObject;
2
+ export declare const spa_param_type: {
3
+ SPA_PARAM_Invalid: number;
4
+ SPA_PARAM_PropInfo: number;
5
+ SPA_PARAM_Props: number;
6
+ SPA_PARAM_EnumFormat: number;
7
+ SPA_PARAM_Format: number;
8
+ SPA_PARAM_Buffers: number;
9
+ SPA_PARAM_Meta: number;
10
+ SPA_PARAM_IO: number;
11
+ SPA_PARAM_EnumProfile: number;
12
+ SPA_PARAM_Profile: number;
13
+ SPA_PARAM_EnumPortConfig: number;
14
+ SPA_PARAM_PortConfig: number;
15
+ SPA_PARAM_EnumRoute: number;
16
+ SPA_PARAM_Route: number;
17
+ SPA_PARAM_Control: number;
18
+ SPA_PARAM_Latency: number;
19
+ SPA_PARAM_ProcessLatency: number;
20
+ SPA_PARAM_Tag: number;
21
+ SPA_PARAM_PeerEnumFormat: number;
22
+ SPA_PARAM_Capability: number;
23
+ SPA_PARAM_PeerCapability: number;
24
+ };
25
+ //# sourceMappingURL=param.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param.d.ts","sourceRoot":"","sources":["../src/param.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,4BAMzB,CAAC;AAEH,eAAO,MAAM,cAAc;IACvB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,oBAAoB;IACpB,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,YAAY;IACZ,qBAAqB;IACrB,iBAAiB;IACjB,wBAAwB;IACxB,oBAAoB;IACpB,mBAAmB;IACnB,eAAe;IACf,iBAAiB;IACjB,iBAAiB;IACjB,wBAAwB;IACxB,aAAa;IACb,wBAAwB;IACxB,oBAAoB;IACpB,wBAAwB;CAC3B,CAAC"}
package/dist/param.js ADDED
@@ -0,0 +1,32 @@
1
+ import koffi from "koffi";
2
+ export const spa_param_info = koffi.struct("spa_param_info", {
3
+ id: "uint32_t",
4
+ flags: "uint32_t",
5
+ user: "uint32_t",
6
+ seq: "int32_t",
7
+ padding: koffi.array("uint32_t", 4)
8
+ });
9
+ export const spa_param_type = {
10
+ SPA_PARAM_Invalid: 0,
11
+ SPA_PARAM_PropInfo: 1,
12
+ SPA_PARAM_Props: 2,
13
+ SPA_PARAM_EnumFormat: 3,
14
+ SPA_PARAM_Format: 4,
15
+ SPA_PARAM_Buffers: 5,
16
+ SPA_PARAM_Meta: 6,
17
+ SPA_PARAM_IO: 7,
18
+ SPA_PARAM_EnumProfile: 8,
19
+ SPA_PARAM_Profile: 9,
20
+ SPA_PARAM_EnumPortConfig: 10,
21
+ SPA_PARAM_PortConfig: 11,
22
+ SPA_PARAM_EnumRoute: 12,
23
+ SPA_PARAM_Route: 13,
24
+ SPA_PARAM_Control: 14,
25
+ SPA_PARAM_Latency: 15,
26
+ SPA_PARAM_ProcessLatency: 16,
27
+ SPA_PARAM_Tag: 17,
28
+ SPA_PARAM_PeerEnumFormat: 18,
29
+ SPA_PARAM_Capability: 19,
30
+ SPA_PARAM_PeerCapability: 20
31
+ };
32
+ //# sourceMappingURL=param.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param.js","sourceRoot":"","sources":["../src/param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE;IACzD,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EAAE,CAAC;IACrB,eAAe,EAAE,CAAC;IAClB,oBAAoB,EAAE,CAAC;IACvB,gBAAgB,EAAE,CAAC;IACnB,iBAAiB,EAAE,CAAC;IACpB,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IACf,qBAAqB,EAAE,CAAC;IACxB,iBAAiB,EAAE,CAAC;IACpB,wBAAwB,EAAE,EAAE;IAC5B,oBAAoB,EAAE,EAAE;IACxB,mBAAmB,EAAE,EAAE;IACvB,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,EAAE;IACrB,iBAAiB,EAAE,EAAE;IACrB,wBAAwB,EAAE,EAAE;IAC5B,aAAa,EAAE,EAAE;IACjB,wBAAwB,EAAE,EAAE;IAC5B,oBAAoB,EAAE,EAAE;IACxB,wBAAwB,EAAE,EAAE;CAC/B,CAAC"}
package/dist/pod.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const spa_pod: import("koffi").TypeObject;
2
+ //# sourceMappingURL=pod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pod.d.ts","sourceRoot":"","sources":["../src/pod.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,4BAGlB,CAAC"}
package/dist/pod.js ADDED
@@ -0,0 +1,6 @@
1
+ import koffi from "koffi";
2
+ export const spa_pod = koffi.struct("spa_pod", {
3
+ size: "uint32_t",
4
+ type: "uint32_t"
5
+ });
6
+ //# sourceMappingURL=pod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pod.js","sourceRoot":"","sources":["../src/pod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE;IAC3C,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;CACnB,CAAC,CAAC"}
@@ -0,0 +1,59 @@
1
+ export declare const spa_prop: {
2
+ SPA_PROP_START: number;
3
+ SPA_PROP_unknown: number;
4
+ SPA_PROP_START_Device: number;
5
+ SPA_PROP_device: number;
6
+ SPA_PROP_deviceName: number;
7
+ SPA_PROP_deviceFd: number;
8
+ SPA_PROP_card: number;
9
+ SPA_PROP_cardName: number;
10
+ SPA_PROP_minLatency: number;
11
+ SPA_PROP_maxLatency: number;
12
+ SPA_PROP_periods: number;
13
+ SPA_PROP_periodSize: number;
14
+ SPA_PROP_periodEvent: number;
15
+ SPA_PROP_live: number;
16
+ SPA_PROP_rate: number;
17
+ SPA_PROP_quality: number;
18
+ SPA_PROP_bluetoothAudioCodec: number;
19
+ SPA_PROP_bluetoothOffloadActive: number;
20
+ SPA_PROP_clockId: number;
21
+ SPA_PROP_clockDevice: number;
22
+ SPA_PROP_clockInterface: number;
23
+ SPA_PROP_START_Audio: number;
24
+ SPA_PROP_waveType: number;
25
+ SPA_PROP_frequency: number;
26
+ SPA_PROP_volume: number;
27
+ SPA_PROP_mute: number;
28
+ SPA_PROP_patternType: number;
29
+ SPA_PROP_ditherType: number;
30
+ SPA_PROP_truncate: number;
31
+ SPA_PROP_channelVolumes: number;
32
+ SPA_PROP_volumeBase: number;
33
+ SPA_PROP_volumeStep: number;
34
+ SPA_PROP_channelMap: number;
35
+ SPA_PROP_monitorMute: number;
36
+ SPA_PROP_monitorVolumes: number;
37
+ SPA_PROP_latencyOffsetNsec: number;
38
+ SPA_PROP_softMute: number;
39
+ SPA_PROP_softVolumes: number;
40
+ SPA_PROP_iec958Codecs: number;
41
+ SPA_PROP_volumeRampSamples: number;
42
+ SPA_PROP_volumeRampStepSamples: number;
43
+ SPA_PROP_volumeRampTime: number;
44
+ SPA_PROP_volumeRampStepTime: number;
45
+ SPA_PROP_volumeRampScale: number;
46
+ SPA_PROP_START_Video: number;
47
+ SPA_PROP_brightness: number;
48
+ SPA_PROP_contrast: number;
49
+ SPA_PROP_saturation: number;
50
+ SPA_PROP_hue: number;
51
+ SPA_PROP_gamma: number;
52
+ SPA_PROP_exposure: number;
53
+ SPA_PROP_gain: number;
54
+ SPA_PROP_sharpness: number;
55
+ SPA_PROP_START_Other: number;
56
+ SPA_PROP_params: number;
57
+ SPA_PROP_START_CUSTOM: number;
58
+ };
59
+ //# sourceMappingURL=props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../src/props.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;IACjB,cAAc;IAEd,gBAAgB;IAEhB,qBAAqB;IACrB,eAAe;IACf,mBAAmB;IACnB,iBAAiB;IACjB,aAAa;IACb,iBAAiB;IAEjB,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,mBAAmB;IACnB,oBAAoB;IACpB,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,4BAA4B;IAC5B,+BAA+B;IAC/B,gBAAgB;IAChB,oBAAoB;IACpB,uBAAuB;IAEvB,oBAAoB;IACpB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,aAAa;IACb,oBAAoB;IACpB,mBAAmB;IACnB,iBAAiB;IACjB,uBAAuB;IACvB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,uBAAuB;IACvB,0BAA0B;IAC1B,iBAAiB;IACjB,oBAAoB;IAEpB,qBAAqB;IACrB,0BAA0B;IAC1B,8BAA8B;IAC9B,uBAAuB;IACvB,2BAA2B;IAC3B,wBAAwB;IAExB,oBAAoB;IACpB,mBAAmB;IACnB,iBAAiB;IACjB,mBAAmB;IACnB,YAAY;IACZ,cAAc;IACd,iBAAiB;IACjB,aAAa;IACb,kBAAkB;IAElB,oBAAoB;IACpB,eAAe;IAEf,qBAAqB;CACxB,CAAC"}
package/dist/props.js ADDED
@@ -0,0 +1,59 @@
1
+ export const spa_prop = {
2
+ SPA_PROP_START: 0,
3
+ SPA_PROP_unknown: 1,
4
+ SPA_PROP_START_Device: 0x100,
5
+ SPA_PROP_device: 0x100 + 1,
6
+ SPA_PROP_deviceName: 0x100 + 2,
7
+ SPA_PROP_deviceFd: 0x100 + 3,
8
+ SPA_PROP_card: 0x100 + 4,
9
+ SPA_PROP_cardName: 0x100 + 5,
10
+ SPA_PROP_minLatency: 0x100 + 6,
11
+ SPA_PROP_maxLatency: 0x100 + 7,
12
+ SPA_PROP_periods: 0x100 + 8,
13
+ SPA_PROP_periodSize: 0x100 + 9,
14
+ SPA_PROP_periodEvent: 0x100 + 10,
15
+ SPA_PROP_live: 0x100 + 11,
16
+ SPA_PROP_rate: 0x100 + 12,
17
+ SPA_PROP_quality: 0x100 + 13,
18
+ SPA_PROP_bluetoothAudioCodec: 0x100 + 14,
19
+ SPA_PROP_bluetoothOffloadActive: 0x100 + 15,
20
+ SPA_PROP_clockId: 0x100 + 16,
21
+ SPA_PROP_clockDevice: 0x100 + 17,
22
+ SPA_PROP_clockInterface: 0x100 + 18,
23
+ SPA_PROP_START_Audio: 0x10000,
24
+ SPA_PROP_waveType: 0x10000 + 1,
25
+ SPA_PROP_frequency: 0x10000 + 2,
26
+ SPA_PROP_volume: 0x10000 + 3,
27
+ SPA_PROP_mute: 0x10000 + 4,
28
+ SPA_PROP_patternType: 0x10000 + 5,
29
+ SPA_PROP_ditherType: 0x10000 + 6,
30
+ SPA_PROP_truncate: 0x10000 + 7,
31
+ SPA_PROP_channelVolumes: 0x10000 + 8,
32
+ SPA_PROP_volumeBase: 0x10000 + 9,
33
+ SPA_PROP_volumeStep: 0x10000 + 10,
34
+ SPA_PROP_channelMap: 0x10000 + 11,
35
+ SPA_PROP_monitorMute: 0x10000 + 12,
36
+ SPA_PROP_monitorVolumes: 0x10000 + 13,
37
+ SPA_PROP_latencyOffsetNsec: 0x10000 + 14,
38
+ SPA_PROP_softMute: 0x10000 + 15,
39
+ SPA_PROP_softVolumes: 0x10000 + 16,
40
+ SPA_PROP_iec958Codecs: 0x10000 + 17,
41
+ SPA_PROP_volumeRampSamples: 0x10000 + 18,
42
+ SPA_PROP_volumeRampStepSamples: 0x10000 + 19,
43
+ SPA_PROP_volumeRampTime: 0x10000 + 20,
44
+ SPA_PROP_volumeRampStepTime: 0x10000 + 21,
45
+ SPA_PROP_volumeRampScale: 0x10000 + 22,
46
+ SPA_PROP_START_Video: 0x20000,
47
+ SPA_PROP_brightness: 0x20000 + 1,
48
+ SPA_PROP_contrast: 0x20000 + 2,
49
+ SPA_PROP_saturation: 0x20000 + 3,
50
+ SPA_PROP_hue: 0x20000 + 4,
51
+ SPA_PROP_gamma: 0x20000 + 5,
52
+ SPA_PROP_exposure: 0x20000 + 6,
53
+ SPA_PROP_gain: 0x20000 + 7,
54
+ SPA_PROP_sharpness: 0x20000 + 8,
55
+ SPA_PROP_START_Other: 0x80000,
56
+ SPA_PROP_params: 0x80000 + 1,
57
+ SPA_PROP_START_CUSTOM: 0x1000000
58
+ };
59
+ //# sourceMappingURL=props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.js","sourceRoot":"","sources":["../src/props.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,cAAc,EAAE,CAAC;IAEjB,gBAAgB,EAAE,CAAC;IAEnB,qBAAqB,EAAE,KAAK;IAC5B,eAAe,EAAE,KAAK,GAAG,CAAC;IAC1B,mBAAmB,EAAE,KAAK,GAAG,CAAC;IAC9B,iBAAiB,EAAE,KAAK,GAAG,CAAC;IAC5B,aAAa,EAAE,KAAK,GAAG,CAAC;IACxB,iBAAiB,EAAE,KAAK,GAAG,CAAC;IAE5B,mBAAmB,EAAE,KAAK,GAAG,CAAC;IAC9B,mBAAmB,EAAE,KAAK,GAAG,CAAC;IAC9B,gBAAgB,EAAE,KAAK,GAAG,CAAC;IAC3B,mBAAmB,EAAE,KAAK,GAAG,CAAC;IAC9B,oBAAoB,EAAE,KAAK,GAAG,EAAE;IAChC,aAAa,EAAE,KAAK,GAAG,EAAE;IACzB,aAAa,EAAE,KAAK,GAAG,EAAE;IACzB,gBAAgB,EAAE,KAAK,GAAG,EAAE;IAC5B,4BAA4B,EAAE,KAAK,GAAG,EAAE;IACxC,+BAA+B,EAAE,KAAK,GAAG,EAAE;IAC3C,gBAAgB,EAAE,KAAK,GAAG,EAAE;IAC5B,oBAAoB,EAAE,KAAK,GAAG,EAAE;IAChC,uBAAuB,EAAE,KAAK,GAAG,EAAE;IAEnC,oBAAoB,EAAE,OAAO;IAC7B,iBAAiB,EAAE,OAAO,GAAG,CAAC;IAC9B,kBAAkB,EAAE,OAAO,GAAG,CAAC;IAC/B,eAAe,EAAE,OAAO,GAAG,CAAC;IAC5B,aAAa,EAAE,OAAO,GAAG,CAAC;IAC1B,oBAAoB,EAAE,OAAO,GAAG,CAAC;IACjC,mBAAmB,EAAE,OAAO,GAAG,CAAC;IAChC,iBAAiB,EAAE,OAAO,GAAG,CAAC;IAC9B,uBAAuB,EAAE,OAAO,GAAG,CAAC;IACpC,mBAAmB,EAAE,OAAO,GAAG,CAAC;IAChC,mBAAmB,EAAE,OAAO,GAAG,EAAE;IACjC,mBAAmB,EAAE,OAAO,GAAG,EAAE;IACjC,oBAAoB,EAAE,OAAO,GAAG,EAAE;IAClC,uBAAuB,EAAE,OAAO,GAAG,EAAE;IACrC,0BAA0B,EAAE,OAAO,GAAG,EAAE;IACxC,iBAAiB,EAAE,OAAO,GAAG,EAAE;IAC/B,oBAAoB,EAAE,OAAO,GAAG,EAAE;IAElC,qBAAqB,EAAE,OAAO,GAAG,EAAE;IACnC,0BAA0B,EAAE,OAAO,GAAG,EAAE;IACxC,8BAA8B,EAAE,OAAO,GAAG,EAAE;IAC5C,uBAAuB,EAAE,OAAO,GAAG,EAAE;IACrC,2BAA2B,EAAE,OAAO,GAAG,EAAE;IACzC,wBAAwB,EAAE,OAAO,GAAG,EAAE;IAEtC,oBAAoB,EAAE,OAAO;IAC7B,mBAAmB,EAAE,OAAO,GAAG,CAAC;IAChC,iBAAiB,EAAE,OAAO,GAAG,CAAC;IAC9B,mBAAmB,EAAE,OAAO,GAAG,CAAC;IAChC,YAAY,EAAE,OAAO,GAAG,CAAC;IACzB,cAAc,EAAE,OAAO,GAAG,CAAC;IAC3B,iBAAiB,EAAE,OAAO,GAAG,CAAC;IAC9B,aAAa,EAAE,OAAO,GAAG,CAAC;IAC1B,kBAAkB,EAAE,OAAO,GAAG,CAAC;IAE/B,oBAAoB,EAAE,OAAO;IAC7B,eAAe,EAAE,OAAO,GAAG,CAAC;IAE5B,qBAAqB,EAAE,SAAS;CACnC,CAAC"}
@@ -7,4 +7,13 @@ export declare const pw_registry_add_listener: {
7
7
  result: import("koffi").TypeObject;
8
8
  };
9
9
  };
10
+ export declare const pw_registry_bind: {
11
+ (...args: any[]): any;
12
+ async: (...args: any[]) => any;
13
+ info: {
14
+ name: string;
15
+ arguments: import("koffi").TypeObject[];
16
+ result: import("koffi").TypeObject;
17
+ };
18
+ };
10
19
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,wBAAwB;;;;;;;;CAKnC,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,wBAAwB;;;;;;;;CAKnC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;CAM3B,CAAC"}
package/dist/registry.js CHANGED
@@ -3,9 +3,16 @@ import { pw_registry, pw_registry_events } from "./core.js";
3
3
  import { spa_hook } from "./hook.js";
4
4
  const pipewire = koffi.load("libpipewire-0.3.so.0");
5
5
  export const pw_registry_add_listener = pipewire.func("pw_registry_add_listener", "int", [
6
- koffi.pointer(pw_registry),
7
- koffi.pointer(spa_hook),
8
- koffi.pointer(pw_registry_events),
9
- "void*"
6
+ koffi.pointer(pw_registry), // registry
7
+ koffi.pointer(spa_hook), // listener
8
+ koffi.pointer(pw_registry_events), // events
9
+ "void*" // data
10
+ ]);
11
+ export const pw_registry_bind = pipewire.func("pw_registry_bind", koffi.pointer("void"), [
12
+ koffi.pointer(pw_registry), // registry
13
+ "uint32_t", // id
14
+ "const char*", // type
15
+ "uint32_t", // version
16
+ "size_t" // user_data_size
10
17
  ]);
11
18
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE;IACrF,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;IAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;IACvB,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACjC,OAAO;CACV,CAAC,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE;IACrF,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW;IACvC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW;IACpC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,SAAS;IAC5C,OAAO,CAAC,OAAO;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IACrF,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW;IACvC,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,OAAO;IACtB,UAAU,EAAE,UAAU;IACtB,QAAQ,CAAC,iBAAiB;CAC7B,CAAC,CAAC"}
@@ -8,32 +8,36 @@ import * as pw from "../src/index.js";
8
8
  const context = pw.context.pw_context_new(pw.main_loop.pw_main_loop_get_loop(loop), null, 0);
9
9
  const core = pw.core.pw_context_connect(context, null, 0);
10
10
  const registry = pw.core.pw_core_get_registry(core, 3, 0);
11
- const registry_listener = Buffer.alloc(koffi.sizeof(pw.hook.spa_hook));
12
11
 
13
12
  const registry_event_global = (
14
- data: Buffer,
13
+ data: unknown,
15
14
  id: number,
16
15
  permissions: number,
17
16
  type: string,
18
17
  version: number,
19
- props: Buffer
18
+ props: unknown
20
19
  ) => {
21
- console.log(`object: id:${id} type:${type}/${version}`);
20
+ console.log(`New object: id: ${id} type: ${type} version: ${version}`);
22
21
  };
23
22
 
24
- const registry_events = {
25
- version: 0,
26
- global: koffi.register(registry_event_global, koffi.pointer(pw.core.pw_registry_events_globals)),
27
- global_remove: null
23
+ const registry_event_global_remove = (data: unknown, id: number) => {
24
+ console.log(`Removed object: id: ${id}`);
28
25
  };
29
26
 
30
- pw.registry.pw_registry_add_listener(registry, registry_listener, registry_events, null);
31
-
32
- process.on("SIGINT", () => {
33
- pw.main_loop.pw_main_loop_quit(loop);
27
+ const registry_listener = Buffer.alloc(koffi.sizeof(pw.hook.spa_hook));
28
+ const registry_events = Buffer.alloc(koffi.sizeof(pw.core.pw_registry_events));
29
+ koffi.encode(registry_events, pw.core.pw_registry_events, {
30
+ version: 0,
31
+ global: koffi.register(registry_event_global, koffi.pointer(pw.core.pw_registry_events_global)),
32
+ global_remove: koffi.register(
33
+ registry_event_global_remove,
34
+ koffi.pointer(pw.core.pw_registry_events_global_remove)
35
+ )
34
36
  });
37
+ pw.registry.pw_registry_add_listener(registry, registry_listener, registry_events, null);
35
38
 
36
39
  console.log("Starting PipeWire main loop...");
40
+ process.on("SIGINT", () => pw.main_loop.pw_main_loop_quit(loop));
37
41
  await new Promise((resolve) => pw.main_loop.pw_main_loop_run.async(loop, resolve));
38
42
 
39
43
  pw.proxy.pw_proxy_destroy(registry);
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "pipewire",
3
- "version": "1.1.2",
3
+ "version": "1.3.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
- "build": "tsc"
7
+ "build": "tsc -p tsconfig.build.json",
8
+ "publish": "npm run build && npm publish"
8
9
  },
9
10
  "keywords": [],
10
11
  "homepage": "https://github.com/Raraph84/node-pipewire",
@@ -17,6 +18,7 @@
17
18
  "devDependencies": {
18
19
  "@types/node": "^26.6.3",
19
20
  "prettier": "^3.9.9",
21
+ "tsx": "^4.23.15",
20
22
  "typescript": "^7.0.2"
21
23
  },
22
24
  "prettier": {
@@ -28,6 +30,7 @@
28
30
  "files": [
29
31
  "package.json",
30
32
  "package-lock.json",
33
+ "tsconfig.build.json",
31
34
  "tsconfig.json"
32
35
  ],
33
36
  "options": {
package/src/core.ts CHANGED
@@ -19,7 +19,7 @@ export const pw_core_get_registry = pipewire.func("pw_core_get_registry", koffi.
19
19
  "size_t"
20
20
  ]);
21
21
 
22
- export const pw_registry_events_globals = koffi.proto("void", [
22
+ export const pw_registry_events_global = koffi.proto("void", [
23
23
  "void*", // data
24
24
  "uint32_t", // id
25
25
  "uint32_t", // permissions
@@ -28,10 +28,15 @@ export const pw_registry_events_globals = koffi.proto("void", [
28
28
  "void*" // props
29
29
  ]);
30
30
 
31
+ export const pw_registry_events_global_remove = koffi.proto("void", [
32
+ "void*", // data
33
+ "uint32_t" // id
34
+ ]);
35
+
31
36
  export const pw_registry_events = koffi.struct("pw_registry_events", {
32
- vesion: "uint32_t",
33
- global: "void*", // TODO
34
- global_remove: "void*" // TODO
37
+ version: "uint32_t",
38
+ global: koffi.pointer(pw_registry_events_global),
39
+ global_remove: koffi.pointer(pw_registry_events_global_remove)
35
40
  });
36
41
 
37
42
  export const pw_core_disconnect = pipewire.func("pw_core_disconnect", "int", [koffi.pointer(pw_core)]);
package/src/index.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  import * as context from "./context.js";
2
2
  import * as core from "./core.js";
3
+ import * as dict from "./dict.js";
3
4
  import * as hook from "./hook.js";
4
5
  import * as main_loop from "./main-loop.js";
6
+ import * as node from "./node.js";
7
+ import * as param from "./param.js";
5
8
  import * as pipewire from "./pipewire.js";
9
+ import * as pod from "./pod.js";
10
+ import * as props from "./props.js";
6
11
  import * as proxy from "./proxy.js";
7
12
  import * as registry from "./registry.js";
8
13
 
9
- export { context, core, hook, main_loop, pipewire, proxy, registry };
14
+ export { context, core, dict, hook, main_loop, node, param, pod, props, pipewire, proxy, registry };
package/src/node.ts ADDED
@@ -0,0 +1,81 @@
1
+ import koffi from "koffi";
2
+ import { spa_hook } from "./hook.js";
3
+ import { spa_pod } from "./pod.js";
4
+ import { spa_dict } from "./dict.js";
5
+ import { spa_param_info } from "./param.js";
6
+
7
+ const pipewire = koffi.load("libpipewire-0.3.so.0");
8
+
9
+ export const pw_node = koffi.opaque("pw_node");
10
+
11
+ export const pw_node_state = koffi.enumeration("pw_node_state", {
12
+ PW_NODE_STATE_ERROR: -1,
13
+ PW_NODE_STATE_CREATING: 0,
14
+ PW_NODE_STATE_SUSPENDED: 1,
15
+ PW_NODE_STATE_IDLE: 2,
16
+ PW_NODE_STATE_RUNNING: 3
17
+ });
18
+
19
+ export const PW_NODE_CHANGE_MASK = {
20
+ INPUT_PORTS: 1 << 0,
21
+ OUTPUT_PORTS: 1 << 1,
22
+ STATE: 1 << 2,
23
+ PROPS: 1 << 3,
24
+ PARAMS: 1 << 4
25
+ };
26
+
27
+ export const pw_node_info = koffi.struct("pw_node_info", {
28
+ id: "uint32_t",
29
+ max_input_ports: "uint32_t",
30
+ max_output_ports: "uint32_t",
31
+ change_mask: "uint64_t",
32
+ n_input_ports: "uint32_t",
33
+ n_output_ports: "uint32_t",
34
+ state: pw_node_state,
35
+ error: "const char*",
36
+ props: koffi.pointer(spa_dict),
37
+ params: koffi.pointer(spa_param_info),
38
+ n_params: "uint32_t"
39
+ });
40
+
41
+ export const pw_node_events_info = koffi.proto("void", [
42
+ "void*", // data
43
+ koffi.pointer(pw_node_info) // info
44
+ ]);
45
+
46
+ export const pw_node_events_param = koffi.proto("void", [
47
+ "void*", // data
48
+ "int", // seq
49
+ "uint32_t", // id
50
+ "uint32_t", // index
51
+ "uint32_t", // next
52
+ koffi.pointer(spa_pod) // param
53
+ ]);
54
+
55
+ export const pw_node_events = koffi.struct("pw_node_events", {
56
+ version: "uint32_t",
57
+ info: koffi.pointer(pw_node_events_info),
58
+ param: koffi.pointer(pw_node_events_param)
59
+ });
60
+
61
+ export const pw_node_add_listener = pipewire.func("pw_node_add_listener", "int", [
62
+ koffi.pointer(pw_node), // object
63
+ koffi.pointer(spa_hook), // listener
64
+ koffi.pointer(pw_node_events), // events
65
+ "void*" // data
66
+ ]);
67
+
68
+ export const pw_node_enum_params = pipewire.func("pw_node_enum_params", "int", [
69
+ koffi.pointer(pw_node), // object
70
+ "int", // seq
71
+ "uint32_t", // id
72
+ "uint32_t", // start
73
+ "uint32_t", // num
74
+ koffi.pointer(spa_pod) // filter
75
+ ]);
76
+
77
+ export const pw_node_subscribe_params = pipewire.func("pw_node_subscribe_params", "int", [
78
+ koffi.pointer(pw_node), // object
79
+ "uint32_t*", // ids
80
+ "uint32_t" // n_ids
81
+ ]);
package/src/param.ts ADDED
@@ -0,0 +1,33 @@
1
+ import koffi from "koffi";
2
+
3
+ export const spa_param_info = koffi.struct("spa_param_info", {
4
+ id: "uint32_t",
5
+ flags: "uint32_t",
6
+ user: "uint32_t",
7
+ seq: "int32_t",
8
+ padding: koffi.array("uint32_t", 4)
9
+ });
10
+
11
+ export const spa_param_type = {
12
+ SPA_PARAM_Invalid: 0,
13
+ SPA_PARAM_PropInfo: 1,
14
+ SPA_PARAM_Props: 2,
15
+ SPA_PARAM_EnumFormat: 3,
16
+ SPA_PARAM_Format: 4,
17
+ SPA_PARAM_Buffers: 5,
18
+ SPA_PARAM_Meta: 6,
19
+ SPA_PARAM_IO: 7,
20
+ SPA_PARAM_EnumProfile: 8,
21
+ SPA_PARAM_Profile: 9,
22
+ SPA_PARAM_EnumPortConfig: 10,
23
+ SPA_PARAM_PortConfig: 11,
24
+ SPA_PARAM_EnumRoute: 12,
25
+ SPA_PARAM_Route: 13,
26
+ SPA_PARAM_Control: 14,
27
+ SPA_PARAM_Latency: 15,
28
+ SPA_PARAM_ProcessLatency: 16,
29
+ SPA_PARAM_Tag: 17,
30
+ SPA_PARAM_PeerEnumFormat: 18,
31
+ SPA_PARAM_Capability: 19,
32
+ SPA_PARAM_PeerCapability: 20
33
+ };
package/src/pod.ts ADDED
@@ -0,0 +1,6 @@
1
+ import koffi from "koffi";
2
+
3
+ export const spa_pod = koffi.struct("spa_pod", {
4
+ size: "uint32_t",
5
+ type: "uint32_t"
6
+ });
package/src/props.ts ADDED
@@ -0,0 +1,66 @@
1
+ export const spa_prop = {
2
+ SPA_PROP_START: 0,
3
+
4
+ SPA_PROP_unknown: 1,
5
+
6
+ SPA_PROP_START_Device: 0x100,
7
+ SPA_PROP_device: 0x100 + 1,
8
+ SPA_PROP_deviceName: 0x100 + 2,
9
+ SPA_PROP_deviceFd: 0x100 + 3,
10
+ SPA_PROP_card: 0x100 + 4,
11
+ SPA_PROP_cardName: 0x100 + 5,
12
+
13
+ SPA_PROP_minLatency: 0x100 + 6,
14
+ SPA_PROP_maxLatency: 0x100 + 7,
15
+ SPA_PROP_periods: 0x100 + 8,
16
+ SPA_PROP_periodSize: 0x100 + 9,
17
+ SPA_PROP_periodEvent: 0x100 + 10,
18
+ SPA_PROP_live: 0x100 + 11,
19
+ SPA_PROP_rate: 0x100 + 12,
20
+ SPA_PROP_quality: 0x100 + 13,
21
+ SPA_PROP_bluetoothAudioCodec: 0x100 + 14,
22
+ SPA_PROP_bluetoothOffloadActive: 0x100 + 15,
23
+ SPA_PROP_clockId: 0x100 + 16,
24
+ SPA_PROP_clockDevice: 0x100 + 17,
25
+ SPA_PROP_clockInterface: 0x100 + 18,
26
+
27
+ SPA_PROP_START_Audio: 0x10000,
28
+ SPA_PROP_waveType: 0x10000 + 1,
29
+ SPA_PROP_frequency: 0x10000 + 2,
30
+ SPA_PROP_volume: 0x10000 + 3,
31
+ SPA_PROP_mute: 0x10000 + 4,
32
+ SPA_PROP_patternType: 0x10000 + 5,
33
+ SPA_PROP_ditherType: 0x10000 + 6,
34
+ SPA_PROP_truncate: 0x10000 + 7,
35
+ SPA_PROP_channelVolumes: 0x10000 + 8,
36
+ SPA_PROP_volumeBase: 0x10000 + 9,
37
+ SPA_PROP_volumeStep: 0x10000 + 10,
38
+ SPA_PROP_channelMap: 0x10000 + 11,
39
+ SPA_PROP_monitorMute: 0x10000 + 12,
40
+ SPA_PROP_monitorVolumes: 0x10000 + 13,
41
+ SPA_PROP_latencyOffsetNsec: 0x10000 + 14,
42
+ SPA_PROP_softMute: 0x10000 + 15,
43
+ SPA_PROP_softVolumes: 0x10000 + 16,
44
+
45
+ SPA_PROP_iec958Codecs: 0x10000 + 17,
46
+ SPA_PROP_volumeRampSamples: 0x10000 + 18,
47
+ SPA_PROP_volumeRampStepSamples: 0x10000 + 19,
48
+ SPA_PROP_volumeRampTime: 0x10000 + 20,
49
+ SPA_PROP_volumeRampStepTime: 0x10000 + 21,
50
+ SPA_PROP_volumeRampScale: 0x10000 + 22,
51
+
52
+ SPA_PROP_START_Video: 0x20000,
53
+ SPA_PROP_brightness: 0x20000 + 1,
54
+ SPA_PROP_contrast: 0x20000 + 2,
55
+ SPA_PROP_saturation: 0x20000 + 3,
56
+ SPA_PROP_hue: 0x20000 + 4,
57
+ SPA_PROP_gamma: 0x20000 + 5,
58
+ SPA_PROP_exposure: 0x20000 + 6,
59
+ SPA_PROP_gain: 0x20000 + 7,
60
+ SPA_PROP_sharpness: 0x20000 + 8,
61
+
62
+ SPA_PROP_START_Other: 0x80000,
63
+ SPA_PROP_params: 0x80000 + 1,
64
+
65
+ SPA_PROP_START_CUSTOM: 0x1000000
66
+ };
package/src/registry.ts CHANGED
@@ -5,8 +5,16 @@ import { spa_hook } from "./hook.js";
5
5
  const pipewire = koffi.load("libpipewire-0.3.so.0");
6
6
 
7
7
  export const pw_registry_add_listener = pipewire.func("pw_registry_add_listener", "int", [
8
- koffi.pointer(pw_registry),
9
- koffi.pointer(spa_hook),
10
- koffi.pointer(pw_registry_events),
11
- "void*"
8
+ koffi.pointer(pw_registry), // registry
9
+ koffi.pointer(spa_hook), // listener
10
+ koffi.pointer(pw_registry_events), // events
11
+ "void*" // data
12
+ ]);
13
+
14
+ export const pw_registry_bind = pipewire.func("pw_registry_bind", koffi.pointer("void"), [
15
+ koffi.pointer(pw_registry), // registry
16
+ "uint32_t", // id
17
+ "const char*", // type
18
+ "uint32_t", // version
19
+ "size_t" // user_data_size
12
20
  ]);
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "rootDir": "./src"
5
+ },
6
+ "include": ["src"]
7
+ }
package/tsconfig.json CHANGED
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "rootDir": "./src",
4
3
  "outDir": "./dist",
5
4
  "module": "nodenext",
6
5
  "target": "esnext",