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.

why the module hangs?

We developed a denoising module and integrated it with a h.264 encoder, whose version is 02.02.00.The denoise algorithm is packaged in the VIDDEC_process. In a  test, the denoising module read yuv data from a file and denoised the data.It works well singly.While the module is integrated and run with h.264 encoder at the same time, it hangs.A series of test indicated that the denoiser conflicted with other modules.We removed the dma,enlarged stacks,malloc  very small size of memory to find out what caused the conflicts.However, these trials did not work, the VIDDEC_process hang still.

Any advice to find out the reason?
Thanks!!
  
  • Hi,

    Which device is this ?

    regards

    Yashwant

  • Bellow is the details.

    Platform:DM6441

    Data flow:

                                 YUV 4:2:0                      denoised YUV
      Video capture--------------->Denoising---------------------->H.264 Encoder
        
        The denoising module is packaged is VIDDEC interface.

    Pseudo codes:

        VIDENC1_create   
        VIDDEC_create;
       
        status = VIDENC1_control(( VIDENC1_Handle )pVidEncEnv->hVE,
                                   XDM_GETBUFINFO,
                                   (IVIDENC1_DynamicParams *)&dynamicEncParams,
                                   (IVIDENC1_Status *)&encstatus);
                                  
        status = VIDENC1_control(( VIDENC1_Handle )pVidEncEnv->hVE,
                                    XDM_SETPARAMS,
                                    (IVIDENC1_DynamicParams *)&dynamicEncParams,
                                    &encstatus);
                                   
                                   
        status = VIDDEC_process(hVE,
                               &inBufDesc, &outBufDesc,
                               (IVIDDEC_InArgs*)(&stDenoiseInArgs),
                               (IVIDDEC_OutArgs*)(&stDenoiseOutArgs)) ;
                              
        status = VIDENC1_process(hVE, &inBuffs, &outBuffs, &vidEncInArgs, &vidEncOutArgs) ;

       Discription:

    The VIDDEC_process() can run well.When the VIDENC1_control(...,XDM_GETBUFINFO,...) is called, the VIDDEC_process hangs.

    Now it seems that the XDM_GETBUFINFO command disabled the VIDDEC_process.Why??

    Thanks!

    Best regards.

  • This is a trciky question, since the hang happens in the code written by you, its difficult for us to comment. As such, there is nothing special in XDM_GETBUFINFO control call, it is generally a plain C code.

    Have you found which part of your code it is hanging ? You can add prints at various place to find the exact loaction where it hangs. That can throw some light.

    regards

    Yashwant