54 #ifndef AVCODEC_MIPS_AACSBR_FLOAT_H 55 #define AVCODEC_MIPS_AACSBR_FLOAT_H 63 float z[320],
float W[2][32][32][2],
int buf_idx)
68 int temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7;
72 for(i = 0; i < 36; i++)
76 "lw %[temp0], 0(%[w1]) \n\t" 77 "lw %[temp1], 4(%[w1]) \n\t" 78 "lw %[temp2], 8(%[w1]) \n\t" 79 "lw %[temp3], 12(%[w1]) \n\t" 80 "lw %[temp4], 16(%[w1]) \n\t" 81 "lw %[temp5], 20(%[w1]) \n\t" 82 "lw %[temp6], 24(%[w1]) \n\t" 83 "lw %[temp7], 28(%[w1]) \n\t" 84 "sw %[temp0], 0(%[w0]) \n\t" 85 "sw %[temp1], 4(%[w0]) \n\t" 86 "sw %[temp2], 8(%[w0]) \n\t" 87 "sw %[temp3], 12(%[w0]) \n\t" 88 "sw %[temp4], 16(%[w0]) \n\t" 89 "sw %[temp5], 20(%[w0]) \n\t" 90 "sw %[temp6], 24(%[w0]) \n\t" 91 "sw %[temp7], 28(%[w0]) \n\t" 92 "addiu %[w0], %[w0], 32 \n\t" 93 "addiu %[w1], %[w1], 32 \n\t" 95 : [w0]
"+r"(w0), [w1]
"+r"(w1),
96 [temp0]
"=&r"(temp0), [temp1]
"=&r"(temp1),
97 [temp2]
"=&r"(temp2), [temp3]
"=&r"(temp3),
98 [temp4]
"=&r"(temp4), [temp5]
"=&r"(temp5),
99 [temp6]
"=&r"(temp6), [temp7]
"=&r"(temp7)
107 for(i = 0; i < 128; i++)
111 "lw %[temp0], 0(%[w1]) \n\t" 112 "lw %[temp1], 4(%[w1]) \n\t" 113 "lw %[temp2], 8(%[w1]) \n\t" 114 "lw %[temp3], 12(%[w1]) \n\t" 115 "lw %[temp4], 16(%[w1]) \n\t" 116 "lw %[temp5], 20(%[w1]) \n\t" 117 "lw %[temp6], 24(%[w1]) \n\t" 118 "lw %[temp7], 28(%[w1]) \n\t" 119 "sw %[temp0], 0(%[w0]) \n\t" 120 "sw %[temp1], 4(%[w0]) \n\t" 121 "sw %[temp2], 8(%[w0]) \n\t" 122 "sw %[temp3], 12(%[w0]) \n\t" 123 "sw %[temp4], 16(%[w0]) \n\t" 124 "sw %[temp5], 20(%[w0]) \n\t" 125 "sw %[temp6], 24(%[w0]) \n\t" 126 "sw %[temp7], 28(%[w0]) \n\t" 127 "addiu %[w0], %[w0], 32 \n\t" 128 "addiu %[w1], %[w1], 32 \n\t" 130 : [w0]
"+r"(w0), [w1]
"+r"(w1),
131 [temp0]
"=&r"(temp0), [temp1]
"=&r"(temp1),
132 [temp2]
"=&r"(temp2), [temp3]
"=&r"(temp3),
133 [temp4]
"=&r"(temp4), [temp5]
"=&r"(temp5),
134 [temp6]
"=&r"(temp6), [temp7]
"=&r"(temp7)
140 for (i = 0; i < 32; i++) {
152 static void sbr_qmf_synthesis_mips(
FFTContext *mdct,
154 float *
out,
float X[2][38][64],
155 float mdct_buf[2][64],
156 float *
v0,
int *v_off,
const unsigned int div)
159 const float *sbr_qmf_window = div ? sbr_qmf_window_ds : sbr_qmf_window_us;
160 const int step = 128 >> div;
162 float temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8, temp9, temp10, temp11, temp12, temp13;
163 float temp14, temp15, temp16, temp17, temp18, temp19;
164 float *vv0, *
s0, *
dst;
167 for (i = 0; i < 32; i++) {
169 int saved_samples = (1280 - 128) >> div;
177 for (n = 0; n < 32; n++) {
178 X[0][
i][
n] = -X[0][
i][
n];
179 X[0][
i][32+
n] = X[1][
i][31-
n];
195 s0 = (
float*)sbr_qmf_window;
201 ".set noreorder \n\t" 202 "lwc1 %[temp4], 0(%[v0]) \n\t" 203 "lwc1 %[temp5], 0(%[s0]) \n\t" 204 "lwc1 %[temp6], 4(%[v0]) \n\t" 205 "lwc1 %[temp7], 4(%[s0]) \n\t" 206 "lwc1 %[temp8], 8(%[v0]) \n\t" 207 "lwc1 %[temp9], 8(%[s0]) \n\t" 208 "lwc1 %[temp10], 12(%[v0]) \n\t" 209 "lwc1 %[temp11], 12(%[s0]) \n\t" 210 "lwc1 %[temp12], 768(%[v0]) \n\t" 211 "lwc1 %[temp13], 256(%[s0]) \n\t" 212 "lwc1 %[temp14], 772(%[v0]) \n\t" 213 "lwc1 %[temp15], 260(%[s0]) \n\t" 214 "lwc1 %[temp16], 776(%[v0]) \n\t" 215 "lwc1 %[temp17], 264(%[s0]) \n\t" 216 "lwc1 %[temp18], 780(%[v0]) \n\t" 217 "lwc1 %[temp19], 268(%[s0]) \n\t" 219 "mul.s %[temp0], %[temp4], %[temp5] \n\t" 220 "lwc1 %[temp4], 1024(%[v0]) \n\t" 221 "mul.s %[temp1], %[temp6], %[temp7] \n\t" 222 "lwc1 %[temp5], 512(%[s0]) \n\t" 223 "mul.s %[temp2], %[temp8], %[temp9] \n\t" 224 "lwc1 %[temp6], 1028(%[v0]) \n\t" 225 "mul.s %[temp3], %[temp10], %[temp11] \n\t" 226 "lwc1 %[temp7], 516(%[s0]) \n\t" 227 "madd.s %[temp0], %[temp0], %[temp12], %[temp13] \n\t" 228 "lwc1 %[temp8], 1032(%[v0]) \n\t" 229 "madd.s %[temp1], %[temp1], %[temp14], %[temp15] \n\t" 230 "lwc1 %[temp9], 520(%[s0]) \n\t" 231 "madd.s %[temp2], %[temp2], %[temp16], %[temp17] \n\t" 232 "lwc1 %[temp10], 1036(%[v0]) \n\t" 233 "madd.s %[temp3], %[temp3], %[temp18], %[temp19] \n\t" 234 "lwc1 %[temp11], 524(%[s0]) \n\t" 235 "lwc1 %[temp12], 1792(%[v0]) \n\t" 236 "lwc1 %[temp13], 768(%[s0]) \n\t" 237 "lwc1 %[temp14], 1796(%[v0]) \n\t" 238 "lwc1 %[temp15], 772(%[s0]) \n\t" 239 "lwc1 %[temp16], 1800(%[v0]) \n\t" 240 "lwc1 %[temp17], 776(%[s0]) \n\t" 241 "lwc1 %[temp18], 1804(%[v0]) \n\t" 242 "lwc1 %[temp19], 780(%[s0]) \n\t" 243 "madd.s %[temp0], %[temp0], %[temp4], %[temp5] \n\t" 244 "lwc1 %[temp4], 2048(%[v0]) \n\t" 245 "madd.s %[temp1], %[temp1], %[temp6], %[temp7] \n\t" 246 "lwc1 %[temp5], 1024(%[s0]) \n\t" 247 "madd.s %[temp2], %[temp2], %[temp8], %[temp9] \n\t" 248 "lwc1 %[temp6], 2052(%[v0]) \n\t" 249 "madd.s %[temp3], %[temp3], %[temp10], %[temp11] \n\t" 250 "lwc1 %[temp7], 1028(%[s0]) \n\t" 251 "madd.s %[temp0], %[temp0], %[temp12], %[temp13] \n\t" 252 "lwc1 %[temp8], 2056(%[v0]) \n\t" 253 "madd.s %[temp1], %[temp1], %[temp14], %[temp15] \n\t" 254 "lwc1 %[temp9], 1032(%[s0]) \n\t" 255 "madd.s %[temp2], %[temp2], %[temp16], %[temp17] \n\t" 256 "lwc1 %[temp10], 2060(%[v0]) \n\t" 257 "madd.s %[temp3], %[temp3], %[temp18], %[temp19] \n\t" 258 "lwc1 %[temp11], 1036(%[s0]) \n\t" 259 "lwc1 %[temp12], 2816(%[v0]) \n\t" 260 "lwc1 %[temp13], 1280(%[s0]) \n\t" 261 "lwc1 %[temp14], 2820(%[v0]) \n\t" 262 "lwc1 %[temp15], 1284(%[s0]) \n\t" 263 "lwc1 %[temp16], 2824(%[v0]) \n\t" 264 "lwc1 %[temp17], 1288(%[s0]) \n\t" 265 "lwc1 %[temp18], 2828(%[v0]) \n\t" 266 "lwc1 %[temp19], 1292(%[s0]) \n\t" 267 "madd.s %[temp0], %[temp0], %[temp4], %[temp5] \n\t" 268 "lwc1 %[temp4], 3072(%[v0]) \n\t" 269 "madd.s %[temp1], %[temp1], %[temp6], %[temp7] \n\t" 270 "lwc1 %[temp5], 1536(%[s0]) \n\t" 271 "madd.s %[temp2], %[temp2], %[temp8], %[temp9] \n\t" 272 "lwc1 %[temp6], 3076(%[v0]) \n\t" 273 "madd.s %[temp3], %[temp3], %[temp10], %[temp11] \n\t" 274 "lwc1 %[temp7], 1540(%[s0]) \n\t" 275 "madd.s %[temp0], %[temp0], %[temp12], %[temp13] \n\t" 276 "lwc1 %[temp8], 3080(%[v0]) \n\t" 277 "madd.s %[temp1], %[temp1], %[temp14], %[temp15] \n\t" 278 "lwc1 %[temp9], 1544(%[s0]) \n\t" 279 "madd.s %[temp2], %[temp2], %[temp16], %[temp17] \n\t" 280 "lwc1 %[temp10], 3084(%[v0]) \n\t" 281 "madd.s %[temp3], %[temp3], %[temp18], %[temp19] \n\t" 282 "lwc1 %[temp11], 1548(%[s0]) \n\t" 283 "lwc1 %[temp12], 3840(%[v0]) \n\t" 284 "lwc1 %[temp13], 1792(%[s0]) \n\t" 285 "lwc1 %[temp14], 3844(%[v0]) \n\t" 286 "lwc1 %[temp15], 1796(%[s0]) \n\t" 287 "lwc1 %[temp16], 3848(%[v0]) \n\t" 288 "lwc1 %[temp17], 1800(%[s0]) \n\t" 289 "lwc1 %[temp18], 3852(%[v0]) \n\t" 290 "lwc1 %[temp19], 1804(%[s0]) \n\t" 291 "madd.s %[temp0], %[temp0], %[temp4], %[temp5] \n\t" 292 "lwc1 %[temp4], 4096(%[v0]) \n\t" 293 "madd.s %[temp1], %[temp1], %[temp6], %[temp7] \n\t" 294 "lwc1 %[temp5], 2048(%[s0]) \n\t" 295 "madd.s %[temp2], %[temp2], %[temp8], %[temp9] \n\t" 296 "lwc1 %[temp6], 4100(%[v0]) \n\t" 297 "madd.s %[temp3], %[temp3], %[temp10], %[temp11] \n\t" 298 "lwc1 %[temp7], 2052(%[s0]) \n\t" 299 "madd.s %[temp0], %[temp0], %[temp12], %[temp13] \n\t" 300 "lwc1 %[temp8], 4104(%[v0]) \n\t" 301 "addiu %[dst], %[dst], 16 \n\t" 302 "madd.s %[temp1], %[temp1], %[temp14], %[temp15] \n\t" 303 "lwc1 %[temp9], 2056(%[s0]) \n\t" 304 "addiu %[s0], %[s0], 16 \n\t" 305 "madd.s %[temp2], %[temp2], %[temp16], %[temp17] \n\t" 306 "lwc1 %[temp10], 4108(%[v0]) \n\t" 307 "addiu %[v0], %[v0], 16 \n\t" 308 "madd.s %[temp3], %[temp3], %[temp18], %[temp19] \n\t" 309 "lwc1 %[temp11], 2044(%[s0]) \n\t" 310 "lwc1 %[temp12], 4848(%[v0]) \n\t" 311 "lwc1 %[temp13], 2288(%[s0]) \n\t" 312 "lwc1 %[temp14], 4852(%[v0]) \n\t" 313 "lwc1 %[temp15], 2292(%[s0]) \n\t" 314 "lwc1 %[temp16], 4856(%[v0]) \n\t" 315 "lwc1 %[temp17], 2296(%[s0]) \n\t" 316 "lwc1 %[temp18], 4860(%[v0]) \n\t" 317 "lwc1 %[temp19], 2300(%[s0]) \n\t" 318 "madd.s %[temp0], %[temp0], %[temp4], %[temp5] \n\t" 319 "lwc1 %[temp4], 0(%[v0]) \n\t" 320 "madd.s %[temp1], %[temp1], %[temp6], %[temp7] \n\t" 321 "lwc1 %[temp5], 0(%[s0]) \n\t" 322 "madd.s %[temp2], %[temp2], %[temp8], %[temp9] \n\t" 323 "lwc1 %[temp6], 4(%[v0]) \n\t" 324 "madd.s %[temp3], %[temp3], %[temp10], %[temp11] \n\t" 325 "lwc1 %[temp7], 4(%[s0]) \n\t" 326 "madd.s %[temp0], %[temp0], %[temp12], %[temp13] \n\t" 327 "lwc1 %[temp8], 8(%[v0]) \n\t" 328 "madd.s %[temp1], %[temp1], %[temp14], %[temp15] \n\t" 329 "lwc1 %[temp9], 8(%[s0]) \n\t" 330 "madd.s %[temp2], %[temp2], %[temp16], %[temp17] \n\t" 331 "lwc1 %[temp10], 12(%[v0]) \n\t" 332 "madd.s %[temp3], %[temp3], %[temp18], %[temp19] \n\t" 333 "lwc1 %[temp11], 12(%[s0]) \n\t" 334 "lwc1 %[temp12], 768(%[v0]) \n\t" 335 "lwc1 %[temp13], 256(%[s0]) \n\t" 336 "lwc1 %[temp14], 772(%[v0]) \n\t" 337 "lwc1 %[temp15], 260(%[s0]) \n\t" 338 "lwc1 %[temp16], 776(%[v0]) \n\t" 339 "lwc1 %[temp17], 264(%[s0]) \n\t" 340 "lwc1 %[temp18], 780(%[v0]) \n\t" 341 "lwc1 %[temp19], 268(%[s0]) \n\t" 342 "swc1 %[temp0], -16(%[dst]) \n\t" 343 "swc1 %[temp1], -12(%[dst]) \n\t" 344 "swc1 %[temp2], -8(%[dst]) \n\t" 345 "bne %[v0], %[v0_end], 1b \n\t" 346 " swc1 %[temp3], -4(%[dst]) \n\t" 347 "mul.s %[temp0], %[temp4], %[temp5] \n\t" 348 "lwc1 %[temp4], 1024(%[v0]) \n\t" 349 "mul.s %[temp1], %[temp6], %[temp7] \n\t" 350 "lwc1 %[temp5], 512(%[s0]) \n\t" 351 "mul.s %[temp2], %[temp8], %[temp9] \n\t" 352 "lwc1 %[temp6], 1028(%[v0]) \n\t" 353 "mul.s %[temp3], %[temp10], %[temp11] \n\t" 354 "lwc1 %[temp7], 516(%[s0]) \n\t" 355 "madd.s %[temp0], %[temp0], %[temp12], %[temp13] \n\t" 356 "lwc1 %[temp8], 1032(%[v0]) \n\t" 357 "madd.s %[temp1], %[temp1], %[temp14], %[temp15] \n\t" 358 "lwc1 %[temp9], 520(%[s0]) \n\t" 359 "madd.s %[temp2], %[temp2], %[temp16], %[temp17] \n\t" 360 "lwc1 %[temp10], 1036(%[v0]) \n\t" 361 "madd.s %[temp3], %[temp3], %[temp18], %[temp19] \n\t" 362 "lwc1 %[temp11], 524(%[s0]) \n\t" 363 "lwc1 %[temp12], 1792(%[v0]) \n\t" 364 "lwc1 %[temp13], 768(%[s0]) \n\t" 365 "lwc1 %[temp14], 1796(%[v0]) \n\t" 366 "lwc1 %[temp15], 772(%[s0]) \n\t" 367 "lwc1 %[temp16], 1800(%[v0]) \n\t" 368 "lwc1 %[temp17], 776(%[s0]) \n\t" 369 "lwc1 %[temp18], 1804(%[v0]) \n\t" 370 "lwc1 %[temp19], 780(%[s0]) \n\t" 371 "madd.s %[temp0], %[temp0], %[temp4], %[temp5] \n\t" 372 "lwc1 %[temp4], 2048(%[v0]) \n\t" 373 "madd.s %[temp1], %[temp1], %[temp6], %[temp7] \n\t" 374 "lwc1 %[temp5], 1024(%[s0]) \n\t" 375 "madd.s %[temp2], %[temp2], %[temp8], %[temp9] \n\t" 376 "lwc1 %[temp6], 2052(%[v0]) \n\t" 377 "madd.s %[temp3], %[temp3], %[temp10], %[temp11] \n\t" 378 "lwc1 %[temp7], 1028(%[s0]) \n\t" 379 "madd.s %[temp0], %[temp0], %[temp12], %[temp13] \n\t" 380 "lwc1 %[temp8], 2056(%[v0]) \n\t" 381 "madd.s %[temp1], %[temp1], %[temp14], %[temp15] \n\t" 382 "lwc1 %[temp9], 1032(%[s0]) \n\t" 383 "madd.s %[temp2], %[temp2], %[temp16], %[temp17] \n\t" 384 "lwc1 %[temp10], 2060(%[v0]) \n\t" 385 "madd.s %[temp3], %[temp3], %[temp18], %[temp19] \n\t" 386 "lwc1 %[temp11], 1036(%[s0]) \n\t" 387 "lwc1 %[temp12], 2816(%[v0]) \n\t" 388 "lwc1 %[temp13], 1280(%[s0]) \n\t" 389 "lwc1 %[temp14], 2820(%[v0]) \n\t" 390 "lwc1 %[temp15], 1284(%[s0]) \n\t" 391 "lwc1 %[temp16], 2824(%[v0]) \n\t" 392 "lwc1 %[temp17], 1288(%[s0]) \n\t" 393 "lwc1 %[temp18], 2828(%[v0]) \n\t" 394 "lwc1 %[temp19], 1292(%[s0]) \n\t" 395 "madd.s %[temp0], %[temp0], %[temp4], %[temp5] \n\t" 396 "lwc1 %[temp4], 3072(%[v0]) \n\t" 397 "madd.s %[temp1], %[temp1], %[temp6], %[temp7] \n\t" 398 "lwc1 %[temp5], 1536(%[s0]) \n\t" 399 "madd.s %[temp2], %[temp2], %[temp8], %[temp9] \n\t" 400 "lwc1 %[temp6], 3076(%[v0]) \n\t" 401 "madd.s %[temp3], %[temp3], %[temp10], %[temp11] \n\t" 402 "lwc1 %[temp7], 1540(%[s0]) \n\t" 403 "madd.s %[temp0], %[temp0], %[temp12], %[temp13] \n\t" 404 "lwc1 %[temp8], 3080(%[v0]) \n\t" 405 "madd.s %[temp1], %[temp1], %[temp14], %[temp15] \n\t" 406 "lwc1 %[temp9], 1544(%[s0]) \n\t" 407 "madd.s %[temp2], %[temp2], %[temp16], %[temp17] \n\t" 408 "lwc1 %[temp10], 3084(%[v0]) \n\t" 409 "madd.s %[temp3], %[temp3], %[temp18], %[temp19] \n\t" 410 "lwc1 %[temp11], 1548(%[s0]) \n\t" 411 "lwc1 %[temp12], 3840(%[v0]) \n\t" 412 "lwc1 %[temp13], 1792(%[s0]) \n\t" 413 "lwc1 %[temp14], 3844(%[v0]) \n\t" 414 "lwc1 %[temp15], 1796(%[s0]) \n\t" 415 "lwc1 %[temp16], 3848(%[v0]) \n\t" 416 "lwc1 %[temp17], 1800(%[s0]) \n\t" 417 "lwc1 %[temp18], 3852(%[v0]) \n\t" 418 "lwc1 %[temp19], 1804(%[s0]) \n\t" 419 "madd.s %[temp0], %[temp0], %[temp4], %[temp5] \n\t" 420 "lwc1 %[temp4], 4096(%[v0]) \n\t" 421 "madd.s %[temp1], %[temp1], %[temp6], %[temp7] \n\t" 422 "lwc1 %[temp5], 2048(%[s0]) \n\t" 423 "madd.s %[temp2], %[temp2], %[temp8], %[temp9] \n\t" 424 "lwc1 %[temp6], 4100(%[v0]) \n\t" 425 "madd.s %[temp3], %[temp3], %[temp10], %[temp11] \n\t" 426 "lwc1 %[temp7], 2052(%[s0]) \n\t" 427 "madd.s %[temp0], %[temp0], %[temp12], %[temp13] \n\t" 428 "lwc1 %[temp8], 4104(%[v0]) \n\t" 429 "madd.s %[temp1], %[temp1], %[temp14], %[temp15] \n\t" 430 "lwc1 %[temp9], 2056(%[s0]) \n\t" 431 "madd.s %[temp2], %[temp2], %[temp16], %[temp17] \n\t" 432 "lwc1 %[temp10], 4108(%[v0]) \n\t" 433 "madd.s %[temp3], %[temp3], %[temp18], %[temp19] \n\t" 434 "lwc1 %[temp11], 2060(%[s0]) \n\t" 435 "lwc1 %[temp12], 4864(%[v0]) \n\t" 436 "lwc1 %[temp13], 2304(%[s0]) \n\t" 437 "lwc1 %[temp14], 4868(%[v0]) \n\t" 438 "lwc1 %[temp15], 2308(%[s0]) \n\t" 439 "madd.s %[temp0], %[temp0], %[temp4], %[temp5] \n\t" 440 "lwc1 %[temp16], 4872(%[v0]) \n\t" 441 "madd.s %[temp1], %[temp1], %[temp6], %[temp7] \n\t" 442 "lwc1 %[temp17], 2312(%[s0]) \n\t" 443 "madd.s %[temp2], %[temp2], %[temp8], %[temp9] \n\t" 444 "lwc1 %[temp18], 4876(%[v0]) \n\t" 445 "madd.s %[temp3], %[temp3], %[temp10], %[temp11] \n\t" 446 "lwc1 %[temp19], 2316(%[s0]) \n\t" 447 "madd.s %[temp0], %[temp0], %[temp12], %[temp13] \n\t" 448 "addiu %[dst], %[dst], 16 \n\t" 449 "madd.s %[temp1], %[temp1], %[temp14], %[temp15] \n\t" 450 "madd.s %[temp2], %[temp2], %[temp16], %[temp17] \n\t" 451 "madd.s %[temp3], %[temp3], %[temp18], %[temp19] \n\t" 452 "swc1 %[temp0], -16(%[dst]) \n\t" 453 "swc1 %[temp1], -12(%[dst]) \n\t" 454 "swc1 %[temp2], -8(%[dst]) \n\t" 455 "swc1 %[temp3], -4(%[dst]) \n\t" 458 : [
dst]
"+r"(
dst), [v0]
"+r"(vv0), [
s0]
"+r"(
s0),
459 [temp0]
"=&f"(temp0), [temp1]
"=&f"(temp1), [temp2]
"=&f"(temp2),
460 [temp3]
"=&f"(temp3), [temp4]
"=&f"(temp4), [temp5]
"=&f"(temp5),
461 [temp6]
"=&f"(temp6), [temp7]
"=&f"(temp7), [temp8]
"=&f"(temp8),
462 [temp9]
"=&f"(temp9), [temp10]
"=&f"(temp10), [temp11]
"=&f"(temp11),
463 [temp12]
"=&f"(temp12), [temp13]
"=&f"(temp13), [temp14]
"=&f"(temp14),
464 [temp15]
"=&f"(temp15), [temp16]
"=&f"(temp16), [temp17]
"=&f"(temp17),
465 [temp18]
"=&f"(temp18), [temp19]
"=&f"(temp19)
466 : [v0_end]
"r"(v0_end)
472 fdsp->
vector_fmul (out, v , sbr_qmf_window , 64 >> div);
473 fdsp->
vector_fmul_add(out, v + ( 192 >> div), sbr_qmf_window + ( 64 >> div), out , 64 >> div);
474 fdsp->
vector_fmul_add(out, v + ( 256 >> div), sbr_qmf_window + (128 >> div), out , 64 >> div);
475 fdsp->
vector_fmul_add(out, v + ( 448 >> div), sbr_qmf_window + (192 >> div), out , 64 >> div);
476 fdsp->
vector_fmul_add(out, v + ( 512 >> div), sbr_qmf_window + (256 >> div), out , 64 >> div);
477 fdsp->
vector_fmul_add(out, v + ( 704 >> div), sbr_qmf_window + (320 >> div), out , 64 >> div);
478 fdsp->
vector_fmul_add(out, v + ( 768 >> div), sbr_qmf_window + (384 >> div), out , 64 >> div);
479 fdsp->
vector_fmul_add(out, v + ( 960 >> div), sbr_qmf_window + (448 >> div), out , 64 >> div);
480 fdsp->
vector_fmul_add(out, v + (1024 >> div), sbr_qmf_window + (512 >> div), out , 64 >> div);
481 fdsp->
vector_fmul_add(out, v + (1216 >> div), sbr_qmf_window + (576 >> div), out , 64 >> div);
487 #define sbr_qmf_analysis sbr_qmf_analysis_mips 488 #define sbr_qmf_synthesis sbr_qmf_synthesis_mips
void(* sum64x5)(float *z)
About Git write you should know how to use GIT properly Luckily Git comes with excellent documentation git help man git shows you the available git< command > help man git< command > shows information about the subcommand< command > The most comprehensive manual is the website Git Reference visit they are quite exhaustive You do not need a special username or password All you need is to provide a ssh public key to the Git server admin What follows now is a basic introduction to Git and some FFmpeg specific guidelines Read it at least if you are granted commit privileges to the FFmpeg project you are expected to be familiar with these rules I if not You can get git from etc no matter how small Every one of them has been saved from looking like a fool by this many times It s very easy for stray debug output or cosmetic modifications to slip in
void(* vector_fmul)(float *dst, const float *src0, const float *src1, int len)
Calculate the product of two vectors of floats and store the result in a vector of floats...
Spectral Band Replication definitions and structures.
void(* qmf_pre_shuffle)(float *z)
void(* neg_odd_64)(float *x)
AAC definitions and structures.
#define SBR_SYNTHESIS_BUF_SIZE
synthesis window for stochastic i
void(* imdct_half)(struct FFTContext *s, FFTSample *output, const FFTSample *input)
void(* vector_fmul_add)(float *dst, const float *src0, const float *src1, const float *src2, int len)
Calculate the product of two vectors of floats, add a third vector of floats and store the result in ...
else dst[i][x+y *dst_stride[i]]
void(* qmf_post_shuffle)(float W[32][2], const float *z)
void(* qmf_deint_bfly)(float *v, const float *src0, const float *src1)
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(const int16_t *) pi >> 8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(const int16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(const int16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(const int32_t *) pi >> 24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(const int32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(const int32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(const float *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(const float *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(const float *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(const double *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(const double *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(const double *) pi *(1U<< 31))))#define SET_CONV_FUNC_GROUP(ofmt, ifmt) static void set_generic_function(AudioConvert *ac){}void ff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels, int sample_rate, int apply_map){AudioConvert *ac;int in_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) return NULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method!=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt) > 2){ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc){av_free(ac);return NULL;}return ac;}in_planar=av_sample_fmt_is_planar(in_fmt);out_planar=av_sample_fmt_is_planar(out_fmt);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}else if(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;else ac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);return ac;}int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){int use_generic=1;int len=in->nb_samples;int p;if(ac->dc){av_dlog(ac->avr,"%d samples - audio_convert: %s to %s (dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));return ff_convert_dither(ac-> out
void(* qmf_deint_neg)(float *v, const float *src)
trying all byte sequences megabyte in length and selecting the best looking sequence will yield cases to try But a word about which is also called distortion Distortion can be quantified by almost any quality measurement one chooses the sum of squared differences is used but more complex methods that consider psychovisual effects can be used as well It makes no difference in this discussion First step
void(* vector_fmul_reverse)(float *dst, const float *src0, const float *src1, int len)
Calculate the product of two vectors of floats, and store the result in a vector of floats...