-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAudioOperate.cpp
More file actions
104 lines (92 loc) · 2.39 KB
/
AudioOperate.cpp
File metadata and controls
104 lines (92 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// AudioOperate.cpp : 定义 DLL 的初始化例程。
//
#include "stdafx.h"
#include "AudioOperate.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////////
//函数描述: 读取Wav文件得到文件buf和文件长度
//输入参数: char* filePath 读取文件的全路径
//输出参数: char* wavbuf 读取文件内容的指针
// int& wavlen 读取文件的字节长度
//返 回 值: 成功返回TRUE,失败返回FALSE
//////////////////////////////////////////////////////////////////////////
BOOL ReadWavFile(char* filePath, char* wavbuf, int& wavlen)
{
int iRet = 0;
FILE* fp = NULL;
iRet = fopen_s(&fp,filePath,"rb");
if (iRet != 0)
{
wavbuf = NULL;
wavlen = 0;
return FALSE;
}
fseek(fp,0,SEEK_END);
wavlen = ftell(fp);
fseek(fp,0,SEEK_SET);
wavbuf = (char*)malloc(wavlen);
if (wavbuf == NULL)
{
wavlen = 0;
fclose(fp);
return FALSE;
}
int Readsize = fread_s(wavbuf,wavlen,1,wavlen,fp);
//int Readsize = fread_s(wavbuf,1,iwavlen,fp);
if (Readsize <= 0)
{
free(wavbuf);
wavbuf = NULL;
wavlen = 0;
fclose(fp);
return FALSE;
}
fclose(fp);
return TRUE;
}
//////////////////////////////////////////////////////////////////////////
//函数描述: 将buff内存写到指定的路径下
//输入参数: char* filePath 写文件的全路径
//输出参数: char* wavbuf 写文件内容的指针
// int wavlen 写文件的字节长度
//返 回 值: 成功返回TRUE,失败返回FALSE
//////////////////////////////////////////////////////////////////////////
BOOL WriteWavFile(char * filePath, char * wavbuf, int wavlen)
{
int iRet = 0;
FILE* fp = NULL;
iRet = fopen_s(&fp, filePath, "wb");
if (iRet != 0)
{
return FALSE;
}
fwrite(wavbuf, wavlen, 1, fp);
fclose(fp);
return TRUE;
}
//////////////////////////////////////////////////////////////////////////
//函数描述: 从buff内存读取采样数据
//输入参数: char* wavbuf 数据内存指针
// int wavlen 数据长度
//输出参数: float* fsampleData 采样数据
//返 回 值: TRUE/FALSE
//////////////////////////////////////////////////////////////////////////
BOOL GetSampleData(float* fsampleData, char* wavbuf, int wavlen)
{
return TRUE;
}
//////////////////////////////////////////////////////////////////////////
//函数描述: 释放dll中分配的内存
//输入参数: char* wavbuf 释放的内存指针
//返 回 值: NONE
//////////////////////////////////////////////////////////////////////////
void FreeMemory(char* wavbuf)
{
if (wavbuf != NULL)
{
free(wavbuf);
wavbuf = NULL;
}
}