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.

M3Video 跳帧问题 ?

Other Parts Discussed in Thread: DM385

各位专家好,

      DM8148EVM板子,DVRRDK_04.00.00.03 的版本,通过mcfw_api_demos来进行采集

我们通过测试发现,在Usecase是Vcap+Vdisp很正常,

但是当usecase是vcap+Venc+vdip的时候,发现M3VPSS可以正常捕捉到帧,却在编码阶段,M3Video全部掉帧,

我们通过进一步跟踪发现是M3Video在调用Utils_bitbufGetEmptyBuf() 为h264编码申请bitsbuf的时候失败了,

请问这种情况一般是什么问题引起的,有什么思路解决?

M3video掉帧的log 如下:

 [m3vpss ]  
 [m3vpss ]  *** Capture Driver Advanced Statistics *** 
 [m3vpss ]  
 [m3vpss ]  VIP Parser Reset Count : 0
 [m3vpss ]  
 [m3vpss ]      |   Total    Even     Odd  Total  Even   Odd  Min /  Max  Min /  Max Dropped Fid Repeat Frame Error Y/C
 [m3vpss ]  CH  |  Fields  Fields  Fields    FPS   FPS   FPS       Width      Height  Fields      Count (Desc Error Y/C)
 [m3vpss ]  ------------------------------------------------------------------------------------------------------------
 [m3vpss ]  200 |   26724   26724       0     60    60     0 1920 / 1920 1080 / 1080       1      26723 0/0 (0/0)
 [m3vpss ]  
 [m3vpss ]  VIP Capture Port 2 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0 
 [m3vpss ]  
 [m3vpss ]  *** Capture List Manager Advanced Statistics *** 
 [m3vpss ]  
 [m3vpss ]  List Post Count        : 55677 
 [m3vpss ]  List Stall Count       : 0 
 [m3vpss ]  List Post Time (ms)    : Max = 0, Min = 0, Avg = 0, Total = 0 
 [m3vpss ]  INTC Timeout Count     : (0, 0) (Min timeout value = 993, 1000) 
 [m3vpss ]  Descriptor miss found count : 0 
 [m3vpss ]  
 [m3vpss ]  
 [m3vpss ]  VIP and VPDMA registers, 
 [m3vpss ]  VIP0 : FIQ_STATUS  : 0x4810551c = 0x00000000
 [m3vpss ]  VIP1 : FIQ_STATUS  : 0x48105a1c = 0x00000000
 [m3vpss ]  VPDMA: LIST_BUSY   : 0x4810d00c = 0x00120000
 [m3vpss ]  
 [m3vpss ]  
 [m3vpss ]  450407: CAPTURE: Fields = 26723 (fps = 59, CPU Load = 0)
 [m3vpss ]  450407: CAPTURE: Num Resets = 0 (Avg 0 ms per reset)
 [m3vpss ]  450408: SYSTEM  : FREE SPACE : System Heap      = 244048 B, Mbx = 10239 msgs) 
 [m3vpss ]  450408: SYSTEM  : FREE SPACE : SR0 Heap         = 26539520 B (25 MB) 
 [m3vpss ]  450408: SYSTEM  : FREE SPACE : Frame Buffer     = 265044864 B (252 MB) 
 [m3vpss ]  450408: SYSTEM  : FREE SPACE : Bitstream Buffer = 198322048 B (189 MB) 
 [m3vpss ] TILER_STATS: CNT :8BIT
 [m3vpss ] TILER_STATS: CNT RESOLUTION:    16384 x 5440
 [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 16384 x 5436
 [m3vpss ] TILER_STATS: NUM FREE BUCKETS:  1
 [m3vpss ] TILER_STATS: NUM USED BUCKETS:  0
 [m3vpss ] TILER_STATS: TOTAL FREE AREA:   89063424 (99 %)
 [m3vpss ] TILER_STATS: TOTAL USED AREA:   0 (0 %)
 [m3vpss ] TILER_STATS: CNT :16BIT
 [m3vpss ] TILER_STATS: CNT RESOLUTION:    32768 x 1344
 [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 32768 x 1344
 [m3vpss ] TILER_STATS: NUM FREE BUCKETS:  1
 [m3vpss ] TILER_STATS: NUM USED BUCKETS:  0
 [m3vpss ] TILER_STATS: TOTAL FREE AREA:   44040192 (100 %)
 [m3vpss ] TILER_STATS: TOTAL USED AREA:   0 (0 %)
 [m3vpss ]  450410: SYSTEM  : FREE SPACE : Tiler 8-bit      = 89063424 B (84 MB)  - TILER ON 
 [m3vpss ]  450410: SYSTEM  : FREE SPACE : Tiler 16-bit     = 44040192 B (42 MB)  - TILER ON 
 [m3vpss ]  
 [m3vpss ]  *** [NSF0] NSF Statistics *** 
 [m3vpss ]  
 [m3vpss ]  Elasped Time           : 387 secs
 [m3vpss ]  Total Fields Processed : 26723 
 [m3vpss ]  Total Fields FPS       : 83 FPS
 [m3vpss ]  
 [m3vpss ]  
 [m3vpss ]  CH  | In Recv In Reject In Process Out User Out Out      
 [m3vpss ]  Num | FPS     FPS       FPS        FPS Skip FPS Skip FPS 
 [m3vpss ]  ------------------------------------------------
 [m3vpss ]    0 |      60         0         60  60        0        0
 [m3vpss ]  
 [m3vpss ]  450417: DISPLAY: HDDAC(BP0) : 59 fps, Latency (Min / Max) = ( 74 / 92 ), Callback Interval (Min / Max) = ( 16 / 17 ) DropCount:0 DispLatency (Min / Max) = 
 [m3vpss ]  450417: DISPLAY DRV: HDDAC(BP0) : Q:[26725] Display:[26754], Repeat:[32], DQ:[26721]
 [m3vpss ]  450417: DISPLAY: UNDERFLOW COUNT: HDMI(BP0) 23234, HDDAC(BP0) 0, DVO2(BP1) 23234, SDDAC(SEC1) 47276 
 [m3vpss ]  450418: SYSTEM  : FREE SPACE : System Heap      = 244048 B, Mbx = 10239 msgs) 
 [m3vpss ]  450418: SYSTEM  : FREE SPACE : SR0 Heap         = 26539520 B (25 MB) 
 [m3vpss ]  450418: SYSTEM  : FREE SPACE : Frame Buffer     = 265044864 B (252 MB) 
 [m3vpss ]  450418: SYSTEM  : FREE SPACE : Bitstream Buffer = 198322048 B (189 MB) 
 [m3vpss ] TILER_STATS: CNT :8BIT
 [m3vpss ] TILER_STATS: CNT RESOLUTION:    16384 x 5440
 [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 16384 x 5436
 [m3vpss ] TILER_STATS: NUM FREE BUCKETS:  1
 [m3vpss ] TILER_STATS: NUM USED BUCKETS:  0
 [m3vpss ] TILER_STATS: TOTAL FREE AREA:   89063424 (99 %)
 [m3vpss ] TILER_STATS: TOTAL USED AREA:   0 (0 %)
 [m3vpss ] TILER_STATS: CNT :16BIT
 [m3vpss ] TILER_STATS: CNT RESOLUTION:    32768 x 1344
 [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 32768 x 1344
 [m3vpss ] TILER_STATS: NUM FREE BUCKETS:  1
 [m3vpss ] TILER_STATS: NUM USED BUCKETS:  0
 [m3vpss ] TILER_STATS: TOTAL FREE AREA:   44040192 (100 %)
 [m3vpss ] TILER_STATS: TOTAL USED AREA:   0 (0 %)
 [m3vpss ]  450420: SYSTEM  : FREE SPACE : Tiler 8-bit      = 89063424 B (84 MB)  - TILER ON 
 [m3vpss ]  450420: SYSTEM  : FREE SPACE : Tiler 16-bit     = 44040192 B (42 MB)  - TILER ON 
 [m3video]  456421: HDVICP-ID:0
 [m3video] All percentage figures are based off totalElapsedTime
 [m3video]    totalAcquire2wait :1 %
 [m3video]    totalWait2Isr :96 %
 [m3video]    totalIsr2Done :0 %
 [m3video]    totalWait2Done :96 %
 [m3video]    totalDone2Release :0 %
 [m3video]    totalAcquire2Release :98 %
 [m3video]    totalAcq2acqDelay :1 %
 [m3video]    totalElapsedTime in msec :     203
 [m3video]    numAccessCnt:      12
 [m3video]   IVA-FPS :       0
 [m3video]   Average time spent per frame in microsec:   16239
 [m3video]  456422: HDVICP-ID:1
 [m3video] All percentage figures are based off totalElapsedTime
 [m3video]    totalAcquire2wait :0 %
 [m3video]    totalWait2Isr :0 %
 [m3video]    totalIsr2Done :0 %
 [m3video]    totalWait2Done :0 %
 [m3video]    totalDone2Release :0 %
 [m3video]    totalAcquire2Release :0 %
 [m3video]    totalAcq2acqDelay :0 %
 [m3video]    totalElapsedTime in msec :       0
 [m3video]    numAccessCnt:       0
 [m3video]   IVA-FPS :       0
 [m3video]   Average time spent per frame in microsec:       0
 [m3video]  456422: HDVICP-ID:2
 [m3video] All percentage figures are based off totalElapsedTime
 [m3video]    totalAcquire2wait :0 %
 [m3video]    totalWait2Isr :0 %
 [m3video]    totalIsr2Done :0 %
 [m3video]    totalWait2Done :0 %
 [m3video]    totalDone2Release :0 %
 [m3video]    totalAcquire2Release :0 %
 [m3video]    totalAcq2acqDelay :0 %
 [m3video]    totalElapsedTime in msec :       0
 [m3video]    numAccessCnt:       0
 [m3video]   IVA-FPS :       0
 [m3video]   Average time spent per frame in microsec:       0
 [m3video]  
 [m3video]  *** ENCODE Statistics *** 
 [m3video]  
 [m3video]  Elasped Time           : 387 secs
 [m3video]  
 [m3video]  
 [m3video]  CH  | In Recv In Skip In User  Out Latency  
 [m3video]  Num | FPS     FPS     Skip FPS FPS Min / Max
 [m3video]  --------------------------------------------
 [m3video]    0 |      60      60        0   0 255 /   0
 [m3video]    1 |      60      60        0   0 255 /   0
 [m3video]  
 [m3video] Multi Channel Encode Average Submit Batch Size 
 [m3video] Max Submit Batch Size : 24
 [m3video] IVAHD_0 Average Batch Size : 0
 [m3video] IVAHD_0 Max achieved Batch Size : 0
 [m3video]  
 [m3video] Multi Channel Encode Batch break Stats 
 [m3video] Total Number of Batches created: 0 
 [m3video] All numbers are based off total number of Batches created
 [m3video]   Batch breaks due to batch sizeexceeding limit: 0 %
 [m3video]   Batch breaks due to ReqObj Que being empty: 0 %
 [m3video]   Batch breaks due to changed resolution class: 0 %
 [m3video]   Batch breaks due to interlace and progressivecontent mix: 0 %
 [m3video]   Batch breaks due to channel repeat: 0 %
 [m3video]   Batch breaks due to different codec: 0 %
 [m3vpss ]  
 [m3vpss ]  459425: LOAD: CPU: 9.1% HWI: 1.7%, SWI:1.4% 
 [m3vpss ]  
 [m3vpss ]  459425: LOAD: TSK: IPC_OUT_M30         : 1.1% 
 [m3vpss ]  459426: LOAD: TSK: CAPTURE             : 0.5% 
 [m3vpss ]  459426: LOAD: TSK: NSF0                : 0.9% 
 [m3vpss ]  459426: LOAD: TSK: DISPLAY0            : 0.8% 
 [m3vpss ]  459426: LOAD: TSK: DUP0                : 0.3% 
 [m3vpss ]  459426: LOAD: TSK: DUP1                : 0.4% 
 [m3vpss ]  459426: LOAD: TSK: MERGE0              : 0.2% 
 [m3vpss ]  459427: LOAD: TSK: MISC                : 1.8% 
 [m3vpss ]  
 [m3video]  
 [m3video]  459927: LOAD: CPU: 4.3% HWI: 0.9%, SWI:0.9% 
 [m3video]  
 [m3video]  459928: LOAD: TSK: IPC_IN_M30          : 0.7% 
 [m3video]  459928: LOAD: TSK: IPC_BITS_OUT0       : 0.3% 
 [m3video]  459928: LOAD: TSK: ENC0                : 1.3% 
 [m3video]  459928: LOAD: TSK: MISC                : 0.2% 
 [m3video]  
 [c6xdsp ]  
 [c6xdsp ]  459647: LOAD: CPU: 0.2% HWI: 0.0%, SWI:0.0% 
 [c6xdsp ]  
 [c6xdsp ]  459647: LOAD: TSK: MISC                : 0.2% 
 [c6xdsp ] 

  • 你好;

           之前有调试过dm8148的evm 板子,也是在rdk4.0上面,编码是正常的;

           你可以贴出你的Usecase 的代码吗?或者是 email 发我邮箱 ternence.hsu@foxmail.com

  • 你好,

             usecase已经发送到 ternence.hsu@foxmail.com,麻烦查收,谢谢!

    上午修改了一下:

    ipcOutVpssPrm.notifyNextLink = TRUE;

    改为
    ipcOutVpssPrm.notifyNextLink = FALSE;

    发现HDVPSS掉帧了,推测可能是usecase的chain配置参数有问题,

    请问有什么思路可以参考呢?

    ps:为了方便解决问题,帖子后面也上传了usecase,谢谢!

    usecase.zip
  • 你好,

           usecase 代码已经发送到ternence.hsu@foxmail.com ,麻烦接收,非常感谢!

    目前怀疑是usecase搭建过程中,配置参数有问题,请问有什么思路可以去解决?

    谢谢!

  • 你好;

          

        dupPrm[0].inQueParams.prevLinkId	   = gVcapModuleContext.captureId;
        dupPrm[0].inQueParams.prevLinkQueId	   = 0;
        dupPrm[0].numOutQue					   = 2;
        dupPrm[0].notifyNextLink			   = TRUE;  
        dupPrm[0].outQueParams[0].nextLink 	   = gVcapModuleContext.nsfId[0];
        dupPrm[0].outQueParams[1].nextLink	   = gVdisModuleContext.displayId[VDIS_DEV_HDMI];
    
      
        NsfLink_CreateParams_Init(&nsfPrm);
        nsfPrm.bypassNsf                 = TRUE;
        nsfPrm.tilerEnable               = FALSE;
        nsfPrm.inQueParams.prevLinkId    = dupId[0];
        nsfPrm.inQueParams.prevLinkQueId = 0;
        nsfPrm.numOutQue                 = 1;
        nsfPrm.outQueParams[0].nextLink  = gVcapModuleContext.nsfId[0];
       
    
        ipcOutVpssPrm.inQueParams.prevLinkId    = mergeId[ENC_MERGE_LINK_IDX];
        ipcOutVpssPrm.inQueParams.prevLinkQueId = 0;
        ipcOutVpssPrm.outQueParams[0].nextLink  = ipcInVideoId;
        ipcOutVpssPrm.notifyNextLink            = FALSE;
        ipcOutVpssPrm.notifyPrevLink            = TRUE;
        ipcOutVpssPrm.noNotifyMode              = TRUE;


    代码

     nsfPrm.outQueParams[0].nextLink  = gVcapModuleContext.nsfId[0];   

        ipcOutVpssPrm.inQueParams.prevLinkId    = mergeId[ENC_MERGE_LINK_IDX];

    nsf 的next link 应当是ipcoutvpss

    merge link 在程序中没有使用到;

    这个位置你查一下;

  • 你好,

         是的,上午我merge_link删除了,但是遗留下刚才的错误,现在已经根据你的建议修改过来,

    调试了一下,发现M3video仍然是掉帧,

    修改代码:

    #include "mcfw/src_linux/mcfw_api/usecases/multich_common.h"
    #include "mcfw/src_linux/mcfw_api/usecases/multich_ipcbits.h"


    #define TILER_ENABLE FALSE

    #define NUM_CAPTURE_DEVICES (1)

    #define ENC_MERGE_LINK_IDX (0)
    static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl =
    {
    .isPopulated = 1,
    .ivaMap[0] =
    {
    .EncNumCh = 1,
    .EncChList = {0, 1, 2},
    .DecNumCh = 0,
    .DecChList = {0, 1, 2},
    },
    };


    Void MultiCh_createVcapVencVdis_HSV6()
    {
    CaptureLink_CreateParams capturePrm;
    NsfLink_CreateParams nsfPrm;
    DupLink_CreateParams dupPrm[2];
    DisplayLink_CreateParams displayPrm[1];
    IpcLink_CreateParams ipcOutVpssPrm;
    IpcLink_CreateParams ipcInVideoPrm;
    EncLink_CreateParams encPrm;
    IpcBitsOutLinkRTOS_CreateParams ipcBitsOutVideoPrm;
    IpcBitsInLinkHLOS_CreateParams ipcBitsInHostPrm;

    CaptureLink_VipInstParams *pCaptureInstPrm;
    CaptureLink_OutParams *pCaptureOutPrm;
    UInt32 ipcOutVpssId;
    UInt32 ipcInVideoId;

    UInt32 i;//, chId;
    UInt32 dupId[2];


    MULTICH_INIT_STRUCT(IpcLink_CreateParams,ipcOutVpssPrm);
    MULTICH_INIT_STRUCT(IpcLink_CreateParams,ipcInVideoPrm);
    MULTICH_INIT_STRUCT(IpcBitsOutLinkRTOS_CreateParams,ipcBitsOutVideoPrm);
    MULTICH_INIT_STRUCT(IpcBitsInLinkHLOS_CreateParams,ipcBitsInHostPrm);
    MULTICH_INIT_STRUCT(EncLink_CreateParams, encPrm);

    MULTICH_INIT_STRUCT(DisplayLink_CreateParams ,displayPrm[0]);

    printf("\nDB_DEBUG:%s %s() %d\n",__FILE__,__FUNCTION__,__LINE__);
    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
    );

    printf("\nDB_DEBUG:%s %s() %d\n",__FILE__,__FUNCTION__,__LINE__);
    gVcapModuleContext.captureId = SYSTEM_LINK_ID_CAPTURE;
    gVcapModuleContext.nsfId[0] = SYSTEM_LINK_ID_NSF_0;
    gVencModuleContext.encId = SYSTEM_LINK_ID_VENC_0;
    gVdisModuleContext.displayId[0] = SYSTEM_LINK_ID_DISPLAY_0; // ON CHIP HDMI

    dupId[0] = SYSTEM_VPSS_LINK_ID_DUP_0;

    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;

    CaptureLink_CreateParams_Init(&capturePrm);
    capturePrm.numVipInst = 1;
    capturePrm.outQueParams[0].nextLink = dupId[0];
    capturePrm.tilerEnable = TRUE;
    capturePrm.enableSdCrop = FALSE;
    // capturePrm.maxBlindAreasPerCh = 7;
    capturePrm.fakeHdMode = 1;

    pCaptureInstPrm = &capturePrm.vipInst[0];
    pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP1_PORTA;
    //pCaptureInstPrm->videoDecoderId = SYSTEM_DEVICE_VID_DEC_SII9135_DRV;
    pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
    pCaptureInstPrm->standard = SYSTEM_STD_1080P_60;
    pCaptureInstPrm->numOutput = 1;

    pCaptureInstPrm->embedMode = FALSE;
    pCaptureInstPrm->byteNum = 2; //16bit
    pCaptureInstPrm->debugFlag = FALSE;
    pCaptureInstPrm->discreteSignal = 0; //DISCRETE_SYNC_ACTVID_VSYNC;

    pCaptureOutPrm = &pCaptureInstPrm->outParams[0];
    pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV422I_YUYV;//SYSTEM_DF_YUV422I_YUYV;
    pCaptureOutPrm->scEnable = FALSE;
    pCaptureOutPrm->scOutWidth = 0;
    pCaptureOutPrm->scOutHeight = 0;
    pCaptureOutPrm->outQueId = 0;



    dupPrm[0].inQueParams.prevLinkId = gVcapModuleContext.captureId;
    dupPrm[0].inQueParams.prevLinkQueId = 0;
    dupPrm[0].numOutQue = 2;
    dupPrm[0].notifyNextLink = TRUE;
    dupPrm[0].outQueParams[0].nextLink = gVcapModuleContext.nsfId[0];
    dupPrm[0].outQueParams[1].nextLink = gVdisModuleContext.displayId[VDIS_DEV_HDMI];


    NsfLink_CreateParams_Init(&nsfPrm);
    nsfPrm.bypassNsf = TRUE;
    nsfPrm.tilerEnable = FALSE;
    nsfPrm.inQueParams.prevLinkId = dupId[0];
    nsfPrm.inQueParams.prevLinkQueId = 0;
    nsfPrm.numOutQue = 1;
    nsfPrm.outQueParams[0].nextLink = ipcOutVpssId;

    ipcOutVpssPrm.inQueParams.prevLinkId = gVcapModuleContext.nsfId[0];
    ipcOutVpssPrm.inQueParams.prevLinkQueId = 0;
    ipcOutVpssPrm.outQueParams[0].nextLink = ipcInVideoId;
    ipcOutVpssPrm.notifyNextLink = FALSE;
    ipcOutVpssPrm.notifyPrevLink = TRUE;
    ipcOutVpssPrm.noNotifyMode = TRUE;

    ipcInVideoPrm.inQueParams.prevLinkId = ipcOutVpssId;
    ipcInVideoPrm.inQueParams.prevLinkQueId = 0;
    ipcInVideoPrm.outQueParams[0].nextLink = gVencModuleContext.encId;
    ipcInVideoPrm.notifyNextLink = TRUE;
    ipcInVideoPrm.notifyPrevLink = FALSE;
    ipcInVideoPrm.noNotifyMode = TRUE;

    encPrm.numBufPerCh[0] = 4; //CIF
    {
    EncLink_ChCreateParams *pLinkChPrm;
    EncLink_ChDynamicParams *pLinkDynPrm;
    VENC_CHN_DYNAMIC_PARAM_S *pDynPrm;
    VENC_CHN_PARAMS_S *pChPrm;

    /* Primary Stream Params - D1 */
    for (i=0; i<gVencModuleContext.vencConfig.numPrimaryChn; i++)
    {
    pLinkChPrm = &encPrm.chCreateParams[i];
    pLinkDynPrm = &pLinkChPrm->defaultDynamicParams;

    pChPrm = &gVencModuleContext.vencConfig.encChannelParams[i];
    pDynPrm = &pChPrm->dynamicParam;

    pLinkChPrm->format = IVIDEO_H264HP;
    pLinkChPrm->profile = gVencModuleContext.vencConfig.h264Profile[i];
    pLinkChPrm->dataLayout = IVIDEO_FIELD_SEPARATED;
    pLinkChPrm->fieldMergeEncodeEnable = FALSE;
    pLinkChPrm->enableAnalyticinfo = pChPrm->enableAnalyticinfo;
    pLinkChPrm->enableWaterMarking = pChPrm->enableWaterMarking;
    pLinkChPrm->maxBitRate = pChPrm->maxBitRate;
    pLinkChPrm->encodingPreset = pChPrm->encodingPreset;
    pLinkChPrm->rateControlPreset = pChPrm->rcType;
    pLinkChPrm->enableSVCExtensionFlag = pChPrm->enableSVCExtensionFlag;
    pLinkChPrm->numTemporalLayer = pChPrm->numTemporalLayer;

    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.inQueParams.prevLinkId = ipcInVideoId;
    encPrm.inQueParams.prevLinkQueId = 0;
    encPrm.outQueParams.nextLink = gVencModuleContext.ipcBitsOutRTOSId;
    }

    encPrm.inQueParams.prevLinkId = ipcInVideoId;
    encPrm.inQueParams.prevLinkQueId = 0;
    encPrm.outQueParams.nextLink = gVencModuleContext.ipcBitsOutRTOSId;

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

    ipcBitsInHostPrm.baseCreateParams.inQueParams.prevLinkId = gVencModuleContext.ipcBitsOutRTOSId;
    ipcBitsInHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    MultiCh_ipcBitsInitCreateParams_BitsInHLOS(&ipcBitsInHostPrm);


    #ifndef SYSTEM_USE_VIDEO_DECODER
    capturePrm.isPalMode = Vcap_isPalMode();
    #endif
    System_linkCreate (gVcapModuleContext.captureId, &capturePrm, sizeof(capturePrm));

    System_linkCreate(dupId[0], &dupPrm[0], sizeof(dupPrm[0]));

    System_linkCreate(gVcapModuleContext.nsfId[0] , &nsfPrm, sizeof(nsfPrm));
    //System_linkCreate(dupId[1], &dupPrm[1], sizeof(dupPrm[1]));

    System_linkCreate(ipcOutVpssId , &ipcOutVpssPrm , sizeof(ipcOutVpssPrm) );
    System_linkCreate(ipcInVideoId , &ipcInVideoPrm , sizeof(ipcInVideoPrm) );

    System_linkCreate(gVencModuleContext.encId, &encPrm, sizeof(encPrm));

    System_linkCreate(gVencModuleContext.ipcBitsOutRTOSId, &ipcBitsOutVideoPrm, sizeof(ipcBitsOutVideoPrm));
    System_linkCreate(gVencModuleContext.ipcBitsInHLOSId, &ipcBitsInHostPrm, sizeof(ipcBitsInHostPrm));


    displayPrm[0].inQueParams[0].prevLinkId = dupId[0];
    displayPrm[0].inQueParams[0].prevLinkQueId = 1;
    displayPrm[0].displayRes = gVdisModuleContext.vdisConfig.deviceParams[0].resolution;
    System_linkCreate(gVdisModuleContext.displayId[0], &displayPrm[0], sizeof(displayPrm[0]));


    //MultiCh_memPrintHeapStatus();
    //Utils_encdecHdvicpPrfInit();
    }

    Void MultiCh_deleteVcapVencVdis_HSV6()
    {
    UInt32 dupId[2];
    UInt32 ipcOutVpssId;
    UInt32 ipcInVideoId;

    dupId[0] = SYSTEM_VPSS_LINK_ID_DUP_0;

    ipcOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0;
    ipcInVideoId = SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0;


    System_linkDelete(gVcapModuleContext.captureId);
    System_linkDelete(dupId[0]);
    System_linkDelete(gVcapModuleContext.nsfId[0]);
    System_linkDelete(ipcOutVpssId );
    System_linkDelete(ipcInVideoId );
    System_linkDelete(gVencModuleContext.encId);
    System_linkDelete(gVencModuleContext.ipcBitsOutRTOSId);
    System_linkDelete(gVencModuleContext.ipcBitsInHLOSId);
    System_linkDelete(gVdisModuleContext.displayId[0]);

    /* Print the HWI, SWI and all tasks load */
    /* Reset the accumulated timer ticks */
    //MultiCh_prfLoadCalcEnable(FALSE, TRUE, FALSE);
    //Utils_encdecHdvicpPrfPrint();

    }

    调试输出:

    [m3vpss ]
    [m3vpss ] *** Capture Driver Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] VIP Parser Reset Count : 0
    [m3vpss ]
    [m3vpss ] | Total Even Odd Total Even Odd Min / Max Min / Max Dropped Fid Repeat Frame Error Y/C
    [m3vpss ] CH | Fields Fields Fields FPS FPS FPS Width Height Fields Count (Desc Error Y/C)
    [m3vpss ] ------------------------------------------------------------------------------------------------------------
    [m3vpss ] 200 | 9812 9812 0 60 60 0 1920 / 1920 1080 / 1080 1 9811 0/0 (0/0)
    [m3vpss ]
    [m3vpss ] VIP Capture Port 2 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
    [m3vpss ]
    [m3vpss ] *** Capture List Manager Advanced Statistics ***
    [m3vpss ]
    [m3vpss ] List Post Count : 20444
    [m3vpss ] List Stall Count : 0
    [m3vpss ] List Post Time (ms) : Max = 0, Min = 0, Avg = 0, Total = 0
    [m3vpss ] INTC Timeout Count : (0, 0) (Min timeout value = 993, 1000)
    [m3vpss ] Descriptor miss found count : 0
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] VIP and VPDMA registers,
    [m3vpss ] VIP0 : FIQ_STATUS : 0x4810551c = 0x00000000
    [m3vpss ] VIP1 : FIQ_STATUS : 0x48105a1c = 0x00000000
    [m3vpss ] VPDMA: LIST_BUSY : 0x4810d00c = 0x00120000
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] 171757: CAPTURE: Fields = 9811 (fps = 59, CPU Load = 0)
    [m3vpss ] 171757: CAPTURE: Num Resets = 0 (Avg 0 ms per reset)
    [m3vpss ] 171758: SYSTEM : FREE SPACE : System Heap = 244112 B, Mbx = 10239 msgs)
    [m3vpss ] 171758: SYSTEM : FREE SPACE : SR0 Heap = 26539520 B (25 MB)
    [m3vpss ] 171758: SYSTEM : FREE SPACE : Frame Buffer = 272221056 B (259 MB)
    [m3vpss ] 171758: SYSTEM : FREE SPACE : Bitstream Buffer = 206616448 B (197 MB)
    [m3vpss ] TILER_STATS: CNT :8BIT
    [m3vpss ] TILER_STATS: CNT RESOLUTION: 16384 x 5440
    [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 16384 x 5436
    [m3vpss ] TILER_STATS: NUM FREE BUCKETS: 1
    [m3vpss ] TILER_STATS: NUM USED BUCKETS: 0
    [m3vpss ] TILER_STATS: TOTAL FREE AREA: 89063424 (99 %)
    [m3vpss ] TILER_STATS: TOTAL USED AREA: 0 (0 %)
    [m3vpss ] TILER_STATS: CNT :16BIT
    [m3vpss ] TILER_STATS: CNT RESOLUTION: 32768 x 1344
    [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 32768 x 1344
    [m3vpss ] TILER_STATS: NUM FREE BUCKETS: 1
    [m3vpss ] TILER_STATS: NUM USED BUCKETS: 0
    [m3vpss ] TILER_STATS: TOTAL FREE AREA: 44040192 (100 %)
    [m3vpss ] TILER_STATS: TOTAL USED AREA: 0 (0 %)
    [m3vpss ] 171759: SYSTEM : FREE SPACE : Tiler 8-bit = 89063424 B (84 MB) - TILER ON
    [m3vpss ] 171760: SYSTEM : FREE SPACE : Tiler 16-bit = 44040192 B (42 MB) - TILER ON
    [m3vpss ]
    [m3vpss ] *** [NSF0] NSF Statistics ***
    [m3vpss ]
    [m3vpss ] Elasped Time : 158 secs
    [m3vpss ] Total Fields Processed : 9811
    [m3vpss ] Total Fields FPS : 83 FPS
    [m3vpss ]
    [m3vpss ]
    [m3vpss ] CH | In Recv In Reject In Process Out User Out Out
    [m3vpss ] Num | FPS FPS FPS FPS Skip FPS Skip FPS
    [m3vpss ] ------------------------------------------------
    [m3vpss ] 0 | 60 0 60 60 0 0
    [m3vpss ]
    [m3vpss ] 171762: DISPLAY: HDDAC(BP0) : 59 fps, Latency (Min / Max) = ( 76 / 81 ), Callback Interval (Min / Max) = ( 16 / 17 ) DropCount:0 DispLatency (Min / Max) = ( 49 / 66 ) !!!
    [m3vpss ] 171762: DISPLAY DRV: HDDAC(BP0) : Q:[9813] Display:[9848], Repeat:[37], DQ:[9810]
    [m3vpss ] 171762: DISPLAY: UNDERFLOW COUNT: HDMI(BP0) 9534, HDDAC(BP0) 0, DVO2(BP1) 9534, SDDAC(SEC1) 19395
    [m3vpss ] 171762: SYSTEM : FREE SPACE : System Heap = 244112 B, Mbx = 10239 msgs)
    [m3vpss ] 171763: SYSTEM : FREE SPACE : SR0 Heap = 26539520 B (25 MB)
    [m3vpss ] 171763: SYSTEM : FREE SPACE : Frame Buffer = 272221056 B (259 MB)
    [m3vpss ] 171763: SYSTEM : FREE SPACE : Bitstream Buffer = 206616448 B (197 MB)
    [m3vpss ] TILER_STATS: CNT :8BIT
    [m3vpss ] TILER_STATS: CNT RESOLUTION: 16384 x 5440
    [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 16384 x 5436
    [m3vpss ] TILER_STATS: NUM FREE BUCKETS: 1
    [m3vpss ] TILER_STATS: NUM USED BUCKETS: 0
    [m3vpss ] TILER_STATS: TOTAL FREE AREA: 89063424 (99 %)
    [m3vpss ] TILER_STATS: TOTAL USED AREA: 0 (0 %)
    [m3vpss ] TILER_STATS: CNT :16BIT
    [m3vpss ] TILER_STATS: CNT RESOLUTION: 32768 x 1344
    [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 32768 x 1344
    [m3vpss ] TILER_STATS: NUM FREE BUCKETS: 1
    [m3vpss ] TILER_STATS: NUM USED BUCKETS: 0
    [m3vpss ] TILER_STATS: TOTAL FREE AREA: 44040192 (100 %)
    [m3vpss ] TILER_STATS: TOTAL USED AREA: 0 (0 %)
    [m3vpss ] 171765: SYSTEM : FREE SPACE : Tiler 8-bit = 89063424 B (84 MB) - TILER ON
    [m3vpss ] 171765: SYSTEM : FREE SPACE : Tiler 16-bit = 44040192 B (42 MB) - TILER ON
    [m3video] 177765: HDVICP-ID:0
    [m3video] All percentage figures are based off totalElapsedTime
    [m3video] totalAcquire2wait :0 %
    [m3video] totalWait2Isr :98 %
    [m3video] totalIsr2Done :0 %
    [m3video] totalWait2Done :98 %
    [m3video] totalDone2Release :0 %
    [m3video] totalAcquire2Release :100 %
    [m3video] totalAcq2acqDelay :0 %
    [m3video] totalElapsedTime in msec : 67
    [m3video] numAccessCnt: 4
    [m3video] IVA-FPS : 0
    [m3video] Average time spent per frame in microsec: 16415
    [m3video] 177766: HDVICP-ID:1
    [m3video] All percentage figures are based off totalElapsedTime
    [m3video] totalAcquire2wait :0 %
    [m3video] totalWait2Isr :0 %
    [m3video] totalIsr2Done :0 %
    [m3video] totalWait2Done :0 %
    [m3video] totalDone2Release :0 %
    [m3video] totalAcquire2Release :0 %
    [m3video] totalAcq2acqDelay :0 %
    [m3video] totalElapsedTime in msec : 0
    [m3video] numAccessCnt: 0
    [m3video] IVA-FPS : 0
    [m3video] Average time spent per frame in microsec: 0
    [m3video] 177767: HDVICP-ID:2
    [m3video] All percentage figures are based off totalElapsedTime
    [m3video] totalAcquire2wait :0 %
    [m3video] totalWait2Isr :0 %
    [m3video] totalIsr2Done :0 %
    [m3video] totalWait2Done :0 %
    [m3video] totalDone2Release :0 %
    [m3video] totalAcquire2Release :0 %
    [m3video] totalAcq2acqDelay :0 %
    [m3video] totalElapsedTime in msec : 0
    [m3video] numAccessCnt: 0
    [m3video] IVA-FPS : 0
    [m3video] Average time spent per frame in microsec: 0
    [m3video]
    [m3video] *** ENCODE Statistics ***
    [m3video]
    [m3video] Elasped Time : 158 secs
    [m3video]
    [m3video]
    [m3video] CH | In Recv In Skip In User Out Latency
    [m3video] Num | FPS FPS Skip FPS FPS Min / Max
    [m3video] --------------------------------------------
    [m3video] 0 | 60 60 0 0 255 / 0
    [m3video]
    [m3video] Multi Channel Encode Average Submit Batch Size
    [m3video] Max Submit Batch Size : 24
    [m3video] IVAHD_0 Average Batch Size : 0
    [m3video] IVAHD_0 Max achieved Batch Size : 0
    [m3video]
    [m3video] Multi Channel Encode Batch break Stats
    [m3video] Total Number of Batches created: 0
    [m3video] All numbers are based off total number of Batches created
    [m3video] Batch breaks due to batch sizeexceeding limit: 0 %
    [m3video] Batch breaks due to ReqObj Que being empty: 0 %
    [m3video] Batch breaks due to changed resolution class: 0 %
    [m3video] Batch breaks due to interlace and progressivecontent mix: 0 %
    [m3video] Batch breaks due to channel repeat: 0 %
    [m3video] Batch breaks due to different codec: 0 %
    [m3vpss ]
    [m3vpss ] 180770: LOAD: CPU: 7.6% HWI: 1.5%, SWI:1.3%
    [m3vpss ]
    [m3vpss ] 180770: LOAD: TSK: IPC_OUT_M30 : 0.6%
    [m3vpss ] 180770: LOAD: TSK: CAPTURE : 0.5%
    [m3vpss ] 180770: LOAD: TSK: NSF0 : 0.9%
    [m3vpss ] 180770: LOAD: TSK: DISPLAY0 : 0.7%
    [m3vpss ] 180770: LOAD: TSK: DUP0 : 0.3%
    [m3vpss ] 180770: LOAD: TSK: MISC : 1.8%
    [m3vpss ]
    [m3video]
    [m3video] 181271: LOAD: CPU: 3.4% HWI: 0.5%, SWI:0.9%
    [m3video]
    [m3video] 181271: LOAD: TSK: IPC_IN_M30 : 0.4%
    [m3video] 181272: LOAD: TSK: IPC_BITS_OUT0 : 0.3%
    [m3video] 181272: LOAD: TSK: ENC0 : 1.1%
    [m3video] 181272: LOAD: TSK: MISC : 0.2%
    [m3video]
    [c6xdsp ]
    [c6xdsp ] 181447: LOAD: CPU: 0.2% HWI: 0.0%, SWI:0.0%
    [c6xdsp ]
    [c6xdsp ] 181447: LOAD: TSK: MISC : 0.2%
    [c6xdsp ]

    仍然是将全部帧丢弃!

  • 你好;

          刚才又看了一下代码,发现在ipcBitsInHost link 配置的时候,少配置2个参数;

        

    这里需要添加输出队列的配置,如果没有系统应对是默认为0,是无法输出数据的;

    添加后如下:

  • 其他相关的参数如

        ipcBitsInHostPrm.baseCreateParams.notifyNextLink                = FALSE;

        ipcBitsInHostPrm.baseCreateParams.notifyPrevLink                = FALSE;

        ipcBitsInHostPrm.baseCreateParams.noNotifyMode                  = TRUE;

    参考usecase的设计,尽量的加上,按demo程序来

  • ipcBitsInHostPrm 参数的回调函数你实现了么?

  • 你好,

            usecase按照你的建议修改好,测试后发现M3Video仍然后掉帧,后来有朋友提到可能是ipcBits回调函数注册有点问题,

    根据1、ipcBitsInHostPrm的规范配置 2、回调函数的注册处理 这两个思路,最终把问题解决了

    再次感谢!

  • 你好,

          检查了一下回调函数,发现此处的注册确实有点问题,已解决

    谢谢!

  • 您好,我们也遇到类似的跳帧问题,我想问的是配置ipcBitsInHost link的时候,您加的这两句代码是什么意思?

    ipcBitsInHostPrm.baseCreateParams.numOutQue = 1; 
    ipcBitsInHostPrm.baseCreateParams.numChPerOutQue[0] = 1;

    根据我们之前在调试DM8168以及DM8148的程序来看,上面这两句代码是多余的,对于第二个表达式,在DM385的ipnc_rdk中,ipcBitsInHostPrm.baseCreateParams结构体里面没有 numChPerOutQue这个成员,只有outQueParams这个成员,而这个成员使用来指定下一个link的ID的。

    压缩的数据已经出压缩M3了,通过回调函数传到A8中了,已经没有下一级link了,那么这两句是不是多余了?

    我测试过添加第一句的情况,采集1080P25,压缩1080P25,根据M3的打印信息来看确实是压缩的25,但是那个是一个统计值,通过VLC看视频的编码信息,看到解码帧或者解码块是按照26来增加的。