用DVRRDK_04.01.00.02进行缩放转码,路径是 dec – dup 4 路 – 第一路不缩放进merge – merge (4路 )- enc(4路)
– 第二路进sclr
-第三路进sclr2
– 第四路进dei(用其缩放功能)
我发现,当某些分辨率下,sclr的输出图像不正常,具体现象为:
–如果用720p的片源,解码后进sclr,两路缩放的尺寸为 1250×720,和640×360,出来图像正常
–如果用720p的片源,解码后进sclr,两路缩放的尺寸都为 640×360,出来的图像不正常,马赛克和颜色都不对。
–而且,1080p的片源,反而正常,不容易出现非正常图像。
还有,我的解码源从文件中来,用最大的速度读取码流并转码。但是,如果我读取文件的码流帧的时候,每帧间隔15ms以上,sclr出来的图像就正常。
我确定是sclr的问题,因为不同的三路出来的图像不一样,直接解码没有缩放那一路,图像出来是正常的。图像不正常的时候,程序运行没有任何异常提示。
看现象可能是sclr的负载大,输入速度过快的时候会引起这个现象。
我想问一下,这是什么问题,有解决方法吗?
Eason Wang:
你说的720p 1080p都是什么帧率?
如果怀疑sclr的负荷,可以参考RDK下的文档在ti_tools\hdvpss\dvr_rdk_hdvpss\docs\HDVPSS_FeaturePerformanceGuide.pdf有sclr能力的介绍。
Siment Lin:
回复 Eason Wang:
视频文件的帧率只有30帧,但是我的应用是文件转码,所以进入的速度是最快的方式,中间没有间隔,外界就是不停的最快的推入。实际的速度,可能是40-60帧每秒吧。
我知道在slcr和enc Link,如果推入太快会丢帧,我是自己做了修改,不让它丢帧。
我今天又做了测试,就用原始的会丢帧的SCLR和ENC Link:
路径是 dec – dup 4 路 – 第一路不缩放进merge – merge (4路 )- enc(4路)
– 第二路进sclr
-第三路进sclr2
这种方式下也是sclr出来的图像也是不正常的,而没有经过sclr的那路就正常。
即使推入超出了sclr的速度,也应该是内部的inbuf满,而out buffer输出慢,我外部inbuf推不进去也会慢下来。怎么也不该图像不正常啊。
Siment Lin:
回复 Eason Wang:
文件的帧率是30fps,但是我的应用是文件转码,所以外界用最快的速度推入,用一个线程不停获取buffer,并推入。实际上内部处理的帧率应该达到40-60帧每秒。
我知道在推入速度过快的时候,原始的DVRRDK内部的SCLR和ENC是会丢帧的,这一块我自己改了,已经让它丢帧,所以外界用最大的速度推入的。
我又做了一下测试:
我用原始的DVR_RDK,会丢帧的那种,自己没修改过的
用路径是 dec – dup 3路 – 第一路不缩放进merge – merge (3路 )- enc(4路)
– 第二路进sclr
-第三路进sclr2
一样的,出来的图像,除了丢帧,图像也不正常,而不缩放的那路就没事。
即使是sclr的处理能力的问题,也应该是inbuf满,而outbuf输出慢一些,这样外界就自动输入慢了。怎么也不能图像出错呀。
有没有其他人也遇到过这个问题的?
TI中文支持网

