我的开源项目工作进展(2)

ゞ 浴缸里的玫瑰 2021-09-10 08:52 380阅读 0赞

一、 本周主要工作与解决的问题

1.本周确定好实现后处理增强后,就没怎么看H264了,视频旋转、镜像等。在我看来,就是图像处理的内容。所以主要看了获取RGB图像的单个点的数据,了解RGB图像在内存的储存方式及单像素点的读取方式;

2.了解图像旋转原理说明,视频旋转一般只旋转90度或者180度,所以说相对来说比较简单。可以推导出公式。

3.RGB图像旋转90度编程完成,并且测试成功,主要实现旋转90度(顺时针与逆时针);不过,我是在Windows 7 VS2010下编写与测试的;测试的方法是打开笔记本摄像头,得到一帧图像,旋转此帧,保存此帧图像。然后看图像,能够完成功能。

二、同时存在的问题:

  1. 1.项目中的后处理增强数据格式我看有YUV/RGB/等,是否需要一一给它们编写后处理函数,还是统一转化成RGB格式呢,然后只给RGB格式编写函数?
  2. 老师回复:在图像处理中 通常用YUV数据。 其他格式可以转YUV,这个已经做好了。另外YUV颜色空间中根据不同的采样模式又分成420, 422, 444 等。每种模式下像素的布局还以不同,比如 420下有I420/YV12/NV12等,在我们的驱动里,主要处理的NV12格式,其他格式可以转成nv12或者把nv12转成其他格式。
  3. 2.我编写的旋转代码输入是unsigned char指针所指的一帧图像,但是项目中我都找不到有关unsigned char指针所指的一帧图像。项目中哪个是定义的一帧图像的指针呢?i965_post_processing_context还是其它哪个呢?
  4. 老师回复:你这是CPU来完成旋转,我们要做的是GPU加速。在驱动里是用在GPU EU 上跑的代码来完成的。

3.i965_post_process.c genxxx_vebox_vpp.c 等 实现各平台上的前/后处理,这些就是我要在其它添加的后处理增强的地方呢?

老师回复:是的

4.现在我是视频处理的思路有,但是找不到项目中一帧图像的入口,一帧图像在我的理解来看是unsigeed char 指针所指的一片连续内存区域,不知在项目中是如何呢?

老师回复:我们这里处理的是一个surface或image, 和你想象的差不多。

5.项目中有些.c和.h应该和后处理增强没多大联系(比如编码),我应该主要看哪几个文件呢?文件实在有点儿多,中途加入,看起来实在困难。

  1. 老师回复:用代码来完成的后处理都在i965_post_process.c
  2. i965_proc_picture-->i965_post_processing_internal 然后根据不同的平台选取
  3. 相应的处理程序。
  4. 还有一点,你要把libvalibva-intel-driver都切换到staging 分支, 关于
  5. rotation的接口在staging分支上。

6.我现在的方法呢,就是每个后处理增强函数都先在VS2010中编写测试成功完成后(用我图像旋转90度那个测试方法),然后再移值进去项目中,主要都是用C写。老师是否有什么好方法推荐呢?

老师回复:我们要用GPU的指令来做这个事情,目前能用的只有汇编,驱动负责设置参数,配

  1. 置流水线,真正完成事情是用GPU shader 你可以参考
  2. src/shader/post_processing src/shader/render下的文件和相应的Makefile.
  3. 另外驱动里的rendering(i965_render.c i965_output_dri.c)部分其实已经支
  4. rotation. 把这部分移植或重用到post_processing里也是一种可以考虑的方
  5. 案,难点在于renderingpost_processing
  6. 用了两种不同的GPU的流水线,目前可能对你有一定的难度。

三、下一步安排:


  1. 1.看项目的代码,学习图像处理
  2. 2.编程图像处理算法

发表评论

表情:
评论列表 (有 0 条评论,380人围观)

还没有评论,来说两句吧...

相关阅读