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 FFTW3_SUPPORT
00136 static inline void fast_short_set(register short *p,
00137 short v,
00138 long c)
00139 {
00140 while (c >= 4l) {
00141 p[0] = v;
00142 p[1] = v;
00143 p[2] = v;
00144 p[3] = v;
00145 p += 4;
00146 c -= 4l;
00147 }
00148
00149 if (c > 0l) {
00150 p[0] = v;
00151 if (c > 1l) {
00152 p[1] = v;
00153 if (c > 2l) {
00154 p[2] = v;
00155 }
00156 }
00157 }
00158 }
00159
00160
00161 static inline void fast_real_set_from_short(register fftw_real *d,
00162 register short *s,
00163 long c)
00164 {
00165 while (c >= 4l) {
00166 d[0] = fftw_real(s[0]);
00167 d[1] = fftw_real(s[1]);
00168 d[2] = fftw_real(s[2]);
00169 d[3] = fftw_real(s[3]);
00170 d += 4;
00171 s += 4;
00172 c -= 4l;
00173 }
00174
00175 if (c > 0l) {
00176 d[0] = fftw_real(s[0]);
00177 if (c > 1l) {
00178 d[1] = fftw_real(s[1]);
00179 if (c > 2l) {
00180 d[2] = fftw_real(s[2]);
00181 }
00182 }
00183 }
00184 }
00185
00186 static inline void fast_reals_set(register fftw_real *p1,
00187 register fftw_real *p2,
00188 fftw_real v,
00189 long c)
00190 {
00191 while (c >= 4l) {
00192 p1[0] = v;
00193 p1[1] = v;
00194 p1[2] = v;
00195 p1[3] = v;
00196 p2[0] = v;
00197 p2[1] = v;
00198 p2[2] = v;
00199 p2[3] = v;
00200 p1 += 4;
00201 p2 += 4;
00202 c -= 4l;
00203 }
00204
00205 if (c > 0l) {
00206 p1[0] = v;
00207 p2[0] = v;
00208 if (c > 1l) {
00209 p1[1] = v;
00210 p2[1] = v;
00211 if (c > 2l) {
00212 p1[2] = v;
00213 p2[2] = v;
00214 }
00215 }
00216 }
00217 }
00218 #endif // FFTW3_SUPPORT
00219
00220 #endif // INLINES_H