Quantcast
Channel: Processors
Viewing all articles
Browse latest Browse all 123497

Forum Post: RE: SharedRegion_isCacheEnabled: id cannot be larger than numEntries!

$
0
0

Hi,

Below are my source code, pls advise me which API is wrong?

Int32 Vdis_putFullVideoFramesMP4(VIDEO_FRAMEBUF_LIST_S *pFrameBufList,UInt32 frameStart)
{
VIDEO_FRAMEBUF_S *pSrcBuf;
VIDFrame_Buf *pDstBuf;
VIDFrame_BufList vidBufList;
UInt32 i;
Int status = 0;

VDIS_TRACE_FXN_ENTRY("Num bufs put:%d",pFrameBufList->numFrames);
vidBufList.numFrames = pFrameBufList->numFrames-frameStart;
for (i = 0; i < vidBufList.numFrames; i++)
{
pSrcBuf = &pFrameBufList->frames[i+frameStart];
pDstBuf = &vidBufList.frames[i];
Vdis_copyVidFrameInfoMcFw2Link(pDstBuf,pSrcBuf);
}
if (vidBufList.numFrames)
{
status =
IpcFramesOutLink_putFullVideoFrames(gVdisModuleContext.ipcFramesOutHostId,&vidBufList);
OSA_assert(0 == status);
}

VDIS_TRACE_FXN_ENTRY("VIDFrame release status:%d",status);
return 0;
}

Int32 Vcap_ipcFrameSendToVPSS(VIDEO_FRAMEBUF_LIST_S *pFrameBufList,UInt32 *frameCount)
{
UInt32 frameId;
Int status=0;
static UInt64 timestamp=0;
UInt64 temp;
for(frameId=0;frameId<pFrameBufList->numFrames;frameId++)
{
if(timestamp!=0)
{
temp=pFrameBufList->frames[frameId].timeStamp-timestamp;
if(temp > ((sdi_get_video_interval(NULL)/1000000)+1))
{
OSA_Log(MCFW_LEVEL_WARNING,"Lose Video Frame(MP4)==> Interval:%llu\n",temp);
}
}
timestamp=pFrameBufList->frames[frameId].timeStamp;
(*frameCount)++;
if(rec_cmd==E_REC_START)
{
OSA_Log(MCFW_LEVEL_DEBUG,"handle MP4 Start:%d,%d,%llu,%d\n",(*frameCount),recStartFrameNum,timestamp,pFrameBufList->numFrames);
if(*frameCount==recStartFrameNum)
{
//OSA_Log(MCFW_LEVEL_DEBUG,"handle MP4 Start:%d,%d\n",frameId,pFrameBufList->numFrames);
Venc_forceIDR(0,0);
status=Vdis_putFullVideoFramesMP4(pFrameBufList,frameId);
OSA_assert(0 == status);
(*frameCount)+= pFrameBufList->numFrames-(frameId+1);
pFrameBufList->numFrames=frameId;
putFrameToVPSS=1;
// break;
return status;
}
}
else if(rec_cmd==E_REC_STOP)
{
if(*frameCount==recStopFrameNum)
{
OSA_Log(MCFW_LEVEL_DEBUG,"handle MP4 Stop\n");
putFrameToVPSS=0;
}
}

}
if(putFrameToVPSS)
{
status=Vdis_putFullVideoFramesMP4(pFrameBufList,0);
OSA_assert(0 == status);
pFrameBufList->numFrames=0;
}
return status;
}

static Void * VcapVenc_ipcFramesMP4SendRecvFxn(Void * prm)

{

 .....

while (FALSE == thrObj->exitFramesInOutThread)
{
OSA_semWait(&thrObj->framesInNotifySem,OSA_TIMEOUT_FOREVER);
if(thrObj->exitFramesInOutThread)
break;

status = Vcap_getFullVideoFramesMP4(&bufList,0);
OSA_assert(0 == status);

if (bufList.numFrames)
{
status=Vcap_ipcFrameSendToVPSS(&bufList,&(thrObj->frameCount));
}
if(bufList.numFrames!=0)
{
if(rec_cmd==E_REC_START)
OSA_Log(MCFW_LEVEL_DEBUG,"%s %d\n",__FUNCTION__,__LINE__);
status = Vcap_putEmptyVideoFramesMP4(&bufList);
OSA_assert(0 == status);
}
/*clear IPCFrameInVPSS buffer*/
status=Vdis_getEmptyVideoFrames(&bufList_temp,0);
OSA_assert(0 == status);
status = Vcap_putEmptyVideoFramesMP4(&bufList_temp);
OSA_assert(0 == status);
// OSA_waitMsecs(16);
}

}


Viewing all articles
Browse latest Browse all 123497

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>