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.

android2.2如何支持大于352*288的视频的录制?

Other Parts Discussed in Thread: AM3715, DM3730

TI技术支持:

您好。我选用的是CPU是咱们的AM3715,搭配的sensor是ov3640,做驱动时linux内核版本2.6.32,现在运行的系统是Android2.2.我的sensor支持300w像素,可是我现在录制视频的话只能选择分表率为352*288,比这个高的话在录制视频预览时液晶就会出现花花的东西,动的很快还。但是在高于352*288分辨率时(比如1024*960)可以拍照,就是无法录视频了。

请问这个问题是何原因呢?

  • 这个可能是软件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时也不行,而且还导致了我拍照预览和拍照也无法使用了。还请您多多帮助?

    拍照预览和摄像预览不是同一种预览么?我觉得我现在要是拍照预览好了,录制出来的视频就是好的了。

  • 预览和录像的对yuv格式要求是不一样

  • 拍照和摄像师不同设置,所以看你怎么设置了。

    另外,进来的是1024x768,那么需要做resize才能到352x288,这个你做了么?我们软件上对这一块的支持比较有限

  • 问下,3715的resize能用的不,看datasheet硬件模块是支持的,但hal层源码貌似没有resize的部分(被注掉了,而且头文件也不完整)

  • 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版本开发的呢?

  • to:iMage

    预览和录像的对yuv格式要求是不一样”。这个可以具体解释下或者给点资料么。

  • 你哪个应该不是这个问题,因为352是ok的,你分步看看问题出现在那把,先把从sensor抓到的视频数据直接保存下来看看是否正常。

  • 谢谢iMage。这个问题我已经清楚了。因为我现在用的是AM3715.对于这款不带DSP的芯片,目前TI针对他的Android2.2系统实现了软解码,其支持的录像分辨率就是为352*288,录制出来的文件为3gp格式。对于352*288以上分辨率视频的录制目前为止是不支持的。我觉得是因为会过多的占用CPU资源,得不偿失。所以干脆大于352*288分辨率的视频只能选择附带DSP的处理器了。

  • 有一个地方不清楚,大分辨率录制视频有问题,这个可以解释的通(有编码),但录像时的预览应该没的问题啊!

  • 你说的很对。但是发现camerahardware.cpp中record进程也附在了priview进程当中。当转到录像时,参数会在某个地方(不知道是哪里)将尺寸置位352*288,如此一来导致的录像预览不正常。

    但是在照相模式下,不受352*288的限制,所以照相时预览正常。所以,在录像时预览应该是没有问题的,只是参数未配合好。