您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ waveInAddBuffer函数代码示例

51自学网 2021-06-03 09:52:35
  C++
这篇教程C++ waveInAddBuffer函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中waveInAddBuffer函数的典型用法代码示例。如果您正苦于以下问题:C++ waveInAddBuffer函数的具体用法?C++ waveInAddBuffer怎么用?C++ waveInAddBuffer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了waveInAddBuffer函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: main

int main(){   HWAVEIN   inStream;   HWAVEOUT outStream;   WAVEFORMATEX waveFormat;   WAVEHDR buffer[4];                             // pingpong buffers   waveFormat.wFormatTag      = WAVE_FORMAT_PCM;  // PCM audio   waveFormat.nSamplesPerSec  =           22050;  // really 22050 frames/sec   waveFormat.nChannels       =               2;  // stereo   waveFormat.wBitsPerSample  =              16;  // 16bits per sample   waveFormat.cbSize          =               0;  // no extra data   waveFormat.nBlockAlign     =      waveFormat.nChannels * waveFormat.wBitsPerSample / 2;   waveFormat.nAvgBytesPerSec =      waveFormat.nBlockAlign * waveFormat.nSamplesPerSec;   // Event: default security descriptor, Manual Reset, initial non-signaled   HANDLE event = CreateEvent(NULL, TRUE, FALSE, "waveout event");   waveInOpen(  &inStream, WAVE_MAPPER, &waveFormat, (unsigned long)event,       0, CALLBACK_EVENT);   waveOutOpen(&outStream, WAVE_MAPPER, &waveFormat, (unsigned long)event,       0, CALLBACK_EVENT);   // initialize the input and output PingPong buffers   int index;   for(index = 0; index < 4; index++) {      buffer[index].dwBufferLength = NUM_FRAMES * waveFormat.nBlockAlign;      buffer[index].lpData         = 	 (void *)malloc(NUM_FRAMES * waveFormat.nBlockAlign);      buffer[index].dwFlags        = 0;      waveInPrepareHeader(  inStream, &buffer[index], sizeof(WAVEHDR));   }   ResetEvent(event);   for(index= 0; index < 4; index++) // queue all buffers for input      waveInAddBuffer(inStream, &buffer[index], sizeof(WAVEHDR));   waveInStart(inStream);       while(!( buffer[1].dwFlags & WHDR_DONE)); // poll(!) for 2 full input buffers   // move the two full buffers to output   waveOutWrite(outStream, &buffer[0], sizeof(WAVEHDR));   waveOutWrite(outStream, &buffer[1], sizeof(WAVEHDR));   int inIndex = 2, outIndex = 0; // the next input and output to watch   while(1) {  // poll for completed input and output buffers      if(buffer[inIndex].dwFlags & WHDR_DONE) { // input buffer complete?	 waveInAddBuffer(  inStream, &buffer[inIndex],  sizeof(WAVEHDR));	 inIndex = (inIndex+1)%4;   // next buffer to watch for full      }      if(buffer[outIndex].dwFlags & WHDR_DONE) { // output buffer complete?	 waveOutWrite(    outStream, &buffer[outIndex], sizeof(WAVEHDR));	 outIndex = (outIndex+1)%4;   // next buffer to watch for empty      }   }}
开发者ID:Salimlou,项目名称:AudioAnecdotes,代码行数:60,


示例2: waveInAddBuffer

int audioStreamer_waveOut::Read(char *buf, int len) // returns 0 if blocked, < 0 if error, > 0 if data{  if (!m_hwi) return -1;#if 0 // lame, this doesnt really do what we want it to  // check to see if all are full, and if so, kill a lot of em  {    int x;    int cnt=0;    for (x = 0; x < m_bufs.GetSize(); x ++)    {      WAVEHDR *th = (WAVEHDR *) m_bufs.Get(x)->Get();      if (th->dwFlags & WHDR_DONE) cnt++;    }    if (cnt >= m_bufs.GetSize()-1)    {//      audiostream_onover();      for (x = 0; x < m_bufs.GetSize(); x ++)      {        if (x != m_whichbuf)        {          WAVEHDR *th = (WAVEHDR *) m_bufs.Get(x)->Get();          if (th->dwFlags & WHDR_DONE)           {            th->dwBytesRecorded=0;            th->dwFlags = WHDR_PREPARED;            waveInAddBuffer(m_hwi,th,sizeof(WAVEHDR));          }        }      }    }  }#endif  WAVEHDR *th = (WAVEHDR *) m_bufs.Get(m_whichbuf)->Get();  while (!(th->dwFlags & WHDR_DONE))   {    Sleep(WO_SLEEP);   }  len=min(len,(int)th->dwBytesRecorded);  memcpy(buf,th->lpData,len);  th->dwBytesRecorded=0;  th->dwFlags = WHDR_PREPARED;  waveInAddBuffer(m_hwi,th,sizeof(WAVEHDR));  if (++m_whichbuf >= m_bufs.GetSize()) m_whichbuf=0;  return len;}
开发者ID:libninjam,项目名称:libninjam-win,代码行数:51,


示例3: printf

//--------------------------------------------------------------------------------------//       Class: SoundResources //      Method: (protected) _prepareBuffer // Description: Prepares the internal buffers for the doble buffering. //--------------------------------------------------------------------------------------void SoundResources::_prepareBuffers(void){	//----------------------------------------------------------------------	//  Preparing all memory buffer allocation	//----------------------------------------------------------------------	m_WaveHeader[2].dwBufferLength = 	m_WaveHeader[1].dwBufferLength = 	m_WaveHeader[0].dwBufferLength = dwBufferLength;	m_WaveHeader[0].lpData = (char *)VirtualAlloc(0, 												  m_WaveHeader[0].dwBufferLength, 												  MEM_COMMIT, 												  PAGE_READWRITE);	m_WaveHeader[1].lpData = (char *)VirtualAlloc(0, 												  m_WaveHeader[1].dwBufferLength, 												  MEM_COMMIT, 												  PAGE_READWRITE);	m_WaveHeader[2].lpData = (char *)VirtualAlloc(0, 												  m_WaveHeader[2].dwBufferLength, 												  MEM_COMMIT, 												  PAGE_READWRITE);		//----------------------------------------------------------------------	// Initialize dwFlags and dwLoops to 0. This seems to be necesary according to the	// Microsoft Windows documentation 	//----------------------------------------------------------------------	m_WaveHeader[0].dwFlags = m_WaveHeader[1].dwFlags = m_WaveHeader[2].dwFlags = 0L;	m_WaveHeader[0].dwLoops = m_WaveHeader[1].dwLoops = m_WaveHeader[2].dwFlags = 0L; 	//----------------------------------------------------------------------	// Initialize the headers	//----------------------------------------------------------------------	if ((m_err = waveInPrepareHeader(m_WaveInHandle, &m_WaveHeader[0], sizeof(WAVEHDR)))) 		printf("yarpsounddriver: Error preparing WAVEHDR -- %08X/n", m_err);	if ((m_err = waveInPrepareHeader(m_WaveInHandle, &m_WaveHeader[1], sizeof(WAVEHDR)))) 		printf("yarpsounddriver: Error preparing WAVEHDR -- %08X/n", m_err);	if ((m_err = waveInPrepareHeader(m_WaveInHandle, &m_WaveHeader[2], sizeof(WAVEHDR)))) 		printf("yarpsounddriver: Error preparing WAVEHDR -- %08X/n", m_err);	//----------------------------------------------------------------------	//  It is necessary to queue the two buffers.  	//----------------------------------------------------------------------	if ((m_err = waveInAddBuffer(m_WaveInHandle, &m_WaveHeader[0], sizeof(WAVEHDR))))		printf("yarpsounddriver: Error queueing WAVEHDR 1! -- %08X/n", m_err);	if ((m_err = waveInAddBuffer(m_WaveInHandle, &m_WaveHeader[1], sizeof(WAVEHDR))))		printf("yarpsounddriver: Error queueing WAVEHDR 2! -- %08X/n", m_err);	if ((m_err = waveInAddBuffer(m_WaveInHandle, &m_WaveHeader[2], sizeof(WAVEHDR))))		printf("yarpsounddriver: Error queueing WAVEHDR 2! -- %08X/n", m_err);}
开发者ID:robotology-legacy,项目名称:yarp1,代码行数:55,


示例4: RecData

int RecData(int i){  WORD wResult;  SendInBuffers--;  if (!StopRecord)  {    InFillBuffer(i);    wResult = waveInAddBuffer(hWaveIn,WaveInBuf[i].lpWaveHdr,sizeof(WAVEHDR));    if (wResult != 0)    {      WaveInFreeAll();      return 0;    }    SendInBuffers++;  }  else  {    if (!SendInBuffers)    {      WaveInFreeAll();      StopRecord=FALSE;	  waveInClose(hWaveIn);    }  }  return 1;}
开发者ID:scareface972,项目名称:nabaztag-source-code,代码行数:27,


万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。