ReactOS  0.4.14-dev-77-gd9e7c48
decode.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define OUT_FORMATS   4 /* Basic output formats: 16bit, 8bit, real and s32 */
 
#define OUT_16   0
 
#define OUT_8   1
 
#define OUT_REAL   2 /* Write a floating point sample (that is, one matching the internal real type). */
 
#define OUT_S32   3
 
#define NTOM_MAX   8 /* maximum allowed factor for upsampling */
 
#define NTOM_MAX_FREQ   96000 /* maximum frequency to upsample to / downsample from */
 
#define NTOM_MUL   (32768)
 

Functions

void ntom_set_ntom (mpg123_handle *fr, off_t num)
 
int synth_1to1 (real *, int, mpg123_handle *, int)
 
int synth_1to1_dither (real *, int, mpg123_handle *, int)
 
int synth_1to1_i386 (real *, int, mpg123_handle *, int)
 
int synth_1to1_i586 (real *, int, mpg123_handle *, int)
 
int synth_1to1_i586_dither (real *, int, mpg123_handle *, int)
 
int synth_1to1_mmx (real *, int, mpg123_handle *, int)
 
int synth_1to1_3dnow (real *, int, mpg123_handle *, int)
 
int synth_1to1_sse (real *, int, mpg123_handle *, int)
 
int synth_1to1_stereo_sse (real *, real *, mpg123_handle *)
 
int synth_1to1_3dnowext (real *, int, mpg123_handle *, int)
 
int synth_1to1_altivec (real *, int, mpg123_handle *, int)
 
int synth_1to1_stereo_altivec (real *, real *, mpg123_handle *)
 
int synth_1to1_x86_64 (real *, int, mpg123_handle *, int)
 
int synth_1to1_stereo_x86_64 (real *, real *, mpg123_handle *)
 
int synth_1to1_avx (real *, int, mpg123_handle *, int)
 
int synth_1to1_stereo_avx (real *, real *, mpg123_handle *)
 
int synth_1to1_arm (real *, int, mpg123_handle *, int)
 
int synth_1to1_neon (real *, int, mpg123_handle *, int)
 
int synth_1to1_stereo_neon (real *, real *, mpg123_handle *)
 
int synth_1to1_neon64 (real *, int, mpg123_handle *, int)
 
int synth_1to1_stereo_neon64 (real *, real *, mpg123_handle *)
 
int absynth_1to1_i486 (real *, int, mpg123_handle *, int)
 
int synth_1to1_mono (real *, mpg123_handle *)
 
int synth_1to1_m2s (real *, mpg123_handle *)
 
int synth_2to1 (real *, int, mpg123_handle *, int)
 
int synth_2to1_dither (real *, int, mpg123_handle *, int)
 
int synth_2to1_i386 (real *, int, mpg123_handle *, int)
 
int synth_2to1_mono (real *, mpg123_handle *)
 
int synth_2to1_m2s (real *, mpg123_handle *)
 
int synth_4to1 (real *, int, mpg123_handle *, int)
 
int synth_4to1_dither (real *, int, mpg123_handle *, int)
 
int synth_4to1_i386 (real *, int, mpg123_handle *, int)
 
int synth_4to1_mono (real *, mpg123_handle *)
 
int synth_4to1_m2s (real *, mpg123_handle *)
 
int synth_ntom (real *, int, mpg123_handle *, int)
 
int synth_ntom_mono (real *, mpg123_handle *)
 
int synth_ntom_m2s (real *, mpg123_handle *)
 
int synth_1to1_8bit (real *, int, mpg123_handle *, int)
 
int synth_1to1_8bit_i386 (real *, int, mpg123_handle *, int)
 
int synth_1to1_8bit_wrap (real *, int, mpg123_handle *, int)
 
int synth_1to1_8bit_mono (real *, mpg123_handle *)
 
int synth_1to1_8bit_m2s (real *, mpg123_handle *)
 
int synth_1to1_8bit_wrap_mono (real *, mpg123_handle *)
 
int synth_1to1_8bit_wrap_m2s (real *, mpg123_handle *)
 
int synth_2to1_8bit (real *, int, mpg123_handle *, int)
 
int synth_2to1_8bit_i386 (real *, int, mpg123_handle *, int)
 
int synth_2to1_8bit_mono (real *, mpg123_handle *)
 
int synth_2to1_8bit_m2s (real *, mpg123_handle *)
 
int synth_4to1_8bit (real *, int, mpg123_handle *, int)
 
int synth_4to1_8bit_i386 (real *, int, mpg123_handle *, int)
 
int synth_4to1_8bit_mono (real *, mpg123_handle *)
 
int synth_4to1_8bit_m2s (real *, mpg123_handle *)
 
int synth_ntom_8bit (real *, int, mpg123_handle *, int)
 
int synth_ntom_8bit_mono (real *, mpg123_handle *)
 
int synth_ntom_8bit_m2s (real *, mpg123_handle *)
 
int synth_1to1_real (real *, int, mpg123_handle *, int)
 
int synth_1to1_real_i386 (real *, int, mpg123_handle *, int)
 
int synth_1to1_real_sse (real *, int, mpg123_handle *, int)
 
int synth_1to1_real_stereo_sse (real *, real *, mpg123_handle *)
 
int synth_1to1_real_x86_64 (real *, int, mpg123_handle *, int)
 
int synth_1to1_real_stereo_x86_64 (real *, real *, mpg123_handle *)
 
int synth_1to1_real_avx (real *, int, mpg123_handle *, int)
 
int synth_1to1_fltst_avx (real *, real *, mpg123_handle *)
 
int synth_1to1_real_altivec (real *, int, mpg123_handle *, int)
 
int synth_1to1_fltst_altivec (real *, real *, mpg123_handle *)
 
int synth_1to1_real_neon (real *, int, mpg123_handle *, int)
 
int synth_1to1_real_stereo_neon (real *, real *, mpg123_handle *)
 
int synth_1to1_real_neon64 (real *, int, mpg123_handle *, int)
 
int synth_1to1_fltst_neon64 (real *, real *, mpg123_handle *)
 
int synth_1to1_real_mono (real *, mpg123_handle *)
 
int synth_1to1_real_m2s (real *, mpg123_handle *)
 
int synth_2to1_real (real *, int, mpg123_handle *, int)
 
int synth_2to1_real_i386 (real *, int, mpg123_handle *, int)
 
int synth_2to1_real_mono (real *, mpg123_handle *)
 
int synth_2to1_real_m2s (real *, mpg123_handle *)
 
int synth_4to1_real (real *, int, mpg123_handle *, int)
 
int synth_4to1_real_i386 (real *, int, mpg123_handle *, int)
 
int synth_4to1_real_mono (real *, mpg123_handle *)
 
int synth_4to1_real_m2s (real *, mpg123_handle *)
 
int synth_ntom_real (real *, int, mpg123_handle *, int)
 
int synth_ntom_real_mono (real *, mpg123_handle *)
 
int synth_ntom_real_m2s (real *, mpg123_handle *)
 
int synth_1to1_s32 (real *, int, mpg123_handle *, int)
 
int synth_1to1_s32_i386 (real *, int, mpg123_handle *, int)
 
int synth_1to1_s32_sse (real *, int, mpg123_handle *, int)
 
int synth_1to1_s32_stereo_sse (real *, real *, mpg123_handle *)
 
int synth_1to1_s32_x86_64 (real *, int, mpg123_handle *, int)
 
int synth_1to1_s32_stereo_x86_64 (real *, real *, mpg123_handle *)
 
int synth_1to1_s32_avx (real *, int, mpg123_handle *, int)
 
int synth_1to1_s32_stereo_avx (real *, real *, mpg123_handle *)
 
int synth_1to1_s32_altivec (real *, int, mpg123_handle *, int)
 
int synth_1to1_s32_stereo_altivec (real *, real *, mpg123_handle *)
 
int synth_1to1_s32_neon (real *, int, mpg123_handle *, int)
 
int synth_1to1_s32_stereo_neon (real *, real *, mpg123_handle *)
 
int synth_1to1_s32_neon64 (real *, int, mpg123_handle *, int)
 
int synth_1to1_s32st_neon64 (real *, real *, mpg123_handle *)
 
int synth_1to1_s32_mono (real *, mpg123_handle *)
 
int synth_1to1_s32_m2s (real *, mpg123_handle *)
 
int synth_2to1_s32 (real *, int, mpg123_handle *, int)
 
int synth_2to1_s32_i386 (real *, int, mpg123_handle *, int)
 
int synth_2to1_s32_mono (real *, mpg123_handle *)
 
int synth_2to1_s32_m2s (real *, mpg123_handle *)
 
int synth_4to1_s32 (real *, int, mpg123_handle *, int)
 
int synth_4to1_s32_i386 (real *, int, mpg123_handle *, int)
 
int synth_4to1_s32_mono (real *, mpg123_handle *)
 
int synth_4to1_s32_m2s (real *, mpg123_handle *)
 
int synth_ntom_s32 (real *, int, mpg123_handle *, int)
 
int synth_ntom_s32_mono (real *, mpg123_handle *)
 
int synth_ntom_s32_m2s (real *, mpg123_handle *)
 
void dct64 (real *, real *, real *)
 
void dct64_i386 (real *, real *, real *)
 
void dct64_altivec (real *, real *, real *)
 
void dct64_i486 (int *, int *, real *)
 
void dct36 (real *, real *, real *, real *, real *)
 
void dct36_3dnow (real *, real *, real *, real *, real *)
 
void dct36_3dnowext (real *, real *, real *, real *, real *)
 
void dct36_x86_64 (real *, real *, real *, real *, real *)
 
void dct36_sse (real *, real *, real *, real *, real *)
 
void dct36_avx (real *, real *, real *, real *, real *)
 
void dct36_neon (real *, real *, real *, real *, real *)
 
void dct36_neon64 (real *, real *, real *, real *, real *)
 
int synth_ntom_set_step (mpg123_handle *fr)
 
unsigned long ntom_val (mpg123_handle *fr, off_t frame)
 
off_t ntom_frame_outsamples (mpg123_handle *fr)
 
off_t ntom_frmouts (mpg123_handle *fr, off_t frame)
 
off_t ntom_ins2outs (mpg123_handle *fr, off_t ins)
 
off_t ntom_frameoff (mpg123_handle *fr, off_t soff)
 
void init_layer3 (void)
 
real init_layer3_gainpow2 (mpg123_handle *fr, int i)
 
void init_layer3_stuff (mpg123_handle *fr, real(*gainpow2)(mpg123_handle *fr, int i))
 
void init_layer12 (void)
 
realinit_layer12_table (mpg123_handle *fr, real *table, int m)
 
void init_layer12_stuff (mpg123_handle *fr, real *(*init_table)(mpg123_handle *fr, real *table, int m))
 
void prepare_decode_tables (void)
 
void make_decode_tables (mpg123_handle *fr)
 
int make_conv16to8_table (mpg123_handle *fr)
 
int do_layer3 (mpg123_handle *fr)
 
int do_layer2 (mpg123_handle *fr)
 
int do_layer1 (mpg123_handle *fr)
 
void do_equalizer (real *bandPtr, int channel, real equalizer[2][32])
 

Variables

realpnts [5]
 

Macro Definition Documentation

◆ NTOM_MAX

#define NTOM_MAX   8 /* maximum allowed factor for upsampling */

Definition at line 30 of file decode.h.

◆ NTOM_MAX_FREQ

#define NTOM_MAX_FREQ   96000 /* maximum frequency to upsample to / downsample from */

Definition at line 31 of file decode.h.

◆ NTOM_MUL

#define NTOM_MUL   (32768)

Definition at line 32 of file decode.h.

◆ OUT_16

#define OUT_16   0

Definition at line 21 of file decode.h.

◆ OUT_8

#define OUT_8   1

Definition at line 22 of file decode.h.

◆ OUT_FORMATS

#define OUT_FORMATS   4 /* Basic output formats: 16bit, 8bit, real and s32 */

Definition at line 16 of file decode.h.

◆ OUT_REAL

#define OUT_REAL   2 /* Write a floating point sample (that is, one matching the internal real type). */

Definition at line 24 of file decode.h.

◆ OUT_S32

#define OUT_S32   3

Definition at line 25 of file decode.h.

Function Documentation

◆ absynth_1to1_i486()

int absynth_1to1_i486 ( real ,
int  ,
mpg123_handle ,
int   
)

Definition at line 108 of file synth_i486.c.

109 {
110  short *samples = (short *) (fr->buffer.data+fr->buffer.fill);
111  int *b0,**buf;
112  int clip = 0;
113  int block,b,bo_start;
114 
115  /* samples address */
116  samples+=channel;
117 
118  bo_start=fr->i486bo[channel];
119  buf = fr->int_buffs[channel];
120 
121  b=bo_start;
122  for(block=0;block<nb_blocks;block++) {
123 
124  /* FIR offset */
125  b++;
126  if (b >= FIR_BUFFER_SIZE) {
127  int *p,*q;
128  int c,i,j;
129 
130  /* we shift the buffers */
131  for(c=0;c<2;c++) {
132  p=&buf[c][0]+1;
133  q=p+(FIR_BUFFER_SIZE-FIR_SIZE);
134  for(i=0;i<17;i++) {
135  for(j=0;j<FIR_SIZE-1;j++) p[j]=q[j];
136  p+=FIR_BUFFER_SIZE;
137  q+=FIR_BUFFER_SIZE;
138  }
139  }
140  /* we update 'bo' accordingly */
141  b=fr->i486bo[channel]=FIR_SIZE;
142  }
143 
144  if(b & 1) {
145  dct64_i486(buf[1]+b,buf[0]+b,bandPtr);
146  } else {
147  dct64_i486(buf[0]+b,buf[1]+b,bandPtr);
148  }
149  bandPtr+=32;
150  }
151  fr->i486bo[channel]=b;
152 
153  /* filter bank: part 1 */
154  b=bo_start;
155  for(block=0;block<nb_blocks;block++) {
156  b++;
157  if (b >= FIR_BUFFER_SIZE) b=FIR_SIZE;
158  if(b & 1) {
159  b0 = buf[0] + b - (FIR_SIZE-1);
160  } else {
161  b0 = buf[1] + b - (FIR_SIZE-1);
162  }
163 
164  FIR16_1(0,-7,53,-114,509,-1288,1643,-9372,18759,9372,1643,1288,509,114,53,7,0);
165  FIR16_2(1,-6,52,-100,515,-1197,1783,-8910,18748,9834,1489,1379,500,129,54,7,0,
166  31,0,-7,54,-129,500,-1379,1489,-9834,18748,8910,1783,1197,515,100,52,6);
167  FIR16_2(2,-6,50,-86,520,-1106,1910,-8447,18714,10294,1322,1469,488,145,55,8,0,
168  30,0,-8,55,-145,488,-1469,1322,-10294,18714,8447,1910,1106,520,86,50,6);
169  FIR16_2(3,-5,49,-73,521,-1015,2023,-7986,18657,10751,1140,1559,473,161,56,9,0,
170  29,0,-9,56,-161,473,-1559,1140,-10751,18657,7986,2023,1015,521,73,49,5);
171  samples+=64;
172  }
173  samples-=64*nb_blocks;
174 
175  /* filter bank: part 2 */
176 
177  b=bo_start;
178  for(block=0;block<nb_blocks;block++) {
179  b++;
180  if (b >= FIR_BUFFER_SIZE) b=FIR_SIZE;
181  if(b & 1) {
182  b0 = buf[0] + b - (FIR_SIZE-1) + 4*FIR_BUFFER_SIZE;
183  } else {
184  b0 = buf[1] + b - (FIR_SIZE-1) + 4*FIR_BUFFER_SIZE;
185  }
186 
187  FIR16_2(4,-4,47,-61,521,-926,2123,-7528,18578,11205,944,1647,455,177,56,10,0,
188  28,0,-10,56,-177,455,-1647,944,-11205,18578,7528,2123,926,521,61,47,4);
189  FIR16_2(5,-4,45,-49,518,-837,2210,-7072,18477,11654,733,1733,434,194,57,11,0,
190  27,0,-11,57,-194,434,-1733,733,-11654,18477,7072,2210,837,518,49,45,4);
191  FIR16_2(6,-4,44,-38,514,-751,2284,-6620,18353,12097,509,1817,411,212,57,12,0,
192  26,0,-12,57,-212,411,-1817,509,-12097,18353,6620,2284,751,514,38,44,4);
193  FIR16_2(7,-3,42,-27,508,-665,2347,-6173,18208,12534,270,1899,383,229,56,13,0,
194  25,0,-13,56,-229,383,-1899,270,-12534,18208,6173,2347,665,508,27,42,3);
195 
196  samples+=64;
197  }
198  samples-=64*nb_blocks;
199 
200  /* filter bank: part 3 */
201 
202  b=bo_start;
203  for(block=0;block<nb_blocks;block++) {
204  b++;
205  if (b >= FIR_BUFFER_SIZE) b=FIR_SIZE;
206  if(b & 1) {
207  b0 = buf[0] + b - (FIR_SIZE-1) + 8*FIR_BUFFER_SIZE;
208  } else {
209  b0 = buf[1] + b - (FIR_SIZE-1) + 8*FIR_BUFFER_SIZE;
210  }
211 
212  FIR16_2(8,-3,40,-18,500,-582,2398,-5732,18042,12963,17,1977,353,247,56,14,0,
213  24,0,-14,56,-247,353,-1977,17,-12963,18042,5732,2398,582,500,18,40,3);
214  FIR16_2(9,-2,38,-9,490,-501,2437,-5297,17855,13383,-249,2052,320,266,55,15,0,
215  23,0,-15,55,-266,320,-2052,-249,-13383,17855,5297,2437,501,490,9,38,2);
216  FIR16_2(10,-2,36,0,479,-423,2465,-4869,17647,13794,-530,2122,282,284,53,17,0,
217  22,0,-17,53,-284,282,-2122,-530,-13794,17647,4869,2465,423,479,0,36,2);
218  FIR16_2(11,-2,34,7,467,-347,2483,-4449,17419,14194,-825,2188,242,302,52,18,0,
219  21,0,-18,52,-302,242,-2188,-825,-14194,17419,4449,2483,347,467,-7,34,2);
220 
221  samples+=64;
222  }
223  samples-=64*nb_blocks;
224 
225  /* filter bank: part 4 */
226 
227  b=bo_start;
228  for(block=0;block<nb_blocks;block++) {
229  b++;
230  if (b >= FIR_BUFFER_SIZE) b=FIR_SIZE;
231  if(b & 1) {
232  b0 = buf[0] + b - (FIR_SIZE-1) + 12*FIR_BUFFER_SIZE;
233  } else {
234  b0 = buf[1] + b - (FIR_SIZE-1) + 12*FIR_BUFFER_SIZE;
235  }
236 
237  FIR16_2(12,-2,33,14,454,-273,2491,-4038,17173,14583,-1133,2249,198,320,50,19,0,
238  20,0,-19,50,-320,198,-2249,-1133,-14583,17173,4038,2491,273,454,-14,33,2);
239  FIR16_2(13,-1,31,20,439,-203,2489,-3637,16907,14959,-1454,2304,151,339,47,21,-1,
240  19,-1,-21,47,-339,151,-2304,-1454,-14959,16907,3637,2489,203,439,-20,31,1);
241  FIR16_2(14,-1,29,26,424,-136,2479,-3245,16623,15322,-1788,2354,100,357,44,22,-1,
242  18,-1,-22,44,-357,100,-2354,-1788,-15322,16623,3245,2479,136,424,-26,29,1);
243  FIR16_2(15,-1,27,31,408,-72,2459,-2863,16322,15671,-2135,2396,46,374,40,24,-1,
244  17,-1,-24,40,-374,46,-2396,-2135,-15671,16322,2863,2459,72,408,-31,27,1);
245  FIR16_1(16,-1,0,36,0,-11,0,-2493,0,16004,0,2431,0,391,0,26,0);
246 
247  samples+=64;
248  }
249 
250  return clip;
251 }
static unsigned int block
Definition: xmlmemory.c:118
GLsizei samples
Definition: glext.h:7006
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define FIR16_2(pos1, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, pos2, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15)
Definition: synth_i486.c:41
#define b
Definition: ke_i.h:79
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
const GLubyte * c
Definition: glext.h:8905
#define FIR16_1(pos, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15)
Definition: synth_i486.c:27
GLdouble GLdouble GLdouble GLdouble q
Definition: gl.h:2063
#define dct64_i486
Definition: intsym.h:134
#define c
Definition: ke_i.h:80
GLfloat GLfloat p
Definition: glext.h:8902

◆ dct36()

void dct36 ( real ,
real ,
real ,
real ,
real  
)

Definition at line 1504 of file layer3.c.

1505 {
1506 #ifdef NEW_DCT9
1507  real tmp[18];
1508 #endif
1509 
1510  {
1511  register real *in = inbuf;
1512 
1513  in[17]+=in[16]; in[16]+=in[15]; in[15]+=in[14];
1514  in[14]+=in[13]; in[13]+=in[12]; in[12]+=in[11];
1515  in[11]+=in[10]; in[10]+=in[9]; in[9] +=in[8];
1516  in[8] +=in[7]; in[7] +=in[6]; in[6] +=in[5];
1517  in[5] +=in[4]; in[4] +=in[3]; in[3] +=in[2];
1518  in[2] +=in[1]; in[1] +=in[0];
1519 
1520  in[17]+=in[15]; in[15]+=in[13]; in[13]+=in[11]; in[11]+=in[9];
1521  in[9] +=in[7]; in[7] +=in[5]; in[5] +=in[3]; in[3] +=in[1];
1522 
1523 
1524 #ifdef NEW_DCT9
1525 #if 1
1526  {
1527  real t3;
1528  {
1529  real t0, t1, t2;
1530 
1531  t0 = REAL_MUL(COS6_2, (in[8] + in[16] - in[4]));
1532  t1 = REAL_MUL(COS6_2, in[12]);
1533 
1534  t3 = in[0];
1535  t2 = t3 - t1 - t1;
1536  tmp[1] = tmp[7] = t2 - t0;
1537  tmp[4] = t2 + t0 + t0;
1538  t3 += t1;
1539 
1540  t2 = REAL_MUL(COS6_1, (in[10] + in[14] - in[2]));
1541  tmp[1] -= t2;
1542  tmp[7] += t2;
1543  }
1544  {
1545  real t0, t1, t2;
1546 
1547  t0 = REAL_MUL(cos9[0], (in[4] + in[8] ));
1548  t1 = REAL_MUL(cos9[1], (in[8] - in[16]));
1549  t2 = REAL_MUL(cos9[2], (in[4] + in[16]));
1550 
1551  tmp[2] = tmp[6] = t3 - t0 - t2;
1552  tmp[0] = tmp[8] = t3 + t0 + t1;
1553  tmp[3] = tmp[5] = t3 - t1 + t2;
1554  }
1555  }
1556  {
1557  real t1, t2, t3;
1558 
1559  t1 = REAL_MUL(cos18[0], (in[2] + in[10]));
1560  t2 = REAL_MUL(cos18[1], (in[10] - in[14]));
1561  t3 = REAL_MUL(COS6_1, in[6]);
1562 
1563  {
1564  real t0 = t1 + t2 + t3;
1565  tmp[0] += t0;
1566  tmp[8] -= t0;
1567  }
1568 
1569  t2 -= t3;
1570  t1 -= t3;
1571 
1572  t3 = REAL_MUL(cos18[2], (in[2] + in[14]));
1573 
1574  t1 += t3;
1575  tmp[3] += t1;
1576  tmp[5] -= t1;
1577 
1578  t2 -= t3;
1579  tmp[2] += t2;
1580  tmp[6] -= t2;
1581  }
1582 
1583 #else
1584  {
1585  real t0, t1, t2, t3, t4, t5, t6, t7;
1586 
1587  t1 = REAL_MUL(COS6_2, in[12]);
1588  t2 = REAL_MUL(COS6_2, (in[8] + in[16] - in[4]));
1589 
1590  t3 = in[0] + t1;
1591  t4 = in[0] - t1 - t1;
1592  t5 = t4 - t2;
1593  tmp[4] = t4 + t2 + t2;
1594 
1595  t0 = REAL_MUL(cos9[0], (in[4] + in[8]));
1596  t1 = REAL_MUL(cos9[1], (in[8] - in[16]));
1597 
1598  t2 = REAL_MUL(cos9[2], (in[4] + in[16]));
1599 
1600  t6 = t3 - t0 - t2;
1601  t0 += t3 + t1;
1602  t3 += t2 - t1;
1603 
1604  t2 = REAL_MUL(cos18[0], (in[2] + in[10]));
1605  t4 = REAL_MUL(cos18[1], (in[10] - in[14]));
1606  t7 = REAL_MUL(COS6_1, in[6]);
1607 
1608  t1 = t2 + t4 + t7;
1609  tmp[0] = t0 + t1;
1610  tmp[8] = t0 - t1;
1611  t1 = REAL_MUL(cos18[2], (in[2] + in[14]));
1612  t2 += t1 - t7;
1613 
1614  tmp[3] = t3 + t2;
1615  t0 = REAL_MUL(COS6_1, (in[10] + in[14] - in[2]));
1616  tmp[5] = t3 - t2;
1617 
1618  t4 -= t1 + t7;
1619 
1620  tmp[1] = t5 - t0;
1621  tmp[7] = t5 + t0;
1622  tmp[2] = t6 + t4;
1623  tmp[6] = t6 - t4;
1624  }
1625 #endif
1626 
1627  {
1628  real t0, t1, t2, t3, t4, t5, t6, t7;
1629 
1630  t1 = REAL_MUL(COS6_2, in[13]);
1631  t2 = REAL_MUL(COS6_2, (in[9] + in[17] - in[5]));
1632 
1633  t3 = in[1] + t1;
1634  t4 = in[1] - t1 - t1;
1635  t5 = t4 - t2;
1636 
1637  t0 = REAL_MUL(cos9[0], (in[5] + in[9]));
1638  t1 = REAL_MUL(cos9[1], (in[9] - in[17]));
1639 
1640  tmp[13] = REAL_MUL((t4 + t2 + t2), tfcos36[17-13]);
1641  t2 = REAL_MUL(cos9[2], (in[5] + in[17]));
1642 
1643  t6 = t3 - t0 - t2;
1644  t0 += t3 + t1;
1645  t3 += t2 - t1;
1646 
1647  t2 = REAL_MUL(cos18[0], (in[3] + in[11]));
1648  t4 = REAL_MUL(cos18[1], (in[11] - in[15]));
1649  t7 = REAL_MUL(COS6_1, in[7]);
1650 
1651  t1 = t2 + t4 + t7;
1652  tmp[17] = REAL_MUL((t0 + t1), tfcos36[17-17]);
1653  tmp[9] = REAL_MUL((t0 - t1), tfcos36[17-9]);
1654  t1 = REAL_MUL(cos18[2], (in[3] + in[15]));
1655  t2 += t1 - t7;
1656 
1657  tmp[14] = REAL_MUL((t3 + t2), tfcos36[17-14]);
1658  t0 = REAL_MUL(COS6_1, (in[11] + in[15] - in[3]));
1659  tmp[12] = REAL_MUL((t3 - t2), tfcos36[17-12]);
1660 
1661  t4 -= t1 + t7;
1662 
1663  tmp[16] = REAL_MUL((t5 - t0), tfcos36[17-16]);
1664  tmp[10] = REAL_MUL((t5 + t0), tfcos36[17-10]);
1665  tmp[15] = REAL_MUL((t6 + t4), tfcos36[17-15]);
1666  tmp[11] = REAL_MUL((t6 - t4), tfcos36[17-11]);
1667  }
1668 
1669 #define MACRO(v) { \
1670  real tmpval; \
1671  tmpval = tmp[(v)] + tmp[17-(v)]; \
1672  out2[9+(v)] = REAL_MUL(tmpval, w[27+(v)]); \
1673  out2[8-(v)] = REAL_MUL(tmpval, w[26-(v)]); \
1674  tmpval = tmp[(v)] - tmp[17-(v)]; \
1675  ts[SBLIMIT*(8-(v))] = out1[8-(v)] + REAL_MUL(tmpval, w[8-(v)]); \
1676  ts[SBLIMIT*(9+(v))] = out1[9+(v)] + REAL_MUL(tmpval, w[9+(v)]); }
1677 
1678  {
1679  register real *out2 = o2;
1680  register real *w = wintab;
1681  register real *out1 = o1;
1682  register real *ts = tsbuf;
1683 
1684  MACRO(0);
1685  MACRO(1);
1686  MACRO(2);
1687  MACRO(3);
1688  MACRO(4);
1689  MACRO(5);
1690  MACRO(6);
1691  MACRO(7);
1692  MACRO(8);
1693  }
1694 
1695 #else
1696 
1697  {
1698 
1699 #define MACRO0(v) { \
1700  real tmp; \
1701  out2[9+(v)] = REAL_MUL((tmp = sum0 + sum1), w[27+(v)]); \
1702  out2[8-(v)] = REAL_MUL(tmp, w[26-(v)]); } \
1703  sum0 -= sum1; \
1704  ts[SBLIMIT*(8-(v))] = out1[8-(v)] + REAL_MUL(sum0, w[8-(v)]); \
1705  ts[SBLIMIT*(9+(v))] = out1[9+(v)] + REAL_MUL(sum0, w[9+(v)]);
1706 #define MACRO1(v) { \
1707  real sum0,sum1; \
1708  sum0 = tmp1a + tmp2a; \
1709  sum1 = REAL_MUL((tmp1b + tmp2b), tfcos36[(v)]); \
1710  MACRO0(v); }
1711 #define MACRO2(v) { \
1712  real sum0,sum1; \
1713  sum0 = tmp2a - tmp1a; \
1714  sum1 = REAL_MUL((tmp2b - tmp1b), tfcos36[(v)]); \
1715  MACRO0(v); }
1716 
1717  register const real *c = COS9;
1718  register real *out2 = o2;
1719  register real *w = wintab;
1720  register real *out1 = o1;
1721  register real *ts = tsbuf;
1722 
1723  real ta33,ta66,tb33,tb66;
1724 
1725  ta33 = REAL_MUL(in[2*3+0], c[3]);
1726  ta66 = REAL_MUL(in[2*6+0], c[6]);
1727  tb33 = REAL_MUL(in[2*3+1], c[3]);
1728  tb66 = REAL_MUL(in[2*6+1], c[6]);
1729 
1730  {
1731  real tmp1a,tmp2a,tmp1b,tmp2b;
1732  tmp1a = REAL_MUL(in[2*1+0], c[1]) + ta33 + REAL_MUL(in[2*5+0], c[5]) + REAL_MUL(in[2*7+0], c[7]);
1733  tmp1b = REAL_MUL(in[2*1+1], c[1]) + tb33 + REAL_MUL(in[2*5+1], c[5]) + REAL_MUL(in[2*7+1], c[7]);
1734  tmp2a = REAL_MUL(in[2*2+0], c[2]) + REAL_MUL(in[2*4+0], c[4]) + ta66 + REAL_MUL(in[2*8+0], c[8]);
1735  tmp2b = REAL_MUL(in[2*2+1], c[2]) + REAL_MUL(in[2*4+1], c[4]) + tb66 + REAL_MUL(in[2*8+1], c[8]);
1736 
1737  MACRO1(0);
1738  MACRO2(8);
1739  }
1740 
1741  {
1742  real tmp1a,tmp2a,tmp1b,tmp2b;
1743  tmp1a = REAL_MUL(( in[2*1+0] - in[2*5+0] - in[2*7+0] ), c[3]);
1744  tmp1b = REAL_MUL(( in[2*1+1] - in[2*5+1] - in[2*7+1] ), c[3]);
1745  tmp2a = REAL_MUL(( in[2*2+0] - in[2*4+0] - in[2*8+0] ), c[6]) - in[2*6+0] + in[2*0+0];
1746  tmp2b = REAL_MUL(( in[2*2+1] - in[2*4+1] - in[2*8+1] ), c[6]) - in[2*6+1] + in[2*0+1];
1747 
1748  MACRO1(1);
1749  MACRO2(7);
1750  }
1751 
1752  {
1753  real tmp1a,tmp2a,tmp1b,tmp2b;
1754  tmp1a = REAL_MUL(in[2*1+0], c[5]) - ta33 - REAL_MUL(in[2*5+0], c[7]) + REAL_MUL(in[2*7+0], c[1]);
1755  tmp1b = REAL_MUL(in[2*1+1], c[5]) - tb33 - REAL_MUL(in[2*5+1], c[7]) + REAL_MUL(in[2*7+1], c[1]);
1756  tmp2a = - REAL_MUL(in[2*2+0], c[8]) - REAL_MUL(in[2*4+0], c[2]) + ta66 + REAL_MUL(in[2*8+0], c[4]);
1757  tmp2b = - REAL_MUL(in[2*2+1], c[8]) - REAL_MUL(in[2*4+1], c[2]) + tb66 + REAL_MUL(in[2*8+1], c[4]);
1758 
1759  MACRO1(2);
1760  MACRO2(6);
1761  }
1762 
1763  {
1764  real tmp1a,tmp2a,tmp1b,tmp2b;
1765  tmp1a = REAL_MUL(in[2*1+0], c[7]) - ta33 + REAL_MUL(in[2*5+0], c[1]) - REAL_MUL(in[2*7+0], c[5]);
1766  tmp1b = REAL_MUL(in[2*1+1], c[7]) - tb33 + REAL_MUL(in[2*5+1], c[1]) - REAL_MUL(in[2*7+1], c[5]);
1767  tmp2a = - REAL_MUL(in[2*2+0], c[4]) + REAL_MUL(in[2*4+0], c[8]) + ta66 - REAL_MUL(in[2*8+0], c[2]);
1768  tmp2b = - REAL_MUL(in[2*2+1], c[4]) + REAL_MUL(in[2*4+1], c[8]) + tb66 - REAL_MUL(in[2*8+1], c[2]);
1769 
1770  MACRO1(3);
1771  MACRO2(5);
1772  }
1773 
1774  {
1775  real sum0,sum1;
1776  sum0 = in[2*0+0] - in[2*2+0] + in[2*4+0] - in[2*6+0] + in[2*8+0];
1777  sum1 = REAL_MUL((in[2*0+1] - in[2*2+1] + in[2*4+1] - in[2*6+1] + in[2*8+1] ), tfcos36[4]);
1778  MACRO0(4);
1779  }
1780  }
1781 #endif
1782 
1783  }
1784 }
#define MACRO(v)
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
#define REAL_MUL(x, y)
static real COS6_1
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
static real COS6_2
static const char * ts(int t)
const GLubyte * c
Definition: glext.h:8905
uchar inbuf[M_BLOCK]
Definition: unzcrash.c:40
real tfcos36[9]
GLuint in
Definition: glext.h:9616
real COS9[9]

◆ dct36_3dnow()

void dct36_3dnow ( real ,
real ,
real ,
real ,
real  
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ dct36_3dnowext()

void dct36_3dnowext ( real ,
real ,
real ,
real ,
real  
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ dct36_avx()

void dct36_avx ( real ,
real ,
real ,
real ,
real  
)

Referenced by frame_cpu_opt().

◆ dct36_neon()

void dct36_neon ( real ,
real ,
real ,
real ,
real  
)

Referenced by frame_cpu_opt().

◆ dct36_neon64()

void dct36_neon64 ( real ,
real ,
real ,
real ,
real  
)

Referenced by frame_cpu_opt().

◆ dct36_sse()

void dct36_sse ( real ,
real ,
real ,
real ,
real  
)

Referenced by frame_cpu_opt().

◆ dct36_x86_64()

void dct36_x86_64 ( real ,
real ,
real ,
real ,
real  
)

Referenced by frame_cpu_opt().

◆ dct64()

void dct64 ( real ,
real ,
real  
)

Definition at line 22 of file dct64.c.

23 {
24  real bufs[64];
25 
26  {
27  register int i,j;
28  register real *b1,*b2,*bs,*costab;
29 
30  b1 = samples;
31  bs = bufs;
32  costab = pnts[0]+16;
33  b2 = b1 + 32;
34 
35  for(i=15;i>=0;i--)
36  *bs++ = (*b1++ + *--b2);
37  for(i=15;i>=0;i--)
38  *bs++ = REAL_MUL((*--b2 - *b1++), *--costab);
39 
40  b1 = bufs;
41  costab = pnts[1]+8;
42  b2 = b1 + 16;
43 
44  {
45  for(i=7;i>=0;i--)
46  *bs++ = (*b1++ + *--b2);
47  for(i=7;i>=0;i--)
48  *bs++ = REAL_MUL((*--b2 - *b1++), *--costab);
49  b2 += 32;
50  costab += 8;
51  for(i=7;i>=0;i--)
52  *bs++ = (*b1++ + *--b2);
53  for(i=7;i>=0;i--)
54  *bs++ = REAL_MUL((*b1++ - *--b2), *--costab);
55  b2 += 32;
56  }
57 
58  bs = bufs;
59  costab = pnts[2];
60  b2 = b1 + 8;
61 
62  for(j=2;j;j--)
63  {
64  for(i=3;i>=0;i--)
65  *bs++ = (*b1++ + *--b2);
66  for(i=3;i>=0;i--)
67  *bs++ = REAL_MUL((*--b2 - *b1++), costab[i]);
68  b2 += 16;
69  for(i=3;i>=0;i--)
70  *bs++ = (*b1++ + *--b2);
71  for(i=3;i>=0;i--)
72  *bs++ = REAL_MUL((*b1++ - *--b2), costab[i]);
73  b2 += 16;
74  }
75 
76  b1 = bufs;
77  costab = pnts[3];
78  b2 = b1 + 4;
79 
80  for(j=4;j;j--)
81  {
82  *bs++ = (*b1++ + *--b2);
83  *bs++ = (*b1++ + *--b2);
84  *bs++ = REAL_MUL((*--b2 - *b1++), costab[1]);
85  *bs++ = REAL_MUL((*--b2 - *b1++), costab[0]);
86  b2 += 8;
87  *bs++ = (*b1++ + *--b2);
88  *bs++ = (*b1++ + *--b2);
89  *bs++ = REAL_MUL((*b1++ - *--b2), costab[1]);
90  *bs++ = REAL_MUL((*b1++ - *--b2), costab[0]);
91  b2 += 8;
92  }
93  bs = bufs;
94  costab = pnts[4];
95 
96  for(j=8;j;j--)
97  {
98  real v0,v1;
99  v0=*b1++; v1 = *b1++;
100  *bs++ = (v0 + v1);
101  *bs++ = REAL_MUL((v0 - v1), (*costab));
102  v0=*b1++; v1 = *b1++;
103  *bs++ = (v0 + v1);
104  *bs++ = REAL_MUL((v1 - v0), (*costab));
105  }
106 
107  }
108 
109 
110  {
111  register real *b1;
112  register int i;
113 
114  for(b1=bufs,i=8;i;i--,b1+=4)
115  b1[2] += b1[3];
116 
117  for(b1=bufs,i=4;i;i--,b1+=8)
118  {
119  b1[4] += b1[6];
120  b1[6] += b1[5];
121  b1[5] += b1[7];
122  }
123 
124  for(b1=bufs,i=2;i;i--,b1+=16)
125  {
126  b1[8] += b1[12];
127  b1[12] += b1[10];
128  b1[10] += b1[14];
129  b1[14] += b1[9];
130  b1[9] += b1[13];
131  b1[13] += b1[11];
132  b1[11] += b1[15];
133  }
134  }
135 
136 
137  out0[0x10*16] = REAL_SCALE_DCT64(bufs[0]);
138  out0[0x10*15] = REAL_SCALE_DCT64(bufs[16+0] + bufs[16+8]);
139  out0[0x10*14] = REAL_SCALE_DCT64(bufs[8]);
140  out0[0x10*13] = REAL_SCALE_DCT64(bufs[16+8] + bufs[16+4]);
141  out0[0x10*12] = REAL_SCALE_DCT64(bufs[4]);
142  out0[0x10*11] = REAL_SCALE_DCT64(bufs[16+4] + bufs[16+12]);
143  out0[0x10*10] = REAL_SCALE_DCT64(bufs[12]);
144  out0[0x10* 9] = REAL_SCALE_DCT64(bufs[16+12] + bufs[16+2]);
145  out0[0x10* 8] = REAL_SCALE_DCT64(bufs[2]);
146  out0[0x10* 7] = REAL_SCALE_DCT64(bufs[16+2] + bufs[16+10]);
147  out0[0x10* 6] = REAL_SCALE_DCT64(bufs[10]);
148  out0[0x10* 5] = REAL_SCALE_DCT64(bufs[16+10] + bufs[16+6]);
149  out0[0x10* 4] = REAL_SCALE_DCT64(bufs[6]);
150  out0[0x10* 3] = REAL_SCALE_DCT64(bufs[16+6] + bufs[16+14]);
151  out0[0x10* 2] = REAL_SCALE_DCT64(bufs[14]);
152  out0[0x10* 1] = REAL_SCALE_DCT64(bufs[16+14] + bufs[16+1]);
153  out0[0x10* 0] = REAL_SCALE_DCT64(bufs[1]);
154 
155  out1[0x10* 0] = REAL_SCALE_DCT64(bufs[1]);
156  out1[0x10* 1] = REAL_SCALE_DCT64(bufs[16+1] + bufs[16+9]);
157  out1[0x10* 2] = REAL_SCALE_DCT64(bufs[9]);
158  out1[0x10* 3] = REAL_SCALE_DCT64(bufs[16+9] + bufs[16+5]);
159  out1[0x10* 4] = REAL_SCALE_DCT64(bufs[5]);
160  out1[0x10* 5] = REAL_SCALE_DCT64(bufs[16+5] + bufs[16+13]);
161  out1[0x10* 6] = REAL_SCALE_DCT64(bufs[13]);
162  out1[0x10* 7] = REAL_SCALE_DCT64(bufs[16+13] + bufs[16+3]);
163  out1[0x10* 8] = REAL_SCALE_DCT64(bufs[3]);
164  out1[0x10* 9] = REAL_SCALE_DCT64(bufs[16+3] + bufs[16+11]);
165  out1[0x10*10] = REAL_SCALE_DCT64(bufs[11]);
166  out1[0x10*11] = REAL_SCALE_DCT64(bufs[16+11] + bufs[16+7]);
167  out1[0x10*12] = REAL_SCALE_DCT64(bufs[7]);
168  out1[0x10*13] = REAL_SCALE_DCT64(bufs[16+7] + bufs[16+15]);
169  out1[0x10*14] = REAL_SCALE_DCT64(bufs[15]);
170  out1[0x10*15] = REAL_SCALE_DCT64(bufs[16+15]);
171 
172 }
#define REAL_SCALE_DCT64(x)
GLsizei samples
Definition: glext.h:7006
#define REAL_MUL(x, y)
const GLenum * bufs
Definition: glext.h:6026
GLfloat v0
Definition: glext.h:6061
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
#define pnts
Definition: intsym.h:8
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static CRYPT_DATA_BLOB b1[]
Definition: msg.c:573
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
static CRYPT_DATA_BLOB b2[]
Definition: msg.c:582
static struct msdos_boot_sector bs
Definition: mkdosfs.c:539
GLfloat GLfloat v1
Definition: glext.h:6062

◆ dct64_altivec()

void dct64_altivec ( real ,
real ,
real  
)

Definition at line 27 of file dct64_altivec.c.

28 {
29  ALIGNED(16) real bufs[32];
30 
31  {
32  register real *b1,*costab;
33 
34  vector unsigned char vinvert,vperm1,vperm2,vperm3,vperm4;
35  vector float v1,v2,v3,v4,v5,v6,v7,v8;
36  vector float vbs1,vbs2,vbs3,vbs4,vbs5,vbs6,vbs7,vbs8;
37  vector float vbs9,vbs10,vbs11,vbs12,vbs13,vbs14,vbs15,vbs16;
38  vector float vzero;
39  b1 = samples;
40  costab = pnts[0];
41 
42  vzero = vec_xor(vzero,vzero);
43 #ifdef __APPLE__
44  vinvert = (vector unsigned char)(12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3);
45 #else
46  vinvert = (vector unsigned char){12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3};
47 #endif
48  vperm1 = vec_lvsl(0,b1);
49  vperm2 = vec_perm(vperm1,vperm1,vinvert);
50 
51  v1 = vec_ld(0,b1);
52  v2 = vec_ld(16,b1);
53  v3 = vec_ld(112,b1);
54  v4 = vec_ld(127,b1);
55  v5 = vec_perm(v1,v2,vperm1); /* b1[0,1,2,3] */
56  v6 = vec_perm(v3,v4,vperm2); /* b1[31,30,29,28] */
57 
58  vbs1 = vec_add(v5,v6);
59  vbs8 = vec_sub(v5,v6);
60 
61  v1 = vec_ld(32,b1);
62  v4 = vec_ld(96,b1);
63  v5 = vec_perm(v2,v1,vperm1); /* b1[4,5,6,7] */
64  v6 = vec_perm(v4,v3,vperm2); /* b1[27,26,25,24] */
65 
66  vbs2 = vec_add(v5,v6);
67  vbs7 = vec_sub(v5,v6);
68 
69  v2 = vec_ld(48,b1);
70  v3 = vec_ld(80,b1);
71  v5 = vec_perm(v1,v2,vperm1); /* b1[8,9,10,11] */
72  v6 = vec_perm(v3,v4,vperm2); /* b1[23,22,21,20] */
73 
74  vbs3 = vec_add(v5,v6);
75  vbs6 = vec_sub(v5,v6);
76 
77  v1 = vec_ld(64,b1);
78  v5 = vec_perm(v2,v1,vperm1); /* b1[12,13,14,15] */
79  v6 = vec_perm(v1,v3,vperm2); /* b1[19,18,17,16] */
80 
81  vbs4 = vec_add(v5,v6);
82  vbs5 = vec_sub(v5,v6);
83 
84  v1 = vec_ld(0,costab);
85  vbs8 = vec_madd(vbs8,v1,vzero);
86  v2 = vec_ld(16,costab);
87  vbs7 = vec_madd(vbs7,v2,vzero);
88  v3 = vec_ld(32,costab);
89  vbs6 = vec_madd(vbs6,v3,vzero);
90  v4 = vec_ld(48,costab);
91  vbs5 = vec_madd(vbs5,v4,vzero);
92  vbs6 = vec_perm(vbs6,vbs6,vinvert);
93  vbs5 = vec_perm(vbs5,vbs5,vinvert);
94 
95 
96  costab = pnts[1];
97 
98  v1 = vec_perm(vbs4,vbs4,vinvert);
99  vbs9 = vec_add(vbs1,v1);
100  v3 = vec_sub(vbs1,v1);
101  v5 = vec_ld(0,costab);
102  v2 = vec_perm(vbs3,vbs3,vinvert);
103  vbs10 = vec_add(vbs2,v2);
104  v4 = vec_sub(vbs2,v2);
105  v6 = vec_ld(16,costab);
106  vbs12 = vec_madd(v3,v5,vzero);
107  vbs11 = vec_madd(v4,v6,vzero);
108 
109  v7 = vec_sub(vbs7,vbs6);
110  v8 = vec_sub(vbs8,vbs5);
111  vbs13 = vec_add(vbs5,vbs8);
112  vbs14 = vec_add(vbs6,vbs7);
113  vbs15 = vec_madd(v7,v6,vzero);
114  vbs16 = vec_madd(v8,v5,vzero);
115 
116 
117  costab = pnts[2];
118 
119  v1 = vec_perm(vbs10,vbs10,vinvert);
120  v5 = vec_perm(vbs14,vbs14,vinvert);
121  vbs1 = vec_add(v1,vbs9);
122  vbs5 = vec_add(v5,vbs13);
123  v2 = vec_sub(vbs9,v1);
124  v6 = vec_sub(vbs13,v5);
125  v3 = vec_ld(0,costab);
126  vbs11 = vec_perm(vbs11,vbs11,vinvert);
127  vbs15 = vec_perm(vbs15,vbs15,vinvert);
128  vbs3 = vec_add(vbs11,vbs12);
129  vbs7 = vec_add(vbs15,vbs16);
130  v4 = vec_sub(vbs12,vbs11);
131  v7 = vec_sub(vbs16,vbs15);
132  vbs2 = vec_madd(v2,v3,vzero);
133  vbs4 = vec_madd(v4,v3,vzero);
134  vbs6 = vec_madd(v6,v3,vzero);
135  vbs8 = vec_madd(v7,v3,vzero);
136 
137  vbs2 = vec_perm(vbs2,vbs2,vinvert);
138  vbs4 = vec_perm(vbs4,vbs4,vinvert);
139  vbs6 = vec_perm(vbs6,vbs6,vinvert);
140  vbs8 = vec_perm(vbs8,vbs8,vinvert);
141 
142 
143  costab = pnts[3];
144 
145 #ifdef __APPLE__
146  vperm1 = (vector unsigned char)(0,1,2,3,4,5,6,7,16,17,18,19,20,21,22,23);
147  vperm2 = (vector unsigned char)(12,13,14,15,8,9,10,11,28,29,30,31,24,25,26,27);
148  vperm3 = (vector unsigned char)(0,1,2,3,4,5,6,7,20,21,22,23,16,17,18,19);
149 #else
150  vperm1 = (vector unsigned char){0,1,2,3,4,5,6,7,16,17,18,19,20,21,22,23};
151  vperm2 = (vector unsigned char){12,13,14,15,8,9,10,11,28,29,30,31,24,25,26,27};
152  vperm3 = (vector unsigned char){0,1,2,3,4,5,6,7,20,21,22,23,16,17,18,19};
153 #endif
154  vperm4 = vec_add(vperm3,vec_splat_u8(8));
155 
156  v1 = vec_ld(0,costab);
157  v2 = vec_splat(v1,0);
158  v3 = vec_splat(v1,1);
159  v1 = vec_mergeh(v2,v3);
160 
161  v2 = vec_perm(vbs1,vbs3,vperm1);
162  v3 = vec_perm(vbs2,vbs4,vperm1);
163  v4 = vec_perm(vbs1,vbs3,vperm2);
164  v5 = vec_perm(vbs2,vbs4,vperm2);
165  v6 = vec_sub(v2,v4);
166  v7 = vec_sub(v3,v5);
167  v2 = vec_add(v2,v4);
168  v3 = vec_add(v3,v5);
169  v4 = vec_madd(v6,v1,vzero);
170  v5 = vec_nmsub(v7,v1,vzero);
171  vbs9 = vec_perm(v2,v4,vperm3);
172  vbs11 = vec_perm(v2,v4,vperm4);
173  vbs10 = vec_perm(v3,v5,vperm3);
174  vbs12 = vec_perm(v3,v5,vperm4);
175 
176  v2 = vec_perm(vbs5,vbs7,vperm1);
177  v3 = vec_perm(vbs6,vbs8,vperm1);
178  v4 = vec_perm(vbs5,vbs7,vperm2);
179  v5 = vec_perm(vbs6,vbs8,vperm2);
180  v6 = vec_sub(v2,v4);
181  v7 = vec_sub(v3,v5);
182  v2 = vec_add(v2,v4);
183  v3 = vec_add(v3,v5);
184  v4 = vec_madd(v6,v1,vzero);
185  v5 = vec_nmsub(v7,v1,vzero);
186  vbs13 = vec_perm(v2,v4,vperm3);
187  vbs15 = vec_perm(v2,v4,vperm4);
188  vbs14 = vec_perm(v3,v5,vperm3);
189  vbs16 = vec_perm(v3,v5,vperm4);
190 
191 
192  costab = pnts[4];
193 
194  v1 = vec_lde(0,costab);
195 #ifdef __APPLE__
196  v2 = (vector float)(1.0f,-1.0f,1.0f,-1.0f);
197 #else
198  v2 = (vector float){1.0f,-1.0f,1.0f,-1.0f};
199 #endif
200  v3 = vec_splat(v1,0);
201  v1 = vec_madd(v2,v3,vzero);
202 
203  v2 = vec_mergeh(vbs9,vbs10);
204  v3 = vec_mergel(vbs9,vbs10);
205  v4 = vec_mergeh(vbs11,vbs12);
206  v5 = vec_mergel(vbs11,vbs12);
207  v6 = vec_mergeh(v2,v3);
208  v7 = vec_mergel(v2,v3);
209  v2 = vec_mergeh(v4,v5);
210  v3 = vec_mergel(v4,v5);
211  v4 = vec_sub(v6,v7);
212  v5 = vec_sub(v2,v3);
213  v6 = vec_add(v6,v7);
214  v7 = vec_add(v2,v3);
215  v2 = vec_madd(v4,v1,vzero);
216  v3 = vec_madd(v5,v1,vzero);
217  vbs1 = vec_mergeh(v6,v2);
218  vbs2 = vec_mergel(v6,v2);
219  vbs3 = vec_mergeh(v7,v3);
220  vbs4 = vec_mergel(v7,v3);
221 
222  v2 = vec_mergeh(vbs13,vbs14);
223  v3 = vec_mergel(vbs13,vbs14);
224  v4 = vec_mergeh(vbs15,vbs16);
225  v5 = vec_mergel(vbs15,vbs16);
226  v6 = vec_mergeh(v2,v3);
227  v7 = vec_mergel(v2,v3);
228  v2 = vec_mergeh(v4,v5);
229  v3 = vec_mergel(v4,v5);
230  v4 = vec_sub(v6,v7);
231  v5 = vec_sub(v2,v3);
232  v6 = vec_add(v6,v7);
233  v7 = vec_add(v2,v3);
234  v2 = vec_madd(v4,v1,vzero);
235  v3 = vec_madd(v5,v1,vzero);
236  vbs5 = vec_mergeh(v6,v2);
237  vbs6 = vec_mergel(v6,v2);
238  vbs7 = vec_mergeh(v7,v3);
239  vbs8 = vec_mergel(v7,v3);
240 
241  vec_st(vbs1,0,bufs);
242  vec_st(vbs2,16,bufs);
243  vec_st(vbs3,32,bufs);
244  vec_st(vbs4,48,bufs);
245  vec_st(vbs5,64,bufs);
246  vec_st(vbs6,80,bufs);
247  vec_st(vbs7,96,bufs);
248  vec_st(vbs8,112,bufs);
249  }
250 
251  {
252  register real *b1;
253  register int i;
254 
255  for(b1=bufs,i=8;i;i--,b1+=4)
256  b1[2] += b1[3];
257 
258  for(b1=bufs,i=4;i;i--,b1+=8)
259  {
260  b1[4] += b1[6];
261  b1[6] += b1[5];
262  b1[5] += b1[7];
263  }
264 
265  for(b1=bufs,i=2;i;i--,b1+=16)
266  {
267  b1[8] += b1[12];
268  b1[12] += b1[10];
269  b1[10] += b1[14];
270  b1[14] += b1[9];
271  b1[9] += b1[13];
272  b1[13] += b1[11];
273  b1[11] += b1[15];
274  }
275  }
276 
277 
278  out0[0x10*16] = bufs[0];
279  out0[0x10*15] = bufs[16+0] + bufs[16+8];
280  out0[0x10*14] = bufs[8];
281  out0[0x10*13] = bufs[16+8] + bufs[16+4];
282  out0[0x10*12] = bufs[4];
283  out0[0x10*11] = bufs[16+4] + bufs[16+12];
284  out0[0x10*10] = bufs[12];
285  out0[0x10* 9] = bufs[16+12] + bufs[16+2];
286  out0[0x10* 8] = bufs[2];
287  out0[0x10* 7] = bufs[16+2] + bufs[16+10];
288  out0[0x10* 6] = bufs[10];
289  out0[0x10* 5] = bufs[16+10] + bufs[16+6];
290  out0[0x10* 4] = bufs[6];
291  out0[0x10* 3] = bufs[16+6] + bufs[16+14];
292  out0[0x10* 2] = bufs[14];
293  out0[0x10* 1] = bufs[16+14] + bufs[16+1];
294  out0[0x10* 0] = bufs[1];
295 
296  out1[0x10* 0] = bufs[1];
297  out1[0x10* 1] = bufs[16+1] + bufs[16+9];
298  out1[0x10* 2] = bufs[9];
299  out1[0x10* 3] = bufs[16+9] + bufs[16+5];
300  out1[0x10* 4] = bufs[5];
301  out1[0x10* 5] = bufs[16+5] + bufs[16+13];
302  out1[0x10* 6] = bufs[13];
303  out1[0x10* 7] = bufs[16+13] + bufs[16+3];
304  out1[0x10* 8] = bufs[3];
305  out1[0x10* 9] = bufs[16+3] + bufs[16+11];
306  out1[0x10*10] = bufs[11];
307  out1[0x10*11] = bufs[16+11] + bufs[16+7];
308  out1[0x10*12] = bufs[7];
309  out1[0x10*13] = bufs[16+7] + bufs[16+15];
310  out1[0x10*14] = bufs[15];
311  out1[0x10*15] = bufs[16+15];
312 
313 }
GLsizei samples
Definition: glext.h:7006
#define ALIGNED(a)
Definition: optimize.h:190
const GLenum * bufs
Definition: glext.h:6026
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
#define pnts
Definition: intsym.h:8
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static CRYPT_DATA_BLOB b1[]
Definition: msg.c:573
unsigned char
Definition: typeof.h:29
GLfloat f
Definition: glext.h:7540
GLfloat GLfloat GLfloat GLfloat v3
Definition: glext.h:6064
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063
GLfloat GLfloat v1
Definition: glext.h:6062

◆ dct64_i386()

void dct64_i386 ( real ,
real ,
real  
)

Definition at line 331 of file dct64_i386.c.

332 {
333  real bufs[0x40];
334  dct64_1(a,b,bufs,bufs+0x20,c);
335 }
static void dct64_1(real *out0, real *out1, real *b1, real *b2, real *samples)
Definition: dct64_i386.c:19
const GLenum * bufs
Definition: glext.h:6026
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
const GLubyte * c
Definition: glext.h:8905
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

◆ dct64_i486()

void dct64_i486 ( int ,
int ,
real  
)

Definition at line 320 of file dct64_i486.c.

321 {
322  int bufs[64];
323  int i;
324 
325 #ifdef REAL_IS_FIXED
326 #define TOINT(a) ((a) * 32768 / (int)REAL_FACTOR)
327 
328  for(i=0;i<32;i++) {
329  bufs[i]=TOINT(samples[i]);
330  }
331 #else
332  int *p = bufs;
333  register double const scale = ((65536.0 * 32) + 1) * 65536.0;
334 
335  for(i=0;i<32;i++) {
336  *((double *) (p++)) = scale + *samples++; /* beware on bufs overrun: 8B store from x87 */
337  }
338 #endif
339 
340  dct64_1_486(a,b,bufs+32,bufs);
341 }
GLsizei samples
Definition: glext.h:7006
const GLenum * bufs
Definition: glext.h:6026
GLenum GLenum GLenum GLenum GLenum scale
Definition: glext.h:9032
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
void dct64_1_486(int *out0, int *out1, int *b1, int *b2)
Definition: dct64_i486.c:67
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
GLfloat GLfloat p
Definition: glext.h:8902

◆ do_equalizer()

void do_equalizer ( real bandPtr,
int  channel,
real  equalizer[2][32] 
)

Definition at line 12 of file equalizer.c.

13 {
14  int i;
15  for(i=0;i<32;i++)
16  bandPtr[i] = REAL_MUL(bandPtr[i], equalizer[channel][i]);
17 }
#define REAL_MUL(x, y)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248

◆ do_layer1()

int do_layer1 ( mpg123_handle fr)

Definition at line 158 of file layer1.c.

159 {
160  int clip=0;
161  int i,stereo = fr->stereo;
162  unsigned int balloc[2*SBLIMIT];
163  unsigned int scale_index[2][SBLIMIT];
164  real (*fraction)[SBLIMIT] = fr->layer1.fraction; /* fraction[2][SBLIMIT] */
165  int single = fr->single;
166 
167  fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext<<2)+4 : 32;
168 
169  if(stereo == 1 || single == SINGLE_MIX) /* I don't see mixing handled here */
171 
172  if(I_step_one(balloc,scale_index,fr))
173  {
174  if(NOQUIET) error("Aborting layer I decoding after step one.\n");
175  return clip;
176  }
177 
178  for(i=0;i<SCALE_BLOCK;i++)
179  {
180  I_step_two(fraction,balloc,scale_index,fr);
181 
182  if(single != SINGLE_STEREO)
183  clip += (fr->synth_mono)(fraction[single], fr);
184  else
185  clip += (fr->synth_stereo)(fraction[0], fraction[1], fr);
186  }
187 
188  return clip;
189 }
static void I_step_two(real fraction[2][SBLIMIT], unsigned int balloc[2 *SBLIMIT], unsigned int scale_index[2][SBLIMIT], mpg123_handle *fr)
Definition: layer1.c:90
static int I_step_one(unsigned int balloc[], unsigned int scale_index[2][SBLIMIT], mpg123_handle *fr)
Definition: layer1.c:37
#define error(str)
Definition: mkdosfs.c:1605
#define SCALE_BLOCK
#define SINGLE_STEREO
Definition: frame.h:187
struct mpg123_handle_struct::@3301 layer1
#define SBLIMIT
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
float single
Definition: msinkaut.idl:29
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define SINGLE_LEFT
Definition: frame.h:188
func_synth_mono synth_mono
Definition: frame.h:181
#define MPG_MD_JOINT_STEREO
#define NOQUIET
func_synth_stereo synth_stereo
Definition: frame.h:180
#define SINGLE_MIX
Definition: frame.h:190

◆ do_layer2()

int do_layer2 ( mpg123_handle fr)

Definition at line 329 of file layer2.c.

330 {
331  int clip=0;
332  int i,j;
333  int stereo = fr->stereo;
334  /* pick_table clears unused subbands */
335  /* replacement for real fraction[2][4][SBLIMIT], needs alignment. */
336  real (*fraction)[4][SBLIMIT] = fr->layer2.fraction;
337  unsigned int bit_alloc[64];
338  int scale[192];
339  int single = fr->single;
340 
341  II_select_table(fr);
342  fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext<<2)+4 : fr->II_sblimit;
343 
344  if(fr->jsbound > fr->II_sblimit)
345  {
346  fprintf(stderr, "Truncating stereo boundary to sideband limit.\n");
347  fr->jsbound=fr->II_sblimit;
348  }
349 
350  /* TODO: What happens with mono mixing, actually? */
351  if(stereo == 1 || single == SINGLE_MIX) /* also, mix not really handled */
353 
354  II_step_one(bit_alloc, scale, fr);
355 
356  for(i=0;i<SCALE_BLOCK;i++)
357  {
358  II_step_two(bit_alloc,fraction,scale,fr,i>>2);
359  for(j=0;j<3;j++)
360  {
361  if(single != SINGLE_STEREO)
362  clip += (fr->synth_mono)(fraction[single][j], fr);
363  else
364  clip += (fr->synth_stereo)(fraction[0][j], fraction[1][j], fr);
365  }
366  }
367 
368  return clip;
369 }
#define SCALE_BLOCK
#define SINGLE_STEREO
Definition: frame.h:187
GLenum GLenum GLenum GLenum GLenum scale
Definition: glext.h:9032
#define SBLIMIT
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
float single
Definition: msinkaut.idl:29
static void II_step_two(unsigned int *bit_alloc, real fraction[2][4][SBLIMIT], int *scale, mpg123_handle *fr, int x1)
Definition: layer2.c:194
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define SINGLE_LEFT
Definition: frame.h:188
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
func_synth_mono synth_mono
Definition: frame.h:181
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define MPG_MD_JOINT_STEREO
static void II_step_one(unsigned int *bit_alloc, int *scale, mpg123_handle *fr)
Definition: layer2.c:117
static void II_select_table(mpg123_handle *fr)
Definition: layer2.c:296
func_synth_stereo synth_stereo
Definition: frame.h:180
FILE * stderr
struct mpg123_handle_struct::@3302 layer2
#define SINGLE_MIX
Definition: frame.h:190

◆ do_layer3()

int do_layer3 ( mpg123_handle fr)

Definition at line 1982 of file layer3.c.

1983 {
1984  int gr, ch, ss,clip=0;
1985  int scalefacs[2][39]; /* max 39 for short[13][3] mode, mixed: 38, long: 22 */
1986  struct III_sideinfo sideinfo;
1987  int stereo = fr->stereo;
1988  int single = fr->single;
1989  int ms_stereo,i_stereo;
1990  int sfreq = fr->sampling_frequency;
1991  int stereo1,granules;
1992 
1993  if(stereo == 1)
1994  { /* stream is mono */
1995  stereo1 = 1;
1996  single = SINGLE_LEFT;
1997  }
1998  else if(single != SINGLE_STEREO) /* stream is stereo, but force to mono */
1999  stereo1 = 1;
2000  else
2001  stereo1 = 2;
2002 
2003  if(fr->mode == MPG_MD_JOINT_STEREO)
2004  {
2005  ms_stereo = (fr->mode_ext & 0x2)>>1;
2006  i_stereo = fr->mode_ext & 0x1;
2007  }
2008  else ms_stereo = i_stereo = 0;
2009 
2010  granules = fr->lsf ? 1 : 2;
2011 
2012  /* quick hack to keep the music playing */
2013  /* after having seen this nasty test file... */
2014  if(III_get_side_info(fr, &sideinfo,stereo,ms_stereo,sfreq,single))
2015  {
2016  if(NOQUIET) error("bad frame - unable to get valid sideinfo");
2017  return clip;
2018  }
2019 
2020  set_pointer(fr,sideinfo.main_data_begin);
2021 
2022  for(gr=0;gr<granules;gr++)
2023  {
2024  /* hybridIn[2][SBLIMIT][SSLIMIT] */
2025  real (*hybridIn)[SBLIMIT][SSLIMIT] = fr->layer3.hybrid_in;
2026  /* hybridOut[2][SSLIMIT][SBLIMIT] */
2027  real (*hybridOut)[SSLIMIT][SBLIMIT] = fr->layer3.hybrid_out;
2028 
2029  {
2030  struct gr_info_s *gr_info = &(sideinfo.ch[0].gr[gr]);
2031  long part2bits;
2032  if(fr->lsf)
2033  part2bits = III_get_scale_factors_2(fr, scalefacs[0],gr_info,0);
2034  else
2035  part2bits = III_get_scale_factors_1(fr, scalefacs[0],gr_info,0,gr);
2036 
2037  if(III_dequantize_sample(fr, hybridIn[0], scalefacs[0],gr_info,sfreq,part2bits))
2038  {
2039  if(VERBOSE2) error("dequantization failed!");
2040  return clip;
2041  }
2042  }
2043 
2044  if(stereo == 2)
2045  {
2046  struct gr_info_s *gr_info = &(sideinfo.ch[1].gr[gr]);
2047  long part2bits;
2048  if(fr->lsf)
2049  part2bits = III_get_scale_factors_2(fr, scalefacs[1],gr_info,i_stereo);
2050  else
2051  part2bits = III_get_scale_factors_1(fr, scalefacs[1],gr_info,1,gr);
2052 
2053  if(III_dequantize_sample(fr, hybridIn[1],scalefacs[1],gr_info,sfreq,part2bits))
2054  {
2055  if(VERBOSE2) error("dequantization failed!");
2056  return clip;
2057  }
2058 
2059  if(ms_stereo)
2060  {
2061  int i;
2062  unsigned int maxb = sideinfo.ch[0].gr[gr].maxb;
2063  if(sideinfo.ch[1].gr[gr].maxb > maxb) maxb = sideinfo.ch[1].gr[gr].maxb;
2064 
2065  for(i=0;i<SSLIMIT*(int)maxb;i++)
2066  {
2067  real tmp0 = ((real *)hybridIn[0])[i];
2068  real tmp1 = ((real *)hybridIn[1])[i];
2069  ((real *)hybridIn[0])[i] = tmp0 + tmp1;
2070  ((real *)hybridIn[1])[i] = tmp0 - tmp1;
2071  }
2072  }
2073 
2074  if(i_stereo) III_i_stereo(hybridIn,scalefacs[1],gr_info,sfreq,ms_stereo,fr->lsf);
2075 
2076  if(ms_stereo || i_stereo || (single == SINGLE_MIX) )
2077  {
2078  if(gr_info->maxb > sideinfo.ch[0].gr[gr].maxb)
2079  sideinfo.ch[0].gr[gr].maxb = gr_info->maxb;
2080  else
2081  gr_info->maxb = sideinfo.ch[0].gr[gr].maxb;
2082  }
2083 
2084  switch(single)
2085  {
2086  case SINGLE_MIX:
2087  {
2088  register int i;
2089  register real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1];
2090  for(i=0;i<SSLIMIT*(int)gr_info->maxb;i++,in0++)
2091  *in0 = (*in0 + *in1++); /* *0.5 done by pow-scale */
2092  }
2093  break;
2094  case SINGLE_RIGHT:
2095  {
2096  register int i;
2097  register real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1];
2098  for(i=0;i<SSLIMIT*(int)gr_info->maxb;i++)
2099  *in0++ = *in1++;
2100  }
2101  break;
2102  }
2103  }
2104 
2105  for(ch=0;ch<stereo1;ch++)
2106  {
2107  struct gr_info_s *gr_info = &(sideinfo.ch[ch].gr[gr]);
2108  III_antialias(hybridIn[ch],gr_info);
2109  III_hybrid(hybridIn[ch], hybridOut[ch], ch,gr_info, fr);
2110  }
2111 
2112 #ifdef OPT_I486
2113  if(single != SINGLE_STEREO || fr->af.encoding != MPG123_ENC_SIGNED_16 || fr->down_sample != 0)
2114  {
2115 #endif
2116  for(ss=0;ss<SSLIMIT;ss++)
2117  {
2118  if(single != SINGLE_STEREO)
2119  clip += (fr->synth_mono)(hybridOut[0][ss], fr);
2120  else
2121  clip += (fr->synth_stereo)(hybridOut[0][ss], hybridOut[1][ss], fr);
2122 
2123  }
2124 #ifdef OPT_I486
2125  } else
2126  {
2127  /* Only stereo, 16 bits benefit from the 486 optimization. */
2128  ss=0;
2129  while(ss < SSLIMIT)
2130  {
2131  int n;
2132  n=(fr->buffer.size - fr->buffer.fill) / (2*2*32);
2133  if(n > (SSLIMIT-ss)) n=SSLIMIT-ss;
2134 
2135  /* Clip counting makes no sense with this function. */
2136  absynth_1to1_i486(hybridOut[0][ss], 0, fr, n);
2137  absynth_1to1_i486(hybridOut[1][ss], 1, fr, n);
2138  ss+=n;
2139  fr->buffer.fill+=(2*2*32)*n;
2140  }
2141  }
2142 #endif
2143  }
2144 
2145  return clip;
2146 }
static int III_get_side_info(mpg123_handle *fr, struct III_sideinfo *si, int stereo, int ms_stereo, long sfreq, int single)
Definition: layer3.c:405
static void III_i_stereo(real xr_buf[2][SBLIMIT][SSLIMIT], int *scalefac, struct gr_info_s *gr_info, int sfreq, int ms_stereo, int lsf)
Definition: layer3.c:1260
#define absynth_1to1_i486
Definition: intsym.h:43
#define SINGLE_RIGHT
Definition: frame.h:189
static void III_antialias(real xr[SBLIMIT][SSLIMIT], struct gr_info_s *gr_info)
Definition: layer3.c:1432
#define error(str)
Definition: mkdosfs.c:1605
#define set_pointer
Definition: intsym.h:232
#define SINGLE_STEREO
Definition: frame.h:187
#define SBLIMIT
GLdouble n
Definition: glext.h:7729
struct mpg123_handle_struct::@3303 layer3
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
struct outbuffer buffer
Definition: frame.h:265
float single
Definition: msinkaut.idl:29
struct gr_info_s gr[2]
Definition: layer3.c:83
static void III_hybrid(real fsIn[SBLIMIT][SSLIMIT], real tsOut[SSLIMIT][SBLIMIT], int ch, struct gr_info_s *gr_info, mpg123_handle *fr)
Definition: layer3.c:1925
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static int III_dequantize_sample(mpg123_handle *fr, real xr[SBLIMIT][SSLIMIT], int *scf, struct gr_info_s *gr_info, int sfreq, int part2bits)
Definition: layer3.c:751
#define SINGLE_LEFT
Definition: frame.h:188
int sampling_frequency
Definition: frame.h:204
#define VERBOSE2
func_synth_mono synth_mono
Definition: frame.h:181
static int III_get_scale_factors_1(mpg123_handle *fr, int *scf, struct gr_info_s *gr_info, int ch, int gr)
Definition: layer3.c:553
#define MPG_MD_JOINT_STEREO
static int III_get_scale_factors_2(mpg123_handle *fr, int *scf, struct gr_info_s *gr_info, int i_stereo)
Definition: layer3.c:648
#define SSLIMIT
#define NOQUIET
func_synth_stereo synth_stereo
Definition: frame.h:180
struct audioformat af
Definition: frame.h:266
#define ss
Definition: i386-dis.c:432
#define SINGLE_MIX
Definition: frame.h:190
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

◆ init_layer12()

void init_layer12 ( void  )

Definition at line 39 of file layer2.c.

40 {
41  const int base[3][9] =
42  {
43  { 1 , 0, 2 , } ,
44  { 17, 18, 0 , 19, 20 , } ,
45  { 21, 1, 22, 23, 0, 24, 25, 2, 26 }
46  };
47  int i,j,k,l,len;
48  const int tablen[3] = { 3 , 5 , 9 };
49  int *itable;
50  int *tables[3] = { grp_3tab , grp_5tab , grp_9tab };
51 
52  for(i=0;i<3;i++)
53  {
54  itable = tables[i];
55  len = tablen[i];
56  for(j=0;j<len;j++)
57  for(k=0;k<len;k++)
58  for(l=0;l<len;l++)
59  {
60  *itable++ = base[i][l];
61  *itable++ = base[i][k];
62  *itable++ = base[i][j];
63  }
64  }
65 }
static int grp_3tab[32 *3]
Definition: layer2.c:21
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static int grp_5tab[128 *3]
Definition: layer2.c:22
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
r l[0]
Definition: byte_order.h:167
static int grp_9tab[1024 *3]
Definition: layer2.c:23
GLenum GLsizei len
Definition: glext.h:6722
struct nls_table * tables
Definition: nls_base.c:22
int k
Definition: mpi.c:3369

◆ init_layer12_stuff()

void init_layer12_stuff ( mpg123_handle fr,
real *(*)(mpg123_handle *fr, real *table, int m init_table 
)

Definition at line 67 of file layer2.c.

68 {
69  int k;
70  real *table;
71  for(k=0;k<27;k++)
72  {
73  table = init_table(fr, fr->muls[k], k);
74  *table++ = 0.0;
75  }
76 }
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
GLenum GLsizei GLenum GLenum const GLvoid * table
Definition: glext.h:5644
real muls[27][64]
Definition: frame.h:144
int k
Definition: mpi.c:3369

◆ init_layer12_table()

real* init_layer12_table ( mpg123_handle fr,
real table,
int  m 
)

Definition at line 78 of file layer2.c.

79 {
80 #if defined(REAL_IS_FIXED) && defined(PRECALC_TABLES)
81  int i;
82  for(i=0;i<63;i++)
83  *table++ = layer12_table[m][i];
84 #else
85  int i,j;
86  for(j=3,i=0;i<63;i++,j--)
87  *table++ = DOUBLE_TO_REAL_SCALE_LAYER12(mulmul[m] * pow(2.0,(double) j / 3.0));
88 #endif
89 
90  return table;
91 }
GLenum GLsizei GLenum GLenum const GLvoid * table
Definition: glext.h:5644
const GLfloat * m
Definition: glext.h:10848
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
float pow(float __x, int __y)
Definition: _cmath.h:458
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
static const double mulmul[27]
Definition: layer2.c:28
#define DOUBLE_TO_REAL_SCALE_LAYER12(x)
static const real layer12_table[27][64]

◆ init_layer3()

void init_layer3 ( void  )

Definition at line 183 of file layer3.c.

184 {
185  int i,j,k,l;
186 
187 #if !defined(REAL_IS_FIXED) || !defined(PRECALC_TABLES)
188  for(i=0;i<8207;i++)
189  ispow[i] = DOUBLE_TO_REAL_POW43(pow((double)i,(double)4.0/3.0));
190 
191  for(i=0;i<8;i++)
192  {
193  const double Ci[8] = {-0.6,-0.535,-0.33,-0.185,-0.095,-0.041,-0.0142,-0.0037};
194  double sq = sqrt(1.0+Ci[i]*Ci[i]);
195  aa_cs[i] = DOUBLE_TO_REAL(1.0/sq);
196  aa_ca[i] = DOUBLE_TO_REAL(Ci[i]/sq);
197  }
198 
199  for(i=0;i<18;i++)
200  {
201  win[0][i] = win[1][i] =
202  DOUBLE_TO_REAL( 0.5*sin(M_PI/72.0 * (double)(2*(i+0) +1)) / cos(M_PI * (double)(2*(i+0) +19) / 72.0) );
203  win[0][i+18] = win[3][i+18] =
204  DOUBLE_TO_REAL( 0.5*sin(M_PI/72.0 * (double)(2*(i+18)+1)) / cos(M_PI * (double)(2*(i+18)+19) / 72.0) );
205  }
206  for(i=0;i<6;i++)
207  {
208  win[1][i+18] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (2*(i+18)+19) / 72.0 ));
209  win[3][i+12] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (2*(i+12)+19) / 72.0 ));
210  win[1][i+24] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 24.0 * (double) (2*i+13) ) / cos ( M_PI * (double) (2*(i+24)+19) / 72.0 ));
211  win[1][i+30] = win[3][i] = DOUBLE_TO_REAL(0.0);
212  win[3][i+6 ] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 24.0 * (double) (2*i+1 ) ) / cos ( M_PI * (double) (2*(i+6 )+19) / 72.0 ));
213  }
214 
215  for(i=0;i<9;i++)
216  COS9[i] = DOUBLE_TO_REAL(cos( M_PI / 18.0 * (double) i));
217 
218  for(i=0;i<9;i++)
219  tfcos36[i] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (i*2+1) / 36.0 ));
220 
221  for(i=0;i<3;i++)
222  tfcos12[i] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (i*2+1) / 12.0 ));
223 
224  COS6_1 = DOUBLE_TO_REAL(cos( M_PI / 6.0 * (double) 1));
225  COS6_2 = DOUBLE_TO_REAL(cos( M_PI / 6.0 * (double) 2));
226 
227 #ifdef NEW_DCT9
228  cos9[0] = DOUBLE_TO_REAL(cos(1.0*M_PI/9.0));
229  cos9[1] = DOUBLE_TO_REAL(cos(5.0*M_PI/9.0));
230  cos9[2] = DOUBLE_TO_REAL(cos(7.0*M_PI/9.0));
231  cos18[0] = DOUBLE_TO_REAL(cos(1.0*M_PI/18.0));
232  cos18[1] = DOUBLE_TO_REAL(cos(11.0*M_PI/18.0));
233  cos18[2] = DOUBLE_TO_REAL(cos(13.0*M_PI/18.0));
234 #endif
235 
236  for(i=0;i<12;i++)
237  {
238  win[2][i] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 24.0 * (double) (2*i+1) ) / cos ( M_PI * (double) (2*i+7) / 24.0 ));
239  }
240 
241  for(i=0;i<16;i++)
242  {
243  double t = tan( (double) i * M_PI / 12.0 );
244  tan1_1[i] = DOUBLE_TO_REAL_15(t / (1.0+t));
245  tan2_1[i] = DOUBLE_TO_REAL_15(1.0 / (1.0 + t));
246  tan1_2[i] = DOUBLE_TO_REAL_15(M_SQRT2 * t / (1.0+t));
247  tan2_2[i] = DOUBLE_TO_REAL_15(M_SQRT2 / (1.0 + t));
248  }
249 
250  for(i=0;i<32;i++)
251  {
252  for(j=0;j<2;j++)
253  {
254  double base = pow(2.0,-0.25*(j+1.0));
255  double p1=1.0,p2=1.0;
256  if(i > 0)
257  {
258  if( i & 1 ) p1 = pow(base,(i+1.0)*0.5);
259  else p2 = pow(base,i*0.5);
260  }
261  pow1_1[j][i] = DOUBLE_TO_REAL_15(p1);
262  pow2_1[j][i] = DOUBLE_TO_REAL_15(p2);
263  pow1_2[j][i] = DOUBLE_TO_REAL_15(M_SQRT2 * p1);
264  pow2_2[j][i] = DOUBLE_TO_REAL_15(M_SQRT2 * p2);
265  }
266  }
267 #endif
268 
269  for(j=0;j<4;j++)
270  {
271  const int len[4] = { 36,36,12,36 };
272  for(i=0;i<len[j];i+=2) win1[j][i] = + win[j][i];
273 
274  for(i=1;i<len[j];i+=2) win1[j][i] = - win[j][i];
275  }
276 
277  for(j=0;j<9;j++)
278  {
279  const struct bandInfoStruct *bi = &bandInfo[j];
280  int *mp;
281  int cb,lwin;
282  const unsigned char *bdf;
283  int switch_idx;
284 
285  mp = map[j][0] = mapbuf0[j];
286  bdf = bi->longDiff;
287  switch_idx = (j < 3) ? 8 : 6;
288  for(i=0,cb = 0; cb < switch_idx ; cb++,i+=*bdf++)
289  {
290  *mp++ = (*bdf) >> 1;
291  *mp++ = i;
292  *mp++ = 3;
293  *mp++ = cb;
294  }
295  bdf = bi->shortDiff+3;
296  for(cb=3;cb<13;cb++)
297  {
298  int l = (*bdf++) >> 1;
299  for(lwin=0;lwin<3;lwin++)
300  {
301  *mp++ = l;
302  *mp++ = i + lwin;
303  *mp++ = lwin;
304  *mp++ = cb;
305  }
306  i += 6*l;
307  }
308  mapend[j][0] = mp;
309 
310  mp = map[j][1] = mapbuf1[j];
311  bdf = bi->shortDiff+0;
312  for(i=0,cb=0;cb<13;cb++)
313  {
314  int l = (*bdf++) >> 1;
315  for(lwin=0;lwin<3;lwin++)
316  {
317  *mp++ = l;
318  *mp++ = i + lwin;
319  *mp++ = lwin;
320  *mp++ = cb;
321  }
322  i += 6*l;
323  }
324  mapend[j][1] = mp;
325 
326  mp = map[j][2] = mapbuf2[j];
327  bdf = bi->longDiff;
328  for(cb = 0; cb < 22 ; cb++)
329  {
330  *mp++ = (*bdf++) >> 1;
331  *mp++ = cb;
332  }
333  mapend[j][2] = mp;
334  }
335 
336  /* Now for some serious loopings! */
337  for(i=0;i<5;i++)
338  for(j=0;j<6;j++)
339  for(k=0;k<6;k++)
340  {
341  int n = k + j * 6 + i * 36;
342  i_slen2[n] = i|(j<<3)|(k<<6)|(3<<12);
343  }
344  for(i=0;i<4;i++)
345  for(j=0;j<4;j++)
346  for(k=0;k<4;k++)
347  {
348  int n = k + j * 4 + i * 16;
349  i_slen2[n+180] = i|(j<<3)|(k<<6)|(4<<12);
350  }
351  for(i=0;i<4;i++)
352  for(j=0;j<3;j++)
353  {
354  int n = j + i * 3;
355  i_slen2[n+244] = i|(j<<3) | (5<<12);
356  n_slen2[n+500] = i|(j<<3) | (2<<12) | (1<<15);
357  }
358  for(i=0;i<5;i++)
359  for(j=0;j<5;j++)
360  for(k=0;k<4;k++)
361  for(l=0;l<4;l++)
362  {
363  int n = l + k * 4 + j * 16 + i * 80;
364  n_slen2[n] = i|(j<<3)|(k<<6)|(l<<9)|(0<<12);
365  }
366  for(i=0;i<5;i++)
367  for(j=0;j<5;j++)
368  for(k=0;k<4;k++)
369  {
370  int n = k + j * 4 + i * 20;
371  n_slen2[n+400] = i|(j<<3)|(k<<6)|(1<<12);
372  }
373 }
_STLP_DECLSPEC complex< float > _STLP_CALL sqrt(const complex< float > &)
Definition: complex.cpp:188
#define DOUBLE_TO_REAL(x)
static int mapbuf0[9][152]
Definition: layer3.c:153
static real COS6_1
static real aa_cs[8]
Definition: layer3.c:39
GLdouble n
Definition: glext.h:7729
unsigned char longDiff[22]
Definition: layer3.c:89
GLdouble GLdouble t
Definition: gl.h:2047
static int mapbuf2[9][44]
Definition: layer3.c:155
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define M_SQRT2
float pow(float __x, int __y)
Definition: _cmath.h:458
static const struct bandInfoStruct bandInfo[9]
Definition: layer3.c:95
static real COS6_2
_STLP_DECLSPEC complex< float > _STLP_CALL cos(const complex< float > &)
#define DOUBLE_TO_REAL_POW43(x)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
r l[0]
Definition: byte_order.h:167
static real aa_ca[8]
Definition: layer3.c:39
static DWORD cb
Definition: integrity.c:41
Definition: _map.h:44
static unsigned int n_slen2[512]
Definition: layer3.c:159
real tfcos36[9]
GLenum GLsizei len
Definition: glext.h:6722
static real ispow[8207]
Definition: layer3.c:38
#define DOUBLE_TO_REAL_15(x)
static real win[4][36]
static int * mapend[9][3]
Definition: layer3.c:157
#define M_PI
Definition: macros.h:263
real COS9[9]
_STLP_DECLSPEC complex< float > _STLP_CALL sin(const complex< float > &)
static real tfcos12[3]
static real win1[4][36]
_STLP_DECLSPEC complex< float > _STLP_CALL tan(const complex< float > &)
int k
Definition: mpi.c:3369
unsigned char shortDiff[13]
Definition: layer3.c:91
static unsigned int i_slen2[256]
Definition: layer3.c:160
static int mapbuf1[9][156]
Definition: layer3.c:154

◆ init_layer3_gainpow2()

real init_layer3_gainpow2 ( mpg123_handle fr,
int  i 
)

Definition at line 172 of file layer3.c.

173 {
174 #if defined(REAL_IS_FIXED) && defined(PRECALC_TABLES)
175  return gainpow2[i+256];
176 #else
177  return DOUBLE_TO_REAL_SCALE_LAYER3(pow((double)2.0,-0.25 * (double) (i+210)),i+256);
178 #endif
179 }
#define DOUBLE_TO_REAL_SCALE_LAYER3(x, y)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
float pow(float __x, int __y)
Definition: _cmath.h:458

◆ init_layer3_stuff()

void init_layer3_stuff ( mpg123_handle fr,
real(*)(mpg123_handle *fr, int i gainpow2 
)

Definition at line 376 of file layer3.c.

377 {
378  int i,j;
379 
380  for(i=-256;i<118+4;i++) fr->gainpow2[i+256] = gainpow2(fr,i);
381 
382  for(j=0;j<9;j++)
383  {
384  for(i=0;i<23;i++)
385  {
386  fr->longLimit[j][i] = (bandInfo[j].longIdx[i] - 1 + 8) / 18 + 1;
387  if(fr->longLimit[j][i] > (fr->down_sample_sblimit) )
388  fr->longLimit[j][i] = fr->down_sample_sblimit;
389  }
390  for(i=0;i<14;i++)
391  {
392  fr->shortLimit[j][i] = (bandInfo[j].shortIdx[i] - 1) / 18 + 1;
393  if(fr->shortLimit[j][i] > (fr->down_sample_sblimit) )
394  fr->shortLimit[j][i] = fr->down_sample_sblimit;
395  }
396  }
397 }
int longLimit[9][23]
Definition: frame.h:139
int down_sample_sblimit
Definition: frame.h:193
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static const struct bandInfoStruct bandInfo[9]
Definition: layer3.c:95
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
int shortLimit[9][14]
Definition: frame.h:140
real gainpow2[256+118+4]
Definition: frame.h:141

◆ make_conv16to8_table()

int make_conv16to8_table ( mpg123_handle fr)

Definition at line 277 of file tabinit.c.

278 {
279  int i;
280  int mode = fr->af.dec_enc;
281 
282  /*
283  * ????: 8.0 is right but on SB cards '2.0' is a better value ???
284  */
285  const double mul = 8.0;
286 
287  if(!fr->conv16to8_buf){
288  fr->conv16to8_buf = (unsigned char *) malloc(8192);
289  if(!fr->conv16to8_buf) {
291  if(NOQUIET) error("Can't allocate 16 to 8 converter table!");
292  return -1;
293  }
294  fr->conv16to8 = fr->conv16to8_buf + 4096;
295  }
296 
297  switch(mode)
298  {
299  case MPG123_ENC_ULAW_8:
300  {
301  double m=127.0 / log(256.0);
302  int c1;
303 
304  for(i=-4096;i<4096;i++)
305  {
306  /* dunno whether this is a valid transformation rule ?!?!? */
307  if(i < 0)
308  c1 = 127 - (int) (log( 1.0 - 255.0 * (double) i*mul / 32768.0 ) * m);
309  else
310  c1 = 255 - (int) (log( 1.0 + 255.0 * (double) i*mul / 32768.0 ) * m);
311  if(c1 < 0 || c1 > 255)
312  {
313  if(NOQUIET) error2("Converror %d %d",i,c1);
314  return -1;
315  }
316  if(c1 == 0)
317  c1 = 2;
318  fr->conv16to8[i] = (unsigned char) c1;
319  }
320  }
321  break;
322  case MPG123_ENC_SIGNED_8:
323  for(i=-4096;i<4096;i++)
324  fr->conv16to8[i] = i>>5;
325  break;
327  for(i=-4096;i<4096;i++)
328  fr->conv16to8[i] = (i>>5)+128;
329  break;
330  case MPG123_ENC_ALAW_8:
331  {
332  /*
333  Let's believe Wikipedia (http://en.wikipedia.org/wiki/G.711) that this
334  is the correct table:
335 
336  s0000000wxyza... n000wxyz [0-31] -> [0-15]
337  s0000001wxyza... n001wxyz [32-63] -> [16-31]
338  s000001wxyzab... n010wxyz [64-127] -> [32-47]
339  s00001wxyzabc... n011wxyz [128-255] -> [48-63]
340  s0001wxyzabcd... n100wxyz [256-511] -> [64-79]
341  s001wxyzabcde... n101wxyz [512-1023] -> [80-95]
342  s01wxyzabcdef... n110wxyz [1024-2047] -> [96-111]
343  s1wxyzabcdefg... n111wxyz [2048-4095] -> [112-127]
344 
345  Let's extend to -4096, too.
346  Also, bytes are xored with 0x55 for transmission.
347 
348  Since it sounds OK, I assume it is fine;-)
349  */
350  for(i=0; i<64; ++i)
351  fr->conv16to8[i] = ((unsigned int)i)>>1;
352  for(i=64; i<128; ++i)
353  fr->conv16to8[i] = ((((unsigned int)i)>>2) & 0xf) | (2<<4);
354  for(i=128; i<256; ++i)
355  fr->conv16to8[i] = ((((unsigned int)i)>>3) & 0xf) | (3<<4);
356  for(i=256; i<512; ++i)
357  fr->conv16to8[i] = ((((unsigned int)i)>>4) & 0xf) | (4<<4);
358  for(i=512; i<1024; ++i)
359  fr->conv16to8[i] = ((((unsigned int)i)>>5) & 0xf) | (5<<4);
360  for(i=1024; i<2048; ++i)
361  fr->conv16to8[i] = ((((unsigned int)i)>>6) & 0xf) | (6<<4);
362  for(i=2048; i<4096; ++i)
363  fr->conv16to8[i] = ((((unsigned int)i)>>7) & 0xf) | (7<<4);
364 
365  for(i=-4095; i<0; ++i)
366  fr->conv16to8[i] = fr->conv16to8[-i] | 0x80;
367 
368  fr->conv16to8[-4096] = fr->conv16to8[-4095];
369 
370  for(i=-4096;i<4096;i++)
371  {
372  /* fr->conv16to8[i] = - i>>5; */
373  /* fprintf(stderr, "table %i %i\n", i<<AUSHIFT, fr->conv16to8[i]); */
374  fr->conv16to8[i] ^= 0x55;
375  }
376  }
377  break;
378  default:
380  if(NOQUIET) error("Unknown 8 bit encoding choice.");
381  return -1;
382  break;
383  }
384 
385  return 0;
386 }
#define error(str)
Definition: mkdosfs.c:1605
const GLfloat * m
Definition: glext.h:10848
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned char
Definition: typeof.h:29
unsigned char * conv16to8
Definition: frame.h:134
#define error2(s, a, b)
Definition: debug.h:110
#define NOQUIET
GLenum mode
Definition: glext.h:6217
struct audioformat af
Definition: frame.h:266
#define malloc
Definition: debug_ros.c:4
unsigned char * conv16to8_buf
Definition: frame.h:133
#define mul(aa, bb)
Definition: mvAesAlg.c:25
#define log(outFile, fmt,...)
Definition: util.h:15
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

◆ make_decode_tables()

void make_decode_tables ( mpg123_handle fr)

Definition at line 181 of file tabinit.c.

182 {
183  int i,j;
184  int idx = 0;
185  double scaleval;
186 #ifdef REAL_IS_FIXED
187  real scaleval_long;
188 #endif
189  /* Scale is always based on 1.0 . */
190  scaleval = -0.5*(fr->lastscale < 0 ? fr->p.outscale : fr->lastscale);
191  debug1("decode tables with scaleval %g", scaleval);
192 #ifdef REAL_IS_FIXED
193  scaleval_long = DOUBLE_TO_REAL_15(scaleval);
194  debug1("decode table with fixed scaleval %li", (long)scaleval_long);
195  if(scaleval_long > 28618 || scaleval_long < -28618)
196  {
197  /* TODO: Limit the scaleval itself or limit the multiplication afterwards?
198  The former basically disables significant amplification for fixed-point
199  decoders, but avoids (possibly subtle) distortion. */
200  /* This would limit the amplification instead:
201  scaleval_long = scaleval_long < 0 ? -28618 : 28618; */
202  if(NOQUIET) warning("Desired amplification may introduce distortion.");
203  }
204 #endif
205  for(i=0,j=0;i<256;i++,j++,idx+=32)
206  {
207  if(idx < 512+16)
208 #ifdef REAL_IS_FIXED
209  fr->decwin[idx+16] = fr->decwin[idx] =
210  REAL_SCALE_WINDOW(sat_mul32(intwinbase[j],scaleval_long));
211 #else
212  fr->decwin[idx+16] = fr->decwin[idx] = DOUBLE_TO_REAL((double) intwinbase[j] * scaleval);
213 #endif
214 
215  if(i % 32 == 31)
216  idx -= 1023;
217  if(i % 64 == 63)
218 #ifdef REAL_IS_FIXED
219  scaleval_long = - scaleval_long;
220 #else
221  scaleval = - scaleval;
222 #endif
223  }
224 
225  for( /* i=256 */ ;i<512;i++,j--,idx+=32)
226  {
227  if(idx < 512+16)
228 #ifdef REAL_IS_FIXED
229  fr->decwin[idx+16] = fr->decwin[idx] =
230  REAL_SCALE_WINDOW(sat_mul32(intwinbase[j],scaleval_long));
231 #else
232  fr->decwin[idx+16] = fr->decwin[idx] = DOUBLE_TO_REAL((double) intwinbase[j] * scaleval);
233 #endif
234 
235  if(i % 32 == 31)
236  idx -= 1023;
237  if(i % 64 == 63)
238 #ifdef REAL_IS_FIXED
239  scaleval_long = - scaleval_long;
240 #else
241  scaleval = - scaleval;
242 #endif
243  }
244 #if defined(OPT_X86_64) || defined(OPT_ALTIVEC) || defined(OPT_SSE) || defined(OPT_SSE_VINTAGE) || defined(OPT_ARM) || defined(OPT_NEON) || defined(OPT_NEON64) || defined(OPT_AVX)
245  if( fr->cpu_opts.type == x86_64
246  || fr->cpu_opts.type == altivec
247  || fr->cpu_opts.type == sse
248  || fr->cpu_opts.type == sse_vintage
249  || fr->cpu_opts.type == arm
250  || fr->cpu_opts.type == neon
251  || fr->cpu_opts.type == neon64
252  || fr->cpu_opts.type == avx )
253  { /* for float SSE / AltiVec / ARM decoder */
254  for(i=512; i<512+32; i++)
255  {
256  fr->decwin[i] = (i&1) ? fr->decwin[i] : 0;
257  }
258  for(i=0; i<512; i++)
259  {
260  fr->decwin[512+32+i] = -fr->decwin[511-i];
261  }
262 #if defined(OPT_NEON) || defined(OPT_NEON64)
263  if(fr->cpu_opts.type == neon || fr->cpu_opts.type == neon64)
264  {
265  for(i=0; i<512; i+=2)
266  {
267  fr->decwin[i] = -fr->decwin[i];
268  }
269  }
270 #endif
271  }
272 #endif
273  debug("decode tables done");
274 }
struct mpg123_pars_struct p
Definition: frame.h:287
Definition: optimize.h:107
#define DOUBLE_TO_REAL(x)
static long intwinbase[]
Definition: tabinit.c:48
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
struct mpg123_handle_struct::@3299 cpu_opts
Definition: optimize.h:112
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int idx
Definition: utils.c:41
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define NOQUIET
#define DOUBLE_TO_REAL_15(x)
double lastscale
Definition: frame.h:235
Definition: optimize.h:109
Definition: optimize.h:110
#define debug(msg)
Definition: key_call.c:71
#define debug1(s, a)
Definition: debug.h:52
#define warning(s)
Definition: debug.h:71

◆ ntom_frame_outsamples()

off_t ntom_frame_outsamples ( mpg123_handle fr)

Definition at line 73 of file ntom.c.

74 {
75  /* The do this before decoding the separate channels, so there is only one common ntom value. */
76  int ntm = fr->ntom_val[0];
77  ntm += fr->spf*fr->ntom_step;
78  return ntm/NTOM_MUL;
79 }
#define NTOM_MUL
Definition: decode.h:32
unsigned long ntom_val[2]
Definition: frame.h:148
unsigned long ntom_step
Definition: frame.h:149

◆ ntom_frameoff()

off_t ntom_frameoff ( mpg123_handle fr,
off_t  soff 
)

Definition at line 130 of file ntom.c.

131 {
132  off_t ioff = 0; /* frames or samples */
133  off_t ntm = ntom_val(fr,0);
134 #ifdef SAFE_NTOM
135  if(soff <= 0) return 0;
136  for(ioff=0; 1; ++ioff)
137  {
138  ntm += fr->spf*fr->ntom_step;
139  if(ntm/NTOM_MUL > soff) break;
140  soff -= ntm/NTOM_MUL;
141  ntm -= (ntm/NTOM_MUL)*NTOM_MUL;
142  }
143  return ioff;
144 #else
145  ioff = (soff*(off_t)NTOM_MUL-ntm)/(off_t)fr->ntom_step;
146  return ioff/(off_t)fr->spf;
147 #endif
148 }
__kernel_off_t off_t
Definition: linux.h:201
#define NTOM_MUL
Definition: decode.h:32
#define off_t
Definition: dosfsck.h:5
unsigned long ntom_val(mpg123_handle *fr, off_t frame)
Definition: ntom.c:46
unsigned long ntom_step
Definition: frame.h:149

◆ ntom_frmouts()

off_t ntom_frmouts ( mpg123_handle fr,
off_t  frame 
)

Definition at line 82 of file ntom.c.

83 {
84 #ifdef SAFE_NTOM
85  off_t f;
86 #endif
87  off_t soff = 0;
88  off_t ntm = ntom_val(fr,0);
89 #ifdef SAFE_NTOM
90  if(frame <= 0) return 0;
91  for(f=0; f<frame; ++f)
92  {
93  ntm += fr->spf*fr->ntom_step;
94  soff += ntm/NTOM_MUL;
95  ntm -= (ntm/NTOM_MUL)*NTOM_MUL;
96  }
97 #else
98  soff = (ntm + frame*(off_t)fr->spf*(off_t)fr->ntom_step)/(off_t)NTOM_MUL;
99 #endif
100  return soff;
101 }
__kernel_off_t off_t
Definition: linux.h:201
#define NTOM_MUL
Definition: decode.h:32
#define off_t
Definition: dosfsck.h:5
GLfloat f
Definition: glext.h:7540
unsigned long ntom_val(mpg123_handle *fr, off_t frame)
Definition: ntom.c:46
#define f
Definition: ke_i.h:83
unsigned long ntom_step
Definition: frame.h:149

◆ ntom_ins2outs()

off_t ntom_ins2outs ( mpg123_handle fr,
off_t  ins 
)

Definition at line 104 of file ntom.c.

105 {
106  off_t soff = 0;
107  off_t ntm = ntom_val(fr,0);
108 #ifdef SAFE_NTOM
109  {
110  off_t block = fr->spf;
111  if(ins <= 0) return 0;
112  do
113  {
114  off_t nowblock = ins > block ? block : ins;
115  ntm += nowblock*fr->ntom_step;
116  soff += ntm/NTOM_MUL;
117  ntm -= (ntm/NTOM_MUL)*NTOM_MUL;
118  ins -= nowblock;
119  } while(ins > 0);
120  }
121 #else
122  /* Beware of overflows: when off_t is 32bits, the multiplication blows too easily.
123  Of course, it blows for 64bits, too, in theory, but that's for _really_ large files. */
124  soff = ((off_t)ntm + (off_t)ins*(off_t)fr->ntom_step)/(off_t)NTOM_MUL;
125 #endif
126  return soff;
127 }
static unsigned int block
Definition: xmlmemory.c:118
__kernel_off_t off_t
Definition: linux.h:201
#define NTOM_MUL
Definition: decode.h:32
#define off_t
Definition: dosfsck.h:5
unsigned long ntom_val(mpg123_handle *fr, off_t frame)
Definition: ntom.c:46
unsigned long ntom_step
Definition: frame.h:149

◆ ntom_set_ntom()

void ntom_set_ntom ( mpg123_handle fr,
off_t  num 
)

Definition at line 66 of file ntom.c.

67 {
68  fr->ntom_val[1] = fr->ntom_val[0] = ntom_val(fr, num);
69 }
GLuint GLuint num
Definition: glext.h:9618
unsigned long ntom_val(mpg123_handle *fr, off_t frame)
Definition: ntom.c:46
unsigned long ntom_val[2]
Definition: frame.h:148

◆ ntom_val()

unsigned long ntom_val ( mpg123_handle fr,
off_t  frame 
)

Definition at line 46 of file ntom.c.

47 {
48  off_t ntm;
49 #ifdef SAFE_NTOM /* Carry out the loop, without the threatening integer overflow. */
50  off_t f;
51  ntm = NTOM_MUL>>1; /* for frame 0 */
52  for(f=0; f<frame; ++f) /* for frame > 0 */
53  {
54  ntm += fr->spf*fr->ntom_step;
55  ntm -= (ntm/NTOM_MUL)*NTOM_MUL;
56  }
57 #else /* Just make one computation with overall sample offset. */
58  ntm = (NTOM_MUL>>1) + fr->spf*frame*fr->ntom_step;
59  ntm -= (ntm/NTOM_MUL)*NTOM_MUL;
60 #endif
61  return (unsigned long) ntm;
62 }
__kernel_off_t off_t
Definition: linux.h:201
#define NTOM_MUL
Definition: decode.h:32
GLfloat f
Definition: glext.h:7540
#define f
Definition: ke_i.h:83
unsigned long ntom_step
Definition: frame.h:149

Referenced by ntom_frameoff(), ntom_frmouts(), ntom_ins2outs(), ntom_set_ntom(), and synth_ntom_set_step().

◆ prepare_decode_tables()

void prepare_decode_tables ( void  )

Definition at line 76 of file tabinit.c.

77 {
78 #if !defined(REAL_IS_FIXED) || !defined(PRECALC_TABLES)
79  int i,k,kr,divv;
80  real *costab;
81 
82  for(i=0;i<5;i++)
83  {
84  kr=0x10>>i; divv=0x40>>i;
85  costab = pnts[i];
86  for(k=0;k<kr;k++)
87  costab[k] = DOUBLE_TO_REAL(1.0 / (2.0 * cos(M_PI * ((double) k * 2.0 + 1.0) / (double) divv)));
88  }
89 #endif
90 }
#define DOUBLE_TO_REAL(x)
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
_STLP_DECLSPEC complex< float > _STLP_CALL cos(const complex< float > &)
real * pnts[]
Definition: tabinit.c:45
#define M_PI
Definition: macros.h:263
int k
Definition: mpi.c:3369

◆ synth_1to1()

int synth_1to1 ( real ,
int  ,
mpg123_handle ,
int   
)

◆ synth_1to1_3dnow()

int synth_1to1_3dnow ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_3dnowext()

int synth_1to1_3dnowext ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_8bit()

int synth_1to1_8bit ( real ,
int  ,
mpg123_handle ,
int   
)

◆ synth_1to1_8bit_i386()

int synth_1to1_8bit_i386 ( real ,
int  ,
mpg123_handle ,
int   
)

◆ synth_1to1_8bit_m2s()

int synth_1to1_8bit_m2s ( real ,
mpg123_handle  
)

◆ synth_1to1_8bit_mono()

int synth_1to1_8bit_mono ( real ,
mpg123_handle  
)

◆ synth_1to1_8bit_wrap()

int synth_1to1_8bit_wrap ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_8bit_wrap_m2s()

int synth_1to1_8bit_wrap_m2s ( real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_8bit_wrap_mono()

int synth_1to1_8bit_wrap_mono ( real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_altivec()

int synth_1to1_altivec ( real ,
int  ,
mpg123_handle ,
int   
)

Definition at line 258 of file synth_altivec.c.

259 {
260  short *samples = (short *) (fr->buffer.data+fr->buffer.fill);
261 
262  real *b0, **buf;
263  int clip;
264  int bo1;
265 #ifndef NO_EQUALIZER
266  if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
267 #endif
268  if(!channel)
269  {
270  fr->bo--;
271  fr->bo &= 0xf;
272  buf = fr->real_buffs[0];
273  }
274  else
275  {
276  samples++;
277  buf = fr->real_buffs[1];
278  }
279 
280  if(fr->bo & 0x1)
281  {
282  b0 = buf[0];
283  bo1 = fr->bo;
284  dct64_altivec(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
285  }
286  else
287  {
288  b0 = buf[1];
289  bo1 = fr->bo+1;
290  dct64_altivec(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
291  }
292 
293 
294  {
295  register int j;
296  real *window = fr->decwin + 16 - bo1;
297 
298  ALIGNED(16) int clip_tmp[4];
299  vector float v1,v2,v3,v4,v5,v6,v7,v8,v9;
300  vector unsigned char vperm1,vperm2,vperm3,vperm4;
301  vector float vsum,vsum2,vsum3,vsum4,vmin,vmax,vzero;
302  vector signed int vclip;
303  vector signed short vsample1,vsample2;
304  vector unsigned int vshift;
305  vclip = vec_xor(vclip,vclip);
306  vzero = vec_xor(vzero,vzero);
307  vshift = vec_splat_u32(-1); /* 31 */
308 #ifdef __APPLE__
309  vmax = (vector float)(32767.0f);
310  vmin = (vector float)(-32768.0f);
311  vperm4 = (vector unsigned char)(0,1,18,19,2,3,22,23,4,5,26,27,6,7,30,31);
312 #else
313  vmax = (vector float){32767.0f,32767.0f,32767.0f,32767.0f};
314  vmin = (vector float){-32768.0f,-32768.0f,-32768.0f,-32768.0f};
315  vperm4 = (vector unsigned char){0,1,18,19,2,3,22,23,4,5,26,27,6,7,30,31};
316 #endif
317 
318  vperm1 = vec_lvsl(0,window);
319  vperm2 = vec_lvsl(0,samples);
320  vperm3 = vec_lvsr(0,samples);
321  for (j=4;j;j--)
322  {
323  SYNTH_ALTIVEC(16);
324 
325  vsum = vec_sub(v5,v6);
326  v9 = vec_sub(v7,v8);
327  vsum = vec_add(vsum,v9);
328 
329  v3 = vec_round(vsum);
330  v3 = (vector float)vec_cts(v3,0);
331  v1 = (vector float)vec_cmpgt(vsum,vmax);
332  v2 = (vector float)vec_cmplt(vsum,vmin);
333  vsample1 = vec_ld(0,samples);
334  vsample2 = vec_ld(15,samples);
335  v3 = (vector float)vec_packs((vector signed int)v3,(vector signed int)v3);
336  v4 = (vector float)vec_perm(vsample1,vsample2,vperm2);
337  v5 = (vector float)vec_perm(v3,v4,vperm4);
338  v6 = (vector float)vec_perm(vsample2,vsample1,vperm2);
339  v7 = (vector float)vec_perm(v5,v6,vperm3);
340  v8 = (vector float)vec_perm(v6,v5,vperm3);
341  vec_st((vector signed short)v7,15,samples);
342  vec_st((vector signed short)v8,0,samples);
343  samples += 8;
344 
345  v1 = (vector float)vec_sr((vector unsigned int)v1, vshift);
346  v2 = (vector float)vec_sr((vector unsigned int)v2, vshift);
347  v1 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2);
348  vclip = vec_sums((vector signed int)v1,vclip);
349  }
350 
351  for (j=4;j;j--)
352  {
353  SYNTH_ALTIVEC(-16);
354 
355  vsum = vec_add(v5,v6);
356  v9 = vec_add(v7,v8);
357  vsum = vec_add(vsum,v9);
358 
359  v3 = vec_round(vsum);
360  v3 = (vector float)vec_cts(v3,0);
361  v1 = (vector float)vec_cmpgt(vsum,vmax);
362  v2 = (vector float)vec_cmplt(vsum,vmin);
363  vsample1 = vec_ld(0,samples);
364  vsample2 = vec_ld(15,samples);
365  v3 = (vector float)vec_packs((vector signed int)v3,(vector signed int)v3);
366  v4 = (vector float)vec_perm(vsample1,vsample2,vperm2);
367  v5 = (vector float)vec_perm(v3,v4,vperm4);
368  v6 = (vector float)vec_perm(vsample2,vsample1,vperm2);
369  v7 = (vector float)vec_perm(v5,v6,vperm3);
370  v8 = (vector float)vec_perm(v6,v5,vperm3);
371  vec_st((vector signed short)v7,15,samples);
372  vec_st((vector signed short)v8,0,samples);
373  samples += 8;
374 
375  v1 = (vector float)vec_sr((vector unsigned int)v1, vshift);
376  v2 = (vector float)vec_sr((vector unsigned int)v2, vshift);
377  v1 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2);
378  vclip = vec_sums((vector signed int)v1,vclip);
379  }
380 
381  vec_st(vclip,0,clip_tmp);
382  clip = clip_tmp[3];
383  }
384  if(final) fr->buffer.fill += 128;
385 
386  return clip;
387 }
GLsizei samples
Definition: glext.h:7006
#define ALIGNED(a)
Definition: optimize.h:190
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3706
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
#define SYNTH_ALTIVEC(B0STEP)
Definition: synth_altivec.c:17
unsigned char
Definition: typeof.h:29
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define do_equalizer
Definition: intsym.h:164
GLfloat f
Definition: glext.h:7540
#define dct64_altivec
Definition: intsym.h:133
static IHTMLWindow2 * window
Definition: events.c:77
GLfloat GLfloat GLfloat GLfloat v3
Definition: glext.h:6064
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063
GLfloat GLfloat v1
Definition: glext.h:6062
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

◆ synth_1to1_arm()

int synth_1to1_arm ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_avx()

int synth_1to1_avx ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_dither()

int synth_1to1_dither ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_fltst_altivec()

int synth_1to1_fltst_altivec ( real ,
real ,
mpg123_handle  
)

Definition at line 656 of file synth_altivec.c.

657 {
658  real *samples = (real *) (fr->buffer.data+fr->buffer.fill);
659 
660  real *b0l, *b0r, **bufl, **bufr;
661  int bo1;
662 #ifndef NO_EQUALIZER
663  if(fr->have_eq_settings)
664  {
665  do_equalizer(bandPtr_l,0,fr->equalizer);
666  do_equalizer(bandPtr_r,1,fr->equalizer);
667  }
668 #endif
669  fr->bo--;
670  fr->bo &= 0xf;
671  bufl = fr->real_buffs[0];
672  bufr = fr->real_buffs[1];
673 
674  if(fr->bo & 0x1)
675  {
676  b0l = bufl[0];
677  b0r = bufr[0];
678  bo1 = fr->bo;
679  dct64_altivec(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
680  dct64_altivec(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
681  }
682  else
683  {
684  b0l = bufl[1];
685  b0r = bufr[1];
686  bo1 = fr->bo+1;
687  dct64_altivec(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
688  dct64_altivec(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
689  }
690 
691 
692  {
693  register int j;
694  real *window = fr->decwin + 16 - bo1;
695 
696  vector float v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13;
697  vector unsigned char vperm1,vperm2;
698  vector float vsum,vsum2,vsum3,vsum4,vsum5,vsum6,vsum7,vsum8,vscale,vzero;
699  vector float vprev;
700  vzero = vec_xor(vzero,vzero);
701 #ifdef __APPLE__
702  vscale = (vector float)(1.0f/32768.0f);
703 #else
704  vscale = (vector float){1.0f/32768.0f,1.0f/32768.0f,1.0f/32768.0f,1.0f/32768.0f};
705 #endif
706 
707  vperm1 = vec_lvsl(0,window);
708  vperm2 = vec_lvsr(0,samples);
709  vprev = vec_perm(vec_ld(0,samples),vec_ld(0,samples),vec_lvsl(0,samples));
710  for (j=4;j;j--)
711  {
713 
714  vsum = vec_sub(vsum,vsum2);
715  vsum2 = vec_sub(vsum5,vsum6);
716  vsum3 = vec_sub(vsum3,vsum4);
717  vsum4 = vec_sub(vsum7,vsum8);
718  vsum = vec_add(vsum,vsum3);
719  vsum2 = vec_add(vsum2,vsum4);
720  vsum = vec_madd(vsum, vscale, vzero);
721  vsum2 = vec_madd(vsum2, vscale, vzero);
722 
723  v1 = vec_mergeh(vsum, vsum2);
724  v2 = vec_mergel(vsum, vsum2);
725  v3 = vec_perm(vprev,v1,vperm2);
726  v4 = vec_perm(v1,v2,vperm2);
727  vprev = v2;
728  vec_st(v3,0,samples);
729  vec_st(v4,16,samples);
730  samples += 8;
731  }
732 
733  for (j=4;j;j--)
734  {
736 
737  vsum = vec_add(vsum,vsum2);
738  vsum2 = vec_add(vsum5,vsum6);
739  vsum3 = vec_add(vsum3,vsum4);
740  vsum4 = vec_add(vsum7,vsum8);
741  vsum = vec_add(vsum,vsum3);
742  vsum2 = vec_add(vsum2,vsum4);
743  vsum = vec_madd(vsum, vscale, vzero);
744  vsum2 = vec_madd(vsum2, vscale, vzero);
745 
746  v1 = vec_mergeh(vsum, vsum2);
747  v2 = vec_mergel(vsum, vsum2);
748  v3 = vec_perm(vprev,v1,vperm2);
749  v4 = vec_perm(v1,v2,vperm2);
750  vprev = v2;
751  vec_st(v3,0,samples);
752  vec_st(v4,16,samples);
753  samples += 8;
754  }
755 
756  if((size_t)samples & 0xf)
757  {
758  v1 = (vector float)vec_perm(vec_ld(0,samples),vec_ld(0,samples),vec_lvsl(0,samples));
759  v2 = (vector float)vec_perm(vprev,v1,vperm2);
760  vec_st(v2,0,samples);
761  }
762  }
763  fr->buffer.fill += 256;
764 
765  return 0;
766 }
GLsizei samples
Definition: glext.h:7006
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3706
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
#define SYNTH_STEREO_ALTIVEC(B0STEP)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define do_equalizer
Definition: intsym.h:164
GLfloat f
Definition: glext.h:7540
#define dct64_altivec
Definition: intsym.h:133
static IHTMLWindow2 * window
Definition: events.c:77
GLfloat GLfloat GLfloat GLfloat v3
Definition: glext.h:6064
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063
GLfloat GLfloat v1
Definition: glext.h:6062

◆ synth_1to1_fltst_avx()

int synth_1to1_fltst_avx ( real ,
real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_fltst_neon64()

int synth_1to1_fltst_neon64 ( real ,
real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_i386()

int synth_1to1_i386 ( real ,
int  ,
mpg123_handle ,
int   
)

◆ synth_1to1_i586()

int synth_1to1_i586 ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_i586_dither()

int synth_1to1_i586_dither ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_m2s()

int synth_1to1_m2s ( real ,
mpg123_handle  
)

◆ synth_1to1_mmx()

int synth_1to1_mmx ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_mono()

int synth_1to1_mono ( real ,
mpg123_handle  
)

◆ synth_1to1_neon()

int synth_1to1_neon ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_neon64()

int synth_1to1_neon64 ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_real()

int synth_1to1_real ( real ,
int  ,
mpg123_handle ,
int   
)

◆ synth_1to1_real_altivec()

int synth_1to1_real_altivec ( real ,
int  ,
mpg123_handle ,
int   
)

Definition at line 540 of file synth_altivec.c.

541 {
542  real *samples = (real *) (fr->buffer.data+fr->buffer.fill);
543 
544  real *b0, **buf;
545  int bo1;
546 #ifndef NO_EQUALIZER
547  if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
548 #endif
549  if(!channel)
550  {
551  fr->bo--;
552  fr->bo &= 0xf;
553  buf = fr->real_buffs[0];
554  }
555  else
556  {
557  samples++;
558  buf = fr->real_buffs[1];
559  }
560 
561  if(fr->bo & 0x1)
562  {
563  b0 = buf[0];
564  bo1 = fr->bo;
565  dct64_altivec(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
566  }
567  else
568  {
569  b0 = buf[1];
570  bo1 = fr->bo+1;
571  dct64_altivec(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
572  }
573 
574 
575  {
576  register int j;
577  real *window = fr->decwin + 16 - bo1;
578 
579  vector float v1,v2,v3,v4,v5,v6,v7,v8,v9;
580  vector unsigned char vperm1,vperm2,vperm3,vperm4, vperm5;
581  vector float vsum,vsum2,vsum3,vsum4,vscale,vzero;
582  vector float vsample1,vsample2,vsample3;
583  vzero = vec_xor(vzero, vzero);
584 #ifdef __APPLE__
585  vscale = (vector float)(1.0f/32768.0f);
586  vperm4 = (vector unsigned char)(0,1,2,3,20,21,22,23,4,5,6,7,28,29,30,31);
587  vperm5 = (vector unsigned char)(8,9,10,11,20,21,22,23,12,13,14,15,28,29,30,31);
588 #else
589  vscale = (vector float){1.0f/32768.0f,1.0f/32768.0f,1.0f/32768.0f,1.0f/32768.0f};
590  vperm4 = (vector unsigned char){0,1,2,3,20,21,22,23,4,5,6,7,28,29,30,31};
591  vperm5 = (vector unsigned char){8,9,10,11,20,21,22,23,12,13,14,15,28,29,30,31};
592 #endif
593 
594  vperm1 = vec_lvsl(0,window);
595  vperm2 = vec_lvsl(0,samples);
596  vperm3 = vec_lvsr(0,samples);
597  for (j=4;j;j--)
598  {
599  SYNTH_ALTIVEC(16);
600 
601  vsum = vec_sub(v5,v6);
602  v9 = vec_sub(v7,v8);
603  vsum = vec_add(vsum,v9);
604  vsum = vec_madd(vsum, vscale, vzero);
605 
606  vsample1 = vec_ld(0,samples);
607  vsample2 = vec_ld(16,samples);
608  vsample3 = vec_ld(31,samples);
609  v1 = vec_perm(vsample1, vsample2, vperm2);
610  v2 = vec_perm(vsample2, vsample3, vperm2);
611  v1 = vec_perm(vsum, v1, vperm4);
612  v2 = vec_perm(vsum, v2, vperm5);
613  v3 = vec_perm(vsample3, vsample2, vperm2);
614  v4 = vec_perm(vsample2, vsample1, vperm2);
615  v5 = vec_perm(v2, v3, vperm3);
616  v6 = vec_perm(v1, v2, vperm3);
617  v7 = vec_perm(v4, v1, vperm3);
618  vec_st(v5,31,samples);
619  vec_st(v6,16,samples);
620  vec_st(v7,0,samples);
621  samples += 8;
622  }
623 
624  for (j=4;j;j--)
625  {
626  SYNTH_ALTIVEC(-16);
627 
628  vsum = vec_add(v5,v6);
629  v9 = vec_add(v7,v8);
630  vsum = vec_add(vsum,v9);
631  vsum = vec_madd(vsum, vscale, vzero);
632 
633  vsample1 = vec_ld(0,samples);
634  vsample2 = vec_ld(16,samples);
635  vsample3 = vec_ld(31,samples);
636  v1 = vec_perm(vsample1, vsample2, vperm2);
637  v2 = vec_perm(vsample2, vsample3, vperm2);
638  v1 = vec_perm(vsum, v1, vperm4);
639  v2 = vec_perm(vsum, v2, vperm5);
640  v3 = vec_perm(vsample3, vsample2, vperm2);
641  v4 = vec_perm(vsample2, vsample1, vperm2);
642  v5 = vec_perm(v2, v3, vperm3);
643  v6 = vec_perm(v1, v2, vperm3);
644  v7 = vec_perm(v4, v1, vperm3);
645  vec_st(v5,31,samples);
646  vec_st(v6,16,samples);
647  vec_st(v7,0,samples);
648  samples += 8;
649  }
650  }
651  if(final) fr->buffer.fill += 256;
652 
653  return 0;
654 }
GLsizei samples
Definition: glext.h:7006
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3706
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
#define SYNTH_ALTIVEC(B0STEP)
Definition: synth_altivec.c:17
unsigned char
Definition: typeof.h:29
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define do_equalizer
Definition: intsym.h:164
GLfloat f
Definition: glext.h:7540
#define dct64_altivec
Definition: intsym.h:133
static IHTMLWindow2 * window
Definition: events.c:77
GLfloat GLfloat GLfloat GLfloat v3
Definition: glext.h:6064
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063
GLfloat GLfloat v1
Definition: glext.h:6062

◆ synth_1to1_real_avx()

int synth_1to1_real_avx ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_real_i386()

int synth_1to1_real_i386 ( real ,
int  ,
mpg123_handle ,
int   
)

◆ synth_1to1_real_m2s()

int synth_1to1_real_m2s ( real ,
mpg123_handle  
)

◆ synth_1to1_real_mono()

int synth_1to1_real_mono ( real ,
mpg123_handle  
)

◆ synth_1to1_real_neon()

int synth_1to1_real_neon ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_real_neon64()

int synth_1to1_real_neon64 ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_real_sse()

int synth_1to1_real_sse ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_real_stereo_neon()

int synth_1to1_real_stereo_neon ( real ,
real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_real_stereo_sse()

int synth_1to1_real_stereo_sse ( real ,
real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_real_stereo_x86_64()

int synth_1to1_real_stereo_x86_64 ( real ,
real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_real_x86_64()

int synth_1to1_real_x86_64 ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_s32()

int synth_1to1_s32 ( real ,
int  ,
mpg123_handle ,
int   
)

◆ synth_1to1_s32_altivec()

int synth_1to1_s32_altivec ( real ,
int  ,
mpg123_handle ,
int   
)

Definition at line 768 of file synth_altivec.c.

769 {
770  int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
771 
772  real *b0, **buf;
773  int clip;
774  int bo1;
775 #ifndef NO_EQUALIZER
776  if(fr->have_eq_settings) do_equalizer(bandPtr,channel,fr->equalizer);
777 #endif
778  if(!channel)
779  {
780  fr->bo--;
781  fr->bo &= 0xf;
782  buf = fr->real_buffs[0];
783  }
784  else
785  {
786  samples++;
787  buf = fr->real_buffs[1];
788  }
789 
790  if(fr->bo & 0x1)
791  {
792  b0 = buf[0];
793  bo1 = fr->bo;
794  dct64_altivec(buf[1]+((fr->bo+1)&0xf),buf[0]+fr->bo,bandPtr);
795  }
796  else
797  {
798  b0 = buf[1];
799  bo1 = fr->bo+1;
800  dct64_altivec(buf[0]+fr->bo,buf[1]+fr->bo+1,bandPtr);
801  }
802 
803 
804  {
805  register int j;
806  real *window = fr->decwin + 16 - bo1;
807 
808  ALIGNED(16) int clip_tmp[4];
809  vector float v1,v2,v3,v4,v5,v6,v7,v8,v9;
810  vector unsigned char vperm1,vperm2,vperm3,vperm4,vperm5;
811  vector float vsum,vsum2,vsum3,vsum4,vmax,vmin,vzero;
812  vector signed int vsample1,vsample2,vsample3;
813  vector unsigned int vshift;
814  vector signed int vclip;
815  vzero = vec_xor(vzero, vzero);
816  vclip = vec_xor(vclip, vclip);
817  vshift = vec_splat_u32(-1); /* 31 */
818 #ifdef __APPLE__
819  vmax = (vector float)(32767.999f);
820  vmin = (vector float)(-32768.0f);
821  vperm4 = (vector unsigned char)(0,1,2,3,20,21,22,23,4,5,6,7,28,29,30,31);
822  vperm5 = (vector unsigned char)(8,9,10,11,20,21,22,23,12,13,14,15,28,29,30,31);
823 #else
824  vmax = (vector float){32767.999f,32767.999f,32767.999f,32767.999f};
825  vmin = (vector float){-32768.0f,-32768.0f,-32768.0f,-32768.0f};
826  vperm4 = (vector unsigned char){0,1,2,3,20,21,22,23,4,5,6,7,28,29,30,31};
827  vperm5 = (vector unsigned char){8,9,10,11,20,21,22,23,12,13,14,15,28,29,30,31};
828 #endif
829 
830  vperm1 = vec_lvsl(0,window);
831  vperm2 = vec_lvsl(0,samples);
832  vperm3 = vec_lvsr(0,samples);
833  for (j=4;j;j--)
834  {
835  SYNTH_ALTIVEC(16);
836 
837  vsum = vec_sub(v5,v6);
838  v9 = vec_sub(v7,v8);
839  v1 = vec_add(vsum,v9);
840  vsum = (vector float)vec_cts(v1,16);
841  v8 = (vector float)vec_cmpgt(v1,vmax);
842  v9 = (vector float)vec_cmplt(v1,vmin);
843 
844  vsample1 = vec_ld(0,samples);
845  vsample2 = vec_ld(16,samples);
846  vsample3 = vec_ld(31,samples);
847  v1 = (vector float)vec_perm(vsample1, vsample2, vperm2);
848  v2 = (vector float)vec_perm(vsample2, vsample3, vperm2);
849  v1 = vec_perm(vsum, v1, vperm4);
850  v2 = vec_perm(vsum, v2, vperm5);
851  v3 = (vector float)vec_perm(vsample3, vsample2, vperm2);
852  v4 = (vector float)vec_perm(vsample2, vsample1, vperm2);
853  v5 = vec_perm(v2, v3, vperm3);
854  v6 = vec_perm(v1, v2, vperm3);
855  v7 = vec_perm(v4, v1, vperm3);
856  vec_st((vector signed int)v5,31,samples);
857  vec_st((vector signed int)v6,16,samples);
858  vec_st((vector signed int)v7,0,samples);
859  samples += 8;
860 
861  v1 = (vector float)vec_sr((vector unsigned int)v8, vshift);
862  v2 = (vector float)vec_sr((vector unsigned int)v9, vshift);
863  v1 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2);
864  vclip = vec_sums((vector signed int)v1,vclip);
865  }
866 
867  for (j=4;j;j--)
868  {
869  SYNTH_ALTIVEC(-16);
870 
871  vsum = vec_add(v5,v6);
872  v9 = vec_add(v7,v8);
873  v1 = vec_add(vsum,v9);
874  vsum = (vector float)vec_cts(v1,16);
875  v8 = (vector float)vec_cmpgt(v1,vmax);
876  v9 = (vector float)vec_cmplt(v1,vmin);
877 
878  vsample1 = vec_ld(0,samples);
879  vsample2 = vec_ld(16,samples);
880  vsample3 = vec_ld(31,samples);
881  v1 = (vector float)vec_perm(vsample1, vsample2, vperm2);
882  v2 = (vector float)vec_perm(vsample2, vsample3, vperm2);
883  v1 = vec_perm(vsum, v1, vperm4);
884  v2 = vec_perm(vsum, v2, vperm5);
885  v3 = (vector float)vec_perm(vsample3, vsample2, vperm2);
886  v4 = (vector float)vec_perm(vsample2, vsample1, vperm2);
887  v5 = vec_perm(v2, v3, vperm3);
888  v6 = vec_perm(v1, v2, vperm3);
889  v7 = vec_perm(v4, v1, vperm3);
890  vec_st((vector signed int)v5,31,samples);
891  vec_st((vector signed int)v6,16,samples);
892  vec_st((vector signed int)v7,0,samples);
893  samples += 8;
894 
895  v1 = (vector float)vec_sr((vector unsigned int)v8, vshift);
896  v2 = (vector float)vec_sr((vector unsigned int)v9, vshift);
897  v1 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2);
898  vclip = vec_sums((vector signed int)v1,vclip);
899  }
900 
901  vec_st(vclip,0,clip_tmp);
902  clip = clip_tmp[3];
903  }
904  if(final) fr->buffer.fill += 256;
905 
906  return clip;
907 }
GLsizei samples
Definition: glext.h:7006
#define ALIGNED(a)
Definition: optimize.h:190
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3706
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
#define SYNTH_ALTIVEC(B0STEP)
Definition: synth_altivec.c:17
unsigned char
Definition: typeof.h:29
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define do_equalizer
Definition: intsym.h:164
GLfloat f
Definition: glext.h:7540
#define dct64_altivec
Definition: intsym.h:133
static IHTMLWindow2 * window
Definition: events.c:77
GLfloat GLfloat GLfloat GLfloat v3
Definition: glext.h:6064
INT32 int32_t
Definition: types.h:71
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063
GLfloat GLfloat v1
Definition: glext.h:6062
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

◆ synth_1to1_s32_avx()

int synth_1to1_s32_avx ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_s32_i386()

int synth_1to1_s32_i386 ( real ,
int  ,
mpg123_handle ,
int   
)

◆ synth_1to1_s32_m2s()

int synth_1to1_s32_m2s ( real ,
mpg123_handle  
)

◆ synth_1to1_s32_mono()

int synth_1to1_s32_mono ( real ,
mpg123_handle  
)

◆ synth_1to1_s32_neon()

int synth_1to1_s32_neon ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_s32_neon64()

int synth_1to1_s32_neon64 ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_s32_sse()

int synth_1to1_s32_sse ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_s32_stereo_altivec()

int synth_1to1_s32_stereo_altivec ( real ,
real ,
mpg123_handle  
)

Definition at line 910 of file synth_altivec.c.

911 {
912  int32_t *samples = (int32_t *) (fr->buffer.data+fr->buffer.fill);
913 
914  real *b0l, *b0r, **bufl, **bufr;
915  int clip;
916  int bo1;
917 #ifndef NO_EQUALIZER
918  if(fr->have_eq_settings)
919  {
920  do_equalizer(bandPtr_l,0,fr->equalizer);
921  do_equalizer(bandPtr_r,1,fr->equalizer);
922  }
923 #endif
924  fr->bo--;
925  fr->bo &= 0xf;
926  bufl = fr->real_buffs[0];
927  bufr = fr->real_buffs[1];
928 
929  if(fr->bo & 0x1)
930  {
931  b0l = bufl[0];
932  b0r = bufr[0];
933  bo1 = fr->bo;
934  dct64_altivec(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
935  dct64_altivec(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
936  }
937  else
938  {
939  b0l = bufl[1];
940  b0r = bufr[1];
941  bo1 = fr->bo+1;
942  dct64_altivec(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
943  dct64_altivec(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
944  }
945 
946 
947  {
948  register int j;
949  real *window = fr->decwin + 16 - bo1;
950 
951  ALIGNED(16) int clip_tmp[4];
952  vector float v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13;
953  vector unsigned char vperm1,vperm2;
954  vector float vsum,vsum2,vsum3,vsum4,vsum5,vsum6,vsum7,vsum8,vmax,vmin,vzero;
955  vector float vprev;
956  vector unsigned int vshift;
957  vector signed int vclip;
958  vzero = vec_xor(vzero, vzero);
959  vclip = vec_xor(vclip, vclip);
960  vshift = vec_splat_u32(-1); /* 31 */
961 #ifdef __APPLE__
962  vmax = (vector float)(32767.999f);
963  vmin = (vector float)(-32768.0f);
964 #else
965  vmax = (vector float){32767.999f,32767.999f,32767.999f,32767.999f};
966  vmin = (vector float){-32768.0f,-32768.0f,-32768.0f,-32768.0f};
967 #endif
968 
969  vperm1 = vec_lvsl(0,window);
970  vperm2 = vec_lvsr(0,samples);
971  vprev = (vector float)vec_perm(vec_ld(0,samples),vec_ld(0,samples),vec_lvsl(0,samples));
972  for (j=4;j;j--)
973  {
975 
976  vsum = vec_sub(vsum,vsum2);
977  vsum2 = vec_sub(vsum5,vsum6);
978  vsum3 = vec_sub(vsum3,vsum4);
979  vsum4 = vec_sub(vsum7,vsum8);
980  v1 = vec_add(vsum,vsum3);
981  v2 = vec_add(vsum2,vsum4);
982  vsum = (vector float)vec_cts(v1,16);
983  vsum2 = (vector float)vec_cts(v2,16);
984  v5 = (vector float)vec_cmpgt(v1,vmax);
985  v6 = (vector float)vec_cmplt(v1,vmin);
986  v7 = (vector float)vec_cmpgt(v2,vmax);
987  v8 = (vector float)vec_cmplt(v2,vmin);
988 
989  v1 = vec_mergeh(vsum, vsum2);
990  v2 = vec_mergel(vsum, vsum2);
991  v3 = vec_perm(vprev,v1,vperm2);
992  v4 = vec_perm(v1,v2,vperm2);
993  vprev = v2;
994  vec_st((vector signed int)v3,0,samples);
995  vec_st((vector signed int)v4,16,samples);
996  samples += 8;
997 
998  v1 = (vector float)vec_sr((vector unsigned int)v5, vshift);
999  v2 = (vector float)vec_sr((vector unsigned int)v6, vshift);
1000  v3 = (vector float)vec_sr((vector unsigned int)v7, vshift);
1001  v4 = (vector float)vec_sr((vector unsigned int)v8, vshift);
1002  v1 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2);
1003  v2 = (vector float)vec_add((vector unsigned int)v3,(vector unsigned int)v4);
1004  vclip = vec_sums((vector signed int)v1,vclip);
1005  vclip = vec_sums((vector signed int)v2,vclip);
1006  }
1007 
1008  for (j=4;j;j--)
1009  {
1010  SYNTH_STEREO_ALTIVEC(-16);
1011 
1012  vsum = vec_add(vsum,vsum2);
1013  vsum2 = vec_add(vsum5,vsum6);
1014  vsum3 = vec_add(vsum3,vsum4);
1015  vsum4 = vec_add(vsum7,vsum8);
1016  v1 = vec_add(vsum,vsum3);
1017  v2 = vec_add(vsum2,vsum4);
1018  vsum = (vector float)vec_cts(v1,16);
1019  vsum2 = (vector float)vec_cts(v2,16);
1020  v5 = (vector float)vec_cmpgt(v1,vmax);
1021  v6 = (vector float)vec_cmplt(v1,vmin);
1022  v7 = (vector float)vec_cmpgt(v2,vmax);
1023  v8 = (vector float)vec_cmplt(v2,vmin);
1024 
1025  v1 = vec_mergeh(vsum, vsum2);
1026  v2 = vec_mergel(vsum, vsum2);
1027  v3 = vec_perm(vprev,v1,vperm2);
1028  v4 = vec_perm(v1,v2,vperm2);
1029  vprev = v2;
1030  vec_st((vector signed int)v3,0,samples);
1031  vec_st((vector signed int)v4,16,samples);
1032  samples += 8;
1033 
1034  v1 = (vector float)vec_sr((vector unsigned int)v5, vshift);
1035  v2 = (vector float)vec_sr((vector unsigned int)v6, vshift);
1036  v3 = (vector float)vec_sr((vector unsigned int)v7, vshift);
1037  v4 = (vector float)vec_sr((vector unsigned int)v8, vshift);
1038  v1 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2);
1039  v2 = (vector float)vec_add((vector unsigned int)v3,(vector unsigned int)v4);
1040  vclip = vec_sums((vector signed int)v1,vclip);
1041  vclip = vec_sums((vector signed int)v2,vclip);
1042  }
1043 
1044  if((size_t)samples & 0xf)
1045  {
1046  v1 = (vector float)vec_perm(vec_ld(0,samples),vec_ld(0,samples),vec_lvsl(0,samples));
1047  v2 = (vector float)vec_perm(vprev,v1,vperm2);
1048  vec_st((vector signed int)v2,0,samples);
1049  }
1050 
1051  vec_st(vclip,0,clip_tmp);
1052  clip = clip_tmp[3];
1053  }
1054  fr->buffer.fill += 256;
1055 
1056  return clip;
1057 }
GLsizei samples
Definition: glext.h:7006
#define ALIGNED(a)
Definition: optimize.h:190
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3706
_Tp _STLP_CALL real(const complex< _Tp > &__z)
Definition: _complex.h:727
#define SYNTH_STEREO_ALTIVEC(B0STEP)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define do_equalizer
Definition: intsym.h:164
GLfloat f
Definition: glext.h:7540
#define dct64_altivec
Definition: intsym.h:133
static IHTMLWindow2 * window
Definition: events.c:77
GLfloat GLfloat GLfloat GLfloat v3
Definition: glext.h:6064
INT32 int32_t
Definition: types.h:71
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063
GLfloat GLfloat v1
Definition: glext.h:6062
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

◆ synth_1to1_s32_stereo_avx()

int synth_1to1_s32_stereo_avx ( real ,
real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_s32_stereo_neon()

int synth_1to1_s32_stereo_neon ( real ,
real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_s32_stereo_sse()

int synth_1to1_s32_stereo_sse ( real ,
real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_s32_stereo_x86_64()

int synth_1to1_s32_stereo_x86_64 ( real ,
real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_s32_x86_64()

int synth_1to1_s32_x86_64 ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_s32st_neon64()

int synth_1to1_s32st_neon64 ( real ,
real ,
mpg123_handle  
)

Referenced by frame_cpu_opt().

◆ synth_1to1_sse()

int synth_1to1_sse ( real ,
int  ,
mpg123_handle ,
int   
)

Referenced by find_dectype(), and frame_cpu_opt().

◆ synth_1to1_stereo_altivec()

int synth_1to1_stereo_altivec ( real ,
real ,
mpg123_handle  
)

Definition at line 389 of file synth_altivec.c.

390 {
391  short *samples = (short *) (fr->buffer.data+fr->buffer.fill);
392 
393  real *b0l, *b0r, **bufl, **bufr;
394  int clip;
395  int bo1;
396 #ifndef NO_EQUALIZER
397  if(fr->have_eq_settings)
398  {
399  do_equalizer(bandPtr_l,0,fr->equalizer);
400  do_equalizer(bandPtr_r,1,fr->equalizer);
401  }
402 #endif
403  fr->bo--;
404  fr->bo &= 0xf;
405  bufl = fr->real_buffs[0];
406  bufr = fr->real_buffs[1];
407 
408  if(fr->bo & 0x1)
409  {
410  b0l = bufl[0];
411  b0r = bufr[0];
412  bo1 = fr->bo;
413  dct64_altivec(bufl[1]+((fr->bo+1)&0xf),bufl[0]+fr->bo,bandPtr_l);
414  dct64_altivec(bufr[1]+((fr->bo+1)&0xf),bufr[0]+fr->bo,bandPtr_r);
415  }
416  else
417  {
418  b0l = bufl[1];
419  b0r = bufr[1];
420  bo1 = fr->bo+1;
421  dct64_altivec(bufl[0]+fr->bo,bufl[1]+fr->bo+1,bandPtr_l);
422  dct64_altivec(bufr[0]+fr->bo,bufr[1]+fr->bo+1,bandPtr_r);
423  }
424 
425 
426  {
427  register int j;
428  real *window = fr->decwin + 16 - bo1;
429 
430  ALIGNED(16) int clip_tmp[4];
431  vector float v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13;
432  vector unsigned char vperm1,vperm2;
433  vector float vsum,vsum2,vsum3,vsum4,vsum5,vsum6,vsum7,vsum8,vmin,vmax,vzero;
434  vector signed int vclip;
435  vector unsigned int vshift;
436  vector signed short vprev;
437  vclip = vec_xor(vclip,vclip);
438  vzero = vec_xor(vzero,vzero);
439  vshift = vec_splat_u32(-1); /* 31 */
440 #ifdef __APPLE__
441  vmax = (vector float)(32767.0f);
442  vmin = (vector float)(-32768.0f);
443 #else
444  vmax = (vector float){32767.0f,32767.0f,32767.0f,32767.0f};
445  vmin = (vector float){-32768.0f,-32768.0f,-32768.0f,-32768.0f};
446 #endif
447 
448  vperm1 = vec_lvsl(0,window);
449  vperm2 = vec_lvsr(0,samples);
450  vprev = vec_perm(vec_ld(0,samples),vec_ld(0,samples),vec_lvsl(0,samples));
451  for (j=4;j;j--)
452  {
454 
455  vsum = vec_sub(vsum,vsum2);
456  vsum2 = vec_sub(vsum5,vsum6);
457  vsum3 = vec_sub(vsum3,vsum4);
458  vsum4 = vec_sub(vsum7,vsum8);
459  vsum = vec_add(vsum,vsum3);
460  vsum2 = vec_add(vsum2,vsum4);
461 
462  v1 = vec_round(vsum);
463  v2 = vec_round(vsum2);
464  v1 = (vector float)vec_cts(v1,0);
465  v2 = (vector float)vec_cts(v2,0);
466  v3 = vec_mergeh(v1, v2);
467  v4 = vec_mergel(v1, v2);
468  v5 = (vector float)vec_packs((vector signed int)v3,(vector signed int)v4);
469  v6 = (vector float)vec_perm(vprev,(vector signed short)v5,vperm2);
470  vprev = (vector signed short)v5;
471  v1 = (vector float)vec_cmpgt(vsum,vmax);
472  v2 = (vector float)vec_cmplt(vsum,vmin);
473  v3 = (vector float)vec_cmpgt(vsum2,vmax);
474  v4 = (vector float)vec_cmplt(vsum2,vmin);
475  vec_st((vector signed short)v6,0,samples);
476  samples += 8;
477 
478  v1 = (vector float)vec_sr((vector unsigned int)v1, vshift);
479  v2 = (vector float)vec_sr((vector unsigned int)v2, vshift);
480  v3 = (vector float)vec_sr((vector unsigned int)v3, vshift);
481  v4 = (vector float)vec_sr((vector unsigned int)v4, vshift);
482  v1 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2);
483  v2 = (vector float)vec_add((vector unsigned int)v3,(vector unsigned int)v4);
484  vclip = vec_sums((vector signed int)v1,vclip);
485  vclip = vec_sums((vector signed int)v2,vclip);
486  }
487 
488  for (j=4;j;j--)
489  {
491 
492  vsum = vec_add(vsum,vsum2);
493  vsum2 = vec_add(vsum5,vsum6);
494  vsum3 = vec_add(vsum3,vsum4);
495  vsum4 = vec_add(vsum7,vsum8);
496  vsum = vec_add(vsum,vsum3);
497  vsum2 = vec_add(vsum2,vsum4);
498 
499  v1 = vec_round(vsum);
500  v2 = vec_round(vsum2);
501  v1 = (vector float)vec_cts(v1,0);
502  v2 = (vector float)vec_cts(v2,0);
503  v3 = vec_mergeh(v1, v2);
504  v4 = vec_mergel(v1, v2);
505  v5 = (vector float)vec_packs((vector signed int)v3,(vector signed int)v4);
506  v6 = (vector float)vec_perm(vprev,(vector signed short)v5,vperm2);
507  vprev = (vector signed short)v5;
508  v1 = (vector float)vec_cmpgt(vsum,vmax);
509  v2 = (vector float)vec_cmplt(vsum,vmin);
510  v3 = (vector float)vec_cmpgt(vsum2,vmax);
511  v4 = (vector float)vec_cmplt(vsum2,vmin);
512  vec_st((vector signed short)v6,0,samples);
513  samples += 8;
514 
515  v1 = (vector float)vec_sr((vector unsigned int)v1, vshift);
516  v