54 #ifndef AVCODEC_MIPS_AACSBR_FLOAT_H 
   55 #define AVCODEC_MIPS_AACSBR_FLOAT_H 
   64                              float z[320], 
float W[2][32][32][2], 
int buf_idx)
 
   69     int temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7;
 
   73     for(i = 0; i < 36; i++)
 
   77             "lw      %[temp0],   0(%[w1])         \n\t" 
   78             "lw      %[temp1],   4(%[w1])         \n\t" 
   79             "lw      %[temp2],   8(%[w1])         \n\t" 
   80             "lw      %[temp3],   12(%[w1])        \n\t" 
   81             "lw      %[temp4],   16(%[w1])        \n\t" 
   82             "lw      %[temp5],   20(%[w1])        \n\t" 
   83             "lw      %[temp6],   24(%[w1])        \n\t" 
   84             "lw      %[temp7],   28(%[w1])        \n\t" 
   85             "sw      %[temp0],   0(%[w0])         \n\t" 
   86             "sw      %[temp1],   4(%[w0])         \n\t" 
   87             "sw      %[temp2],   8(%[w0])         \n\t" 
   88             "sw      %[temp3],   12(%[w0])        \n\t" 
   89             "sw      %[temp4],   16(%[w0])        \n\t" 
   90             "sw      %[temp5],   20(%[w0])        \n\t" 
   91             "sw      %[temp6],   24(%[w0])        \n\t" 
   92             "sw      %[temp7],   28(%[w0])        \n\t" 
   96             : [w0]
"+r"(w0), [w1]
"+r"(w1),
 
   97               [temp0]
"=&r"(temp0), [temp1]
"=&r"(temp1),
 
   98               [temp2]
"=&r"(temp2), [temp3]
"=&r"(temp3),
 
   99               [temp4]
"=&r"(temp4), [temp5]
"=&r"(temp5),
 
  100               [temp6]
"=&r"(temp6), [temp7]
"=&r"(temp7)
 
  108     for(i = 0; i < 128; i++)
 
  112             "lw       %[temp0],    0(%[w1])        \n\t" 
  113             "lw       %[temp1],    4(%[w1])        \n\t" 
  114             "lw       %[temp2],    8(%[w1])        \n\t" 
  115             "lw       %[temp3],    12(%[w1])       \n\t" 
  116             "lw       %[temp4],    16(%[w1])       \n\t" 
  117             "lw       %[temp5],    20(%[w1])       \n\t" 
  118             "lw       %[temp6],    24(%[w1])       \n\t" 
  119             "lw       %[temp7],    28(%[w1])       \n\t" 
  120             "sw       %[temp0],    0(%[w0])        \n\t" 
  121             "sw       %[temp1],    4(%[w0])        \n\t" 
  122             "sw       %[temp2],    8(%[w0])        \n\t" 
  123             "sw       %[temp3],    12(%[w0])       \n\t" 
  124             "sw       %[temp4],    16(%[w0])       \n\t" 
  125             "sw       %[temp5],    20(%[w0])       \n\t" 
  126             "sw       %[temp6],    24(%[w0])       \n\t" 
  127             "sw       %[temp7],    28(%[w0])       \n\t" 
  131             : [w0]
"+r"(w0), [w1]
"+r"(w1),
 
  132               [temp0]
"=&r"(temp0), [temp1]
"=&r"(temp1),
 
  133               [temp2]
"=&r"(temp2), [temp3]
"=&r"(temp3),
 
  134               [temp4]
"=&r"(temp4), [temp5]
"=&r"(temp5),
 
  135               [temp6]
"=&r"(temp6), [temp7]
"=&r"(temp7)
 
  141     for (i = 0; i < 32; i++) { 
 
  152 #if (HAVE_MIPSFPU && !HAVE_LOONGSON3) 
  153 static void sbr_qmf_synthesis_mips(
FFTContext *mdct,
 
  155                               float *
out, 
float X[2][38][64],
 
  156                               float mdct_buf[2][64],
 
  157                               float *
v0, 
int *v_off, 
const unsigned int div)
 
  161     const int step = 128 >> div;
 
  163     float temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8, temp9, temp10, temp11, temp12, temp13;
 
  164     float temp14, temp15, temp16, temp17, temp18, temp19;
 
  165     float *vv0, *
s0, *dst;
 
  168     for (i = 0; i < 32; i++) {
 
  170             int saved_samples = (1280 - 128) >> div;
 
  178             for (n = 0; n < 32; n++) {
 
  179                 X[0][i][   
n] = -X[0][i][
n];
 
  180                 X[0][i][32+
n] =  X[1][i][31-
n];
 
  196             s0 = (
float*)sbr_qmf_window;
 
  202                 ".set    noreorder                                      \n\t" 
  203                 "lwc1    %[temp4],   0(%[v0])                           \n\t" 
  204                 "lwc1    %[temp5],   0(%[s0])                           \n\t" 
  205                 "lwc1    %[temp6],   4(%[v0])                           \n\t" 
  206                 "lwc1    %[temp7],   4(%[s0])                           \n\t" 
  207                 "lwc1    %[temp8],   8(%[v0])                           \n\t" 
  208                 "lwc1    %[temp9],   8(%[s0])                           \n\t" 
  209                 "lwc1    %[temp10],  12(%[v0])                          \n\t" 
  210                 "lwc1    %[temp11],  12(%[s0])                          \n\t" 
  211                 "lwc1    %[temp12],  768(%[v0])                         \n\t" 
  212                 "lwc1    %[temp13],  256(%[s0])                         \n\t" 
  213                 "lwc1    %[temp14],  772(%[v0])                         \n\t" 
  214                 "lwc1    %[temp15],  260(%[s0])                         \n\t" 
  215                 "lwc1    %[temp16],  776(%[v0])                         \n\t" 
  216                 "lwc1    %[temp17],  264(%[s0])                         \n\t" 
  217                 "lwc1    %[temp18],  780(%[v0])                         \n\t" 
  218                 "lwc1    %[temp19],  268(%[s0])                         \n\t" 
  220                 "mul.s   %[temp0],   %[temp4],   %[temp5]               \n\t" 
  221                 "lwc1    %[temp4],   1024(%[v0])                        \n\t" 
  222                 "mul.s   %[temp1],   %[temp6],   %[temp7]               \n\t" 
  223                 "lwc1    %[temp5],   512(%[s0])                         \n\t" 
  224                 "mul.s   %[temp2],   %[temp8],   %[temp9]               \n\t" 
  225                 "lwc1    %[temp6],   1028(%[v0])                        \n\t" 
  226                 "mul.s   %[temp3],   %[temp10],  %[temp11]              \n\t" 
  227                 "lwc1    %[temp7],   516(%[s0])                         \n\t" 
  228                 "madd.s  %[temp0],   %[temp0],   %[temp12],  %[temp13]  \n\t" 
  229                 "lwc1    %[temp8],   1032(%[v0])                        \n\t" 
  230                 "madd.s  %[temp1],   %[temp1],   %[temp14],  %[temp15]  \n\t" 
  231                 "lwc1    %[temp9],   520(%[s0])                         \n\t" 
  232                 "madd.s  %[temp2],   %[temp2],   %[temp16],  %[temp17]  \n\t" 
  233                 "lwc1    %[temp10],  1036(%[v0])                        \n\t" 
  234                 "madd.s  %[temp3],   %[temp3],   %[temp18],  %[temp19]  \n\t" 
  235                 "lwc1    %[temp11],  524(%[s0])                         \n\t" 
  236                 "lwc1    %[temp12],  1792(%[v0])                        \n\t" 
  237                 "lwc1    %[temp13],  768(%[s0])                         \n\t" 
  238                 "lwc1    %[temp14],  1796(%[v0])                        \n\t" 
  239                 "lwc1    %[temp15],  772(%[s0])                         \n\t" 
  240                 "lwc1    %[temp16],  1800(%[v0])                        \n\t" 
  241                 "lwc1    %[temp17],  776(%[s0])                         \n\t" 
  242                 "lwc1    %[temp18],  1804(%[v0])                        \n\t" 
  243                 "lwc1    %[temp19],  780(%[s0])                         \n\t" 
  244                 "madd.s  %[temp0],   %[temp0],   %[temp4],   %[temp5]   \n\t" 
  245                 "lwc1    %[temp4],   2048(%[v0])                        \n\t" 
  246                 "madd.s  %[temp1],   %[temp1],   %[temp6],   %[temp7]   \n\t" 
  247                 "lwc1    %[temp5],   1024(%[s0])                        \n\t" 
  248                 "madd.s  %[temp2],   %[temp2],   %[temp8],   %[temp9]   \n\t" 
  249                 "lwc1    %[temp6],   2052(%[v0])                        \n\t" 
  250                 "madd.s  %[temp3],   %[temp3],   %[temp10],  %[temp11]  \n\t" 
  251                 "lwc1    %[temp7],   1028(%[s0])                        \n\t" 
  252                 "madd.s  %[temp0],   %[temp0],   %[temp12],  %[temp13]  \n\t" 
  253                 "lwc1    %[temp8],   2056(%[v0])                        \n\t" 
  254                 "madd.s  %[temp1],   %[temp1],   %[temp14],  %[temp15]  \n\t" 
  255                 "lwc1    %[temp9],   1032(%[s0])                        \n\t" 
  256                 "madd.s  %[temp2],   %[temp2],   %[temp16],  %[temp17]  \n\t" 
  257                 "lwc1    %[temp10],  2060(%[v0])                        \n\t" 
  258                 "madd.s  %[temp3],   %[temp3],   %[temp18],  %[temp19]  \n\t" 
  259                 "lwc1    %[temp11],  1036(%[s0])                        \n\t" 
  260                 "lwc1    %[temp12],  2816(%[v0])                        \n\t" 
  261                 "lwc1    %[temp13],  1280(%[s0])                        \n\t" 
  262                 "lwc1    %[temp14],  2820(%[v0])                        \n\t" 
  263                 "lwc1    %[temp15],  1284(%[s0])                        \n\t" 
  264                 "lwc1    %[temp16],  2824(%[v0])                        \n\t" 
  265                 "lwc1    %[temp17],  1288(%[s0])                        \n\t" 
  266                 "lwc1    %[temp18],  2828(%[v0])                        \n\t" 
  267                 "lwc1    %[temp19],  1292(%[s0])                        \n\t" 
  268                 "madd.s  %[temp0],   %[temp0],   %[temp4],   %[temp5]   \n\t" 
  269                 "lwc1    %[temp4],   3072(%[v0])                        \n\t" 
  270                 "madd.s  %[temp1],   %[temp1],   %[temp6],   %[temp7]   \n\t" 
  271                 "lwc1    %[temp5],   1536(%[s0])                        \n\t" 
  272                 "madd.s  %[temp2],   %[temp2],   %[temp8],   %[temp9]   \n\t" 
  273                 "lwc1    %[temp6],   3076(%[v0])                        \n\t" 
  274                 "madd.s  %[temp3],   %[temp3],   %[temp10],  %[temp11]  \n\t" 
  275                 "lwc1    %[temp7],   1540(%[s0])                        \n\t" 
  276                 "madd.s  %[temp0],   %[temp0],   %[temp12],  %[temp13]  \n\t" 
  277                 "lwc1    %[temp8],   3080(%[v0])                        \n\t" 
  278                 "madd.s  %[temp1],   %[temp1],   %[temp14],  %[temp15]  \n\t" 
  279                 "lwc1    %[temp9],   1544(%[s0])                        \n\t" 
  280                 "madd.s  %[temp2],   %[temp2],   %[temp16],  %[temp17]  \n\t" 
  281                 "lwc1    %[temp10],  3084(%[v0])                        \n\t" 
  282                 "madd.s  %[temp3],   %[temp3],   %[temp18],  %[temp19]  \n\t" 
  283                 "lwc1    %[temp11],  1548(%[s0])                        \n\t" 
  284                 "lwc1    %[temp12],  3840(%[v0])                        \n\t" 
  285                 "lwc1    %[temp13],  1792(%[s0])                        \n\t" 
  286                 "lwc1    %[temp14],  3844(%[v0])                        \n\t" 
  287                 "lwc1    %[temp15],  1796(%[s0])                        \n\t" 
  288                 "lwc1    %[temp16],  3848(%[v0])                        \n\t" 
  289                 "lwc1    %[temp17],  1800(%[s0])                        \n\t" 
  290                 "lwc1    %[temp18],  3852(%[v0])                        \n\t" 
  291                 "lwc1    %[temp19],  1804(%[s0])                        \n\t" 
  292                 "madd.s  %[temp0],   %[temp0],   %[temp4],   %[temp5]   \n\t" 
  293                 "lwc1    %[temp4],   4096(%[v0])                        \n\t" 
  294                 "madd.s  %[temp1],   %[temp1],   %[temp6],   %[temp7]   \n\t" 
  295                 "lwc1    %[temp5],   2048(%[s0])                        \n\t" 
  296                 "madd.s  %[temp2],   %[temp2],   %[temp8],   %[temp9]   \n\t" 
  297                 "lwc1    %[temp6],   4100(%[v0])                        \n\t" 
  298                 "madd.s  %[temp3],   %[temp3],   %[temp10],  %[temp11]  \n\t" 
  299                 "lwc1    %[temp7],   2052(%[s0])                        \n\t" 
  300                 "madd.s  %[temp0],   %[temp0],   %[temp12],  %[temp13]  \n\t" 
  301                 "lwc1    %[temp8],   4104(%[v0])                        \n\t" 
  303                 "madd.s  %[temp1],   %[temp1],   %[temp14],  %[temp15]  \n\t" 
  304                 "lwc1    %[temp9],   2056(%[s0])                        \n\t" 
  306                 "madd.s  %[temp2],   %[temp2],   %[temp16],  %[temp17]  \n\t" 
  307                 "lwc1    %[temp10],  4108(%[v0])                        \n\t" 
  309                 "madd.s  %[temp3],   %[temp3],   %[temp18],  %[temp19]  \n\t" 
  310                 "lwc1    %[temp11],  2044(%[s0])                        \n\t" 
  311                 "lwc1    %[temp12],  4848(%[v0])                        \n\t" 
  312                 "lwc1    %[temp13],  2288(%[s0])                        \n\t" 
  313                 "lwc1    %[temp14],  4852(%[v0])                        \n\t" 
  314                 "lwc1    %[temp15],  2292(%[s0])                        \n\t" 
  315                 "lwc1    %[temp16],  4856(%[v0])                        \n\t" 
  316                 "lwc1    %[temp17],  2296(%[s0])                        \n\t" 
  317                 "lwc1    %[temp18],  4860(%[v0])                        \n\t" 
  318                 "lwc1    %[temp19],  2300(%[s0])                        \n\t" 
  319                 "madd.s  %[temp0],   %[temp0],   %[temp4],   %[temp5]   \n\t" 
  320                 "lwc1    %[temp4],   0(%[v0])                           \n\t" 
  321                 "madd.s  %[temp1],   %[temp1],   %[temp6],   %[temp7]   \n\t" 
  322                 "lwc1    %[temp5],   0(%[s0])                           \n\t" 
  323                 "madd.s  %[temp2],   %[temp2],   %[temp8],   %[temp9]   \n\t" 
  324                 "lwc1    %[temp6],   4(%[v0])                           \n\t" 
  325                 "madd.s  %[temp3],   %[temp3],   %[temp10],  %[temp11]  \n\t" 
  326                 "lwc1    %[temp7],   4(%[s0])                           \n\t" 
  327                 "madd.s  %[temp0],   %[temp0],   %[temp12],  %[temp13]  \n\t" 
  328                 "lwc1    %[temp8],   8(%[v0])                           \n\t" 
  329                 "madd.s  %[temp1],   %[temp1],   %[temp14],  %[temp15]  \n\t" 
  330                 "lwc1    %[temp9],   8(%[s0])                           \n\t" 
  331                 "madd.s  %[temp2],   %[temp2],   %[temp16],  %[temp17]  \n\t" 
  332                 "lwc1    %[temp10],  12(%[v0])                          \n\t" 
  333                 "madd.s  %[temp3],   %[temp3],   %[temp18],  %[temp19]  \n\t" 
  334                 "lwc1    %[temp11],  12(%[s0])                          \n\t" 
  335                 "lwc1    %[temp12],  768(%[v0])                         \n\t" 
  336                 "lwc1    %[temp13],  256(%[s0])                         \n\t" 
  337                 "lwc1    %[temp14],  772(%[v0])                         \n\t" 
  338                 "lwc1    %[temp15],  260(%[s0])                         \n\t" 
  339                 "lwc1    %[temp16],  776(%[v0])                         \n\t" 
  340                 "lwc1    %[temp17],  264(%[s0])                         \n\t" 
  341                 "lwc1    %[temp18],  780(%[v0])                         \n\t" 
  342                 "lwc1    %[temp19],  268(%[s0])                         \n\t" 
  343                 "swc1    %[temp0],   -16(%[dst])                        \n\t" 
  344                 "swc1    %[temp1],   -12(%[dst])                        \n\t" 
  345                 "swc1    %[temp2],   -8(%[dst])                         \n\t" 
  346                 "bne     %[v0],      %[v0_end],  1b                     \n\t" 
  347                 " swc1   %[temp3],   -4(%[dst])                         \n\t" 
  348                 "mul.s   %[temp0],   %[temp4],   %[temp5]               \n\t" 
  349                 "lwc1    %[temp4],   1024(%[v0])                        \n\t" 
  350                 "mul.s   %[temp1],   %[temp6],   %[temp7]               \n\t" 
  351                 "lwc1    %[temp5],   512(%[s0])                         \n\t" 
  352                 "mul.s   %[temp2],   %[temp8],   %[temp9]               \n\t" 
  353                 "lwc1    %[temp6],   1028(%[v0])                        \n\t" 
  354                 "mul.s   %[temp3],   %[temp10],  %[temp11]              \n\t" 
  355                 "lwc1    %[temp7],   516(%[s0])                         \n\t" 
  356                 "madd.s  %[temp0],   %[temp0],   %[temp12],  %[temp13]  \n\t" 
  357                 "lwc1    %[temp8],   1032(%[v0])                        \n\t" 
  358                 "madd.s  %[temp1],   %[temp1],   %[temp14],  %[temp15]  \n\t" 
  359                 "lwc1    %[temp9],   520(%[s0])                         \n\t" 
  360                 "madd.s  %[temp2],   %[temp2],   %[temp16],  %[temp17]  \n\t" 
  361                 "lwc1    %[temp10],  1036(%[v0])                        \n\t" 
  362                 "madd.s  %[temp3],   %[temp3],   %[temp18],  %[temp19]  \n\t" 
  363                 "lwc1    %[temp11],  524(%[s0])                         \n\t" 
  364                 "lwc1    %[temp12],  1792(%[v0])                        \n\t" 
  365                 "lwc1    %[temp13],  768(%[s0])                         \n\t" 
  366                 "lwc1    %[temp14],  1796(%[v0])                        \n\t" 
  367                 "lwc1    %[temp15],  772(%[s0])                         \n\t" 
  368                 "lwc1    %[temp16],  1800(%[v0])                        \n\t" 
  369                 "lwc1    %[temp17],  776(%[s0])                         \n\t" 
  370                 "lwc1    %[temp18],  1804(%[v0])                        \n\t" 
  371                 "lwc1    %[temp19],  780(%[s0])                         \n\t" 
  372                 "madd.s  %[temp0],   %[temp0],   %[temp4],   %[temp5]   \n\t" 
  373                 "lwc1    %[temp4],   2048(%[v0])                        \n\t" 
  374                 "madd.s  %[temp1],   %[temp1],   %[temp6],   %[temp7]   \n\t" 
  375                 "lwc1    %[temp5],   1024(%[s0])                        \n\t" 
  376                 "madd.s  %[temp2],   %[temp2],   %[temp8],   %[temp9]   \n\t" 
  377                 "lwc1    %[temp6],   2052(%[v0])                        \n\t" 
  378                 "madd.s  %[temp3],   %[temp3],   %[temp10],  %[temp11]  \n\t" 
  379                 "lwc1    %[temp7],   1028(%[s0])                        \n\t" 
  380                 "madd.s  %[temp0],   %[temp0],   %[temp12],  %[temp13]  \n\t" 
  381                 "lwc1    %[temp8],   2056(%[v0])                        \n\t" 
  382                 "madd.s  %[temp1],   %[temp1],   %[temp14],  %[temp15]  \n\t" 
  383                 "lwc1    %[temp9],   1032(%[s0])                        \n\t" 
  384                 "madd.s  %[temp2],   %[temp2],   %[temp16],  %[temp17]  \n\t" 
  385                 "lwc1    %[temp10],  2060(%[v0])                        \n\t" 
  386                 "madd.s  %[temp3],   %[temp3],   %[temp18],  %[temp19]  \n\t" 
  387                 "lwc1    %[temp11],  1036(%[s0])                        \n\t" 
  388                 "lwc1    %[temp12],  2816(%[v0])                        \n\t" 
  389                 "lwc1    %[temp13],  1280(%[s0])                        \n\t" 
  390                 "lwc1    %[temp14],  2820(%[v0])                        \n\t" 
  391                 "lwc1    %[temp15],  1284(%[s0])                        \n\t" 
  392                 "lwc1    %[temp16],  2824(%[v0])                        \n\t" 
  393                 "lwc1    %[temp17],  1288(%[s0])                        \n\t" 
  394                 "lwc1    %[temp18],  2828(%[v0])                        \n\t" 
  395                 "lwc1    %[temp19],  1292(%[s0])                        \n\t" 
  396                 "madd.s  %[temp0],   %[temp0],   %[temp4],   %[temp5]   \n\t" 
  397                 "lwc1    %[temp4],   3072(%[v0])                        \n\t" 
  398                 "madd.s  %[temp1],   %[temp1],   %[temp6],   %[temp7]   \n\t" 
  399                 "lwc1    %[temp5],   1536(%[s0])                        \n\t" 
  400                 "madd.s  %[temp2],   %[temp2],   %[temp8],   %[temp9]   \n\t" 
  401                 "lwc1    %[temp6],   3076(%[v0])                        \n\t" 
  402                 "madd.s  %[temp3],   %[temp3],   %[temp10],  %[temp11]  \n\t" 
  403                 "lwc1    %[temp7],   1540(%[s0])                        \n\t" 
  404                 "madd.s  %[temp0],   %[temp0],   %[temp12],  %[temp13]  \n\t" 
  405                 "lwc1    %[temp8],   3080(%[v0])                        \n\t" 
  406                 "madd.s  %[temp1],   %[temp1],   %[temp14],  %[temp15]  \n\t" 
  407                 "lwc1    %[temp9],   1544(%[s0])                        \n\t" 
  408                 "madd.s  %[temp2],   %[temp2],   %[temp16],  %[temp17]  \n\t" 
  409                 "lwc1    %[temp10],  3084(%[v0])                        \n\t" 
  410                 "madd.s  %[temp3],   %[temp3],   %[temp18],  %[temp19]  \n\t" 
  411                 "lwc1    %[temp11],  1548(%[s0])                        \n\t" 
  412                 "lwc1    %[temp12],  3840(%[v0])                        \n\t" 
  413                 "lwc1    %[temp13],  1792(%[s0])                        \n\t" 
  414                 "lwc1    %[temp14],  3844(%[v0])                        \n\t" 
  415                 "lwc1    %[temp15],  1796(%[s0])                        \n\t" 
  416                 "lwc1    %[temp16],  3848(%[v0])                        \n\t" 
  417                 "lwc1    %[temp17],  1800(%[s0])                        \n\t" 
  418                 "lwc1    %[temp18],  3852(%[v0])                        \n\t" 
  419                 "lwc1    %[temp19],  1804(%[s0])                        \n\t" 
  420                 "madd.s  %[temp0],   %[temp0],   %[temp4],   %[temp5]   \n\t" 
  421                 "lwc1    %[temp4],   4096(%[v0])                        \n\t" 
  422                 "madd.s  %[temp1],   %[temp1],   %[temp6],   %[temp7]   \n\t" 
  423                 "lwc1    %[temp5],   2048(%[s0])                        \n\t" 
  424                 "madd.s  %[temp2],   %[temp2],   %[temp8],   %[temp9]   \n\t" 
  425                 "lwc1    %[temp6],   4100(%[v0])                        \n\t" 
  426                 "madd.s  %[temp3],   %[temp3],   %[temp10],  %[temp11]  \n\t" 
  427                 "lwc1    %[temp7],   2052(%[s0])                        \n\t" 
  428                 "madd.s  %[temp0],   %[temp0],   %[temp12],  %[temp13]  \n\t" 
  429                 "lwc1    %[temp8],   4104(%[v0])                        \n\t" 
  430                 "madd.s  %[temp1],   %[temp1],   %[temp14],  %[temp15]  \n\t" 
  431                 "lwc1    %[temp9],   2056(%[s0])                        \n\t" 
  432                 "madd.s  %[temp2],   %[temp2],   %[temp16],  %[temp17]  \n\t" 
  433                 "lwc1    %[temp10],  4108(%[v0])                        \n\t" 
  434                 "madd.s  %[temp3],   %[temp3],   %[temp18],  %[temp19]  \n\t" 
  435                 "lwc1    %[temp11],  2060(%[s0])                        \n\t" 
  436                 "lwc1    %[temp12],  4864(%[v0])                        \n\t" 
  437                 "lwc1    %[temp13],  2304(%[s0])                        \n\t" 
  438                 "lwc1    %[temp14],  4868(%[v0])                        \n\t" 
  439                 "lwc1    %[temp15],  2308(%[s0])                        \n\t" 
  440                 "madd.s  %[temp0],   %[temp0],   %[temp4],   %[temp5]   \n\t" 
  441                 "lwc1    %[temp16],  4872(%[v0])                        \n\t" 
  442                 "madd.s  %[temp1],   %[temp1],   %[temp6],   %[temp7]   \n\t" 
  443                 "lwc1    %[temp17],  2312(%[s0])                        \n\t" 
  444                 "madd.s  %[temp2],   %[temp2],   %[temp8],   %[temp9]   \n\t" 
  445                 "lwc1    %[temp18],  4876(%[v0])                        \n\t" 
  446                 "madd.s  %[temp3],   %[temp3],   %[temp10],  %[temp11]  \n\t" 
  447                 "lwc1    %[temp19],  2316(%[s0])                        \n\t" 
  448                 "madd.s  %[temp0],   %[temp0],   %[temp12],  %[temp13]  \n\t" 
  450                 "madd.s  %[temp1],   %[temp1],   %[temp14],  %[temp15]  \n\t" 
  451                 "madd.s  %[temp2],   %[temp2],   %[temp16],  %[temp17]  \n\t" 
  452                 "madd.s  %[temp3],   %[temp3],   %[temp18],  %[temp19]  \n\t" 
  453                 "swc1    %[temp0],   -16(%[dst])                        \n\t" 
  454                 "swc1    %[temp1],   -12(%[dst])                        \n\t" 
  455                 "swc1    %[temp2],   -8(%[dst])                         \n\t" 
  456                 "swc1    %[temp3],   -4(%[dst])                         \n\t" 
  459                 : [dst]
"+r"(dst), [v0]
"+r"(vv0), [
s0]
"+r"(
s0),
 
  460                   [temp0]
"=&f"(temp0), [temp1]
"=&f"(temp1), [temp2]
"=&f"(temp2),
 
  461                   [temp3]
"=&f"(temp3), [temp4]
"=&f"(temp4), [temp5]
"=&f"(temp5),
 
  462                   [temp6]
"=&f"(temp6), [temp7]
"=&f"(temp7), [temp8]
"=&f"(temp8),
 
  463                   [temp9]
"=&f"(temp9), [temp10]
"=&f"(temp10), [temp11]
"=&f"(temp11),
 
  464                   [temp12]
"=&f"(temp12), [temp13]
"=&f"(temp13), [temp14]
"=&f"(temp14),
 
  465                   [temp15]
"=&f"(temp15), [temp16]
"=&f"(temp16), [temp17]
"=&f"(temp17),
 
  466                   [temp18]
"=&f"(temp18), [temp19]
"=&f"(temp19)
 
  467                 : [v0_end]
"r"(v0_end)
 
  473             fdsp->
vector_fmul   (out, v                , sbr_qmf_window                       , 64 >> div);
 
  474             fdsp->
vector_fmul_add(out, v + ( 192 >> div), sbr_qmf_window + ( 64 >> div), out   , 64 >> div);
 
  475             fdsp->
vector_fmul_add(out, v + ( 256 >> div), sbr_qmf_window + (128 >> div), out   , 64 >> div);
 
  476             fdsp->
vector_fmul_add(out, v + ( 448 >> div), sbr_qmf_window + (192 >> div), out   , 64 >> div);
 
  477             fdsp->
vector_fmul_add(out, v + ( 512 >> div), sbr_qmf_window + (256 >> div), out   , 64 >> div);
 
  478             fdsp->
vector_fmul_add(out, v + ( 704 >> div), sbr_qmf_window + (320 >> div), out   , 64 >> div);
 
  479             fdsp->
vector_fmul_add(out, v + ( 768 >> div), sbr_qmf_window + (384 >> div), out   , 64 >> div);
 
  480             fdsp->
vector_fmul_add(out, v + ( 960 >> div), sbr_qmf_window + (448 >> div), out   , 64 >> div);
 
  481             fdsp->
vector_fmul_add(out, v + (1024 >> div), sbr_qmf_window + (512 >> div), out   , 64 >> div);
 
  482             fdsp->
vector_fmul_add(out, v + (1216 >> div), sbr_qmf_window + (576 >> div), out   , 64 >> div);
 
  488 #define sbr_qmf_analysis sbr_qmf_analysis_mips 
  489 #define sbr_qmf_synthesis sbr_qmf_synthesis_mips 
static float sbr_qmf_window_ds[320]
< window coefficients for analysis/synthesis QMF banks 
 
MIPS assembly defines from sys/asm.h but rewritten for use with C inline assembly (rather than from w...
 
void(* sum64x5)(float *z)
 
void(* qmf_deint_neg)(float *v, const float *src)
 
void(* vector_fmul_reverse)(float *dst, const float *src0, const float *src1, int len)
Calculate the entry wise product of two vectors of floats, and store the result in a vector of floats...
 
void(* qmf_deint_bfly)(float *v, const float *src0, const float *src1)
 
void(* vector_fmul)(float *dst, const float *src0, const float *src1, int len)
Calculate the entry wise product of two vectors of floats and store the result in a vector of floats...
 
Spectral Band Replication definitions and structures. 
 
static float sbr_qmf_window_us[640]
 
AAC definitions and structures. 
 
void(* neg_odd_64)(float *x)
 
#define SBR_SYNTHESIS_BUF_SIZE
 
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31))))#defineSET_CONV_FUNC_GROUP(ofmt, ifmt) staticvoidset_generic_function(AudioConvert *ac){}voidff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, intsample_rate, intapply_map){AudioConvert *ac;intin_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) returnNULL;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);returnNULL;}returnac;}in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}elseif(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;elseac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);returnac;}intff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){intuse_generic=1;intlen=in->nb_samples;intp;if(ac->dc){av_log(ac->avr, AV_LOG_TRACE,"%dsamples-audio_convert:%sto%s(dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));returnff_convert_dither(ac-> in
 
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 entry wise product of two vectors of floats, add a third vector of floats and store the...
 
void(* qmf_post_shuffle)(float W[32][2], const float *z)
 
void(* qmf_pre_shuffle)(float *z)
 
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31))))#defineSET_CONV_FUNC_GROUP(ofmt, ifmt) staticvoidset_generic_function(AudioConvert *ac){}voidff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, intsample_rate, intapply_map){AudioConvert *ac;intin_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) returnNULL;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);returnNULL;}returnac;}in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}elseif(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;elseac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);returnac;}intff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){intuse_generic=1;intlen=in->nb_samples;intp;if(ac->dc){av_log(ac->avr, AV_LOG_TRACE,"%dsamples-audio_convert:%sto%s(dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));returnff_convert_dither(ac-> out