資源簡介
本代碼通過rtsp協議接收設備采集的數據,對采集視頻數據組幀,udp下對視頻丟包排序做出處理,直接編譯可以使用
代碼片段和文件信息
/***************************************************************
模塊名 ?????:frame實現文件????????????????????????
文件名 ?????:frame.cpp
相關文件 ?:
文件實現功能?:組幀實現。
作者 ?:Jeff_Zhang
版本 ?:V1.0
-----------------------------------------------------------------
修改記錄:
日??期 版本 修改人 修改內容
2012/08/20 1.0? Jeff_Zhang 初始版本
*****************************************************************/
/*包含頭文件*/
#include?“frame.h“
#include?“stdlib.h“
#ifdef?WIN32
#include?
#endif
#include?“timer.h“
#define?MAX_RTP_frame_NUM???????512????//?lidanwang
#define?MIN_RTP_HEADER_LEN??????12
#define?frameINITLEN 1440*10//1440*5??//?lidanwang
#define?H264_NONE?1
#define?H264_I?2
#define?H264_STP_A?3
#ifndef?max
#define?max(ab)????????????(((a)?>?(b))???(a)?:?(b))
#endif
#ifndef?min
#define?min(ab)????????????(((a)?(b))???(a)?:?(b))
#endif
TMemPool?g_tPacketMemPool; /*rtp包內存池*/
#define?MAX_MEM_POOL_SIZE?1024*1024
#define?MAX_MEM_POOL_NUM??1024*10
/*函數實現(各函數均不對輸入參數地址合法性進行判斷,由庫上層調用判斷)*/
/*自定義內存池*/
/*自定義內存池初始化*/ //struct?packetlist
s32?MyMemInit(TMemPool?*ptMemPool?s32?s32Size?s32?s32BlockNum)
{
if?(ptMemPool?==?NULL?||?s32Size?>?MAX_MEM_POOL_SIZE?||?s32BlockNum?>?MAX_MEM_POOL_NUM)
{
return?FAILURE;
}
if?(ptMemPool->ptMutex?!=?NULL)
{
MutexDestroy(ptMemPool->ptMutex);
}
ptMemPool->ptMutex?=?MutexCreate();
if?(ptMemPool->ptMutex?==?NULL)
{
return?FAILURE;
}
if?(ptMemPool->pStartAddr?!=?NULL)
{
free(ptMemPool->pStartAddr);
}
ptMemPool->s32Size?=?s32Size;
ptMemPool->s32UnitSize?=?s32Size?+?sizeof(s32);?/*每塊內存頭占用值為1,否則為0*/
ptMemPool->s32BolckCount?=?s32BlockNum;
ptMemPool->pStartAddr?=?calloc(1?ptMemPool->s32UnitSize?*?s32BlockNum);
if?(ptMemPool->pStartAddr?==?NULL)
{
MutexDestroy(ptMemPool->ptMutex);
ptMemPool->ptMutex?=?NULL;
return?FAILURE;
}
return?SUCCESS;
}
/*自定義內存池內存分配*/
void*?MyMemAllocate(TMemPool?*ptMemPool?s32?s32Size)
{
u8?*pTempBuf?=?NULL;
if?(ptMemPool?==?NULL?||?s32Size?>?ptMemPool->s32Size)
{
char?test[128]?=?{0};
sprintf(test“size?=?%d??%d\n“s32SizeptMemPool->s32Size);
OutputDebugString(test);
return?NULL;
}
MutexLock(OAL_MUTEX_BLOCK?ptMemPool->ptMutex);
s32?i?=?0;
for?(i?=?0;?i?s32BolckCount;?i?++)
{
pTempBuf?=?(u8*)ptMemPool->pStartAddr?+?ptMemPool->s32UnitSize?*?i;
if?((*(s32?*)pTempBuf)?==?FALSE)
{
*(s32?*)pTempBuf?=?TRUE;
MutexUnlock(ptMemPool->ptMutex);
return?(pTempBuf?+?sizeof(s32));
}
}
char?test3[128]?=?{0};
sprintf(test3“i?=?%d??count?=?%d\n“iptMemPool->s32BolckCount);
OutputDebugString(test3);
MutexUnlock(ptMemPool->ptMutex);
return?NULL;
}
/*自定義內存池內存釋放*/
s32?MyMemRelease(TMemPool?*ptMemPool?void?*pBuf)
{
if?(ptMemPool?==?NULL?||?pBuf?==?NULL?||?ptMemPool->pStartAddr?==?NULL)
{
return?FAILURE;
}
MutexLock(OAL_MUTEX_BLOCK?ptMemPool->ptMutex);
if?((u8*)pBuf?((u8*)ptMemPool->pStartAddr?+?sizeof(s32))?
||?(u
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.......?????48050??2014-02-12?09:44??ReleaseWebfr
????.......????307275??2014-02-12?09:44??ReleaseWebfr
????.......?????28756??2014-02-12?09:44??ReleaseWebfr
????.......??????3891??2014-02-12?09:44??ReleaseWebfr
????.......?????28754??2015-07-13?16:28??ReleaseWebfr
????.......??????3904??2015-05-19?10:45??ReleaseWebfr
????.......??????3688??2014-02-12?09:44??ReleaseWebfr
????.......???????848??2014-02-12?09:44??ReleaseWebfr
????.......?????26278??2014-02-12?09:44??ReleaseWebfr
????.......??????2690??2014-02-12?09:44??ReleaseWebfr
????.......?????10776??2014-02-12?09:44??ReleaseWebfr
????.......????129227??2014-02-12?09:44??ReleaseWebfr
????.......??????4710??2014-02-12?09:44??ReleaseWebfr
????.......??????2659??2014-02-12?09:44??ReleaseWebfr
????.......??????3049??2014-02-12?09:44??ReleaseWebfr
????.......??????9161??2014-02-12?09:44??ReleaseWebfr
????.......??????2629??2014-02-12?09:44??ReleaseWebfr
????.......??????2613??2014-02-12?09:44??ReleaseWebfr
????.......??????1601??2014-02-12?09:44??ReleaseWebfr
????.......??????5375??2014-02-12?09:44??ReleaseWebfr
????.......??????3052??2014-02-12?09:44??ReleaseWebfr
????.......??????1766??2014-02-12?09:44??ReleaseWebfr
????.......??????1175??2014-02-12?09:44??ReleaseWebfr
????.......?????12870??2014-02-12?09:44??ReleaseWebfr
????.......??????2656??2014-02-12?09:44??ReleaseWebfr
????.......??????5386??2014-02-12?09:44??ReleaseWebfr
????.......?????28580??2014-02-12?09:44??ReleaseWebfr
????.......??????3547??2014-02-12?09:44??ReleaseWebfr
????.......??????9755??2014-02-12?09:44??ReleaseWebfr
????.......??????5916??2014-02-12?09:44??ReleaseWebfr
............此處省略74個文件信息
評論
共有 條評論