日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MTK 平台上如何给 camera 添加一种 preview size

發布時間:2025/4/16 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的MTK 平台上如何给 camera 添加一种 preview size的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。