微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 前摄添加720P录像size

前摄添加720P录像size

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
针对前置摄像头,默认支持低(176*144)跟高(640*480)两种录像size,如果想要在前置摄像头添加720P的录像size,该怎么实现?
[ANALYSE]

CAMERA AP显示哪些video size由什么确定:

在camera AP有定义了低,中,高,精细,HD+(如果支援1080P录像)几种quality。

在mediaprofiles.cpp中,针对前后摄像头以及不同的quality定义了不同的profile。profile 里面主要包含了要录制的video的宽,高,比特率,帧率等信息。camera AP在录制视频的时侯,会根据当前要录制的quality以及是前置还是后置摄像头,从mediaprofile里面得到对应的profile,并将profile里面的宽,高,比特率,帧率等信息设置给mediarecorder。

所以camera AP显示菜单时,会去查看mediaprofile中是否针对该种quality定义相应的profile。如果有,才会显示在菜单上。


[SOLUTION]
L之前版本,可以参考“[FAQ04386]前置摄像头添加720P录像size”。L版本之后code位置发生了变化,需要在如下地方进行添加修改。
想要在前置摄像头添加720P的录像size,从camera ap来说,首先已经定义该quality(也就是fine),接下来需要在mediaprofile为前置摄像头添加720P的profile即可。这里以720P(fine)为例,如果想要增加480x320(即Medium)参考此类似添加即可。
1.在MediaProfiles.cpp文件的MediaProfiles::createmtkLegacyCamcorderProfiles(MediaProfiles *profiles)函数中加入:
[C/C++]hide
[size=1em]

[size=1em]1


[size=1em]2


[size=1em]3


[size=1em]4


[size=1em]5


[size=1em]6


[size=1em]7


[size=1em]8


[size=1em]9


[size=1em]10


[size=1em]11


[size=1em]12


[size=1em]13


[size=1em]14


[size=1em]15


[size=1em]16


[size=1em]17


[size=1em]18


[size=1em]19


[size=1em]20


[size=1em]21


[size=1em]22


[size=1em]23


[size=1em]24


[size=1em]25


[size=1em]26


[size=1em]27


[size=1em]28


[size=1em]29


[size=1em]30


[size=1em]31


[size=1em]32


[size=1em]33

[size=1em][size=1em]//CAMCORDER_QUALITY_MTK_FINE
[size=1em]MediaProfiles::CamcorderProfile *FrontFineProfile =
[size=1em]createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_FINE, CAMCORDER_DAY_MODE, FRONT_CAMERA);
[size=1em]profiles->mCamcorderProfiles.add(FrontFineProfile);
[size=1em]//CAMCORDER_QUALITY_MTK_NIGHT_FINE
[size=1em]MediaProfiles::CamcorderProfile *FrontNightFineProfile =
[size=1em]createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_NIGHT_FINE, CAMCORDER_NIGHT_MODE, FRONT_CAMERA);
[size=1em]profiles->mCamcorderProfiles.add(FrontNightFineProfile);
[size=1em]//CAMCORDER_QUALITY_MTK_TIME_LAPSE_FINE
[size=1em]MediaProfiles::CamcorderProfile *FrontFineTimeLapseProfile =
[size=1em]createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_TIME_LAPSE_FINE, CAMCORDER_DAY_MODE, FRONT_CAMERA);
[size=1em]profiles->mCamcorderProfiles.add(FrontFineTimeLapseProfile);
[size=1em]//CAMCORDER_QUALITY_MTK_TIME_LAPSE_NIGHT_FINE
[size=1em]MediaProfiles::CamcorderProfile *FrontNightFineTimeLapseProfile =
[size=1em]createMTKCamcorderProfile(CAMCORDER_QUALITY_MTK_TIME_LAPSE_NIGHT_FINE,
[size=1em]CAMCORDER_NIGHT_MODE, FRONT_CAMERA);
[size=1em]profiles->mCamcorderProfiles.add(FrontNightFineTimeLapseProfile);




2.根据项目的platform,在MediaProfiles.cpp文件的MediaProfiles::createMTKFineVideoProfile(camcorder_mode CamMode, camera_id CamId)函数中找到对应platform的case (这里以MT6580为例)

[C/C++]hide
[size=1em]

[size=1em]1


[size=1em]2


[size=1em]3


[size=1em]4


[size=1em]5


[size=1em]6


[size=1em]7


[size=1em]8


[size=1em]9


[size=1em]10


[size=1em]11


[size=1em]12


[size=1em]13


[size=1em]14


[size=1em]15


[size=1em]16


[size=1em]17


[size=1em]18


[size=1em]19


[size=1em]20


[size=1em]21


[size=1em]22


[size=1em]23


[size=1em]24


[size=1em]25


[size=1em]26


[size=1em]27


[size=1em]28


[size=1em]29


[size=1em]30


[size=1em]31


[size=1em]32


[size=1em]33


[size=1em]34


[size=1em]35


[size=1em]36


[size=1em]37


[size=1em]38


[size=1em]39


[size=1em]40


[size=1em]41


[size=1em]42


[size=1em]43


[size=1em]44


[size=1em]45


[size=1em]46


[size=1em]47


[size=1em]48


[size=1em]49


[size=1em]50


[size=1em]51


[size=1em]52


[size=1em]53


[size=1em]54


[size=1em]55


[size=1em]56


[size=1em]57


[size=1em]58


[size=1em]59


[size=1em]60


[size=1em]61


[size=1em]62


[size=1em]63


[size=1em]64


[size=1em]65


[size=1em]66


[size=1em]67


[size=1em]68


[size=1em]69


[size=1em]70


[size=1em]71


[size=1em]72


[size=1em]73

[size=1em][size=1em]case VAL_CHIP_NAME_MT6572:
[size=1em] case VAL_CHIP_NAME_MT6571:
[size=1em] case VAL_CHIP_NAME_MT6575:
[size=1em] case VAL_CHIP_NAME_MT6577:
[size=1em] case VAL_CHIP_NAME_DENALI_2:
[size=1em] case VAL_CHIP_NAME_MT6570:
[size=1em] case VAL_CHIP_NAME_MT6580:
[size=1em] {
[size=1em]将此case下修改为:
[size=1em]{
[size=1em] if ( ((VAL_CHIP_NAME_MT6571 == eChipName) && (VAL_CHIP_VARIant_MT6571L == eChipVariant)))
[size=1em] {
[size=1em] // 71L
[size=1em] videoCodec = new MediaProfiles::VideoCodec(
[size=1em] VIDEO_ENCODER_MPEG_4_SP, 4000*1000, 864, 480, 15);
[size=1em] }
[size=1em] else
[size=1em] {
[size=1em] If (CamID == BACK_CAMERA) { // modify begin +++, back camera走原来的flow
[size=1em] if(getVideoCapability(
[size=1em] VIDEO_ENCODER_MPEG_4_SP, &u4Width, &u4Height, &u4BitRate, &u4FrameRate ) > 0)
[size=1em] {
[size=1em] videoCodec = new MediaProfiles::VideoCodec(
[size=1em] VIDEO_ENCODER_MPEG_4_SP, (u4BitRate)/CamMode,
[size=1em] u4Width, u4Height, u4FrameRate/CamMode);
[size=1em] }
[size=1em] else
[size=1em] {
[size=1em] videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_MPEG_4_SP, 12500*1000/CamMode, 1280, 720, 30/CamMode);
[size=1em] }
[size=1em] }
[size=1em] else // 添加front camera 的videoCodec
[size=1em] {
[size=1em] videoCodec = new MediaProfiles::VideoCodec(VIDEO_ENCODER_MPEG_4_SP, 12500*1000/CamMode, 1280, 720, 30/CamMode);
[size=1em] } // modify end -----
[size=1em] }
[size=1em] }



【注意】
如上修改之后,还要保证在feature table中有1280×720的preview size。如果没有,需要在feature table中添加PREVIEW_SIZE_1280_720。具体请参考“FAQ04462 如何配置camera的feature table”

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top