微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 72JB3摄像头500万插值800万

72JB3摄像头500万插值800万

时间:10-02 整理:3721RD 点击:

不知到72 JB3的版本摄像头插值要改哪些地方。
我按照JB2的改了之后,还是没有看到800万的菜单出来,不知到哪里不对,哪位高手能指点一下呢?
在这里先谢过了。

[FAQ06627]JB版本如何实现camera插值
[DESCRIPTION]
  JB 版本camera实现插值
[SOLUTION]
  Camera插值在底层已经做好,我们只需要在中间层和app层添加一个对应的picture size即可。但是有一些限制条件
需要注意:
1.     插值的倍数只能小于等于8倍,也就是说假如是1M的sensor,那最多只能插值到8M;
2.     目前最大只能插值到12M,也就是插值的上限是12M;
3.     由于硬件的bandwidth限制,若sensor是8M或者是插值到8M,需要将底层 rotate image的feature关闭( JB版本
默认是开启的),否则会出现拍照异常的现象(如拍照图片分屏、拍照图片无法保存、拍照图片为空等)。
PS:若您对于底层rotate image的feature不是很了解的话,可以参考FAQ中Camera
Framework&mhal 类别下的FAQ04053
下面是关于插值的方法:
(一)中间层修改
1.\mediatek\custom\project_name\hal\camera\camera\
cfg_ftbl_custom_raw_main.h
( 若为 yuv sensor则修改: cfg_ftbl_custom_yuv_main.h;
若为 raw sensor则修改: cfg_ftbl_custom_raw_main.h )
在如下定义capture size的地方增加您想要的size,如果已经包含你要加的size,就不需要再增加
#if 1
    //  Capture Size
    CONFIG_FEATURE(FID_CAP_SIZE,
        BY_DEFAULT(CAPTURE_SIZE_2560_1920),
        CAPTURE_SIZE_320_240,    CAPTURE_SIZE_640_480,
        CAPTURE_SIZE_1024_768,   CAPTURE_SIZE_1280_960,
        CAPTURE_SIZE_1600_1200, CAPTURE_SIZE_2048_1536,
        CAPTURE_SIZE_2560_1920
    )
#endif
例如:
#if 1
    //  Capture Size
    CONFIG_FEATURE(FID_CAP_SIZE,
        BY_DEFAULT(CAPTURE_SIZE_4000_3000),
        CAPTURE_SIZE_320_240,    CAPTURE_SIZE_640_480,
        CAPTURE_SIZE_1024_768,   CAPTURE_SIZE_1280_960,
        CAPTURE_SIZE_1600_1200, CAPTURE_SIZE_2048_1536,
        CAPTURE_SIZE_2560_1920, CAPTURE_SIZE_3264_2448,
     CAPTURE_SIZE_4096_3072
    )
#endif
2.  \mediatek\custom\common\kernel\imgsensor\inc\kd_camera_feature_enum.h
在如下定义capture size的enum里增加您想要的size,如果已经包含你要加的size,就不需要再增加
//  Capture Size
FID_TO_TYPE_ENUM  (
    FID_CAP_SIZE,
    FTYPE_ENUM  (
        CAPTURE_SIZE_BEGIN      =   0,
        CAPTURE_SIZE_320_240    =   CAPTURE_SIZE_BEGIN,
        CAPTURE_SIZE_640_480,
        CAPTURE_SIZE_1024_768,
        CAPTURE_SIZE_1280_960,
        CAPTURE_SIZE_1600_1200,
        CAPTURE_SIZE_2048_1536,
        CAPTURE_SIZE_2560_1920,
        CAPTURE_SIZE_3264_2448,
        CAPTURE_SIZE_4096_3072,
        NUM_OF_CAPTURE_SIZE
    )
) CAPTURE_SIZE_T;
3. mt6575_JellyBean版本:
\mediatek\platform\mt6575\hardware\camera\hal\camadapter\mhal\
mHalCamParameters.cpp
mt6577_JellyBean版本:
\mediatek\platform\mt6577\hardware\camera\hal\camadapter\mhal\
mHalCamParameters.cpp
修改这两个地方,增加您想要的size,如果已经包含你要加的size,就不需要再增加
    int picSizes[] = {
       CAPTURE_SIZE_4096_3072,  CAPTURE_SIZE_3264_2448,
CAPTURE_SIZE_2560_1920, CAPTURE_SIZE_2048_1536, CAPTURE_SIZE_1600_1200,
CAPTURE_SIZE_1280_960,
        CAPTURE_SIZE_1024_768, CAPTURE_SIZE_640_480,
CAPTURE_SIZE_320_240};
    const char *ppicSizes[] = {
       “4096x3072”, "3264x2448", "2560x1920", "2048x1536", "1600x1200",
"1280x960", "1024x768",
        "640x480", "320x240"};
(二)  app层的修改可以按照如下来修改:
1.\packages\apps\Camera\res\values\strings.xml
增加您想要的size,如果已经包含您要加的size,就不需要再增加
    <string name="pref_camera_picturesize_entry_3264x2448">8M
pixels</string>
    <string name="pref_camera_picturesize_entry_2592x1936">5M
pixels</string>
    <string name="pref_camera_picturesize_entry_2048x1536">3M
pixels</string>
    <string name="pref_camera_picturesize_entry_1600x1200">2M
pixels</string>
    <string name="pref_camera_picturesize_entry_1280x960">1.3M
pixels</string>
    <string name="pref_camera_picturesize_entry_1024x768">1M
pixels</string>
    <string name="pref_camera_picturesize_entry_640x480">VGA</string>
    <string name="pref_camera_picturesize_entry_320x240">QVGA</string>
例如:
    <string name="pref_camera_picturesize_entry_4096x3072">12M
Pixels</string>
    <string name="pref_camera_picturesize_entry_3264x2448">8M
pixels</string>
    <string name="pref_camera_picturesize_entry_2592x1936">5M
pixels</string>
    <string name="pref_camera_picturesize_entry_2048x1536">3M
pixels</string>
    <string name="pref_camera_picturesize_entry_1600x1200">2M
pixels</string>
    <string name="pref_camera_picturesize_entry_1280x960">1.3M
pixels</string>
    <string name="pref_camera_picturesize_entry_1024x768">1M
pixels</string>
    <string name="pref_camera_picturesize_entry_640x480">VGA</string>
    <string name="pref_camera_picturesize_entry_320x240">QVGA</string>
2.\packages\apps\Camera\res\values\arrays.xml
    <string-array name="pref_camera_picturesize_entries"
translatable="false">
        <!-- TODO: Change to a better name of the preference.
                The first element of the array should be
                "pref_camera_picturesize_entry_2592x1944". However, we are
too
                late for the translation. Since we show the same label as
the
                second item, we just use the second one instead.
        -->
        <item>@string/pref_camera_picturesize_entry_3264x2448</item>
        <item>@string/pref_camera_picturesize_entry_2592x1936</item>
        <item>@string/pref_camera_picturesize_entry_2592x1936</item>
        <item>@string/pref_camera_picturesize_entry_2592x1936</item>
        <item>@string/pref_camera_picturesize_entry_2048x1536</item>
        <item>@string/pref_camera_picturesize_entry_1600x1200</item>
        <item>@string/pref_camera_picturesize_entry_1280x960</item>
        <item>@string/pref_camera_picturesize_entry_1024x768</item>
        <item>@string/pref_camera_picturesize_entry_640x480</item>
        <item>@string/pref_camera_picturesize_entry_320x240</item>
    </string-array>
增加您想要的size,如果已经包含您要加的size,就不需要再增加
例如:
    <string-array name="pref_camera_picturesize_entries"
translatable="false">
        <!-- TODO: Change to a better name of the preference.
                The first element of the array should be
                "pref_camera_picturesize_entry_2592x1944". However, we are
too
                late for the translation. Since we show the same label as
the
                second item, we just use the second one instead.
        -->
    <item>@string/pref_camera_picturesize_entry_4096x3072</item>
       <item>@string/pref_camera_picturesize_entry_3264x2448</item>
        <item>@string/pref_camera_picturesize_entry_2592x1936</item>
        <item>@string/pref_camera_picturesize_entry_2592x1936</item>
        <item>@string/pref_camera_picturesize_entry_2592x1936</item>
        <item>@string/pref_camera_picturesize_entry_2048x1536</item>
        <item>@string/pref_camera_picturesize_entry_1600x1200</item>
        <item>@string/pref_camera_picturesize_entry_1280x960</item>
        <item>@string/pref_camera_picturesize_entry_1024x768</item>
        <item>@string/pref_camera_picturesize_entry_640x480</item>
        <item>@string/pref_camera_picturesize_entry_320x240</item>
    </string-array>
3.\packages\apps\Camera\res\values\arrays.xml  
    <string-array name="pref_camera_picturesize_entryvalues"
translatable="false">
        <item>3264x2448</item>
        <item>2592x1944</item>
        <item>2592x1936</item>
        <item>2560x1920</item>
        <item>2048x1536</item>
        <item>1600x1200</item>
        <item>1280x960</item>
        <item>1024x768</item>
        <item>640x480</item>
        <item>320x240</item>
    </string-array>
增加您想要的size,如果已经包含你要加的size,就不需要再增加
例如:
    <string-array name="pref_camera_picturesize_entryvalues"
translatable="false">
        <item>4096x3072</item>
        <item>3264x2448</item>
        <item>2592x1944</item>
        <item>2592x1936</item>
        <item>2560x1920</item>
        <item>2048x1536</item>
        <item>1600x1200</item>
        <item>1280x960</item>
        <item>1024x768</item>
        <item>640x480</item>
        <item>320x240</item>
    </string-array>
4.packages\apps\Camera\res\values\arrays.xml
    <!-- when smile shot mode, just following items are enables -->
   <string-array name="pref_camera_picturesize_for_smileshot_entryvalues"
translateble="false">
        <item>3264x2448</item>
        <item>2592x1944</item>
        <item>2560x1920</item>
        <item>2048x1536</item>
        <item>1600x1200</item>
       <item>1280x960</item>
        <item>1024x768</item>
        <item>640x480</item>
    </string-array>
增加您想要的size,如果已经包含你要加的size,就不需要再增加
例如:
    <!-- when smile shot mode, just following items are enables -->
    <string-array name="pref_camera_picturesize_for_smileshot_entryvalues"
translateble="false">
        <item>4096x3072</item>
        <item>3264x2448</item>
        <item>2592x1944</item>
        <item>2560x1920</item>
        <item>2048x1536</item>
        <item>1600x1200</item>
        <item>1280x960</item>
        <item>1024x768</item>
        <item>640x480</item>
    </string-array>
PS:另外再附上关掉rotate image的feauture的方法:
代码文件
mediatek\platform\mt6577\hardware\camera\hal\Camadapter\mhal\
mHalCamAdapter.cpp
将status_t MTKCameraHardware::takePictureInternal() 方法中的
原来的:
              if (mu4ShotMode == MHAL_CAM_CAP_MODE_CONTINUOUS_SHOT ||
        false == NSCamCustom::isSupportJpegOrientation()
        )
    {
        mmHalCamParam.camExifParam.orientation =
mParameters.getInt(MtkCameraParameters::KEY_ROTATION);
        mmHalCamParam.u4JPEGOrientation = 0;
    }
    else
    {
        mmHalCamParam.camExifParam.orientation = 0;
        mmHalCamParam.u4JPEGOrientation =
mParameters.getInt(MtkCameraParameters::KEY_ROTATION) / 90;
        if (mmHalCamParam.u4JPEGOrientation != 0)
        {
            mmHalCamParam.u4DumpYuvData = 1;
        }
    }
   修改为:
             mmHalCamParam.camExifParam.orientation =
mParameters.getInt(MtkCameraParameters::KEY_ROTATION);
        mmHalCamParam.u4JPEGOrientation = 0;

谢谢谢谢非常感谢。

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

网站地图

Top