1 typedef struct af_data_s {
4 typedef struct af_info_s {
10 int (*open) (struct af_instance_s * vf);
12 typedef struct af_instance_s {
13 af_data_t *(*play) (struct af_instance_s * af, af_data_t * data);
17 typedef struct af_volume_s {
26 static void method2_int16(af_volnorm_t * s, af_data_t * c)
29 float curavg = 0.0, newavg, avg = 0.0;
30 int tmp, totallen = 0;
31 for (i = 0; i < 128; i++) {
32 avg += s->mem[i].avg * (float)s->mem[i].len;
33 totallen += s->mem[i].len;
35 if (totallen > 32000) {
36 if (avg >= (32767 * 0.01)) {
37 s->mul = s->mid_s16 / avg;
41 static af_data_t *play(struct af_instance_s *af, af_data_t * data)
43 af_volnorm_t *s = af->setup;
44 if (af->data->format == (((0 << 2) | (0 << 1) | (1 << 3) | (0 << 0)))) {
46 method2_int16(s, data);
49 static int af_open(af_instance_t * af)
54 af_info_t af_info_volnorm = {
55 "Volume normalizer filter", "volnorm",
56 "Alex Beregszaszi & Pierre Lombard", "", 0x00000001, af_open