1、
normal shot.
alps\mediatek\platform\mt6595\hardware\mtkcam\v1\adapter\Scenario\Shot\NormalShot\NormalShot.cpp,
bool
NormalShot::
onCmd_capture()

...
//加上以下code
 if(getOpenId() == 1 && bFlip){
  switch(mShotParam.mu4Transform){
   case eTransform_ROT_90:
    mShotParam.mu4Transform = eTransform_FLIP_V | eTransform_ROT_90; 
    break;
    
   case eTransform_ROT_270:
    mShotParam.mu4Transform = eTransform_FLIP_H | eTransform_ROT_90; 
    break; 
   case eTransform_ROT_180:
    mShotParam.mu4Transform = eTransform_FLIP_V; 
    break;
    
   default:
    mShotParam.mu4Transform = eTransform_FLIP_H; 
    break;
  }
 }
//加上code,end
    // shot param 
    NSCamShot::ShotParam rShotParam(
            eImgFmt_YUY2,                    //yuv format 
            mShotParam.mi4PictureWidth,      //picutre width 
            mShotParam.mi4PictureHeight,     //picture height
            mShotParam.mu4Transform,         //picture transform 
            ePostViewFmt,                    //postview format 
            mShotParam.mi4PostviewWidth,     //postview width 
            mShotParam.mi4PostviewHeight,    //postview height 
            0,                               //postview transform
            mShotParam.mu4ZoomRatio          //zoom   
            ); 
(2)Face beauty,
alps\mediatek\platform\mt6595\hardware\mtkcam\v1\adapter\Scenario\Shot\FBShot\Facebeauty.cpp,
MBOOL
Mhal_facebeauty::
createJpegImg(IImageBuffer const * rSrcImgBufInfo
      , NSCamShot::JpegParam const & rJpgParm
      , MUINT32 const u4Transform
      , IImageBuffer const * rJpgImgBufInfo
      , MUINT32 & u4JpegSize)
{
...

    pISImager->setTransform(u4Transform);
替换为
 if(getOpenId() == 1 && bFlip){
  MUINT32 mu4Transform = 0;
  switch(u4Transform){
   case eTransform_ROT_90:
    mu4Transform = eTransform_FLIP_V | eTransform_ROT_90; 
    break;
    
   case eTransform_ROT_270:
    mu4Transform = eTransform_FLIP_H | eTransform_ROT_90; 
    break; 
   case eTransform_ROT_180:
    mu4Transform = eTransform_FLIP_V; 
    break;
    
   default:
    mu4Transform = eTransform_FLIP_H; 
    break;
  }
  pISImager->setTransform(mu4Transform);
 }else
  pISImager->setTransform(u4Transform);
(3)zsd shot,
alps\mediatek\platform\mt6595\hardware\mtkcam\v1\adapter\Scenario\Shot\CapBufShot\CapBufShot.cpp,
bool
CapBufShot::
onCmd_capture()

...
//加上以下code
 if(getOpenId() == 1 && bFlip){
  switch(mShotParam.mu4Transform){
   case eTransform_ROT_90:
    mShotParam.mu4Transform = eTransform_FLIP_V | eTransform_ROT_90; 
    break;
    
   case eTransform_ROT_270:
    mShotParam.mu4Transform = eTransform_FLIP_H | eTransform_ROT_90; 
    break; 
   case eTransform_ROT_180:
    mShotParam.mu4Transform = eTransform_FLIP_V; 
    break;
    
   default:
    mShotParam.mu4Transform = eTransform_FLIP_H; 
    break;
  }
 }
//加上code,end
    // shot param 
    NSCamShot::ShotParam rShotParam(
            eImgFmt_YUY2,                    //yuv format 
            mShotParam.mi4PictureWidth,      //picutre width 
            mShotParam.mi4PictureHeight,     //picture height
            mShotParam.mu4Transform,         //picture transform 
            ePostViewFmt,                    //postview format 
            mShotParam.mi4PostviewWidth,     //postview width 
            mShotParam.mi4PostviewHeight,    //postview height 
            0,                               //postview transform
            mShotParam.mu4ZoomRatio          //zoom   
            );
 
2、
alps/mediatek/platform/mt6595/hardware/mtkcam/core/
SingleShot.cpp
BurstShot.cpp
MultiShot.cpp
pass2node.preview.cpp
pass2node.capture.cpp
搜索eTransform_ROT_90,

    if( XX == eTransform_ROT_90 ||
            XX == eTransform_ROT_270 )
替换为
    if( XX & eTransform_ROT_90 ||
            XX == eTransform_ROT_270)
 
3、
(1)alps/mediatek/platform/mt6595/hardware/mtkcam/core/iopipe/SImager/ImageTransform/ImageTransform.cpp
MBOOL 
ImageTransform::
convertTransform(
    MUINT32 const u4Transform, 
    MUINT32 & u4Rotation, 
    MUINT32 & u4Flip
)
{
。。。

#define TransCase( trans, rot, flip ) \
        case trans:                   \
            u4Rotation = (rot);       \
            u4Flip = (flip);          \
            break;
        TransCase(0                  , 0   , 0)
        TransCase(eTransform_FLIP_H  , 180 , 1)
        TransCase(eTransform_FLIP_V  , 0   , 1)
        TransCase(eTransform_ROT_90  , 90  , 0)
        TransCase(eTransform_ROT_180 , 180 , 0)
        TransCase(eTransform_ROT_270 , 270 , 0)
        default:
            MY_LOGE("not supported transform(0x%x)", u4Transform);
            u4Rotation = 0; 
            u4Flip = 0; 
            return MFALSE;
            break;
#undef TransCase
替换为
#define TransCase( trans, rot, flip ) \
        case trans:                   \
            u4Rotation = (rot);       \
            u4Flip = (flip);          \
            break;
        TransCase(0                  , 0   , 0)
        TransCase(eTransform_FLIP_H  , 0 , 1)
        TransCase(eTransform_FLIP_V  , 180 , 1)
        TransCase(eTransform_ROT_90  , 90  , 0)
        TransCase(eTransform_ROT_180 , 180 , 0)
        TransCase(eTransform_FLIP_H|eTransform_ROT_90  , 270  , 1)
        TransCase(eTransform_FLIP_V|eTransform_ROT_90 , 90 , 1)
        TransCase(eTransform_ROT_270 , 270 , 0)
        default:
            MY_LOGE("not supported transform(0x%x)", u4Transform);
            u4Rotation = 0; 
            u4Flip = 0; 
            return MFALSE;
            break;
#undef TransCase
(2)alps\mediatek\platform\mt6595\hardware\mtkcam\core\iopipe\PostProc\HalPipeWrapper.cpp,

TransformMapping mTransformMapping[TRANSFORM_MAX]=
{
    {0,                 NSImageio::NSIspio::eImgRot_0,  NSImageio::NSIspio::eImgFlip_OFF},
    {eTransform_FLIP_H, NSImageio::NSIspio::eImgRot_0,  NSImageio::NSIspio::eImgFlip_ON},
    {eTransform_FLIP_V, NSImageio::NSIspio::eImgRot_0,  NSImageio::NSIspio::eImgFlip_ON},
    {eTransform_ROT_180,NSImageio::NSIspio::eImgRot_180,NSImageio::NSIspio::eImgFlip_OFF},
    {eTransform_ROT_90, NSImageio::NSIspio::eImgRot_90, NSImageio::NSIspio::eImgFlip_OFF},
    {0,                 NSImageio::NSIspio::eImgRot_0,  NSImageio::NSIspio::eImgFlip_OFF},
    {0,                 NSImageio::NSIspio::eImgRot_0,  NSImageio::NSIspio::eImgFlip_OFF},
    {eTransform_ROT_270,NSImageio::NSIspio::eImgRot_270,NSImageio::NSIspio::eImgFlip_OFF}
};
替换为
TransformMapping mTransformMapping[TRANSFORM_MAX]=
{
    {0,                 NSImageio::NSIspio::eImgRot_0,  NSImageio::NSIspio::eImgFlip_OFF},
    {eTransform_FLIP_H, NSImageio::NSIspio::eImgRot_0,  NSImageio::NSIspio::eImgFlip_ON},
    {eTransform_FLIP_V, NSImageio::NSIspio::eImgRot_180,  NSImageio::NSIspio::eImgFlip_ON},
    {eTransform_ROT_180,NSImageio::NSIspio::eImgRot_180,NSImageio::NSIspio::eImgFlip_OFF},
    {eTransform_ROT_90, NSImageio::NSIspio::eImgRot_90, NSImageio::NSIspio::eImgFlip_OFF},
    {eTransform_FLIP_H|eTransform_ROT_90, NSImageio::NSIspio::eImgRot_270,  NSImageio::NSIspio::eImgFlip_ON},
    {eTransform_FLIP_V|eTransform_ROT_90, NSImageio::NSIspio::eImgRot_90,  NSImageio::NSIspio::eImgFlip_ON},
    {eTransform_ROT_270,NSImageio::NSIspio::eImgRot_270,NSImageio::NSIspio::eImgFlip_OFF}
};

android KK上,前摄,对于normal、zsd、facebeauty拍照,实现mirror相关推荐

  1. 用Linux Deploy在Android手机上安装Linux

    每小时进行5分钟的活动,能降低患上许多致命疾病的风险.--<程序员健康指南> 简介 使用Linux Deploy唯一的好处就是可以充分利用废弃的手机,而且手机具有省电,便捷的特点.安装了L ...

  2. 基于MNN在Android手机上实现图像分类

    原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 本文链接:基于MNN在And ...

  3. 奥比中光Gemini 3D双目结构光深度相机在Android平台上深度数据噪点非常多的问题

    相机:Gemini 3D双目结构光深度相机 环境:Android7.1 软件:SDK中的java demo下的depthforopenni2 问题: 在Android样例depthforopenni2 ...

  4. Gemini 3D双目结构光深度相机在Android平台上深度数据噪点非常多的问题

    相机:Gemini 3D双目结构光深度相机 环境:Android7.1 软件:SDK中的java demo下的depthforopenni2 问题: 在Android样例depthforopenni2 ...

  5. android9系统webview崩溃,Android WebView已开始在Android 9上崩溃

    您好专家Android开发人员: 我们有一个android应用,我们的基本工作流程如下 通过电子邮件或短信向用户发送了链接 用户单击链接,然后在Chrome或Android默认浏览器上打开一个页面,并 ...

  6. Android驱动(1)---Ubuntu中为Android系统上编写Linux内核驱动程序实现方法

    Ubuntu中为Android系统上编写Linux内核驱动程序实现方法 本文主要介绍在Ubuntu 上为Android系统编写Linux内核驱动程序, 这里对编写驱动程序做了详细的说明,对研究Andr ...

  7. Android P (4)一种绕过Android P上非SDK接口限制的简单方法

    一种绕过Android P上非SDK接口限制的简单方法 众所周知,Android P 引入了 针对非 SDK 接口(俗称为隐藏API)的使用限制.这是继 Android N上 针对 NDK 中私有库的 ...

  8. 小米MIX 4屏幕细节曝光:首发柔性曲面屏下前摄

    据此前多方爆料显示,小米将会在8月份召开新品发布会,推出MIX系列时隔三年后的再度回归之作--全新的小米MIX4.该机最大的亮点是将继续对极致全面屏进行探索,有望首发搭载屏下摄像头技术.现在有最新消息 ...

  9. 华为Y9 Prime 2019曝光:无刘海无水滴全面屏+升降前摄

    P30 Pro没有做成全面屏,是一项小小的遗憾,而在安卓手机市场上,华为悄悄推出自家首款全面屏+生姜摄像头设计手机:Y9 Prime 2019. 5月4日消息,知名爆料人士Slashleaks放出了华 ...

最新文章

  1. 云边协同 — 协同的类型
  2. php 开源 流量统计,5款开源的PHP网站流量统计应用程序
  3. 基于Nginx的负载均衡
  4. 我们来谈下高并发和分布式中的幂等处理
  5. 《众妙之门——自由网站设计师成功之道》一1.4 自由网站设计师犯的严重错误...
  6. ubuntu16下vue-cli安装
  7. LOJ#6282. 数列分块入门 6
  8. Python实例讲解 -- 解析xml
  9. python的加减乘除运算_python实现四则运算
  10. kotlin 类构造函数_Kotlin类– Kotlin构造函数
  11. 不规则物体形状匹配综述
  12. 光伏补贴双轨制仍将延续
  13. linux伪造ip数据包,伪造ICMP数据包的IP层
  14. C函数返回多个参数给lua
  15. 最新二开微信表情包小程序+前后端 【去授权版】
  16. 用户、巨头、计算平台,最终都是“社交”的傀儡?
  17. 备忘录吕吕没有备忘录十新建_前往地图备忘单
  18. [JS]JSON字符串与JS对象的转换
  19. mysql 库损坏恢复数据方法
  20. Kmeans 算法实例,入门必看!!!!

热门文章

  1. Duplicate Entry
  2. 计算机的英语作文模板,计算机英文模板 简历
  3. 美团面试 一面+二面
  4. 青龙-腾讯自选股双端[简单稳定]
  5. 运行Python程序的几种方式
  6. 敏捷开发模式下如何用 PingCode 这类工具进行版本发布管理
  7. CTFSHOW新手杯MISC部分WriteUp
  8. MBG(MyBatis Generator) 生成字段添加反引号(`)
  9. C语言 数组的指针和指向数组的指针变量-2
  10. 记一次Oracle 11.2.0.4 RAC异地还原到单实例