📄 xi.c
字号:
normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7F) : 1.0 ; bufferlen = ARRAY_LEN (psf->u.ucbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; d2dsc_array (pxi, ptr + total, psf->u.scbuf, bufferlen, normfact) ; writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* dpcm_write_d2dsc */static sf_count_tdpcm_write_s2dles (SF_PRIVATE *psf, short *ptr, sf_count_t len){ XI_PRIVATE *pxi ; int bufferlen, writecount ; sf_count_t total = 0 ; if ((pxi = psf->fdata) == NULL) return 0 ; bufferlen = ARRAY_LEN (psf->u.sbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; s2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen) ; writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* dpcm_write_s2dles */static sf_count_tdpcm_write_i2dles (SF_PRIVATE *psf, int *ptr, sf_count_t len){ XI_PRIVATE *pxi ; int bufferlen, writecount ; sf_count_t total = 0 ; if ((pxi = psf->fdata) == NULL) return 0 ; bufferlen = ARRAY_LEN (psf->u.sbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; i2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen) ; writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* dpcm_write_i2dles */static sf_count_tdpcm_write_f2dles (SF_PRIVATE *psf, float *ptr, sf_count_t len){ XI_PRIVATE *pxi ; int bufferlen, writecount ; sf_count_t total = 0 ; float normfact ; if ((pxi = psf->fdata) == NULL) return 0 ; normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; bufferlen = ARRAY_LEN (psf->u.sbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; f2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen, normfact) ; writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* dpcm_write_f2dles */static sf_count_tdpcm_write_d2dles (SF_PRIVATE *psf, double *ptr, sf_count_t len){ XI_PRIVATE *pxi ; int bufferlen, writecount ; sf_count_t total = 0 ; double normfact ; if ((pxi = psf->fdata) == NULL) return 0 ; normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; bufferlen = ARRAY_LEN (psf->u.sbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; d2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen, normfact) ; writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* dpcm_write_d2dles *//*==============================================================================*/static voiddsc2s_array (XI_PRIVATE *pxi, signed char *src, int count, short *dest){ signed char last_val ; int k ; last_val = pxi->last_16 >> 8 ; for (k = 0 ; k < count ; k++) { last_val += src [k] ; dest [k] = last_val << 8 ; } ; pxi->last_16 = last_val << 8 ;} /* dsc2s_array */static voiddsc2i_array (XI_PRIVATE *pxi, signed char *src, int count, int *dest){ signed char last_val ; int k ; last_val = pxi->last_16 >> 8 ; for (k = 0 ; k < count ; k++) { last_val += src [k] ; dest [k] = last_val << 24 ; } ; pxi->last_16 = last_val << 8 ;} /* dsc2i_array */static voiddsc2f_array (XI_PRIVATE *pxi, signed char *src, int count, float *dest, float normfact){ signed char last_val ; int k ; last_val = pxi->last_16 >> 8 ; for (k = 0 ; k < count ; k++) { last_val += src [k] ; dest [k] = last_val * normfact ; } ; pxi->last_16 = last_val << 8 ;} /* dsc2f_array */static voiddsc2d_array (XI_PRIVATE *pxi, signed char *src, int count, double *dest, double normfact){ signed char last_val ; int k ; last_val = pxi->last_16 >> 8 ; for (k = 0 ; k < count ; k++) { last_val += src [k] ; dest [k] = last_val * normfact ; } ; pxi->last_16 = last_val << 8 ;} /* dsc2d_array *//*------------------------------------------------------------------------------*/static voids2dsc_array (XI_PRIVATE *pxi, short *src, signed char *dest, int count){ signed char last_val, current ; int k ; last_val = pxi->last_16 >> 8 ; for (k = 0 ; k < count ; k++) { current = src [k] >> 8 ; dest [k] = current - last_val ; last_val = current ; } ; pxi->last_16 = last_val << 8 ;} /* s2dsc_array */static voidi2dsc_array (XI_PRIVATE *pxi, int *src, signed char *dest, int count){ signed char last_val, current ; int k ; last_val = pxi->last_16 >> 8 ; for (k = 0 ; k < count ; k++) { current = src [k] >> 24 ; dest [k] = current - last_val ; last_val = current ; } ; pxi->last_16 = last_val << 8 ;} /* i2dsc_array */static voidf2dsc_array (XI_PRIVATE *pxi, float *src, signed char *dest, int count, float normfact){ signed char last_val, current ; int k ; last_val = pxi->last_16 >> 8 ; for (k = 0 ; k < count ; k++) { current = lrintf (src [k] * normfact) ; dest [k] = current - last_val ; last_val = current ; } ; pxi->last_16 = last_val << 8 ;} /* f2dsc_array */static voidd2dsc_array (XI_PRIVATE *pxi, double *src, signed char *dest, int count, double normfact){ signed char last_val, current ; int k ; last_val = pxi->last_16 >> 8 ; for (k = 0 ; k < count ; k++) { current = lrint (src [k] * normfact) ; dest [k] = current - last_val ; last_val = current ; } ; pxi->last_16 = last_val << 8 ;} /* d2dsc_array *//*==============================================================================*/static voiddles2s_array (XI_PRIVATE *pxi, short *src, int count, short *dest){ short last_val ; int k ; last_val = pxi->last_16 ; for (k = 0 ; k < count ; k++) { last_val += LES2H_SHORT (src [k]) ; dest [k] = last_val ; } ; pxi->last_16 = last_val ;} /* dles2s_array */static voiddles2i_array (XI_PRIVATE *pxi, short *src, int count, int *dest){ short last_val ; int k ; last_val = pxi->last_16 ; for (k = 0 ; k < count ; k++) { last_val += LES2H_SHORT (src [k]) ; dest [k] = last_val << 16 ; } ; pxi->last_16 = last_val ;} /* dles2i_array */static voiddles2f_array (XI_PRIVATE *pxi, short *src, int count, float *dest, float normfact){ short last_val ; int k ; last_val = pxi->last_16 ; for (k = 0 ; k < count ; k++) { last_val += LES2H_SHORT (src [k]) ; dest [k] = last_val * normfact ; } ; pxi->last_16 = last_val ;} /* dles2f_array */static voiddles2d_array (XI_PRIVATE *pxi, short *src, int count, double *dest, double normfact){ short last_val ; int k ; last_val = pxi->last_16 ; for (k = 0 ; k < count ; k++) { last_val += LES2H_SHORT (src [k]) ; dest [k] = last_val * normfact ; } ; pxi->last_16 = last_val ;} /* dles2d_array *//*------------------------------------------------------------------------------*/static voids2dles_array (XI_PRIVATE *pxi, short *src, short *dest, int count){ short diff, last_val ; int k ; last_val = pxi->last_16 ; for (k = 0 ; k < count ; k++) { diff = src [k] - last_val ; dest [k] = LES2H_SHORT (diff) ; last_val = src [k] ; } ; pxi->last_16 = last_val ;} /* s2dles_array */static voidi2dles_array (XI_PRIVATE *pxi, int *src, short *dest, int count){ short diff, last_val ; int k ; last_val = pxi->last_16 ; for (k = 0 ; k < count ; k++) { diff = (src [k] >> 16) - last_val ; dest [k] = LES2H_SHORT (diff) ; last_val = src [k] >> 16 ; } ; pxi->last_16 = last_val ;} /* i2dles_array */static voidf2dles_array (XI_PRIVATE *pxi, float *src, short *dest, int count, float normfact){ short diff, last_val, current ; int k ; last_val = pxi->last_16 ; for (k = 0 ; k < count ; k++) { current = lrintf (src [k] * normfact) ; diff = current - last_val ; dest [k] = LES2H_SHORT (diff) ; last_val = current ; } ; pxi->last_16 = last_val ;} /* f2dles_array */static voidd2dles_array (XI_PRIVATE *pxi, double *src, short *dest, int count, double normfact){ short diff, last_val, current ; int k ; last_val = pxi->last_16 ; for (k = 0 ; k < count ; k++) { current = lrint (src [k] * normfact) ; diff = current - last_val ; dest [k] = LES2H_SHORT (diff) ; last_val = current ; } ; pxi->last_16 = last_val ;} /* d2dles_array *//*** Do not edit or modify anything in this comment block.** The arch-tag line is a file identity tag for the GNU Arch ** revision control system.**** arch-tag: 1ab2dbe0-29af-4d80-9c6f-cb21b67521bc*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -