📄 filter.cc
字号:
OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; XX; SAVE; } break; case 15: for (; i; i--, vp += 31) { OS; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; SAVE; } break; }#else // reduced memory footprint and cache trashing for small cache machines... for (; i; i--, vp += 15) { OS; switch (15 - calcbufferoffset) { case 0: OP; case 1: OP; case 2: OP; case 3: OP; case 4: OP; case 5: OP; case 6: OP; case 7: OP; case 8: OP; case 9: OP; case 10: OP; case 11: OP; case 12: OP; case 13: OP; case 14: OP; } if (calcbufferoffset == 15) { vp += 16; } else { XX; switch (calcbufferoffset) { case 0: OP; case 1: OP; case 2: OP; case 3: OP; case 4: OP; case 5: OP; case 6: OP; case 7: OP; case 8: OP; case 9: OP; case 10: OP; case 11: OP; case 12: OP; case 13: OP; } } SAVE; }#endif}#undef OS#undef XX#undef OP#undef SAVE#define SAVE \ raw=RAW(r1); \ if(raw>MAXSCALE)raw=MAXSCALE; \ if(raw<MINSCALE)raw=MINSCALE; \ putraw(raw); \ raw=RAW(r2); \ if(raw>MAXSCALE)raw=MAXSCALE; \ if(raw<MINSCALE)raw=MINSCALE; \ putraw(raw);#define OS r1=*vp1 * *dp; \ r2=*vp2 * *dp++#define XX vp1+=15;r1+=*vp1 * *dp; \ vp2+=15;r2+=*vp2 * *dp++#define OP r1+=*--vp1 * *dp; \ r2+=*--vp2 * *dp++inline voidMpegtoraw::generate(void){ int i; REAL r1, r2; register REAL *vp1, *vp2; register const REAL *dp; int raw; dp = filter; vp1 = calcbufferL[currentcalcbuffer] + calcbufferoffset; vp2 = calcbufferR[currentcalcbuffer] + calcbufferoffset;// actual_v+actual_write_pos; i = 32;#if 0 switch (calcbufferoffset) { case 0: for (; i; i--, vp1 += 15, vp2 += 15) { OS; XX; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; SAVE; } break; case 1: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; XX; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; SAVE; } break; case 2: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; XX; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; SAVE; } break; case 3: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; XX; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; SAVE; } break; case 4: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; XX; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; SAVE; } break; case 5: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; OP; XX; OP; OP; OP; OP; OP; OP; OP; OP; OP; SAVE; } break; case 6: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; OP; OP; XX; OP; OP; OP; OP; OP; OP; OP; OP; SAVE; } break; case 7: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; OP; OP; OP; XX; OP; OP; OP; OP; OP; OP; OP; SAVE; } break; case 8: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; OP; OP; OP; OP; XX; OP; OP; OP; OP; OP; OP; SAVE; } break; case 9: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; OP; OP; OP; OP; OP; XX; OP; OP; OP; OP; OP; SAVE; } break; case 10: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; XX; OP; OP; OP; OP; SAVE; } break; case 11: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; XX; OP; OP; OP; SAVE; } break; case 12: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; XX; OP; OP; SAVE; } break; case 13: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; XX; OP; SAVE; } break; case 14: for (; i; i--, vp1 += 15, vp2 += 15) { OS; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; XX; SAVE; } break; case 15: for (; i; i--, vp1 += 31, vp2 += 31) { OS; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; OP; SAVE; } break; }#else // reduced memory footprint and cache trashing... for (; i; i--, vp1 += 15, vp2 += 15) { OS; switch (15 - calcbufferoffset) { case 0: OP; case 1: OP; case 2: OP; case 3: OP; case 4: OP; case 5: OP; case 6: OP; case 7: OP; case 8: OP; case 9: OP; case 10: OP; case 11: OP; case 12: OP; case 13: OP; case 14: OP; } if (calcbufferoffset == 15) { vp1 += 16; vp2 += 16; } else { XX; switch (calcbufferoffset) { case 0: OP; case 1: OP; case 2: OP; case 3: OP; case 4: OP; case 5: OP; case 6: OP; case 7: OP; case 8: OP; case 9: OP; case 10: OP; case 11: OP; case 12: OP; case 13: OP; } } SAVE; }#endif}voidMpegtoraw::subbandsynthesis(REAL * fractionL, REAL * fractionR){ if (downfrequency) { subbandsynthesis_2(fractionL, fractionR); return; } computebuffer(fractionL, calcbufferL); if (!outputstereo) generatesingle(); else { computebuffer(fractionR, calcbufferR); generate(); } if (calcbufferoffset < 15) calcbufferoffset++; else calcbufferoffset = 0; currentcalcbuffer ^= 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -