技术专栏
RK3568 将qt显示在视频上面
1.获取当前图层信息
输入命令
modetest -D /dev/dri/card0
或
cat /sys/kernel/debug/dri/0/state
可以看到当前设备所有的图形层(以cat /sys/kernel/debug/dri/0/state 为例),显示结果如下
cat /sys/kernel/debug/dri/0/state
plane[57]: Smart1-win0
crtc=(null)
fb=0
crtc-pos=0x0+0+0
src-pos=0.000000x0.000000+0.000000+0.000000
rotation=1
normalized-zpos=0
color-encoding=ITU-R BT.601 YCbCr
color-range=YCbCr limited range
plane[71]: Cluster1-win0
crtc=(null)
fb=0
crtc-pos=0x0+0+0
src-pos=0.000000x0.000000+0.000000+0.000000
rotation=1
normalized-zpos=0
color-encoding=ITU-R BT.601 YCbCr
color-range=YCbCr limited range
plane[87]: Smart0-win0
crtc=video_port1
fb=171
allocated by = weston
refcount=2
format=AR24 little-endian (0x34325241)
modifier=0x0
size=1080x1920
layers:
size[0]=1080x1920
pitch[0]=4352
offset[0]=0
obj[0]:(null)
crtc-pos=1080x1920+0+0
src-pos=1080.000000x1920.000000+0.000000+0.000000
rotation=1
normalized-zpos=0
color-encoding=ITU-R BT.601 YCbCr
color-range=YCbCr limited range
plane[101]: Cluster0-win0
crtc=(null)
fb=0
crtc-pos=0x0+0+0
src-pos=0.000000x0.000000+0.000000+0.000000
rotation=1
normalized-zpos=0
color-encoding=ITU-R BT.601 YCbCr
color-range=YCbCr limited range
plane[117]: Esmart1-win0
crtc=(null)
fb=0
crtc-pos=0x0+0+0
src-pos=0.000000x0.000000+0.000000+0.000000
rotation=1
normalized-zpos=0
color-encoding=ITU-R BT.601 YCbCr
color-range=YCbCr limited range
plane[131]: Esmart0-win0
crtc=video_port1
fb=174
allocated by = vo_render_1
refcount=2
format=NV12 little-endian (0x3231564e)
modifier=0x0
size=1088x1920
layers:
size[0]=1088x1920
pitch[0]=1088
offset[0]=0
obj[0]:(null)
size[1]=544x960
pitch[1]=1088
offset[1]=2088960
obj[1]:(null)
crtc-pos=1080x1920+0+0
src-pos=1080.000000x1920.000000+0.000000+0.000000
rotation=1
normalized-zpos=0
color-encoding=ITU-R BT.601 YCbCr
color-range=YCbCr limited range
crtc[85]: video_port0
enable=0
active=0
planes_changed=0
mode_changed=0
active_changed=0
connectors_changed=0
color_mgmt_changed=0
plane_mask=0
connector_mask=0
encoder_mask=0
mode: 0:"" 0 0 0 0 0 0 0 0 0 0 0x0 0x0
crtc[115]: video_port1
enable=1
active=1
planes_changed=1
mode_changed=0
active_changed=0
connectors_changed=0
color_mgmt_changed=0
plane_mask=24
connector_mask=4
encoder_mask=4
mode: 0:"1080x1920" 54 121000 1080 1102 1122 1144 1920 1929 1936 1943 0x48 0xa
connector[150]: Writeback-1
crtc=(null)
connector[152]: HDMI-A-1
crtc=(null)
connector[163]: DSI-1
crtc=video_port1
这其中:
1)weston所在层代表qt的ui层,normalized-zpos=0 代表优先级(数值越大,越在上层)
plane[87]: Smart0-win0
crtc=video_port1
fb=171
allocated by = weston
refcount=2
format=AR24 little-endian (0x34325241)
modifier=0x0
size=1080x1920
layers:
size[0]=1080x1920
pitch[0]=4352
offset[0]=0
obj[0]:(null)
crtc-pos=1080x1920+0+0
src-pos=1080.000000x1920.000000+0.000000+0.000000
rotation=1
normalized-zpos=0
color-encoding=ITU-R BT.601 YCbCr
color-range=YCbCr limited range
2)vo所在层代表视频层,normalized-zpos=0 代表优先级(数值越大,越在上层,但视频显示的优先级总高于qt,所以视频总显示在qt上层,目前原因未知,有了解的麻烦给个回复解惑)
plane[131]: Esmart0-win0
crtc=video_port1
fb=174
allocated by = vo_render_1
refcount=2
format=NV12 little-endian (0x3231564e)
modifier=0x0
size=1088x1920
layers:
size[0]=1088x1920
pitch[0]=1088
offset[0]=0
obj[0]:(null)
size[1]=544x960
pitch[1]=1088
offset[1]=2088960
obj[1]:(null)
crtc-pos=1080x1920+0+0
src-pos=1080.000000x1920.000000+0.000000+0.000000
rotation=1
normalized-zpos=0
color-encoding=ITU-R BT.601 YCbCr
color-range=YCbCr limited range
2.更改图层优先级
目前仅找到使用命令修改优先级的方式,代码方案暂无(有相关资料请分享一份,提前感谢),命令格式如下:
modetest -w plane编号:zpos:优先级编号
示例如下,亲测可用:
modetest -w 87:zpos:5
3.修改qt背景为透明以使视频透出
图层优先级修改结束后,我们会发现这时候qt会把视频层挡住,这种情况下需要设置两个透明度
3.1 设置qt的透明度
this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); // 去掉标题栏
this->setAttribute(Qt::WA_TranslucentBackground, true); // 设置窗口背景透明*/
3.2设置weston的透明度
rk3568的qt是基于weston进行显示的,所以在修改qt为透明后还得设置weston为透明才能透出视频。
重点来了!!!
vi /etc/xdg/weston/weston.ini #打开weston配置文件
#修改如下两个地方
[core]
# Allow blending with lower drm planes
gbm-format=argb8888 #[core]下面的这句一定要解除屏蔽或者没有的话加上试试,没有这句一定没法透出
[shell]
# top(default)|bottom|left|right|none, none to disable panel
panel-position=none #禁用标题栏,和qt挺像,有标题栏就不能透明
background-color=0x00FFFFFF #设置背景颜色(argb颜色) 前面一个字节是设置透明度的,00为透明,其他随意
这样就完成了,祝各位调试顺利。
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
点赞
1
评论
打赏
- 分享
- 举报
评论
0个
手气红包
暂无数据
相关专栏
-
浏览量:1297次2023-10-26 17:37:43
-
浏览量:17113次2022-09-29 11:28:45
-
浏览量:5202次2022-07-13 15:47:15
-
浏览量:1200次2024-01-11 17:32:51
-
浏览量:333次2024-09-11 16:46:19
-
浏览量:1382次2024-01-12 17:56:48
-
浏览量:5901次2021-12-10 15:40:21
-
浏览量:1602次2024-01-10 10:01:45
-
浏览量:5641次2021-05-11 17:35:27
-
浏览量:1246次2024-02-18 17:07:58
-
浏览量:6690次2021-04-20 17:50:47
-
浏览量:4014次2021-12-10 19:58:10
-
浏览量:5117次2022-09-26 11:51:17
-
浏览量:1503次2023-11-20 11:14:23
-
浏览量:3042次2021-06-12 17:32:52
-
浏览量:3614次2022-03-11 14:12:46
-
浏览量:1617次2024-01-10 10:27:15
-
浏览量:2869次2024-03-18 14:27:20
-
浏览量:3023次2021-06-15 09:44:15
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
执笔蘸墨
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
打赏成功!
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注