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:
Cedric Roux
2016-05-17 12:26:53 +02:00
parent 30ffc8d20e
commit 421aac43a0
2 changed files with 32 additions and 0 deletions
+30
View File
@@ -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;
}
+2
View File
@@ -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);