引用: flowerddd 发表于 2018-8-6 07:27
Hi,
1)可以的,codec库本身不限制任何芯片,所有的TI C66x DSP都可以跑,非EVM板上主要是要修改板子相关的memory配置,DDR etc.
2) encoder.cfg,只是用作编码库的参数设置,其多核配置,仅根据核的数目来确定slides划分,所以只要你单核跑的话,无论核1,核2,设置都应该为 ncores ...
我根据你说的修改了一下,在除了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怎样修改,函数代码怎么修改;
引用: flowerddd 发表于 2018-8-6 07:27
Hi,
1)可以的,codec库本身不限制任何芯片,所有的TI C66x DSP都可以跑,非EVM板上主要是要修改板子相关的memory配置,DDR etc.
2) encoder.cfg,只是用作编码库的参数设置,其多核配置,仅根据核的数目来确定slides划分,所以只要你单核跑的话,无论核1,核2,设置都应该为 ncores ...
我根据你说的修改了一下,在除了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怎样修改,函数代码怎么修改;
举报