📄 pcm.c
字号:
while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; f2let_array (ptr, index, (tribyte*) (psf->buffer), writecount / psf->bytewidth, 1.0) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_f2les */static intpcm_write_f2bet (SF_PRIVATE *psf, float *ptr, int len){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; f2bet_array (ptr, index, (tribyte*) (psf->buffer), writecount / psf->bytewidth, 1.0) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_f2bes */static intpcm_write_f2bei (SF_PRIVATE *psf, float *ptr, int len){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; f2bei_array (ptr, index, (int*) (psf->buffer), writecount / psf->bytewidth, 1.0) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_f2bei */static intpcm_write_f2lei (SF_PRIVATE *psf, float *ptr, int len){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; f2lei_array (ptr, index, (int*) (psf->buffer), writecount / psf->bytewidth, 1.0) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_f2lei *//*-----------------------------------------------------------------------------------------------*/static intpcm_write_d2sc (SF_PRIVATE *psf, double *ptr, int len, int normalize){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; double normfact ; normfact = (normalize ? ((double) 0x80) : 1.0) ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; d2sc_array (ptr, index, (signed char*) (psf->buffer), writecount / psf->bytewidth, normfact) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_d2sc */static intpcm_write_d2uc (SF_PRIVATE *psf, double *ptr, int len, int normalize){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; double normfact ; normfact = (normalize ? ((double) 0x80) : 1.0) ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; d2uc_array (ptr, index, (unsigned char*) (psf->buffer), writecount / psf->bytewidth, normfact) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_d2uc */static intpcm_write_d2bes (SF_PRIVATE *psf, double *ptr, int len, int normalize){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; double normfact ; normfact = (normalize ? ((double) 0x8000) : 1.0) ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; d2bes_array (ptr, index, (short*) (psf->buffer), writecount / psf->bytewidth, normfact) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_d2bes */static intpcm_write_d2les (SF_PRIVATE *psf, double *ptr, int len, int normalize){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; double normfact ; normfact = (normalize ? ((double) 0x8000) : 1.0) ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; d2les_array (ptr, index, (short*) (psf->buffer), writecount / psf->bytewidth, normfact) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_d2les */static intpcm_write_d2let (SF_PRIVATE *psf, double *ptr, int len, int normalize){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; double normfact ; normfact = (normalize ? ((double) 0x800000) : 1.0) ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; d2let_array (ptr, index, (tribyte*) (psf->buffer), writecount / psf->bytewidth, normfact) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_d2les */static intpcm_write_d2bet (SF_PRIVATE *psf, double *ptr, int len, int normalize){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; double normfact ; normfact = (normalize ? ((double) 0x800000) : 1.0) ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; d2bet_array (ptr, index, (tribyte*) (psf->buffer), writecount / psf->bytewidth, normfact) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_d2bes */static intpcm_write_d2bei (SF_PRIVATE *psf, double *ptr, int len, int normalize){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; double normfact ; normfact = (normalize ? ((double) 0x80000000) : 1.0) ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; d2bei_array (ptr, index, (int*) (psf->buffer), writecount / psf->bytewidth, normfact) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_d2bei */static intpcm_write_d2lei (SF_PRIVATE *psf, double *ptr, int len, int normalize){ unsigned int writecount, thiswrite ; int bytecount, bufferlen ; int index = 0, total = 0 ; double normfact ; normfact = (normalize ? ((double) 0x80000000) : 1.0) ; bufferlen = SF_BUFFER_LEN - (SF_BUFFER_LEN % psf->blockwidth) ; bytecount = len * psf->bytewidth ; while (bytecount > 0) { writecount = (bytecount >= bufferlen) ? bufferlen : bytecount ; d2lei_array (ptr, index, (int*) (psf->buffer), writecount / psf->bytewidth, normfact) ; thiswrite = fwrite (psf->buffer, 1, writecount, psf->file) ; total += thiswrite ; if (thiswrite < writecount) break ; index += thiswrite / psf->bytewidth ; bytecount -= thiswrite ; } ; total /= psf->bytewidth ; if (total < len) psf->error = SFE_SHORT_WRITE ; return total ;} /* pcm_write_d2lei *//*-----------------------------------------------------------------------------------------------*/static void sc2s_array (signed char *buffer, unsigned int count, short *ptr, int index){ int k ; for (k = 0 ; k < count ; k++) { ptr [index] = ((short) buffer [k]) ; index ++ ; } ;} /* sc2s_array */static void uc2s_array (unsigned char *buffer, unsigned int count, short *ptr, int index){ int k ; for (k = 0 ; k < count ; k++) { ptr [index] = ((((short) buffer [k]) - 128) % 256) ; index ++ ; } ;} /* uc2s_array */static void bet2s_array (tribyte *buffer, unsigned int count, short *ptr, int index){ unsigned char *cptr ; int k ; int value; cptr = (unsigned char*) buffer ; for (k = 0 ; k < count ; k++) { value = (cptr [0] << 24) + (cptr [1] << 16) + (cptr [2] << 8) ; value = BE2H_INT (value) ; ptr [index] = (short) (value >> 16) ; index ++ ; cptr += 3 ; } ;} /* bet2s_array */static void let2s_array (tribyte *buffer, unsigned int count, short *ptr, int index){ unsigned char *cptr ; int k ; int value; cptr = (unsigned char*) buffer ; for (k = 0 ; k < count ; k++) { value = (cptr [0] << 8) + (cptr [1] << 16) + (cptr [2] << 24) ; value = LE2H_INT (value) ; ptr [index] = (short) (value >> 16) ; index ++ ; cptr += 3 ; } ;} /* let2s_array */static void bei2s_array (int *buffer, unsigned int count, short *ptr, int index){ int k ; int value ; for (k = 0 ; k < count ; k++) { value = BE2H_INT (buffer [k]) ; ptr [index] = (short) (value >> 16) ; index ++ ; } ;} /* bei2s_array */static void lei2s_array (int *buffer, unsigned int count, short *ptr, int index){ int k ; int value ; for (k = 0 ; k < count ; k++) { value = LE2H_INT (buffer [k]) ; ptr [index] = (short) (value >> 16) ; index ++ ; } ;} /* lei2s_array *//*-----------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -