NULL link->ipcFrameoutHost->ipcFramesIn(vidoeFromHost)->enclink->ipcFramesOut(videoToHost)->ipcFramesInHost->SYSTEM_LINK_ID_INVALID

发现800万像素送入到videoM3编码jpeg报错:

DMA: ChannelID allocated:4
 [m3video]  84148: IPC_FRAMES_IN   : Create in progress !!!
 [m3video]  84148: SYSTEM: Opening ListMP [HOST_IPC_OUT_23] ...
 [m3video]  84149: SYSTEM: Opening ListMP [HOST_IPC_IN_23] ...
 [m3video]  84151: SYSTEM: Opening MsgQ [HOST_MSGQ] ...
 [m3video] IPC_FRAMES_IN:HEAPID:0       USED:304
 [m3video]  84153: IPC_FRAMES_IN   : Create Done !!!
 [m3video]  84154: MERGE   : Create Done !!!
 [m3video]  84155: ENCODE: Create in progress ... !!!
 [m3video]  EncLink_codecCreateOutObj BitBuf Q Status
 [m3video] Empty Q 0 -> count 1, wrPtr 1, rdPtr 0
 [m3video] Full Q -> count 0, wrPtr 0, rdPtr 0
 [m3video]  EncLink_codecCreateOutObj BitBuf Q Status
 [m3video] Empty Q 0 -> count 2, wrPtr 2, rdPtr 0
 [m3video] Full Q -> count 0, wrPtr 0, rdPtr 0
 [m3video]  EncLink_codecCreateOutObj BitBuf Q Status
 [m3video] Empty Q 0 -> count 3, wrPtr 3, rdPtr 0
 [m3video] Full Q -> count 0, wrPtr 0, rdPtr 0
 [m3video]  EncLink_codecCreateOutObj BitBuf Q Status
 [m3video] Empty Q 0 -> count 4, wrPtr 4, rdPtr 0
 [m3video] Full Q -> count 0, wrPtr 0, rdPtr 0
 [m3video]  EncLink_codecCreateOutObj BitBuf Q Status
 [m3video] Empty Q 0 -> count 5, wrPtr 5, rdPtr 0
 [m3video] Full Q -> count 0, wrPtr 0, rdPtr 0
 [m3video]  EncLink_codecCreateOutObj BitBuf Q Status
 [m3video] Empty Q 0 -> count 6, wrPtr 6, rdPtr 0
 [m3video] Full Q -> count 0, wrPtr 0, rdPtr 0
 [m3video]  84346: ENCODE: Creating CH0 of 3296 x 2472, pitch = (3296, 3296) [PROGRESSIVE] [NON-TILED  ], bitrate = 24000 Kbps ...
 [m3video] ENCLINK_JPEG:HEAPID:0        USED:6328
 [m3video]  84348: ENCODE: All CH Create ... DONE !!!
 [m3video] ENCLINK:HEAPID:0     USED:6568
 [m3video]  84351: ENCODE: Create ... DONE !!!
 [m3video]  84353: IPC_BITS_OUT   : Create in progress !!!
 [m3video]  84356: IPC_BITS_OUT   : Create Done !!!
 [m3video]  JPGLINK: new targetframerate to set:15000 for bitrate 36000000
 [m3video]  JPGLINK: Run time parameters changed 0
 [m3video] 94265:!ERROR!:ENCLINK::links_m3video/iva_enc/encLink_jpeg.c:[215]::INTERNAL ERROR:-1
 [m3video] ALGPROCESS FAILED
 [m3video] JPEG Extended error 8000
 [m3video] 94265:WARN
 [m3video] ENCLINK:ERROR in Enclink_JPEGEncodeFrame.Status[-1]
 [m3video] 94265:WARN
 [m3video] ENC : IVAHDID : 0 ENCLINK:ERROR in EncLink_SubmitBatch.Status[-1]

终于调通yuv420sp的数据送入到videoM3 解码的代码了,

status = IpcFramesOutLink_putFullVideoFrames(iFrameOutLinkId,&vidBufList);

打印日志ok,在调用rdk_SndFrameBufToVideoM3打印buff的前10个字节的日志,videoM3就不报错了,不打印这几行日志,videoM3报错;

奇怪!

unsigned char *pbuff=(unsigned char *)g_pYuv420spBuf;
        int i=0;
        for(i=0;i<1;i++)
        {
           OSA_printf("yuv[%d]=%d\n",i,pbuff[i]);
        }

使用videoM3 编码1080p的数据,jpeg编码的图像有问题;如下:

偏绿的原因是传递到videoM3中的UV通道的addr和phyAddr指针没有赋值;

以下是从网上搜到的和我这个问题相关的内容;

http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/t/199290

How to pass a file from host to encoder

I have a file with raw YUV data that I would like to pass to the encoder. I can read the frames from the file on the host A8. How can I pass this data to the encoder through the ipcFramesOut Link.

I see that the API has two functions that I can use to write the frames.  I call IpcFramesOutLink_getEmptyVideoFrames(), write the data to the returned buffer and callIpcFramesOutLink_putFullVideoFrames() to send the data to the next link.  My problem is that there are no buffers returned from getEmptyVideoFrames() that I can write to.  I have configured the parameters in theSystem_LinkChInfo struct that is a part ofIpcFramesOutLinkHLOS_CreateParams with the correct frame information on initialization.

How can I get the system to allocate the buffers for me? Or if that is not possible, where would it be best for me to allocate it myself?

Thanks,
Robb

http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/270715

Thanks!

Is there any possibility that I set wrong parameters to IPCFrameOutLINK which can result this phenomenon?

Following is my parameters:

Part 1 : LINK parameters

esipcFramesOutHostPrm0.baseCreateParams.inQueParams.prevLinkId         = SYSTEM_LINK_ID_INVALID;
    esipcFramesOutHostPrm0.baseCreateParams.inQueParams.prevLinkQueId      = 0;
    esipcFramesOutHostPrm0.baseCreateParams.numOutQue                      = 1;
    esipcFramesOutHostPrm0.baseCreateParams.numChPerOutQue[0]              = 1;
    esipcFramesOutHostPrm0.baseCreateParams.outQueParams[0].nextLink       = esipcFramesInVpssId0;
    esipcFramesOutHostPrm0.baseCreateParams.inputFrameRate                 = 60;    ****~~~~
    esipcFramesOutHostPrm0.baseCreateParams.outputFrameRate                = 60;    ****~~~~
    esipcFramesOutHostPrm0.baseCreateParams.notifyNextLink                 = TRUE;
    esipcFramesOutHostPrm0.baseCreateParams.notifyPrevLink                 = FALSE;
    esipcFramesOutHostPrm0.baseCreateParams.notifyProcessLink              = FALSE;
    esipcFramesOutHostPrm0.baseCreateParams.noNotifyMode                   = FALSE;

esipcFramesOutHostPrm0.inQueInfo.numCh                                 = 1;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].startX                      = 0;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].startY                      = 0;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].height                      = 720;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].width                       = 1280;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].pitch[0]                    = 2560;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].bufType                     = SYSTEM_BUF_TYPE_VIDFRAME;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].bufferFmt                   = 0;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].codingformat                = 0;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].memType                     = SYSTEM_MT_NONTILEDMEM;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].dataFormat                  = SYSTEM_DF_YUV422I_YUYV;
    esipcFramesOutHostPrm0.inQueInfo.chInfo[0].scanFormat                  = SYSTEM_SF_PROGRESSIVE;//SYSTEM_SF_INTERLACED;//
    System_linkCreate(esipcFramesOutHostId0, &esipcFramesOutHostPrm0, sizeof(esipcFramesOutHostPrm0));

esipcFramesInVpssPrm0.baseCreateParams.inQueParams.prevLinkId      = esipcFramesOutHostId0;
    esipcFramesInVpssPrm0.baseCreateParams.inQueParams.prevLinkQueId   = 0;
    esipcFramesInVpssPrm0.baseCreateParams.inputFrameRate              = 60;
    esipcFramesInVpssPrm0.baseCreateParams.noNotifyMode                = FALSE;
    esipcFramesInVpssPrm0.baseCreateParams.notifyNextLink              = TRUE;
    esipcFramesInVpssPrm0.baseCreateParams.notifyPrevLink              = TRUE;
    esipcFramesInVpssPrm0.baseCreateParams.numOutQue                   = 1;
    esipcFramesInVpssPrm0.baseCreateParams.numChPerOutQue[0]           = 1;
    esipcFramesInVpssPrm0.baseCreateParams.outQueParams[0].nextLink    = esmergeId0;
    esipcFramesInVpssPrm0.baseCreateParams.outputFrameRate             = 60;

Part 2 : Allocate Shared Region

bufList.numFrames = 0;
    for (i = 0; i < VIDFRAME_MAX_FRAME_BUFS;i++)
    {
        status = Vsys_allocBuf(FRAMEBUF_HEAP_SR_ID, bufSize, 128, &thrObj->bufInfo[i]);
        if (ERROR_NONE == status)
        {
            bufList.numFrames++;
            pFrame                 = &bufList.frames[i];
            pFrame->channelNum     = 0;
            pFrame->fid            = 0;
            pFrame->frameHeight    = 720;
            pFrame->frameWidth     = 1280;
            pFrame->framePitch[0]  = 2560;
            pFrame->phyAddr[0][0]  = thrObj->bufInfo[i].physAddr;
            pFrame->addr[0][0]     = thrObj->bufInfo[i].virtAddr;
        }
    }
    status = IpcFramesOutLink_putFullVideoFrames(SYSTEM_HOST_LINK_ID_IPC_FRAMES_OUT_0, &bufList);

Part 3 : Video Data exchanging :

while (FALSE == thrObj->exitFramesInOutThread)
    {
        bufList.numFrames = 0;
        status = IpcFramesOutLink_getEmptyVideoFrames(SYSTEM_HOST_LINK_ID_IPC_FRAMES_OUT_0, &bufList);
        OSA_assert(0 == status);
        if (bufList.numFrames)
        {
            //printf("Number of get empty: %d\n", bufList.numFrames);
            for(i = 0;i < bufList.numFrames;i++)
            {
                pFrame                 = &bufList.frames[i];
                pFrame->channelNum     = 0;
                pFrame->fid            = 0;
                pFrame->frameHeight    = 720;
                pFrame->frameWidth     = 1280;
                pFrame->framePitch[0]  = 2560;
                thrObj->bufSize        = (pFrame->frameHeight)*(pFrame->frameWidth)*2;

unsigned long ppIndex = ioctl(devfd, 4, 0);
/*                printf("ipcFrames : [sn: %d] ppIndex = %d, virtual = %x, phyaddr = %x\n",
                        i, ppIndex, ppMemVirtAddr[ppIndex], ppMemPhyAddr[ppIndex]);//*/

//memcpy(pFrame->addr[0][0], ppMemVirtAddr[ppIndex], bufSize);

copy2D.srcPhysAddr = (unsigned long)ppMemPhyAddr[ppIndex];
                copy2D.dstPhysAddr = (unsigned long)pFrame->phyAddr[0][0];
                OSA_dmaCopy2D(&dmaHndl, &copy2D, 1);
            }
            status = IpcFramesOutLink_putFullVideoFrames(SYSTEM_HOST_LINK_ID_IPC_FRAMES_OUT_0, &bufList);
            OSA_assert(0 == status);
        }
        OSA_waitMsecs(4);
    }

https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/277735

DM8168 IpcFramesOutLink

Hi,

In my usecase,I use  the ipcFramesOutHost Link and ipcFramesInVpss link ,and I invoke Vsys_allocBuf() to allocateshard region firstly,then,pass it to  ipcFramesOut_putFullFrames.

I create a thread just work in this way "IpcFramesOutLink_getEmptyVideoFrames--->IpcFramesOutLink_putFullVideoFrames" ,and I just get 30frames per second,

I want to know what causes this phenomenon,my test code is like following:

Looking forward to your reply.

static Void *Chains_ipcFramesGetPutFxn(Void *prm)
{
    Chains_IpcFramesCtrlThrObj *thrObj = (Chains_IpcFramesCtrlThrObj *) prm;
    VIDFrame_BufList  bufList;
    VIDFrame_Buf      *pFrame;
    Int32             i = 0;
    Int32             status;
    Int32             bufSize = 1280 * 720 * 2;

///

if (FALSE == bHasAllocSRBuf)
    {
  bufList.numFrames = 0;
  for (i = 0; i < VIDFRAME_MAX_FRAME_BUFS;i++)
  {
   status = Vsys_allocBuf(FRAMEBUF_HEAP_SR_ID, bufSize, 128, &thrObj->bufInfo[i]);
   if (ERROR_NONE == status)
   {
    bufList.numFrames++;
    pFrame                 = &bufList.frames[i];
    pFrame->channelNum     = 0;
    pFrame->fid            = 0;
    pFrame->frameHeight    = 720;
    pFrame->frameWidth     = 1280;
    pFrame->framePitch[0]  = 2560;
    pFrame->phyAddr[0][0]  = thrObj->bufInfo[i].physAddr;
    pFrame->addr[0][0]     = thrObj->bufInfo[i].virtAddr;
   }
  }
  status = IpcFramesOutLink_putFullVideoFrames(SYSTEM_HOST_LINK_ID_IPC_FRAMES_OUT_0, &bufList);
  OSA_assert(0 == status);

bHasAllocSRBuf = TRUE;

printf ("ipcFrame   7777777777777777777777         put succefully...\n");
    }

/

while (FALSE == thrObj->exitFramesInOutThread)
    {
     status = IpcFramesOutLink_getEmptyVideoFrames(SYSTEM_HOST_LINK_ID_IPC_FRAMES_OUT_0, &bufList);
     OSA_assert(0 == status);
     printf("[%13.6f]numFrames = %d\n", ELAPSE_TIME, bufList.numFrames);

if (bufList.numFrames)
        {
            status = IpcFramesOutLink_putFullVideoFrames(SYSTEM_HOST_LINK_ID_IPC_FRAMES_OUT_0, &bufList);
         OSA_assert(0 == status);
        }
        OSA_waitMsecs(4);
    }
}//*/

dm8127 MCFW link problem

http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/t/262406

hi,

appro dm8127 3.2 RDK!

I want to get YUV image in A8 and do some proces in the YUV image. Then  send the YUV back to M3Vpss. so the flow is:

camera link--->Dup--->Merger LInk-->IpcFramesOutLinkRTOS-->IpcFramesInLinkHLOS--> IpcFramesOutLinkHLOS-->IpcFramesInLinkRTOS-->swosd-->ipcOutVpss-->ipcInVideo

however, the M3 program get an error in IpcFramesInLink_putEmptyFrames. the following is the log info

[m3vpss ] Command 1 recived from HOST A8
 [m3vpss ]  5615: CAMERA: Fields = 2 (fps = 0), Total Resets = 0 (Avg 0 ms per reset)

[host] MCFW_IPCFRAMES: Callback function:App_ipcFramesInCbFxn
 [host] MCFW_IPCFRAMES:Received first frame notify...
 [host] MCFW_IPCFRAMES:VIDFRAMELIST_INFO:FullFrameList  numFullFrames:2
 [host] MCFW_IPCFRAMES:VIDFRAME_INFO:chNum:0    fid:0   frameWidth:1920 frameHeight:1080        timeStamp:5708   virtAddr[0][0]:(nil)    phyAddr[0][0]:0xb841c500
 [host] MCFW_IPCFRAMES:VIDFRAME_INFO:chNum:1    fid:0   frameWidth:720  frameHeight:480 timeStamp:5708  virtAddr[0][0]:(nil)     phyAddr[0][0]:0xb9beb500
[host] Vdis_getEmptyVideoFrames:status 0 Num:0

[host] MCFW_IPCFRAMES:App_ipcFramesSendRecvFxn:INFO: periodic print.. [m3video]  Channel:0 inputframerate:30 targetfps:60
[m3vpss ]  5745: Assertion @ Line: 562 in links_common/ipcFramesIn/ipcFramesInLink_tsk.c: pListElem->frameBuf.phyAddr[0][0] == pFrameBuf->addr[0][0] : failed !!!

[host] MCFW_IPCBITS: Callback function:App_ipcBitsInCbFxn
 [host] MCFW_IPCBITS:App_ipcBitsRecvStreamFxn:INFO: periodic print.. [m3video]  Channel:1 inputframerate:15 targetfps:60

the following is the code:

/* Merge Link params */
 #ifdef YUV_FRAMES_TO_A8
    mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 2;
 #else
 mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 3;
 #endif
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkId = dupId[MJPEG_DUP_LINK_IDX];
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkQueId = 0;
    if(gUI_mcfw_config.glbceEnable)
  mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId = ispId;
    else
    {
     #ifdef RAW_FRAMES_TO_A8
  mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId = ispId;
  #else
  mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId = gVcamModuleContext.cameraId;
  #endif
  
    }

mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkQueId = 1;
 #ifdef YUV_FRAMES_TO_A8
 //none
 #else
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[2].prevLinkId = dupId[MJPEG_DUP_LINK_IDX];
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[2].prevLinkQueId = 1;
 #endif
//    mergePrm[CAM_STREAM_MERGE_IDX].outQueParams.nextLink = gVsysModuleContext.swOsdId;
    mergePrm[CAM_STREAM_MERGE_IDX].notifyNextLink = TRUE;
#ifdef YUV_FRAMES_TO_A8
 mergePrm[CAM_STREAM_MERGE_IDX].outQueParams.nextLink = gVcamModuleContext.ipcFramesOutVpssToHostId;

/* Set ipcFramesOutVpss link info */
 ipcFramesOutVpssToHostPrm.baseCreateParams.noNotifyMode = TRUE;
 ipcFramesOutVpssToHostPrm.baseCreateParams.notifyNextLink = FALSE;
 ipcFramesOutVpssToHostPrm.baseCreateParams.notifyPrevLink = TRUE;
 ipcFramesOutVpssToHostPrm.baseCreateParams.inQueParams.prevLinkId = mergeId[CAM_STREAM_MERGE_IDX];
 ipcFramesOutVpssToHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
 ipcFramesOutVpssToHostPrm.baseCreateParams.outQueParams[0].nextLink = gVcamModuleContext.ipcFramesInHostId;
 ipcFramesOutVpssToHostPrm.baseCreateParams.processLink       =  SYSTEM_LINK_ID_INVALID; //johnlin add

ipcFramesInHostPrm.baseCreateParams.noNotifyMode = TRUE;
 ipcFramesInHostPrm.baseCreateParams.notifyNextLink = FALSE;
 ipcFramesInHostPrm.baseCreateParams.notifyPrevLink = FALSE;
 ipcFramesInHostPrm.baseCreateParams.inQueParams.prevLinkId = gVcamModuleContext.ipcFramesOutVpssToHostId;
 ipcFramesInHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
 ipcFramesInHostPrm.baseCreateParams.outQueParams[0].nextLink =SYSTEM_LINK_ID_INVALID;//gVsysModuleContext.swOsdId;//SYSTEM_LINK_ID_INVALID;
 ipcFramesInHostPrm.exportOnlyPhyAddr = TRUE;

ipcFramesInHostPrm.cbCtx = &gVcamModuleContext;
 ipcFramesInHostPrm.cbFxn = Vcam_ipcFramesInCbFxn;

ipcFramesOutHostPrm.baseCreateParams.noNotifyMode = TRUE;
 ipcFramesOutHostPrm.baseCreateParams.notifyNextLink = FALSE;
 ipcFramesOutHostPrm.baseCreateParams.notifyPrevLink = FALSE;
 ipcFramesOutHostPrm.baseCreateParams.inQueParams.prevLinkId = SYSTEM_LINK_ID_INVALID;
 ipcFramesOutHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
 ipcFramesOutHostPrm.baseCreateParams.outQueParams[0].nextLink = gVdisModuleContext.ipcFramesInVpssFromHostId;

ipcFramesInVpssFromHostPrm.baseCreateParams.noNotifyMode = TRUE;
 ipcFramesInVpssFromHostPrm.baseCreateParams.notifyNextLink = TRUE;
 ipcFramesInVpssFromHostPrm.baseCreateParams.notifyPrevLink = FALSE;    
 ipcFramesInVpssFromHostPrm.baseCreateParams.inQueParams.prevLinkId = gVdisModuleContext.ipcFramesOutHostId;
 ipcFramesInVpssFromHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
 ipcFramesInVpssFromHostPrm.baseCreateParams.outQueParams[0].nextLink = gVsysModuleContext.swOsdId;
#else
 mergePrm[CAM_STREAM_MERGE_IDX].outQueParams.nextLink = gVsysModuleContext.swOsdId;
#endif

/* SWOSD Link Params */
#ifdef YUV_FRAMES_TO_A8
 swosdPrm.inQueParams.prevLinkId = gVcamModuleContext.ipcFramesInHostId;//gVdisModuleContext.ipcFramesInVpssFromHostId; //johnlin
#else
 swosdPrm.inQueParams.prevLinkId = mergeId[CAM_STREAM_MERGE_IDX];
#endif
   
    swosdPrm.inQueParams.prevLinkQueId = 0;
    swosdPrm.outQueParams.nextLink = ipcOutVpssId;
    swosdPrm.frameSync = 0;                                // frame sync is
                                                           // not required
    swosdPrm.frameSycChId = 0;                             // not used

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

Ti_mcfw_ipncframes.c

static Void * App_ipcFramesSendRecvFxn(Void * prm)
{
     App_IpcFramesCtrlThrObj *thrObj = ( App_IpcFramesCtrlThrObj *) prm;
    static Int printStatsInterval = 0;
    VIDEO_FRAMEBUF_LIST_S bufList;
    Int status;

#ifdef CUSTOM_SD_DEMO
    App_ipcFramesFileOpen();
#endif

OSA_printf("MCFW_IPCFRAMES:%s:Entered...",__func__);
    OSA_semWait(&thrObj->framesInNotifySem,OSA_TIMEOUT_FOREVER);
    OSA_printf("MCFW_IPCFRAMES:Received first frame notify...");
    while (FALSE == thrObj->exitFramesInOutThread)
    {
        status =  Vcam_getFullVideoFrames(&bufList,0);

OSA_assert(0 == status);
        if (bufList.numFrames)
        {
             App_ipcFramesPrintFullFrameListInfo(&bufList,"FullFrameList");
#ifdef CUSTOM_SD_DEMO
             App_ipcFrameFileWrite(&bufList);
#endif
            status = Vdis_putFullVideoFrames(&bufList);

OSA_assert(0 == status);
        }
        status =  Vdis_getEmptyVideoFrames(&bufList,0);

OSA_assert(0 == status);

OSA_printf("Vdis_getEmptyVideoFrames:status %d Num:%d \n",status,bufList.numFrames);

if (bufList.numFrames)
        {
            App_ipcFramesPrintFullFrameListInfo(&bufList,"EmptyFrameList");
            status = Vcam_putEmptyVideoFrames(&bufList);
            OSA_assert(0 == status);
        }
#ifdef IPC_FRAMES_DEBUG
        if ((printStatsInterval % MCFW_IPCFRAMES_INFO_PRINT_INTERVAL) == 0)
        {
            OSA_printf("MCFW_IPCFRAMES:%s:INFO: periodic print..",__func__);
        }
#endif
        printStatsInterval++;
        OSA_waitMsecs(MCFW_IPCFRAMES_SENDRECVFXN_PERIOD_MS);
    }
#ifdef CUSTOM_SD_DEMO
    if(gApp_ipcFramesCtrl.fileFrameWriteEnable)
    {
        if(gApp_ipcFramesCtrl.fileFrameWriteState==FILE_WRITE_RUNNING)
        {
            fclose(gApp_ipcFramesCtrl.fp);
            OSA_printf(" Closing file [%s] for CH%d\n", gApp_ipcFramesCtrl.fileFrameWriteName, gApp_ipcFramesCtrl.fileFrameWriteChn);
        }
    }
#endif
    OSA_printf("MCFW_IPCFRAMES:%s:Leaving...",__func__);
    return NULL;
}

What should I do? Is there something that I miss to config? Or the current config is wrong?  It's very strange. The custom dm8127 board work fine in the lowpower mode. However if I change the flow to get the YUV data in A8, the M3 vpss stop work after get the following assert.  Any suggestion would be  grateful. Thanks

typedef struct
{
    UInt32              bufType; /**< see System_BufType */
    UInt32              codingformat; /**< Video coding format - IVIDEO_H264BP, IVIDEO_H264MP,...*/
    UInt32              dataFormat; /**< see System_VideoDataFormat */
    UInt32              memType; /**< see System_MemoryType - Tiled / non-tiled */
    UInt32              startX; /**< Start x position */
    UInt32              startY; /**< Start x position */
    UInt32              width; /**< channel resolution - width */
    UInt32              height; /**< channel resolution - height */
    UInt32              pitch[SYSTEM_MAX_PLANES]; /**< Pitch for various formats / planes  */
    UInt32              scanFormat; /**< see System_VideoScanFormat */
} System_LinkChInfo;

/**
 * \brief LINKs output queue information
 *  Specifies a place holder that describe the output information of the LINK
 */
typedef struct
{
    UInt32              numCh;
    /**< No of channel that would be sent out */
    System_LinkChInfo   chInfo[SYSTEM_MAX_CH_PER_OUT_QUE];
    /**< Each channels configurations */

} System_LinkQueInfo;

1080p的图像;

UInt32              startX=32; /**< Start x position */
    UInt32              startY=24; /**< Start x position */
    UInt32              pitch[SYSTEM_MAX_PLANES]; /**< Pitch for various formats / planes  */
 pitch[0]=2048,pitch[1]=2048

dm8127 A8 yuv420sp 送入到videoM3编码--已经解决相关推荐

  1. MYSQL转换编码的解决方法

    MYSQL转换编码的解决方法 一.在utf8的mysql下 得到中文'游客'的gbk下的16进制编码 mysql> SELECT hex(CONVERT( '游客' USING gbk )); ...

  2. 解决:IE中不能自动选择UTF-8编码的解决方法

    解决:IE中不能自动选择UTF-8编码的解决方法 参考文章: (1)解决:IE中不能自动选择UTF-8编码的解决方法 (2)https://www.cnblogs.com/chenshuo/p/443 ...

  3. mysql utf8mb4 错_MYSQL保存特殊字符失败,用编码utf8mb4解决错误 Incorrect string value ...解决方法...

    <MYSQL保存特殊字符失败,用编码utf8mb4解决错误 Incorrect string value ...解决方法>要点: 本文介绍了MYSQL保存特殊字符失败,用编码utf8mb4 ...

  4. 字符集编码 idea解决乱码

    文章目录 字符集编码 idea解决乱码 字符编码原理 字符集编码 ASCII字符集 共收录128个字符,包括空格.标点符号.数字.大小写字母和一些不可见字符.由于总共才128个字符,所以可以使用1个字 ...

  5. Appro DM8127 IPNC 挂载NFS遇到的问题及解决

    对于Appro DM8127 IPNC,默认的启动方式是NAND is used for booting kernel and NAND is used as root filesystem 为了调试 ...

  6. 解决pandas读取含有中文路径下的文件编码错误解决

    datapath = 'E:/DeepLearning/jupyter_code/jupyter notebook/ScikitLearn and TensorFlow实战/自己总结/datasets ...

  7. ZendStudio中,缺少gbk gb2312编码的解决办法

    自己用zend也好久了,对于文件的编码转换,也没太注意,可最近在新电脑上安装zend后, 由于文件是gbk编码的,默认utf-8编码会出现乱码, 于是,自己还是按照以前的方法 edit → Set E ...

  8. linux mysql5.6 编码_CentOS 7下修改MySQL5.6编码方式 解决网站中文显示问号

    解决办法: CentOS 7下修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码. 具体操作: 1.进入MySQL控制台 mysql  -u root - ...

  9. Chrome 技巧篇-浏览器网页设置编码,解决网页乱码问题,最新版charset插件获取,UTF-8编码设置

    非常简单,安装一个Charset插件就好了. 获取方式: 小蓝枣的资源仓库,提取码:ih2n 有乱码的话,一般设置为UTF-8编码就好了. 喜欢的点个赞❤吧!

最新文章

  1. [MYSQL] 如何彻底卸载MYSQL5.x
  2. hdu2110(普通母函数)
  3. Android之android.os.DeadObjectException原因
  4. Python利用PyPDF2库获取PDF文件总页码
  5. Java基础学习总结(101)——Junit5抢鲜看
  6. java互喷群,夸夸群和喷喷群的心里需求和投资如此相似
  7. 实例方法、静态方法和类方法的区别
  8. 【Kali】Kali在线安装详细教程【全】
  9. 阿铭Linux_网站维护学习笔记201903021
  10. C语言学习编程软件推荐
  11. C1任务01 植物大战僵尸存档修改
  12. Solidity节省GAS的方法
  13. 使用快解析一招解决电脑dns异常问题
  14. 如何排两列的序计算机考试,excel中两列数据怎么一起排序?excel两列同时排序的方法...
  15. 慎投:这两本期刊被剔除SCI/SSCI, 11月WOS数据库已更新~
  16. 将git项目提交到其他的git仓库
  17. mysql 5.0.8 下载_mysql-connector-
  18. web前端开发技术 :旅游网页设计与实现——旅游风景区网站HTML+CSS
  19. 2017苹果开发者大会看点汇总
  20. 梆梆加固,启动就闪退了

热门文章

  1. python爬虫抢演唱会_Python爬虫告诉你:为什么杨超越不会唱不会跳也能躺赢出道!...
  2. mac idea 触控板 缩放 字体大小
  3. 互联网装修还有多少机会?
  4. matlab p图,【MATLAB】P图神器,初露锋芒:第一周作业(剧透)
  5. vue 实现打印与批量分页打印功能
  6. android 列表倒计时,Android ListView列表实现倒计时
  7. oracle数据库直方图,[转] oracle统计信息(statistics)和直方图(histogram)
  8. 2021年小红书KOL营销白皮书
  9. HDU 4598 Difference
  10. (二)WebService之调用soap服务