Mac OS 9
vDSP.h
Go to the documentation of this file.
1 
19 #ifndef __VDSP__
20 #define __VDSP__
21 
22 #ifndef __CONDITIONALMACROS__
23 #include <ConditionalMacros.h>
24 #endif
25 
26 #ifndef __MACTYPES__
27 #include <MacTypes.h>
28 #endif
29 
30 #if PRAGMA_ONCE
31 #pragma once
32 #endif
33 
34 #ifdef __cplusplus
35 extern "C"
36 {
37 #endif
38 
39 #if PRAGMA_IMPORT
40 #pragma import on
41 #endif
42 
43 #if PRAGMA_STRUCT_ALIGN
44 #pragma options align = mac68k
45 #elif PRAGMA_STRUCT_PACKPUSH
46 #pragma pack(push, 2)
47 #elif PRAGMA_STRUCT_PACK
48 #pragma pack(2)
49 #endif
50 
51  struct DSPComplex
52  {
53  float real;
54  float imag;
55  };
56  typedef struct DSPComplex DSPComplex;
58  {
59  float *realp;
60  float *imagp;
61  };
62  typedef struct DSPSplitComplex DSPSplitComplex;
63  typedef struct OpaqueFFTSetup *FFTSetup;
64  typedef SInt32 FFTDirection;
65  enum
66  {
67  kFFTDirection_Forward = 1,
68  kFFTDirection_Inverse = -1
69  };
70 
71  typedef SInt32 FFTRadix;
72  enum
73  {
74  kFFTRadix2 = 0,
75  kFFTRadix3 = 1,
76  kFFTRadix5 = 2
77  };
78 
101  FFTSetup
102  create_fftsetup(UInt32 log2n, FFTRadix radix);
103 
112  void
113  destroy_fftsetup(FFTSetup setup);
114 
140  void
141  ctoz(const DSPComplex C[], SInt32 strideC, DSPSplitComplex *Z, SInt32 strideZ,
142  UInt32 size);
143 
152  void
153  ztoc(const DSPSplitComplex *Z, SInt32 strideZ, DSPComplex C[], SInt32 strideC,
154  UInt32 size);
155 
183  void
184  fft_zip(FFTSetup setup, DSPSplitComplex *ioData, SInt32 stride, UInt32 log2n,
185  FFTDirection direction);
186 
195  void
196  fft_zipt(FFTSetup setup, DSPSplitComplex *ioData, SInt32 stride,
197  DSPSplitComplex *bufferTemp, UInt32 log2n, FFTDirection direction);
198 
229  void
230  fft_zop(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStride,
231  DSPSplitComplex *result, SInt32 strideResult, UInt32 log2n,
232  FFTDirection direction);
233 
242  void
243  fft_zopt(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStride,
244  DSPSplitComplex *result, SInt32 strideResult,
245  DSPSplitComplex *bufferTemp, UInt32 log2n, FFTDirection direction);
246 
273  void
274  fft_zrip(FFTSetup setup, DSPSplitComplex *ioData, SInt32 stride, UInt32 log2n,
275  FFTDirection direction);
276 
285  void
286  fft_zript(FFTSetup setup, DSPSplitComplex *ioData, SInt32 stride,
287  DSPSplitComplex *bufferTemp, UInt32 log2n, FFTDirection direction);
288 
317  void
318  fft_zrop(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStride,
319  DSPSplitComplex *result, SInt32 strideResult, UInt32 log2n,
320  FFTDirection direction);
321 
330  void
331  fft_zropt(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStride,
332  DSPSplitComplex *result, SInt32 strideResult,
333  DSPSplitComplex *bufferTemp, UInt32 log2n, FFTDirection direction);
334 
364  void
365  fft2d_zip(FFTSetup setup, DSPSplitComplex *ioData, SInt32 strideInRow,
366  SInt32 strideInCol, UInt32 log2nInCol, UInt32 log2nInRow,
367  FFTDirection direction);
368 
377  void
378  fft2d_zipt(FFTSetup setup, DSPSplitComplex *ioData, SInt32 strideInRow,
379  SInt32 strideInCol, DSPSplitComplex *bufferTemp, UInt32 log2nInCol,
380  UInt32 log2nInRow, FFTDirection direction);
381 
415  void
416  fft2d_zop(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStrideInRow,
417  SInt32 signalStrideInCol, DSPSplitComplex *result,
418  SInt32 strideResultInRow, SInt32 strideResultInCol, UInt32 log2nInCol,
419  UInt32 log2nInRow, SInt32 flag);
420 
429  void
430  fft2d_zopt(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStrideInRow,
431  SInt32 signalStrideInCol, DSPSplitComplex *result,
432  SInt32 strideResultInRow, SInt32 strideResultInCol,
433  DSPSplitComplex *bufferTemp, UInt32 log2nInCol, UInt32 log2nInRow,
434  SInt32 flag);
435 
465  void
466  fft2d_zrip(FFTSetup setup, DSPSplitComplex *ioData, SInt32 strideInRow,
467  SInt32 strideInCol, UInt32 log2nInCol, UInt32 log2nInRow,
468  FFTDirection direction);
469 
478  void
479  fft2d_zript(FFTSetup setup, DSPSplitComplex *ioData, SInt32 strideInRow,
480  SInt32 strideInCol, DSPSplitComplex *bufferTemp, UInt32 log2nInCol,
481  UInt32 log2nInRow, FFTDirection direction);
482 
515  void
516  fft2d_zrop(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStrideInRow,
517  SInt32 signalStrideInCol, DSPSplitComplex *result,
518  SInt32 strideResultInRow, SInt32 strideResultInCol,
519  UInt32 log2nInCol, UInt32 log2nInRow, SInt32 flag);
520 
529  void
530  fft2d_zropt(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStrideInRow,
531  SInt32 signalStrideInCol, DSPSplitComplex *result,
532  SInt32 strideResultInRow, SInt32 strideResultInCol,
533  DSPSplitComplex *bufferTemp, UInt32 log2nInCol, UInt32 log2nInRow,
534  SInt32 flag);
535 
562  void
563  conv(const float signal[], SInt32 signalStride, const float filter[],
564  SInt32 strideFilter, float result[], SInt32 strideResult, SInt32 lenResult,
565  SInt32 lenFilter);
566 
592  void
593  vadd(const float input1[], SInt32 stride1, const float input2[], SInt32 stride2,
594  float result[], SInt32 strideResult, UInt32 size);
595 
621  void
622  vsub(const float input1[], SInt32 stride1, const float input2[], SInt32 stride2,
623  float result[], SInt32 strideResult, UInt32 size);
624 
650  void
651  vmul(const float input1[], SInt32 stride1, const float input2[], SInt32 stride2,
652  float result[], SInt32 strideResult, UInt32 size);
653 
678  void
679  vsmul(const float input1[], SInt32 stride1, const float *input2, float result[],
680  SInt32 strideResult, UInt32 size);
681 
706  void
707  vsq(const float input[], SInt32 strideInput, float result[],
708  SInt32 strideResult, UInt32 size);
709 
734  void
735  vssq(const float input[], SInt32 strideInput, float result[],
736  SInt32 strideResult, UInt32 size);
737 
762  void
763  dotpr(const float input1[], SInt32 stride1, const float input2[],
764  SInt32 stride2, float *result, UInt32 size);
765 
792  void
793  vam(const float input1[], SInt32 stride1, const float input2[], SInt32 stride2,
794  const float input3[], SInt32 stride3, float result[], SInt32 strideResult,
795  UInt32 size);
796 
824  void
825  zconv(DSPSplitComplex *signal, SInt32 signalStride, DSPSplitComplex *filter,
826  SInt32 strideFilter, DSPSplitComplex *result, SInt32 strideResult,
827  SInt32 lenResult, SInt32 lenFilter);
828 
855  void
856  zvadd(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2,
857  SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult,
858  UInt32 size);
859 
886  void
887  zvsub(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2,
888  SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult,
889  UInt32 size);
890 
917  void
918  zvmul(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2,
919  SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult, UInt32 size,
920  SInt32 conjugate);
921 
947  void
948  zdotpr(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2,
949  SInt32 stride2, DSPSplitComplex *result, UInt32 size);
950 
976  void
977  zidotpr(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2,
978  SInt32 stride2, DSPSplitComplex *result, UInt32 size);
979 
1004  void
1005  zrdotpr(DSPSplitComplex *input1, SInt32 stride1, const float input2[],
1006  SInt32 stride2, DSPSplitComplex *result, UInt32 size);
1007 
1036  void
1037  zvcma(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2,
1038  SInt32 stride2, DSPSplitComplex *input3, SInt32 stride3,
1039  DSPSplitComplex *result, SInt32 strideResult, UInt32 size);
1040 
1067  void
1068  zrvadd(DSPSplitComplex *input1, SInt32 stride1, const float input2[],
1069  SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult,
1070  UInt32 size);
1071 
1098  void
1099  zrvsub(DSPSplitComplex *input1, SInt32 stride1, const float input2[],
1100  SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult,
1101  UInt32 size);
1102 
1129  void
1130  zrvmul(DSPSplitComplex *input1, SInt32 stride1, const float input2[],
1131  SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult,
1132  UInt32 size);
1133 
1134 #ifndef USE_NONE_APPLE_STANDARD_DATATYPES
1135 #define USE_NONE_APPLE_STANDARD_DATATYPES 1
1136 #endif
1138 #if USE_NONE_APPLE_STANDARD_DATATYPES
1139  enum
1140  {
1141  FFT_FORWARD = kFFTDirection_Forward,
1142  FFT_INVERSE = kFFTDirection_Inverse
1143  };
1144 
1145  enum
1146  {
1147  FFT_RADIX2 = kFFTRadix2,
1148  FFT_RADIX3 = kFFTRadix3,
1149  FFT_RADIX5 = kFFTRadix5
1150  };
1151 
1152  typedef DSPComplex COMPLEX;
1154 #endif
1156 #if PRAGMA_STRUCT_ALIGN
1157 #pragma options align = reset
1158 #elif PRAGMA_STRUCT_PACKPUSH
1159 #pragma pack(pop)
1160 #elif PRAGMA_STRUCT_PACK
1161 #pragma pack()
1162 #endif
1163 
1164 #ifdef PRAGMA_IMPORT_OFF
1165 #pragma import off
1166 #elif PRAGMA_IMPORT
1167 #pragma import reset
1168 #endif
1169 
1170 #ifdef __cplusplus
1171 }
1172 #endif
1173 
1174 #endif
Set up for compiler independent conditionals.
Basic Macintosh data types.
Definition: vDSP.h:52
Definition: vDSP.h:58
void fft2d_zipt(FFTSetup setup, DSPSplitComplex *ioData, SInt32 strideInRow, SInt32 strideInCol, DSPSplitComplex *bufferTemp, UInt32 log2nInCol, UInt32 log2nInRow, FFTDirection direction)
void destroy_fftsetup(FFTSetup setup)
void fft_zipt(FFTSetup setup, DSPSplitComplex *ioData, SInt32 stride, DSPSplitComplex *bufferTemp, UInt32 log2n, FFTDirection direction)
void fft2d_zrop(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStrideInRow, SInt32 signalStrideInCol, DSPSplitComplex *result, SInt32 strideResultInRow, SInt32 strideResultInCol, UInt32 log2nInCol, UInt32 log2nInRow, SInt32 flag)
void vmul(const float input1[], SInt32 stride1, const float input2[], SInt32 stride2, float result[], SInt32 strideResult, UInt32 size)
void zvadd(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2, SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult, UInt32 size)
void fft2d_zop(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStrideInRow, SInt32 signalStrideInCol, DSPSplitComplex *result, SInt32 strideResultInRow, SInt32 strideResultInCol, UInt32 log2nInCol, UInt32 log2nInRow, SInt32 flag)
void zrvmul(DSPSplitComplex *input1, SInt32 stride1, const float input2[], SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult, UInt32 size)
void vam(const float input1[], SInt32 stride1, const float input2[], SInt32 stride2, const float input3[], SInt32 stride3, float result[], SInt32 strideResult, UInt32 size)
void zrvsub(DSPSplitComplex *input1, SInt32 stride1, const float input2[], SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult, UInt32 size)
void zrvadd(DSPSplitComplex *input1, SInt32 stride1, const float input2[], SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult, UInt32 size)
void fft_zop(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStride, DSPSplitComplex *result, SInt32 strideResult, UInt32 log2n, FFTDirection direction)
void dotpr(const float input1[], SInt32 stride1, const float input2[], SInt32 stride2, float *result, UInt32 size)
void fft2d_zopt(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStrideInRow, SInt32 signalStrideInCol, DSPSplitComplex *result, SInt32 strideResultInRow, SInt32 strideResultInCol, DSPSplitComplex *bufferTemp, UInt32 log2nInCol, UInt32 log2nInRow, SInt32 flag)
void fft2d_zript(FFTSetup setup, DSPSplitComplex *ioData, SInt32 strideInRow, SInt32 strideInCol, DSPSplitComplex *bufferTemp, UInt32 log2nInCol, UInt32 log2nInRow, FFTDirection direction)
void fft_zropt(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStride, DSPSplitComplex *result, SInt32 strideResult, DSPSplitComplex *bufferTemp, UInt32 log2n, FFTDirection direction)
void vsq(const float input[], SInt32 strideInput, float result[], SInt32 strideResult, UInt32 size)
void fft_zript(FFTSetup setup, DSPSplitComplex *ioData, SInt32 stride, DSPSplitComplex *bufferTemp, UInt32 log2n, FFTDirection direction)
void zvcma(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2, SInt32 stride2, DSPSplitComplex *input3, SInt32 stride3, DSPSplitComplex *result, SInt32 strideResult, UInt32 size)
void conv(const float signal[], SInt32 signalStride, const float filter[], SInt32 strideFilter, float result[], SInt32 strideResult, SInt32 lenResult, SInt32 lenFilter)
void fft_zopt(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStride, DSPSplitComplex *result, SInt32 strideResult, DSPSplitComplex *bufferTemp, UInt32 log2n, FFTDirection direction)
void zconv(DSPSplitComplex *signal, SInt32 signalStride, DSPSplitComplex *filter, SInt32 strideFilter, DSPSplitComplex *result, SInt32 strideResult, SInt32 lenResult, SInt32 lenFilter)
void vadd(const float input1[], SInt32 stride1, const float input2[], SInt32 stride2, float result[], SInt32 strideResult, UInt32 size)
void zdotpr(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2, SInt32 stride2, DSPSplitComplex *result, UInt32 size)
void zidotpr(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2, SInt32 stride2, DSPSplitComplex *result, UInt32 size)
void vsub(const float input1[], SInt32 stride1, const float input2[], SInt32 stride2, float result[], SInt32 strideResult, UInt32 size)
FFTSetup create_fftsetup(UInt32 log2n, FFTRadix radix)
void ztoc(const DSPSplitComplex *Z, SInt32 strideZ, DSPComplex C[], SInt32 strideC, UInt32 size)
void fft2d_zrip(FFTSetup setup, DSPSplitComplex *ioData, SInt32 strideInRow, SInt32 strideInCol, UInt32 log2nInCol, UInt32 log2nInRow, FFTDirection direction)
void zrdotpr(DSPSplitComplex *input1, SInt32 stride1, const float input2[], SInt32 stride2, DSPSplitComplex *result, UInt32 size)
void fft2d_zropt(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStrideInRow, SInt32 signalStrideInCol, DSPSplitComplex *result, SInt32 strideResultInRow, SInt32 strideResultInCol, DSPSplitComplex *bufferTemp, UInt32 log2nInCol, UInt32 log2nInRow, SInt32 flag)
void zvsub(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2, SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult, UInt32 size)
void fft_zip(FFTSetup setup, DSPSplitComplex *ioData, SInt32 stride, UInt32 log2n, FFTDirection direction)
void fft_zrip(FFTSetup setup, DSPSplitComplex *ioData, SInt32 stride, UInt32 log2n, FFTDirection direction)
void fft2d_zip(FFTSetup setup, DSPSplitComplex *ioData, SInt32 strideInRow, SInt32 strideInCol, UInt32 log2nInCol, UInt32 log2nInRow, FFTDirection direction)
void zvmul(DSPSplitComplex *input1, SInt32 stride1, DSPSplitComplex *input2, SInt32 stride2, DSPSplitComplex *result, SInt32 strideResult, UInt32 size, SInt32 conjugate)
void vssq(const float input[], SInt32 strideInput, float result[], SInt32 strideResult, UInt32 size)
void ctoz(const DSPComplex C[], SInt32 strideC, DSPSplitComplex *Z, SInt32 strideZ, UInt32 size)
void fft_zrop(FFTSetup setup, DSPSplitComplex *signal, SInt32 signalStride, DSPSplitComplex *result, SInt32 strideResult, UInt32 log2n, FFTDirection direction)
void vsmul(const float input1[], SInt32 stride1, const float *input2, float result[], SInt32 strideResult, UInt32 size)