add skip_delay parameter to the framelog
not very clean, might be reworked at some point the idea is to compute much less 'log' than what was done
This commit is contained in:
@@ -15,6 +15,11 @@ struct framelog {
|
||||
float *x;
|
||||
float *buffer;
|
||||
int blength;
|
||||
int skip_delay; /* one frame over 'skip_delay' is truly processed
|
||||
* 0 to disable (process all data)
|
||||
*/
|
||||
int skip_current; /* internal data for the skip mechanism */
|
||||
int skip_on; /* internal data for the skip mechanism */
|
||||
};
|
||||
|
||||
static void _event(void *p, event e)
|
||||
@@ -30,6 +35,18 @@ static void _event(void *p, event e)
|
||||
buffer = e.e[l->buffer_arg].b;
|
||||
bsize = e.e[l->buffer_arg].bsize;
|
||||
|
||||
if (l->skip_delay != 0) {
|
||||
if (subframe == 0) {
|
||||
l->skip_current++;
|
||||
if (l->skip_current >= l->skip_delay) {
|
||||
l->skip_on = 0;
|
||||
l->skip_current = 0;
|
||||
} else
|
||||
l->skip_on = 1;
|
||||
}
|
||||
}
|
||||
if (l->skip_on) return;
|
||||
|
||||
nsamples = bsize / (2*sizeof(int16_t));
|
||||
|
||||
if (l->blength != nsamples * 10) {
|
||||
@@ -110,3 +127,16 @@ logger *new_framelog(event_handler *h, void *database,
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* public functions */
|
||||
/****************************************************************************/
|
||||
|
||||
void framelog_set_skip(logger *_this, int skip_delay)
|
||||
{
|
||||
struct framelog *l = _this;
|
||||
/* TODO: protect with a lock? */
|
||||
l->skip_delay = skip_delay;
|
||||
l->skip_current = 0;
|
||||
l->skip_on = 0;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@ logger *new_ttilog(void *event_handler, void *database,
|
||||
char *data_varname, int convert_to_dB);
|
||||
logger *new_timelog(void *event_handler, void *database, char *event_name);
|
||||
|
||||
void framelog_set_skip(logger *_this, int skip_delay);
|
||||
|
||||
#include "view/view.h"
|
||||
|
||||
void logger_add_view(logger *l, view *v);
|
||||
|
||||
Reference in New Issue
Block a user