00001
00002
00003
00004
00005
00006
00007 #ifndef INLINES_H
00008 #define INLINES_H
00009
00010 #include "config.h"
00011
00012
00013
00014 static inline void stereo16_from_stereopcm8(register short *l,
00015 register short *r,
00016 register uchar *c,
00017 long cnt)
00018 {
00019 while (cnt >= 4l) {
00020 l[0] = c[0];
00021 r[0] = c[1];
00022 l[1] = c[2];
00023 r[1] = c[3];
00024 l[2] = c[4];
00025 r[2] = c[5];
00026 l[3] = c[6];
00027 r[3] = c[7];
00028 l += 4;
00029 r += 4;
00030 c += 8;
00031 cnt -= 4l;
00032 }
00033
00034 if (cnt > 0l) {
00035 l[0] = c[0];
00036 r[0] = c[1];
00037 if (cnt > 1l) {
00038 l[1] = c[2];
00039 r[1] = c[3];
00040 if (cnt > 2l) {
00041 l[2] = c[4];
00042 r[2] = c[5];
00043 }
00044 }
00045 }
00046 }
00047
00048
00049 static inline void stereo16_from_stereopcm16(register short *l,
00050 register short *r,
00051 register short *s,
00052 long cnt)
00053 {
00054 while (cnt >= 4l) {
00055 l[0] = s[0];
00056 r[0] = s[1];
00057 l[1] = s[2];
00058 r[1] = s[3];
00059 l[2] = s[4];
00060 r[2] = s[5];
00061 l[3] = s[6];
00062 r[3] = s[7];
00063 l += 4;
00064 r += 4;
00065 s += 8;
00066 cnt -= 4l;
00067 }
00068
00069 if (cnt > 0l) {
00070 l[0] = s[0];
00071 r[0] = s[1];
00072 if (cnt > 1l) {
00073 l[1] = s[2];
00074 r[1] = s[3];
00075 if (cnt > 2l) {
00076 l[2] = s[4];
00077 r[2] = s[5];
00078 }
00079 }
00080 }
00081 }
00082
00083
00084 static inline void mono16_from_monopcm8(register short *l,
00085 register uchar *c,
00086 long cnt)
00087 {
00088 while (cnt >= 4l) {
00089 l[0] = c[0];
00090 l[1] = c[1];
00091 l[2] = c[2];
00092 l[3] = c[3];
00093 l += 4;
00094 c += 4;
00095 cnt -= 4l;
00096 }
00097
00098 if (cnt > 0l) {
00099 l[0] = c[0];
00100 if (cnt > 1l) {
00101 l[1] = c[1];
00102 if (cnt > 2l) {
00103 l[2] = c[2];
00104 }
00105 }
00106 }
00107 }
00108
00109
00110 static inline void mono16_from_monopcm16(register short *l,
00111 register short *s,
00112 long cnt)
00113 {
00114 while (cnt >= 4l) {
00115 l[0] = s[0];
00116 l[1] = s[1];
00117 l[2] = s[2];
00118 l[3] = s[3];
00119 l += 4;
00120 s += 4;
00121 cnt -= 4l;
00122 }
00123
00124 if (cnt > 0l) {
00125 l[0] = s[0];
00126 if (cnt > 1l) {
00127 l[1] = s[1];
00128 if (cnt > 2l) {
00129 l[2] = s[2];
00130 }
00131 }
00132 }
00133 }
00134
00135 #if defined(FFTW3_SUPPORT) || defined(FFTW2_SUPPORT)
00136
00137 static inline void fast_short_set(register short *p,
00138 short v,
00139 long c)
00140 {
00141 while (c >= 4l) {
00142 p[0] = v;
00143 p[1] = v;
00144 p[2] = v;
00145 p[3] = v;
00146 p += 4;
00147 c -= 4l;
00148 }
00149
00150 if (c > 0l) {
00151 p[0] = v;
00152 if (c > 1l) {
00153 p[1] = v;
00154 if (c > 2l) {
00155 p[2] = v;
00156 }
00157 }
00158 }
00159 }
00160
00161
00162 static inline void fast_real_set_from_short(register fftw_real *d,
00163 register short *s,
00164 long c)
00165 {
00166 while (c >= 4l) {
00167 d[0] = fftw_real(s[0]);
00168 d[1] = fftw_real(s[1]);
00169 d[2] = fftw_real(s[2]);
00170 d[3] = fftw_real(s[3]);
00171 d += 4;
00172 s += 4;
00173 c -= 4l;
00174 }
00175
00176 if (c > 0l) {
00177 d[0] = fftw_real(s[0]);
00178 if (c > 1l) {
00179 d[1] = fftw_real(s[1]);
00180 if (c > 2l) {
00181 d[2] = fftw_real(s[2]);
00182 }
00183 }
00184 }
00185 }
00186
00187 static inline void fast_reals_set(register fftw_real *p1,
00188 register fftw_real *p2,
00189 fftw_real v,
00190 long c)
00191 {
00192 while (c >= 4l) {
00193 p1[0] = v;
00194 p1[1] = v;
00195 p1[2] = v;
00196 p1[3] = v;
00197 p2[0] = v;
00198 p2[1] = v;
00199 p2[2] = v;
00200 p2[3] = v;
00201 p1 += 4;
00202 p2 += 4;
00203 c -= 4l;
00204 }
00205
00206 if (c > 0l) {
00207 p1[0] = v;
00208 p2[0] = v;
00209 if (c > 1l) {
00210 p1[1] = v;
00211 p2[1] = v;
00212 if (c > 2l) {
00213 p1[2] = v;
00214 p2[2] = v;
00215 }
00216 }
00217 }
00218 }
00219
00220 #endif //defined(FFTW3_SUPPORT) || defined(FFTW2_SUPPORT)
00221
00222 #endif // INLINES_H