stream.inc 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. const
  2. PW_VERSION_STREAM_EVENTS = 2;
  3. type
  4. Ppw_buffer = ^Tpw_buffer;
  5. Ppw_stream = ^Tpw_stream;
  6. Ppw_stream_control = ^Tpw_stream_control;
  7. Ppw_stream_events = ^Tpw_stream_events;
  8. Ppw_stream_flags = ^Tpw_stream_flags;
  9. Ppw_time = ^Tpw_time;
  10. float = double;
  11. tpw_buffer = record
  12. buffer: pspa_buffer;
  13. user_data: Pointer;
  14. size: tuint64_t;
  15. end;
  16. tpw_stream = record
  17. end;
  18. tpw_stream_control = record
  19. Name: PChar;
  20. flags: tuint32_t;
  21. def: float;
  22. min: float;
  23. max: float;
  24. values: float;
  25. n_values: tuint32_t;
  26. max_values: tuint32_t;
  27. end;
  28. tpw_time = record
  29. now: int64;
  30. rate: tspa_fraction;
  31. ticks: tuint64_t;
  32. delay: int64;
  33. queued: tuint64_t;
  34. end;
  35. tpw_stream_state = (
  36. PW_STREAM_STATE_ERROR := -1,
  37. PW_STREAM_STATE_UNCONNECTED := 0,
  38. PW_STREAM_STATE_CONNECTING := 1,
  39. PW_STREAM_STATE_PAUSED := 2,
  40. PW_STREAM_STATE_STREAMING := 3
  41. );
  42. Tpw_stream_events = record
  43. version: Tuint32_t;
  44. Destroy: procedure(Data: pointer); cdecl;
  45. state_changed: procedure(Data: pointer; old: Tpw_stream_state; state: Tpw_stream_state; error: PChar); cdecl;
  46. control_info: procedure(Data: pointer; id: Tuint32_t; control: Ppw_stream_control); cdecl;
  47. io_changed: procedure(Data: pointer; id: Tuint32_t; area: pointer; size: Tuint32_t); cdecl;
  48. param_changed: procedure(Data: pointer; id: Tuint32_t; param: Pspa_pod); cdecl;
  49. add_buffer: procedure(Data: pointer; buffer: Ppw_buffer); cdecl;
  50. remove_buffer: procedure(Data: pointer; buffer: Ppw_buffer); cdecl;
  51. process: procedure(Data: pointer); cdecl;
  52. drained: procedure(Data: pointer); cdecl;
  53. command: procedure(Data: pointer; command: Pspa_command); cdecl;
  54. trigger_done: procedure(Data: pointer); cdecl;
  55. end;
  56. Tpw_stream_flags = (
  57. PW_STREAM_FLAG_NONE := 0,
  58. PW_STREAM_FLAG_AUTOCONNECT := 1 shl 0,
  59. PW_STREAM_FLAG_INACTIVE := 1 shl 1,
  60. PW_STREAM_FLAG_MAP_BUFFERS := 1 shl 2,
  61. PW_STREAM_FLAG_DRIVER := 1 shl 3,
  62. PW_STREAM_FLAG_RT_PROCESS := 1 shl 4,
  63. PW_STREAM_FLAG_NO_CONVERT := 1 shl 5,
  64. PW_STREAM_FLAG_EXCLUSIVE := 1 shl 6,
  65. PW_STREAM_FLAG_DONT_RECONNECT := 1 shl 7,
  66. PW_STREAM_FLAG_ALLOC_BUFFERS := 1 shl 8,
  67. PW_STREAM_FLAG_TRIGGER := 1 shl 9
  68. );
  69. function pw_stream_state_as_string(state: Tpw_stream_state) : PChar; cdecl; external libpipewirename Name 'pw_stream_state_as_string';
  70. function pw_stream_new(core: Ppw_core; Name: PChar; props: Ppw_properties) : Ppw_stream; cdecl; external libpipewirename Name 'pw_stream_new';
  71. function pw_stream_new_simple(loop: Ppw_loop; Name: PChar; props: Ppw_properties; events: Ppw_stream_events; Data: pointer) : Ppw_stream; cdecl; external libpipewirename Name 'pw_stream_new_simple';
  72. procedure pw_stream_destroy(stream: Ppw_stream); cdecl; external libpipewirename Name 'pw_stream_destroy';
  73. procedure pw_stream_add_listener(stream: Ppw_stream; listener: Pspa_hook; events: Ppw_stream_events; Data: pointer); cdecl; external libpipewirename Name 'pw_stream_add_listener';
  74. function pw_stream_get_state(stream: Ppw_stream; error: PPchar) : Tpw_stream_state; cdecl; external libpipewirename Name 'pw_stream_get_state';
  75. function pw_stream_get_name(stream: Ppw_stream) : PChar; cdecl; external libpipewirename Name 'pw_stream_get_name';
  76. function pw_stream_get_core(stream: Ppw_stream) : Ppw_core; cdecl; external libpipewirename Name 'pw_stream_get_core';
  77. function pw_stream_get_properties(stream: Ppw_stream) : Ppw_properties; cdecl; external libpipewirename Name 'pw_stream_get_properties';
  78. function pw_stream_update_properties(stream: Ppw_stream; dict: Pspa_dict) : longint; cdecl; external libpipewirename Name 'pw_stream_update_properties';
  79. function pw_stream_connect(stream: Ppw_stream; direction: Tspa_direction; target_id: Tuint32_t; flags: Tpw_stream_flags; params: PPspa_pod; n_params: Tuint32_t) : longint;
  80. cdecl; external libpipewirename Name 'pw_stream_connect';
  81. function pw_stream_get_node_id(stream: Ppw_stream) : Tuint32_t; cdecl; external libpipewirename Name 'pw_stream_get_node_id';
  82. function pw_stream_disconnect(stream: Ppw_stream) : longint; cdecl; external libpipewirename Name 'pw_stream_disconnect';
  83. function pw_stream_set_error(stream: Ppw_stream; res: longint; error: PChar; args: array of const) : longint; cdecl; external libpipewirename Name 'pw_stream_set_error';
  84. function pw_stream_set_error(stream: Ppw_stream; res: longint; error: PChar) : longint; cdecl; external libpipewirename Name 'pw_stream_set_error';
  85. function pw_stream_update_params(stream: Ppw_stream; params: PPspa_pod; n_params: Tuint32_t) : longint; cdecl; external libpipewirename Name 'pw_stream_update_params';
  86. function pw_stream_get_control(stream: Ppw_stream; id: Tuint32_t) : Ppw_stream_control; cdecl; external libpipewirename Name 'pw_stream_get_control';
  87. function pw_stream_set_control(stream: Ppw_stream; id: Tuint32_t; n_values: Tuint32_t; values: Psingle; args: array of const) : longint; cdecl; external libpipewirename Name 'pw_stream_set_control';
  88. function pw_stream_set_control(stream: Ppw_stream; id: Tuint32_t; n_values: Tuint32_t; values: Psingle) : longint; cdecl; external libpipewirename Name 'pw_stream_set_control';
  89. function pw_stream_get_time(stream: Ppw_stream; time: Ppw_time) : longint; cdecl; external libpipewirename Name 'pw_stream_get_time';
  90. function pw_stream_dequeue_buffer(stream: Ppw_stream) : Ppw_buffer; cdecl; external libpipewirename Name 'pw_stream_dequeue_buffer';
  91. function pw_stream_queue_buffer(stream: Ppw_stream; buffer: Ppw_buffer) : longint; cdecl; external libpipewirename Name 'pw_stream_queue_buffer';
  92. function pw_stream_set_active(stream: Ppw_stream; active: T_Bool) : longint; cdecl; external libpipewirename Name 'pw_stream_set_active';
  93. function pw_stream_flush(stream: Ppw_stream; drain: T_Bool) : longint; cdecl; external libpipewirename Name 'pw_stream_flush';
  94. function pw_stream_is_driving(stream: Ppw_stream) : T_Bool; cdecl; external libpipewirename Name 'pw_stream_is_driving';
  95. function pw_stream_trigger_process(stream: Ppw_stream) : longint; cdecl; external libpipewirename Name 'pw_stream_trigger_process';