version 1.43, 2012/03/23 11:59:54 |
version 1.44, 2012/04/11 06:05:43 |
|
|
struct aproc_ops *ops; /* call-backs */ |
struct aproc_ops *ops; /* call-backs */ |
LIST_HEAD(, abuf) ins; /* list of inputs */ |
LIST_HEAD(, abuf) ins; /* list of inputs */ |
LIST_HEAD(, abuf) outs; /* list of outputs */ |
LIST_HEAD(, abuf) outs; /* list of outputs */ |
unsigned refs; /* extern references */ |
unsigned int refs; /* extern references */ |
#define APROC_ZOMB 1 /* destroyed but not freed */ |
#define APROC_ZOMB 1 /* destroyed but not freed */ |
#define APROC_QUIT 2 /* try to terminate if unused */ |
#define APROC_QUIT 2 /* try to terminate if unused */ |
#define APROC_DROP 4 /* xrun if capable */ |
#define APROC_DROP 4 /* xrun if capable */ |
unsigned flags; |
unsigned int flags; |
union { /* follow type-specific data */ |
union { /* follow type-specific data */ |
struct { /* file/device io */ |
struct { /* file/device io */ |
struct file *file; /* file to read/write */ |
struct file *file; /* file to read/write */ |
unsigned partial; /* bytes of partial frame */ |
unsigned int partial; /* bytes of partial frame */ |
} io; |
} io; |
struct { |
struct { |
unsigned idle; /* frames since idleing */ |
unsigned int idle; /* frames since idleing */ |
unsigned round; /* block size, for xruns */ |
unsigned int round; /* block size, for xruns */ |
int lat; /* current latency */ |
int lat; /* current latency */ |
int maxlat; /* max latency allowed */ |
int maxlat; /* max latency allowed */ |
unsigned abspos; /* frames produced */ |
unsigned int abspos; /* frames produced */ |
struct aproc *mon; /* snoop output */ |
struct aproc *mon; /* snoop output */ |
unsigned autovol; /* adjust volume dynamically */ |
unsigned int autovol; /* adjust volume dynamically */ |
int master; /* master attenuation */ |
int master; /* master attenuation */ |
} mix; |
} mix; |
struct { |
struct { |
unsigned idle; /* frames since idleing */ |
unsigned int idle; /* frames since idleing */ |
unsigned round; /* block size, for xruns */ |
unsigned int round; /* block size, for xruns */ |
int lat; /* current latency */ |
int lat; /* current latency */ |
int maxlat; /* max latency allowed */ |
int maxlat; /* max latency allowed */ |
unsigned abspos; /* frames consumed */ |
unsigned int abspos; /* frames consumed */ |
} sub; |
} sub; |
struct { |
struct { |
int delta; /* time position */ |
int delta; /* time position */ |
unsigned bufsz; /* buffer size (latency) */ |
unsigned int bufsz; /* buffer size (latency) */ |
unsigned pending; /* uncommited samples */ |
unsigned int pending; /* uncommited samples */ |
} mon; |
} mon; |
struct { |
struct { |
#define RESAMP_NCTX 2 |
#define RESAMP_NCTX 2 |
unsigned ctx_start; |
unsigned int ctx_start; |
adata_t ctx[NCHAN_MAX * RESAMP_NCTX]; |
adata_t ctx[NCHAN_MAX * RESAMP_NCTX]; |
unsigned iblksz, oblksz; |
unsigned int iblksz, oblksz; |
int diff; |
int diff; |
int idelta, odelta; /* remainder of resamp_xpos */ |
int idelta, odelta; /* remainder of resamp_xpos */ |
} resamp; |
} resamp; |
struct { |
struct { |
int bfirst; /* bytes to skip at startup */ |
int bfirst; /* bytes to skip at startup */ |
unsigned bps; /* bytes per sample */ |
unsigned int bps; /* bytes per sample */ |
unsigned shift; /* shift to get 32bit MSB */ |
unsigned int shift; /* shift to get 32bit MSB */ |
int sigbit; /* sign bits to XOR */ |
int sigbit; /* sign bits to XOR */ |
int bnext; /* to reach the next byte */ |
int bnext; /* to reach the next byte */ |
int snext; /* to reach the next sample */ |
int snext; /* to reach the next sample */ |
|
|
struct { |
struct { |
struct dev *dev; /* controlled device */ |
struct dev *dev; /* controlled device */ |
struct timo timo; /* timout for throtteling */ |
struct timo timo; /* timout for throtteling */ |
unsigned fps; /* MTC frames per second */ |
unsigned int fps; /* MTC frames per second */ |
#define MTC_FPS_24 0 |
#define MTC_FPS_24 0 |
#define MTC_FPS_25 1 |
#define MTC_FPS_25 1 |
#define MTC_FPS_30 3 |
#define MTC_FPS_30 3 |
unsigned fps_id; /* one of above */ |
unsigned int fps_id; /* one of above */ |
unsigned hr; /* MTC hours */ |
unsigned int hr; /* MTC hours */ |
unsigned min; /* MTC minutes */ |
unsigned int min; /* MTC minutes */ |
unsigned sec; /* MTC seconds */ |
unsigned int sec; /* MTC seconds */ |
unsigned fr; /* MTC frames */ |
unsigned int fr; /* MTC frames */ |
unsigned qfr; /* MTC quarter frames */ |
unsigned int qfr; /* MTC quarter frames */ |
int delta; /* rel. to the last MTC tick */ |
int delta; /* rel. to the last MTC tick */ |
} midi; |
} midi; |
} u; |
} u; |
|
|
|
|
struct aproc *rfile_new(struct file *); |
struct aproc *rfile_new(struct file *); |
struct aproc *wfile_new(struct file *); |
struct aproc *wfile_new(struct file *); |
struct aproc *mix_new(char *, int, unsigned, unsigned, unsigned); |
struct aproc *mix_new(char *, int, unsigned int, unsigned int, unsigned int); |
struct aproc *sub_new(char *, int, unsigned); |
struct aproc *sub_new(char *, int, unsigned int); |
struct aproc *resamp_new(char *, unsigned, unsigned); |
struct aproc *resamp_new(char *, unsigned int, unsigned int); |
struct aproc *enc_new(char *, struct aparams *); |
struct aproc *enc_new(char *, struct aparams *); |
struct aproc *dec_new(char *, struct aparams *); |
struct aproc *dec_new(char *, struct aparams *); |
struct aproc *join_new(char *); |
struct aproc *join_new(char *); |
struct aproc *mon_new(char *, unsigned); |
struct aproc *mon_new(char *, unsigned int); |
|
|
int rfile_in(struct aproc *, struct abuf *); |
int rfile_in(struct aproc *, struct abuf *); |
int rfile_out(struct aproc *, struct abuf *); |
int rfile_out(struct aproc *, struct abuf *); |
void rfile_eof(struct aproc *, struct abuf *); |
void rfile_eof(struct aproc *, struct abuf *); |
void rfile_hup(struct aproc *, struct abuf *); |
void rfile_hup(struct aproc *, struct abuf *); |
void rfile_done(struct aproc *); |
void rfile_done(struct aproc *); |
int rfile_do(struct aproc *, unsigned, unsigned *); |
int rfile_do(struct aproc *, unsigned int, unsigned int *); |
|
|
int wfile_in(struct aproc *, struct abuf *); |
int wfile_in(struct aproc *, struct abuf *); |
int wfile_out(struct aproc *, struct abuf *); |
int wfile_out(struct aproc *, struct abuf *); |
void wfile_eof(struct aproc *, struct abuf *); |
void wfile_eof(struct aproc *, struct abuf *); |
void wfile_hup(struct aproc *, struct abuf *); |
void wfile_hup(struct aproc *, struct abuf *); |
void wfile_done(struct aproc *); |
void wfile_done(struct aproc *); |
int wfile_do(struct aproc *, unsigned, unsigned *); |
int wfile_do(struct aproc *, unsigned int, unsigned int *); |
|
|
void mix_setmaster(struct aproc *); |
void mix_setmaster(struct aproc *); |
void mix_clear(struct aproc *); |
void mix_clear(struct aproc *); |
|
|
void mix_drop(struct abuf *, int); |
void mix_drop(struct abuf *, int); |
void sub_silence(struct abuf *, int); |
void sub_silence(struct abuf *, int); |
void sub_clear(struct aproc *); |
void sub_clear(struct aproc *); |
void mon_snoop(struct aproc *, struct abuf *, unsigned, unsigned); |
void mon_snoop(struct aproc *, struct abuf *, unsigned int, unsigned int); |
void mon_clear(struct aproc *); |
void mon_clear(struct aproc *); |
|
|
#endif /* !defined(APROC_H) */ |
#endif /* !defined(APROC_H) */ |