完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我现在遇到一个问题希望,能得到大家的帮助,关于在C6678上单核跑H264编码的问题:
我直接使用ti网上提供的codec例子:C66x_h264hpvenc_01_00_01_04_ELF; 我想在做这样一个项目,在一个核上跑C66x_h264hpvdec_01_01_01_04_ELF,一个核上跑C66x_h264hpvenc_01_00_01_04_ELF,我想问一下,这个编码例子是否可以直接用在非EVM板卡上。 目前我已经将解码例子C66x_h264hpvdec_01_01_01_04_ELF在TMS320C6678 EVM 版 单核上跑起来了,但是编码在TMS320C6678 EVM 版 存在问题。编码情况如下: 1 我直接在单核core0上运行,可以正常编码。 或者以0核为主核,1到7核为次核,多核编一路码流,也能正常编码。 2 现在是我想在除了0核以外的其他核上,单独将 C66x_h264hpvdec_01_01_01_04_ELF跑起来,做了如下修改: a) 例如,在core1上单独跑起来,在文件encoder.cfg和h264hpvenc.cfg中 ncores = 1 CoreTeamMap = 1; SharedRegion.setEntryMeta(0, [ base: Program.global.shmSL2Base, len: Program.global.shmSL2Size, ownerProcId: 0, isValid: true, cacheEnable: true, cacheLineSize: 64, name: "ipc_internal_shared_mem", ]); to SharedRegion.setEntryMeta(0, [ base: Program.global.shmSL2Base, len: Program.global.shmSL2Size, ownerProcId: 1, isValid: true, cacheEnable: true, cacheLineSize: 64, name: "ipc_internal_shared_mem", ]); 经过上述修改后,运行起来后,发现如下问题: 1)函数H264HPVENC_encodeFrame() 返回0,loutArgs->bytesgenerated= 0,我查看输出buffer的内容,通过eseye码流分析工具,发现当前编码输出的码流输出了正确的sps,pps帧头,slice头,从第一个宏块开始的码流数据就全是0了,(参数配置文件中generateHeader = 0)。 2)在单核core1上运行的错误log如下: [C66xx_1] --------------------------------------------------------- Test Case Number : 1 --------------------------------------------------------- Config File : ......TestTestVecsConfigencoder.cfg Input YUV : ......TestTestVecsInputairshow_p352x288.yuv Output Stream : ......TestTestVecsOutputairshow_p352x288.264 ShmemTab initialized on Core 1 Algorithm Instance Creation for the Module DEV.H264HP.E.C6678.01.00.01.04 Done... Started Reading Frame : 0....... Frame_Cycles : 0.102369 #0 : IVIDEO_IDR_FRAME : Bits : 0 Started Reading Frame : 1....... Frame_Cycles : 0.119687 #1 : IVIDEO_P_FRAME : Bits : 0 Started Reading Frame : 2....... Frame_Cycles : 0.118790 #2 : IVIDEO_P_FRAME : Bits : 0 Started Reading Frame : 3....... Frame_Cycles : 0.118818 #3 : IVIDEO_P_FRAME : Bits : 0 3)我想问的问题: 我目前做的项目是在C6678上:core0跑sy***ois,core1跑一路解码,core2跑一路编码,将core1解出的YUV成新的码流; 同样,core3跑一路解码,core4跑一路编码,将core3解出的YUV编成新的码流; core5跑一路解码,core6跑一路编码,将core5解出的YUV编成新的码流; 1)我能不能直接使用TI提供的codecs示例编解码程序C66x_h264hpvenc_01_00_01_04_ELF、C66x_h264hpvdec_01_01_01_04_ELF,直接在非EVM板卡(研华8901板卡)上跑起来,如果能,需要做哪些工作; 2)如果能用,我上面的修改是否正确,上面修改后编码出现的问题,请问怎么解决; 3)在例子程序中,在非0核上,每个核上跑一路编码或解码,需要每个核上 的编码或解码程序里都有一个sy***ios库支持,他们同时运行的时候,8个核之间sy***ios有什么影响么,能这样用么。 |
|
相关推荐
5 个讨论
|
|
Hi,
1)可以的,codec库本身不限制任何芯片,所有的TI C66x DSP都可以跑,非EVM板上主要是要修改板子相关的memory配置,DDR etc. 2) encoder.cfg,只是用作编码库的参数设置,其多核配置,仅根据核的数目来确定slides划分,所以只要你单核跑的话,无论核1,核2,设置都应该为 ncores = 1 CoreTeamMap = 0; 你的用例中,其实所有的核都是单独运行的。那么理论上MultiProc,SharedRegion等核间共享模块都不需要了,请根据自己的需求和BIOS, IPC文档来修改h264hpvenc.cfg文件。如果你也想用到IPC模块,一般IPC的初始化都是在核0完成的(就如我们的testapp),所以不管核0是否跑codec,都需要先运行初始化IPC 3) 非IPC情况下,可以按你说的这样来设计,从BIOS的角度就像8个完全独立的DSP,请注意修改你的BIOS cfg文件. |
|
|
|
|
|
flowerddd 发表于 2018-8-6 07:27 HI , Marvin Liang 非常感谢你的回答,我明天上班按照你说的试试,如果有什么问题,随时在这里向你请教!谢谢,辛苦了! jingshuai |
|
|
|
|
|
flowerddd 发表于 2018-8-6 07:27 我根据你说的修改了一下,在除了core0的核上,单核跑,还是有问题; 1 我做了如下尝试: IPC的初始化函数 IPC_start();以及ipcBarCreate(); ipcCreateShare();在core0上跑起来,将encode.cfg中设置 ncores = 1 CoreTeamMap = 0; 发现在core1上共享内存的分配上就崩溃了,因为分配共享内存的结构体codecShm是在core0上分配的,core1和core0之间单独跑,他们之间就没什么联系了; 要想在core1上跑起来,core1也需要对IPC模块做同样的工作,让同步和分享内存模块共享起来,而这又回到我第一次提问的问题; a) 例如,在core1上单独跑起来,在文件encoder.cfg和h264hpvenc.cfg中 ncores = 1 CoreTeamMap = 1; SharedRegion.setEntryMeta(0, [ base: Program.global.shmSL2Base, len: Program.global.shmSL2Size, ownerProcId: 0, isValid: true, cacheEnable: true, cacheLineSize: 64, name: "ipc_internal_shared_mem", ]); to SharedRegion.setEntryMeta(0, [ base: Program.global.shmSL2Base, len: Program.global.shmSL2Size, ownerProcId: 1, isValid: true, cacheEnable: true, cacheLineSize: 64, name: "ipc_internal_shared_mem", ]); 经过上述修改后,运行起来后,发现如下问题: 1)函数H264HPVENC_encodeFrame() 返回0,loutArgs->bytesgenerated= 0,我查看输出buffer的内容,通过eseye码流分析工具,发现当前编码输出的码流输出了正确的sps,pps帧头,slice头,从第一个宏块开始的码流数据就全是0了,(参数配置文件中generateHeader = 0)。 2)在单核core1上运行的错误log如下: [C66xx_1] --------------------------------------------------------- Test Case Number : 1 --------------------------------------------------------- Config File : ......TestTestVecsConfigencoder.cfg Input YUV : ......TestTestVecsInputairshow_p352x288.yuv Output Stream : ......TestTestVecsOutputairshow_p352x288.264 ShmemTab initialized on Core 1 Algorithm Instance Creation for the Module DEV.H264HP.E.C6678.01.00.01.04 Done... Started Reading Frame : 0....... Frame_Cycles : 0.102369 #0 : IVIDEO_IDR_FRAME : Bits : 0 Started Reading Frame : 1....... Frame_Cycles : 0.119687 #1 : IVIDEO_P_FRAME : Bits : 0 Started Reading Frame : 2....... Frame_Cycles : 0.118790 #2 : IVIDEO_P_FRAME : Bits : 0 Started Reading Frame : 3....... Frame_Cycles : 0.118818 #3 : IVIDEO_P_FRAME : Bits : 0 2)我将与同步(barrier)和share region模块相关的函数和在bios中,IPC模块设置屏蔽掉,直接就崩溃了, 我想知道,我如果要直接将这个例子使用起来,h264hpvenc.cfg怎样修改,函数代码怎么修改; |
|
|
|
|
|
lihan19840814 发表于 2018-8-6 08:03 就你的应用场景,不推荐在这个例子上做,因为你的场景里每个核实际是独立的,而本例较为复杂,有很多多核同步,一致性的操作。而且某些初始化,代码已经限制在核0做了。 你可以重新建立简单的例子,按照user guide推荐的次序调用API来配置codec库: 1.参考EncodeTask函数,调用H264HPVENC_create/H264HPVENC_control/H264HPVENC_activate/H264HPVENC_encodeFrame/H264HPVENC_deactivate等核心的函数建立一个单核的程序。 2.上述中需要的codec buffer,先分配non-cacheable buffer,codec 测试通过后,改为cacheable并加上对应的cache一致性维护函数就可以了 |
|
|
|
|
|
flowerddd 发表于 2018-8-6 08:11 HI,Marvin,liang 现在自己做,时间来不及了,我先在core0跑起来吧,其他核跑起来的问题,麻烦您研究一下! 谢谢! jingshuai。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
348 浏览 1 评论
543 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
786 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
658 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1140 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
76浏览 29评论
252浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
261浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
209浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
67浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 15:56 , Processed in 1.180203 second(s), Total 64, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号