home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / c / lpc05b.zip / ULAW2LIN.H < prev    next >
C/C++ Source or Header  |  1992-05-22  |  890b  |  25 lines

  1. /*    @(#)ulaw2linear.h 1.1 89/12/22 SMI    */
  2. /* Copyright (c) 1989 by Sun Microsystems, Inc. */
  3.  
  4. #ifndef _multimedia_ulaw2linear_h
  5. #define    _multimedia_ulaw2linear_h
  6.  
  7. /* PCM linear <-> u-law conversion tables */
  8. extern short        _ulaw2linear[];        /* 8-bit u-law to 16-bit PCM */
  9. extern unsigned char    *_linear2ulaw;        /* 13-bit PCM to 8-bit u-law */
  10.  
  11.  
  12. /* PCM linear <-> u-law conversion macros */
  13.  
  14. /* u-law to 8,16,32-bit linear */
  15. #define    audio_u2c(X)    ((char)(_ulaw2linear[(unsigned char) (X)] >> 8))
  16. #define    audio_u2s(X)    (_ulaw2linear[(unsigned char) (X)])
  17. #define    audio_u2l(X)    (((long)_ulaw2linear[(unsigned char) (X)]) << 16)
  18.  
  19. /* 8,16,32-bit linear to u-law */
  20. #define    audio_c2u(X)    (_linear2ulaw[(((short)(X)) << 5) + 0xf])
  21. #define    audio_s2u(X)    (_linear2ulaw[((short)(X)) >> 3])
  22. #define    audio_l2u(X)    (_linear2ulaw[((long)(X)) >> 19])
  23.  
  24. #endif /*!_multimedia_ulaw2linear_h*/
  25.