资源简介
本代码通过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 < ptMemPool->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个文件信息
评论
共有 条评论