summaryrefslogtreecommitdiff
path: root/plugins/shn/shorten.h
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-06-20 20:29:25 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-06-20 20:29:25 +0200
commit7088867879c41de81e485f79f60cd2bb08d456d1 (patch)
tree41cbc372885a640681be3aa5551cef43718ea653 /plugins/shn/shorten.h
parent9300f16316eb33715193a0f9a916991a2b24ba9d (diff)
initial port of xmms-shorten plugin
no gapless playback, no configuration, no sample-accurate seeking
Diffstat (limited to 'plugins/shn/shorten.h')
-rw-r--r--plugins/shn/shorten.h222
1 files changed, 222 insertions, 0 deletions
diff --git a/plugins/shn/shorten.h b/plugins/shn/shorten.h
new file mode 100644
index 00000000..006b9bee
--- /dev/null
+++ b/plugins/shn/shorten.h
@@ -0,0 +1,222 @@
+/******************************************************************************
+* *
+* 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
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#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 = 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