Toybrick

h264视频流解码后显示有条纹的异常

cxjrk

中级会员

积分
336
楼主
发表于 2020-6-8 15:47:09    查看: 29328|回复: 11 | [复制链接]    打印 | 只看该作者
用mpp库解码h264视频流,发现部分分辨率出现上边沿有条纹的异常,后面通过分析,可能是部分分辨率(1920*1080、2592*1944)视频流解码出来图片帧的UV的位置与实际需求不一样,后面发现,解码后的图片帧明亮度Y的行数是16对齐,如果视频流分辨中heigh值如果不是16对齐的话,显示经过rga处理后显示的bgr图片就会出现上边沿条纹问题,我在获取yuv帧后,将uv数据向前偏移,使得uv数据在内存位置上与y的位置连续,如此,之前条纹的问题解决。我是想在这里求证一下,我的分析是否正确
回复

使用道具 举报

jefferyzhang

版主

积分
13502
沙发
发表于 2020-6-8 16:21:27 | 只看该作者
解码出来的都是16对齐的,但是解码出来是有参数会告诉你实际buffer宽高大小的,需要用rga去裁一下而已。。
你说的基本上思路是对的。
回复

使用道具 举报

cxjrk

中级会员

积分
336
板凳
 楼主| 发表于 2020-6-8 16:38:28 | 只看该作者
jefferyzhang 发表于 2020-6-8 16:21
解码出来的都是16对齐的,但是解码出来是有参数会告诉你实际buffer宽高大小的,需要用rga去裁一下而已。。
...

好的,是哪里的参数呢
回复

使用道具 举报

jefferyzhang

版主

积分
13502
地板
发表于 2020-6-8 16:44:00 | 只看该作者
cxjrk 发表于 2020-6-8 16:38
好的,是哪里的参数呢

自己看下sample
回复

使用道具 举报

cxjrk

中级会员

积分
336
5#
 楼主| 发表于 2020-6-10 10:03:23 | 只看该作者

好的,参数我看到了,现在有一个问题,我解h265的时候,发现实际buffer的宽和分辨率宽不一样,我想跟您这边确认下,就是实际buffer宽高有什么规律吗,比如高16对齐的,我需要如何裁剪,然后帧buffer大小是如何计算的,谢谢。
回复

使用道具 举报

jefferyzhang

版主

积分
13502
6#
发表于 2020-6-10 10:17:16 | 只看该作者
cxjrk 发表于 2020-6-10 10:03
好的,参数我看到了,现在有一个问题,我解h265的时候,发现实际buffer的宽和分辨率宽不一样,我想跟您这 ...

也是通过出来的buffer获取到实际宽高。这个规律不好解释,265的4k视频是256异或对齐的,1080p是16对齐的。具体可以看mpp源码。直接去获取最简单了,没必要去猜
回复

使用道具 举报

cxjrk

中级会员

积分
336
7#
 楼主| 发表于 2020-6-10 10:23:23 | 只看该作者
jefferyzhang 发表于 2020-6-10 10:17
也是通过出来的buffer获取到实际宽高。这个规律不好解释,265的4k视频是256异或对齐的,1080p是16对齐的 ...

好的,那我去看下
回复

使用道具 举报

jefferyzhang

版主

积分
13502
8#
发表于 2020-6-10 10:25:31 | 只看该作者
实际宽高:
RK_U32 width = mpp_frame_get_width(mppFrame);
RK_U32 height = mpp_frame_get_height(mppFrame);

对齐后的宽高:
RK_U32 h_stride = mpp_frame_get_hor_stride(mppFrame);
RK_U32 v_stride = mpp_frame_get_ver_stride(mppFrame);
回复

使用道具 举报

cxjrk

中级会员

积分
336
9#
 楼主| 发表于 2020-6-10 15:11:52 | 只看该作者
jefferyzhang 发表于 2020-6-10 10:25
实际宽高:
RK_U32 width = mpp_frame_get_width(mppFrame);
RK_U32 height = mpp_frame_get_height(mppFra ...

谢啦,不过我rga没用起来,一直报错,不过我自己写了一个接口,用软裁剪方式去裁剪解码后的yuv图像,h265解码成功,显示。
回复

使用道具 举报

cxjrk

中级会员

积分
336
10#
 楼主| 发表于 2020-6-10 15:35:50 | 只看该作者
用了软裁剪,cpu跑飞了,现在还是要研究下rga裁剪怎么用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表