typeconver.c
来自「speech signal process tools」· C语言 代码 · 共 1,620 行 · 第 1/3 页
C
1,620 行
CLIP; } else if (src[i] > CHAR_MAX) { dest[i].real = CHAR_MAX; CLIP; } else if (src[i] > 0) dest[i].real = src[i] + 0.5; else dest[i].real = - (0.5 - src[i]); dest[i].imag = 0; } break;} case SHORT_CPLX: { short_cplx *dest = (short_cplx *) destination; for (i = 0; i < num; i++) { if (src[i] < SHRT_MIN) { dest[i].real = SHRT_MIN; CLIP; } else if (src[i] > SHRT_MAX) { dest[i].real = SHRT_MAX; CLIP; } else if (src[i] > 0) dest[i].real = src[i] + 0.5; else dest[i].real = - (0.5 - src[i]); dest[i].imag = 0; } break;} case LONG_CPLX: { long_cplx *dest = (long_cplx *) destination; for (i = 0; i < num; i++) { if (src[i] < LONG_MIN) { dest[i].real = LONG_MIN; CLIP; } else if (src[i] > LONG_MAX) { dest[i].real = LONG_MAX; CLIP; } else if (src[i] > 0) dest[i].real = src[i] + 0.5; else dest[i].real = - (0.5 - src[i]); dest[i].imag = 0; } break;} case FLOAT_CPLX: { float_cplx *dest = (float_cplx *) destination; for (i = 0; i < num; i++) { dest[i].real = src[i]; dest[i].imag = 0.0; } break;} case DOUBLE_CPLX: { double_cplx *dest = (double_cplx *) destination; for (i = 0; i < num; i++) { dest[i].real = src[i]; dest[i].imag = 0.0; } break;} } break;} case DOUBLE: { double *src = (double *) source; switch (dest_type) { case BYTE: { char *dest = (char *) destination; for (i = 0; i < num; i++) { if (src[i] < CHAR_MIN) { dest[i] = CHAR_MIN; CLIP; } else if (src[i] > CHAR_MAX) { dest[i] = CHAR_MAX; CLIP; } else if (src[i] > 0) dest[i] = src[i] + 0.5; else dest[i] = - (0.5 - src[i]); } break;} case SHORT: { short *dest = (short *) destination; for (i = 0; i < num; i++) { if (src[i] < SHRT_MIN) { dest[i] = SHRT_MIN; CLIP; } else if (src[i] > SHRT_MAX) { dest[i] = SHRT_MAX; CLIP; } else if (src[i] > 0) dest[i] = src[i] + 0.5; else dest[i] = - (0.5 - src[i]); } break;} case LONG: { long *dest = (long *) destination; for (i = 0; i < num; i++) { if (src[i] < LONG_MIN) { dest[i] = LONG_MIN; CLIP; } else if (src[i] > LONG_MAX) { dest[i] = LONG_MAX; CLIP; } else if (src[i] > 0) dest[i] = src[i] + 0.5; else dest[i] = - (0.5 - src[i]); } break;} case FLOAT: { float *dest = (float *) destination; for (i = 0; i < num; i++) { if (src[i] < - FLT_MAX) { dest[i] = - FLT_MAX; CLIP; } else if (src[i] > FLT_MAX) { dest[i] = FLT_MAX; CLIP; } else dest[i] = src[i]; } break;} case DOUBLE: { double *dest = (double *) destination; for (i = 0; i < num; i++) { dest[i] = src[i]; } break;} case BYTE_CPLX: { byte_cplx *dest = (byte_cplx *) destination; for (i = 0; i < num; i++) { if (src[i] < CHAR_MIN) { dest[i].real = CHAR_MIN; CLIP; } else if (src[i] > CHAR_MAX) { dest[i].real = CHAR_MAX; CLIP; } else if (src[i] > 0) dest[i].real = src[i] + 0.5; else dest[i].real = - (0.5 - src[i]); dest[i].imag = 0; } break;} case SHORT_CPLX: { short_cplx *dest = (short_cplx *) destination; for (i = 0; i < num; i++) { if (src[i] < SHRT_MIN) { dest[i].real = SHRT_MIN; CLIP; } else if (src[i] > SHRT_MAX) { dest[i].real = SHRT_MAX; CLIP; } else if (src[i] > 0) dest[i].real = src[i] + 0.5; else dest[i].real = - (0.5 - src[i]); dest[i].imag = 0; } break;} case LONG_CPLX: { long_cplx *dest = (long_cplx *) destination; for (i = 0; i < num; i++) { if (src[i] < LONG_MIN) { dest[i].real = LONG_MIN; CLIP; } else if (src[i] > LONG_MAX) { dest[i].real = LONG_MAX; CLIP; } else if (src[i] > 0) dest[i].real = src[i] + 0.5; else dest[i].real = - (0.5 - src[i]); dest[i].imag = 0; } break;} case FLOAT_CPLX: { float_cplx *dest = (float_cplx *) destination; for (i = 0; i < num; i++) { if (src[i] < - FLT_MAX) { dest[i].real = - FLT_MAX; CLIP; } else if (src[i] > FLT_MAX) { dest[i].real = FLT_MAX; CLIP; } else dest[i].real = src[i]; dest[i].imag = 0.0; } break;} case DOUBLE_CPLX: { double_cplx *dest = (double_cplx *) destination; for (i = 0; i < num; i++) { dest[i].real = src[i]; dest[i].imag = 0.0; } break;} } break;} case BYTE_CPLX: { byte_cplx *src = (byte_cplx *) source; switch (dest_type) { case BYTE: { char *dest = (char *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case SHORT: { short *dest = (short *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case LONG: { long *dest = (long *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case FLOAT: { float *dest = (float *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case DOUBLE: { double *dest = (double *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case BYTE_CPLX: { byte_cplx *dest = (byte_cplx *) destination; for (i = 0; i < num; i++) { dest[i] = src[i]; } break;} case SHORT_CPLX: { short_cplx *dest = (short_cplx *) destination; for (i = 0; i < num; i++) { dest[i].real = src[i].real; dest[i].imag = src[i].imag; } break;} case LONG_CPLX: { long_cplx *dest = (long_cplx *) destination; for (i = 0; i < num; i++) { dest[i].real = src[i].real; dest[i].imag = src[i].imag; } break;} case FLOAT_CPLX: { float_cplx *dest = (float_cplx *) destination; for (i = 0; i < num; i++) { dest[i].real = src[i].real; dest[i].imag = src[i].imag; } break;} case DOUBLE_CPLX: { double_cplx *dest = (double_cplx *) destination; for (i = 0; i < num; i++) { dest[i].real = src[i].real; dest[i].imag = src[i].imag; } break;} } break;} case SHORT_CPLX: { short_cplx *src = (short_cplx *) source; switch (dest_type) { case BYTE: { char *dest = (char *) destination; for (i = 0; i < num; i++) { if (src[i].real < CHAR_MIN) { dest[i] = CHAR_MIN; CLIP_CX; } else if (src[i].real > CHAR_MAX) { dest[i] = CHAR_MAX; CLIP_CX; } else dest[i] = src[i].real; } break;} case SHORT: { short *dest = (short *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case LONG: { long *dest = (long *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case FLOAT: { float *dest = (float *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case DOUBLE: { double *dest = (double *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case BYTE_CPLX: { byte_cplx *dest = (byte_cplx *) destination; for (i = 0; i < num; i++) { if (src[i].real < CHAR_MIN) { dest[i].real = CHAR_MIN; CLIP_RE; } else if (src[i].real > CHAR_MAX) { dest[i].real = CHAR_MAX; CLIP_RE; } else dest[i].real = src[i].real; if (src[i].imag < CHAR_MIN) { dest[i].imag = CHAR_MIN; CLIP_IM; } else if (src[i].imag > CHAR_MAX) { dest[i].imag = CHAR_MAX; CLIP_IM; } else dest[i].imag = src[i].imag; } break;} case SHORT_CPLX: { short_cplx *dest = (short_cplx *) destination; for (i = 0; i < num; i++) { dest[i] = src[i]; } break;} case LONG_CPLX: { long_cplx *dest = (long_cplx *) destination; for (i = 0; i < num; i++) { dest[i].real = src[i].real; dest[i].imag = src[i].imag; } break;} case FLOAT_CPLX: { float_cplx *dest = (float_cplx *) destination; for (i = 0; i < num; i++) { dest[i].real = src[i].real; dest[i].imag = src[i].imag; } break;} case DOUBLE_CPLX: { double_cplx *dest = (double_cplx *) destination; for (i = 0; i < num; i++) { dest[i].real = src[i].real; dest[i].imag = src[i].imag; } break;} } break;} case LONG_CPLX: { long_cplx *src = (long_cplx *) source; switch (dest_type) { case BYTE: { char *dest = (char *) destination; for (i = 0; i < num; i++) { if (src[i].real < CHAR_MIN) { dest[i] = CHAR_MIN; CLIP_CX; } else if (src[i].real > CHAR_MAX) { dest[i] = CHAR_MAX; CLIP_CX; } else dest[i] = src[i].real; } break;} case SHORT: { short *dest = (short *) destination; for (i = 0; i < num; i++) { if (src[i].real < SHRT_MIN) { dest[i] = SHRT_MIN; CLIP_CX; } else if (src[i].real > SHRT_MAX) { dest[i] = SHRT_MAX; CLIP_CX; } else dest[i] = src[i].real; } break;} case LONG: { long *dest = (long *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case FLOAT: { float *dest = (float *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case DOUBLE: { double *dest = (double *) destination; for (i = 0; i < num; i++) { dest[i] = src[i].real; } break;} case BYTE_CPLX: { byte_cplx *dest = (byte_cplx *) destination; for (i = 0; i < num; i++) { if (src[i].real < CHAR_MIN) { dest[i].real = CHAR_MIN; CLIP_RE; } else if (src[i].real > CHAR_MAX) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?