1 #include <stdlib.h>
2 #include "soundpipe.h"
3 
sp_timer_create(sp_timer ** p)4 int sp_timer_create(sp_timer **p)
5 {
6     *p = malloc(sizeof(sp_timer));
7     return SP_OK;
8 }
9 
sp_timer_destroy(sp_timer ** p)10 int sp_timer_destroy(sp_timer **p)
11 {
12     free(*p);
13     return SP_OK;
14 }
15 
sp_timer_init(sp_data * sp,sp_timer * p)16 int sp_timer_init(sp_data *sp, sp_timer *p)
17 {
18     p->mode = 0;
19     p->pos = 0;
20     p->time = 0;
21     return SP_OK;
22 }
23 
sp_timer_compute(sp_data * sp,sp_timer * p,SPFLOAT * in,SPFLOAT * out)24 int sp_timer_compute(sp_data *sp, sp_timer *p, SPFLOAT *in, SPFLOAT *out)
25 {
26     if(*in != 0) {
27         if(p->mode == 0) {
28             p->pos = 0;
29             p->mode = 1;
30         } else if(p->mode == 1) {
31             p->time = (SPFLOAT) p->pos / sp->sr;
32             p->mode = 0;
33         }
34     }
35 
36     if(p->mode == 1) {
37         p->pos++;
38     }
39 
40     *out = p->time;
41     return SP_OK;
42 }
43