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.

[参考译文] Linux/TMS320DM368:多线程和引擎句柄以及算法实例

Guru**** 2618835 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/580565/linux-tms320dm368-multiple-thread-and-engine-handle-and-algorithmic-instance

器件型号:TMS320DM368

工具/软件:Linux

我很担心我的问题。

我从主进程创建了许多线程。

有三个使用引擎的螺纹。

螺纹1:h264enc

thread2:h264dec

螺纹3:jpegenc

每个线程都打开自己的引擎并有自己的引擎句柄。但是当我运行程序时。当所有线程都在输入时、我必须在线程1之前添加一些延迟、以等待线程2打开其引擎。或者无法成功创建 h264编码器。引擎句柄是 不为空。相反,当我在 thread2 init.it 无法正常工作之前添加一些时间延迟时。h264decoder 将为空。

然后我有 thread3、samely、我遇到了打开 jpegencoder 失败的问题。

当我参考功能指南时、他们说我可以在多个线程中有许多单独的句柄。但为什么我在多个线程中创建多个算法实例失败了。 是否有人遇到与我相同的问题?或者我帮助我的人。 我非常需要你的帮助。非常感谢。真诚。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    1.您使用的是哪种软件?  

    2.如果您使用的是 DVSDK、请共享您的.cfg 文件、其版本以及您看到的错误日志。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的患者回复。

    我的.cfg 文件:

    /*加载对编解码器引擎 OSAL 的支持*/

    VAR osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');

    osalGlobal.runtimeEnv = osalGlobal. linux;



    /*加载对'DAVINGI Multimedia Application Interface'模块的支持*/

    VAR DMAI = XDC.loadPackage ("ti.sdo.dmai");



    环境['xdc.cfg.check.fatal']='fals';





    VAR RMAN = xdc.useModule('ti.sdo.fc.rman.RMAN');

    RMAN.useDSKT2 = false;

    RMAN.persistentAllocFxn ="_ALG_LOLOADMemory";

    RMAN.persistentFreeFxn ="_ALG_FREEMemory ";

    RMAN.semCreateFxn ="Sem_create";

    RMAN.semDeleteFxn ="sem_delete ";

    RMAN.semPendFxn ="Sem_pend";

    RMAN.semPostFxn ="Sem_post;

    RMAN.tableSize = 10;



    VAR EDMA3 = xdc.useModule('ti.sdo.fc.edma3.Settings');



    VAR VICP = xdc.useModule('ti.sdo.linuxutils.vicp.VICP');



    VAR HDVICP = xdc.useModule('ti.sdo.fc.ires.hdvicp.HDVICP');



    VAR VICP2 = xdc.useModule('ti.sdo.fc.ires.vicp.VICP2');



    VAR VICPSYNC = xdc.useModule('ti.sdo.fc.vicpsync.VICPSYNC');



    VAR HDVICPSYNC = xdc.useModule('ti.sdo.fc.hdvicpsync.HDVICPSYNC');



    VAR MEMUTILLS= xdc.useModule('ti.sdo.fc.memutils.MEMUTILS');



    VAR ADDRSPACE = xdc.useModule('ti.sdo.fc.ires.addrspace.ADDRSPACE');



    VAR EDMA3CHAN = xdc.useModule('ti.sdo.fc.ires.edma3chan.EDMA3CHAN');



    VAR EDMA = xdc.useModule('ti.sdo.linuxutils.edma.EDMA');



    VAR CMEM = xdc.useModule('ti.sdo.linuxutils.cmem.CMEM');



    VAR MEMTCM = xdc.useModule('ti.sdo.fc.ires.memtcm.MEMTCM');

    MEMTCM.cmemBlockId = 1;//因为我们在 insmod 命令中使用_1。



    xdc.loadPackage ("ti.sdo.ce.video");

    xdc.loadPackage ("ti.sdo.fc.hdvicpsync");



    /*

    *==== 引擎配置====

    *



    VAR MPEG4ENC = xdc.useModule('ti.sdo.codecs.mpeg4enc.ce.MPEG4ENC');

    VAR H264ENC = xdc.useModule('ti.sdo.codecs.h264enc.ce.H264ENC');

    VAR MPEG2ENC = xdc.useModule('ti.sdo.codecs.mpeg2enc.ce.MPEG2ENC');

    VAR MPEG4DEC = xdc.useModule('ti.sdo.codecs.mpeg4dec.ce.MPEG4DEC');

    VAR H264DEC = xdc.useModule('ti.sdo.codecs.h264dec.ce.H264DEC');

    VAR MPEG2DEC = xdc.useModule('ti.sdo.codecs.mpeg2dec.ce.MPEG2DEC');

    VAR JPEGENC = xdc.useModule('ti.sdo.codecs.jpegenc.ce.JPEGENC');


    VAR Engine = xdc.useModule('ti.sdo.ce.Engine');

    VAR myEngine = Engine.create ("编码"、[


    {name:"mpeg4en"、mod:MPEG4ENC、local:true、groupId:1}、

    {name:"h264enc"、mod:h264ENC、local:true、groupId:1}、

    {name:"mpeg2enc"、mod:MPEG2ENC、local:true、groupId:1}、

    {name:"mpeg4dec "、mod:MPEG4DEC、local:true、groupId:1}、

    {name:"h264dec "、mod:h264DEC、local:true、groupId:1}、

    {name:"mpeg2dec "、mod:MPEG2DEC、local:true、groupId:1}、

    {name:"jpegen"、mod:JPEGENC、local:true、groupId:0}、

    ]]);

    我已经尝试了很多次。我发现 h264dec 和 jpegenc 算法只能在 h264enc 之前成功创建。 创建 h264encorithmic 后,另一个算法将会出错。

    无法创建 video解码 h264!
    无法创建图像编码器 jpegenc!

    我不知道存储器是否足以一次性创建如此多的算法、它们都退出了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    H264编码器和 H264解码器和 JPEG 编码器使用许多常见资源、例如 EDMA 通道和一些存储器。 因此、请为全部3个保留相同的暂存组 ID。
    EDMA 通道。 然后在 h264编码器中设置 enableDDRbuff = 1。
    您还可以参阅:
    processors.wiki.ti.com/.../Codec_Engine_GroupIds
    e2e.ti.com/.../2127535