dm8168下qt界面与视频的同步显示

来源:互联网 发布:法兰绒格子衬衫 知乎 编辑:程序博客网 时间:2024/06/06 04:35
文章来源:


http://m.blog.csdn.net/article/details?id=25132051


环境:dm8168

      ezsdk5.05.02.00
      qt4.7.3
最终效果:qt绘制界面,在界面的任意位置显示用omx播放的视频。

1.qt窗口的裁剪
因为qt的显示层在视频播放层的上面,因此若直接运行则qt程序,qt界面会挡住视频,因此需要进行窗口裁剪。
在qt主窗口构造函数里添加:
QPixmap pix;
pix.load("./1.png", 0, NULL);
resize(pix.size());
setMask(QBitmap(pix.mask()));
其中1.png为只填充了要显示的区域的png图片。通过图片裁剪,可以裁剪出任意形状的窗口。

2.qwsserver
在dm8168上,qt程序需要添加-qws参数来启动qwsserver才能运行。
qwsserver默认情况下会绘制一层绿色背景。因此需要去掉这层背景才能显示下层视频。
在程序初始化函数里添加
QWSServer::setBackground(QBrush(Qt::NoBrush));
或者:
QWSServer::setBackground(QColor(0,0,0,0));
ps:需要#include

3.层间混合模式设定
默认情况下dm8168层间的混合模式为TI81XX_BLENDING_NONE,这种模式下显示了qt程序所在的fb0层,就显示不出下一层的视频了。因此需要将混合模式改为TI81XX_BLENDING_PIXEL,就可在窗口裁剪的部分显示下层内容。
设置方式可参考ezsdk\component-sources\omx_05_02_00_48\examples\ti\omx\demos\decode_display\src文件夹下的Fb_blending.c文件。
0 0
原创粉丝点击