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); 
}