1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
|
/******************************************************************************
* *
* 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
#undef uint
#define uint uint32_t
#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
|