DM388: Help setting up a single stream usecase

Part Number: DM388

Hi,

I've been trying to write a single video stream usecase with the DM388.  I have a DM388 Camera Starter Kit and I've been using the IPNC RDK 3.9.1.

I've been reading the PDFs and the source code and I've managed to compile a usecase that goes from Camera -> H264ENC -> A8.   It's basically a modified version of the multich_tristream_lowpower.c usecase. 

When I build and run my usecase I can see encoder messages come up in the log and l'm able to get to the webserver but I'm not able to see video.   I can see wis-streamer running as a process, but I'm unable to read the stream data with VLC.

I can see the encoder get setup in the log:

[ 57.046928] autorun-usecase.sh[114]: ********** MyTest USECASE ********
[ 57.047624] autorun-usecase.sh[114]: [host]
[ 57.048230] autorun-usecase.sh[114]: ********* Entered H264 ********
[ 57.048953] autorun-usecase.sh[114]: [host] 68: MCFW : CPU Revision [ES1.0] !!!
[ 57.049903] autorun-usecase.sh[114]: [host] 68: MCFW : Detected [UNKNOWN] Board !!!
[ 57.050679] autorun-usecase.sh[114]: [host] 68: MCFW : Base Board Revision [UNKNOWN] !!!
[ 57.051437] autorun-usecase.sh[114]: tMP [VPSS-M3_IPC_OUT_29] in region 0 ...
[ 57.052185] autorun-usecase.sh[114]: [m3vpss ] 615: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_29] in region 0 ...
[ 57.052869] autorun-usecase.sh[114]: [m3vpss ] 616: SYSTEM: ListElem Shared Addr = 0xbe9e9980
[ 57.053477] autorun-usecase.sh[114]: [m3vpss ] 618: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_30] in region 0 ...
[ 57.054123] autorun-usecase.sh[114]: [m3vpss ] 619: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_30] in region 0 ...
[ 57.054750] autorun-usecase.sh[114]: [m3vpss ] 619: SYSTEM: ListElem Shared Addr = 0xbea03600
[ 57.055399] autorun-usecase.sh[114]: [m3vpss ] 622: SYSTEM : Device Init in progress !!!
[ 57.056025] autorun-usecase.sh[114]: [m3vpss ] Iss_init called !!!!!!
[ 57.056661] autorun-usecase.sh[114]: [m3vpss ] CPIS_init DONE !!!!!!
[ 57.057256] autorun-usecase.sh[114]: [m3vpss ] 628: SYSTEM : Device Init in progress DONE !!!
[ 57.058366] autorun-usecase.sh[114]: [m3video] 681: SYSTEM : System Video Init in progress !!!
[ 57.058985] autorun-usecase.sh[114]: [m3video] 682: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_0] in region 0 ...
[ 57.059661] autorun-usecase.sh[114]: [m3video] 682: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_0] in region 0 ...
[ 57.060350] autorun-usecase.sh[114]: [m3video] 683: SYSTEM: ListElem Shared Addr = 0xbea1d280
[ 57.061034] autorun-usecase.sh[114]: [m3video] 685: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_1] in region 0 ...
[ 57.061675] autorun-usecase.sh[114]: [m3video] 685: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_1] in region 0 ...
[ 57.062316] autorun-usecase.sh[114]: [m3video] 686: SYSTEM: ListElem Shared Addr = 0xbea20780
[ 57.062978] autorun-usecase.sh[114]: [m3video] 696: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_29] in region 0 ...
[ 57.063627] autorun-usecase.sh[114]: [m3video] 696: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_29] in region 0 ...
[ 57.064298] autorun-usecase.sh[114]: [m3video] 697: SYSTEM: ListElem Shared Addr = 0xbea23c80
[ 57.064889] autorun-usecase.sh[114]: [m3video] 699: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_30] in region 0 ...
[ 57.065719] autorun-usecase.sh[114]: [m3video] 700: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_30] in region 0 ...
[ 57.066489] autorun-usecase.sh[114]: [m3video] 700: SYSTEM: ListElem Shared Addr = 0xbea3d900
[ 57.067143] autorun-usecase.sh[114]: [m3video] 702: HDVICP: Doing PRCM for IVAHD[0] ...
[ 57.067751] autorun-usecase.sh[114]: [m3video] 702: HDVICP: PRCM for IVAHD[0] ... DONE.
[ 57.068394] autorun-usecase.sh[114]: [m3video] 703: SYSTEM : Initializing Links !!!
[ 57.402153] autorun-usecase.sh[114]: [m3video] 704: SYSTEM : FREE SPACE : System Heap = 2088976 B, Mbx = 10240 msgs)
[ 57.403060] autorun-usecase.sh[114]: [m3video] 704: SYSTEM : FREE SPACE : SR0 Heap = 15372416 B (14 MB)
[ 57.403825] autorun-usecase.sh[114]: [m3video] 704: SYSTEM : FREE SPACE : Frame Buffer = 110100352 B (104 MB)
[ 57.404510] autorun-usecase.sh[114]: [m3video] 705: SYSTEM : FREE SPACE : Bitstream Buffer = 61865856 B (58 MB)
[ 57.405227] autorun-usecase.sh[114]: [m3video] 705: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
[ 57.406125] autorun-usecase.sh[114]: [m3video] 706: SYSTEM : FREE SPACE : Tiler Buffer = 128 B (0 MB) - TILER OFF
[ 57.406912] autorun-usecase.sh[114]: [m3video] Entered the MctnfLink_init()
[ 57.407537] autorun-usecase.sh[114]: [m3video] 766: SYSTEM : Initializing Links ... DONE !!!
[ 57.408178] autorun-usecase.sh[114]: [m3video] 766: SYSTEM : System Video Init Done !!!
[ 57.408742] autorun-usecase.sh[114]: [m3vpss ] DONE ar0331_lvds/src/issdrv_ar0331Api.c:AR0331_Transplant_DRV_imgsSetRegs:704 !!!
[ 57.409366] autorun-usecase.sh[114]: [m3vpss ] 5729: SYSTEM : System VPSS Init Done !!!
[ 57.409925] autorun-usecase.sh[114]: [m3vpss ] 5729: UTILS: DMA: HWI Create for INT62 !!!
[ 57.410647] autorun-usecase.sh[114]: [m3vpss ] 5730: SYSTEM : Initializing Links !!!
[ 57.411899] autorun-usecase.sh[114]: [m3vpss ] 5730: SYSTEM : FREE SPACE : System Heap = 1684624 B, Mbx = 10240 msgs)
[ 57.412676] autorun-usecase.sh[114]: [m3vpss ] 5730: SYSTEM : FREE SPACE : SR0 Heap = 15372416 B (14 MB)
[ 57.413318] autorun-usecase.sh[114]: [m3vpss ] 5731: SYSTEM : FREE SPACE : Frame Buffer = 105790336 B (100 MB)
[ 57.413976] autorun-usecase.sh[114]: [m3vpss ] 5731: SYSTEM : FREE SPACE : Bitstream Buffer = 61865856 B (58 MB)
[ 57.414569] autorun-usecase.sh[114]: [m3vpss ] 5732: SYSTEM : FREE SPACE : Tiler Buffer = 128 B (0 MB) - TILER OFF
[ 57.415399] autorun-usecase.sh[114]: [m3vpss ] 5814: SYSTEM : Initializing Links ... DONE !!!
[ 57.416096] autorun-usecase.sh[114]: [m3vpss ] 6008: CAMERA: Create in progress !!!
[ 57.416703] autorun-usecase.sh[114]: [m3vpss ] Channel Num Stream 0 Ch 0 ChannelNum 0
[ 57.417362] autorun-usecase.sh[114]: [m3vpss ] Channel Num Stream 1 Ch 0 ChannelNum 1
[ 57.417956] autorun-usecase.sh[114]: [m3vpss ] 6008: CAMERA: VIP0 PortA camera mode is [ 8-bit, Non-mux Embedded Sync] !!!
[ 57.418696] autorun-usecase.sh[114]: [m3vpss ] 6009: CAMERA: VIP 0: VID DEC 268436737 (0x10): 8ee010e0:ffff0000:8ee0359c, AUD_STATUS -1897902040
[ 57.419556] autorun-usecase.sh[114]: [m3vpss ] Iss_captCreate:1661
[ 57.420246] autorun-usecase.sh[114]: [m3vpss ] 6196: CAMERA: Create Done !!!
[ 57.420930] autorun-usecase.sh[114]: [m3video] 6360: IPC_IN_M3 : Create in progress !!!
[ 57.421595] autorun-usecase.sh[114]: [m3vpss ] 6289: CAMERA: Detect video in progress !!!
[ 57.422197] autorun-usecase.sh[114]: [m3video] 6361: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_0] ...
[ 57.422841] autorun-usecase.sh[114]: [m3vpss ] 6289: CAMERA: Detect video Done !!!
[ 57.423419] autorun-usecase.sh[114]: [m3video] 6361: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_0] ...
[ 57.424106] autorun-usecase.sh[114]: [m3vpss ] 6358: IPC_OUT_M3 : Create in progress !!!
[ 57.424661] autorun-usecase.sh[114]: [m3vpss ] 6360: IPC_OUT_M3 : Create Done !!!
[ 57.425383] autorun-usecase.sh[114]: [m3video] 6364: IPC_IN_M3 : Create Done !!!
[ 57.426258] autorun-usecase.sh[114]: [m3vpss ] DCC server task running
[ 57.426905] autorun-usecase.sh[114]: [m3video] 6365: ENCODE: Create in progress ... !!!
[ 57.428472] autorun-usecase.sh[114]: [m3video] 6424: ENCODE: Creating CH0 of 1920 x 1080, pitch = (1984, 1984) [PROGRESSIVE] [NON-TILED ], bitrate = 8000 Kbps ...
[ 57.429329] autorun-usecase.sh[114]: [host] IpcBitsInLink_tskMain:Entered
[ 57.430110] autorun-usecase.sh[114]: [host] 506: IPC_BITS_IN : Create in progress !!!
[ 57.765791] autorun-usecase.sh[114]: [host] 506: IPC_BITS_IN : ListMPOpen start !!!
[ 57.766551] autorun-usecase.sh[114]: [host] 506: SYSTEM: Opening ListMP [VIDEO-M3_IPC_OUT_29] ...
[ 57.767201] autorun-usecase.sh[114]: [host] 507: SYSTEM: Opening ListMP [VIDEO-M3_IPC_IN_29] ...
[ 57.767964] autorun-usecase.sh[114]: [host] 507: IPC_BITS_IN : ListMPOpen done !!!
[ 57.768629] autorun-usecase.sh[114]: [host] 508: IPC_BITS_IN : System_linkGetInfo done !!!
[ 57.769241] autorun-usecase.sh[114]: [host] 508: IPC_BITS_IN : Create Done !!!
[ 57.769894] autorun-usecase.sh[114]: [host] MyTest USECASE SETUP DONE
[ 57.770586] autorun-usecase.sh[114]: [host]
[ 57.771266] autorun-usecase.sh[114]: Application Run Completed
[ 57.771918] autorun-usecase.sh[114]: [host] ITT server task running !!!
[ 57.772577] autorun-usecase.sh[114]: [host]
[ 57.773504] autorun-usecase.sh[114]: ITT ittServer_run
[ 57.774194] autorun-usecase.sh[114]: [host] ITT Server Message initialization successful
[ 57.774822] autorun-usecase.sh[114]: [host]
[ 57.775448] autorun-usecase.sh[114]: ITT capture task created
[ 57.776045] autorun-usecase.sh[114]: [host] DCC server Message ques is open succefully
[ 57.776662] autorun-usecase.sh[114]: [host] Setting cmd <1> in message <b54a1c00>
[ 57.777227] autorun-usecase.sh[114]: [host] Posting message <b54a1c00> in QId <10002>
[ 57.777919] autorun-usecase.sh[114]: [host] Response from M3 is : 1
[ 57.778543] autorun-usecase.sh[114]: [host] Response from M3 is : 1
[ 57.779131] autorun-usecase.sh[114]: [host] Default parameters were sent sucessfully
[ 57.779773] autorun-usecase.sh[114]: [host] Server Socket created with ID <22

But I get a TimeOut and some errors right after that.

[ 57.781237] autorun-usecase.sh[114]: queue id:0
[ 57.782195] autorun-usecase.sh[114]: ApproDrvInit: 3
[ 57.782995] autorun-usecase.sh[114]: queue id:163845
[ 57.783822] autorun-usecase.sh[114]: queue id:0
[ 57.784523] autorun-usecase.sh[114]: queue id:32769
[ 57.785240] autorun-usecase.sh[114]: queue id:0
[ 57.785996] autorun-usecase.sh[114]: TimeOut occure in boot_proc.
[ 57.786619] autorun-usecase.sh[114]: Program exit.
[ 57.787391] autorun-usecase.sh[114]: TimeOut occure in boot_proc.
[ 57.788141] autorun-usecase.sh[114]: Program exit.
[ 57.788997] autorun-usecase.sh[114]: [host]
[ 57.789680] autorun-usecase.sh[114]: Usecase is Active !!!
[ 86.513782] autorun-usecase.sh[114]: [host]
[ 86.514680] autorun-usecase.sh[114]: Usecase is Active !!!
[ 92.570697] autorun-usecase.sh[114]: ApproDrvExit: 7
[ 92.571533] autorun-usecase.sh[114]: Error: WaitStreamReady Fail.
[ 92.578402] autorun-usecase.sh[114]: Error: SemWait: Invalid Semaphore handler
[ 92.580623] autorun-usecase.sh[114]: [host]
[ 92.582310] autorun-usecase.sh[114]: Force IDR on Channel: 0
[ 92.584590] autorun-usecase.sh[114]: [host]
[ 92.585593] autorun-usecase.sh[114]: Force IDR on Channel: 1Error: SemRelease: Invalid Semaphore handle

I've seen a post that suggests the WaitStreamReady fail could be the sensor, ISP or VPSS.   I'm sure the sensor is OK.   The default tri-stream usecases work fine with the camera.

 I'm probably connecting the links wrong, but I don't yet understand what I'm doing wrong.    If someone could point me in the right direction it'd be great.

My code is basically:


static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl = {
.isPopulated = 1,
.ivaMap[0] = {
.EncNumCh = 1,
.EncChList = {0},
.DecNumCh = 1,
.DecChList = {0},
},

};

Void Facex_createStreamLowPwr()
{
UInt32 i;

CameraLink_CreateParams cameraPrm;

IpcLink_CreateParams ipcOutVpssPrm;
IpcLink_CreateParams ipcInVideoPrm;
EncLink_CreateParams encPrm;
IpcBitsOutLinkRTOS_CreateParams ipcBitsOutVideoPrm;
IpcBitsInLinkHLOS_CreateParams ipcBitsInHostPrm0;

CameraLink_VipInstParams *pCameraInstPrm;
CameraLink_OutParams *pCameraOutPrm;

UInt32 cameraId;
UInt32 ipcOutVpssId;
UInt32 ipcInVideoId;
UInt32 encId;
UInt32 ipcBitsOutVideoId;
UInt32 ipcBitsInHLOSId;


/* 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);

OSA_printf("\n********** MyTest USECASE ********\n");
OSA_printf("\n********* Entered H264 ********\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 */
cameraId = SYSTEM_LINK_ID_CAMERA;
ipcOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0;
ipcInVideoId = SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0;
encId = SYSTEM_LINK_ID_VENC_0;
ipcBitsOutVideoId = SYSTEM_VIDEO_LINK_ID_IPC_BITS_OUT_0;
ipcBitsInHLOSId = SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0;

gVcamModuleContext.cameraId = cameraId;
gVencModuleContext.encId = encId;
gVencModuleContext.ipcBitsInHLOSId = ipcBitsInHLOSId;
gVencModuleContext.ipcBitsOutRTOSId = ipcBitsOutVideoId;


/* Camera Link params */
CameraLink_CreateParams_Init(&cameraPrm);
cameraPrm.captureMode = CAMERA_LINK_CAPMODE_ISIF;
cameraPrm.numAudioChannels = 1;
cameraPrm.numVipInst = 1;
cameraPrm.tilerEnable = FALSE;
cameraPrm.vsEnable = FALSE;//When VS is enabled then scOutWidth/scOutHeight cannot be equal to sensorOutWidth/sensorOutHeight
cameraPrm.outQueParams[0].nextLink = ipcOutVpssId; // <<<< not DUP
cameraPrm.t2aConfig.n2A_vendor = gUI_mcfw_config.n2A_vendor;
cameraPrm.t2aConfig.n2A_mode = gUI_mcfw_config.n2A_mode;


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;
pCameraInstPrm->sensorOutWidth = 1920;
pCameraInstPrm->sensorOutHeight = 1080;
pCameraInstPrm->standard = SYSTEM_STD_1080P_30;
pCameraInstPrm->numOutput = 1;

/* First stream */
pCameraOutPrm = &pCameraInstPrm->outParams[0];
pCameraOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV;
pCameraOutPrm->scEnable = FALSE;
pCameraOutPrm->scOutWidth = 1920;
pCameraOutPrm->scOutHeight = 1080;
pCameraOutPrm->outQueId = 0;

//no dup here ( dup prevLinId was cameraId, nextLInk was gIpcOutVpssId and MergId)

/* IPC Out VPSS link params */
ipcOutVpssPrm.inQueParams.prevLinkId = gVcamModuleContext.cameraId;
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;


//pLinkChPrm->format = IVIDEO_MJPEG; //"SINGLE_JPEG"
pLinkChPrm->format = IVIDEO_H264HP; //"SINGLE_H264"
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] = NUM_ENCODE_BUFFERS;
gVencModuleContext.encFormat[i] = pLinkChPrm->format;
}
}


encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 30;
encPrm.chCreateParams[1].defaultDynamicParams.inputFrameRate = 30;
//encPrm.chCreateParams[1].defaultDynamicParams.inputFrameRate = 30; // ENC_LINK_DEFAULT_ALGPARAMS_INPUTFRAMERATE;
encPrm.vsEnable = 0;
encPrm.isVaUseCase = 0;
encPrm.inQueParams.prevLinkId = ipcInVideoId;
encPrm.inQueParams.prevLinkQueId = 0;

encPrm.outQueParams.nextLink = ipcBitsOutVideoId;

/* IPC Bits Out VIDEO Link params */
ipcBitsOutVideoPrm.baseCreateParams.inQueParams.prevLinkId = encId;
ipcBitsOutVideoPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcBitsOutVideoPrm.baseCreateParams.numOutQue = 1;
ipcBitsOutVideoPrm.baseCreateParams.outQueParams[0].nextLink = ipcBitsInHLOSId;


MultiCh_ipcBitsInitCreateParams_BitsOutRTOS(&ipcBitsOutVideoPrm, TRUE);

/* IPC Bits In HOST Link params */
ipcBitsInHostPrm0.baseCreateParams.inQueParams.prevLinkId = ipcBitsOutVideoId;
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);


/* IPC Links */
System_linkCreate(ipcOutVpssId, &ipcOutVpssPrm, sizeof(ipcOutVpssPrm));
System_linkCreate(ipcInVideoId, &ipcInVideoPrm, sizeof(ipcInVideoPrm));

/* Video Encoder Link */
System_linkCreate(gVencModuleContext.encId, &encPrm, sizeof(encPrm));


/* IPC Bits Links */
System_linkCreate(gVencModuleContext.ipcBitsOutRTOSId, &ipcBitsOutVideoPrm,
sizeof(ipcBitsOutVideoPrm));
System_linkCreate(gVencModuleContext.ipcBitsInHLOSId, &ipcBitsInHostPrm0,
sizeof(ipcBitsInHostPrm0));

OSA_printf("MyTest USECASE SETUP DONE\n");
}

Also, I'm using the parallel camera that comes with the CSK.  I've noticed that several usecases in the RDK specify CSI2  

       pCameraInstPrm->vipInstId = SYSTEM_CAMERA_INST_VP_CSI2

Should I be specifying a parallel instance?   I don't think I see one in the header file.

Thanks,

g