Skip to content
Snippets Groups Projects
Commit 9a869fa6 authored by moon2's avatar moon2
Browse files

more functions

parent 8a6390e9
No related branches found
No related tags found
No related merge requests found
......@@ -705,6 +705,9 @@ int16_t bl00mbox_channel_bud_get_signal_value(uint8_t channel, uint32_t bud_inde
radspa_signal_t * sig = radspa_signal_get_by_index(bud->plugin, bud_signal_index);
if(sig == NULL) return false;
if((sig->hints & RADSPA_SIGNAL_HINT_OUTPUT) && (sig->buffer != NULL)){
return sig->buffer[0];
}
return sig->value;
}
......
......@@ -98,22 +98,41 @@ int16_t radspa_signal_add(radspa_t * plugin, char * name, uint32_t hints, int16_
}
int16_t radspa_signal_get_value(radspa_signal_t * sig, int16_t index, uint16_t num_samples, uint32_t render_pass_id){
if(sig->buffer != NULL){
if(sig->buffer == NULL){
return radspa_signal_get_value_disconnected(sig, index, num_samples, render_pass_id);
} else {
return radspa_signal_get_value_connected(sig, index, num_samples, render_pass_id);
}
}
inline int16_t radspa_signal_get_value_connected(radspa_signal_t * sig, int16_t index, uint16_t num_samples, uint32_t render_pass_id){
if(sig->render_pass_id != render_pass_id){
radspa_host_request_buffer_render(sig->buffer, num_samples); //, render_pass_id);
sig->render_pass_id = render_pass_id;
}
return sig->buffer[index];
}
inline int16_t radspa_signal_get_value_disconnected(radspa_signal_t * sig, int16_t index, uint16_t num_samples, uint32_t render_pass_id){
return sig->value;
}
void radspa_signal_set_value(radspa_signal_t * sig, int16_t index, int16_t value, uint16_t num_samples, uint32_t render_pass_id){
if(!index) sig->value = value;
if(sig->buffer == NULL) return;
if(sig->buffer == NULL){
radspa_signal_set_value_disconnected(sig, index, value, num_samples, render_pass_id);
} else {
radspa_signal_set_value_connected(sig, index, value, num_samples, render_pass_id);
}
}
inline void radspa_signal_set_value_connected(radspa_signal_t * sig, int16_t index, int16_t value, uint16_t num_samples, uint32_t render_pass_id){
sig->buffer[index] = value;
}
inline void radspa_signal_set_value_disconnected(radspa_signal_t * sig, int16_t index, int16_t value, uint16_t num_samples, uint32_t render_pass_id){
sig->value = value;
}
radspa_t * radspa_standard_plugin_create(radspa_descriptor_t * desc, uint8_t num_signals, size_t plugin_data_size, uint32_t plugin_table_size){
radspa_t * ret = calloc(1, sizeof(radspa_t));
if(ret == NULL) return NULL;
......
......@@ -29,4 +29,9 @@ void radspa_signals_free(radspa_t * plugin);
*/
int16_t radspa_signal_get_value(radspa_signal_t * sig, int16_t index, uint16_t num_samples, uint32_t render_pass_id);
int16_t radspa_signal_get_value_connected(radspa_signal_t * sig, int16_t index, uint16_t num_samples, uint32_t render_pass_id);
int16_t radspa_signal_get_value_disconnected(radspa_signal_t * sig, int16_t index, uint16_t num_samples, uint32_t render_pass_id);
void radspa_signal_set_value(radspa_signal_t * sig, int16_t index, int16_t value, uint16_t num_samples, uint32_t render_pass_id);
void radspa_signal_set_value_connected(radspa_signal_t * sig, int16_t index, int16_t value, uint16_t num_samples, uint32_t render_pass_id);
void radspa_signal_set_value_disconnected(radspa_signal_t * sig, int16_t index, int16_t value, uint16_t num_samples, uint32_t render_pass_id);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment