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

mpeg/mp3

开发平台:

C/C++

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