OSDN Git Service

reset brain memory
[internetcity/prototype.git] / common / CWaveData.cpp
1 // \8b\9e\r
2 \r
3 /*\r
4 #include "CWaveData.h"\r
5 \r
6 #include <windows.h>\r
7 #include <tchar.h>\r
8 \r
9 ////////////////////////////////////////////////////////////////////////////////\r
10 // \83R\83\93\83X\83g\83\89\83N\83^\r
11 ////////////////////////////////////////////////////////////////////////////////\r
12 CWaveData::CWaveData()\r
13 {\r
14         // Wave\83t\83H\81[\83}\83b\83g\r
15         m_WaveFormat.wFormatTag      = WAVE_FORMAT_PCM;\r
16         m_WaveFormat.nChannels       = 1;\r
17         m_WaveFormat.nSamplesPerSec  = 22050;\r
18         m_WaveFormat.wBitsPerSample  = 8;\r
19         m_WaveFormat.nBlockAlign     = m_WaveFormat.wBitsPerSample / 8 * m_WaveFormat.nChannels;\r
20         m_WaveFormat.nAvgBytesPerSec = m_WaveFormat.nSamplesPerSec * m_WaveFormat.nBlockAlign;\r
21 }\r
22 \r
23 ////////////////////////////////////////////////////////////////////////////////\r
24 // \83f\83X\83g\83\89\83N\83^\r
25 ////////////////////////////////////////////////////////////////////////////////\r
26 CWaveData::~CWaveData()\r
27 {\r
28         freeBuffer();\r
29 }\r
30 \r
31 ////////////////////////////////////////////////////////////////////////////////\r
32 // \8f\89\8aú\89»\r
33 ////////////////////////////////////////////////////////////////////////////////\r
34 void CWaveData::initialize()\r
35 {\r
36         // \8c»\8fó\83t\83H\81[\83}\83b\83g\82Í\8c\88\82ß\82¤\82¿\r
37         m_WaveFormat.wFormatTag      = WAVE_FORMAT_PCM;\r
38         m_WaveFormat.nChannels       = 1;\r
39         m_WaveFormat.nSamplesPerSec  = 22050;\r
40         m_WaveFormat.wBitsPerSample  = 8;\r
41         m_WaveFormat.nBlockAlign     = m_WaveFormat.wBitsPerSample / 8 * m_WaveFormat.nChannels;\r
42         m_WaveFormat.nAvgBytesPerSec = m_WaveFormat.nSamplesPerSec * m_WaveFormat.nBlockAlign;\r
43 }\r
44 \r
45 ////////////////////////////////////////////////////////////////////////////////\r
46 // \83o\83b\83t\83@\82ð\8am\95Û\r
47 ////////////////////////////////////////////////////////////////////////////////\r
48 bool CWaveData::allocBuffer(int in_BufferNumber, DWORD in_RecorMilliSecond)\r
49 {\r
50         if(in_BufferNumber < 1 || in_RecorMilliSecond == 0){\r
51                 return false;\r
52         }\r
53 \r
54         if(m_WaveBuffers.empty()){\r
55                 // free\r
56                 if(!freeBuffer()){\r
57                         return false;\r
58                 }\r
59         }\r
60 \r
61         for(int i = 0; i < in_BufferNumber; i++){\r
62                 StructWaveBuffer tempWaveBuffer;\r
63                 tempWaveBuffer.m_RecorMilliSecond = in_RecorMilliSecond;\r
64                 tempWaveBuffer.m_BufferSize   = m_WaveFormat.nAvgBytesPerSec * in_RecorMilliSecond / 1000;\r
65                 tempWaveBuffer.m_pWaveBuffer = new char[tempWaveBuffer.m_BufferSize];\r
66 \r
67                 m_WaveBuffers.push_back(tempWaveBuffer);\r
68         }\r
69 \r
70         // \93Ç\82Ý\8eæ\82è\83o\83b\83t\83@\82Æ\8f\91\82«\8d\9e\82Ý\83o\83b\83t\83@\82ð\8ew\92è\82µ\82Ä\82¨\82­\r
71         m_ReadOfWaveBuffers = m_WaveBuffers.begin();\r
72         m_WriteOfWaveBuffers = m_WaveBuffers.begin();\r
73 \r
74         return true;\r
75 }\r
76 \r
77 ////////////////////////////////////////////////////////////////////////////////\r
78 // \83o\83b\83t\83@\82ð\89ð\95ú\r
79 ////////////////////////////////////////////////////////////////////////////////\r
80 bool CWaveData::freeBuffer()\r
81 {\r
82         if(!m_WaveBuffers.empty()){\r
83                 WaveBufferTable::iterator tempIterator = m_WaveBuffers.begin();\r
84                 while(tempIterator != m_WaveBuffers.end()){\r
85                         delete tempIterator->m_pWaveBuffer;\r
86                         tempIterator++;\r
87                 }\r
88         }\r
89         return true;\r
90 }\r
91 */\r
92 \r