HI3531(20D)支持UVC摄像头2--显示

 2 E币 
成为会员,免费下载资料
文件大小:6.64 KB 上传者:goodman 时间:2016-02-27 23:10:13 下载量:125
本帖最后由 goodman 于 2016-2-27 23:13 编辑

前面我们已经可以使用V4L2采集到数据了,当然可以保存为YUV,大家都知道YUV数据是没有编码的数据,很大的,同时我们还不支持预览。
今天的修改主要是添加预览的支持,支持的链路为USB(v4l2)---->VPSS---->VO 首先要明白几个问题:

1.摄像机时通过v4l2来取数据并不是通过VI来采集数据的(如果哪位知道通过VI能接入UVC摄像头还请告知)

2.摄像头的采集的是YUV422是packed模式数据格式为(YUYVYUYV),而VPSS 仅支持 SemiPlannar422(数据格式为YYYYUVUV)和 SemiPlannar420(数据格式为YYYYUV)
这里需要转换,这里也产生一个问题就是转换效率问题。

我写了个简单的转换代码,但是这个算法代码效率不高,640x480的分辨率要跑满一个核了,目前还没有好的解决方案.
[code]
     buf_start =  buffers[buf.index].start;
      for(i=0,j=0,k=0; i           y[j] = buf_start;
          uv[k] = buf_start[i+3];
          y[j+1] = buf_start[i+2];
          uv[k+1] = buf_start[i+1];
      }
[/code]

代码使用的是sample_vio.c裁剪的,具体请看附件代码sample_vio2.c,同时注意将 common/sample_comm.h 下的
SAMPLE_PIXEL_FORMAT格式改下

[code]
#define SAMPLE_PIXEL_FORMAT         PIXEL_FORMAT_YUV_SEMIPLANAR_422
[/code]

编译运行sample_vio2就可以看到摄像头的数据了。
对于编码来说如果是H264的话还的将YUV422转为SemiPlannar420,需要降采样了,难度也不是很大,参看下sample_venc.c就可以做出来了

展开
折叠
820
评论
共 0 个
内容存在敏感词
    易百纳技术社区暂无数据
相关资料
关于作者
易百纳技术社区
goodman
贡献资料 17
易百纳技术社区 我上传的资料
登录查看
我赚取的积分
登录查看
我赚取的收益
登录查看
上传资料 赚取积分兑换E币
易百纳技术社区
删除原因
广告/SPAM
恶意灌水
违规内容
文不对题
重复发帖
置顶时间设置
结束时间
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-资料模块

审核失败

失败原因
备注
易百纳技术社区