1、HAL层

(1)alps\mediatek\platform\mt6589\hardware\camera\core\camshot\MultiShot\MultiShot.cpp sleep实现降速。

在sendCommand处理ECamShot_CMD_SET_CSHOT_SPEED。ECamShot_CMD_SET_CSHOT_SPEED定义在alps\mediatek\platform\mt6589\hardware\camera\inc\camshot\_params.h.

MBOOL

MultiShot::

sendCommand(MINT32 cmd, MINT32 arg1, MINT32 arg2, MINT32 arg3)

{

    FUNCTION_LOG_START;

 

    MBOOL ret = MTRUE;

    //

    switch  (cmd)

    {

    case ECamShot_CMD_SET_CSHOT_SPEED:

        if(arg1 > 0)

        {

            mu4ShotSpeed = arg1;

            ret = MTRUE;

        }

        else

        {

            MY_LOGD("set invalid shot speed: %d", arg1);

            ret = MFALSE;

        }

        break;

    default:

        break;

    }

    //

 

    FUNCTION_LOG_END;

    //

    return ret;

}

 

(2)发送ECamShot_CMD_SET_CSHOT_SPEED的函数,在alps\mediatek\platform\mt6589\hardware\camera\hal\adapter\scenario\shot\continuousshot\ContinuousShot.cpp,

bool

ContinuousShot::

onCmd_setCShotSpeed(uint32_t u4CShotSpeed)

{

    bool ret = true;

 

    Mutex::Autolock lock(mShotStopMtx);

    if(!mbShotStoped && mpMultiShot!=NULL)

    {

        MY_LOGD("set continuous shot speed: %d", u4CShotSpeed);

        ret = mpMultiShot->sendCommand(NSCamShot::ECamShot_CMD_SET_CSHOT_SPEED, u4CShotSpeed, 0, 0);

    }

 

    return ret;

}

同一时候在该文件的sendCommand函数处理adapter传下的eCmd_setCShotSpeed。eCmd_setCShotSpeed定义在alps\mediatek\platform\mt6589\hardware\camera\hal\adapter\inc\scenario\shot\IShot.h

    case eCmd_setCShotSpeed:

        ret = onCmd_setCShotSpeed(arg1);

        break;

 

(3)Adapter在下面文件的函数setCShotSpeed发送eCmd_setCShotSpeed。

MtkPhotoCamAdapter.Capture.cpp (alps\mediatek\platform\mt6589\hardware\camera\hal\adapter\mtkphoto):

MtkZsdNccCamAdapter.Capture.cpp (alps\mediatek\platform\mt6589\hardware\camera\hal\adapter\mtkzsd\mtkzsdncc):

status_t

CamAdapter::

setCShotSpeed(int32_t i4CShotSpeeed)

{

    if(i4CShotSpeeed <= 0)

    {

        MY_LOGE("can not set continuous shot speed as %d fps)", i4CShotSpeeed);

        return BAD_VALUE;

    }

   

    sp<IShot> pShot = mpShot;

    if  ( pShot != 0 )

    {

        pShot->sendCommand(eCmd_setCShotSpeed, i4CShotSpeeed, 0);

    }

   

    return OK;

}

 

在下面文件sendCommad函数处理JNI送下来的CAMERA_CMD_SET_CSHOT_SPEED。

MtkCamera.h (alps\mediatek\frameworks-ext\av\include\camera):   

CAMERA_CMD_SET_CSHOT_SPEED,

 

MtkPhotoCamAdapter.cpp (alps\mediatek\platform\mt6589\hardware\camera\hal\adapter\mtkphoto): 

MtkZsdCcCamAdapter.cpp (alps\mediatek\platform\mt6589\hardware\camera\hal\adapter\mtkzsd\mtkzsdcc):

MtkZsdNccCamAdapter.cpp (alps\mediatek\platform\mt6589\hardware\camera\hal\adapter\mtkzsd\mtkzsdncc): 

    case CAMERA_CMD_SET_CSHOT_SPEED:

        return setCShotSpeed(arg1);

                  

2、JNI层

(1)android_hardware_Camera.cpp (alps\frameworks\base\core\jni):

static void android_hardware_Camera_setContinuousShotSpeed(JNIEnv *env, jobject thiz, jint value)

(2)

static JNINativeMethod camMethods[] = {

...

  { "setContinuousShotSpeed",

    "(I)V",

    (void *)android_hardware_Camera_setContinuousShotSpeed },

(3)Camera.java (alps\frameworks\base\core\java\android\hardware):  

 public native void setContinuousShotSpeed(int speed);

 

android JB2连拍降速原理介绍的更多相关文章

  1. Android Animation学习(一) Property Animation原理介绍和API简介

    Android Animation学习(一) Property Animation介绍 Android Animation Android framework提供了两种动画系统: property a ...

  2. 液晶常用接口“LVDS、TTL、RSDS、TMDS”技术原理介绍

    液晶常用接口“LVDS.TTL.RSDS.TMDS”技术原理介绍 1:Lvds Low-Voltage Differential Signaling 低压差分信号 1994年由美国国家半导体公司提出之 ...

  3. Android反射机制实现与原理

    本文介绍Android反射机制实现与原理,在介绍之前,要和Java进行比较,所以先看下Java中的反射相关知识: 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或 ...

  4. Android SDK目录结构和工具介绍

    Android SDK目录结构和工具介绍是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK内容的详解来看本文. AD: Android SDK目录结构和 ...

  5. Android非常有用的开源库介绍整理

    Android开源库 自己一直很喜欢Android开发,就如博客副标题一样,我想做个好的App. 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 ...

  6. 写给 Android 应用工程师的 Binder 原理剖析

    写给 Android 应用工程师的 Binder 原理剖析 一. 前言 这篇文章我酝酿了很久,参考了很多资料,读了很多源码,却依旧不敢下笔.生怕自己理解上还有偏差,对大家造成误解,贻笑大方.又怕自己理 ...

  7. Android检测Cursor泄漏的原理以及使用方法(转)

    简介: 本文介绍如何在 Android 检测 Cursor 泄漏的原理以及使用方法,还指出几种常见的出错示例.有一些泄漏在代码中难以察觉,但程序长时间运行后必然会出现异常.同时该方法同样适合于其他需要 ...

  8. android多线程-AsyncTask之工作原理深入解析(下)

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

  9. android多线程-AsyncTask之工作原理深入解析(上)

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

随机推荐

  1. SQL server 数据库视频总结

    用了半个多月的时间把,浙江大学耿建玲老师 数据库视频看了一遍.在看视频之前,曾经接收了一个学生信息管理系统,在学习  学生信息管理系统的时候,对于数据库的部分,总是那么一知半解.带着疑惑来看耿建玲老师 ...

  2. Python经常使用第三方工具、库、骨架

    Python ImagingLibrary(PIL):它提供强大的图形处理的能力,并提供广泛的图形文件格式支持.该库能进行图形格式的转换.打印和显示.还能进行一些图形效果的处理,如图形的放大.缩小和旋 ...

  3. 概率图模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-多项式贝叶斯

    之前忘记强调了一个重要差别:条件概率链式法则和贝叶斯网络链式法则的差别 条件概率链式法则 贝叶斯网络链式法则,如图1 图1 乍一看非常easy认为贝叶斯网络链式法则不就是大家曾经学的链式法则么,事实上 ...

  4. Ext JS学习第三天 我们所熟悉的javascript(二)

    •javascript之函数 •对于Ext开发者,我还是希望你能对javascript原生的东西非常了解.甚至熟练掌握运用.那么函数,无疑是非常重要的概念.首先在前面一讲,我们知道了函数也是一种数据类 ...

  5. python命令行解析工具argparse模块【2】

    上一节,我们简要的介绍了argparse的用法,接下来几节,将详细讲解其中的参数及用法,这一节我们讲解ArgumentParser对象. argparse.ArgumentParser([descri ...

  6. JDBC_批量处理语句提高处理速度

    •当需要成批插入或者更新记录时.可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理.通常情况下比单独提交处理更有效率 •JDBC的批量处理语句包括下面两个方法: –addB ...

  7. Python——str(字符串)内部功能介绍

    str内部功能详解: class str(object): """ str(object='') -> str str(bytes_or_buffer[, enco ...

  8. 解决phpmyadmin配置文件的权限问题

    如果部署的phpmyadmin权限为所有人可写,即权限为777,就会报”Wrong permissions on configuration file, should not be world wri ...

  9. QT图片旋转

    目前发现有两种方法,如下: 1.使用QPixmap的transformed函数旋转,这个函数默认是以图片中心为旋转点,不能随意设置旋转点,使用如下: QMatrix leftmatrix; leftm ...

  10. JAVA用JNI方法调用C代码实现HelloWorld

    一.首先是java运行环境的搭建,到官网下载java jdk安装即可(注意要修改环境变量).还可以顺便安装eclipse. 二.编写java代码,文件名HelloWorld.java public c ...