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.

Integration issues in the codec engine

Hi people.

I need help with integration of an algo into the server side.

I have an algorithm which I need to integrate into the codec engine. It is an audio algo but is not currently part of the engine.

Since the algo is an audio encoder, I want to include it as part of the audio_enc codec present as an example in the Codec Engine.

My implementation idea is as follows:

Create a static library using Code Composer Studio V4.1.

Place the resulting .a64P library in the Codec engine "audio_enc/lib/."

Compile and create the Server executable.

 

I need to know weather this is a workable solution.

I am currently getting the following error:

undefined                        first referenced
 symbol                              in file
---------                        ----------------
_arraycopy                          /home/vyas/dvsdk_2_00_00_22/codec_engine_2_23_01/examples/ti/sdo/ce/examples/codecs/audenc_copy/lib/audenc_copy.a64P
>>   error: relocation overflow occurred at address 0x00000070 in section
            '.text:algProcess' of input file 'audenc_copy.o64P
            (/home/vyas/dvsdk_2_00_00_22/codec_engine_2_23_01/examples/ti/sdo/ce/examples/codecs/audenc_copy/lib/audenc_copy.a64P)'.  The 29-bit PC-relative displacement 471266160 at this location is too large to fit into the 21-bit PC-Relative field; the destination address is too far away from the instruction. You may need to add a mask to the assembly instruction or use other target specific assembly features if you really only need the lowest 21 bits of this symbol. Please see the section on Relocation in the Assembly User's Guide.

I placed a function call arraycopy() in the "AUDENCCOPY_TI_process".

Could someone help me out ??

  • If you're just starting, you should strongly consider downloading the latest CE release and using the GenCodecPkg wizard.

    GenCodecPkg will guide you through assigning a [unique!] codec package name, correct [and unique!] symbol names, etc.  If you simply edit the existing audenc_copy example, that will work in a closed system (which may be fine for your usage), but you would be unable to integrate that codec into a system with either 1) the existing CE example or [more importantly] 2) anyone else who did exactly the same as you.

    Another tip, again since you're starting from scratch, you should consider using the newer AUDENC1 interface rather than the older [and now deprecated] AUDENC interface.  If you use GenCodecPkg, you can select AUDENC1 from the "base interface" list on the 2nd page.


    WRT you actual question, the issue is your codec is - as you said - calling a function named arraycopy(), but the implementation of that function can't be found by the linker.  Is arraycopy() in a separate library?

    Chris

  • Hi Cris,

    Thanks for your reply. I will look into the GenCodecPkg wizard.

    In my current implementation, I have added all my project files to the audenc_copy project in CCS and made a function call from the same. So, arraycopy() is now part of the audenc_copy.

    Would this implementation be ok ??

    Actually my files were in cpp and I had some Name Mangling issues which are now resolved.

    I have to account for exception handling for which I need to use the rts6400_eh.lib. Would there be a specific way of informing the system to pick this library as against the rts64plus.lib ??