2 #ifndef __BSE_ENGINE_H__
3 #define __BSE_ENGINE_H__
10 #define BSE_STREAM_MAX_VALUES (1024 )
11 #define BSE_MODULE_N_OSTREAMS(module) ((module)->klass->n_ostreams)
12 #define BSE_MODULE_N_ISTREAMS(module) ((module)->klass->n_istreams)
13 #define BSE_MODULE_N_JSTREAMS(module) ((module)->klass->n_jstreams)
14 #define BSE_MODULE_ISTREAM(module, stream) ((module)->istreams[(stream)])
15 #define BSE_MODULE_JSTREAM(module, stream) ((module)->jstreams[(stream)])
16 #define BSE_MODULE_OSTREAM(module, stream) ((module)->ostreams[(stream)])
17 #define BSE_MODULE_IBUFFER(module, stream) (BSE_MODULE_ISTREAM ((module), (stream)).values)
18 #define BSE_MODULE_JBUFFER(module, stream, con) (BSE_MODULE_JSTREAM ((module), (stream)).values[con])
19 #define BSE_MODULE_OBUFFER(module, stream) (BSE_MODULE_OSTREAM ((module), (stream)).values)
20 #define BSE_ENGINE_MAX_POLLFDS (128)
35 gboolean revents_filled);
36 typedef gboolean (*BseEngineTimerFunc) (gpointer data,
42 BseOStream **ostreams_p);
43 typedef void (*BseProcessFunc) (BseModule *module,
45 typedef guint (*BseProcessDeferFunc) (BseModule *module,
48 typedef void (*BseModuleResetFunc) (BseModule *module);
49 typedef void (*BseModuleFreeFunc) (gpointer data,
50 const BseModuleClass *klass);
55 BSE_COST_CHEAP = 1 << 0,
56 BSE_COST_EXPENSIVE = 1 << 1
64 BseProcessFunc process;
65 BseProcessDeferFunc process_defer;
66 BseModuleResetFunc reset;
67 BseModuleFreeFunc free;
73 const BseModuleClass *klass;
82 const gfloat **values;
104 BseFreeFunc free_data);
111 BseModule *dest_module,
115 BseModule *dest_module,
121 BseModule *src_module,
128 BseJob* bse_job_set_consumer (BseModule *module,
129 gboolean is_toplevel_consumer);
137 BseFreeFunc free_func,
144 BseFreeFunc free_func);
148 BseFreeFunc free_func);
156 BseFreeFunc free_func);
161 BseFreeFunc free_func);
173 ...) G_GNUC_NULL_TERMINATED;
176 gfloat* bse_engine_const_values (gfloat value);
183 guint *control_raster_p);
190 gfloat* bse_engine_const_zeros (guint smaller_than_BSE_STREAM_MAX_VALUES);
191 gboolean bse_engine_has_garbage (
void);
193 void bse_engine_free_ostreams (guint n_ostreams,
194 BseOStream *ostreams);
196 BseFreeFunc free_func);
199 #define bse_engine_block_size() (0 + (const guint) bse_engine_exvar_block_size)
200 #define bse_engine_sample_freq() (0 + (const guint) bse_engine_exvar_sample_freq)
201 #define bse_engine_control_raster() (1 + (const guint) bse_engine_exvar_control_mask)
202 #define bse_engine_control_mask() (0 + (const guint) bse_engine_exvar_control_mask)
203 #define BSE_CONTROL_CHECK(index) ((bse_engine_control_mask() & (index)) == 0)
209 gboolean fds_changed;
212 gboolean revents_filled;
220 extern guint bse_engine_exvar_block_size;
221 extern guint bse_engine_exvar_sample_freq;
222 extern guint bse_engine_exvar_control_mask;
void bse_trans_add(BseTrans *trans, BseJob *job)
Definition: bseengine.cc:900
gboolean bse_engine_configure(guint latency_ms, guint sample_freq, guint control_freq)
Definition: bseengine.cc:1285
Definition: bseengine.hh:92
BseJob * bse_job_jconnect(BseModule *src_module, guint src_ostream, BseModule *dest_module, guint dest_jstream)
Definition: bseengine.cc:272
gboolean bse_module_is_scheduled(BseModule *module)
Definition: bseengine.cc:128
BseTrans * bse_trans_open(void)
Definition: bseengine.cc:878
BseJob * bse_job_probe_request(BseModule *module, BseEngineProbeFunc probe, gpointer data)
Definition: bseengine.cc:515
Definition: bseengine.hh:80
BseJob * bse_job_remove_poll(BseEnginePollFunc poll_func, gpointer data)
Definition: bseengine.cc:782
void(* BseEngineProbeFunc)(gpointer data, guint n_values, guint64 tick_stamp, guint n_ostreams, BseOStream **ostreams_p)
Definition: bseengine.hh:38
BseJob * bse_job_jdisconnect(BseModule *dest_module, guint dest_jstream, BseModule *src_module, guint src_ostream)
Definition: bseengine.cc:339
void bse_engine_user_thread_collect(void)
BSE Engine user thread function.
Definition: bseengineutils.cc:355
guint64 bse_engine_tick_stamp_from_systime(guint64 systime)
Definition: bseengine.cc:1444
BseJob * bse_job_discard(BseModule *module)
Definition: bseengine.cc:166
BseJob * bse_job_flow_access(BseModule *module, guint64 tick_stamp, BseEngineAccessFunc access_func, gpointer data, BseFreeFunc free_func)
Definition: bseengine.cc:558
Definition: bseengine.hh:206
BseJob * bse_job_resume_at(BseModule *module, guint64 tick_stamp)
Definition: bseengine.cc:701
BseJob * bse_job_kill_inputs(BseModule *module)
Definition: bseengine.cc:188
BseJob * bse_job_connect(BseModule *src_module, guint src_ostream, BseModule *dest_module, guint dest_istream)
Definition: bseengine.cc:237
BseTrans * bse_trans_merge(BseTrans *trans1, BseTrans *trans2)
Definition: bseengine.cc:926
BseJob * bse_job_force_reset(BseModule *module)
Definition: bseengine.cc:391
BseJob * bse_job_boundary_access(BseModule *module, guint64 tick_stamp, BseEngineAccessFunc access_func, gpointer data, BseFreeFunc free_func)
Definition: bseengine.cc:599
void bse_engine_init(gboolean threaded)
Definition: bseengine.cc:1366
void bse_trans_commit_delayed(BseTrans *trans, guint64 tick_stamp)
Definition: bseengine.cc:1023
gboolean bse_module_has_source(BseModule *module, guint istream)
Definition: bseengine.cc:108
Definition: bseengine.hh:71
Definition: bseenginenode.hh:61
BseJob * bse_job_debug(const gchar *debug)
Definition: bseengine.cc:839
BseJob * bse_job_integrate(BseModule *module)
Definition: bseengine.cc:143
void(* BseEngineAccessFunc)(BseModule *module, gpointer data)
Definition: bsedefs.hh:128
void bse_engine_add_user_callback(gpointer data, BseFreeFunc free_func)
Definition: bseengine.cc:458
BseJob * bse_job_nop(void)
Definition: bseengine.cc:860
guint64 bse_module_tick_stamp(BseModule *module)
Definition: bseengine.cc:86
BseModule * bse_module_new_virtual(guint n_iostreams, gpointer user_data, BseFreeFunc free_data)
Definition: bseengine.cc:1147
void bse_engine_dispatch(void)
Perform necessary work the engine has to handle in the user thread.
Definition: bseengine.cc:1425
BseJob * bse_job_kill_outputs(BseModule *module)
Definition: bseengine.cc:210
void bse_transact(BseJob *job,...) G_GNUC_NULL_TERMINATED
Definition: bseengine.cc:1071
BseJob * bse_job_boundary_discard(BseModule *module)
Definition: bseengine.cc:644
BseModule * bse_module_new(const BseModuleClass *klass, gpointer user_data)
Definition: bseengine.cc:35
guint64 bse_trans_commit(BseTrans *trans)
Definition: bseengine.cc:965
BseJob * bse_job_disconnect(BseModule *dest_module, guint dest_istream)
Definition: bseengine.cc:305
BseJob * bse_job_suspend_now(BseModule *module)
Definition: bseengine.cc:675
void bse_engine_wait_on_trans(void)
Wait until all pending transactions have been processed by the BSE Engine.
Definition: bseengine.cc:1489
void bse_trans_dismiss(BseTrans *trans)
Definition: bseengine.cc:1053
BseJob * bse_job_access(BseModule *module, BseEngineAccessFunc access_func, gpointer data, BseFreeFunc free_func)
Definition: bseengine.cc:428
Definition: bseengine.hh:87
void bse_engine_constrain(guint latency_ms, guint sample_freq, guint control_freq, guint *block_size_p, guint *control_raster_p)
Definition: bseengine.cc:1221
gboolean(* BseEnginePollFunc)(gpointer data, guint n_values, glong *timeout_p, guint n_fds, const GPollFD *fds, gboolean revents_filled)
Definition: bseengine.hh:30
Definition: bseengine.hh:59
BseJob * bse_job_add_timer(BseEngineTimerFunc timer_func, gpointer data, BseFreeFunc free_func)
Definition: bseengine.cc:812
BseJob * bse_job_add_poll(BseEnginePollFunc poll_func, gpointer data, BseFreeFunc free_func, guint n_fds, const GPollFD *fds)
Definition: bseengine.cc:749