• 大小: 3.42MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-03
  • 语言: 其他
  • 标签:

资源简介

本代码通过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  ReleaseWebframe\bin\dbghelp.lib

    .......    307275  2014-02-12 09:44  ReleaseWebframe\bin\LibOal.dll

    .......     28756  2014-02-12 09:44  ReleaseWebframe\bin\LibOal.lib

    .......      3891  2014-02-12 09:44  ReleaseWebframe\defines.h

    .......     28754  2015-07-13 16:28  ReleaseWebframe\frame.cpp

    .......      3904  2015-05-19 10:45  ReleaseWebframe\frame.h

    .......      3688  2014-02-12 09:44  ReleaseWebframe\Memory.cpp

    .......       848  2014-02-12 09:44  ReleaseWebframe\Memory.h

    .......     26278  2014-02-12 09:44  ReleaseWebframe\oal\configfile.cpp

    .......      2690  2014-02-12 09:44  ReleaseWebframe\oal\configfile.d

    .......     10776  2014-02-12 09:44  ReleaseWebframe\oal\configfile.h

    .......    129227  2014-02-12 09:44  ReleaseWebframe\oal\dbghelp.h

    .......      4710  2014-02-12 09:44  ReleaseWebframe\oal\FhSocket.cpp

    .......      2659  2014-02-12 09:44  ReleaseWebframe\oal\FhSocket.d

    .......      3049  2014-02-12 09:44  ReleaseWebframe\oal\FhSocket.h

    .......      9161  2014-02-12 09:44  ReleaseWebframe\oal\lib_linklist.cpp

    .......      2629  2014-02-12 09:44  ReleaseWebframe\oal\lib_linklist.d

    .......      2613  2014-02-12 09:44  ReleaseWebframe\oal\lib_linklist.h

    .......      1601  2014-02-12 09:44  ReleaseWebframe\oal\lib_pretype.h

    .......      5375  2014-02-12 09:44  ReleaseWebframe\oal\lib_thread.cpp

    .......      3052  2014-02-12 09:44  ReleaseWebframe\oal\lib_thread.d

    .......      1766  2014-02-12 09:44  ReleaseWebframe\oal\lib_thread.h

    .......      1175  2014-02-12 09:44  ReleaseWebframe\oal\Makefile

    .......     12870  2014-02-12 09:44  ReleaseWebframe\oal\mempool.cpp

    .......      2656  2014-02-12 09:44  ReleaseWebframe\oal\mempool.d

    .......      5386  2014-02-12 09:44  ReleaseWebframe\oal\mempool.h

    .......     28580  2014-02-12 09:44  ReleaseWebframe\oal\message.cpp

    .......      3547  2014-02-12 09:44  ReleaseWebframe\oal\message.d

    .......      9755  2014-02-12 09:44  ReleaseWebframe\oal\message.h

    .......      5916  2014-02-12 09:44  ReleaseWebframe\oal\mutex.cpp

............此处省略74个文件信息

评论

共有 条评论

相关资源