MTK 平台上如何给 camera 添加一种 preview size
1,首先检查该项目所使用的是哪一颗sensor, 就以OV2659 为例
OV2659 是一颗2M 的摄像头,Sensor 吐出的数据分辨率能达到 1600*1200,肯定是支持 1280*720 的分辨率喽。
那如何通过配置使其能够录制 720P 的视频呢,这个还是需要花费一番功夫的。
ALPS.ICS2.TDD.MP.V1.2_TD_20121019\mediatek\custom\common\hal\imgsensor\ov2659_yuv\cfg_ftbl_ov2659_yuv.h
在该文件中检查是否有设置 PREVIEW_SIZE_1280_720,如没有则加上
// Preview Size
CONFIG_FEATURE_SI(FID_PREVIEW_SIZE,
BY_DEFAULT(PREVIEW_SIZE_320_240),
PREVIEW_SIZE_176_144, PREVIEW_SIZE_320_240,
PREVIEW_SIZE_352_288, PREVIEW_SIZE_640_480,
PREVIEW_SIZE_720_480, PREVIEW_SIZE_1280_720
)
2,检查是否有创建 MTKProfile,具体在下面这个 MediaProfiles.cpp 文件中操作
/trunk/ALPS.ICS2.TDD.MP.V1.2_TD_20121019/frameworks/base/media/libmedia/MediaProfiles.cpp
看 /*static*/ MediaProfiles::CamcorderProfile*
MediaProfiles::createMTKCamcorderProfile(camcorder_quality quality, camcorder_mode CamMode, camera_id CamId) 函数
// Setting for VIDEO Profile
switch(quality)
{
case CAMCORDER_QUALITY_MTK_LOW:
case CAMCORDER_QUALITY_MTK_NIGHT_LOW:
case CAMCORDER_QUALITY_MTK_TIME_LAPSE_LOW:
case CAMCORDER_QUALITY_MTK_TIME_LAPSE_NIGHT_LOW:
videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_MPEG_4_SP, 12500*1000/CamMode, 1280, 720, 30/CamMode);
……
中给其加上 Profiles
3,仍旧是 MediaProfiles.cpp 文件中操作
/*static*/ void
MediaProfiles::createDefaultCamcorderProfiles(MediaProfiles *profiles) 该函数中也需要加上相应的 Profiles
// front fine camcorder profiles.
MediaProfiles::CamcorderProfile *FrontFineProfile =
createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_FINE, CAMCORDER_DAY_MODE, FRONT_CAMERA);
MediaProfiles::CamcorderProfile *FrontFineSpecificProfile =
createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_FINE, CAMCORDER_DAY_MODE, FRONT_CAMERA);
profiles->mCamcorderProfiles.add(FrontFineProfile);
profiles->mCamcorderProfiles.add(FrontFineSpecificProfile);
// front night fine camcorder profiles.
MediaProfiles::CamcorderProfile *FrontNightFineProfile =
createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_NIGHT_FINE, CAMCORDER_NIGHT_MODE, FRONT_CAMERA);
MediaProfiles::CamcorderProfile *FrontNightFineSpecificProfile =
createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_NIGHT_FINE, CAMCORDER_NIGHT_MODE, FRONT_CAMERA);
profiles->mCamcorderProfiles.add(FrontNightFineProfile);
profiles->mCamcorderProfiles.add(FrontNightFineSpecificProfile);
分别给其加上 front fine camcorder profiles 和 front night fine camcorder profiles
4, app 层在 CameraSettings.java 的 getMTKSupportedVideoQuality 函数中就可以通过 log 输出其分别支持哪些分辨率的录像了
private ArrayList<String> getMTKSupportedVideoQuality() {
ArrayList<String> supported = new ArrayList<String>();
// Check for supported quality
if (CamcorderProfile.hasProfile(mCameraId, CamcorderProfile.QUALITY_480P)) {
supported.add(Integer.toString(CamcorderProfile.QUALITY_480P));
}
if (CamcorderProfile.hasProfile(mCameraId, CamcorderProfile.QUALITY_1080P)) {
supported.add(Integer.toString(CamcorderProfile.QUALITY_1080P));
}
if (CamcorderProfile.hasProfile(mCameraId, CamcorderProfile.QUALITY_MTK_LOW)) {
supported.add(Integer.toString(CamcorderProfile.QUALITY_MTK_LOW));
}
if (CamcorderProfile.hasProfile(mCameraId, CamcorderProfile.QUALITY_MTK_MEDIUM)) {
supported.add(Integer.toString(CamcorderProfile.QUALITY_MTK_MEDIUM));
}
if (CamcorderProfile.hasProfile(mCameraId, CamcorderProfile.QUALITY_MTK_HIGH)) {
supported.add(Integer.toString(CamcorderProfile.QUALITY_MTK_HIGH));
}
for(int i = 0 ; i < supported.size(); i++)
Log.e(TAG,"--------------getMTKSupportedVideoQuality----------i="+supported.get(i));
return supported;
}
完了直接编译 ./mk -t mm framework/base/av/media/libmedia 即可,会得到一个 libmedia.so 库文件,push 到手机端 system/lib 目录下
reboot !
而 PreviewSizes 则可以通过下面这条 log 输出,具体可以添加到 VideoCamera.java 的 startPreview 函数中。
List<Size> sizes1 = mParameters.getSupportedPreviewSizes();
for (int i = 0; i < sizes1.size(); i++) {
Log.d(TAG, "SupportedPreviewSizes : " + sizes1.get(i).width + "x" + sizes1.get(i).height);
}
一般 CamcorderProfile.QUALITY_MTK_LOW 为 176X144
CamcorderProfile.QUALITY_MTK_MEDIUM 为 480X320
CamcorderProfile.QUALITY_MTK_HIGH 为 640X480
CamcorderProfile.QUALITY_MTK_FINE 为 1280X720
对应的 enum 值分别为 8,9,10,11
转自:http://blog.csdn.net/fulinwsuafcie/article/details/8351537
MTK 平台上如何给 camera 添加一种 preview size的更多相关文章
- MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率
1,MTK 平台如何查询当前使用的是哪颗摄像头及相关的模组信息? 在该目录下可以查到当前平台及相关项目的配置文件 ProjectConfig.mk \ALPS.JB.MP.V1_W_20120919\ ...
- 在Ubuntu平台上创建Cordova Camera HTML5应用
在这篇文章中,我们将具体介绍怎样使用Cordova Camera HTML5 应用.很多其它关于Cordova的开发指南,开发人员能够參考文章"the Cordova Guide" ...
- MTK平台Android项目APK预置方案
项目开发中,通常需要向系统中预置一些APK,这里简单介绍一下MTK平台预置APK的方法. 需要预置的apk可以放置在目录:vendor/mediate/${Project}/artifacts/out ...
- andorid之摄像头驱动流程--MTK平台
原文地址:andorid之摄像头驱动流程--MTK平台 作者:守候心田 camera成像原理: 景物通过镜头生产光学图像投射到sensor表面上,然后转为模拟电信号,经过数模变成数字图像信号,在经过D ...
- Android8.1 MTK平台 SystemUI源码分析之 网络信号栏显示刷新
SystemUI系列文章 Android8.1 MTK平台 SystemUI源码分析之 Notification流程 Android8.1 MTK平台 SystemUI源码分析之 电池时钟刷新 And ...
- 在NVIDIA-Jetson平台上构建智能多媒体服务器
在NVIDIA-Jetson平台上构建智能多媒体服务器 Building a Multi-Camera Media Server for AI Processing on the NVIDIA Jet ...
- 关于如何在Android、Java等非微软平台上建立高信任的SharePoint应用程序
关于如何在非微软平台上建立高信任的SharePoint应用程序 原文 :http://blogs.msdn.com/b/kaevans/archive/2014/07/14/high-trust-sh ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
- 在Windows平台上安装Node.js及NPM模块管理
1. 下载Node.js官方Windows版程序:http://nodejs.org/#download 从0.6.1开始,Node.js在Windows平台上提供了两种安装方式,一是.MSI安 ...
随机推荐
- 【转】XCode: duplicate symbol 解决方案
遇到引用库重复定义的问题,需要解决. 项目需要,同时引用ZBar和QQ授权登录SDK,由于二者均使用了Base64处理数据,XCode编译时报错: duplicate symbol _base64_e ...
- Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题
1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...
- iOS中的单例模式
概念相关 单例模式 在程序运行过程,一个类只有一个实例 使用场合 在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次) static static关键字会在声明变量的时候分配内存,在程序运行 ...
- GCD编程 之 略微提高篇
额外任务:学习YouXianMing封装好的GCD源码 1.GCD串行队列与并发队列 串行队列一次只执行一个线程,按照添加到队列的顺序依次执行 并发队列一次可以执行多个线程,线程的执行没有先后 ...
- android之apk反编译
今天就来详细的讲一讲apk的反编译过程,之前自己一直没彻底搞清楚. 一.准备工作 反编译首先要准备三个工具.这三个工具都是可以百度下载的.就是下图所示的三个工具. 这三个工具是有各自作用的: (1)a ...
- Outlook 2013 在邮件里面点击超链接时弹出“组织策略阻止我们为您完成此操作”
现象描叙: 在Outlook在邮件里面点击超链接时,打不开超链接页面,弹出如下提示: 这个是因为之前安装了其它浏览器(例如,我安装了360的浏览器),并且设置为了默认浏览器,后来卸载了该浏览器 ...
- JavaScript中typeof的坑
typeof是一个运算符,它对操作数返回的结果是一个字符串,有6种(只针对ES,不包含HOST环境对象) 'undefined' 'boolean' 'string' 'number' 'object ...
- [部署]CentOS yum源
安装yum源 一般的软件都会提供一个.rpm的软件包,使用rpm指令安装了这个包后会自动添加一个yum仓库源,之后用yum就可以安装该软件了. 安装rpm包 rpm -ivh http://repo. ...
- iBus
0.闲言 闲来无事,重新玩玩Ubuntu,于是先把Ubuntu13.04删了(为什么是13.04?我也不知道)翻出14.04U盘安装,还算顺利,就是不知道为什么DiskGenius为什么一直提示分区表 ...
- 给定一个整数N,找出一个比N大且最接近N,但二进制权值与该整数相同 的数
1,问题描述 给定一个整数N,该整数的二进制权值定义如下:将该整数N转化成二进制表示法,其中 1 的个数即为它的二进制权值. 比如:十进制数1717 的二进制表示为:0000 0110 1011 01 ...