专注于GIS,服务于平民.

数据处理/应用系统/数据挖掘/知识管理

添加数据到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;
}

posted on 2008-07-17 13:47  老低调  阅读(232)  评论(0)    收藏  举报

导航