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.

C674x H.264 encoder example failure

Dear codec experts,

I am desperately trying to get the TestAppEncoder DSP only project to run on the DSP on the L138 Experimentor kit. This project is located in the DVDSK download at C:\ti-dvsdk_omapl138-evm_4_02_00_06\codecs-omapl138_4_02_00_00\packages\ti\sdo\codecs\h264enc\app\Client\Build and is a CCS3v3 project. In the associated documentation (H264_encoder_DM6446_UserGuide.pdf) the following is required:

- cgt 6.1.2
- dspbios 5.31.02
- fc 2.20.00.15

This is indeed what is in the project file.

However - the DVDSK comes with

- cgt6x_6_1_14 (for linux)
- dspbios 5.41.03.17
- fc  2.26.00.01

and is able to compile the linux based codec engine. So I assume that the H264 encoder h264venc_ti.l64P has no compatibility issues with these.

I then had to make a CCS4.2.4.00033 project from the CCS3.3 project as I need to work in this environment. I installed cgt 6.1.14 for windows and pointed CCS4.2.4 to use this as well as the dspbios and fc on the DVDSK. The application TestAppEncoder was able to compile with no errors once I changed the H264VEncApp.cmd file to match the L138:

MEMORY{
 
    L1DRAM  : o = 0x00f00000, l = 0x00010000
    ERAM    : o = 0xC0000000, l = 0x08000000
 }

On debugging - all ran well until line 308:


    /* Provide the Algorithm handle to DMAN3 Interface for granting channels */
    handleArray[0] = (IALG_Handle) handle;
    dmaFxns[0]     = &H264VENC_TI_IDMA3;

    if ((retval=DMAN3_grantDmaChannels(groupId, handleArray, dmaFxns, numAlgs))
         != DMAN3_SOK)
    {
      printf("\nProblem adding algorithm's dma resources");
      printf("... Exiting for this configuration... \n");
   continue;
    }

where a  DMAN3_EFAIL: Failed to initialize handle, or dmaFxns dmaInit() failed. returned. As DMAN3 is also black box - I dont know why this occurs.

On closer inspection, I see that H264VENC_TI_IDMA3 is located at 0x00007798 which is an illegal address. Problem is - this variable is declared extern in h264vebc_ti.h and I suspect it is inside h264venc_ti.l64P. Maybe it is this?

But the question is -  how does this very same h264venc_ti.l64P work in the codec engine on the same device? Please advise what could be wrong as I need the H264 encoder/decoder to link into a DSP/BIOS program on the DSP side of the L138.

Regards

Ian

  • Hi Ian,

    DMAN3_grantDmaChannels would fail if there aren't enough DMA resources (e.g. TCCs, PaRAM entries, etc.) to satisfy what has been requested by the H264 algorithm instance. You can try turning the DMAN3 trace on to get more debug information. This article discusses how to enable trace in the .cfg file from the application:

    http://processors.wiki.ti.com/index.php/Trace_in_Framework_Components

    Perhaps you will find that the DMAN3 module simply wasn't configured properly with the resources needed by the codec. More info on DMAN3 configuration can be found here:

    http://processors.wiki.ti.com/index.php/Framework_Components_DMAN3/ACPY3_Users_Guide#DMAN3_Configuration

    In a typical Codec-Engine-based application, the application links in the library file h264venc_ti.l64P and binds itself to the symbols "H264VENC_TI_IH264VENC", "H264VENC_TI_IDMA3", etc. listed in ti/sdo/codecs/h264enc/ce/H264ENC.xdc (file path might differ as I don't have the exact version of your codec in front of me). These symbols are exposed globally by the library file.

    You may also want to post your question to the Multimedia Software Codecs forum, as they may have some advice regarding the specifics of the TestAppEncoder application itself and how to rebuild it


    Best regards,

    Vincent

  • Hello Ian,

    Did you manage to run this project? I'm doing the same thing, I have problems and nobody has knowledge to help me.

    Regards,