view src/shnplug/shorten.h @ 2284:d19b53359b24

cleaned up the sndfile wav plugin, currently limiting it ONLY TO WAV PLAYBACK. if somebody is more experienced with it and wants to restore the other formats, go ahead (maybe change the name of the plugin too?).
author mf0102 <0102@gmx.at>
date Wed, 09 Jan 2008 15:41:22 +0100
parents fa9f85cebade
children
line wrap: on
line source

/******************************************************************************
*                                                                             *
*  Copyright (C) 1992-1995 Tony Robinson                                      *
*                                                                             *
*  See the file doc/LICENSE.shorten for conditions on distribution and usage  *
*                                                                             *
******************************************************************************/

/*
 * $Id: shorten.h,v 1.4 2001/12/30 05:12:04 jason Exp $
 */

#ifndef _SHORTEN_H
#define _SHORTEN_H

#include "config.h"

#include <stdlib.h>
#include <pthread.h>

#ifdef HAVE_INTTYPES_H
#  include <inttypes.h>
#else
#  if SIZEOF_UNSIGNED_LONG == 4
#    define uint32_t unsigned long
#    define int32_t long
#  else
#    define uint32_t unsigned int
#    define int32_t int
#  endif
#  define uint16_t unsigned short
#  define uint8_t unsigned char
#  define int16_t short
#  define int8_t char
#endif

#undef  ulong
#undef  ushort
#undef  uchar
#undef  slong
#undef  sshort
#undef  schar
#define ulong   uint32_t
#define ushort  uint16_t
#define uchar   uint8_t
#define slong   int32_t
#define sshort  int16_t
#define schar   int8_t

#include "shn.h"

extern shn_file *shnfile;

#define MAGIC			"ajkg"
#define FORMAT_VERSION		2
#define MIN_SUPPORTED_VERSION	1
#define MAX_SUPPORTED_VERSION	3
#define MAX_VERSION		7

#define UNDEFINED_UINT		-1
#define DEFAULT_BLOCK_SIZE	256
#define DEFAULT_V0NMEAN	0
#define DEFAULT_V2NMEAN	4
#define DEFAULT_MAXNLPC	0
#define DEFAULT_NCHAN		1
#define DEFAULT_NSKIP		0
#define DEFAULT_NDISCARD	0
#define NBITPERLONG		32
#define DEFAULT_MINSNR          256
#define DEFAULT_MAXRESNSTR	"32.0"
#define DEFAULT_QUANTERROR	0
#define MINBITRATE		2.5

#define MAX_LPC_ORDER	64
#define CHANSIZE	0
#define ENERGYSIZE	3
#define BITSHIFTSIZE	2
#define NWRAP		3

#define FNSIZE		2
#define FN_DIFF0	0
#define FN_DIFF1	1
#define FN_DIFF2	2
#define FN_DIFF3	3
#define FN_QUIT		4
#define FN_BLOCKSIZE	5
#define FN_BITSHIFT	6
#define FN_QLPC		7
#define FN_ZERO		8
#define FN_VERBATIM     9

#define VERBATIM_CKSIZE_SIZE 5	/* a var_put code size */
#define VERBATIM_BYTE_SIZE 8	/* code size 8 on single bytes means
				 * no compression at all */
#define VERBATIM_CHUNK_MAX 256	/* max. size of a FN_VERBATIM chunk */

#define ULONGSIZE	2
#define NSKIPSIZE	1
#define LPCQSIZE	2
#define LPCQUANT	5
#define XBYTESIZE	7

#define TYPESIZE	4
#define TYPE_AU1	0	/* original lossless ulaw                    */
#define TYPE_S8	        1	/* signed 8 bit characters                   */
#define TYPE_U8         2	/* unsigned 8 bit characters                 */
#define TYPE_S16HL	3	/* signed 16 bit shorts: high-low            */
#define TYPE_U16HL	4	/* unsigned 16 bit shorts: high-low          */
#define TYPE_S16LH	5	/* signed 16 bit shorts: low-high            */
#define TYPE_U16LH	6	/* unsigned 16 bit shorts: low-high          */
#define TYPE_ULAW	7	/* lossy ulaw: internal conversion to linear */
#define TYPE_AU2	8	/* new ulaw with zero mapping                */
#define TYPE_AU3	9	/* lossless alaw                             */
#define TYPE_ALAW 	10	/* lossy alaw: internal conversion to linear */
#define TYPE_RIFF_WAVE  11	/* Microsoft .WAV files                      */
#define TYPE_EOF	12
#define TYPE_GENERIC_ULAW 128
#define TYPE_GENERIC_ALAW 129

#define POSITIVE_ULAW_ZERO 0xff
#define NEGATIVE_ULAW_ZERO 0x7f

#ifndef MAX_PATH
#define MAX_PATH 2048
#endif

#ifndef	MIN
#define MIN(a,b) (((a)<(b))?(a):(b))
#endif

#ifndef	MAX
#define MAX(a,b) (((a)>(b))?(a):(b))
#endif

#if defined(unix) && !defined(linux)
#define labs abs
#endif

#define ROUNDEDSHIFTDOWN(x, n) (((n) == 0) ? (x) : ((x) >> ((n) - 1)) >> 1)

#ifndef M_LN2
#define	M_LN2	0.69314718055994530942
#endif

#ifndef M_PI
#define M_PI	3.14159265358979323846
#endif

/* BUFSIZ must be a multiple of four to contain a whole number of words */
#ifdef BUFSIZ
#undef BUFSIZ
#endif

#define BUFSIZ 512

#define V2LPCQOFFSET (1 << LPCQUANT);

#define UINT_GET(nbit, shnfile) \
  ((version == 0) ? uvar_get(nbit, shnfile) : ulong_get(shnfile))

#define putc_exit(val, stream)\
{ char rval;\
  if((rval = putc((val), (stream))) != (char) (val))\
    complain("FATALERROR: write failed: putc returns EOF");\
}

extern int getc_exit_val;
#define getc_exit(stream)\
(((getc_exit_val = aud_vfs_getc(stream)) == EOF) ? \
  complain("FATALERROR: read failed: getc returns EOF"), 0: getc_exit_val)

/************************/
/* defined in shorten.c */
extern void	init_offset(slong**, int, int, int);
extern int	shorten(FILE*, FILE*, int, char**);

/**************************/
/* defined in Sulawalaw.c */
extern int Sulaw2lineartab[];
#define Sulaw2linear(i) (Sulaw2lineartab[i])
#ifndef Sulaw2linear
extern int	Sulaw2linear(uchar);
#endif
extern uchar	Slinear2ulaw(int);

extern int Salaw2lineartab[];
#define Salaw2linear(i) (Salaw2lineartab[i])
#ifndef Salaw2linear
extern int	Salaw2linear(uchar);
#endif
extern uchar	Slinear2alaw(int);

/**********************/
/* defined in fixio.c */
extern void	init_sizeof_sample(void);
extern void     fwrite_type_init(shn_file*);
extern void     fwrite_type(slong**,int,int,int,shn_file*);
extern void     fwrite_type_quit(shn_file*);
extern void	fix_bitshift(slong*, int, int, int);

/**********************/
/* defined in vario.c */
extern void	var_get_init(shn_file*);
extern slong	uvar_get(int, shn_file*);
extern slong	var_get(int, shn_file*);
extern ulong	ulong_get(shn_file*);
extern void	var_get_quit(shn_file*);

extern int	sizeof_uvar(ulong, int);
extern int	sizeof_var(slong, int);

extern void	mkmasktab(void);
extern ulong	word_get(shn_file*);

/**********************/
/* defined in array.c */
extern void* 	pmalloc(ulong, shn_file*);
extern slong**	long2d(ulong, ulong, shn_file*);

#endif