#include "libavcodec/dsputil.h"Go to the source code of this file.
Defines | |
| #define | c1 1.38703984532214752434 |
| #define | c2 1.30656296487637657577 |
| #define | c3 1.17587560241935884520 |
| #define | c4 1.00000000000000000000 |
| #define | c5 0.78569495838710234903 |
| #define | c6 0.54119610014619712324 |
| #define | c7 0.27589937928294311353 |
| #define | ftrv() ftrv_(xf,fv) |
| #define | load_matrix(table) load_matrix_(xf,table) |
| #define | DEFREG float fv[4],xf[16] |
| #define | fr0 fv[0] |
| #define | fr1 fv[1] |
| #define | fr2 fv[2] |
| #define | fr3 fv[3] |
| #define | DESCALE(x, n) (x)*(1.0f/(1<<(n))) |
| #define | OA(fblock, ofs) *(float*)((char*)fblock + ofs) |
Functions | |
| static const float even_table[] | __attribute__ ((aligned(8))) |
| static void | ftrv_ (const float xf[], float fv[]) |
| static void | load_matrix_ (float xf[], const float table[]) |
| void | idct_sh4 (DCTELEM *block) |
| #define c1 1.38703984532214752434 |
Definition at line 24 of file idct_sh4.c.
Referenced by close_connection(), compute_status(), decode_frame(), dxt1_decode_pixels(), ff_fft_calc_altivec(), ff_fft_init(), fft_ref_init(), http_receive_data(), idct4col_add(), idct4col_put(), idct4row(), libextractor_jpeg_extract(), qpeg_decode_intra(), readLength(), reverseMatrixing(), and strcmpcasenosensitive_internal().
| #define c2 1.30656296487637657577 |
Definition at line 25 of file idct_sh4.c.
Referenced by ff_fft_calc_altivec(), idct4col_add(), idct4col_put(), idct4row(), libextractor_jpeg_extract(), libextractor_rpm_extract(), qpel_motion_search(), readLength(), reverseMatrixing(), and strcmpcasenosensitive_internal().
| #define c3 1.17587560241935884520 |
Definition at line 26 of file idct_sh4.c.
Referenced by idct4col_add(), idct4col_put(), and idct4row().
| #define c4 1.00000000000000000000 |
| #define c5 0.78569495838710234903 |
Definition at line 28 of file idct_sh4.c.
| #define c6 0.54119610014619712324 |
Definition at line 29 of file idct_sh4.c.
| #define c7 0.27589937928294311353 |
Definition at line 30 of file idct_sh4.c.
| #define DEFREG float fv[4],xf[16] |
| #define DESCALE | ( | x, | |||
| n | ) | (x)*(1.0f/(1<<(n))) |
Definition at line 121 of file idct_sh4.c.
| #define fr0 fv[0] |
| #define fr1 fv[1] |
| #define fr2 fv[2] |
| #define fr3 fv[3] |
| #define ftrv | ( | ) | ftrv_(xf,fv) |
| #define load_matrix | ( | table | ) | load_matrix_(xf,table) |
| #define OA | ( | fblock, | |||
| ofs | ) | *(float*)((char*)fblock + ofs) |
Referenced by idct_sh4().
| static const float even_table [] __attribute__ | ( | (aligned(8)) | ) | [static] |
| static void ftrv_ | ( | const float | xf[], | |
| float | fv[] | |||
| ) | [static] |
Definition at line 88 of file idct_sh4.c.
00089 { 00090 float f0,f1,f2,f3; 00091 f0 = fv[0]; 00092 f1 = fv[1]; 00093 f2 = fv[2]; 00094 f3 = fv[3]; 00095 fv[0] = xf[0]*f0 + xf[4]*f1 + xf[ 8]*f2 + xf[12]*f3; 00096 fv[1] = xf[1]*f0 + xf[5]*f1 + xf[ 9]*f2 + xf[13]*f3; 00097 fv[2] = xf[2]*f0 + xf[6]*f1 + xf[10]*f2 + xf[14]*f3; 00098 fv[3] = xf[3]*f0 + xf[7]*f1 + xf[11]*f2 + xf[15]*f3; 00099 }
| void idct_sh4 | ( | DCTELEM * | block | ) |
Definition at line 132 of file idct_sh4.c.
References DEFREG, DESCALE, fr0, fr1, fr2, fr3, ftrv, load_matrix, OA, t0, t1, t2, and t3.
Referenced by dsputil_init_sh4(), idct_add(), and idct_put().
00133 { 00134 DEFREG; 00135 00136 int i; 00137 float tblock[8*8],*fblock; 00138 int ofs1,ofs2,ofs3; 00139 00140 #if defined(__SH4__) 00141 #error "FIXME!! change to single float" 00142 #endif 00143 00144 /* row */ 00145 00146 /* even part */ 00147 load_matrix(even_table); 00148 00149 fblock = tblock+4; 00150 i = 8; 00151 do { 00152 fr0 = block[0]; 00153 fr1 = block[2]; 00154 fr2 = block[4]; 00155 fr3 = block[6]; 00156 block+=8; 00157 ftrv(); 00158 *--fblock = fr3; 00159 *--fblock = fr2; 00160 *--fblock = fr1; 00161 *--fblock = fr0; 00162 fblock+=8+4; 00163 } while(--i); 00164 block-=8*8; 00165 fblock-=8*8+4; 00166 00167 load_matrix(odd_table); 00168 00169 i = 8; 00170 00171 // ofs1 = sizeof(float)*1; 00172 // ofs2 = sizeof(float)*2; 00173 // ofs3 = sizeof(float)*3; 00174 00175 do { 00176 float t0,t1,t2,t3; 00177 fr0 = block[1]; 00178 fr1 = block[3]; 00179 fr2 = block[5]; 00180 fr3 = block[7]; 00181 block+=8; 00182 ftrv(); 00183 t0 = *fblock++; 00184 t1 = *fblock++; 00185 t2 = *fblock++; 00186 t3 = *fblock++; 00187 fblock+=4; 00188 *--fblock = t0 - fr0; 00189 *--fblock = t1 - fr1; 00190 *--fblock = t2 - fr2; 00191 *--fblock = t3 - fr3; 00192 *--fblock = t3 + fr3; 00193 *--fblock = t2 + fr2; 00194 *--fblock = t1 + fr1; 00195 *--fblock = t0 + fr0; 00196 fblock+=8; 00197 } while(--i); 00198 block-=8*8; 00199 fblock-=8*8; 00200 00201 /* col */ 00202 00203 /* even part */ 00204 load_matrix(even_table); 00205 00206 ofs1 = sizeof(float)*2*8; 00207 ofs2 = sizeof(float)*4*8; 00208 ofs3 = sizeof(float)*6*8; 00209 00210 i = 8; 00211 00212 #define OA(fblock,ofs) *(float*)((char*)fblock + ofs) 00213 00214 do { 00215 fr0 = OA(fblock, 0); 00216 fr1 = OA(fblock,ofs1); 00217 fr2 = OA(fblock,ofs2); 00218 fr3 = OA(fblock,ofs3); 00219 ftrv(); 00220 OA(fblock,0 ) = fr0; 00221 OA(fblock,ofs1) = fr1; 00222 OA(fblock,ofs2) = fr2; 00223 OA(fblock,ofs3) = fr3; 00224 fblock++; 00225 } while(--i); 00226 fblock-=8; 00227 00228 load_matrix(odd_table); 00229 00230 i=8; 00231 do { 00232 float t0,t1,t2,t3; 00233 t0 = OA(fblock, 0); /* [8*0] */ 00234 t1 = OA(fblock,ofs1); /* [8*2] */ 00235 t2 = OA(fblock,ofs2); /* [8*4] */ 00236 t3 = OA(fblock,ofs3); /* [8*6] */ 00237 fblock+=8; 00238 fr0 = OA(fblock, 0); /* [8*1] */ 00239 fr1 = OA(fblock,ofs1); /* [8*3] */ 00240 fr2 = OA(fblock,ofs2); /* [8*5] */ 00241 fr3 = OA(fblock,ofs3); /* [8*7] */ 00242 fblock+=-8+1; 00243 ftrv(); 00244 block[8*0] = DESCALE(t0 + fr0,3); 00245 block[8*7] = DESCALE(t0 - fr0,3); 00246 block[8*1] = DESCALE(t1 + fr1,3); 00247 block[8*6] = DESCALE(t1 - fr1,3); 00248 block[8*2] = DESCALE(t2 + fr2,3); 00249 block[8*5] = DESCALE(t2 - fr2,3); 00250 block[8*3] = DESCALE(t3 + fr3,3); 00251 block[8*4] = DESCALE(t3 - fr3,3); 00252 block++; 00253 } while(--i); 00254 00255 #if defined(__SH4__) 00256 #error "FIXME!! change to double" 00257 #endif 00258 }
| static void load_matrix_ | ( | float | xf[], | |
| const float | table[] | |||
| ) | [static] |
1.5.1