- fixed wav

git-svn-id: http://moon:8086/svn/software/trunk/libsrc/wav@987 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-06-15 14:56:34 +00:00
parent e8ae8b8f91
commit 63b07c3918
2 changed files with 29 additions and 7 deletions
+24 -3
View File
@@ -14,9 +14,8 @@
/******************************************************************************/ /******************************************************************************/
/* C definitions /* C definitions
/******************************************************************************/ /******************************************************************************/
void WavInit(struct _sWAV *pObj, uint32_t nSamplesPerSec, uint16_t nBits, uint16_t nChannels, uint16_t format) void WavInit(struct _sWAV *pObj)
{ {
WavSetFormat(pObj, nSamplesPerSec, nBits, nChannels, format);
pObj->m_FileType = FILETYPE_RAW; pObj->m_FileType = FILETYPE_RAW;
pObj->m_FileSize = 0; pObj->m_FileSize = 0;
pObj->m_HeaderSize = 0; pObj->m_HeaderSize = 0;
@@ -43,9 +42,21 @@ uint32_t WavSetFormat(struct _sWAV *pObj, uint32_t nSamplesPerSec, uint16_t nBit
return 0; return 0;
} }
uint32_t WavSetHeader(struct _sWAV *pObj, const WAVEHEADER *pHeader)
{
memcpy(&pObj->m_Format, pHeader, sizeof(WAVEHEADER));
pObj->m_nChannels = pObj->m_Format.nChannels;
pObj->m_SampleRate = pObj->m_Format.nSamplesPerSec;
pObj->m_nBits = pObj->m_Format.wBitsPerSample;
return 0;
}
/******************************************************************************/ /******************************************************************************/
uint32_t WavOpen (struct _sWAV *pObj, const char* FileName) uint32_t WavOpen (struct _sWAV *pObj, const char* FileName)
{ {
WavInit(pObj);
uint32_t stat; uint32_t stat;
//Wav-File ffnen //Wav-File ffnen
@@ -82,13 +93,17 @@ uint32_t WavClose(struct _sWAV *pObj)
if (!pObj->WREAD && (pObj->m_FileType == FILETYPE_WAV)) if (!pObj->WREAD && (pObj->m_FileType == FILETYPE_WAV))
WriteHeader(pObj); WriteHeader(pObj);
if (pObj->pHndWavFile)
{
fclose(pObj->pHndWavFile); fclose(pObj->pHndWavFile);
}
return 0; return 0;
} }
/******************************************************************************/ /******************************************************************************/
uint32_t WavCreate (struct _sWAV *pObj, char *fileName, uint32_t fileType) uint32_t WavCreate (struct _sWAV *pObj, const char *fileName, uint32_t fileType, const WAVEHEADER *pHeader)
{ {
WavInit(pObj);
pObj->m_FileType = fileType; pObj->m_FileType = fileType;
strcpy(pObj->m_Name, fileName); strcpy(pObj->m_Name, fileName);
@@ -100,7 +115,13 @@ uint32_t WavCreate (struct _sWAV *pObj, char *fileName, uint32_t fileType)
pObj->WREAD = 0; pObj->WREAD = 0;
if (pObj->m_FileType == FILETYPE_WAV) if (pObj->m_FileType == FILETYPE_WAV)
{
if (pHeader)
{
WavSetHeader(pObj, pHeader);
}
WriteHeader(pObj); WriteHeader(pObj);
}
return 0; return 0;
} }
+3 -2
View File
@@ -50,10 +50,11 @@ typedef struct _sWAV
extern "C" { extern "C" {
#endif #endif
void WavInit(struct _sWAV*, uint32_t nSamplesPerSec, uint16_t nBits, uint16_t nChannels, uint16_t format); void WavInit(struct _sWAV*);
uint32_t WavSetFormat(struct _sWAV*, uint32_t, uint16_t, uint16_t, uint16_t format); uint32_t WavSetFormat(struct _sWAV*, uint32_t, uint16_t, uint16_t, uint16_t format);
uint32_t WavSetHeader(struct _sWAV *pObj, const WAVEHEADER *pHeader);
uint32_t WavOpen (struct _sWAV*, const char*); uint32_t WavOpen (struct _sWAV*, const char*);
uint32_t WavCreate(struct _sWAV*, char*, uint32_t); uint32_t WavCreate(struct _sWAV*, const char*, uint32_t, const WAVEHEADER *pHeader);
uint32_t WavClose(struct _sWAV*); uint32_t WavClose(struct _sWAV*);
uint32_t WavRead(struct _sWAV*, void*, uint32_t); uint32_t WavRead(struct _sWAV*, void*, uint32_t);
uint32_t WavWrite(struct _sWAV*, void*, uint32_t); uint32_t WavWrite(struct _sWAV*, void*, uint32_t);