添加数据到WAV文件
/*----------------------------------------------------
CatWavFile :写WAV文件
参数:
sWavFile:音频文件名
pBufNew:写入的缓冲区
dwBufNewLen:写入长度
返回:TTS内定返回值
-----------------------------------------------------*/
int CatWavFile(const char* sWavFile, PBYTE pBufNew, TTSDWORD dwBufNewLen)
{
FILE* fp;
TTSDWORD dwFileSize, dwDataSize, dwWavSize;
if(dwBufNewLen <= 0)
return TTSERR_OK;
if(sWavFile == NULL)
return TTSERR_READFILE;
fp = fopen(sWavFile, "r+b");
if(fp == NULL)
{
fp = fopen(sWavFile, "wb");
if(fp == NULL)
return TTSERR_WRITEFILE;
}
fseek(fp, 0, SEEK_END);
dwFileSize = ftell(fp);
if(dwFileSize == 0)
{
fwrite(pBufNew, 1, dwBufNewLen, fp);
}
else
{
fwrite(pBufNew + 44, 1, dwBufNewLen - 44, fp);
dwFileSize = dwFileSize + dwBufNewLen - 44;
dwDataSize = dwFileSize - 44;
dwWavSize = dwFileSize - 8;
fseek(fp, 44 - sizeof(TTSDWORD), SEEK_SET);
fwrite(&dwDataSize, 1, sizeof(TTSDWORD), fp);
fseek(fp, 4, SEEK_SET);
fwrite(&dwWavSize, 1, sizeof(TTSDWORD), fp);
}
fclose(fp);
return TTSERR_OK;
}
浙公网安备 33010602011771号