如何在显示一段时间后,清除掉overlay?
-
想请教一下各位大佬,在设置overlay显示后一段时间,不再需要overlay显示了 ,如何比较干净清除overlay?
我按照下面的步骤操作,通过接口AWVideoInput_SetOSD设置osd后,再调用该接口,把OverlayInfo.osd_num改成0,这样。清除不掉overlay
通过接口AWVideoInput_SetOSD设置osd
OverlayInfo.item_info[index].osd_type = RT_NORMAL_OVERLAY; OverlayInfo.item_info[index].start_x = 16; OverlayInfo.item_info[index].start_y = 752; OverlayInfo.item_info[index].widht = 464; OverlayInfo.item_info[index].height = 32; ret = init_overlay_info(&OverlayInfo, index);
把OverlayInfo.osd_num改成0,
OverlayInfo.osd_num = 0; AWVideoInput_SetOSD(channelId_0, &OverlayInfo);
用的v851s开发板+GC2053的快起方案
-
明显overlay使能还在起作用,如果只是把OverlayInfo.osd_num改成0肯定无法有效清除overlay
这种情况要设置一个完整VideoInputOSD结构体,并全部清空为0,这样同时也会把之前申请的overlay内存free掉
if(stream_count_0 == 数字) { if (mparam.enable_osd) { aw_logw("begin clean osd"); VideoInputOSD OverlayInfo; memset(&OverlayInfo, 0, sizeof(VideoInputOSD)); AWVideoInput_SetOSD(mparam.use_vipp_num, &OverlayInfo); } }
把数字改为自己想要的,就会在这个数字帧清除osd,这个数字帧之后就无osd显示
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号