免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1233 | 回复: 0
打印 上一主题 下一主题

[Linux] 求在板子上显示视频,图片和日期的思路? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-13 10:01 |只看该作者 |倒序浏览
应用场景:480*277的显示屏,在屏幕(0,0)到(320,240)的区域显示摄像头获取的实时视频显示。在(340,80)到(480,277)显示拍下的照片显示,(340,0)到(480,60)显示时间年月日,时分秒。
程序代码大致如下:
     while(1)
     {   
        ret = camera_getframe(&pbuf, &size, &ts);   ///从摄像头获取每一帧的YUV数据保存在buffer
        showtimeonvideo(global);      //在屏幕上显示时间。此处做 处理,不处理的话,时间会出现重叠的现象
        pY = pbuf;
        pU = pY + g_width * g_height;
        pV = pU + g_width * g_height /4;
        DpLib_InvalidateYuvPart(akuio_vaddr2paddr(pY), akuio_vaddr2paddr(pU), akuio_vaddr2paddr(pV), g_width, g_height,\
                                                            0,0,320,240,DPLIB_YUV420);   //在屏幕上(320,240)显示视频
       if(key_down==1)   //按键1按下,拍照
        {
             ...          //把拍下的照片保存在TF卡下的一个目录中
             pthread_create(...)  //创建线程,在屏幕上显示拍照的图片,图片显示3秒,视频区域不暂停,3秒后,图片区域还原成背景。
             pthread_mutex_lock(&mutex);
             key_down=0;
             pthread_mutex_unlock(&mutex);
         }
       else  if(key_down==2)
          {
           ...  //此处省略,keydown=2则回去播放MP3
             pthread_mutex_lock(&mutex);
             key_down=0;
             pthread_mutex_unlock(&mutex);
          }


大致逻辑如上:出现的问题是:
     触摸按键不稳定,比如我按下拍照健,会显示按键被按下多次,比如按下3次,那么就意味着创建3个拍照线程,而每个线程使用相同的线程ID,而且会都sleep  3秒,那么这样就会出错。如果我在while(1)循环中不使用线程,直接显示图片,图片显示3秒,那么视频也会停止3秒,而要求视频不暂停。
     知道这样写存在问题,求解决思路。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP