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.

IPNC RDK Version 3.8 - Tiler Issue for CameraDriver Controls

Hi,

Sorry to Interrupt You...I have one more query regarding Tiler Module..

I implemented video masking for all my 4 H264 channels, & thats why I had given a system control of video masking to Camera Driver & It was working fine. (Tiler is off from Rules.make file)

But when Tiler is on from Rules.make file, & When I give a system control for enable to video masking to camera driver, streaming has been stopped.

Please solve My Issue..

Pelase review a code of VideoMasking in camera driver..

Int32 CameraLink_drvProcessData(CameraLink_Obj * pObj)
{
    .................

    for (streamId = 0; streamId < CAMERA_LINK_MAX_OUTPUT_PER_INST; streamId++)
    {
        /*
         * Deque frames for all active handles
         */
        FVID2_dequeue(pObj->fvidHandleVipAll,
                      &frameList, streamId, BIOS_NO_WAIT);

        if (frameList.numFrames)
        {
            for (frameId = 0; frameId < frameList.numFrames; frameId++)
            {
                pFrame = frameList.frames[frameId];

                ...................

                /* Sentry360 Start */
                if( pObj->pmInfo.pmEnable )
                {
                    PM_processFrames( pFrame , &pObj->pmInfo );
                }

.........................

Void PM_processFrames( FVID2_Frame * pFrame , PM_infoStruct *pPmInfo )
{
        Ptr FrameAddrY,FrameAddrUV;
        UInt32 maskAddr,colorId;
        Iss_CaptRtParams *pRtParams;
        UInt32 pitch,width,height;
        UInt32 pmId,startX,startY;

        pRtParams       = (Iss_CaptRtParams *) pFrame->perFrameCfg;
        pitch           = pRtParams->captureOutPitch;

        FrameAddrY      = (Ptr) pFrame->addr[0][0];
        FrameAddrUV = (Ptr) pFrame->addr[0][1];

        for ( pmId = 0 ; pmId < MAX_PRIVACY_REGION ; pmId++ )
        {
                if( TRUE == pPmInfo->rectInfo[pmId].enable )
                {
                        if ( pPmInfo->pcolor < PM_COLOR_TYPE_MAX )
                                colorId = pPmInfo->pcolor;
                        else
                                colorId = PM_COLOR_BLACK;

                        startX          = DRAW_floor( ( pPmInfo->rectInfo[pmId].startX * (pRtParams->captureOutWidth) )/1920 , 8);
                        startY          = DRAW_floor( ( pPmInfo->rectInfo[pmId].startY * (pRtParams->captureOutHeight) )/1080 , 2);

                        maskAddr        = (UInt32) FrameAddrY + ( startX + ((startY) * (pitch)));
                        width   = DRAW_align( ((pPmInfo->rectInfo[pmId].width) * (pRtParams->captureOutWidth))/ 1920 , 8);
                        height  = DRAW_align( ((pPmInfo->rectInfo[pmId].height) * (pRtParams->captureOutHeight))/ 1080 , 2);

                        if( !(width && height) )
                        {
                                continue;
                        }

                        if ( width > (pRtParams->captureOutWidth) )
                        {
                                width = DRAW_align((pRtParams->captureOutWidth), 8);
                        }
                        if ( height > (pRtParams->captureOutHeight) )
                        {
                                height = DRAW_align((pRtParams->captureOutHeight), 2);
                        }

                        /* Y-plan */
                        DM81XX_EDMA3_memset( DRAW_EDMA_CHID_DRAW,
                                        DRAW_EDMA_QUEUEID_DRAW,
                                        gColorInfo[colorId][0],
                                        maskAddr,
                                        width,
                                        height,
                                        pitch );

                        maskAddr        = (UInt32) FrameAddrUV + ( startX + ((startY/2) * (pitch)));
                        /* UV-plan */
                        DM81XX_EDMA3_memset( DRAW_EDMA_CHID_DRAW,
                                        DRAW_EDMA_QUEUEID_DRAW,
                                        gColorInfo[colorId][1],
                                        maskAddr,
                                        width,
                                        height/2,
                                        pitch );
                }
        }
}

Is there any Issue of EDMA Copy When Tiler is On? Alsoi I Pritnt some messages before EDMA copy, and it prints...but after EDMA .....Camera stop, streaming stop.

Regards,

Sandip Gokani

2 Replies

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.