www.pudn.com > IP_phone.rar > SortData.cpp
#include "stdafx.h"
#include "SortData.h"
#include "Compress.h"
#include "WaveOut.h"
////////////////////////////////////////////////////////////////////////////
extern CCompress g_comp;
extern CWaveOut *g_wave_out;
CSortData::CSortData(CNC_ClientDlg *temp)
{
m_dlg=temp;
for (int i = 0;iiIndexiIndex);
return;
}*/
////////////////////////////////////////////////////////////////////////////
if (m_pFrame->iIndex==m_iLast+1) //序号正确
{
unsigned __int32 iTemp;
//播放
Play(pBuffer+sizeof(struct Frame),60);
m_iLast=m_pFrame->iIndex ;
//从头检查缓冲中是否是连续
iTemp=m_pFrame->iIndex;
int iNext;
for (iNext=0;iNext大插入合适位置
if (m_iFill[iNow]>m_pFrame->iIndex)
{
for (iEnd =iNow;iEndiNow;iMove--)
{
m_iFill[iMove]=m_iFill[iMove-1];
memcpy(m_pBuffer[iMove],m_pBuffer[iMove-1],60);
}
memcpy(m_pBuffer[iNow],pBuffer+sizeof(struct Frame),60);
m_iFill[iNow]=m_pFrame->iIndex;
break;
}
}
else
{
memcpy(m_pBuffer[iNow],pBuffer+sizeof(struct Frame),60);
m_iFill[iNow]=m_pFrame->iIndex;
break;
}
}
////////////////////////////////////////////////////////////////////////////
//检查是否缓冲满,满就播放,并清空缓冲
if (m_iFill[DELAY_BUFFER-1]!=0)
{
m_iLast=m_iFill[DELAY_BUFFER-1];
for (iNow=0;iNowwavebuffer,pBuffer,iLen);
int iOut;
iOut=SIZE_AUDIO_FRAME/*sizeof(m_cOut)*/;
//解压and播放
g_comp.DeCompressAudioData(pBuffer,iLen,m_cOut,&iOut);
memcpy(m_dlg->wavebuffer,m_cOut,iOut);
g_wave_out->Play(m_cOut,iOut);
}