📄 float32.c
字号:
bufferlen = ARRAY_LEN (psf->u.fbuf) ; scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ;/* Fix me : Need lef2s_array */ if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; f2s_array (psf->u.fbuf, readcount, ptr + total, scale) ; total += readcount ; if (readcount < bufferlen) break ; len -= readcount ; } ; return total ;} /* host_read_f2s */static sf_count_thost_read_f2i (SF_PRIVATE *psf, int *ptr, sf_count_t len){ int bufferlen, readcount ; sf_count_t total = 0 ; float scale ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFFFFFF / psf->float_max ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; f2i_array (psf->u.fbuf, readcount, ptr + total, scale) ; total += readcount ; if (readcount < bufferlen) break ; len -= readcount ; } ; return total ;} /* host_read_f2i */static sf_count_thost_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len){ int bufferlen, readcount ; sf_count_t total = 0 ; if (psf->float_endswap != SF_TRUE) return psf_fread (ptr, sizeof (float), len, psf) ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; endswap_int_copy ((int*) (ptr + total), psf->u.ibuf, readcount) ; total += readcount ; if (readcount < bufferlen) break ; len -= readcount ; } ; return total ;} /* host_read_f */static sf_count_thost_read_f2d (SF_PRIVATE *psf, double *ptr, sf_count_t len){ int bufferlen, readcount ; sf_count_t total = 0 ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ;/* Fix me : Need lef2d_array */ f2d_array (psf->u.fbuf, readcount, ptr + total) ; total += readcount ; if (readcount < bufferlen) break ; len -= readcount ; } ; return total ;} /* host_read_f2d */static sf_count_thost_write_s2f (SF_PRIVATE *psf, short *ptr, sf_count_t len){ int bufferlen, writecount ; sf_count_t total = 0 ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; s2f_array (ptr + total, psf->u.fbuf, bufferlen) ; if (psf->has_peak) float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* host_write_s2f */static sf_count_thost_write_i2f (SF_PRIVATE *psf, int *ptr, sf_count_t len){ int bufferlen, writecount ; sf_count_t total = 0 ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; i2f_array (ptr + total, psf->u.fbuf, bufferlen) ; if (psf->has_peak) float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; writecount = psf_fwrite (psf->u.fbuf, sizeof (float) , bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* host_write_i2f */static sf_count_thost_write_f (SF_PRIVATE *psf, float *ptr, sf_count_t len){ int bufferlen, writecount ; sf_count_t total = 0 ; if (psf->has_peak) float32_peak_update (psf, ptr, len, 0) ; if (psf->float_endswap != SF_TRUE) return psf_fwrite (ptr, sizeof (float), len, psf) ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; endswap_int_copy (psf->u.ibuf, (int*) (ptr + total), bufferlen) ; writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* host_write_f */static sf_count_thost_write_d2f (SF_PRIVATE *psf, double *ptr, sf_count_t len){ int bufferlen, writecount ; sf_count_t total = 0 ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; d2f_array (ptr + total, psf->u.fbuf, bufferlen) ; if (psf->has_peak) float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* host_write_d2f *//*=======================================================================================*/static sf_count_treplace_read_f2s (SF_PRIVATE *psf, short *ptr, sf_count_t len){ int bufferlen, readcount ; sf_count_t total = 0 ; float scale ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; bf2f_array (psf->u.fbuf, bufferlen) ; f2s_array (psf->u.fbuf, readcount, ptr + total, scale) ; total += readcount ; if (readcount < bufferlen) break ; len -= readcount ; } ; return total ;} /* replace_read_f2s */static sf_count_treplace_read_f2i (SF_PRIVATE *psf, int *ptr, sf_count_t len){ int bufferlen, readcount ; sf_count_t total = 0 ; float scale ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; bf2f_array (psf->u.fbuf, bufferlen) ; f2i_array (psf->u.fbuf, readcount, ptr + total, scale) ; total += readcount ; if (readcount < bufferlen) break ; len -= readcount ; } ; return total ;} /* replace_read_f2i */static sf_count_treplace_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len){ int bufferlen, readcount ; sf_count_t total = 0 ; /* FIX THIS */ bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; bf2f_array (psf->u.fbuf, bufferlen) ; memcpy (ptr + total, psf->u.fbuf, bufferlen * sizeof (float)) ; total += readcount ; if (readcount < bufferlen) break ; len -= readcount ; } ; return total ;} /* replace_read_f */static sf_count_treplace_read_f2d (SF_PRIVATE *psf, double *ptr, sf_count_t len){ int bufferlen, readcount ; sf_count_t total = 0 ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; bf2f_array (psf->u.fbuf, bufferlen) ; f2d_array (psf->u.fbuf, readcount, ptr + total) ; total += readcount ; if (readcount < bufferlen) break ; len -= readcount ; } ; return total ;} /* replace_read_f2d */static sf_count_treplace_write_s2f (SF_PRIVATE *psf, short *ptr, sf_count_t len){ int bufferlen, writecount ; sf_count_t total = 0 ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; s2f_array (ptr + total, psf->u.fbuf, bufferlen) ; if (psf->has_peak) float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ; f2bf_array (psf->u.fbuf, bufferlen) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* replace_write_s2f */static sf_count_treplace_write_i2f (SF_PRIVATE *psf, int *ptr, sf_count_t len){ int bufferlen, writecount ; sf_count_t total = 0 ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; i2f_array (ptr + total, psf->u.fbuf, bufferlen) ; if (psf->has_peak) float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ; f2bf_array (psf->u.fbuf, bufferlen) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* replace_write_i2f */static sf_count_treplace_write_f (SF_PRIVATE *psf, float *ptr, sf_count_t len){ int bufferlen, writecount ; sf_count_t total = 0 ; /* FIX THIS */ if (psf->has_peak) float32_peak_update (psf, ptr, len, 0) ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; memcpy (psf->u.fbuf, ptr + total, bufferlen * sizeof (float)) ; f2bf_array (psf->u.fbuf, bufferlen) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; writecount = psf_fwrite (psf->u.fbuf, sizeof (float) , bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* replace_write_f */static sf_count_treplace_write_d2f (SF_PRIVATE *psf, double *ptr, sf_count_t len){ int bufferlen, writecount ; sf_count_t total = 0 ; bufferlen = ARRAY_LEN (psf->u.fbuf) ; while (len > 0) { if (len < bufferlen) bufferlen = (int) len ; d2f_array (ptr + total, psf->u.fbuf, bufferlen) ; if (psf->has_peak) float32_peak_update (psf, psf->u.fbuf, bufferlen, (int) (total / psf->sf.channels)) ; f2bf_array (psf->u.fbuf, bufferlen) ; if (psf->float_endswap == SF_TRUE) endswap_int_array (psf->u.ibuf, bufferlen) ; writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; total += writecount ; if (writecount < bufferlen) break ; len -= writecount ; } ; return total ;} /* replace_write_d2f *//*----------------------------------------------------------------------------------------------*/static voidbf2f_array (float *buffer, int count){ while (--count >= 0) { buffer [count] = FLOAT32_READ ((unsigned char *) (buffer + count)) ; } ;} /* bf2f_array */static voidf2bf_array (float *buffer, int count){ while (--count >= 0) { FLOAT32_WRITE (buffer [count], (unsigned char*) (buffer + count)) ; } ;} /* f2bf_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: b6c34917-488c-4145-9648-f4371fc4c889*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -