Files
vendor_xiaomi_klee/proprietary/odm/etc/camera/xiaomi/ecoMetaExtension.json
T
2026-07-07 11:36:01 +00:00

654 lines
24 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
说明:
OptMode/RoleId/Meta 过滤\转换配置,Root为字典数组类型
字典内字段说明:
Signature: 字符串,配置功能名称,内外部调用的凭依, 必须配置
名称相同时,合并所有同名配置后生效, 如果子配置实在无法合并则文件下部的配置的生效,
例如:
{"Signature" = "A", x = 1, y = [2]}
{"Signature" = "A", x = 3, y = [4]}
最终表现为:
{"Signature" = "A", x = 3, y = [2,4]}
注意,若有 Version 配置,则还要比较 Version, Version 最大的那条配置生效
例如:
{"Signature" = "A", Version = "1.0" x = 1, y = [2]}
{"Signature" = "A", Version = "2.0" x = 3, y = [4]}
最终表现为:
{"Signature" = "A", Version = "2.0" x = 3, y = [4]}
Version: 字符串,版本号,可不配置,默认为空,Signature相同时,版本大的配置完全覆盖替换同版本小的。
使用字符串比较规则,从左向右比较,逐个比较ASCII码数值大小,
字符串末尾的空(/0)最小,例如:
"1.11" > "1.10" > "1.1.1" > "1.1" "1.0" > "1" >
注意比较细节:
数字 > '.' > '/0'
Parents: 字符串/字符串数组,父配置功能名称,可不配置,默认为空
本配置在父配置的基础上合并后生效,
数组代表多个父配置进行合并后,再对本配置进行合并后生效
IsPublish: bool类型,是否允许外步调用,可不配置,默认 true
如果配置为 false,则只作为内部引用,或废弃
注意如果最大版本号的功能配置废弃,则同功能名较小版本号的配置也一起无效
Source/Target: dict类型,输入/输出的参数配置字典,可不配置
字典内子项均可不配置,不配置代表跳过,不关心此子项
注意,Characteristics 阶段 只支持 Source CameraRoleId Target的 Meta
Preview/Capture阶段,仅支持 Target Meta
Config 阶段各字段均支持。
CameraId: Int类型/Int数组,保留字段,设备上挂载的摄像头id
注意硬件变化此数值会有错误,如主摄硬件坏掉了,那 id 0 挂载的是前摄,
故尽量不要用这个字段
CameraRoleId: Int类型/Int数组,设备的 xiaomi role id
源自 meta tag: "com.xiaomi.cameraid.role.cameraId"
注意此配置若在Source/Target设置了且不一致,则代表在config阶段就得关闭旧的
并打开新的摄像头
Meta: dict 数组类型,需要过滤或设置的 meta 信息字典
CamOpt: 字符串/字符串数组,操作阶段,枚举,可不配置,默认 Config,可互相组合:
Characteristics: 静态查询,只能设置meta
Config: 配流
Preview:预览
Capture:拍照
Result: 回调
Name: 字符串,需要过滤/设置的 meta tag 名称,必须配置
Value: 字符串/字符串数组,需要过滤/设置的数值,可不配置
如果MetaOpt为TgtCopy则填写转换后的 meta tag
Type: 字符串,数值的类型,枚举,必须配置
Int,Long,Float,Double,String,Bool,Byte
Size: Int类型, 标示 Value 数组的长度,可不配置,默认 1
设置数值时,Value 需要配置数值长度的字符串数组
MetaOpt: 字符串/字符串数组,操作命令,枚举,可不配置,默认 SrcFilter/TgtSet (在 Characteristics 中无效)
SrcPrint: 打印当前数值,可以和Source其他选项组合,(在Target中无效)
SrcFilter: 读取过滤,(在Target中无效)
TgtPrint: 打印当前数值,可以和Target其他选项组合,(在Source中无效)
TgtSet: 设置(在Source中无效)
TgtSetIfNone: 如果读到则不设置,读不到则设置配置的数值(在Source中无效)
TgtCopy: 复制数值,目标meta tag存在Value里(在Source中无效)
TgtDel: 删除清空数值(在Source中无效)
TgtCut: 剪切数值,复制后清空原有meta,目标meta tag存在Value里(在Source中无效)
OptMode: 字符串,只允许以0x打头的16进制的数值
谷歌的oprationmode参数,三方会下发 0,系统相机会下发非 0
定义在def.h的StreamConfigMode中
SdkOpMode: 字符串,只允许以0x打头的16进制的数值
SDK下发的operation mode,定义在def.h的StreamConfigMode中,
源自 meta tag: "com.xiaomi.sessionparams.operation"
为了比较方便专门提出来
IsCameraX: bool类型, 是否extension模式,
源自 meta tag:"com.xiaomi.sessionparams.cameraxConnection"
为了比较方便专门提出来
Prop: dict 数组类型,需要过滤或设置的 prop 信息字典,注意此项还可过滤Characteristics
prop 读取和设置都设置了内部缓冲,只在不一致的时候才会读写
不支持多线程重入,故不建议放在preview里
Name: 字符串,需要过滤/设置的 prop 名称,必须配置
Value: 字符串/字符串数组,需要过滤/设置的数值,必须配置,注意最大 PROPERTY_VALUE_MAX 92,若数组且
设置的时候只有第一个字符串有效
SourceFlag: int 类型,输入源逻辑标识, 0 代表过滤; 1 代表排除,默认为 0
只在包含当前配置Source中生效,不影响其他任意配置
注意:
配置内容除了写在本文件外,还有下列两种方式可补充内容(可选),内容都拼接后才实际生效。
1. 在odm项目文件夹下增加 ecoMetaExtensionExt.json,其根与本文件一致。
2. 在odm项目文件夹下 EcoCloudInfo.json 中,补充在 "camera_extension/platformInfo/Convert" 为根的位置。
同样融合云文件json需要也补在这里,融合云文件若安装sdk,就会覆盖本地这个默认文件,
故改了这个文件别忘了也同步到融合云中,融合云测试文件修改位置:
https://cloud.d.xiaomi.net/#/product/file-store/objects/camera-devtest/02-Test-Doc/sdk-config/项目名/mivi_info.json
项目发布后,融合云数据需要推送到云控服务器,推送脚本方法:
https://xiaomi.f.mioffice.cn/docx/doxk4anYCkyM6bbj31pvZWDWLHb
云控服务器提交发布请联系 suojinpeng
可通过杀死provider进程,log 搜索 EcoEngine getConvertMapFromJson 的方式,来查看实际生效配置。
版本:
0.4 2024-06-13 suojinpeng@xiaomi.com 增加 SourceFlag 逻辑
0.3 2023-07-13 suojinpeng@xiaomi.com 增加 Prop 过滤和设置
0.2 2023-07-06 suojinpeng@xiaomi.com 增加 Characteristics 方式,增加补充内容拼接
0.1 2023-06-17 suojinpeng@xiaomi.com 基础版本发布
*/
[
{
"Signature":"_isCameraX",
"IsPublish": false,
"Version":"1.0",
"Source":{
"Meta": [
{
"Name":"com.xiaomi.sessionparams.cameraxConnection", //SDK_SESSION_PARAMS_ISCAMERAX
"Value": "1",
"Type" : "Bool"
}
]
}
},
{
"Signature":"_isCameraX",
"IsPublish": false,
"Version":"1.1",
"Source":{
"IsCameraX": true
}
},
{
"Signature":"_Orientation",
"IsPublish": false,
"Target":{
"Meta": [
{
"CamOpt":"Capture",
"Name":"xiaomi.device.orientation",
"Type" : "Int",
"MetaOpt" : "TgtPrint"
} , {
"CamOpt":"Capture",
"Name": "android.jpeg.orientation",
"Value": "0",
"Type" : "Int",
"MetaOpt" : ["TgtPrint", "TgtSetIfNone"]
}
]
}
},
{
"Signature":"_BeautyOn",
"IsPublish": false,
"Target":{
"Meta": [
{
"CamOpt":["Preview","Capture"],
"Name":"com.xiaomi.algo.beautySkinSmoothRatio", //MI_BEAUTY_SKINSMOOTH "com.xiaomi.algo.beautySkinSmoothRatio", //SDK_BEAUTY_SKINSMOOTH
"Value": "50",
"Type" : "Int"
} , {
"CamOpt":["Preview","Capture"],
"Name": "com.xiaomi.algo.beautySlimFaceRatio", //MI_BEAUTY_SLIMFACE "com.xiaomi.algo.beautySlimFaceRatio", //SDK_BEAUTY_SLIMFACE
"Value": "50",
"Type" : "Int"
}
]
}
},
{
"Signature":"_BeautyOff",
"IsPublish": false,
"Target":{
"Meta": [
{
"CamOpt":["Preview","Capture"],
"Name":"com.xiaomi.algo.beautySkinSmoothRatio", //MI_BEAUTY_SKINSMOOTH "com.xiaomi.algo.beautySkinSmoothRatio", //SDK_BEAUTY_SKINSMOOTH
"Value": "0",
"Type" : "Int"
} , {
"CamOpt":["Preview","Capture"],
"Name": "com.xiaomi.algo.beautySlimFaceRatio", //MI_BEAUTY_SLIMFACE "com.xiaomi.algo.beautySlimFaceRatio", //SDK_BEAUTY_SLIMFACE
"Value": "0",
"Type" : "Int"
}
]
}
},
{
"Signature":"_HdrOn",
"IsPublish": false,
"Target":{
"Meta": [
{
"CamOpt":["Preview","Capture"],
"Name":"com.xiaomi.algo.hdrMode", //MI_HDR_MODE "xiaomi.hdr.hdrMode", //SDK_HDR_MODE
"Value": "1",
"Type" : "Bool"
}
]
}
},
{
"Signature":"_HdrOff",
"IsPublish": false,
"Target":{
"Meta": [
{
"CamOpt":["Preview","Capture"],
"Name":"com.xiaomi.algo.hdrMode", //MI_HDR_MODE "xiaomi.hdr.hdrMode", //SDK_HDR_MODE
"Value": "0",
"Type" : "Bool"
}
]
}
},
{
"Signature":"_Mfnr",
"IsPublish": false,
"Target":{
"Meta": [
{
"CamOpt":["Preview","Capture"],
"Name":"com.xiaomi.algo.mfnrEnable", //SDK_MFNR_ENABLE
"Value": "1",
"Type" : "Bool"
}
]
}
},
{
"Signature":"_FaceDetect",
"IsPublish": false,
"Target":{
"Meta": [
{
"Name":"android.statistics.faceDetectMode",
"Value": "1", //ANDROID_STATISTICS_FACE_DETECT_MODE_SIMPLE
"Type" : "Byte"
}
]
}
},
{
//开启 se night,注意 auto 模式下默认会开启
"Signature":"_SeNightOn",
"IsPublish": false,
"Target":{
"Meta": [
{
"CamOpt":["Capture","Preview"],
"Name":"com.xiaomi.algo.nightModeEnable", // night
"Value": "1",
"Type" : "Bool"
}
]
}
},
{
//关闭 se night
"Signature":"_SeNightOff",
"IsPublish": false,
"Target":{
"Meta": [
{
"CamOpt":["Preview","Capture"],
"Name":"com.xiaomi.algo.nightModeEnable", // night
"Value": "0",
"Type" : "Bool"
}
]
}
},
{
"Signature":"_MiNomalOptMod",
"IsPublish": false,
"Target":{
"SdkOpMode": "0xff0a", //StreamConfigModeEcoEngineNormal
"Meta": [
{
"Name":"com.xiaomi.sessionparams.operation",
"Value": "65290", //"0xff0a" StreamConfigModeEcoEngineNormal
"Type" : "Int"
}
]
}
},
{
// 定制 extension auto/bokeh 映射的系统 camera role id
"Signature":"_MappingMiSatId",
"IsPublish": false,
"Target":{
"CameraRoleId": 60 // RoleIdRearSat
}
},
/*
-------------------------------- night -------------------------------------
*/
{
"Signature":"FuncNight",
"IsPublish": false,
"Parents":["_isCameraX","_FaceDetect"],
"Source":{
"SdkOpMode": "0xff0c" //StreamConfigModeThirdPartySuperNight
}
},
{
"Signature":"ExtensionNightFront",
"Parents":["FuncNight","_Orientation","_BeautyOn"],
"Source":{
"CameraRoleId": 1 //RoleIdFront
}
},
{
// 在 id 0 里直接实现超夜算法
"Signature":"ExtensionNightRear",
"Parents":["FuncNight", "_BeautyOff"],
"Source":{
"CameraRoleId": 64, // RoleIdRear3PartSat
"Prop":
[
{
"Name": "persist.vendor.camera.extension.debug.night", // 1:se super night , 0: super night se(default)
"Value": ["", "0"]
}
]
}
},
{
// 调用 auto 模式下的 se night 算法实现
"Signature":"ExtensionNightRearSe",
"Parents":["FuncNight","_HdrOff", "_Mfnr", "_BeautyOff", "_MiNomalOptMod"], //"_SeNightOn", 加这个会导致无法返回数据
"Source":{
"CameraRoleId": 64, // RoleIdRear3PartSat
"Prop":
[
{
"Name": "persist.vendor.camera.extension.debug.night", // 1:se super night , 0: super night se(default)
"Value": "1"
}
]
}
},
/*
-------------------------------- bokeh -------------------------------------
*/
{
"Signature":"FuncBokeh",
"IsPublish": false,
"Parents":"_isCameraX",
"Source":{
"SdkOpMode": "0xFF12" // StreamConfigModeThirdPartyBokeh
},
"Target":{
// "OptMode": "0x9000",
"Meta": [
// {
// "CamOpt":["Config"],
// "Name":"com.xiaomi.algo.mibokehEnable", //SDK_BOKEH_ENABLE
// "Value": "0",
// "Type" : "Bool"
// } ,
// {
// "CamOpt":["Config"],
// "Name":"com.xiaomi.algo.mfnrEnable", //SDK_MFNR_ENBALE
// "Value": "0",
// "Type" : "Bool"
// } ,
{
"CamOpt":["Capture","Preview"],
"Name":"com.xiaomi.algo.bokeh.fNumberApplied", //SDK_BOKEH_FNUMBER_APPLIED
"Value": "4",
"Type" : "String",
"MetaOpt" : ["TgtPrint","TgtSetIfNone"]
}
// {
// "CamOpt":["Config"],
// "Name":"com.xiaomi.sessionparams.clientName",
// "Value": "com.android.camera",
// "Type" : "String"
// },
// {
// "CamOpt":["Config"],
// "Name":"android.control.extendedSceneMode",
// "Value": "2",
// "Type" : "Byte"
// },
// {
// "CamOpt":["Capture","Preview"],
// "Name":"xiaomi.bokeh.fNumberApplied",
// "Value": "4",
// "Type" : "String"
// },
// {
// "CamOpt":["Capture","Preview"],
// "Name":"xiaomi.bokeh.enabled",
// "Value": "1",
// "Type" : "String"
// },
// {
// "CamOpt":["Capture","Preview"],
// "Name":"xiaomi.asd.enabled",
// "Value": "1",
// "Type" : "String"
// }
]
}
},
{
"Signature":"BokehRear",
"Parents":["FuncBokeh","_Orientation","_BeautyOn", "_HdrOn"],
"IsPublish": false,
"Source":{
"CameraRoleId": 64 // RoleIdRear3PartSat
},
"Target":{
"Meta": [
{
"CamOpt":["Config"],
"Name":"com.xiaomi.sessionparams.bokehRole", //MI_CAMERA_BOKEH_ROLE
"Value": "63", //RoleIdRearBokeh1x
"Type" : "Int"
},
{
"CamOpt":["Config", "Preview"],
"Name":"android.control.aeTargetFpsRange",
"Value":["12","24"],
"Size":2,
"Type":"Int",
"MetaOpt":"TgtSet"
}
]
}
},
{
"Signature":"ExtensionBokehFront",
"Parents":["FuncBokeh","_Orientation","_BeautyOn","_HdrOn"],
"Source":{
"CameraRoleId": 1 //RoleIdFront
}
},
{
// 使用 mapping id 的方式,直接调用系统相机的 bokeh 摄像头,默认关闭
"Signature":"ExtensionBokehMappingId",
"Parents":["BokehRear", "_MappingMiSatId"],
"Source":{
"Prop":
[
{
"Name": "persist.vendor.camera.extension.debug.bokeh", // 1:normal(default) , 0: mapping id
"Value": "1"
}
]
}
},
{
// 直接在 id 0 上实现bokeh 算法,需要配合各项目中的 ecoMetaExtensionExt.json 配置,一并合并后实现,默认打开
"Signature":"ExtensionBokehRearNormal",
"Parents":["BokehRear"],
"Source":{
"Prop":
[
{
"Name": "persist.vendor.camera.extension.debug.bokeh",
"Value": ["", "0"]
}
]
}
},
/*
-------------------------------- auto -------------------------------------
*/
{
"Signature":"FuncAuto",
"IsPublish": false,
"Parents":["_isCameraX","_FaceDetect", "_Orientation", "_Mfnr",
"_HdrOn"],
"Source":{
"SdkOpMode": "0xff17" //StreamConfigModeThirdPartyAutoExtension
}
},
{
"Signature":"AutoRear",
"IsPublish": false,
"Parents":["FuncAuto","_BeautyOff"],
"Source":{
"CameraRoleId": 64 // RoleIdRear3PartSat
}
},
{
"Signature":"ExtensionAutoFront",
"Parents":["FuncAuto", "_MiNomalOptMod", "_SeNightOn", "_BeautyOn"], // 注意auto front单独加上了 "_SeNightOn",后置若加的话会拍照卡死
"Source":{
"CameraRoleId": 1 // RoleIdFront
}
},
{
"Signature":"ExtensionAuto",
"Parents":["AutoRear", "_MiNomalOptMod"],
"Source":{
"Prop":
[
{
"Name": "persist.vendor.camera.extension.debug.auto", // 1:mapping id , 0:normal (default)
"Value": ["", "0"]
}
]
}
},
{
// 使用 mapping id 的方式,直接调用系统相机的 sat 摄像头
"Signature":"ExtensionAutoMappingId",
"Parents":["AutoRear", "_MappingMiSatId"],
"Source":{
"Prop":
[
{
"Name": "persist.vendor.camera.extension.debug.auto",// 1:mapping id , 0:normal (default)
"Value": "1"
}
]
}
},
/*
-------------------------------- hdr -------------------------------------
*/
{
"Signature":"FuncHdr",
"IsPublish": false,
"Parents":["_isCameraX","_FaceDetect", "_Orientation", "_Mfnr",
"_HdrOn", "_BeautyOff", "_SeNightOff"],
"Source":{
"SdkOpMode": "0xff18" //StreamConfigModeThirdPartyHDR
}
},
{
"Signature":"ExtensionHdrFront",
"Parents":["FuncHdr", "_MiNomalOptMod"],
"Source":{
"CameraRoleId": 1 // RoleIdFront
}
},
{
"Signature":"HdrRear",
"IsPublish": false,
"Parents":["FuncHdr"],
"Source":{
"CameraRoleId": 64 // RoleIdRear3PartSat
}
},
{
"Signature":"ExtensionHdr",
"Parents":["HdrRear", "_MiNomalOptMod"],
"Source":{
"Prop":
[
{
"Name": "persist.vendor.camera.extension.debug.hdr", // 1:mapping id , 0:normal (default)
"Value": ["", "0"]
}
]
}
},
{
// 使用 mapping id 的方式,直接调用系统相机的 sat 摄像头
"Signature":"ExtensionHdrMappingId",
"Parents":["HdrRear", "_MappingMiSatId"],
"Source":{
"Prop":
[
{
"Name": "persist.vendor.camera.extension.debug.hdr", // 1:mapping id , 0:normal (default)
"Value": "1"
}
]
}
},
/*
-------------------------------- beauty -------------------------------------
*/
{
"Signature":"FuncBeauty",
"IsPublish": false,
"Parents":["_isCameraX","_FaceDetect", "_Orientation", "_Mfnr",
"_HdrOff", "_BeautyOn", "_SeNightOff"],
"Source":{
"SdkOpMode": "0xff19" //StreamConfigModeThirdPartyBeauty
}
},
{
"Signature":"ExtensionBeautyFront",
"Parents":["FuncBeauty", "_MiNomalOptMod"],
"Source":{
"CameraRoleId": 1 // RoleIdFront
}
},
{
"Signature":"BeautyRear",
"IsPublish": false,
"Parents":["FuncBeauty"],
"Source":{
"CameraRoleId": 64 // RoleIdRear3PartSat
}
},
{
"Signature":"ExtensionBeauty",
"Parents":["BeautyRear", "_MiNomalOptMod"],
"Source":{
"Prop":
[
{
"Name": "persist.vendor.camera.extension.debug.beauty", // 1:mapping id , 0:normal (default)
"Value": ["", "0"]
}
]
}
},
{
// 使用 mapping id 的方式,直接调用系统相机的 sat 摄像头
"Signature":"ExtensionBeautyMappingId",
"Parents":["BeautyRear", "_MappingMiSatId"],
"Source":{
"Prop":
[
{
"Name": "persist.vendor.camera.extension.debug.beauty", // 1:mapping id , 0:normal (default)
"Value": "1"
}
]
}
}
]