功能介紹:從前N個link中獲取幀信息,並且把這些幀傳到一個隊列鍾,下一個link獲取時會把當前隊列所有的buffer獲取並組成一個數組
位置:links_fw/src/rtos/links_common/merge rtos
links_fw/src/hlos/links_a15/merge hlos
使用示例:
Capture -> Dup -> alg_dsp0 -> merge
Dup -> Merge
Merge -> sync -> Display
一些重要參數及回調:
outBufQue:提供給下一link取幀數據的隊列
inQueChNumMap:幀數據號匹配表,用於下一link匹配實際需要的chn使用
linkObj.linkGetFullBuffers = &MergeLink_getFullBuffers; 下一link獲取數據
linkObj.linkPutEmptyBuffers = &MergeLink_putEmptyBuffers; 下一link釋放buf
linkObj.getLinkInfo = &MergeLink_getLinkInfo; 下一link獲取本link信息
重要函數解析
Int32 MergeLink_drvProcessData(MergeLink_Obj * pObj) //merge處理函數
1、for ( pre link in num ) //
pBuf->chNum = pObj->inQueChNumMap[inQue][pBuf->chNum]; //下一link用該參數判斷使用哪個通道數據
System_getLinksFullBuffers(pCreateArgs->inQueParams[inQue].prevLinkId,
pCreateArgs->inQueParams[inQue].prevLinkQueId,
&pObj->inBufList); //每個前節點分別放入outBufQue,同一節點內的多數據都放在一個inBufList中2、Utils_bufPutFull //放入outBufQue,供下一link獲取