完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位大牛:
我目前在做dm368的实时解码,参考demo中的decode程序,码流由编码端编码后,通过网络发送给解码端,由解码端实时解码,然后送给hdmi输出。目前发现一个比较尴尬的问题。 图片的分辨率为1280*720,解码后输出的buff,其中dim的x、y分别为24和48,图像在整个buff中的坐标为(24,48),通过查看dmai对应的display接口,发现只有y被设置到内核,而x没有被设置到内核中。从而显示横向出现右偏移,即最左边的24列像素点是无效的(被拉长),最右边缺少24列像素点。而纵向由于设置正确,显示是没有问题的。 刚开始,我以为是我的程序有问题。因此我用的dvsdk原生的decode程序以及自带的264文件测试,发现也有同样的问题。这个问题不仔细查看,是很难看出的。因此我猜测,这个应该是一个共性bug。 我尝试新建显示buff,通过framecopy,将解码后偏移为(24,48)的buff拷贝到偏移为(0,0)的buff中,再送显,图像就正常了,但测试时发现,framecopy占用cpu资源,会导致码流接收丢帧,总出现解码错误,因此该方案暂没继续实施。 在这里请教各位大牛,有没有更好的办法,这个bug还是比较明显的,相信不止我一个人碰到。 非常感谢! |
|
相关推荐
10个回答
|
|
好像没这么复杂吧,有个startx之类的参数设置一下就可以了,我晚上回去看看代码
|
|
|
|
顶下。我碰到同样的问题,求解。。。。。。。。
|
|
|
|
你好, 请问你是否有参考过h264dec user guide里面的Figure 3-3. Frame Buffer Pointer Implementation?你使用的是IVIDDEC_OutArgs->displayBufs作为显示输出的buffer首地址么? |
|
|
|
物是人非aaa 发表于 2018-5-31 09:00 你好, 我用DM368,用dvsdk-demos_4_02_00_01的例子decode,做的测试,出现的问题和一楼的问题一样,就用例子里的的程序(没做任何修改) root@dm368-evm:/usr/share/ti/dvsdk-demos# ./decode -y 3 -v ../data/videos/davincieffect.264 出现的问题和一楼的问题一样,左边多了一条24点宽的白边(把最左边的点拉长24点) 仔细查了下例子里,用的是IVIDDEC_OutArgs->displayBufs作为显示输出的buffer首地址. |
|
|
|
ningee 发表于 2018-5-31 09:14 你好, davincieffect.264的原始大小是720x480还是1280x720?-y 3应该是720p输出,如果原始图像是D1的,建议用CVBS输出看看原图大小的时候是否有偏移。 |
|
|
|
物是人非aaa 发表于 2018-5-31 09:19 davincieffect.264的原始大小是1280x720 |
|
|
|
自己解决了,在1280X720的H264解码中创建的显示缓存是(1280+64=1344)x720,在DM368 VIDWIN0XL/VIDWIN1XL 的寄存器设置的是1280,把这2个寄存器改为1344后,将BASEPX 寄存器的值减少24 显示就正常了,通过测试在1920*1080P 也出现同样的毛病,将 VIDWIN0XL/VIDWIN1XL 2个寄存器改为1984,再修改BASEPX 也能显示正常。叫人郁闷的是在做其它的解码没问题,修改这些寄存器是驱动干的活,改了之后再做别的解码时就不对了(显示往左偏了),郁闷纠结中,不知道有没有其它的办法。如果只做264解码的产品还能将就着用。 |
|
|
|
物是人非aaa 发表于 2018-5-31 09:00 不好意思,最近一直没时间上论坛. 我用的是DMAI的标准接口. |
|
|
|
物是人非aaa 发表于 2018-5-31 09:19 不好意思,最近一直没时间上论坛. 我试过480P 576P 720P格式的解码输出,所有的buff全部都是偏移(24,48). |
|
|
|
ningee 发表于 2018-5-31 09:50 各位,此问题已经完美解决,该问题分析起来比较复杂,但修改起来很容易,在此简单提示一下: 1 因为ti的架构要求大多数buff都要32字节对齐,有些还要64字节对齐.因此很难从上层直接修改,我的做法是直接在venc修改,将venc set timeing接口的HSTART加上24,当然,如果想提高兼容型,可以申请一个字符设备,将这个偏移通过ioctl传递下来. 这一条是解决左边24个点拉伸的问题 2 在应用层修改display设备的width,将width修改为linelength&(~0x3F),即比例linelength小,但还要64字节对齐(720P的话,这个值是1344).同时修改dmai和对应的驱动,使这个值能设置下去(把范围放开就行了,widthmax放到2000就行了) 这一条是解决右边被裁掉的24个点 不要试图从应用->osd->venc一步一步下来,因为根本不可行. ps: TI的测试,把关不严啊,这么严重的问题,居然直接放出来了.相信坑了不少兄弟,各位如果用到了dvsdk包作解码显示,建议赶紧看看自己的显示,会不会左边被拉伸,右边被裁减了. |
|
|
|
只有小组成员才能发言,加入小组>>
309 浏览 1 评论
513 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
754 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
641 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1113 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
226浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
181浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
46浏览 13评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
149浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
158浏览 12评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 13:10 , Processed in 1.017458 second(s), Total 68, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号