--- multiplexer/global.h 2001/03/29 13:27:43 1.3 +++ multiplexer/global.h 2001/04/03 21:14:33 1.4 @@ -30,22 +30,20 @@ #define MAX_DATA_COMB 512 #define HIGHWATER_COM 8 -#define BUFSIZ_FACTOR 32 * 2 - -#define MAX_CTRL_OUTB 32 * BUFSIZ_FACTOR -#define MAX_DATA_OUTB 4096 * BUFSIZ_FACTOR +#define MAX_CTRL_OUTB (1 << 11) +#define MAX_DATA_OUTB (MAX_CTRL_OUTB << 7) #define HIGHWATER_OUT 512 #define MAX_WRITE_OUT (128 * 188) -#define OUT_TRIGCOND (MAX_DATA_OUTB / 2) -#define MAX_CTRL_INB 32 * BUFSIZ_FACTOR -#define MAX_DATA_INB 4096 * BUFSIZ_FACTOR -#define HIGHWATER_IN (512 * 4 * 8) -#define IN_TRIGCOND (MAX_DATA_INB / 2) - -#define MAX_DATA_RAWB 4096 * BUFSIZ_FACTOR -#define HIGHWATER_RAW (512 * 4 * 8) -#define MAX_READ_IN (1024 * 8) +#define MAX_CTRL_INB (1 << 8) +#define MAX_DATA_INBV (MAX_CTRL_INB << 10) +#define MAX_DATA_INBA (MAX_CTRL_INB << 9) +#define MAX_DATA_INB (MAX_CTRL_INB << 9) +#define HIGHWATER_IN (16 * 1024) + +#define MAX_DATA_RAWB (1 << 18) +#define HIGHWATER_RAW (16 * 1024) +#define MAX_READ_IN (8 * 1024) #define MAX_INSTREAM 64 /* ? */ #define MAX_INFILE 8 /* ? */ @@ -79,28 +77,29 @@ #define TRUE 1 #define byte __u8 +#define t_msec __s32 typedef struct { - unsigned long base; - unsigned short ext; + __u32 base; + __u16 ext; byte ba33; boolean valid; } clockref; typedef struct { - unsigned long base; - int msec; + __u32 base; + t_msec msec; } conversion_base; typedef struct { int index; int length; int sequence; - int scramble; - int msecread; - int msecpush; + t_msec msecread; + t_msec msecpush; clockref pcr; clockref opcr; + byte scramble; } ctrl_buffer; typedef struct { @@ -141,17 +140,12 @@ typedef struct { #define list_full(refr) \ (list_free(refr) == 0) +#define list_halffull(refr) \ + (list_size(refr) > ((refr).mask >> 1)) + #define list_incr(var,refr,incr) \ ((var) = (((var) + (incr)) & (refr).mask)) -/* -#define clockref2msec(cref) \ - ((cref).base / 90) - -#define msec2clockref(msec,cref) \ - (((cref).base = (msec) * 90), ((cref).ext = 0), ((cref).ba33 = 0)) -*/ - #define marker_check(data,val,mask) \ (((data & mask) != val) ? \ warn(LWAR,"Marker bit",EGLO,2,data,mask), TRUE : FALSE) @@ -166,8 +160,8 @@ typedef struct { (malloc (sizeof(typ)-sizeof(((typ*)0)->u)+sizeof(((typ*)0)->u.fld))) typedef struct { - int sourceid; int programnumber; + short sourceid; byte version; byte *elemdnew[NUMBER_ELEMD]; } mapreference; @@ -177,12 +171,12 @@ typedef struct pmtdescr { short pat_section; byte pmt_version; int programnumber; - int pcr_pid; - int pmt_pid; - int streams; + short pcr_pid; + short pmt_pid; + short streams; short stream[MAX_PMTSTREAMS]; byte streamtype[MAX_PMTSTREAMS]; - int descrlen; + short descrlen; byte elemdescr[MAX_PSI_SIZE]; } pmt_descr; @@ -202,14 +196,14 @@ typedef struct { refr_data data; char *name; int handle; - struct stat stat; + int st_mode; struct pollfd *ufds; int skipped; /* undesired bytes skipped, total */ int payload; /* split payload used total */ int total; /* split total (skipped, used, wasted) */ int sequence; /* source counter for PES sequence */ - int opendatastreams; - int openmapstreams; + short opendatastreams; + short openmapstreams; byte endaction; boolean automatic; /* extract'o'use */ int repeatitions; @@ -222,12 +216,12 @@ typedef struct { struct { struct { clockref scr; - long muxrate; + __u32 muxrate; } ph; struct { - long ratebound; - int audiobound; - int videobound; + __u32 ratebound; + byte audiobound; + byte videobound; boolean csps_flag; boolean fixed_flag; boolean system_video_lock_flag; @@ -242,7 +236,7 @@ typedef struct { struct streamdescr *stream[MAX_STRPERPS]; } ps; struct { - int transportstreamid; + __u16 transportstreamid; byte pat_version; byte newpat_version; pmt_descr *pat; @@ -256,47 +250,47 @@ typedef struct { typedef struct { int program_number; - int pcr_pid; - int pmt_pid; + short pcr_pid; + short pmt_pid; byte pmt_conticnt; byte pmt_version; boolean changed; - int pat_section; - int streams; + short pat_section; + short streams; struct streamdescr *stream[MAX_STRPERPRG]; } prog_descr; typedef struct streamdescr { refr_ctrl ctrl; refr_data data; - int sourceid; /* index into fdescr->u.xx.stream[] */ + file_descr *fdescr; + short sourceid; /* index into fdescr->u.xx.stream[] */ byte stream_id; /* elementary stream id, table 2-35, etc */ byte stream_type; byte version; + byte conticnt; + byte endaction; byte *elemdvld[NUMBER_ELEMD]; /* as valid for out */ byte elemdescr[MAX_PSI_SIZE]; /*what if a stream is leftupper corner in one prog, but elsewhere in another?*/ - file_descr *fdescr; - byte conticnt; - byte endaction; boolean isamap; union { struct { - int pid; /* splicets: 0010..1FFE, spliceps: ...FF */ struct streamdescr *mapstream; + t_msec next_clockref; + t_msec delta; + conversion_base conv; + t_msec lasttime; + short pid; /* splicets: 0010..1FFE, spliceps: ...FF */ boolean discontinuity; boolean trigger; boolean mention; boolean has_clockref; /* in output */ - int next_clockref; - int delta; - conversion_base conv; - int lasttime; - int progs; + short progs; prog_descr *pdescr[MAX_PRGFORSTR]; } d; struct { - int msectime; + t_msec msectime; conversion_base conv; int psi_length; byte psi_data[MAX_PSI_SIZE+TS_PACKET_SIZE]; @@ -307,18 +301,18 @@ typedef struct streamdescr { extern boolean timed_io; extern boolean accept_weird_scr; -extern int global_delta; -extern int psi_frequency_msec; +extern t_msec global_delta; +extern t_msec psi_frequency_msec; extern boolean psi_frequency_changed; -int msec_now (void); +t_msec msec_now (void); void cref2msec (conversion_base *b, clockref c, - int *m); + t_msec *m); void msec2cref (conversion_base *b, - int m, + t_msec m, clockref *c); void global_init (void); @@ -330,7 +324,7 @@ void global_init (void); typedef struct { struct timeval tv; - int msec_now; + t_msec msec_now; int usec; int tmo; int sr, si, so;