Changeset 3319:a8494d9b89aa in roaraudio for include/libroardsp/filter.h


Ignore:
Timestamp:
02/03/10 15:48:21 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

moved all the filter stuff out of main header, still need to subdivide it into multible headers

File:
1 edited

Legend:

Unmodified
Added
Removed
  • include/libroardsp/filter.h

    r3318 r3319  
    3838#include "libroardsp.h" 
    3939 
     40#define ROARDSP_FILTER_NONE           0 
     41#define ROARDSP_FILTER_AMP            1 
     42#define ROARDSP_FILTER_LOWP           2 
     43#define ROARDSP_FILTER_HIGHP          3 
     44#define ROARDSP_FILTER_MODULATE       4 
     45#define ROARDSP_FILTER_QUANTIFY       5 
     46#define ROARDSP_FILTER_CLIP           6 
     47#define ROARDSP_FILTER_ADD            7 
     48#define ROARDSP_FILTER_DOWNMIX        8 
     49#define ROARDSP_FILTER_DCBLOCK        9 
     50#define ROARDSP_FILTER_SWAP          10 
     51#define ROARDSP_FILTER_SPEEX_PREP    11 
     52#define ROARDSP_FILTER_AGC           12 
     53 
     54// filter CTLs: 
     55 
     56#define ROARDSP_FCTL_FREQ             1 /* float */ 
     57#define ROARDSP_FCTL_TIME             2 
     58#define ROARDSP_FCTL_MUL              3 /* int32_t */ 
     59#define ROARDSP_FCTL_DIV              4 /* int32_t */ 
     60#define ROARDSP_FCTL_N                5 /* int32_t */ 
     61#define ROARDSP_FCTL_LIMIT            6 /* int32_t */ 
     62#define ROARDSP_FCTL_PHASE            7 
     63#define ROARDSP_FCTL_Q                8 /* int32_t */ 
     64#define ROARDSP_FCTL_MODE             9 /* int32_t */ 
     65#define ROARDSP_FCTL_PACKET_SIZE     10 /* size_t */ 
     66 
     67// consts for filter flags: 
     68#define ROARDSP_FFLAG_NONE            0x0000 
     69#define ROARDSP_FFLAG_FREE            0x0001 
     70 
     71// consts for filter(chain) reset: 
     72#define ROARDSP_RESET_NONE            0 
     73#define ROARDSP_RESET_FULL            1 
     74#define ROARDSP_RESET_STATE           2 
     75 
     76// filter specific constants: 
     77#define ROARDSP_DOWNMIX_LEFT          1 
     78#define ROARDSP_DOWNMIX_RIGHT         2 
     79#define ROARDSP_DOWNMIX_ARITHMETIC    3 
     80#define ROARDSP_DOWNMIX_RMS           4 
     81 
     82#define ROARDSP_DCBLOCK_NUMBLOCKS     100 
     83 
     84 
     85#define ROARDSP_SPEEX_PREP_ON          0x0001 
     86#define ROARDSP_SPEEX_PREP_OFF         0x0002 
     87#define ROARDSP_SPEEX_PREP_MASK        (ROARDSP_SPEEX_PREP_ON|ROARDSP_SPEEX_PREP_OFF) 
     88 
     89// Config Bit Vector 
     90#define ROARDSP_SPEEX_PREP_CBV(opt,sw) ((sw)<<((opt)*2)) 
     91#define ROARDSP_SPEEX_PREP_CTB(opt,val) (((val) & ROARDSP_SPEEX_PREP_CBV((opt),ROARDSP_SPEEX_PREP_MASK)) >> ((opt)*2)) 
     92 
     93#define ROARDSP_SPEEX_PREP_DENOISE     0 
     94#define ROARDSP_SPEEX_PREP_AGC         1 
     95#define ROARDSP_SPEEX_PREP_VAD         2 
     96 
     97#define ROARDSP_SPEEX_PREP_DENOISE_ON  ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_DENOISE, ROARDSP_SPEEX_PREP_ON) 
     98#define ROARDSP_SPEEX_PREP_DENOISE_OFF ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_DENOISE, ROARDSP_SPEEX_PREP_OFF) 
     99#define ROARDSP_SPEEX_PREP_AGC_ON      ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_AGC, ROARDSP_SPEEX_PREP_ON) 
     100#define ROARDSP_SPEEX_PREP_AGC_OFF     ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_AGC, ROARDSP_SPEEX_PREP_OFF) 
     101#define ROARDSP_SPEEX_PREP_VAD_ON      ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_VAD, ROARDSP_SPEEX_PREP_ON) 
     102#define ROARDSP_SPEEX_PREP_VAD_OFF     ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_VAD, ROARDSP_SPEEX_PREP_OFF) 
     103 
     104 
     105// types: 
     106 
     107struct roardsp_filter { 
     108 int    channels; 
     109 int    bits; 
     110 int    rate; 
     111 void * inst; 
     112 uint_least16_t flags; 
     113 int (*calc  )(struct roardsp_filter * filter, void * data, size_t samples); 
     114 int (*uninit)(struct roardsp_filter * filter); 
     115 int (*ctl   )(struct roardsp_filter * filter, int cmd, void * data); 
     116 int (*reset )(struct roardsp_filter * filter, int what); 
     117}; 
     118 
     119#ifdef ROAR_HAVE_LIBM 
     120struct roardsp_lowp { 
     121 uint32_t freq; // in mHz (0Hz..4MHz) 
     122 uint16_t a, b; 
     123 int32_t  old[ROAR_MAX_CHANNELS]; 
     124}; 
     125 
     126struct roardsp_highp { 
     127 uint32_t freq; // in mHz (0Hz..4MHz) 
     128 int32_t  a, b, c; 
     129 int32_t  oldout[ROAR_MAX_CHANNELS]; 
     130 int32_t  oldin[ROAR_MAX_CHANNELS]; 
     131}; 
     132#endif 
     133 
     134struct roardsp_amp { 
     135 int32_t  mul; 
     136 int32_t  div; 
     137}; 
     138 
     139struct roardsp_dcblock { 
     140 int cur; 
     141 int32_t dc[ROARDSP_DCBLOCK_NUMBLOCKS]; 
     142}; 
     143 
     144struct roardsp_swap { 
     145 int map[ROAR_MAX_CHANNELS]; 
     146}; 
     147 
     148struct roardsp_agc { 
     149 struct roardsp_filter * amp; 
     150 uint32_t target_amp; 
     151}; 
     152 
     153struct roardsp_speex_prep { 
     154#ifdef _SPEEX_TYPES_H 
     155 SpeexPreprocessState *preprocess; 
     156 int frame_size; 
     157#else 
     158 char dummy[8]; 
     159#endif 
     160}; 
     161 
     162 
     163// funcs: 
     164int    roardsp_filter_str2id(char * str); 
     165char * roardsp_filter_id2str(int id); 
     166int    roardsp_filter_new   (struct roardsp_filter ** filter, struct roar_stream * stream, int id); 
     167#define roardsp_filter_free(x) roardsp_filter_uninit((x)) 
     168int    roardsp_filter_init  (struct roardsp_filter *  filter, struct roar_stream * stream, int id); 
     169int    roardsp_filter_uninit(struct roardsp_filter *  filter); 
     170int    roardsp_filter_calc  (struct roardsp_filter *  filter, void * data, size_t len); 
     171int    roardsp_filter_ctl   (struct roardsp_filter *  filter, int cmd, void * data); 
     172int    roardsp_filter_reset (struct roardsp_filter *  filter, int what); 
     173 
     174 
     175// filter: 
     176 
     177#ifdef ROAR_HAVE_LIBM 
     178int roardsp_lowp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id); 
     179int roardsp_lowp_uninit(struct roardsp_filter * filter); 
     180int roardsp_lowp_calc16(struct roardsp_filter * filter, void * data, size_t samples); 
     181int roardsp_lowp_ctl   (struct roardsp_filter * filter, int cmd, void * data); 
     182int roardsp_lowp_reset (struct roardsp_filter * filter, int what); 
     183 
     184int roardsp_highp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id); 
     185int roardsp_highp_uninit(struct roardsp_filter * filter); 
     186int roardsp_highp_calc16(struct roardsp_filter * filter, void * data, size_t samples); 
     187int roardsp_highp_ctl   (struct roardsp_filter * filter, int cmd, void * data); 
     188int roardsp_highp_reset (struct roardsp_filter * filter, int what); 
     189#endif 
     190 
     191int roardsp_amp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id); 
     192int roardsp_amp_uninit(struct roardsp_filter * filter); 
     193int roardsp_amp_calc16(struct roardsp_filter * filter, void * data, size_t samples); 
     194int roardsp_amp_calc8 (struct roardsp_filter * filter, void * data, size_t samples); 
     195int roardsp_amp_ctl   (struct roardsp_filter * filter, int cmd, void * data); 
     196int roardsp_amp_reset (struct roardsp_filter * filter, int what); 
     197 
     198int roardsp_add_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id); 
     199int roardsp_add_calc16(struct roardsp_filter * filter, void * data, size_t samples); 
     200int roardsp_add_reset (struct roardsp_filter * filter, int what); 
     201 
     202int roardsp_quantify_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id); 
     203int roardsp_quantify_uninit(struct roardsp_filter * filter); 
     204int roardsp_quantify_calc16(struct roardsp_filter * filter, void * data, size_t samples); 
     205int roardsp_quantify_ctl   (struct roardsp_filter * filter, int cmd, void * data); 
     206int roardsp_quantify_reset (struct roardsp_filter * filter, int what); 
     207 
     208int roardsp_clip_calc16(struct roardsp_filter * filter, void * data, size_t samples); 
     209int roardsp_clip_ctl   (struct roardsp_filter * filter, int cmd, void * data); 
     210int roardsp_clip_reset (struct roardsp_filter * filter, int what); 
     211 
     212int roardsp_downmix_init   (struct roardsp_filter * filter, struct roar_stream * stream, int id); 
     213int roardsp_downmix_calc162(struct roardsp_filter * filter, void * data, size_t samples); 
     214int roardsp_downmix_ctl    (struct roardsp_filter * filter, int cmd, void * data); 
     215int roardsp_downmix_reset  (struct roardsp_filter * filter, int what); 
     216 
     217int roardsp_dcblock_init   (struct roardsp_filter * filter, struct roar_stream * stream, int id); 
     218int roardsp_dcblock_uninit (struct roardsp_filter * filter); 
     219int roardsp_dcblock_calc16 (struct roardsp_filter * filter, void * data, size_t samples); 
     220int roardsp_dcblock_reset  (struct roardsp_filter * filter, int what); 
     221 
     222int roardsp_swap_init   (struct roardsp_filter * filter, struct roar_stream * stream, int id); 
     223int roardsp_swap_uninit (struct roardsp_filter * filter); 
     224int roardsp_swap_calc162(struct roardsp_filter * filter, void * data, size_t samples); 
     225int roardsp_swap_ctl    (struct roardsp_filter * filter, int cmd, void * data); 
     226int roardsp_swap_reset  (struct roardsp_filter * filter, int what); 
     227 
     228int roardsp_agc_init   (struct roardsp_filter * filter, struct roar_stream * stream, int id); 
     229int roardsp_agc_uninit (struct roardsp_filter * filter); 
     230int roardsp_agc_ctl    (struct roardsp_filter * filter, int cmd, void * data); 
     231int roardsp_agc_reset  (struct roardsp_filter * filter, int what); 
     232 
     233#ifdef _SPEEX_TYPES_H 
     234#define ROAR_HAVE_SPEEX_FILTER 
     235int roardsp_speex_prep_init   (struct roardsp_filter * filter, struct roar_stream * stream, int id); 
     236int roardsp_speex_prep_uninit (struct roardsp_filter * filter); 
     237int roardsp_speex_prep_calc161(struct roardsp_filter * filter, void * data, size_t samples); 
     238int roardsp_speex_prep_ctl    (struct roardsp_filter * filter, int cmd, void * data); 
     239int roardsp_speex_prep_reset  (struct roardsp_filter * filter, int what); 
     240#endif 
    40241 
    41242#endif 
Note: See TracChangeset for help on using the changeset viewer.