osd的link数据链过程

来源:互联网 发布:掌握仓库办公软件 编辑:程序博客网 时间:2024/06/17 18:13

                 

   IPC Frames Out(M3)--------><<Process Link>>  ------------>|IPC Frames In (DSP)   ----->| AlgLink |(SWOSD)
                       

Since osd is set as processLink frame will come back to the M3VPSS after OSD is applied. ProcessLink works as below:

Step 1

ipcFramesOut ----send input buffer---> ipcFramesIn (ProcessLink)

 

Step 2

ipcFramesIn (ProcessLink) ---send input buffer ---> dspAlg[0]

 

After dspAlg processing is complete ...

 

Step 3

dspAlg[0] --> Frees Input Buffer --> ipcFramesIn

Step 4

ipcFramesIn --> Free Input Buffer -> ipcFramesOut

Step 5

ipcFramesOut -> Send Input Buffer to next Link


代码例子

//这3句代码通知到ipcFramesInDsp

ipcFramesOutVpssPrm.baseCreateParams.processLink = ipcFramesInDspId;
ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = TRUE;
ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;

//下面的代码是从ipcFramesInDsp开始的
ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = ipcFramesOutVpssId;
ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcFramesInDspPrm.baseCreateParams.numOutQue   = 1;

ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = dspAlgId;
ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;
ipcFramesInDspPrm.baseCreateParams.noNotifyMode   = FALSE;


dspAlgPrm.inQueParams.prevLinkId = ipcFramesInDspId;
dspAlgPrm.inQueParams.prevLinkQueId = 0;


dspAlgPrm.enableOSDAlg = TRUE;
for(chId = 0; chId < ALG_LINK_OSD_MAX_CH; chId++)
{
AlgLink_OsdChWinParams * chWinPrm = &dspAlgPrm.osdChCreateParams[chId].chDefaultParams;


/* set osd window max width and height */
dspAlgPrm.osdChCreateParams[chId].maxWidth  = 720;
dspAlgPrm.osdChCreateParams[chId].maxHeight = 576;


chWinPrm->chId = chId;
chWinPrm->numWindows = 0;
}


0 0