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.

About Appro IPNC v2.6 moduletest.out

Hello experts,

Moduletest.out in Appro ipnc v2.6 run encoder and decoder error, and IPNC previous version has such problems also, but module test in the DVR RDK works very well, so I feel very confused. Now we need develop our own application based on the IPNC module test, so we need overcome the errors. Please help us…

 

Following is the error record…

----------------

# ./moduletest.out alg_vidDec

 

 CLK Hz,

 ARM   Hz =  297000000

 DDR   Hz =  243000000

 VPSS  Hz =  243000000

 IMCOP Hz =  243000000

 

 [OSA_FILE ] Reading file [/mnt/nand/IMG_Paramset.bin] ... ERROR

IMAGE TUNE: Paramset File is not available..... Setting DEFAULT parameter

 [OSA_FILE ] Reading file [test.264] ... Done. [1972740 bytes]

 ERROR  (alg_vidDec.c|ALG_vidDecCreate|86): Failed to open video decode algorithm (h264dec)

 ERROR  (alg_vidDec.c|ALG_vidDecTestMain|442): ALG_vidDecCreate()

# ./moduletest.out alg_vidEnc

 

 CLK Hz,

 ARM   Hz =  297000000

 DDR   Hz =  243000000

 VPSS  Hz =  243000000

 IMCOP Hz =  243000000

 

 [OSA_FILE ] Reading file [/mnt/nand/IMG_Paramset.bin] ... ERROR

IMAGE TUNE: Paramset File is not available..... Setting DEFAULT parameter

 [OSA_FILE ] Reading file [videoQVGA.yuv420] ... Done. [460800 bytes]

 ERROR  (alg_vidEnc.c|ALG_vidEncSetDynamicParams|392): XDM_SETPARAMS failed, status=-1

 ERROR  (alg_vidEnc.c|ALG_vidEncTestMain|993): ALG_vidEncCreate()

 

Marshal

  • Hi,

     

    Moduletest has not been veified in the latest releases, as the codec would have changed from earlier reelases, the  changed paramters needs to be set in the function.

     

    SO please modify the params in the file alg_videenc.c in function ALG_vidEncTestMain

     

    Regards,

     

    Raghu

     

  • Hi:

       I try to the function on the ver20 ,but the result is the same.  How should I  modify?

    # ./moduletest.out alg_vidEnc
    DRV_SyncRst: module = 47, domain = 0, state = 0
    DRV_SyncRst: module = 47, domain = 0, state = 3
     
     CLK Hz,
     ARM   Hz =  297000000
     DDR   Hz =  270000000
     VPSS  Hz =  270000000
     IMCOP Hz =  270000000
     
     [OSA_FILE ] Reading file [/mnt/nand/IMG_Paramset.bin] ... ERROR
    IMAGE TUNE: Paramset File is not available..... Setting DEFAULT parameter
     [OSA_FILE ] Reading file [videoQVGA.yuv420] ... Done. [760320 bytes]
     ERROR  (alg_vidEnc.c|ALG_vidEncSetDynamicParams|346): XDM_SETPARAMS failed, status=-1
     ERROR  (alg_vidEnc.c|ALG_vidEncTestMain|851): ALG_vidEncCreate()

  • Hello,

    Absolutely agree with Ken Yan said, I tried from v2.0 to v2.6 and modified the paras times and times, but it depressed me. So please Raghu help us, and I think many DM365 developers trapped in this problem.

    The following is the code I tried to change, but failed.

    ------------

     

    int ALG_vidEncTestMain(int argc, char **argv)

    {

      int status, i, k, numFrames=1000;

      Uint8 *inVirtAddr=NULL, *inPhysAddr, *outVirtAddr=NULL, *outPhysAddr, *curOutAddr;

      OSA_PrfHndl prfVidEnc[ALG_VID_ENC_TEST_CHANNELS];

      Uint32 size=4*MB, fileSize;

      void *algVidEncHndl[ALG_VID_ENC_TEST_CHANNELS];

      ALG_VidEncCreate createPrm;

      ALG_VidEncRunPrm runPrm;

      ALG_VidEncRunStatus runStatus;

      FILE *fileHndl[ALG_VID_ENC_TEST_CHANNELS];

      char filename[20];

     

      status = DRV_init();

      if(status!=OSA_SOK) {

        OSA_ERROR("DRV_init()\n");

        return status;

      }

     

      status = ALG_sysInit();

      if(status!=OSA_SOK)  {

        DRV_exit();

        return status;

      }

     

      inVirtAddr     = OSA_cmemAlloc(size, 32);

      outVirtAddr    = OSA_cmemAlloc(size, 32);

     

      inPhysAddr     = OSA_cmemGetPhysAddr(inVirtAddr);

      outPhysAddr    = OSA_cmemGetPhysAddr(outVirtAddr);

     

      memset(inVirtAddr, 0x0, size);

      memset(outVirtAddr, 0x0, size);

     

      if(   inVirtAddr==NULL || outVirtAddr == NULL

         || inPhysAddr==NULL || outPhysAddr == NULL

        ) {

        OSA_ERROR("OSA_cmemAlloc()\n");

        goto error_exit;

      }

     

      memset(fileHndl, 0, sizeof(fileHndl));

      memset(&createPrm, 0, sizeof(createPrm));

     

      createPrm.codec           = ALG_VID_CODEC_H264;

      createPrm.dataFormat      = DRV_DATA_FORMAT_YUV420;

      createPrm.width           = 352;  //1920

      createPrm.height          = 240;  //1088

      createPrm.offsetH         = 352;  //1920

      createPrm.offsetV         = 240;  //1088

      createPrm.bitrate         = 0.5*1000*1000;

      createPrm.mode            = ALG_VID_ENC_MODE_STANDARD;

      createPrm.keyFrameInterval= 30;

      createPrm.mbMvOutEnable   = FALSE;

      createPrm.qValue          = 75;

      createPrm.ddrEnable       = 0;//by marshal

      createPrm.forceKeyFrame   = FALSE;

     

           createPrm.qpinit                          = (createPrm.codec==ALG_VID_CODEC_H264)?28:4;

             createPrm.qpmin                                  = 1;

             createPrm.qpmax                                 = (createPrm.codec==ALG_VID_CODEC_H264)?51:31;

             createPrm.packetsize                 = 100; //set to 100%

             createPrm.encodePreset = ALG_VID_ENC_PRESET_AUTO; //set to 100%

     

     

      if(createPrm.dataFormat==DRV_DATA_FORMAT_YUV420)

        status = OSA_fileReadFile("videoQVGA.yuv420", inVirtAddr, size, &fileSize);

      else

        status = OSA_fileReadFile("video.yuv422", inVirtAddr, size, &fileSize);

      if(status!=OSA_SOK) {

        OSA_ERROR("OSA_fileReadFile()\n");

        goto error_exit;

      }

     

      memset(algVidEncHndl, 0, sizeof(algVidEncHndl));

     

      for(k=0; k<ALG_VID_ENC_TEST_CHANNELS; k++) {

        algVidEncHndl[k] = ALG_vidEncCreate(&createPrm);

        if(algVidEncHndl[k]==NULL) {

          OSA_ERROR("ALG_vidEncCreate()\n");

          goto error_exit;

        }

     

        OSA_prfReset(&prfVidEnc[k]);

     

        sprintf( filename, "%s/CH%02d.bits", ALG_VID_ENC_TEST_FILESYS, k);

     

        fileHndl[k] = fopen(filename, "wb");

     

        if(fileHndl[k]==NULL) {

          OSA_ERROR("fopen(%s)", filename);

          goto error_exit;

        }

      }

     

      curOutAddr = outVirtAddr;

     

      for(i=0; i<numFrames; i++) {

     

        runPrm.inStartX       = 0;

        runPrm.inStartY       = 0;

        runPrm.inAddr         = inVirtAddr;

        runPrm.outAddr        = curOutAddr;

        runPrm.mbMvInfo       = NULL;

        runPrm.outDataMaxSize = size;

    //    runPrm.roiPrm.numROI  = 0;

     

        for(k=0; k<ALG_VID_ENC_TEST_CHANNELS; k++) {

     

          #if 1

          OSA_prfBegin(&prfVidEnc[k]);

          status = ALG_vidEncRun(algVidEncHndl[k], &runPrm, &runStatus);

          OSA_prfEnd(&prfVidEnc[k], 1);

          #endif

     

          if(status==OSA_SOK) {

            #ifdef ALG_VID_ENC_TEST_DEBUG

            OSA_printf(" ALG: VidEnc: CH %d: %d: %ld bytes, key_frame = %ld, MB = %d\n", k, i, runStatus.bytesGenerated, runStatus.isKeyFrame, runStatus.numMB);

            #endif

     

            fwrite(curOutAddr, runStatus.bytesGenerated, 1, fileHndl[k]);

     

          } else {

            OSA_printf(" ALG: VidEnc: ALG_vidEncRun() ERROR !!!\n");

            break;

          }

        }

        #if 0

        if((i%11)==0) {

          ALG_vidDecTestMain(0, NULL);

        }

        #endif

      }

     

      #ifdef ALG_VID_ENC_TEST_DEBUG

      for(k=0; k<ALG_VID_ENC_TEST_CHANNELS; k++) {

        OSA_prfPrint(&prfVidEnc[k], "VID ENC", 0);

      }

      #endif

     

    error_exit:

     

      for(k=0; k<ALG_VID_ENC_TEST_CHANNELS; k++) {

        ALG_vidEncDelete(algVidEncHndl[k]);

        if(fileHndl[k])

          fclose(fileHndl[k]);

      }

     

      if(inVirtAddr)

        OSA_cmemFree(inVirtAddr);

     

      if(outVirtAddr)

        OSA_cmemFree(outVirtAddr);

     

      ALG_sysExit();

      DRV_exit();

     

      return status;

    }

     

  • OK, let me check and get back

     

    Regards,

     

    Raghu

     

  • Raghu,

    Thank you very much! I'm waiting here online...  

    Marshal

  • Hello Raghu,

     

    About the alg_vidEnc, I try to change the createPrm in ALG_vidEncTestMain func for many times again, and finally it works!

    But alg_vidDec still can't work, please help...

    Marshal

    -------------------

    # ./moduletest.out alg_vidDec test.264 320 240
     
     CLK Hz,
     ARM   Hz =  297000000
     DDR   Hz =  243000000
     VPSS  Hz =  243000000
     IMCOP Hz =  243000000
     
     [OSA_FILE ] Reading file [/mnt/nand/IMG_Paramset.bin] ... ERROR
    IMAGE TUNE: Paramset File is not available..... Setting DEFAULT parameter
     [OSA_FILE ] Reading file [test.264] ... Done. [1972740 bytes]
     ERROR  (alg_vidDec.c|ALG_vidDecCreate|86): Failed to open video decode algorithm (h264dec)
     ERROR  (alg_vidDec.c|ALG_vidDecTestMain|442): ALG_vidDecCreate()