www.pudn.com > IP_phone.rar > SortData.h


/**********************************************************/ 
/*类名:CSortData                                       */ 
/*简述:管理数据,调整乱序包的顺序                        */ 
/*[注意] 
 
	m_iLast是上次播放的数据标号 
	主要是ReceiveData中的方法 
				 |-----------------------|    |----------| 
				 |.检查当前是否是下一个包| -->|是,播放  | 
				 |-----------------------|    |----------| 
				            |                      | 
							| 不是                 |   
                            |                      |  
                 |----------------------|     |--------------------————| 
				 |  按小->大插入合适位置|	  |从头检查缓冲中是否是连续的  |	 
				 |----------------------|     |是则播放,并前移位置,退出   | 
				            |                 |----------------------------|   
							|                                
				 |----------------------|                     
                 |检查是否缓冲满,满就  |      
				 |播放,并清空缓冲      | 
                 |----------------------|  
*/ 
/**********************************************************/ 
//SortData.h 
 
#ifndef _SORT_H_ 
#define _SORT_H_ 
 
#define DELAY_BUFFER 24// 
#define NUM_BUFFER 32// 
//定义UDP数据包结构, 
#pragma pack(push, 1) 
struct Frame 
{ 
	unsigned __int32	iIndex;//序列号 
	char cb[12]; 
}; 
#pragma pack(pop) 
//////////////////////////////////////////////////////////////////////////// 
class CSortData 
{ 
public: 
	//播放 
	void Play(char *pBuffer,int iLen); 
	//接受数据 
	void ReceiveData(char *pBuffer,int iLen); 
 
	CSortData(CNC_ClientDlg *temp); 
	virtual ~CSortData(); 
 
protected: 
	CNC_ClientDlg *m_dlg; 
	char *m_pBuffer[NUM_BUFFER]; 
 
	unsigned __int32 m_iFill[NUM_BUFFER]; 
	unsigned __int32 m_iLast; 
 
	char m_cOut[1024]; 
}; 
 
#endif 
////////////////////////////////////////////////////////////////////////////