COMMON.H
上传用户:njqiyou
上传日期:2007-01-08
资源大小:574k
文件大小:24k
源码类别:

mpeg/mp3

开发平台:

C/C++

  1. /**********************************************************************
  2.  * Copyright (c) 1995 MPEG/audio software simulation group
  3.  * All Rights Reserved
  4.  * $Id: common.h,v 1.1 1996/04/18 03:39:59 rowlands Exp $
  5.  *
  6.  * MPEG/audio coding/decoding software, work in progress
  7.  *   NOT for public distribution until verified and approved by the
  8.  *   MPEG/audio committee.
  9.  *
  10.  * $Log: common.h,v $
  11.  * Revision 1.1  1996/04/18 03:39:59  rowlands
  12.  * Initial revision
  13.  *
  14.  * Revision 1.4  1995/04/06  05:49:24  rowlands
  15.  * Moved machine #define to makefile
  16.  *
  17.  * Revision 1.3  1995/04/06  05:01:42  rowlands
  18.  * Ran decoder through protoize to convert to ANSI C.
  19.  *
  20.  * Revision 1.2  1995/04/06  04:56:00  rowlands
  21.  * Added header, RCS info and cleaned up prototypes in initial revision.
  22.  *
  23.  **********************************************************************/
  24. /**********************************************************************
  25.  * VERSION 2.5                                                        *
  26.  *   changes made since last update:                                  *
  27.  *   date   programmers                comment                        *
  28.  * 2/25/91  Douglas Wong        start of version 1.0 records          *
  29.  * 3/06/91  Douglas Wong        rename setup.h to dedef.h             *
  30.  *                              removed extraneous variables          *
  31.  *                              removed window_samples (now part of   *
  32.  *                              filter_samples)                       *
  33.  * 3/07/91  Davis Pan           changed output file to "codmusic"     *
  34.  * 5/10/91  Vish (PRISM)        Ported to Macintosh and Unix.         *
  35.  *                              Incorporated new "out_fifo()" which   *
  36.  *                              writes out last incomplete buffer.    *
  37.  *                              Incorporated all AIFF routines which  *
  38.  *                              are also compatible with SUN.         *
  39.  *                              Incorporated user interface for       *
  40.  *                              specifying sound file names.          *
  41.  *                              Also incorporated user interface for  *
  42.  *                              writing AIFF compatible sound files.  *
  43.  * 27jun91  dpwe (Aware)        Added musicout and &sample_frames as  *
  44.  *                              args to out_fifo (were glob refs).    *
  45.  *                              Used new 'frame_params' struct.       *
  46.  *                              Clean,simplify, track clipped output  *
  47.  *                              and total bits/frame received.        *
  48.  * 7/10/91  Earle Jennings      changed to floats to FLOAT            *
  49.  *10/ 1/91  S.I. Sudharsanan,   Ported to IBM AIX platform.           *
  50.  *          Don H. Lee,                                               *
  51.  *          Peter W. Farrett                                          *
  52.  *10/ 3/91  Don H. Lee          implemented CRC-16 error protection   *
  53.  *                              newly introduced functions are        *
  54.  *                              buffer_CRC and recover_CRC_error      *
  55.  *                              Additions and revisions are marked    *
  56.  *                              with "dhl" for clarity                *
  57.  * 2/11/92  W. Joseph Carter    Ported new code to Macintosh.  Most   *
  58.  *                              important fixes involved changing     *
  59.  *                              16-bit ints to long or unsigned in    *
  60.  *                              bit alloc routines for quant of 65535 *
  61.  *                              and passing proper function args.     *
  62.  *                              Removed "Other Joint Stereo" option   *
  63.  *                              and made bitrate be total channel     *
  64.  *                              bitrate, irrespective of the mode.    *
  65.  *                              Fixed many small bugs & reorganized.  *
  66.  **********************************************************************
  67.  *                                                                    *
  68.  *                                                                    *
  69.  *  MPEG/audio Phase 2 coding/decoding multichannel                   *
  70.  *                                                                    *
  71.  *  Version 1.0                                                       *
  72.  *                                                                    *
  73.  *  7/27/93        Susanne Ritscher,  IRT Munich                      *
  74.  *                                                                    *
  75.  *                  thanks to                                         *
  76.  *                  Ralf Schwalbe,    Telekom FTZ Berlin              *
  77.  *                  Heiko Purnhagen,  Uni Hannover                    *
  78.  *                                                                    *
  79.  *  Version 2.0                                                       *
  80.  *                                                                    *
  81.  *  8/27/93        Susanne Ritscher, IRT Munich                       *
  82.  *                 Channel-Switching is working                       *
  83.  *                                                                    *
  84.  *  Version 2.1                                                       *
  85.  *                                                                    *
  86.  *  9/1/93         Susanne Ritscher,  IRT Munich                      *
  87.  *                 all channels normalized                            *
  88.  *                                                                    *
  89.  *  Version 3.0                                                       *
  90.  *                                                                    *
  91.  *  06/16/94       Ralf Schwalbe, Telekom FTZ Berlin                  *
  92.  *                 all sources and variables adapted due to MPEG-2 -  *
  93.  *                 DIS from March 1994                                *
  94.  *                  - dematrix and denormalize procedure              *
  95.  *                  - new tc - allocation (0-7)                       *
  96.  *                  - some new structures and variables as a basis    *
  97.  *                    for further decoding modes                      *
  98.  **********************************************************************
  99.  *       *
  100.  *  Version 1.0 Shareware                                             *
  101.  *                                                                    *
  102.  *  07/12/94       Ralf Schwalbe,  Telekom FTZ Berlin                 *
  103.  *                 Tel: +49 30 6708 2406                              *
  104.  *                 Fax: +49 30 6774 539                               *
  105.  *       *
  106.  *  04/11/94    Ralf Schwalbe. Telekom FTZ Berlin                  *
  107.  *                  - decoding extension bitstream                    *
  108.  *                  - some new subroutines, globale variables and     *
  109.  *                    structures (important to handle the ext. bitst.)*
  110.  *                  - changed all functions to ANSI-C funktion header *
  111.  *     - corrected some bugs to decode bitstreams > 512kB*
  112.  *       *
  113.  *  Version 1.1 Shareware                                             *
  114.  *                                                                    *
  115.  *  07/12/94       Ralf Schwalbe,  Telekom FTZ Berlin                 *
  116.  *                 Tel: +49 30 6708 2406                              *
  117.  *                 Fax: +49 30 6774 539                               *
  118.  *       *
  119.  **********************************************************************/
  120. #define VERSION "1.1"  /* R.S for Shareware */
  121. /***********************************************************************
  122. *
  123. *  Global Conditional Compile Switches
  124. *
  125. ***********************************************************************/
  126. /*#define PRINTOUT*/
  127. /*#define UNIX         */   /* Unix conditional compile switch */
  128. /*#define MACINTOSH */  /* Macintosh conditional compile switch */
  129. /*#define MS_DOS */  /* IBM PC conditional compile switch
  130.    Microsoft C ver. 6.0 */
  131. #ifdef  UNIX
  132. #define         TABLES_PATH     "tables/"  /* to find data files */
  133. /* name of environment variable holding path of table files */
  134. #define         MPEGTABENV      "MPEGTABLES"
  135. #define         PATH_SEPARATOR  "/"        /* how to build paths */
  136. #define      PROTO_ARGS                 /* unix gcc uses arg. prototypes */
  137. #endif  /* UNIX */
  138. #ifdef  MACINTOSH
  139. /* #define      TABLES_PATH ":tables:"  /* where to find data files */
  140. #define         PROTO_ARGS              /* Mac uses argument prototypes */
  141. #endif  /* MACINTOSH */
  142. #ifdef  MS_DOS
  143. #define         PROTO_ARGS  /* DOS uses argument prototypes */
  144. #endif  /* MS_DOS */
  145. /* MS_DOS and VMS do not define TABLES_PATH, so OpenTableFile will default
  146.    to finding the data files in the default directory */
  147. /***********************************************************************
  148. *
  149. *  Global Include Files
  150. *
  151. ***********************************************************************/
  152. #include        <stdio.h>
  153. #include        <string.h>
  154. #include        <math.h>
  155. #ifdef  UNIX
  156. #include        <unistd.h>  /* removed 92-08-05 shn */
  157. #include <stdlib.h>       /* put in 92-08-05 shn */
  158. #endif  /* UNIX */
  159. #ifdef  MACINTOSH
  160. #include        <stdlib.h>
  161. #include        <console.h>
  162. #endif  /* MACINTOSH */
  163. #ifdef  MS_DOS
  164. /* #include <alloc.h> */ /* removed 92-07-08 sr */
  165. #include <malloc.h>   /* put in 92-07-08 sr */
  166. /* #include <mem.h> */   /* removed 92-07-08 sr */
  167. #include <stdlib.h>
  168. #endif  /* MS_DOS */
  169. #define SEEK_SET 0
  170. #define SEEK_CUR 1
  171. #define SEEK_END 2
  172. /***********************************************************************
  173. *
  174. *  Global Definitions
  175. *
  176. ***********************************************************************/
  177. extern int pred_coef_table[8][14];  /* def. in decode.c */
  178. extern int read_ext_header,ext_error;
  179. extern unsigned long frameNum,ext_total;
  180. /* General Definitions */
  181. #ifdef  MS_DOS
  182. #define         FLOAT                   double
  183. #else
  184. #define         FLOAT                   float
  185. #endif
  186. #define         FALSE                   0
  187. #define         TRUE                    (!FALSE)
  188. #define         NULL_CHAR               ''
  189. #define         MAX_U_32_NUM            0xFFFFFFFF
  190. #define         PI                      3.14159265358979
  191. #define         PI4                     PI/4
  192. #define         PI64                    PI/64
  193. #define         LN_TO_LOG10             0.2302585093
  194. #define         VOL_REF_NUM             0
  195. #define         MPEG_AUDIO_ID           1
  196. #define         MAC_WINDOW_SIZE         24
  197. #define         MONO                    1
  198. #define         STEREO                  2
  199. #define         BITS_IN_A_BYTE          8
  200. #define         WORD                    16
  201. #define         MAX_NAME_SIZE           81
  202. #define         SBLIMIT                 32
  203. #define         FFT_SIZE                1024
  204. #define         HAN_SIZE                512
  205. #define         SCALE_BLOCK             12
  206. #define         SCALE_RANGE             64
  207. #define         SCALE                   32768.0
  208. #define         CRC16_POLYNOMIAL        0x8005
  209. /* Sync - Word for multichannel extern bitstream */
  210. #define EXT_SYNCWORD         0x7ff
  211. /* MPEG Header Definitions - Mode Values */
  212. #define         MPG_MD_STEREO           0
  213. #define         MPG_MD_JOINT_STEREO     1
  214. #define         MPG_MD_DUAL_CHANNEL     2
  215. #define MPG_MD_MONO 3
  216. #define MPG_MD_NONE 4
  217. /* Multi-channel Definitions - Mode Values */
  218. #define MPG_MC_STEREO         0
  219. #define MPG_MC_NONE        6
  220. /* AIFF Definitions */
  221. #ifndef MS_DOS
  222. #define         IFF_ID_FORM             "FORM" /* HP400 unix v8.0: double qoutes 1992-07-24 shn */
  223. #define         IFF_ID_AIFF             "AIFF"
  224. #define         IFF_ID_COMM             "COMM"
  225. #define         IFF_ID_SSND             "SSND"
  226. #define         IFF_ID_MPEG             "MPEG"
  227. #else
  228. #define         IFF_ID_FORM             "FORM"
  229. #define         IFF_ID_AIFF             "AIFF"
  230. #define         IFF_ID_COMM             "COMM"
  231. #define         IFF_ID_SSND             "SSND"
  232. #define         IFF_ID_MPEG             "MPEG"
  233. #endif
  234. /* "bit_stream.h" Definitions */
  235. #define         MINIMUM         4    /* Minimum size of the buffer in bytes */
  236. #define         MAX_LENGTH      32   /* Maximum length of word written or
  237. read from bit stream */
  238. #define         READ_MODE       0
  239. #define         WRITE_MODE      1
  240. #define         ALIGNING        8
  241. #define         BINARY          0
  242. #define         ASCII           1
  243. #define         BS_FORMAT       ASCII /* BINARY or ASCII = 2x bytes */
  244. #define         BUFFER_SIZE     4096
  245. #define         MIN(A, B)       ((A) < (B) ? (A) : (B))
  246. #define         MAX(A, B)       ((A) > (B) ? (A) : (B))
  247. /***********************************************************************
  248. *
  249. *  Global Type Definitions
  250. *
  251. ***********************************************************************/
  252. /* Structure for Reading Layer II Allocation Tables from File */
  253. typedef struct {
  254. unsigned int    steps;
  255. unsigned int    bits;
  256. unsigned int    group;
  257. unsigned int    quant;
  258. } sb_alloc, *alloc_ptr;
  259. typedef sb_alloc        al_table[SBLIMIT][16];
  260. /* Header Information Structure */
  261. typedef struct {
  262. int version;
  263. int lay;
  264. int error_protection;
  265. int bitrate_index;
  266. int bitrate_index1;
  267. int bitrate_index2;
  268. int sampling_frequency;
  269. int padding;
  270. int extension;
  271. int mode;
  272. int mode_ext;
  273. int copyright;
  274. int original;
  275. int emphasis;
  276. int center;    /* center present */
  277. int surround;     /* surrounds present*/
  278. int dematrix_procedure;    /* type of dematricing */
  279. int lfe;    /* low freequency effect channel*/
  280. int audio_mix;    /* large or small room */
  281. int no_of_multi_lingual_ch;/* number of multilingual channels */
  282. int multi_lingual_fs;    /* fs of main channels and ML-fs are the same*/
  283. int multi_lingual_layer;   /* Layer IIML or Layer II ML is used*/
  284. int mc_prediction[8];    /* prediction bit *//* 28.9. R.S. changed name and length like DIS*/
  285. int mc_pred_coeff[8][4][3];/* bits for prediction coefficient */
  286. int tc_alloc[12];    /* transmission channel allocation in each sbgroup*/
  287. int mc_predsi[8][4];    /* predictor select information*/
  288. int mc_delay_comp[8][4];   /* 3 bit for delay compensations factor */
  289. int ext_bit_stream_present;
  290. int copyright_ident_bit;   /* additional copyright bits */
  291. int copyright_ident_start; /*                           */
  292. int n_ad_bytes;
  293. int ad_bytes_crc_info;    /* for MC-CRC -check 7.12.94 R.S */
  294. int mc_prediction_on;    
  295. int tc_sbgr_select;
  296. int dyn_cross_on;
  297. int dyn_cross_LR;
  298. int dyn_cross_mode[12];
  299. int dyn_second_stereo;
  300. int tc_allocation;
  301. int ext_syncword;         /* 12 bits */
  302. int ext_crc_check;        /* 16 bits */
  303. int ext_length;           /* 11 bits *//* Important!! in bits per frame */
  304. int reserved_bit;
  305. unsigned int ext_crc_bits[15];
  306. } layer, *the_layer;
  307. /* Parent Structure Interpreting some Frame Parameters in Header */
  308. typedef struct {
  309. layer *header;        /* raw header information */
  310. int actual_mode;    /* when writing IS, may forget if 0 chs */
  311. al_table *alloc;     /* bit allocation table read in */
  312. int tab_num;      /* number of table as loaded */
  313. int stereo;  /* 1 for mono, 2 for stereo */
  314. int mc_channel;
  315. int jsbound;  /* first band of joint stereo coding */
  316. double mnr_min; /* mnr for dynamic bitallocation */
  317. int sblimit;     /* total number of sub bands */
  318. } frame_params;
  319. /* Double and SANE Floating Point Type Definitions */
  320. typedef struct  IEEE_DBL_struct {
  321. unsigned long   hi;
  322. unsigned long   lo;
  323. } IEEE_DBL;
  324. typedef struct  SANE_EXT_struct {
  325. unsigned long   l1;
  326. unsigned long   l2;
  327. unsigned short  s1;
  328. } SANE_EXT;
  329. /* AIFF Type Definitions */
  330. typedef char  ID[4];
  331. typedef struct  identifier_struct{
  332.  ID name;
  333.  long ck_length;
  334. }identifier;
  335. typedef struct  ChunkHeader_struct {
  336. ID      ckID;
  337. long    ckSize;
  338. } ChunkHeader;
  339. typedef struct  Chunk_struct {
  340. ID      ckID;
  341. long    ckSize;
  342. ID      formType;
  343. } Chunk;
  344. typedef struct  CommonChunk_struct {
  345. ID              ckID;
  346. long            ckSize;
  347. short           numChannels;
  348. unsigned long   numSampleFrames;
  349. short           sampleSize;
  350. char            sampleRate[10];
  351. } CommonChunk;
  352. typedef struct  SoundDataChunk_struct {
  353. ID              ckID;
  354. long            ckSize;
  355. unsigned long   offset;
  356. unsigned long   blockSize;
  357. } SoundDataChunk;
  358. typedef struct  blockAlign_struct {
  359. unsigned long   offset;
  360. unsigned long   blockSize;
  361. } blockAlign;
  362. typedef struct  IFF_AIFF_struct {
  363. short           numChannels;
  364.                 unsigned long   numSampleFrames;
  365.                 short           sampleSize;
  366. double          sampleRate;
  367.                 ID/*char**/     sampleType;/*must be allocated 21.6.93 SR*/
  368.                 blockAlign      blkAlgn;
  369. } IFF_AIFF;
  370. /* "bit_stream.h" Type Definitions */
  371. typedef struct  bit_stream_struc {
  372.     FILE        *pt;            /* pointer to bit stream device */
  373.     unsigned char *buf;         /* bit stream buffer */
  374.     int         buf_size;       /* size of buffer (in number of bytes) */
  375.     long        totbit;         /* bit counter of bit stream */
  376.     int         buf_byte_idx;   /* pointer to top byte in buffer */
  377.     int         buf_bit_idx;    /* pointer to top bit of top byte in buffer */
  378.     int         mode;           /* bit stream open in read or write mode */
  379.     int         eob;            /* end of buffer index */
  380.     int         eobs;           /* end of bit stream flag */
  381.     char        format;
  382. /* format of file in rd mode (BINARY/ASCII) */
  383.     } Bit_stream_struc;
  384. /***********************************************************************
  385. *
  386. *  Global Variable External Declarations
  387. *
  388. ***********************************************************************/
  389. extern Bit_stream_struc  bs_ext;
  390. extern layer    info;
  391. extern int read_from_ext;
  392. extern char     *mode_names[4];
  393. extern char     *layer_names[3];
  394. extern double   s_freq[4];
  395. extern int bitrate[3][15];
  396. extern double multiple[64];
  397. extern int      sb_groups[12];
  398. extern unsigned char bs_tmp_buf[50];
  399. /***********************************************************************
  400. *
  401. *  Global Function Prototype Declarations
  402. *
  403. ***********************************************************************/
  404. /* The following functions are in the file "common.c" */
  405. #ifdef  PROTO_ARGS
  406. extern FILE           *OpenTableFile(char*);
  407. extern int            read_bit_alloc(int, al_table*);
  408. extern int            pick_table(frame_params*);
  409. extern int            js_bound(int, int);
  410. extern void           hdr_to_frps(frame_params*);
  411. extern void           WriteHdr(frame_params*, FILE*);
  412. extern void           WriteBitAlloc(unsigned int[2][SBLIMIT], frame_params*,
  413. FILE*);
  414. extern void           WriteScale(unsigned int[2][SBLIMIT],
  415.                         unsigned int[2][SBLIMIT], unsigned int[2][3][SBLIMIT],
  416. frame_params*, FILE*);
  417. extern void           WriteSamples(int, unsigned int/*far*/[SBLIMIT],
  418. unsigned int[SBLIMIT], frame_params*, FILE*);
  419. extern int            NumericQ(char*);
  420. extern int            BitrateIndex(int, int);
  421. extern int            SmpFrqIndex(long);
  422. extern int            memcheck(char*, int, int);
  423. extern void           *mem_alloc(unsigned long, char*);
  424. extern void           mem_free(void**);
  425. extern void           double_to_extended(double*, char[10]);
  426. extern void           extended_to_double(char[10], double*);
  427. extern int       aiff_read_headers(FILE*, IFF_AIFF*, int*);
  428. extern int       aiff_seek_to_sound_data(FILE*);
  429. extern int            aiff_write_headers(FILE*, IFF_AIFF*);
  430. extern void           refill_buffer(Bit_stream_struc*);
  431. extern void           empty_buffer(Bit_stream_struc*, int);
  432. extern void           open_bit_stream_w(Bit_stream_struc*, char*, int);
  433. extern int            open_bit_stream_r(Bit_stream_struc*, char*, int);
  434. extern void           close_bit_stream_r(Bit_stream_struc*);
  435. extern void           close_bit_stream_w(Bit_stream_struc*);
  436. extern void           alloc_buffer(Bit_stream_struc*, int);
  437. extern void           desalloc_buffer(Bit_stream_struc*);
  438. extern void           back_track_buffer(Bit_stream_struc*, int);
  439. extern void        skipbits(Bit_stream_struc *, unsigned int);
  440. extern void        skip_ext_bits(Bit_stream_struc *, unsigned int);
  441. extern unsigned int   get1bit(Bit_stream_struc*);
  442. extern unsigned int   local_get1bit(Bit_stream_struc*);
  443. extern void           put1bit(Bit_stream_struc*, int);
  444. extern unsigned long  look_ahead(Bit_stream_struc*, int);
  445. extern unsigned long  getbits(Bit_stream_struc*, int);
  446. extern unsigned int   local_getbits(Bit_stream_struc*, int);
  447. extern void           putbits(Bit_stream_struc*, unsigned int, int);
  448. extern void           byte_ali_putbits(Bit_stream_struc*, unsigned int, int);
  449. extern unsigned long  byte_ali_getbits(Bit_stream_struc*, int);
  450. extern unsigned long  sstell(Bit_stream_struc*);
  451. extern int            end_bs(Bit_stream_struc*);
  452. extern int            seek_sync(Bit_stream_struc*, long, int);
  453. extern void           I_CRC_calc(frame_params*, unsigned int[2][SBLIMIT],
  454. unsigned int*);
  455. extern void           II_CRC_calc(frame_params*, unsigned int[5][SBLIMIT],
  456. unsigned int[5][SBLIMIT], unsigned int*);
  457. extern void           mc_error_check(frame_params*, unsigned int[7][SBLIMIT],
  458. unsigned int[7][SBLIMIT], unsigned int*);
  459. extern int       mc_ext_error_check(void);
  460. extern void           update_CRC(unsigned int, unsigned int, unsigned int*);
  461. extern void           read_absthr(FLOAT*, long);
  462. extern void       program_information(void);
  463. extern int        js_bound1(int, int); /* other bounderies for multichannel*/
  464. #ifdef  MACINTOSH
  465. extern void           set_mac_file_attr(char[MAX_NAME_SIZE], short, OsType,
  466. OsType);
  467. #endif
  468. #ifdef  MS_DOS
  469. extern char           *new_ext(char *filename, char *extname); /* 92-08-19 shn */
  470. #endif
  471. #else
  472. extern FILE           *OpenTableFile();
  473. extern int            read_bit_alloc();
  474. extern int            pick_table();
  475. extern int            js_bound();
  476. extern void           hdr_to_frps();
  477. extern void           WriteHdr();
  478. extern void           WriteBitAlloc();
  479. extern void           WriteScale();
  480. extern void           WriteSamples();
  481. extern int            NumericQ();
  482. extern int            BitrateIndex();
  483. extern int            SmpFrqIndex();
  484. extern int            memcheck();
  485. extern void           *mem_alloc();
  486. extern void           mem_free();
  487. extern void           double_to_extended();
  488. extern void           extended_to_double();
  489. extern int            aiff_read_headers();
  490. extern int            aiff_seek_to_sound_data();
  491. extern int            aiff_write_headers();
  492. extern void           refill_buffer();
  493. extern void           empty_buffer();
  494. extern void           open_bit_stream_w();
  495. extern int            open_bit_stream_r();
  496. extern void           close_bit_stream_r();
  497. extern void           close_bit_stream_w();
  498. extern void           alloc_buffer();
  499. extern void           desalloc_buffer();
  500. extern void           back_track_buffer();
  501. extern int            mc_ext_header();
  502. extern int           mc_ext_error_check();
  503. extern unsigned int   get1bit();
  504. extern void           put1bit();
  505. extern unsigned long  look_ahead();
  506. extern unsigned long  getbits();
  507. extern void           putbits();
  508. extern void           byte_ali_putbits();
  509. extern unsigned long  byte_ali_getbits();
  510. extern unsigned long  sstell();
  511. extern int            end_bs();
  512. extern int            seek_sync();
  513. extern void           I_CRC_calc();
  514. extern void           II_CRC_calc();
  515. extern void           update_CRC();
  516. extern void           read_absthr();
  517. extern void       program_information();
  518. #ifdef  MSDOS
  519. extern char           *new_ext(); /* 92-08-19 shn */
  520. #endif
  521. #endif
  522. #ifdef CONCAT
  523. Bit_stream_struc   bs_concat; /*23/03/1995 JMZ Concat */
  524. #endif CONCAT