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.

SKEL_Fxns override and QualiTI failure

Expert 2030 points

I am getting this message for the QualiTI failure when I override Universal skeleton:

Problem: Not all external symbols declared by the module have the "_MOD_VEN_" prefix (i.e. module_vendor_).

The following is the list of offending symbols:
UNIVERSAL_create
UNIVERSAL_delete

These two are included in the SKEL_Fxns  table per the guide http://processors.wiki.ti.com/index.php/Overriding_stubs_and_skeletons.

Also don't I have to change the UNIVERSAL_process call in  module_vendor_skel.c to MOD_VEN_process and do the same for control call too, when I override?

 

 

  • Your codec library shouldn't have UNIVERSAL_create or UNIVERSAL_delete in it.

    I don't fully understand what you're trying to do, but I think we can work through it.  What packages/libraries do you have right now?  Maybe something like these two packages:

    1. mycompany.mycodec - with a codec library
    2. mycompany.mycodec.ce - with the CE-compliant packaging (and, if you want, custom stub/skel)?

    If it's something like that, package #1 shouldn't know anything about CE, and should pass QualiTI... and package #2 would know about CE, might include custom stubs/skels if you want, and isn't appropriate for QualiTI.

    Also, why are you creating your own custom stubs/skels?  Is there a missing behavior, or something the trace isn't giving you enough visibility into?

    Chris


  • I am using gencodecpkg that came with codec_engine_3_21_00_13_eng. I don't have ce folder in the wizard generated codec folder. So I have only mycompany.mycodec, and I have skel.c in this folder. 

    As to why we need it, please see this post http://e2e.ti.com/support/embedded/f/356/p/110919/393091.aspxSince we are getting Server.skelCachingPolicy for IUniversal in CE 3.x, I am quite happy not to build custom skel.

    However for another product (DVSDK 4 with CE 2.x) we will need custom skel for the same reason mentioned in the above post. Hence the question. Skel.c still calls UNIVERSAL_process as no mention of changing this was made in the wiki, I think it should be calling MYCOMPANY_MYCODEC_process. 

    BTW, CE team (yourself and Janet) have been enormously helpful with answering questions.

    Thanks Very Much

    RV

     

  • CE 2.x has support for Server.skelCachingPolicy, which has some added options, including one to disable _all_ cache calls.  If you're not integrating any other codecs, and your codec doesn't need skels to manage cache at all, you could set Server.skelCachingPolicy = Server.NONE.

    But, assuming you still do need to provide your own skels (maybe not stubs, since you're just overriding cache and stubs don't manage that anyway), those skels should be placed in a different library.

    The package.bld script defines what libs are built.  You might edit your package.bld to look something like this (new code block in red):

            SRCS = ["mycodec"];
            libName = "lib/" + profile + "/mycodec";
            Pkg.addLibrary(libName, targ, {
                profile: profile
            }).addObjects(SRCS);


            Pkg.addLibrary("lib/" + profile + "/skel", targ, {
                profile: profile
            }).addObjects(["skel.c"]);

    This will create 2 libraries, one with your QualiTI-validate-able codec, the other with your skels.  Note that you'll also have to update package.xs to return _two_ libraries from this package instead of one; the getLibs() fxn returns a semi-colon delimited list of libs.

    Chris