V5 mpp_sample的ctrl+c退出不能生效
经过查阅代码,发现主要是下面两句起作用,它们关闭了UI图层,导致ctrl+c结束后,原有界面图层被关闭而新的界面图层又不能创建,因为看起来像死机一样,无法退出。AW_MPI_VO_AddOutsideVideoLayer(pVOParams->iMiniGUILayer);
AW_MPI_VO_CloseVideoLayer(pVOParams->iMiniGUILayer); /* close ui layer. */
问题是为什么创建一个正常的视频输出图层,要先创建一个第八层的UI图层,且创建好后马上又关闭它?文档没有这部分内容。
如果注销这两句,那么程序是可以正常用ctrl+c退出的,不过问题是运行开始,程序不能创建自己的输出图层,只有终端内打印信息在不停的刷新,
我猜是因为GUI最低就是8号图层,而其他新创建的VO是0号显示器0号通道0号图层,也就是0图层,所以VO会被UI图层遮挡?如果这个猜想正确应该是用透明度来解决这个问题。
另外mpp_sample 中的CPP一直编译出错,到底什么原因能否一起分析一下。
本帖最后由 风火轮用户64946 于 2018-10-22 13:04 编辑
mpp_sample中为了避免被开机时默认创建的图层造成干扰,因为该图层并非经过mpp申请的,所以在sample开始运行时会先将此前开启的图层关闭掉,楼主提到的语句就是起到这个作用的:
AW_MPI_VO_AddOutsideVideoLayer(pVOParams->iMiniGUILayer); 创建已使用图层,以获取该图层的控制权
AW_MPI_VO_CloseVideoLayer(pVOParams->iMiniGUILayer); /* close ui layer. */ 关闭该图层
所以这是mpp_sample图层退出后,画面只有黑屏的原因。
要想mpp_sample退出后,能返回桌面,可以尝试以下方法:
1.注释掉上述的关闭已开启图层的语句;
2.在创建新的图层后,使用mpp的系统接口AW_MPI_VO_SetVideoLayerPriority把新图层的z序(即图层的上下排序系数)设置为大于0的即可(因为默认开机的图层z序为0,z序范围)显示新的图层。
楼主提到的不能输出新图层,我猜是因为没有设置z序的原因。
至于APP报错问题,楼主请参考以下链接解决:
http://forum.lindeni.org/showthread.php?tid=11
页:
[1]