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.
你好meng:
我不是在ti 的 EVM板子上测试的。
dsp平率是不是设置的太高了?什么参数可以设置?我记得以前dm368的时候dsp的下利率没有用到99%这么高,好像是30%左右?
另外我用vlc看了一下视频的信息,其实是25帧左右。300帧使用了12秒左右。我觉得是video和capture的fifoget和fifoput不对称。(我的猜想)
但是不管怎么样dsp的使用率都太高了。
谢谢你的回复。
你好meng DM368确实是用DSP进行编解码的。你看一下信息:
我使用的DM368开发板是奇想达生产。
硬件平台叫QXD-DM368。我在上面开发过DVSDKdemo的 encode和decode,DSP不知道什么型号。但是也有打印信息。DSP load 3x%,具体我忘记了。
软件使用的平台是:
达芬奇的EVM太贵了,而且也不知道怎么在官网上购买。即使购买了,核心板的原理图也么有办法得到,不利于开发自己产品。我们现在做的产品,其中的核心板是问别家购买,硬件软件再做二次开发的。
这个不说了,我觉得dvsdk demos有没有在TI的evm上跑过的视频?能不能把一些log或者信息给我看看,我看看代码里面到底有什么区别。
我现在看了一下录制的视频文件,觉得文件本身可能没有什么问题,可能问题在于送到encode的fifo没有调整好,
比如所应按照顺序的规律该是 1 2 3 4 5 6 7 8 9
但是其实送到encode中的帧 1 4 8 9 10 13 15
这是我在调试时候发现的。具体我不知道,现在还在调试。
另外:
DSP ALG HEAP
CMEM
DSPLINK
以上的模块内存分布位置我都调整过,这些调整会不会导致DSP的效率过高?
谢谢你meng。
我看了一下demo,调试的时候我把demo中的Venc1_process注释掉,demo运行cap和disp正常。但是加入了视频压缩后效果就卡住了。这是为什么,dsp的性能不够压缩?
另外我看了一下dmai中的默认配置:
/**********************************************************************************/
const VIDENC1_Params Venc1_Params_DEFAULT = {
sizeof(VIDENC1_Params), /* size */
XDM_DEFAULT, /* encodingPreset */
IVIDEO_LOW_DELAY, /* rateControlPreset */
720, /* maxHeight */
1280, /* maxWidth */
30000, /* maxFrameRate */
6000000, /* maxBitRate */
XDM_BYTE, /* dataEndianness */
0, /* maxInterFrameInterval */
XDM_YUV_420P, /* inputChromaFormat */
IVIDEO_PROGRESSIVE, /* inputContentType */
XDM_CHROMA_NA /* reconChromaFormat */
};
const VIDENC1_DynamicParams Venc1_DynamicParams_DEFAULT = {
sizeof(IVIDENC1_DynamicParams), /* size */
720, /* inputHeight */
1280, /* inputWidth */
30000, /* refFrameRate */
30000, /* targetFrameRate */
6000000, /* targetBitRate */
30, /* intraFrameInterval */
XDM_ENCODE_AU, /* generateHeader */
0, /* captureWidth */
IVIDEO_NA_FRAME, /* forceFrame */
1, /* interFrameInterval */
0 /* mbDataFlag */
};
/**********************************************************************************/
这些配置我都配置了,还有什么需要配置的吗?
368的平台demo我看过了也是使用同样的code_engine 和 dmai。
有没有大侠遇到过这个问题。跪求帮助了。
应该不是帧同步的问题,排除了。
调试只要把Venc1_process这个代码去掉 就可以正常从摄像头内获取视频并且显示。
文件:video.c
函数:Void *videoThrFxn(Void *arg)
while (!gblGetQuit()) {
/* Get a buffer to encode from the display thread */
fifoRet = Fifo_get(envp->hDisplayOutFifo, &hDisplay);
if (fifoRet < 0) {
ERR("Failed to get buffer from video thread\n");
cleanup(THREAD_FAILURE);
}
/* Did the display thread flush the fifo? */
if (fifoRet == Dmai_EFLUSH) {
cleanup(THREAD_SUCCESS);
}
/* Get a buffer to encode to from the writer thread */
fifoRet = Fifo_get(envp->hWriterOutFifo, &hDstBuf);
if (fifoRet < 0) {
ERR("Failed to get buffer from video thread\n");
cleanup(THREAD_FAILURE);
}
/* Did the writer thread flush the fifo? */
if (fifoRet == Dmai_EFLUSH) {
cleanup(THREAD_SUCCESS);
}
/* Make sure the whole buffer is used for input */
BufferGfx_resetDimensions(hDisplay);
#if 0
/* Decode the video buffer */
if (Venc1_process(hVe1, hDisplay, hDstBuf) < 0) {
ERR("Failed to encode video buffer\n");
cleanup(THREAD_FAILURE);
}
#endif
/* Send encoded buffer to writer thread for filesystem output */
if (Fifo_put(envp->hWriterInFifo, hDstBuf) < 0) {
ERR("Failed to send buffer to display thread\n");
cleanup(THREAD_FAILURE);
}
/* Return buffer to display thread */
if (Fifo_put(envp->hDisplayInFifo, hDisplay) < 0) {
ERR("Failed to send buffer to display thread\n");
cleanup(THREAD_FAILURE);
}
/* Increment statistics for the user interface */
gblIncVideoBytesProcessed(Buffer_getNumBytesUsed(hDstBuf));
frameCnt++;
}
按照代码的意思就是说 1秒内 dsp应该处理25帧图片。VIDENC1_process()应该被调用25次才对。
@0x0035bab9:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 2 outID 3 generated 5482 bytes
@0x003af75a:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 3 outID 4 generated 8188 bytes
@0x0040918f:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 0 outID 1 generated 31828 bytes
@0x0045be36:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 1 outID 2 generated 18135 bytes
@0x004aedd8:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 2 outID 3 generated 10945 bytes
@0x004ff93d:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 3 outID 4 generated 5807 bytes
@0x00559335:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 0 outID 1 generated 14515 bytes
@0x005ace49:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 1 outID 2 generated 6596 bytes
@0x00603448:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 2 outID 3 generated 11814 bytes
@0x0065666b:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 3 outID 4 generated 6386 bytes
@0x006ac6cf:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 0 outID 1 generated 11678 bytes
@0x006fe87e:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 1 outID 2 generated 3404 bytes
@0x00752374:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 2 outID 3 generated 5295 bytes
@0x007a5949:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 3 outID 4 generated 7149 bytes
@0x007fa100:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 0 outID 1 generated 12656 bytes
@0x0084c3ff:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 1 outID 2 generated 4371 bytes
@0x008a026a:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 2 outID 3 generated 10357 bytes
@0x008f41c8:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 3 outID 4 generated 10575 bytes
@0x0094a39a:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 0 outID 1 generated 17447 bytes
@0x0099de34:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 1 outID 2 generated 7092 bytes
@0x009f3458:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 2 outID 3 generated 10232 bytes
@0x00a48b51:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 3 outID 4 generated 9369 bytes
@0x00a9e080:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 0 outID 1 generated 10903 bytes
@0x00b5efe7:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 1 outID 2 generated 17659 bytes
@0x00bb0386:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 2 outID 3 generated 6919 bytes
@0x00c029db:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 3 outID 4 generated 6571 bytes
@0x00c56ae5:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 0 outID 1 generated 10193 bytes
@0x00ca8fcd:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 1 outID 2 generated 5549 bytes
@0x00cfc76c:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 2 outID 3 generated 10557 bytes
@0x00d4fb59:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 3 outID 4 generated 8786 bytes
@0x00da4404:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 0 outID 1 generated 16246 bytes
@0x00df6c60:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 1 outID 2 generated 7076 bytes
@0x00e49537:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 2 outID 3 generated 8551 bytes
s@0x00e9bab7:[T:0x42cc0490] ti.sdo.dmai - [Venc1] VIDENC1_process() ret 0 inId 3 outID 4 generated 7783 bytes
meng 你好:
我想问下
params->inputChromaFormat = XDM_YUV_422ILE;
params->reconChromaFormat = XDM_YUV_420SP;
这两者的区别。应为我设置的时候XDM_YUV_422ILE然后通过电脑VLC软件解析录像后的视频文件显示是 yuv420的。demo是不是设置错了?
lu edward 说:meng 你好:
我想问下
params->inputChromaFormat = XDM_YUV_422ILE;
params->reconChromaFormat = XDM_YUV_420SP;这两者的区别。应为我设置的时候XDM_YUV_422ILE然后通过电脑VLC软件解析录像后的视频文件显示是 yuv420的。demo是不是设置错了?
我对DM3730不熟悉,具体请看一下DM3730的h264编码库的user guide。但是其他平台,例如DM36x,DM6467, DM81xx的的h264编码输入的数据格式都是yuv40.
你好meng :
我想问一下在DM3730的sdk包中,怎么设置DSP的工作频率或者查看DSP的工作频率?
会不会是DSP的工作频率没有设置好,导致了DSP的性能不够?
谢谢