TI中文支持网
TI专业的中文技术问题搜集分享网站

dm3730 中 dvsdk-demos_4_02_00_01 dsp load 99%压缩很缓慢问题

大家好 我在使用dvsdk中的demo但是发现录像效果很卡很迟钝,没有25帧每秒的压缩。这是怎么回事?谢谢大家帮助。

lu edward:

附件中我上传了录像的视频。由于不能上传h264文件,所以压缩了一下,解压后会有test.h264文件,可以通过VLC播放。从录像后播放的效果来看,是录像太快了。是怎么回事?怎么可以让录像正常速度?

各位高手帮我支支招,谢谢了。

Chris Meng:

回复 lu edward:

Edward,

请问你是在你自己的板子上测试的,还是TI的EVM?

ARM/DSP/DDR的频率是否配置到芯片支持的最高频率?

lu edward:

回复 Chris Meng:

你好meng:

我不是在ti 的 EVM板子上测试的。

dsp平率是不是设置的太高了?什么参数可以设置?我记得以前dm368的时候dsp的下利率没有用到99%这么高,好像是30%左右?

另外我用vlc看了一下视频的信息,其实是25帧左右。300帧使用了12秒左右。我觉得是video和capture的fifoget和fifoput不对称。(我的猜想)

但是不管怎么样dsp的使用率都太高了。

谢谢你的回复。

Chris Meng:

回复 lu edward:

Edward,

DM368没有DSP只有ARM9,是利用的加速器做的编解码。

lu edward:

回复 Chris Meng:

你好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。

lu edward:

回复 Chris 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。

有没有大侠遇到过这个问题。跪求帮助了。

lu edward:

回复 lu edward:

应该不是帧同步的问题,排除了。

调试只要把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++; }

lu edward:

回复 Chris Meng:

按照代码的意思就是说 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 bytess@0x00e9bab7:[T:0x42cc0490] ti.sdo.dmai – [Venc1] VIDENC1_process() ret 0 inId 3 outID 4 generated 7783 bytes

lu edward:

回复 Chris Meng:

meng 你好:

我想问下

params->inputChromaFormat = XDM_YUV_422ILE; params->reconChromaFormat = XDM_YUV_420SP;

这两者的区别。应为我设置的时候XDM_YUV_422ILE然后通过电脑VLC软件解析录像后的视频文件显示是 yuv420的。demo是不是设置错了?

Chris Meng:

回复 lu edward:

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.

赞(0)
未经允许不得转载:TI中文支持网 » dm3730 中 dvsdk-demos_4_02_00_01 dsp load 99%压缩很缓慢问题
分享到: 更多 (0)