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
////////////////////////////////////////////////////////////////////////////