ReactOS  0.4.14-dev-41-g31d7680
synth_i486.c File Reference
#include "mpg123lib_intern.h"
Include dependency graph for synth_i486.c:

Go to the source code of this file.

Macros

#define FIR16_1(pos, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15)
 
#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)
 

Functions

int absynth_1to1_i486 (real *bandPtr, int channel, mpg123_handle *fr, int nb_blocks)
 

Macro Definition Documentation

◆ FIR16_1

#define FIR16_1 (   pos,
  c0,
  c1,
  c2,
  c3,
  c4,
  c5,
  c6,
  c7,
  c8,
  c9,
  c10,
  c11,
  c12,
  c13,
  c14,
  c15 
)
Value:
{\
int sum;\
sum=(c0)*b0[0]+(c1)*b0[1]+(c2)*b0[2]+(c3)*b0[3]+\
(c4)*b0[4]+(c5)*b0[5]+(c6)*b0[6]+(c7)*b0[7]+\
(c8)*b0[8]+(c9)*b0[9]+(c10)*b0[10]+(c11)*b0[11]+\
(c12)*b0[12]+(c13)*b0[13]+(c14)*b0[14]+(c15)*b0[15];\
sum=(sum+(1 << 13))>>14;\
if (sum<-32768) sum=-32768;\
else if (sum>32767) sum=32767;\
samples[2*(pos)]=sum;\
b0+=FIR_BUFFER_SIZE;\
}
GLsizei samples
Definition: glext.h:7006
else
Definition: tritemp.h:161
static int sum(int x_, int y_)
Definition: ptr2_test.cpp:35
if(!(yy_init))
Definition: macro.lex.yy.c:714

Definition at line 27 of file synth_i486.c.

◆ FIR16_2

#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 at line 41 of file synth_i486.c.

Function Documentation

◆ absynth_1to1_i486()

int absynth_1to1_i486 ( real bandPtr,
int  channel,
mpg123_handle fr,
int  nb_blocks 
)

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
struct outbuffer buffer
Definition: frame.h:265
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