TI技术支持:
您好。我选用的是CPU是咱们的AM3715,搭配的sensor是ov3640,做驱动时linux内核版本2.6.32,现在运行的系统是Android2.2.我的sensor支持300w像素,可是我现在录制视频的话只能选择分表率为352*288,比这个高的话在录制视频预览时液晶就会出现花花的东西,动的很快还。但是在高于352*288分辨率时(比如1024*960)可以拍照,就是无法录视频了。
请问这个问题是何原因呢?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
这个可能是软件video encoder的原因,同时你也看看camera hal
TO:Yaoming Qin
能否定位到代码文件呢?因为我刚接触到这里,不了解video encoder涉及哪些文件。是驱动中得呢,还是Android层的呢?盼望您的详细解说。
只是编码的算法库,这个没法动,用纯arm core编码,大概只能这个能力了,你们要求到多少?
我们现在的处理器确实是AM3715,但是以后会换成DM3730。现在我们在352*288分辨率下录制的视频清晰度和细腻度不满意,而且现在我们只能录制成3gp格式的视频。我们想在Android2.2系统中录制格式为MP4的视频。我看到Android2.2也是支持这种编解码的,可是不知道在哪里设置参数可以实现这个。您知道录制成啥格式视频的参数在哪里进行更改么?
我看到有人说Android2.2视频编码仅支持H.263,视频解码才支持H.263,H.264 AVC,MPEG-4 SP,真的是这样吗?
软件的支持是不多的,你的需求是什么?如果你以后要转DM3730,看这些个软件的没意义的
Yaoming Qin:
好久不见。我们开始的时候摄像头输出的为raw格式的数据,后来实现了预览拍照和录像,录成的视频为352*288 3gp格式。后来由于某些原因,我们摄像头输出数据转为了YUV格式,现在还是可以预览和拍照,可是点击录像那个按钮之后屏幕就花了,虽然录像功能可以用,可是录制出的视频也是花的。现在我们的摄像头输出的YUV尺寸为1024*768,可是我让摄像头输出352*288时也不行,而且还导致了我拍照预览和拍照也无法使用了。还请您多多帮助?
拍照预览和摄像预览不是同一种预览么?我觉得我现在要是拍照预览好了,录制出来的视频就是好的了。
拍照和摄像师不同设置,所以看你怎么设置了。
另外,进来的是1024x768,那么需要做resize才能到352x288,这个你做了么?我们软件上对这一块的支持比较有限
iMage,你好。
“3715的resize能用的不,看datasheet硬件模块是支持的,” AM3715确实是支持resize。在Android2.2系统下,只要camera给ISP端输入RAW格式的数据,那么ISP不用任何配置,只需保持出厂的寄存器设置就可以实现resize。但是当camera输出YUV数据时,在上面说的情况下,resize功能就实现不了了。我觉得这和ISP产生的初衷是相符的。ISP的作用就是说不需要camera有多么强大的功能,我ISP可以给你做,但是你要给我RAW格式的数据,否则我做不了。于是在这种初衷的影响下,TI对ISP的各种配置都是假定着camera输出RAW格式数据来的。
以上只是猜测加臆想,还望多多交流。此外你说的(被注掉了,而且头文件也不完整),说的是HAL层的哪些文件呢?我也想看看那里,可否告诉我?
TO Yaoming Qin
“进来的是1024x768,那么需要做resize才能到352x288”对您的这句话我很同意。但是对于咱们TI推出的android2.2那个系统我不知道,或者具体到咱们的linux-2.6.32-psp03.00.01.06,都不知道如何开启对YUV格式的resizer功能。如果咱们TI只是在 对camera输出RAW格式时进行resizer 进行了配置,那么我就是没有配置过YUV的resize。不过还是很感谢您了。谢谢你。
只要camera给ISP端输入RAW格式的数据,那么ISP不用任何配置,只需保持出厂的寄存器设置就可以实现resize。
应该还是有其他配置的,因为对resize的倍率需求不同。
但是当camera输出YUV数据时,在上面说的情况下,resize功能就实现不了了。我觉得这和ISP产生的初衷是相符的。ISP的作用就是说不需要camera有多么强大的功能,我ISP可以给你做,但是你要给我RAW格式的数据,否则我做不了。
这个不应该,davinci系列的resize模块,是可以缩yuv422的,我估计ti的resize模块都是一样的架构的。而且resize模块在ti几年前的芯片都是成熟的了。
说的是HAL层的哪些文件呢?
V4L2Camera.cpp中有一个 _OMAP_RESIZER_宏,里面有resize的操作,不过sdk中都找不到对应的头文件。
To iMage:
“应该还是有其他配置的,因为对resize的倍率需求不同。” 确实是有其他的配置来应对resize这一需求。但是这个面对RAW数据进行resize的功能的配置在TI提供的linux-2.6.32-psp03.00.01.06源码中已经做好了。
"这个不应该,davinci系列的resize模块,是可以缩yuv422的,我估计ti的resize模块都是一样的架构的。而且resize模块在ti几年前的芯片都是成熟的了。" 对于这个说法,我觉得是硬件成熟了,但是软件还未成熟。您可以查看linux-2.6.32-psp03.00.01.06源码中的isp.c中的isp_try_pipeline函数,当我们的ISP在接收RAW数据时才会触发pipe->modules = OMAP_ISP_CCDC | OMAP_ISP_PREVIEW| OMAP_ISP_RESIZER;,否则的话只有 pipe->modules = OMAP_ISP_CCDC;也就是ISP模块不做resizer了。
To iMage:
对于您所说的 _OMAP_RESIZER_这个宏,我看了下我手里的android 源码,在V4L2Camera.cpp文件中并不存在这个宏。我现在所用的Android源码包全称为rowboat-android-froyo-devkit8500,是我们买的开发板的公司给提供的。但是通过这个名字和里面内容我也无法比对出这份源码是基于TI推出的android froyoo哪个版本修改的。
我现在担心的是我的HAL层连这个宏都没有是不是更不会有resize功能了?可是我确实是又具有啊。因为我在camera输出raw格式数据时修改 V4L2Camera.cpp中的preview 尺寸时拍出来的相片分辨率确实是会随之改变。
请问您用的android源码是基于TI 的哪个android版本开发的呢?
谢谢iMage。这个问题我已经清楚了。因为我现在用的是AM3715.对于这款不带DSP的芯片,目前TI针对他的Android2.2系统实现了软解码,其支持的录像分辨率就是为352*288,录制出来的文件为3gp格式。对于352*288以上分辨率视频的录制目前为止是不支持的。我觉得是因为会过多的占用CPU资源,得不偿失。所以干脆大于352*288分辨率的视频只能选择附带DSP的处理器了。
你说的很对。但是发现camerahardware.cpp中record进程也附在了priview进程当中。当转到录像时,参数会在某个地方(不知道是哪里)将尺寸置位352*288,如此一来导致的录像预览不正常。
但是在照相模式下,不受352*288的限制,所以照相时预览正常。所以,在录像时预览应该是没有问题的,只是参数未配合好。