📄 mpegsub.c
字号:
MULT0; MULT1; MULT1; STORE; } break; case 3: while (j--) { MULTS; MULT1; MULT1; MULT1; STORE; } break; } } else if (mpegsub->w_width <= 8) { switch (cnt0) { case 0: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; STORE; } break; case 1: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; STORE; } break; case 2: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; STORE; } break; case 3: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; STORE; } break; case 4: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 5: while (j--) { MULTS; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 6: while (j--) { MULTS; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 7: while (j--) { MULTS; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; } } else { switch (cnt0) { case 0: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; STORE; } break; case 1: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; STORE; } break; case 2: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; STORE; } break; case 3: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; STORE; } break; case 4: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 5: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 6: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 7: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 8: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 9: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 10: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 11: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 12: while (j--) { MULTS; MULT0; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 13: while (j--) { MULTS; MULT0; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 14: while (j--) { MULTS; MULT0; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; case 15: while (j--) { MULTS; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; MULT1; STORE; } break; } } } mpegsub->b_offset[channel] = (b_offset - 1) & 15; return(mpegsub->pcm_count);}/****************************************************************************//* * Reset the MPEGSUB module */int MPEGSUB_reset(MPEGSUB *mpegsub){ INT16 ch; if (!mpegsub) return(-1); // Reset sub band buffer memset(mpegsub->bb, 0, MPA_MAX_CHANNELS * 2 * MPA_HANNING_SIZE * sizeof(MPEGAUD_FRACT_TYPE)); // Reset offsets for (ch = 0; ch < MPA_MAX_CHANNELS; ch++) mpegsub->b_offset[ch] = 0; return(0);}/****************************************************************************//* * Set the scale of the output of synthesis filter * input: scale_percent = scale in % (100 is nominal value) * return 0 if Ok */int MPEGSUB_scale(MPEGSUB *mpegsub, INT32 scale_percent){ INT16 i; if (mpegsub->scale_percent == scale_percent) return(0); if (scale_percent <= 0) return(-1); if (scale_percent > 10000) return(-2);#ifdef MPEGAUD_INT { INT32 s, c; s = MPEGTAB_DEW_BITS; c = scale_percent; while ((c <= 50) && (s < 17)) { c <<= 1; s++; } while ((c > 100) && (s > 2)) { c >>= 1; s--; } if (s == 2) c = 100; // Limit max scale mpegsub->scaled_shift = s; c <<= 14; c /= 100; for (i = 0; i < MPA_HANNING_SIZE; i++) { mpegsub->scaled_dewindow[i] = (MPEGTAB_DEW_TYPE) (((INT32) MPT_dewindow[i] * c) >> 14); } }#else { REAL coeff; coeff = (REAL) (scale_percent) * (MPA_SCALE * 0.01); for (i = 0; i < MPA_HANNING_SIZE; i++) { mpegsub->scaled_dewindow[i] = MPT_dewindow[i] * coeff; } }#endif mpegsub->scale_percent = scale_percent; return(0);}/****************************************************************************//* * Close the MPEGSUB module */void MPEGSUB_close(MPEGSUB *mpegsub){ if (mpegsub) //ffree(mpegsub); free(mpegsub);}/****************************************************************************//* * Open the MPEGSUB module */MPEGSUB *MPEGSUB_open(INT16 freq_div, INT16 quality){ MPEGSUB *mpegsub; mpegsub = (MPEGSUB *) malloc(sizeof(MPEGSUB)); //mpegsub = (MPEGSUB *) fmalloc(sizeof(MPEGSUB)); if (!mpegsub) return(NULL); MPEGSUB_reset(mpegsub); mpegsub->scale_percent = 0; MPEGSUB_scale(mpegsub, 100); switch (freq_div) { case 2: mpegsub->pcm_count = MPA_SBLIMIT >> 1; break; case 4: mpegsub->pcm_count = MPA_SBLIMIT >> 2; break; default: mpegsub->pcm_count = MPA_SBLIMIT; freq_div = 1; break; } switch (quality) { case 0: mpegsub->w_begin = 6; mpegsub->w_width = 4; break; case 1: mpegsub->w_begin = 4; mpegsub->w_width = 8; break; default: mpegsub->w_begin = 0; mpegsub->w_width = 16; quality = 2; break; } mpegsub->freq_div = freq_div; mpegsub->quality = quality; return(mpegsub);}/****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -