This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
平台是dm8127 appro,rdk 3.5 。在multich_tristream_fullfeature.c 加alg link。怎么接入呢?我的接入没有显示。
/** ==================================================================
* @file multich_tristream_fullFeature.c
*
* @path ipnc_mcfw/mcfw/src_linux/mcfw_api/usecases/
*
* @desc This File contains.
* ===================================================================
* Copyright (c) Texas Instruments Inc 2011, 2012
*
* Use of this software is controlled by the terms and conditions found
* in the license agreement under which this software has been supplied
* ===================================================================*/
/*------------------------------ TRIPLE OUT <1080p + D1 + MJPEG> ----------------------------------
SENSOR
________||_______
|----SALDRE ON--| CAMERA LINK |
| | ISP LINK |
| |________________|
GLBCE_LINK
|
| __________________
| | CAMERA LINK |
|---SALDRE ON---| ISP LINK |
|________________|
Capture
RSZA RSZB
1080P60 D130
(YUV420/YUV422I) (YUV420) |------------- SD DISPLAY
| | |
| | (2)
NSF ----- DUP_1(1) --------- SCALER
(YUV420) (0) |
| | |
| | DUP_3(0)-------- FD
| |--------- (1)
| | |----------------
| | | |
--------------| | IPC FRAMES OUT(VPS) |
| | | |(VA on VPS)
| | | |
DUP_2(0)-------------| | IPC FRAMES IN(DSP) |
(1) |---| | | | |
| | |---|-----| |---------------|
|---------| | |
| VA(VPS/DSP)
MERGE
|
|
SWOSD
|
|
DUP_4(1)----------- HDMI DISPLAY
|
|
IPCM3OUT(VPS)
|
|
IPCM3IN(VID)
|
|
H264ENC
|
|
BITSOUT (VID)
|
|
BITSIN (A8)
------------------------------------------------------------------------------------------*/
#include "mcfw/src_linux/mcfw_api/usecases/multich_common.h"
#include "mcfw/src_linux/mcfw_api/usecases/multich_ipcbits.h"
#include "demos/mcfw_api_demos/multich_usecase/ti_mcfw_ipnc_main.h"
#ifdef IPNC_DSP_ON
#define VA_ON_DSP
#endif
/*in YUV sensor case, Enabling GLBCE means enabling Memory 2 Memory */
#ifdef IMGS_OMNIVISION_OV10630
#define YUV_M2M_DRV_TEST
#endif
extern UInt32 gIsGlbceInitDone;
extern GlbcePreset gGLBCE_AlgoPreset;
/* =============================================================================
* Externs
* ============================================================================= */
/* =============================================================================
* Use case code
* ============================================================================= */
static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl =
{
.isPopulated = 1,
.ivaMap[0] = {
.EncNumCh = 2,
.EncChList = {0, 1},
.DecNumCh = 2,
.DecChList = {0, 1},
},
};
#ifdef ENABLE_TILER
#define TILER_ENABLE TRUE
#else
#define TILER_ENABLE FALSE
#endif
/* Merge Link for camera streams */
#define NUM_MERGE_LINK (1)
#define CAM_STREAM_MERGE_IDX (0)
/* Dup Links */
#define NUM_DUP_LINK (5)
#define DIS_DUP_IDX (0)
#define MJPEG_DUP_LINK_IDX (1)
#define SCALER_DUP_IDX (2)
#define VA_DUP_IDX (3)
#define ADD_MY_ALG 1
#if ADD_MY_ALG
#define MY_VA_DUP_IDX (4)
#endif
/* ===================================================================
* @func MultiCh_createTriStreamFullFtr
*
* @desc Function does the following
*
* @modif This function modifies the following structures
*
* @inputs This function takes the following inputs
* <argument name>
* Description of usage
* <argument name>
* Description of usage
*
* @outputs <argument name>
* Description of usage
*
* @return Return value of this function if any
* ==================================================================
*/
Void MultiCh_createTriStreamFullFtr()
{
UInt32 i;
CameraLink_CreateParams cameraPrm;
IspLink_CreateParams ispPrm;
UInt32 ispId;
GlbceLink_CreateParams glbcePrm;
UInt32 glbceId;
NsfLink_CreateParams nsfPrm;
VnfLink_CreateParams vnfPrm;
MergeLink_CreateParams mergePrm[NUM_MERGE_LINK];
IpcLink_CreateParams ipcOutVpssPrm;
IpcLink_CreateParams ipcInVideoPrm;
EncLink_CreateParams encPrm;
DupLink_CreateParams dupPrm[NUM_DUP_LINK];
SclrLink_CreateParams sclrPrm;
DisplayLink_CreateParams displayPrm;
DisplayLink_CreateParams displayPrm_SD;
FdLink_CreateParams fdPrm;
SwosdLink_CreateParams swosdPrm;
IpcBitsOutLinkRTOS_CreateParams ipcBitsOutVideoPrm;
IpcBitsInLinkHLOS_CreateParams ipcBitsInHostPrm0;
VstabLink_CreateParams vstabPrm;
GlbceSupportLink_CreateParams glbceSupportPrm;
VaLink_CreateParams vaPrm;
IpcFramesOutLinkRTOS_CreateParams ipcFramesOutVpssPrm;
IpcFramesInLinkRTOS_CreateParams ipcFramesInDspPrm;
CameraLink_VipInstParams *pCameraInstPrm;
CameraLink_OutParams *pCameraOutPrm;
////////////////////my link////////////////////////
#if ADD_MY_ALG
AlgLink_CreateParams dspAlgPrm;
UInt32 dspAlgId;
IpcFramesOutLinkRTOS_CreateParams alg_ipcFramesOutVpssPrm;
IpcFramesInLinkRTOS_CreateParams alg_ipcFramesInDspPrm;
UInt32 alg_ipcFramesOutVpssId;
UInt32 alg_ipcFramesInDspId;
#endif
/////////////////////////////////////////////////
UInt32 mergeId[NUM_MERGE_LINK];
UInt32 ipcOutVpssId;
UInt32 ipcInVideoId;
UInt32 dupId[NUM_DUP_LINK];
UInt32 vstabId;
UInt32 glbceSupportId;
UInt32 ipcFramesOutVpssId;
UInt32 ipcFramesInDspId;
#ifdef WDR_ON
WdrLink_CreateParams wdrPrm;
UInt32 wdrId;
UInt32 wdrSupportId;
WdrSupportLink_CreateParams wdrSupportPrm;
#endif
/* IPC struct init */
MULTICH_INIT_STRUCT(IpcLink_CreateParams, ipcOutVpssPrm);
MULTICH_INIT_STRUCT(IpcLink_CreateParams, ipcInVideoPrm);
MULTICH_INIT_STRUCT(IpcBitsOutLinkRTOS_CreateParams, ipcBitsOutVideoPrm);
MULTICH_INIT_STRUCT(IpcBitsInLinkHLOS_CreateParams, ipcBitsInHostPrm0);
MULTICH_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams, ipcFramesOutVpssPrm);
MULTICH_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams, ipcFramesInDspPrm);
////////////////////my link////////////////////////
#if ADD_MY_ALG
// MULTICH_INIT_STRUCT(AlgLink_CreateParams , dspAlgPrm);
MULTICH_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams, alg_ipcFramesOutVpssPrm);
MULTICH_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams, alg_ipcFramesInDspPrm);
#endif
/////////////////////////////////////////////////////
if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
{
OSA_printf("\n********** SMART ANALYTICS USECASE ********\n");
OSA_printf
("********* Entered Smart Analytics usecase - H264 1080p @60fps + H264 D1 @30fps + MJPEG 1080p @5fps ********\n\n");
}
else
{
OSA_printf("\n********** FULL FEATURE USECASE ********\n");
OSA_printf
("********* Entered Tri Streaming usecase - H264 1080p @60fps + H264 D1 @30fps + MJPEG 1080p @5fps ********\n\n");
}
MultiCh_detectBoard();
System_linkControl(SYSTEM_LINK_ID_M3VPSS,
SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES, NULL, 0, TRUE);
System_linkControl(SYSTEM_LINK_ID_M3VIDEO,
SYSTEM_COMMON_CMD_SET_CH2IVAHD_MAP_TBL,
&systemVid_encDecIvaChMapTbl,
sizeof(SystemVideo_Ivahd2ChMap_Tbl), TRUE);
/* Link IDs */
gVcamModuleContext.cameraId = SYSTEM_LINK_ID_CAMERA;
gVencModuleContext.encId = SYSTEM_LINK_ID_VENC_0;
gMjpegModuleContext.mjpepEncId = SYSTEM_LINK_ID_MJPEG;
mergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
dupId[DIS_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_0;
dupId[MJPEG_DUP_LINK_IDX] = SYSTEM_VPSS_LINK_ID_DUP_1;
dupId[SCALER_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_2;
dupId[VA_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_3;
gVcamModuleContext.sclrId[0] = SYSTEM_LINK_ID_SCLR_INST_0;
gVsysModuleContext.fdId = SYSTEM_LINK_ID_FD;
gVsysModuleContext.swOsdId = SYSTEM_LINK_ID_SWOSD_0;
ispId = SYSTEM_LINK_ID_ISP_0;
glbceId = SYSTEM_LINK_ID_GLBCE;
vstabId = SYSTEM_LINK_ID_VSTAB_0;
glbceSupportId = SYSTEM_LINK_ID_GLBCE_SUPPORT_0;
////////////////////my link/////////////////////////////////////////////////
#if ADD_MY_ALG
dspAlgId = SYSTEM_LINK_ID_ALG_0;
#endif
///////////////////////////////////////////////////////////////////////
#ifdef WDR_ON
wdrId = SYSTEM_LINK_ID_WDR;
wdrSupportId = SYSTEM_LINK_ID_WDR_SUPPORT;
#endif
gVdisModuleContext.displayId[VDIS_DEV_HDMI] = SYSTEM_LINK_ID_DISPLAY_0;
gVdisModuleContext.displayId[VDIS_DEV_SD] = SYSTEM_LINK_ID_DISPLAY_2;
ipcOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0;
ipcInVideoId = SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0;
gVencModuleContext.ipcBitsOutRTOSId = SYSTEM_VIDEO_LINK_ID_IPC_BITS_OUT_0;
gVencModuleContext.ipcBitsInHLOSId = SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0;
ipcFramesOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;
ipcFramesInDspId = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;
#if ADD_MY_ALG
alg_ipcFramesOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_1;
alg_ipcFramesInDspId = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_1;
#endif
#ifdef VA_ON_DSP
gVsysModuleContext.vaId = SYSTEM_DSP_LINK_ID_VA;
#else
gVsysModuleContext.vaId = SYSTEM_VPSS_LINK_ID_VA;
if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
{
/* When VA is running on VPSS M3 then we cannot create ISS_NF
so forcing NF type to be DSS_NF */
gUI_mcfw_config.noisefilterMode = DSS_VNF_ON;
}
#endif
if(gUI_mcfw_config.glbceEnable)
{
gVcamModuleContext.glbceId = glbceId;
#ifdef WDR_ON
gVcamModuleContext.glbceId = SYSTEM_LINK_ID_INVALID;
#endif
/* Camera Link params */
CameraLink_CreateParams_Init(&cameraPrm);
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
{
gVcamModuleContext.nsfId = SYSTEM_LINK_ID_NSF_0;
}
else
{
gVcamModuleContext.vnfId = SYSTEM_LINK_ID_VNF;
cameraPrm.vnfLinkId = SYSTEM_LINK_ID_VNF;
}
cameraPrm.captureMode = CAMERA_LINK_CAPMODE_DDR;
#ifdef YUV_M2M_DRV_TEST
cameraPrm.outQueParams[0].nextLink = ispId;
#else
cameraPrm.outQueParams[0].nextLink = glbceId;
#ifdef WDR_ON
cameraPrm.outQueParams[0].nextLink = wdrId;
#endif
#endif
cameraPrm.ispLinkId = ispId;
/* This is for TVP5158 Audio Channels - Change it to 16 if there are 16
* audio channels connected in cascade */
cameraPrm.numAudioChannels = 0;
cameraPrm.numVipInst = 1;
#if (TILER_ENABLE == TRUE)
cameraPrm.tilerEnable = TRUE;
#else
cameraPrm.tilerEnable = FALSE;
#endif
cameraPrm.vsEnable = gUI_mcfw_config.vsEnable;
cameraPrm.vstabLinkId = vstabId;
pCameraInstPrm = &cameraPrm.vipInst[0];
pCameraInstPrm->vipInstId = SYSTEM_CAMERA_INST_VP_CSI2;
pCameraInstPrm->videoDecoderId = MultiCh_getSensorId(gUI_mcfw_config.sensorId);
pCameraInstPrm->inDataFormat = SYSTEM_DF_YUV420SP_UV;
#ifdef IMGS_OMNIVISION_OV10630
pCameraInstPrm->sensorOutWidth = 1280;
pCameraInstPrm->sensorOutHeight = 720;
#elif defined IMGS_SONY_IMX104
pCameraInstPrm->sensorOutWidth = 1280;
pCameraInstPrm->sensorOutHeight = 720;
#elif defined IMGS_MICRON_MT9M034
pCameraInstPrm->sensorOutWidth = 1280;
pCameraInstPrm->sensorOutHeight = 736;
#else
pCameraInstPrm->sensorOutWidth = 1920;
pCameraInstPrm->sensorOutHeight = 1080;
#endif
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
{
pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
}
else
{
pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
cameraPrm.issVnfEnable = 1;
}
pCameraInstPrm->numOutput = 1;
pCameraOutPrm = &pCameraInstPrm->outParams[0];
pCameraOutPrm->scEnable = FALSE;
#ifdef IMGS_OMNIVISION_OV10630
pCameraOutPrm->dataFormat = SYSTEM_DF_YUV422I_UYVY; //SYSTEM_DF_YUV422I_VYUY;
pCameraOutPrm->scOutWidth = 1280;
pCameraOutPrm->scOutHeight = 720;
#elif defined IMGS_SONY_IMX104
pCameraOutPrm->dataFormat = SYSTEM_DF_BAYER_RAW;
pCameraOutPrm->scOutWidth = 1280;
pCameraOutPrm->scOutHeight = 720;
#elif defined IMGS_MICRON_MT9M034
pCameraOutPrm->dataFormat = SYSTEM_DF_BAYER_RAW;
pCameraOutPrm->scOutWidth = 1280;
pCameraOutPrm->scOutHeight = 736;
#else
pCameraOutPrm->dataFormat = SYSTEM_DF_BAYER_RAW;
pCameraOutPrm->scOutWidth = 1920;
pCameraOutPrm->scOutHeight = 1080;
#endif
pCameraOutPrm->outQueId = 0;
/* 2A config */
cameraPrm.t2aConfig.n2A_vendor = gUI_mcfw_config.n2A_vendor;
cameraPrm.t2aConfig.n2A_mode = gUI_mcfw_config.n2A_mode;
}
else /*GLBCE OFF*/
{
gVcamModuleContext.glbceId = SYSTEM_LINK_ID_INVALID;
/* Camera Link params */
CameraLink_CreateParams_Init(&cameraPrm);
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
{
gVcamModuleContext.nsfId = SYSTEM_LINK_ID_NSF_0;
}
else
{
gVcamModuleContext.vnfId = SYSTEM_LINK_ID_VNF;
cameraPrm.vnfLinkId = SYSTEM_LINK_ID_VNF;
}
cameraPrm.captureMode = CAMERA_LINK_CAPMODE_ISIF;
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
cameraPrm.outQueParams[0].nextLink = gVcamModuleContext.nsfId;
else
cameraPrm.outQueParams[0].nextLink = gVcamModuleContext.vnfId;
cameraPrm.outQueParams[1].nextLink = dupId[SCALER_DUP_IDX];
/* This is for TVP5158 Audio Channels - Change it to 16 if there are 16
* audio channels connected in cascade */
cameraPrm.numAudioChannels = 1;
cameraPrm.numVipInst = 1;
#if (TILER_ENABLE == TRUE)
cameraPrm.tilerEnable = TRUE;
#else
cameraPrm.tilerEnable = FALSE;
#endif
cameraPrm.vsEnable = gUI_mcfw_config.vsEnable;
cameraPrm.vstabLinkId = vstabId;
pCameraInstPrm = &cameraPrm.vipInst[0];
pCameraInstPrm->vipInstId = SYSTEM_CAMERA_INST_VP_CSI2;
pCameraInstPrm->videoDecoderId = MultiCh_getSensorId(gUI_mcfw_config.sensorId);
pCameraInstPrm->inDataFormat = SYSTEM_DF_YUV420SP_UV;
#ifdef IMGS_OMNIVISION_OV10630
pCameraInstPrm->sensorOutWidth = 1280;
pCameraInstPrm->sensorOutHeight = 720;
#elif defined IMGS_SONY_IMX104
pCameraInstPrm->sensorOutWidth = 1280;
pCameraInstPrm->sensorOutHeight = 720;
#elif defined IMGS_MICRON_MT9M034
pCameraInstPrm->sensorOutWidth = 1280;
pCameraInstPrm->sensorOutHeight = 736;
#else
pCameraInstPrm->sensorOutWidth = 1920;
pCameraInstPrm->sensorOutHeight = 1080;
#endif
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
{
pCameraInstPrm->standard = SYSTEM_STD_1080P_60;
}
else
{
pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
cameraPrm.issVnfEnable = 1;
}
pCameraInstPrm->numOutput = 2;
/* First stream */
pCameraOutPrm = &pCameraInstPrm->outParams[0];
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
pCameraOutPrm->dataFormat = SYSTEM_DF_YUV422I_UYVY;
else
pCameraOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV;
pCameraOutPrm->scEnable = FALSE;
#ifdef IMGS_OMNIVISION_OV10630
pCameraOutPrm->scOutWidth = 1280;
pCameraOutPrm->scOutHeight = 720;
#elif defined IMGS_SONY_IMX104
pCameraOutPrm->scOutWidth = 1280;
pCameraOutPrm->scOutHeight = 720;
#elif defined IMGS_MICRON_MT9M034
pCameraOutPrm->scOutWidth = 1280;
pCameraOutPrm->scOutHeight = 736;
#else
/* When VS is enabled then scOutWidth/scOutHeight cannot be equal to sensorOutWidth/sensorOutHeight */
if(cameraPrm.vsEnable == 0)
{
pCameraOutPrm->scOutWidth = 1920;
pCameraOutPrm->scOutHeight = 1080;
}
else
{
pCameraOutPrm->scOutWidth = 1600;
pCameraOutPrm->scOutHeight = 900;
}
#endif
pCameraOutPrm->outQueId = 0;
/* Second stream */
pCameraOutPrm = &pCameraInstPrm->outParams[1];
pCameraOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV;
pCameraOutPrm->scEnable = FALSE;
pCameraOutPrm->scOutWidth = 720;
pCameraOutPrm->scOutHeight = 480;
pCameraOutPrm->standard = SYSTEM_STD_NTSC;
pCameraOutPrm->outQueId = 1;
/* 2A config */
cameraPrm.t2aConfig.n2A_vendor = gUI_mcfw_config.n2A_vendor;
cameraPrm.t2aConfig.n2A_mode = gUI_mcfw_config.n2A_mode;
}
/* vstab Link params */
vstabPrm.totalFrameWidth = pCameraInstPrm->sensorOutWidth;
vstabPrm.totalFrameHeight = pCameraInstPrm->sensorOutHeight;
glbceSupportPrm.glbceLinkID = glbceId;
glbceSupportPrm.totalFrameWidth = pCameraInstPrm->sensorOutWidth;
glbceSupportPrm.totalFrameHeight = pCameraInstPrm->sensorOutHeight;
#ifdef WDR_ON
wdrSupportPrm.wdrLinkID = wdrId;
wdrSupportPrm.totalFrameWidth = pCameraInstPrm->sensorOutWidth;
wdrSupportPrm.totalFrameHeight = pCameraInstPrm->sensorOutHeight;
#endif
if(gUI_mcfw_config.glbceEnable)
{
cameraPrm.glbceLinkId = glbceId;
#ifdef WDR_ON
cameraPrm.glbceLinkId = SYSTEM_LINK_ID_INVALID;
#endif
/* Glbce Link Params */
glbcePrm.inQueParams.prevLinkId = gVcamModuleContext.cameraId;
glbcePrm.inQueParams.prevLinkQueId = 0;
glbcePrm.outQueParams.nextLink = ispId;
glbcePrm.chCreateParams[0].preset = 0;//gGLBCE_AlgoPreset;
glbcePrm.glbceEnable = gUI_mcfw_config.glbceEnable;
glbcePrm.glbceSupportID = glbceSupportId;
glbcePrm.swosdLinkID = gVsysModuleContext.swOsdId;
#ifdef WDR_ON
wdrPrm.inQueParams.prevLinkId = gVcamModuleContext.cameraId;
wdrPrm.inQueParams.prevLinkQueId = 0;
wdrPrm.outQueParams.nextLink = ispId;
wdrPrm.chCreateParams[0].preset = 0;
wdrPrm.wdrEnable = 1;
wdrPrm.wdrSupportID = wdrSupportId;
wdrPrm.swosdLinkID = gVsysModuleContext.swOsdId;
#endif
/* isp link params */
#ifdef YUV_M2M_DRV_TEST
ispPrm.inQueParams.prevLinkId = gVcamModuleContext.cameraId;
#else
ispPrm.inQueParams.prevLinkId = glbceId;
#ifdef WDR_ON
ispPrm.inQueParams.prevLinkId = wdrId;
#endif
#endif
ispPrm.inQueParams.prevLinkQueId = 0;
ispPrm.numOutQueue = 2;
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
ispPrm.outQueInfo[0].nextLink = gVcamModuleContext.nsfId;
else
ispPrm.outQueInfo[0].nextLink = gVcamModuleContext.vnfId;
ispPrm.outQueInfo[1].nextLink = dupId[SCALER_DUP_IDX];
#if defined(TI_8107_BUILD)
ispPrm.clkDivM = 10;
ispPrm.clkDivN = 30;//30;
#else
ispPrm.clkDivM = 10;
ispPrm.clkDivN = 20;
#endif
ispPrm.vsEnable = gUI_mcfw_config.vsEnable;
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
ispPrm.outQueuePrm[0].dataFormat = SYSTEM_DF_YUV422I_UYVY;
else
ispPrm.outQueuePrm[0].dataFormat = SYSTEM_DF_YUV420SP_UV;
#ifdef IMGS_OMNIVISION_OV10630
ispPrm.outQueuePrm[0].width = 1280;
ispPrm.outQueuePrm[0].height = 720;
#elif defined IMGS_SONY_IMX104
ispPrm.outQueuePrm[0].width = 1280;
ispPrm.outQueuePrm[0].height = 720;
#elif defined IMGS_MICRON_MT9M034
ispPrm.outQueuePrm[0].width = 1280;
ispPrm.outQueuePrm[0].height = 736;
#else
if(ispPrm.vsEnable == TRUE)
{
ispPrm.outQueuePrm[0].width = 1600;
ispPrm.outQueuePrm[0].height = 900;
}
else
{
ispPrm.outQueuePrm[0].width = 1920;
ispPrm.outQueuePrm[0].height = 1080;
}
#endif
ispPrm.outQueuePrm[1].dataFormat = SYSTEM_DF_YUV420SP_UV;
ispPrm.outQueuePrm[1].width = 720;
ispPrm.outQueuePrm[1].height = 480;//576;
ispPrm.outQueuePrm[1].standard = SYSTEM_STD_NTSC;//SYSTEM_STD_PAL;//SYSTEM_STD_NTSC;
}
ispPrm.vnfFullResolution = FALSE;
cameraPrm.vnfFullResolution = FALSE;
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
{
/* NSF Link params */
NsfLink_CreateParams_Init(&nsfPrm);
if (gUI_mcfw_config.snfEnable)
{
if (gUI_mcfw_config.tnfEnable)
nsfPrm.bypassNsf = NSF_LINK_BYPASS_NONE;
else
nsfPrm.bypassNsf = NSF_LINK_BYPASS_TNF;
}
else
{
if (gUI_mcfw_config.tnfEnable)
nsfPrm.bypassNsf = NSF_LINK_BYPASS_SNF;
else
nsfPrm.bypassNsf = NSF_LINK_BYPASS_SNF_TNF;
}
#if (TILER_ENABLE == TRUE)
nsfPrm.tilerEnable = TRUE;
#else
nsfPrm.tilerEnable = FALSE;
#endif
if(gUI_mcfw_config.glbceEnable)
nsfPrm.inQueParams.prevLinkId = ispId;
else
nsfPrm.inQueParams.prevLinkId = gVcamModuleContext.cameraId;
nsfPrm.inQueParams.prevLinkQueId = 0;
nsfPrm.numOutQue = 1;
nsfPrm.numBufsPerCh = 6;
nsfPrm.inputFrameRate = 60;
nsfPrm.outputFrameRate = 60;
nsfPrm.outQueParams[0].nextLink = dupId[MJPEG_DUP_LINK_IDX];
nsfPrm.nsfStrength = gUI_mcfw_config.vnfStrength;
}
else
{
VnfLink_ChCreateParams *vnfParams;
/* Vnf Link Params */
if(gUI_mcfw_config.glbceEnable)
vnfPrm.inQueParams.prevLinkId = ispId;
else
vnfPrm.inQueParams.prevLinkId = gVcamModuleContext.cameraId;
vnfPrm.inQueParams.prevLinkQueId = 0;
vnfPrm.outQueParams.nextLink = dupId[MJPEG_DUP_LINK_IDX];
vnfParams = &vnfPrm.chCreateParams[0];
vnfParams->sParams.eOutputFormat = SYSTEM_DF_YUV420SP_UV;
if (gUI_mcfw_config.ldcEnable)
{
vnfParams->sParams.eOperateMode = VNF_LINK_LDC_AFFINE_NSF_TNF;
}
else
{
#ifdef USE_TNF2_FILTER
vnfParams->sParams.eOperateMode = VNF_LINK_3DNF;
#elif defined (USE_TNF3_FILTER)
vnfParams->sParams.eOperateMode = VNF_LINK_TNF3;
#else
vnfParams->sParams.eOperateMode = VNF_LINK_AFFINE_NSF_TNF;
#endif
vnfParams->sParams.eNsfSet = VNF_LINK_NSF_LUMA_CHROMA;
}
if ((vnfParams->sParams.eOperateMode == VNF_LINK_TNF3) && (vnfParams->sParams.eNsfSet == VNF_LINK_NSF_LUMA_CHROMA))
{
if (gUI_mcfw_config.glbceEnable)
{
ispPrm.vnfFullResolution = TRUE;
cameraPrm.vnfFullResolution = FALSE;
}
else
{
ispPrm.vnfFullResolution = FALSE;
cameraPrm.vnfFullResolution = TRUE;
}
}
vnfParams->dParams.ldcParams.eInterpolationLuma =
VNF_LINK_YINTERPOLATION_BILINEAR;
vnfParams->dParams.ldcParams.unPixelPad = 4;
vnfParams->dParams.nsfParams.bLumaEn = TRUE;
vnfParams->dParams.nsfParams.bChromaEn = TRUE;
vnfParams->dParams.nsfParams.eSmoothVal = VNF_LINK_SMOOTH_0;
vnfParams->dParams.nsfParams.bSmoothLumaEn = TRUE;
vnfParams->dParams.nsfParams.bSmoothChromaEn = TRUE;
vnfParams->dParams.tnfParams.useDefault = TRUE;
vnfParams->dParams.nsfFilter.eFilterParam = VNF_LINK_PARAM_DEFAULT;
vnfParams->dParams.nsfEdge.eEdgeParam = VNF_LINK_PARAM_DISABLE;
vnfParams->dParams.nsfShading.eShdParam = VNF_LINK_PARAM_DISABLE;
vnfParams->dParams.nsfDesaturation.eDesatParam = VNF_LINK_PARAM_DISABLE;
vnfPrm.chCreateParams[0].bSnfEnable = gUI_mcfw_config.snfEnable;
vnfPrm.chCreateParams[0].bTnfEnable = gUI_mcfw_config.tnfEnable;
vnfPrm.chCreateParams[0].strength = gUI_mcfw_config.vnfStrength;
}
/* Dup Link params */
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
dupPrm[MJPEG_DUP_LINK_IDX].inQueParams.prevLinkId =
gVcamModuleContext.nsfId;
else
dupPrm[MJPEG_DUP_LINK_IDX].inQueParams.prevLinkId =
gVcamModuleContext.vnfId;
dupPrm[MJPEG_DUP_LINK_IDX].inQueParams.prevLinkQueId = 0;
dupPrm[MJPEG_DUP_LINK_IDX].numOutQue = 2;
dupPrm[MJPEG_DUP_LINK_IDX].outQueParams[0].nextLink =
mergeId[CAM_STREAM_MERGE_IDX];
dupPrm[MJPEG_DUP_LINK_IDX].outQueParams[1].nextLink =
mergeId[CAM_STREAM_MERGE_IDX];
dupPrm[MJPEG_DUP_LINK_IDX].notifyNextLink = TRUE;
/* Dup link for Scaler params */
if(gUI_mcfw_config.glbceEnable)
dupPrm[SCALER_DUP_IDX].inQueParams.prevLinkId = ispId;
else
dupPrm[SCALER_DUP_IDX].inQueParams.prevLinkId = gVcamModuleContext.cameraId;
dupPrm[SCALER_DUP_IDX].inQueParams.prevLinkQueId = 1;
dupPrm[SCALER_DUP_IDX].numOutQue = 3;
dupPrm[SCALER_DUP_IDX].outQueParams[0].nextLink =
mergeId[CAM_STREAM_MERGE_IDX];
dupPrm[SCALER_DUP_IDX].outQueParams[1].nextLink = gVcamModuleContext.sclrId[0];
dupPrm[SCALER_DUP_IDX].outQueParams[2].nextLink =
gVdisModuleContext.displayId[VDIS_DEV_SD];
dupPrm[SCALER_DUP_IDX].notifyNextLink = TRUE;
/* display link params */
MULTICH_INIT_STRUCT(DisplayLink_CreateParams, displayPrm_SD);
displayPrm_SD.inQueParams[0].prevLinkId = dupId[SCALER_DUP_IDX];
displayPrm_SD.inQueParams[0].prevLinkQueId = 2;
displayPrm_SD.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_SD].resolution;
displayPrm_SD.displayId = DISPLAY_LINK_DISPLAY_SD;
/* Merge Link params */
mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 3;
mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkId =
dupId[MJPEG_DUP_LINK_IDX];
mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkQueId = 0;
mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId =
dupId[SCALER_DUP_IDX];
mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkQueId = 0;
mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[2].prevLinkId =
dupId[MJPEG_DUP_LINK_IDX];
mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[2].prevLinkQueId = 1;
mergePrm[CAM_STREAM_MERGE_IDX].outQueParams.nextLink =
gVsysModuleContext.swOsdId;
mergePrm[CAM_STREAM_MERGE_IDX].notifyNextLink = TRUE;
/* SWOSD Link Params */
swosdPrm.inQueParams.prevLinkId = mergeId[CAM_STREAM_MERGE_IDX];
swosdPrm.inQueParams.prevLinkQueId = 0;
swosdPrm.outQueParams.nextLink = dupId[DIS_DUP_IDX];
swosdPrm.frameSync = 1; // frame sync is
// required
swosdPrm.frameSycChId = 1; // frame sync is
// required on
// channel # 1
///////////////////////////////////////my link////////////////////////////////////////
//#if 0
#if ADD_MY_ALG
/* Display dup link params */
dupPrm[DIS_DUP_IDX].inQueParams.prevLinkId = gVsysModuleContext.swOsdId;
dupPrm[DIS_DUP_IDX].inQueParams.prevLinkQueId = 0;
dupPrm[DIS_DUP_IDX].numOutQue = 2;//
dupPrm[DIS_DUP_IDX].outQueParams[0].nextLink = ipcOutVpssId;
// dupPrm[DIS_DUP_IDX].outQueParams[1].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
dupPrm[DIS_DUP_IDX].outQueParams[1].nextLink = alg_ipcFramesOutVpssId;
dupPrm[DIS_DUP_IDX].notifyNextLink = TRUE;//FALSE
//UInt32 alg_ipcFramesOutVpssId;
/// UInt32 alg_ipcFramesInDs
/* IPC Frames Out VPSS for VA link params */
alg_ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = dupId[DIS_DUP_IDX];
alg_ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 1;
alg_ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
alg_ipcFramesOutVpssPrm.baseCreateParams.inputFrameRate = 30;
alg_ipcFramesOutVpssPrm.baseCreateParams.outputFrameRate = 30;
alg_ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 1;
alg_ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = alg_ipcFramesInDspId;
alg_ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;
alg_ipcFramesOutVpssPrm.baseCreateParams.processLink = SYSTEM_LINK_ID_INVALID;
alg_ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = FALSE;
alg_ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;
/* IPC Frames in DSP for VA link params */
alg_ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = alg_ipcFramesOutVpssId;
alg_ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
alg_ipcFramesInDspPrm.baseCreateParams.numOutQue = 1;
alg_ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = dspAlgId;
//alg_ipcFramesInDspPrm.baseCreateParams.outQueParams[1].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
alg_ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
alg_ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;
alg_ipcFramesInDspPrm.baseCreateParams.noNotifyMode = FALSE;
AlgLink_CreateParams_Init(&dspAlgPrm);
dspAlgPrm.enableOSDAlg = TRUE;
dspAlgPrm.enableSCDAlg = FALSE;
// dspAlgPrm.inQueParams.prevLinkId = ipcFramesInDspId;
dspAlgPrm.inQueParams.prevLinkId = alg_ipcFramesInDspId;
dspAlgPrm.inQueParams.prevLinkQueId = 0;
//dspAlgPrm.outQueParams[0].nextLink = ipcFramesOutDspId;
dspAlgPrm.outQueParams.nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];;
//dspAlgPrm.outQueParams.nextLink = SYSTEM_LINK_ID_INVALID;
AlgLink_OsdChWinParams * chWinPrm = &dspAlgPrm.osdChCreateParams[0].chDefaultParams;
/* set osd window max width and height */
dspAlgPrm.osdChCreateParams[0].maxWidth = 320;
dspAlgPrm.osdChCreateParams[0].maxHeight = 192;
chWinPrm->chId = 0;
chWinPrm->numWindows = 0;
/* display link params */
MULTICH_INIT_STRUCT(DisplayLink_CreateParams, displayPrm);
//displayPrm.inQueParams[0].prevLinkId = dupId[DIS_DUP_IDX];
displayPrm.inQueParams[0].prevLinkId = dspAlgId;
displayPrm.inQueParams[0].prevLinkQueId = 0;
displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;
displayPrm.displayId = DISPLAY_LINK_DISPLAY_SC2;
#else
/* Display dup link params */
dupPrm[DIS_DUP_IDX].inQueParams.prevLinkId = gVsysModuleContext.swOsdId;
dupPrm[DIS_DUP_IDX].inQueParams.prevLinkQueId = 0;
dupPrm[DIS_DUP_IDX].numOutQue = 2;//
dupPrm[DIS_DUP_IDX].outQueParams[0].nextLink = ipcOutVpssId;
dupPrm[DIS_DUP_IDX].outQueParams[1].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
//dupPrm[DIS_DUP_IDX].outQueParams[2].nextLink = dspAlgId;
dupPrm[DIS_DUP_IDX].notifyNextLink = TRUE;//FALSE
/* display link params */
MULTICH_INIT_STRUCT(DisplayLink_CreateParams, displayPrm);
displayPrm.inQueParams[0].prevLinkId = dupId[DIS_DUP_IDX];
// displayPrm.inQueParams[0].prevLinkId = dspAlgId;
displayPrm.inQueParams[0].prevLinkQueId = 1;
displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;
displayPrm.displayId = DISPLAY_LINK_DISPLAY_SC2;
#endif
/////////////////////////////////////////////////////////////////////////////
/* Scaler Link Params */
SclrLink_CreateParams_Init(&sclrPrm);
sclrPrm.inQueParams.prevLinkId = dupId[SCALER_DUP_IDX];
sclrPrm.inQueParams.prevLinkQueId = 1;
if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
sclrPrm.outQueParams.nextLink = dupId[VA_DUP_IDX];
else
sclrPrm.outQueParams.nextLink = gVsysModuleContext.fdId;
sclrPrm.tilerEnable = FALSE;
sclrPrm.enableLineSkipSc = FALSE;
sclrPrm.inputFrameRate = 30;
sclrPrm.outputFrameRate = 30;
sclrPrm.scaleMode = DEI_SCALE_MODE_ABSOLUTE;
sclrPrm.scaleMode = DEI_SCALE_MODE_ABSOLUTE;
sclrPrm.outScaleFactor.absoluteResolution.outWidth = 320;
sclrPrm.outScaleFactor.absoluteResolution.outHeight = 192;
sclrPrm.outDataFormat = VF_YUV420SP_UV;
sclrPrm.pathId = SCLR_LINK_SEC0_SC3;
if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
{
///////////////////////////////////////my link////////////////////////////////////////
//#if ADD_MY_ALG
#if 0
dupPrm[VA_DUP_IDX].inQueParams.prevLinkId = gVcamModuleContext.sclrId[0];
dupPrm[VA_DUP_IDX].inQueParams.prevLinkQueId = 0;
dupPrm[VA_DUP_IDX].numOutQue = 3;
dupPrm[VA_DUP_IDX].outQueParams[0].nextLink = gVsysModuleContext.fdId;
#ifdef VA_ON_DSP
dupPrm[VA_DUP_IDX].outQueParams[1].nextLink = ipcFramesOutVpssId;
#else
dupPrm[VA_DUP_IDX].outQueParams[1].nextLink = gVsysModuleContext.vaId;
#endif
dupPrm[VA_DUP_IDX].outQueParams[2].nextLink = alg_ipcFramesOutVpssId;
dupPrm[VA_DUP_IDX].notifyNextLink = TRUE;
/* IPC Frames Out VPSS for VA link params */
alg_ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = dupId[VA_DUP_IDX];
alg_ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 2;
alg_ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
alg_ipcFramesOutVpssPrm.baseCreateParams.inputFrameRate = 30;
alg_ipcFramesOutVpssPrm.baseCreateParams.outputFrameRate = 30;
alg_ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 1;
alg_ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = alg_ipcFramesInDspId;
alg_ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;
alg_ipcFramesOutVpssPrm.baseCreateParams.processLink = SYSTEM_LINK_ID_INVALID;
alg_ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = FALSE;
alg_ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;
/* IPC Frames in DSP for VA link params */
alg_ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = alg_ipcFramesOutVpssId;
alg_ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
alg_ipcFramesInDspPrm.baseCreateParams.numOutQue = 1;
alg_ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = dspAlgId;
//alg_ipcFramesInDspPrm.baseCreateParams.outQueParams[1].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
alg_ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
alg_ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;
alg_ipcFramesInDspPrm.baseCreateParams.noNotifyMode = FALSE;
AlgLink_CreateParams_Init(&dspAlgPrm);
dspAlgPrm.enableOSDAlg = TRUE;
dspAlgPrm.enableSCDAlg = FALSE;
// dspAlgPrm.inQueParams.prevLinkId = ipcFramesInDspId;
dspAlgPrm.inQueParams.prevLinkId = alg_ipcFramesInDspId;
dspAlgPrm.inQueParams.prevLinkQueId = 0;
//dspAlgPrm.outQueParams[0].nextLink = ipcFramesOutDspId;
//dspAlgPrm.outQueParams.nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];;
dspAlgPrm.outQueParams.nextLink = SYSTEM_LINK_ID_INVALID;
AlgLink_OsdChWinParams * chWinPrm = &dspAlgPrm.osdChCreateParams[0].chDefaultParams;
/* set osd window max width and height */
dspAlgPrm.osdChCreateParams[0].maxWidth = 320;
dspAlgPrm.osdChCreateParams[0].maxHeight = 192;
chWinPrm->chId = 0;
chWinPrm->numWindows = 0;
/* display link params */
// MULTICH_INIT_STRUCT(DisplayLink_CreateParams, displayPrm);
//displayPrm.inQueParams[0].prevLinkId = alg_ipcFramesInDspId;
// displayPrm.inQueParams[0].prevLinkId = dupId[DIS_DUP_IDX];
// displayPrm.inQueParams[0].prevLinkQueId = 1;
// displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;
// displayPrm.displayId = DISPLAY_LINK_DISPLAY_SC2;
// displayPrm.displayId = DISPLAY_LINK_DISPLAY_AUTO_SELECT;
#else
dupPrm[VA_DUP_IDX].inQueParams.prevLinkId = gVcamModuleContext.sclrId[0];
dupPrm[VA_DUP_IDX].inQueParams.prevLinkQueId = 0;
dupPrm[VA_DUP_IDX].numOutQue =2;
dupPrm[VA_DUP_IDX].outQueParams[0].nextLink = gVsysModuleContext.fdId;
#ifdef VA_ON_DSP
dupPrm[VA_DUP_IDX].outQueParams[1].nextLink = ipcFramesOutVpssId;
#else
dupPrm[VA_DUP_IDX].outQueParams[1].nextLink = gVsysModuleContext.vaId;
#endif
dupPrm[VA_DUP_IDX].notifyNextLink = TRUE;
#endif
/////////////////////////////////////////////////////////////////////////////
#ifdef VA_ON_DSP
/* IPC Frames Out VPSS for VA link params */
ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = dupId[VA_DUP_IDX];
ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 1;
ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
ipcFramesOutVpssPrm.baseCreateParams.inputFrameRate = 30;
ipcFramesOutVpssPrm.baseCreateParams.outputFrameRate = 30;
ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 1;
ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = ipcFramesInDspId;
ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;
ipcFramesOutVpssPrm.baseCreateParams.processLink = SYSTEM_LINK_ID_INVALID;
ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = FALSE;
ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;
/* IPC Frames in DSP for VA link params */
ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = ipcFramesOutVpssId;
ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcFramesInDspPrm.baseCreateParams.numOutQue = 1;
ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = gVsysModuleContext.vaId;
ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;
ipcFramesInDspPrm.baseCreateParams.noNotifyMode = FALSE;
/* VA link params */
VaLink_CreateParams_Init(&vaPrm);
vaPrm.inQueParams.prevLinkId = ipcFramesInDspId;
vaPrm.inQueParams.prevLinkQueId = 0;
vaPrm.encLinkId = gVencModuleContext.encId;
vaPrm.swosdLinkId = gVsysModuleContext.swOsdId;
vaPrm.cameraLinkId = gVcamModuleContext.cameraId;
vaPrm.vaFrameRate = 20;
#else
/* VA link params */
VaLink_CreateParams_Init(&vaPrm);
vaPrm.inQueParams.prevLinkId = dupId[VA_DUP_IDX];
vaPrm.inQueParams.prevLinkQueId = 1;
vaPrm.encLinkId = gVencModuleContext.encId;
vaPrm.swosdLinkId = gVsysModuleContext.swOsdId;
vaPrm.cameraLinkId = gVcamModuleContext.cameraId;
vaPrm.vaFrameRate = 15;
#endif
}
/* FD Link Params */
if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
fdPrm.inQueParams.prevLinkId = dupId[VA_DUP_IDX];
else
fdPrm.inQueParams.prevLinkId = gVcamModuleContext.sclrId[0];
fdPrm.inQueParams.prevLinkQueId = 0;
fdPrm.swOsdId = gVsysModuleContext.swOsdId; // SW OSD link ID
// used for frame
// sync
/* IPC Out VPSS link params */
ipcOutVpssPrm.inQueParams.prevLinkId = dupId[DIS_DUP_IDX];
ipcOutVpssPrm.inQueParams.prevLinkQueId = 0;
ipcOutVpssPrm.numOutQue = 1;
ipcOutVpssPrm.outQueParams[0].nextLink = ipcInVideoId;
ipcOutVpssPrm.notifyNextLink = TRUE;
ipcOutVpssPrm.notifyPrevLink = TRUE;
ipcOutVpssPrm.noNotifyMode = FALSE;
/* IPC In VIDEO params */
ipcInVideoPrm.inQueParams.prevLinkId = ipcOutVpssId;
ipcInVideoPrm.inQueParams.prevLinkQueId = 0;
ipcInVideoPrm.numOutQue = 1;
ipcInVideoPrm.outQueParams[0].nextLink = gVencModuleContext.encId;
ipcInVideoPrm.notifyNextLink = TRUE;
ipcInVideoPrm.notifyPrevLink = TRUE;
ipcInVideoPrm.noNotifyMode = FALSE;
/* Video Encoder Link params */
MULTICH_INIT_STRUCT(EncLink_CreateParams, encPrm);
{
EncLink_ChCreateParams *pLinkChPrm;
EncLink_ChDynamicParams *pLinkDynPrm;
VENC_CHN_DYNAMIC_PARAM_S *pDynPrm;
VENC_CHN_PARAMS_S *pChPrm;
for (i = 0; i < VENC_PRIMARY_CHANNELS; i++)
{
pLinkChPrm = &encPrm.chCreateParams[i];
pLinkDynPrm = &pLinkChPrm->defaultDynamicParams;
pChPrm = &gVencModuleContext.vencConfig.encChannelParams[i];
pDynPrm = &pChPrm->dynamicParam;
switch(gUI_mcfw_config.demoCfg.codec_combo)
{
case 0:
pLinkChPrm->format = IVIDEO_H264HP;
break; //"SINGLE_H264"
case 1:
pLinkChPrm->format = IVIDEO_MPEG4SP;
break; //"SINGLE_MPEG4"
case 2:
pLinkChPrm->format = IVIDEO_MJPEG;
break; //"SINGLE_JPEG"
case 3:
pLinkChPrm->format = (i == 0) ? IVIDEO_H264HP : IVIDEO_MJPEG;
break; //"H264_JPEG"
case 4:
pLinkChPrm->format = (i == 0) ? IVIDEO_MPEG4SP : IVIDEO_MJPEG;
break; //"MPEG4_JPEG"
case 5:
pLinkChPrm->format = (i == 0) ? IVIDEO_H264HP : IVIDEO_H264HP;
break; //"DUAL_H264"
case 6:
pLinkChPrm->format = (i == 0) ? IVIDEO_MPEG4SP : IVIDEO_MPEG4SP;
break; //"DUAL_MPEG4"
case 7:
pLinkChPrm->format = (i == 0) ? IVIDEO_H264HP : IVIDEO_MPEG4SP;
break; //"H264_MPEG4"
case 8:
pLinkChPrm->format = (i == 0) ? IVIDEO_H264HP : IVIDEO_H264HP;
break; //"TRIPLE_H264"
case 9:
pLinkChPrm->format = (i == 0) ? IVIDEO_MPEG4SP : IVIDEO_MPEG4SP;
break; //"TRIPLE_MPEG4"
default:
pLinkChPrm->format = IVIDEO_H264HP;
}
pLinkChPrm->profile = gVencModuleContext.vencConfig.h264Profile[i];
pLinkChPrm->dataLayout = IVIDEO_PROGRESSIVE;
pLinkChPrm->fieldMergeEncodeEnable = FALSE;
pLinkChPrm->enableAnalyticinfo = pChPrm->enableAnalyticinfo;
pLinkChPrm->maxBitRate = pChPrm->maxBitRate;
pLinkChPrm->encodingPreset = pChPrm->encodingPreset;
pLinkChPrm->rateControlPreset = IVIDEO_USER_DEFINED; //pChPrm->rcType;
pLinkChPrm->enableHighSpeed = FALSE;
pLinkChPrm->enableWaterMarking = pChPrm->enableWaterMarking;
pLinkChPrm->StreamPreset = gUI_mcfw_config.StreamPreset[i];
pLinkDynPrm->intraFrameInterval = pDynPrm->intraFrameInterval;
pLinkDynPrm->targetBitRate = pDynPrm->targetBitRate;
pLinkDynPrm->interFrameInterval = 1;
pLinkDynPrm->mvAccuracy = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
pLinkDynPrm->inputFrameRate = pDynPrm->inputFrameRate;
pLinkDynPrm->rcAlg = pDynPrm->rcAlg;
pLinkDynPrm->qpMin = pDynPrm->qpMin;
pLinkDynPrm->qpMax = pDynPrm->qpMax;
pLinkDynPrm->qpInit = pDynPrm->qpInit;
pLinkDynPrm->vbrDuration = pDynPrm->vbrDuration;
pLinkDynPrm->vbrSensitivity = pDynPrm->vbrSensitivity;
encPrm.numBufPerCh[i] = 4;
gVencModuleContext.encFormat[i] = pLinkChPrm->format;
}
}
/* Video Encoder Framerate */
#ifdef IMGS_OMNIVISION_OV10630
encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 30; // ENC_LINK_DEFAULT_ALGPARAMS_INPUTFRAMERATE;
#elif defined IMGS_SONY_IMX104
encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 30; // ENC_LINK_DEFAULT_ALGPARAMS_INPUTFRAMERATE;
#elif defined IMGS_MICRON_MT9M034
encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 30; //
#else
encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 60; // ENC_LINK_DEFAULT_ALGPARAMS_INPUTFRAMERATE;
#endif
encPrm.chCreateParams[1].defaultDynamicParams.inputFrameRate = 30; // ENC_LINK_DEFAULT_ALGPARAMS_INPUTFRAMERATE;
encPrm.vsEnable = gUI_mcfw_config.vsEnable;
if(gUI_mcfw_config.vaUseCase == TRUE)
{
encPrm.isVaUseCase = 1;
}
else
{
encPrm.isVaUseCase = 0;
}
for (i = VENC_PRIMARY_CHANNELS; i < (VENC_CHN_MAX - 1); i++)
{
encPrm.chCreateParams[i].format = IVIDEO_MJPEG;
encPrm.chCreateParams[i].profile = 0;
encPrm.chCreateParams[i].dataLayout = IVIDEO_PROGRESSIVE;
encPrm.chCreateParams[i].fieldMergeEncodeEnable = FALSE;
encPrm.chCreateParams[i].defaultDynamicParams.intraFrameInterval = 0;
encPrm.chCreateParams[i].encodingPreset = 0;
encPrm.chCreateParams[i].enableAnalyticinfo = 0;
encPrm.chCreateParams[i].enableWaterMarking = 0;
encPrm.chCreateParams[i].defaultDynamicParams.inputFrameRate = 60;
encPrm.chCreateParams[i].rateControlPreset = 0;
encPrm.chCreateParams[i].defaultDynamicParams.targetBitRate =
100 * 1000;
encPrm.chCreateParams[i].defaultDynamicParams.interFrameInterval = 0;
encPrm.chCreateParams[i].defaultDynamicParams.mvAccuracy = 0;
}
encPrm.inQueParams.prevLinkId = ipcInVideoId;
encPrm.inQueParams.prevLinkQueId = 0;
encPrm.outQueParams.nextLink = gVencModuleContext.ipcBitsOutRTOSId;
/* IPC Bits Out VIDEO Link params */
ipcBitsOutVideoPrm.baseCreateParams.inQueParams.prevLinkId =
gVencModuleContext.encId;
ipcBitsOutVideoPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcBitsOutVideoPrm.baseCreateParams.numOutQue = 1;
ipcBitsOutVideoPrm.baseCreateParams.outQueParams[0].nextLink =
gVencModuleContext.ipcBitsInHLOSId;
MultiCh_ipcBitsInitCreateParams_BitsOutRTOS(&ipcBitsOutVideoPrm, TRUE);
/* IPC Bits In HOST Link params */
ipcBitsInHostPrm0.baseCreateParams.inQueParams.prevLinkId =
gVencModuleContext.ipcBitsOutRTOSId;
ipcBitsInHostPrm0.baseCreateParams.inQueParams.prevLinkQueId = 0;
MultiCh_ipcBitsInitCreateParams_BitsInHLOS(&ipcBitsInHostPrm0);
/* Links Creation */
/* Camera Link */
System_linkCreate(gVcamModuleContext.cameraId, &cameraPrm,
sizeof(cameraPrm));
System_linkControl(gVcamModuleContext.cameraId,
CAMERA_LINK_CMD_DETECT_VIDEO, NULL, 0, TRUE);
if(gUI_mcfw_config.glbceEnable)
{
#ifndef WDR_ON
System_linkCreate(glbceSupportId, &glbceSupportPrm, sizeof(glbceSupportPrm));
#else
System_linkCreate(wdrSupportId, &wdrSupportPrm, sizeof(wdrSupportPrm));
#endif
/* glbce link create */
#ifdef YUV_M2M_DRV_TEST
#else
#ifndef WDR_ON
System_linkCreate(glbceId, &glbcePrm, sizeof(glbcePrm));
#else
System_linkCreate(wdrId, &wdrPrm, sizeof(wdrPrm));
#endif
#endif
/* cam pp link create */
System_linkCreate(ispId, &ispPrm, sizeof(ispPrm));
gIsGlbceInitDone = 1;
}
else
{
gIsGlbceInitDone = 0;
}
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
/* NSF Link */
System_linkCreate(gVcamModuleContext.nsfId, &nsfPrm, sizeof(nsfPrm));
else
/* Vnf Link */
System_linkCreate(gVcamModuleContext.vnfId, &vnfPrm, sizeof(vnfPrm));
/* Dup link */
System_linkCreate(dupId[MJPEG_DUP_LINK_IDX], &dupPrm[MJPEG_DUP_LINK_IDX],
sizeof(dupPrm[MJPEG_DUP_LINK_IDX]));
/* Dup Link for Scaler */
System_linkCreate(dupId[SCALER_DUP_IDX], &dupPrm[SCALER_DUP_IDX],
sizeof(dupPrm[SCALER_DUP_IDX]));
/* Merge Link */
System_linkCreate(mergeId[CAM_STREAM_MERGE_IDX],
&mergePrm[CAM_STREAM_MERGE_IDX],
sizeof(mergePrm[CAM_STREAM_MERGE_IDX]));
/* SWOSD Link */
System_linkCreate(gVsysModuleContext.swOsdId, &swosdPrm, sizeof(swosdPrm));
/* Dup link for display */
System_linkCreate(dupId[DIS_DUP_IDX], &dupPrm[DIS_DUP_IDX],
sizeof(dupPrm[DIS_DUP_IDX]));
/* Scaler Link */
System_linkCreate(gVcamModuleContext.sclrId[0], &sclrPrm, sizeof(sclrPrm));
if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
{
/* Dup link for VA */
System_linkCreate(dupId[VA_DUP_IDX], &dupPrm[VA_DUP_IDX], sizeof(dupPrm[VA_DUP_IDX]));
#ifdef VA_ON_DSP
/* IPC Frames links */
System_linkCreate(ipcFramesOutVpssId, &ipcFramesOutVpssPrm, sizeof(ipcFramesOutVpssPrm));
System_linkCreate(ipcFramesInDspId, &ipcFramesInDspPrm, sizeof(ipcFramesInDspPrm));
#endif
/* VA link */
System_linkCreate(gVsysModuleContext.vaId, &vaPrm, sizeof(vaPrm));
}
///////////////////////////////////////////////////////////////////////
#if ADD_MY_ALG
System_linkCreate(alg_ipcFramesOutVpssId, &alg_ipcFramesOutVpssPrm, sizeof(alg_ipcFramesOutVpssPrm));
System_linkCreate(alg_ipcFramesInDspId, &alg_ipcFramesInDspPrm, sizeof(alg_ipcFramesInDspPrm));
System_linkCreate(dspAlgId, &dspAlgPrm, sizeof(dspAlgPrm));
#endif
//////////////////////////////////////////////////////////////////////
/* FD Link */
System_linkCreate(gVsysModuleContext.fdId, &fdPrm, sizeof(fdPrm));
/* IPC Links */
System_linkCreate(ipcOutVpssId, &ipcOutVpssPrm, sizeof(ipcOutVpssPrm));
System_linkCreate(ipcInVideoId, &ipcInVideoPrm, sizeof(ipcInVideoPrm));
/* Video Encoder Link */
System_linkCreate(gVencModuleContext.encId, &encPrm, sizeof(encPrm));
/* VSTAB link */
System_linkCreate(vstabId, &vstabPrm, sizeof(vstabPrm));
/* IPC Bits Links */
System_linkCreate(gVencModuleContext.ipcBitsOutRTOSId, &ipcBitsOutVideoPrm,
sizeof(ipcBitsOutVideoPrm));
System_linkCreate(gVencModuleContext.ipcBitsInHLOSId, &ipcBitsInHostPrm0,
sizeof(ipcBitsInHostPrm0));
/* display link */
System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_HDMI], &displayPrm,
sizeof(displayPrm));
System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_SD], &displayPrm_SD,
sizeof(displayPrm_SD));
OSA_printf("USECASE SETUP DONE\n");
}
/* ===================================================================
* @func MultiCh_deleteTriStreamFullFtr
*
* @desc Function does the following
*
* @modif This function modifies the following structures
*
* @inputs This function takes the following inputs
* <argument name>
* Description of usage
* <argument name>
* Description of usage
*
* @outputs <argument name>
* Description of usage
*
* @return Return value of this function if any
* ==================================================================
*/
Void MultiCh_deleteTriStreamFullFtr()
{
UInt32 ispId;
UInt32 glbceId;
UInt32 mergeId[NUM_MERGE_LINK];
UInt32 ipcOutVpssId;
UInt32 ipcInVideoId;
UInt32 ipcFramesOutVpssId;
UInt32 ipcFramesInDspId;
UInt32 dupId[NUM_DUP_LINK];
UInt32 vstabId;
UInt32 glbceSupportId;
#ifdef WDR_ON
UInt32 wdrId;
UInt32 wdrSupportId;
#endif
////////////////////////////////////////////////
#if ADD_MY_ALG
UInt32 dspAlgId;
UInt32 alg_ipcFramesOutVpssId;
UInt32 alg_ipcFramesInDspId;
#endif
///////////////////////////////////////////////
mergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
dupId[DIS_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_0;
dupId[MJPEG_DUP_LINK_IDX] = SYSTEM_VPSS_LINK_ID_DUP_1;
dupId[SCALER_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_2;
dupId[VA_DUP_IDX] = SYSTEM_VPSS_LINK_ID_DUP_3;
gVcamModuleContext.sclrId[0] = SYSTEM_LINK_ID_SCLR_INST_0;
gVsysModuleContext.fdId = SYSTEM_LINK_ID_FD;
gVsysModuleContext.swOsdId = SYSTEM_LINK_ID_SWOSD_0;
ipcOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0;
ipcInVideoId = SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0;
ipcFramesOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;
ipcFramesInDspId = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;
ispId = SYSTEM_LINK_ID_ISP_0;
glbceId = SYSTEM_LINK_ID_GLBCE;
vstabId = SYSTEM_LINK_ID_VSTAB_0;
glbceSupportId = SYSTEM_LINK_ID_GLBCE_SUPPORT_0;
#ifdef WDR_ON
wdrId = SYSTEM_LINK_ID_WDR;
wdrSupportId = SYSTEM_LINK_ID_WDR_SUPPORT;
#endif
////////////////////my link/////////////////////////////////////////////////
#if ADD_MY_ALG
dspAlgId = SYSTEM_LINK_ID_ALG_0;
alg_ipcFramesOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_1;
alg_ipcFramesInDspId = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_1;
#endif
///////////////////////////////////////////////////////////////////////
/* Links Deletion in reverse order from sink to source */
/* display link */
System_linkDelete(gVdisModuleContext.displayId[VDIS_DEV_HDMI]);
System_linkDelete(gVdisModuleContext.displayId[VDIS_DEV_SD]);
/* IPC Bits Links */
System_linkDelete(gVencModuleContext.ipcBitsOutRTOSId);
System_linkDelete(gVencModuleContext.ipcBitsInHLOSId);
/* VSTAB Link */
System_linkDelete(vstabId);
/* Video Encoder Link */
System_linkDelete(gVencModuleContext.encId);
/* IPC Links */
System_linkDelete(ipcOutVpssId);
System_linkDelete(ipcInVideoId);
/* FD Link */
System_linkDelete(gVsysModuleContext.fdId);
if(Vsys_getSystemUseCase() == VSYS_USECASE_TRISTREAM_SMARTANALYTICS)
{
/* VA link */
System_linkDelete(gVsysModuleContext.vaId);
#ifdef VA_ON_DSP
/* IPC Frames Links */
System_linkDelete(ipcFramesOutVpssId);
System_linkDelete(ipcFramesInDspId);
#endif
/* Dup for VA link */
System_linkDelete(dupId[VA_DUP_IDX]);
}
////////////////////my link/////////////////////////////////////////////////
#if ADD_MY_ALG
System_linkDelete(alg_ipcFramesOutVpssId);
System_linkDelete(alg_ipcFramesInDspId);
System_linkDelete(dspAlgId);
#endif
///////////////////////////////////////////////////////////////////////
/* Scaler Link */
System_linkDelete(gVcamModuleContext.sclrId[0]);
/* dup link for display */
System_linkDelete(dupId[DIS_DUP_IDX]);
/* SWOSD Link */
System_linkDelete(gVsysModuleContext.swOsdId);
/* Merge Link */
System_linkDelete(mergeId[CAM_STREAM_MERGE_IDX]);
/* Dup link for Scaler */
System_linkDelete(dupId[SCALER_DUP_IDX]);
/* Dup Link */
System_linkDelete(dupId[MJPEG_DUP_LINK_IDX]);
if (gUI_mcfw_config.noisefilterMode == DSS_VNF_ON)
/* NSF Link */
System_linkDelete(gVcamModuleContext.nsfId);
else
/* VNF Link */
System_linkDelete(gVcamModuleContext.vnfId);
if(gIsGlbceInitDone)
{
System_linkDelete(ispId);
#ifdef YUV_M2M_DRV_TEST
#else
#ifndef WDR_ON
System_linkDelete(glbceId);
System_linkDelete(glbceSupportId);
#else
System_linkDelete(wdrId);
System_linkDelete(wdrSupportId);
#endif
#endif
gIsGlbceInitDone = 0;
}
/* Camera Link */
System_linkDelete(gVcamModuleContext.cameraId);
/* Print the HWI, SWI and all tasks load */
/* Reset the accumulated timer ticks */
MultiCh_prfLoadCalcEnable(FALSE, TRUE, FALSE);
OSA_printf("USECASE TEARDOWN DONE\n");
}
//////////////////////////
日志如下:
********** SMART ANALYTICS USECASE ********
[host] ********* Entered Smart Analytics usecase - H264 1080p @60fps + H264 D1 @30fps + MJPEG 1080p @5fps ********
[host] 133: MCFW : CPU Revision [ES2.1] !!!
[host] 134: MCFW : Detected [UNKNOWN] Board !!!
[host] 134: MCFW : Base Board Revision [REV A] !!!
[m3vpss ] VPS_DCTRL_INST_0
[m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_OUTPUT SYSTEM_DC_VENC_DVO2
[m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_OUTPUT SYSTEM_DC_VENC_HDMI
[m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_OUTPUT SYSTEM_DC_VENC_SD
[m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_CLK_SRC VPS_DC_VENC_HDMI | VPS_DC_VENC_DVO2
[m3vpss ] 11795: CAMERA: Create in progress !!!
[m3vpss ] 11795: CAMERA: VIP0 PortA camera mode is [ 8-bit, Non-mux Embedded Sync] !!!
[m3vpss ] 11806: CAMERA: VIP 0: VID DEC 268436736 (0x36): bebebebe:bebebebe:8ebd60d8, AUD_STATUS -1094795586
[m3vpss ] Stream ID 0: chId = 0 VpsUtils_queCreate.
[m3vpss ] Stream ID 1: chId = 0 VpsUtils_queCreate.
[m3vpss ] 12014: CAMERA: Create Done !!!
[m3vpss ] 12102: CAMERA: Detect video in progress !!!
[m3vpss ] 12102: CAMERA: Detect video Done !!!
[m3vpss ] 12102: VNF:
[m3vpss ] Create in progress ... !!!
[m3vpss ] 12103: VNF:
[m3vpss ] Input Channel CH0 of 1952 x 1112, pitch = (1984, 1984) [0,0][PROGRESSIVE] [7] ...
[m3vpss ] 12354: VNF:
[m3vpss ] Create ... DONE !!!
[m3vpss ] 12451: DUP : Create Done !!!
[m3vpss ] 12456: DUP : Create Done !!!
[m3vpss ] 12458: MERGE : Create Done !!!
[m3vpss ] DCC server task running
[m3vpss ] {SWOSD} edma3Handle->tccVal = 36
[m3vpss ] {SWOSD} edma3Handle->chId = 36
[m3vpss ] {SWOSD} edma3Handle->tccVal = 37
[m3vpss ] {SWOSD} edma3Handle->chId = 37
[m3vpss ] {SWOSD} edma3Handle->tccVal = 38
[m3vpss ] {SWOSD} edma3Handle->chId = 38
[m3vpss ] 12432: SWOSD : Create Done !!!
[m3vpss ] 12528: DUP : Create Done !!!
[m3vpss ] 12529: SCLR: Create in progress !!!
[m3vpss ] 12534: SCLR : Loading Up-scaling Co-effs ...
[m3vpss ] 12534: SCLR : Co-effs Loading ... DONE !!!
[c6xdsp ] 12363: IPC_FRAMES_IN : Create in progress !!!
[c6xdsp ] 12363: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_23] ...
[m3vpss ] SCLR:HEAPID:0 USED:64
[c6xdsp ] 12363: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_23] ...
[m3vpss ] SCLR:HEAPID:1 USED:5952
[c6xdsp ] 12364: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
[m3vpss ] 12535: SCLR: Create Done !!!
[m3vpss ] 12540: DUP : Create Done !!!
[m3vpss ] 12541: IPC_FRAMES_OUT : Create in progress !!!
queue id:0
[m3vpss ] 12544: IPC_FRAMES_OUT : Create Done !!!
[c6xdsp ] IPC_FRAMES_IN:HEAPID:0 USED:304
[m3vpss ] 12554: IPC_FRAMES_OUT : Create in progress !!!
[c6xdsp ] 12366: IPC_FRAMES_IN : Create Done !!!
[c6xdsp ] 12370: VA : Create Done !!!
[c6xdsp ] -----------------dsp---82--------------------------------------------------------------
[m3vpss ] 12557: IPC_FRAMES_OUT : Create Done !!!
[c6xdsp ] -----------------dsp---82--------------------------------------------------------------
[c6xdsp ] -----------------dsp---82--------------------------------------------------------------
[m3video] 12583: IPC_IN_M3 : Create in progress !!!
[m3vpss ] 12489: FD : Alg Create Done !!!
[m3video] 12583: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_0] ...
[m3vpss ] 12489: FD : Create Done !!!
[c6xdsp ] 12371: VA : ALG Init Done !!!
[m3video] 12583: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_0] ...
[m3vpss ] 12581: IPC_OUT_M3 : Create in progress !!!
[c6xdsp ] DMVAL:
[c6xdsp ] > DMVAL: 9172967 bytes required for DMVAL instance.
[c6xdsp ] DMVAL:
[c6xdsp ] > DMVAL: 4128 bytes required for DMVAL output.
[m3video] 12587: IPC_IN_M3 : Create Done !!!
[m3vpss ] 12582: IPC_OUT_M3 : Create Done !!!
[c6xdsp ] 12375: IPC_FRAMES_IN : Create in progress !!!
[m3video] 12587: ENCODE: Create in progress ... !!!
[c6xdsp ] 12376: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_24] ...
[c6xdsp ] 12376: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_24] ...
[c6xdsp ] IPC_FRAMES_IN:HEAPID:0 USED:304
[c6xdsp ] 12379: IPC_FRAMES_IN : Create Done !!!
[c6xdsp ] 12379: ALG : Create in progress !!!
[c6xdsp ] ALGLINK:HEAPID:0 USED:2616
[c6xdsp ] ALGLINK:HEAPID:1 USED:6024
[c6xdsp ] 12392: ALG : Create Done !!!
[c6xdsp ] 12433: VA : MEMALLOC 9172967 bytes for DMVAL memory at addr 0x89081000!!!
[c6xdsp ] DMVAL:
[c6xdsp ] > DMVAL: Library framework initialized for the 1st time.
[c6xdsp ] DMVAL:
[c6xdsp ] > DMVAL: Assigned memory to Camera Tamper Detection application.
[c6xdsp ] DMVAL:
[c6xdsp ] > DMVAL: Completed memory assignments to library applications.
[c6xdsp ] DMVAL:
[c6xdsp ] > DMVAL: Library framework reset.
[c6xdsp ] DMVAL:
[c6xdsp ] > DMVAL: Initialized library applications.
[c6xdsp ] 12446: VA : ALG Create Done !!!
[c6xdsp ] -----------------dsp---85--------------------------------------------------------------
[c6xdsp ] -----------------dsp---85--------------------------------------------------------------
[c6xdsp ] -----------------dsp---85--------------------------------------------------------------
[m3video] 12651: ENCODE: Creating CH0 of 1920 x 1080, pitch = (1952, 1952) [PROGRESSIVE] [NON-TILED ], bitrate = 8000 Kbps ...
[m3video] ENCLINK_H264:HEAPID:0 USED:13808
[m3video] 12757: ENCODE: Creating CH1 of 720 x 480, pitch = (720, 720) [PROGRESSIVE] [NON-TILED ], bitrate = 8000 Kbps ...
[host] IpcBitsInLink_tskMain:Entered
[host] 1124: IPC_BITS_IN : Create in progress !!!
[host] 1124: IPC_BITS_IN : ListMPOpen start !!!
[host] 1124: SYSTEM: Opening ListMP [VIDEO-M3_IPC_OUT_28] ...
[host] 1126: SYSTEM: Opening ListMP [VIDEO-M3_IPC_IN_28] ...
[host] 1128: IPC_BITS_IN : ListMPOpen done !!!
[host] 1129: IPC_BITS_IN : System_linkGetInfo done !!!
[host] 1129: IPC_BITS_IN : Create Done !!!
[m3vpss ] 12879: DISPLAY: Create in progress !!!
[m3video] ENCLINK_H264:HEAPID:0 USED:11912
[m3vpss ] 12880: SYSTEM: Opening MsgQ [DSP_MSGQ] ...
[m3video] 12866: ENCODE: Creating CH2 of 1920 x 1080, pitch = (1952, 1952) [PROGRESSIVE] [NON-TILED ], bitrate = 100 Kbps ...
[m3vpss ] 12885: Assertion @ Line: 1152 in links_m3vpss/display/displayLink_drv.c: pPrm->inQueParams[pPrm->activeQueue].prevLinkQueId < pObj->inTskInfo[pPrm->activeQueue].numQue : failed !!!
[m3video] ENCLINK_JPEG:HEAPID:0 USED:4432
[m3video] 12867: ENCODE: All CH Create ... DONE !!!
[m3video] ENCLINK:HEAPID:0 USED:30472
[m3video] 12870: ENCODE: Create ... DONE !!!
[m3video] 12770: VSTAB : Alg Create Done !!!
[m3video] 12770: VSTAB : Create Done !!!
[m3video] 12871: IPC_BITS_OUT : Create in progress !!!
[m3video] 12873: IPC_BITS_OUT : Create Done !!!
ApproDrvInit: 7
queue id:131076
TimeOut occure in boot_proc.
Program exit.
TimeOut occure in boot_proc.
Program exit.