读书人

回调判断求解决.解决方法

发布时间: 2012-08-15 16:57:17 作者: rapoo

回调判断求解决.

C/C++ code
/*****************************************************************************************    我在SaveRecord()中的H264_PLAY_StartDataRecord,把通道和RealPlay返回值传入回调中    但是这两个变量是一对的,而回调中的那个函数又只要通道号,而每个设备的通道号又有重复    而我该如何做才能做到无重复???******************************************************************************************/int __stdcall RealDataCallBack_V2(long lRealHandle, const PACKET_INFO_EX *pFrame, unsigned int dwUser){    H264_PLAY_InputVideoData(dwUser, (unsigned char*)pFrame->pPacketBuffer, pFrame->dwPacketSize);    return 1;}void CTabOneCtrl::SaveRecord()        //is->lPlayHandle是监控器句柄, is->nDevNum是通道号{    CString sFileName;    for(map<CString, vector<LOGIN_INFO>>::iterator it = m_RecordInfo.begin(); it != m_RecordInfo.end(); it++)    {        for(vector<LOGIN_INFO>::iterator is = it->second.begin(); is != it->second.end(); is++)        {            m_dwUser = is->nDevNum;            H264_PLAY_OpenStream(is->nDevNum, NULL, NULL, SOURCE_BUF_MIN);            H264_PLAY_Play(is->nDevNum, NULL);            sFileName.Format("C:\\ER\\%s_%d.h264", it->first, is->nDevNum);            H264_DVR_SetRealDataCallBack_V2(is->lPlayHandle, RealDataCallBack_V2, is->nDevNum);            H264_PLAY_StartDataRecord(is->nDevNum, sFileName, MEDIA_FILE_NONE);        }    }}


[解决办法]
通道号会有很多吗?如果不太多,可以在回调函数里面弄个静态数组,来存放已经处理过的通道号
[解决办法]
将另一变量设置成全局变量, 调用函数时, 加锁.

读书人网 >C++

热点推荐