typedef struct af_data_s { } af_data_t; typedef struct af_info_s { int (*open) (struct af_instance_s * vf); } af_info_t; typedef struct af_instance_s { af_data_t *(*play) (struct af_instance_s * af, af_data_t * data); void *setup; } af_instance_t; typedef struct af_volume_s { float mul; struct { float avg; int len; } *mem; float mid_s16; } af_volnorm_t; void method2_int16(af_volnorm_t * s, af_data_t * c) { register int i = 0; float avg = 0.0; for (i = 0; i < 100; ++i) avg += s->mem[i].avg * (float)s->mem[i].len; s->mul = avg; } void play(struct af_instance_s *af, af_data_t * data) { af_volnorm_t *s = af->setup; method2_int16(s, data); } void af_open(af_instance_t * af) { af->play = play; } af_info_t af_info_volnorm = { af_open };