Diff for /multiplexer/global.h between versions 1.6 and 1.7

version 1.6, 2001/04/09 15:26:03 version 1.7, 2001/04/09 15:51:29
Line 75 Line 75
 #define byte __u8  #define byte __u8
 #define t_msec __s32  #define t_msec __s32
   
   /* ISO 13818 clock reference 90kHz (33 bit) with 27MHz extension (9 bit).
    * ba33 holds the high bit of base.
    */
 typedef struct {  typedef struct {
   __u32 base;    __u32 base;
   __u16 ext;    __u16 ext;
Line 82  typedef struct { Line 85  typedef struct {
   boolean valid;    boolean valid;
 } clockref;  } clockref;
   
   /* For conversion purposes, this pair of values holds a partial clock
    * reference and an internal value in milliseconds. This is to eliminate
    * wrapping faults without producing conversion inaccuracies.
    */
 typedef struct {  typedef struct {
   __u32 base;    __u32 base;
   t_msec msec;    t_msec msec;
 } conversion_base;  } conversion_base;
   
   /* On reference to a controlled data buffer, this one holds the control
    * information, mainly: index into the data buffer, length of the referenced
    * data block. In a controlled data buffer, a data block is never split to
    * wrap at the end of the buffer. The other fields are usage dependend.
    */
 typedef struct {  typedef struct {
   int index;    int index;
   int length;    int length;
Line 98  typedef struct { Line 110  typedef struct {
   byte scramble;    byte scramble;
 } ctrl_buffer;  } ctrl_buffer;
   
   /* Control buffer */
 typedef struct {  typedef struct {
   ctrl_buffer *ptr;    ctrl_buffer *ptr;
   int in;    int in;
Line 105  typedef struct { Line 118  typedef struct {
   int mask;    int mask;
 } refr_ctrl;  } refr_ctrl;
   
   /* Data buffer */
 typedef struct {  typedef struct {
   byte *ptr;    byte *ptr;
   int in;    int in;
Line 112  typedef struct { Line 126  typedef struct {
   int mask;    int mask;
 } refr_data;  } refr_data;
   
   /* Test on buffer emptiness */
 #define list_empty(refr) ((refr).out == (refr).in)  #define list_empty(refr) ((refr).out == (refr).in)
   
   /* Create a new buffer, return TRUE on success, FALSE otherwise */
 #define list_create(refr,size) \  #define list_create(refr,size) \
   ((((size) & ((size)-1)) || (size < 2)) ? \    ((((size) & ((size)-1)) || (size < 2)) ? \
      warn (LERR,"List Create",EGLO,1,1,size), FALSE : \       warn (LERR,"List Create",EGLO,1,1,size), FALSE : \
Line 121  typedef struct { Line 137  typedef struct {
      warn (LERR,"List Create",EGLO,1,2,size), FALSE : \       warn (LERR,"List Create",EGLO,1,2,size), FALSE : \
    ((refr).mask = (size)-1, (refr).in = (refr).out = 0, TRUE))     ((refr).mask = (size)-1, (refr).in = (refr).out = 0, TRUE))
   
   /* Release a buffer no longer used */
 #define list_release(refr) \  #define list_release(refr) \
   ((refr).mask = 0, free((refr).ptr), (refr).ptr = NULL)    ((refr).mask = 0, free((refr).ptr), (refr).ptr = NULL)
   
   /* Compute number of free elements in buffer */
 #define list_free(refr) \  #define list_free(refr) \
   (((refr).out - (refr).in - 1) & (refr).mask)    (((refr).out - (refr).in - 1) & (refr).mask)
   
   /* Compute number of free elements up to the wrapping point, if the
      latter is included in the free part of the buffer */
 #define list_freeinend(refr) \  #define list_freeinend(refr) \
   ((refr).mask + 1 - (refr).in)    ((refr).mask + 1 - (refr).in)
   
   /* Compute number of used elements in buffer (i.e. its current size) */
 #define list_size(refr) \  #define list_size(refr) \
   (((refr).in - (refr).out) & (refr).mask)    (((refr).in - (refr).out) & (refr).mask)
   
   /* Test on buffer fullness */
 #define list_full(refr) \  #define list_full(refr) \
   (list_free(refr) == 0)    (list_free(refr) == 0)
   
   /* Test on buffer half-fullness (as trigger criterium) */
 #define list_halffull(refr) \  #define list_halffull(refr) \
   (list_size(refr) > ((refr).mask >> 1))    (list_size(refr) > ((refr).mask >> 1))
   
   /* Increment an index variable that points in to a buffer by a given value */
 #define list_incr(var,refr,incr) \  #define list_incr(var,refr,incr) \
   ((var) = (((var) + (incr)) & (refr).mask))    ((var) = (((var) + (incr)) & (refr).mask))
   
   /* Check a data byte against a mask */
 #define marker_check(data,val,mask) \  #define marker_check(data,val,mask) \
   (((data & mask) != val) ? \    (((data & mask) != val) ? \
     warn(LWAR,"Marker bit",EGLO,2,data,mask), TRUE : FALSE)      warn(LWAR,"Marker bit",EGLO,2,data,mask), TRUE : FALSE)
   
   /* Check whether a given bit is set in a data byte */
 #define marker_bit(data,bit) \  #define marker_bit(data,bit) \
   marker_check(data,1<<bit,1<<bit)    marker_check(data,1<<bit,1<<bit)
   
 #define mmin(a,b) ((a)<(b)?(a):(b))  #define mmin(a,b) ((a)<(b)?(a):(b))
 #define mmax(a,b) ((a)<(b)?(b):(a))  #define mmax(a,b) ((a)<(b)?(b):(a))
   
   /* Allocate memory for a struct with known union usage */
 #define unionalloc(typ,fld) \  #define unionalloc(typ,fld) \
   (malloc (sizeof(typ)-sizeof(((typ*)0)->u)+sizeof(((typ*)0)->u.fld)))    (malloc (sizeof(typ)-sizeof(((typ*)0)->u)+sizeof(((typ*)0)->u.fld)))
   
   /* Reference descriptors as these are parsed from PSI */
 typedef struct {  typedef struct {
   int programnumber;    int programnumber;
   short sourceid;    short sourceid;
Line 162  typedef struct { Line 190  typedef struct {
   byte *elemdnew[NUMBER_ELEMD];    byte *elemdnew[NUMBER_ELEMD];
 } mapreference;  } mapreference;
   
   /* Source TS PMT list */
 typedef struct pmtdescr {  typedef struct pmtdescr {
   struct pmtdescr *next;    struct pmtdescr *next;
   short pat_section;    short pat_section;
Line 176  typedef struct pmtdescr { Line 205  typedef struct pmtdescr {
   byte elemdescr[MAX_PSI_SIZE];    byte elemdescr[MAX_PSI_SIZE];
 } pmt_descr;  } pmt_descr;
   
   /* Automatic stream usage requests as stated via command */
 typedef struct {  typedef struct {
   int sprg, tprg, ssid, tsid;    int sprg, tprg, ssid, tsid;
 } tsauto_descr;  } tsauto_descr;
   
   /* Supported input file types */
 typedef enum {  typedef enum {
   ct_none,    ct_none,
   ct_packetized,    ct_packetized,
Line 188  typedef enum { Line 219  typedef enum {
   ct_unknown    ct_unknown
 } content_type;  } content_type;
   
   /* Source file */
 typedef struct {  typedef struct {
   refr_data data;    refr_data data;
   int handle;    int handle;
Line 248  typedef struct { Line 280  typedef struct {
   } u;    } u;
 } file_descr;  } file_descr;
   
   /* Target program */
 typedef struct {  typedef struct {
   int program_number;    int program_number;
   short pcr_pid;    short pcr_pid;
Line 260  typedef struct { Line 293  typedef struct {
   struct streamdescr *stream[MAX_STRPERPRG];    struct streamdescr *stream[MAX_STRPERPRG];
 } prog_descr;  } prog_descr;
   
   /* Single data or map stream */
 typedef struct streamdescr {  typedef struct streamdescr {
   refr_ctrl ctrl;    refr_ctrl ctrl;
   refr_data data;    refr_data data;

Removed from v.1.6  
changed lines
  Added in v.1.7


LinuxTV legacy CVS <linuxtv.org/cvs>