zoukankan      html  css  js  c++  java
  • android JB2连拍降速原理介绍

    1、HAL层
    (1)alpsmediatekplatformmt6589hardwarecameracorecamshotMultiShotMultiShot.cpp sleep实现降速。
    在sendCommand处理ECamShot_CMD_SET_CSHOT_SPEED。ECamShot_CMD_SET_CSHOT_SPEED定义在alpsmediatekplatformmt6589hardwarecamerainccamshot\_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的函数,在alpsmediatekplatformmt6589hardwarecamerahaladapterscenarioshotcontinuousshotContinuousShot.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定义在alpsmediatekplatformmt6589hardwarecamerahaladapterincscenarioshotIShot.h
        case eCmd_setCShotSpeed:
            ret = onCmd_setCShotSpeed(arg1);
            break;
     
    (3)Adapter在下面文件的函数setCShotSpeed发送eCmd_setCShotSpeed。
    MtkPhotoCamAdapter.Capture.cpp (alpsmediatekplatformmt6589hardwarecamerahaladaptermtkphoto):
    MtkZsdNccCamAdapter.Capture.cpp (alpsmediatekplatformmt6589hardwarecamerahaladaptermtkzsdmtkzsdncc):
    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 (alpsmediatekframeworks-extavincludecamera):   
    CAMERA_CMD_SET_CSHOT_SPEED,
     
    MtkPhotoCamAdapter.cpp (alpsmediatekplatformmt6589hardwarecamerahaladaptermtkphoto): 
    MtkZsdCcCamAdapter.cpp (alpsmediatekplatformmt6589hardwarecamerahaladaptermtkzsdmtkzsdcc):
    MtkZsdNccCamAdapter.cpp (alpsmediatekplatformmt6589hardwarecamerahaladaptermtkzsdmtkzsdncc): 
        case CAMERA_CMD_SET_CSHOT_SPEED:
            return setCShotSpeed(arg1);
                      
    2、JNI层
    (1)android_hardware_Camera.cpp (alpsframeworksasecorejni):
    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 (alpsframeworksasecorejavaandroidhardware):  
     public native void setContinuousShotSpeed(int speed);
     
  • 相关阅读:
    Spring Boot中通过CORS解决跨域问题
    使用aop注解实现表单防重复提交功能
    Springboot分别使用乐观锁和分布式锁(基于redisson)完成高并发防超卖
    关于日期格式yyyy-MM-dd和YYYY-MM-dd
    基于Java8的日期时间工具类DateTimeFormatter
    Springboot 配置 ssl 实现HTTPS 请求 & Tomcat配置SSL支持https请求
    springboot+layui实现PC端用户的增删改查 & 整合mui实现app端的自动登录和用户的上拉加载 & HBuilder打包app并在手机端下载安装
    Springboot的日志管理&Springboot整合Junit测试&Springboot中AOP的使用
    Springboot实体类转JSON报错Could not find acceptable representation & 设置访问项目根路径的默认欢迎页面
    SpringMVC 使用@ResponseBody返回json 中文乱码与返回实体类报错
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4495524.html
Copyright © 2011-2022 走看看