X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=port.h;h=8f9cc0471746c4cb08781a65b1aac5628d33f398;hp=6e29653777cd41a76fcd77e658cbc5a8a2a47ba4;hb=a0beafd25e37f01f404ee0020d076d0ecc01ada8;hpb=a17752d887eb9eb975dce3453ab3d176a2818cb1 diff --git a/port.h b/port.h index 6e29653..8f9cc04 100644 --- a/port.h +++ b/port.h @@ -80,6 +80,9 @@ enum { /* event list from listening to tty */ TTYI_EVENT_BUSY, /* channel unavailable */ }; +#define RECORD_BUFFER_LENGTH 1024 // must be a binary border & must be greater 256, because 256 will be written if buffer overflows +#define RECORD_BUFFER_MASK 1023 + /* structure of epoint_list */ struct epoint_list { struct epoint_list *next; @@ -110,13 +113,6 @@ inline unsigned long INACTIVE_EPOINT(struct epoint_list *epointlist) } -/* a linked list of soft-mixer relations */ -struct mixer_relation { - struct mixer_relation *next; /* next in list */ - unsigned long port_id; /* port related to */ - int mixer_writep; /* write pointer in buffer */ - }; - /* structure of port settings */ struct port_settings { char tones_dir[256]; /* directory of current tone */ @@ -144,12 +140,10 @@ class Port virtual void set_echotest(int echotest); virtual void set_tone(char *dir, char *name); virtual int read_audio(unsigned char *buffer, int length); - virtual void transmit(unsigned char *buffer, int length); struct port_settings p_settings; /* tone */ - int p_debug_nothingtosend; /* used for debugging the, if we have currently nothing to send (used for ISDN) */ char p_tone_dir[256]; /* name of current directory */ char p_tone_name[256]; /* name of current tone */ char p_tone_fh; /* file descriptor of current tone or -1 if not open */ @@ -186,11 +180,18 @@ class Port /* recording */ int open_record(int type, int mode, int skip, char *terminal, int anon_ignore, char *vbox_email, int vbox_email_file); - void close_record(int beep); + void close_record(int beep, int mute); + void record(unsigned char *data, int length, int dir_fromup); FILE *p_record; /* recording fp: if not NULL, recording is enabled */ int p_record_type; /* codec to use: RECORD_MONO, RECORD_STEREO, ... */ int p_record_skip; /* skip bytes before writing the sample */ unsigned long p_record_length; /* size of what's written so far */ + + signed short p_record_buffer[RECORD_BUFFER_LENGTH]; + unsigned long p_record_buffer_readp; + unsigned long p_record_buffer_writep; + int p_record_buffer_dir; /* current direction in buffer */ + char p_record_filename[256]; /* record filename */ int p_record_vbox; /* 0= normal recording, 1= announcement, 2= record to vbox dir */ int p_record_vbox_year; /* time when vbox recording started */ @@ -203,8 +204,6 @@ class Port char p_record_vbox_email[128]; int p_record_vbox_email_file; - virtual void printisdn(char *fmt, ...); - void free_epointlist(struct epoint_list *epointlist); void free_epointid(unsigned long epoint_id); struct epoint_list *epointlist_new(unsigned long epoint_id);