当前位置: 首页 > news >正文

dumpsys media.camera 简介

一. dump 代码位置

frameworks/av/services/camera/libcameraservice/CameraService.cpp


status_t CameraService::dump(int fd, const Vector<String16>& args) {
ATRACE_CALL();

    if (checkCallingPermission(toString16(sDumpPermission)) == false) {
dprintf(fd, "Permission Denial: can't dump CameraService from pid=%d, uid=%d\n",
getCallingPid(),
getCallingUid());
return NO_ERROR;
}
bool locked = tryLock(mServiceLock);
// failed to lock - CameraService is probably deadlocked
if (!locked) {
dprintf(fd, "!! CameraService may be deadlocked !!\n");
}

    if (!mInitialized) {
dprintf(fd, "!! No camera HAL available !!\n");

        // Dump event log for error information
dumpEventLog(fd);

        if (locked) mServiceLock.unlock();
return NO_ERROR;
}
dprintf(fd, "\n== Service global info: ==\n\n");
dprintf(fd, "Number of camera devices: %d\n", mNumberOfCameras);
dprintf(fd, "Number of normal camera devices: %zu\n", mNormalDeviceIds.size());
dprintf(fd, "Number of public camera devices visible to API1: %zu\n",
mNormalDeviceIdsWithoutSystemCamera.size());
for (size_t i = 0; i < mNormalDeviceIds.size(); i++) {
dprintf(fd, "    Device %zu maps to \"%s\"\n", i, mNormalDeviceIds[i].c_str());
}
std::string activeClientString = mActiveClientManager.toString();
dprintf(fd, "Active Camera Clients:\n%s", activeClientString.c_str());
dprintf(fd, "Allowed user IDs: %s\n", toString(mAllowedUsers).c_str());
if (mStreamUseCaseOverrides.size() > 0) {
dprintf(fd, "Active stream use case overrides:");
for (int64_t useCaseOverride : mStreamUseCaseOverrides) {
dprintf(fd, " %" PRId64, useCaseOverride);
}
dprintf(fd, "\n");
}

    dumpEventLog(fd);

    bool stateLocked = tryLock(mCameraStatesLock);
if (!stateLocked) {
dprintf(fd, "CameraStates in use, may be deadlocked\n");
}

    int argSize = args.size();
for (int i = 0; i < argSize; i++) {
if (args[i] == toString16(TagMonitor::kMonitorOption)) {
if (i + 1 < argSize) {
mMonitorTags = toStdString(args[i + 1]);
}
break;
}
}

    for (auto& state : mCameraStates) {
const std::string &cameraId = state.first;

        dprintf(fd, "== Camera device %s dynamic info: ==\n", cameraId.c_str());

        CameraParameters p = state.second->getShimParams();
if (!p.isEmpty()) {
dprintf(fd, "  Camera1 API shim is using parameters:\n        ");
p.dump(fd, args);
}

        auto clientDescriptor = mActiveClientManager.get(cameraId);
if (clientDescriptor != nullptr) {
// log the current open session info
dumpOpenSessionClientLogs(fd, args, cameraId);
} else {
dumpClosedSessionClientLogs(fd, cameraId);
}

    }

    if (stateLocked) mCameraStatesLock.unlock();

    if (locked) mServiceLock.unlock();

    mCameraProviderManager->dump(fd, args);

    dprintf(fd, "\n== Vendor tags: ==\n\n");

    sp<VendorTagDescriptor> desc = VendorTagDescriptor::getGlobalVendorTagDescriptor();
if (desc == NULL) {
sp<VendorTagDescriptorCache> cache =
VendorTagDescriptorCache::getGlobalVendorTagCache();
if (cache == NULL) {
dprintf(fd, "No vendor tags.\n");
} else {
cache->dump(fd, /*verbosity*/2, /*indentation*/2);
}
} else {
desc->dump(fd, /*verbosity*/2, /*indentation*/2);
}

    // Dump camera traces if there were any
dprintf(fd, "\n");
camera3::CameraTraces::dump(fd);

    // Process dump arguments, if any
int n = args.size();
String16 verboseOption("-v");
String16 unreachableOption("--unreachable");
for (int i = 0; i < n; i++) {
if (args[i] == verboseOption) {
// change logging level
if (i + 1 >= n) continue;
std::string levelStr = toStdString(args[i+1]);
int level = atoi(levelStr.c_str());
dprintf(fd, "\nSetting log level to %d.\n", level);
setLogLevel(level);
} else if (args[i] == unreachableOption) {
// Dump memory analysis
// TODO - should limit be an argument parameter?
UnreachableMemoryInfo info;
bool success = GetUnreachableMemory(info, /*limit*/ 10000);
if (!success) {
dprintf(fd, "\n== Unable to dump unreachable memory. "
"Try disabling SELinux enforcement. ==\n");
} else {
dprintf(fd, "\n== Dumping unreachable memory: ==\n");
std::string s = info.ToString(/*log_contents*/ true);
write(fd, s.c_str(), s.size());
}
}
}

    bool serviceLocked = tryLock(mServiceLock);

    // Dump info from previous open sessions.
// Reposition the offset to beginning of the file before reading

    if ((mMemFd >= 0) && (lseek(mMemFd, 0, SEEK_SET) != -1)) {
dprintf(fd, "\n**********Dumpsys from previous open session**********\n");
ssize_t size_read;
char buf[4096];
while ((size_read = read(mMemFd, buf, (sizeof(buf) - 1))) > 0) {
// Read data from file to a small buffer and write it to fd.
write(fd, buf, size_read);
if (size_read == -1) {
ALOGE("%s: Error during reading the file: %s", __FUNCTION__, sFileName);
break;
}
}
dprintf(fd, "\n**********End of Dumpsys from previous open session**********\n");
} else {
ALOGE("%s: Error during reading the file: %s", __FUNCTION__, sFileName);
}

    if (serviceLocked) mServiceLock.unlock();
return NO_ERROR;
}

二. dump 内容解析

1. 第一部分

== Service global info: ==

//表示系统当前检测到的摄像头设备总数为3个

Number of camera devices: 3

//所有3个摄像头设备都被识别为“正常”状态,意味着没有设备被报告为故障或不可用.
Number of normal camera devices: 3

//对于API1(可能指某个特定的应用程序接口,如Android的Camera API版本1),所有3个摄像头设备都是“公共”可见的。这意味着这些设备可以被应用程序通过API1访问,而没有被限制或隐藏。

Number of public camera devices visible to API1: 3

    //显示了内部设备ID与外部标识符的映射关系

    //内部设备ID 0 对应外部标识符 "0"
Device 0 maps to "0"

    //内部设备ID 1 对应外部标识符 "1"
Device 1 maps to "1"

    //内部设备ID 2 对应外部标识符 "22"。
Device 2 maps to "22"

//当前没有活跃的摄像头客户端(列表为空),表示没有应用程序或服务正在使用摄像头设备。

Active Camera Clients:
[]

允许访问摄像头服务的用户ID:0
Allowed user IDs: 0

2. 第二部分

//事件时间线分析

== Camera service events log (most recent at top): ==

 //【09-17 07:45:10】应用 com.myos.camera 断开摄像头连接
09-17 07:45:10 : DISCONNECT device 0 client for package com.myos.camera (PID 24565)

  //【09-17 07:42:45】应用 com.myos.camera 连接摄像头
09-17 07:42:45 : CONNECT device 0 client for package com.myos.camera (PID 24565)

  //【09-16 07:10:53】应用 com.tinno.camerasaver 断开摄像头连接
09-16 07:10:53 : DISCONNECT device 0 client for package com.tinno.camerasaver (PID 3729)
//【09-16 07:10:52】应用 com.tinno.camerasaver 连接摄像头
09-16 07:10:52 : CONNECT device 0 client for package com.tinno.camerasaver (PID 3729)

  //【09-16 07:10:30】用户权限变更

 // 摄像头服务的访问权限发生了变化。之前没有任何用户ID被允许访问 (<None>),变更后只允许用户ID 0(通常是系统主用户)访问。这个事件非常关键,它解释了为何全局信息中“Allowed user IDs”为0。这很可能发生在设备启动完成、进入单用户模式或某个系统状态切换的时刻。
09-16 07:10:30 : USER_SWITCH previous allowed user IDs: <None>, current allowed user IDs: 0

  //系统启动或摄像头服务初始化 ,增加三个相机,device ID 0,1,22
09-16 07:10:17 : ADD device 0, reason: (Device added)
09-16 07:10:17 : ADD device 1, reason: (Device added)
09-16 07:10:17 : ADD device 22, reason: (Device added)

//相机 id 0 的信息

== Camera device 0 dynamic info: ==

  //状态: closed (已关闭)

  //客户端: no client instance (无客户端实例)

  Device 0 is closed, no client instance

//相机 id 1 的信息
== Camera device 1 dynamic info: ==

  //状态: closed (已关闭)

  //客户端: no client instance (无客户端实例)

  Device 1 is closed, no client instance
== Camera device 22 dynamic info: ==

  //状态: closed (已关闭)

  //客户端: no client instance (无客户端实例)

  Device 22 is closed, no client instance

  // Provider名称: android.hardware.camera.provider.ICameraProvider/internal/0-0

  //版本: v2.0

  //类型: remote (表示该HAL作为一个独立的进程运行,通过Binder与摄像头服务通信)

  //报告的设备数量: 3 devices

== Camera Provider HAL android.hardware.camera.provider.ICameraProvider/internal/0-0 (v2.0, remote) static info: 3 devices: ==

3. 第三部分

//HAL 设备版本: v1.3 (使用的是 Camera HAL Device 1.3 接口)

== Camera HAL device device@1.1/internal/0 (v1.3) static information: ==

 //资源占比,比如总的isp为100%,单独的sensor资源占用少于100,比如一颗占用50,则另外的sensor资源占用少于50的可以同时打开。
Resource cost: 100

//冲突设备: None (使用此摄像头不会与其他设备(如麦克风)冲突)

  Conflicting devices: None

//API1 Info (旧的Camera API):
API1 info:

    //闪光灯: true (具备闪光灯单元)
Has a flash unit: true

    //朝向: Back (后置摄像头)
Facing: Back

    //方向: 90 (传感器原始图像需要顺时针旋转90度才能与设备自然方向一致)
Orientation: 90

 //Camera2 API 中的 相机特性
API2 camera characteristics:

  //条目数量: 125 / 125 entries
//第一个数字表示当前正在转储/显示的条目数量
//第二个数字表示元数据数组中的总条目数
//含义: 该摄像头的特性元数据包含 125 个不同的配置项,所有条目都被完整转储
//额外数据大小: 25680 / 25680 bytes of extra data
//第一个数字表示已处理的额外数据量
//第二个数字表示总的额外数据大小(约 25.1 KB)
//含义: 除了基本的元数据条目外,还有 25.1 KB 的详细配置数据(如分辨率列表、对焦区域等复杂数据)
Dumping camera metadata array: 125 / 125 entries, 25680 / 25680 bytes of extra data.

      //Version: 1 ,表示使用的相机元数据格式版本为 1
//Flags: 00000000
Version: 1, Flags: 00000000

       //色差校正模式
//值解析: [0] 表示只支持 FAST 模式
//模式说明:
//0 = FAST: 快速处理模式,适合预览和视频
//1 = HIGH_QUALITY: 高质量模式,适合静态照片
//实际意义: 该摄像头只提供基本的快速色差校正,可能意味着硬件处理能力有限或者在图像质量优化上相对简单。
android.colorCorrection.availableAberrationModes (00004): byte[1]
[0 ]

      //抗频闪模式

      //可用的自动曝光抗频闪模式
//值解析: [0, 1, 2, 3] 支持所有标准模式
//模式说明:
//0 = OFF: 关闭抗频闪
//1 = 50Hz: 针对50Hz交流电地区(如欧洲、亚洲)
//2 = 60Hz: 针对60Hz交流电地区(如美洲)
//3 = AUTO: 自动检测和适应
//实际意义: 完整的抗频闪支持,可以在各种灯光环境下减少条纹现象
android.control.aeAvailableAntibandingModes (10012): byte[4]
[0 1 2 3 ]

      //曝光补偿范围

      //可用的自动曝光模式
//[0, 1, 2, 3] 支持全部四种基本模式
//模式说明:
//0 = OFF: 手动曝光模式
//1 = ON: 自动曝光(默认模式)
//2 = ON_AUTO_FLASH: 自动曝光+自动闪光灯
//3 = ON_ALWAYS_FLASH: 自动曝光+强制闪光
//实际意义: 具备完整的曝光控制能力,从全手动到各种自动模式。
android.control.aeAvailableModes (10013): byte[4]
[0 1 2 3 ]

      //支持的帧率范围(每两个数字为一组:[最小FPS, 最大FPS])
// 7个不同的FPS范围组合
//具体范围:
//[10, 10] - 固定10fps
//[15, 15] - 固定15fps
//[15, 20] - 15-20fps可变
//[20, 20] - 固定20fps
//[5, 30] - 5-30fps宽范围可变(最灵活)
//[15, 30] - 15-30fps可变
//[30, 30] - 固定30fps(标准视频帧率)
android.control.aeAvailableTargetFpsRanges (10014): int32[14]
[10 10 15 15 ]
[15 20 20 20 ]
[5 30 15 30 ]
[30 30 ]
//含义: 自动曝光补偿的可调节范围
//值解析: [-4, 4] 表示支持从 -4 EV 到 +4 EV 的曝光补偿
//实际意义:
//提供相当大的曝光调节范围(共8档EV)
//允许在过暗或过亮环境下手动校正曝光
//适合专业摄影应用的精细控制
android.control.aeCompensationRange (10015): int32[2]
[-4 4 ]

      //曝光补偿步长      //含义: 曝光补偿的最小调节单位

      //值解析: 1/2 即 0.5 EV
//实际意义:
//每次曝光补偿调整的最小步长为0.5档
//这是比较精细的调节粒度,平衡了精确性和操作性
//结合范围 [-4, 4],总共有 8 ÷ 0.5 = 16个可调节档位
android.control.aeCompensationStep (10016): rational[1]
[(1 / 2) ]

      //自动对焦模式

      //含义: 支持的自动对焦模式
//值解析: 支持全部5种标准AF模式
//模式说明:
//0 = OFF: 关闭自动对焦(手动对焦)
//1 = AUTO: 单次自动对焦(拍照常用)
//2 = MACRO: 微距对焦模式
//3 = CONTINUOUS_VIDEO: 视频连续对焦
//4 = CONTINUOUS_PICTURE: 拍照连续对焦(预览时持续对焦)
//实际意义: 完整的对焦系统,涵盖从微距到视频的所有应用场景
android.control.afAvailableModes (10017): byte[5]
[0 1 2 3 4 ]

      //图像效果
//含义: 支持的实时图像特效
//值解析: [0] 只支持 OFF(无特效)
//实际意义:
//不支持单色、复古、负片等内置特效
//特效处理需要通过后期或应用层实现
//可能是为了保持图像质量和处理性能
android.control.availableEffects (10018): byte[1]
[0 ]

      //场景模式
//含义: 支持的场景模式(预定义的拍摄参数组合)
//值解析: 支持17种场景模式(缺少模式0和17)
//模式说明:
//1 = FACE_PRIORITY: 人脸优先
//2 = ACTION: 运动模式
//3 = PORTRAIT: 人像模式
//4 = LANDSCAPE: 风景模式
//5 = NIGHT: 夜景模式
//6 = NIGHT_PORTRAIT: 夜景人像
//7 = THEATRE: 剧院模式
//8 = BEACH: 海滩模式
//9 = SNOW: 雪景模式
//10 = SUNSET: 日落模式
//11 = STEADYPHOTO: 防抖模式
//12 = FIREWORKS: 烟花模式
//13 = SPORTS: 运动模式
//14 = PARTY: 派对模式
//15 = CANDLELIGHT: 烛光模式
//16 = BARCODE: 条形码模式
//18 = HDR: HDR模式
//实际意义: 极其丰富的场景模式支持,覆盖几乎所有常见拍摄场景
android.control.availableSceneModes (10019): byte[17]
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ]
[18 ]

      //视频防抖模式
//含义: 支持的视频防抖模式
//值解析: [0] 只支持 OFF(关闭防抖)
//实际意义:
//不支持电子防抖(EIS)或光学防抖(OIS)
//视频拍摄时需要依靠物理稳定或后期处理
//这是该摄像头的一个明显局限性
android.control.availableVideoStabilizationModes (1001a): byte[1]
[0 ]

      //自动白平衡模式
//含义: 支持的自动白平衡模式
//值解析: 支持全部9种标准AWB模式
//模式说明:
//0 = OFF: 关闭自动白平衡(手动色温)
//1 = AUTO: 自动白平衡(默认)
//2 = INCANDESCENT: 白炽灯模式(暖色调)
//3 = FLUORESCENT: 荧光灯模式
//4 = WARM_FLUORESCENT: 暖色荧光灯
//5 = DAYLIGHT: 日光模式
//6 = CLOUDY_DAYLIGHT: 阴天模式
//7 = TWILIGHT: 黄昏模式
//8 = SHADE: 阴影模式
//实际意义: 完整的白平衡控制系统,可精确适应各种光照条件
android.control.awbAvailableModes (1001b): byte[9]
[0 1 2 3 4 5 6 7 8 ]

      //最大区域数量
//含义: 支持的最大控制区域数量(AE/AWB/AF)
//值解析: 三个数字分别对应:
//[1] = AE(自动曝光): 支持1个测光区域
//[0] = AWB(自动白平衡): 不支持区域白平衡(只能全局)
//[1] = AF(自动对焦): 支持1个对焦区域

      //实际意义:
//支持点测光和点对焦功能
//用户可以选择画面中的特定区域进行测光和对焦
//白平衡只能全局调整,不能针对特定区域
android.control.maxRegions (1001c): int32[3]
[1 0 1 ]

      //场景模式覆盖参数
//数据结构说明
//总字节数: 51个字节
//组织方式: 每3个字节为一组,对应一个场景模式
//支持的场景模式数量: 51 ÷ 3 = 17组(与前面支持的17种场景模式对应)
//每组数据的含义(3个字节)
//每组包含三个控制模式的覆盖设置:
//具体解析(对应前文的17种场景模式)
//模式1 (FACE_PRIORITY): [0, 1, 4] = (AE:OFF, AWB:AUTO, AF:CONTINUOUS_PICTURE)
//模式2 (ACTION): [2, 1, 4] = (AE:ON, AWB:AUTO, AF:CONTINUOUS_PICTURE)
//模式3 (PORTRAIT): [1, 4, 2] = (AE:ON_AUTO_FLASH, AWB:WARM_FLUORESCENT, AF:MACRO)
//模式4 (LANDSCAPE): [1, 4, 1] = (AE:ON_AUTO_FLASH, AWB:WARM_FLUORESCENT, AF:AUTO)
//模式5 (NIGHT): [4, 2, 1] = (AE:ON_ALWAYS_FLASH, AWB:INCANDESCENT, AF:AUTO)
//...等等

      //实际意义
//智能场景适配: 每个场景模式都预设了最优的AE/AWB/AF组合
//专业级优化: 例如人像模式使用连续对焦+暖色调白平衡,夜景模式使用强制闪光+白炽灯白平衡
//一致性保证: 确保不同场景模式下摄像头行为符合用户预期

      android.control.sceneModeOverrides (1001d): byte[51]
[0 1 4 2 1 4 2 1 4 1 5 4 2 1 4 2 ]
[1 4 2 1 1 2 5 4 2 5 4 1 5 4 2 1 ]
[4 0 5 1 2 1 1 2 1 4 2 2 4 2 1 2 ]
[1 1 1 ]

      //自动曝光锁可用性
//含义: 是否支持自动曝光锁(AE Lock)
//值解析: TRUE 表示支持AE锁
//功能说明:
//AE锁允许用户锁定当前的曝光值
//在拍摄场景光线复杂时非常有用(如逆光、舞台摄影)
//锁定后,即使画面构图变化,曝光参数也不会改变
//实际意义: 提供专业级的曝光控制能力
android.control.aeLockAvailable (10024): byte[1]
[TRUE ]

      //自动白平衡锁可用性
//含义: 是否支持自动白平衡锁(AWB Lock)
//值解析: TRUE 表示支持AWB锁
//功能说明:
//AWB锁允许用户锁定当前的白平衡设置
//确保在同一场景下多张照片的色彩一致性
//特别适合全景拍摄、HDR合成等需要色彩稳定的场景
//实际
android.control.awbLockAvailable (10025): byte[1]
[TRUE ]

      //可用控制模式
//含义: 摄像头支持的整体控制模式
//值解析: 支持全部4种标准控制模式
//模式说明:
//0 = OFF: 关闭模式 - 最低功耗状态,不进行任何处理
//1 = AUTO: 自动模式 - 全自动控制,适合普通用户
//2 = USE_SCENE_MODE: 场景模式 - 使用预设的场景优化参数
//3 = OFF_KEEP_STATE: 关闭但保持状态 - 低功耗但保留设置
//实际意义: 完整的控制模式支持,涵盖从省电到专业的各种需求
android.control.availableModes (10026): byte[4]
[0 1 2 3 ]

      //后处理感光度提升范围
//含义: RAW数据后处理阶段的感光度(ISO)提升范围
//值解析: [100, 100] 表示最小和最大值都是100
//技术说明:
//这个参数控制RAW数据转换为YUV时的数字增益
//范围 [100, 100] 表示不支持后处理感光度提升
//所有ISO调整必须在传感器层面完成(前处理)
//实际意义:
//图像质量更纯粹,减少数字增益带来的噪点
//但低光环境下的灵活性受限
//这是专业级摄像头的典型配置,优先考虑图像质量
android.control.postRawSensitivityBoostRange (10027): int32[2]
[100 100 ]

      //变焦比例范围
//含义: 支持的数码变焦范围
//值解析: [1.0, 8.0] 表示支持从 1倍(无变焦)到 8倍数码变焦
//技术说明:
//这是纯数码变焦,通过裁剪和插值实现
//1.0倍是原始分辨率,8.0倍意味着图像被放大了8倍
//变焦过程中图像质量会逐渐下降
//实际意义:
//提供较大的变焦范围,适合远景拍摄
//但超过2-3倍后图像质量明显下降
//适合临时性的远距离拍摄需求
android.control.zoomRatioRange (1002e): float[2]
[1.00000000 8.00000000 ]

      //边缘增强模式
//含义: 支持的边缘增强(锐化)处理模式
//值解析: 支持全部3种标准边缘增强模式
//模式说明:
//0 = OFF: 关闭边缘增强 - 保持图像自然,不做锐化处理
//1 = FAST: 快速模式 - 适合预览和视频,处理速度快但质量一般
//2 = HIGH_QUALITY: 高质量模式 - 适合静态照片,处理精细但耗时较长
//实际意义:
//完整的锐化控制,可以根据应用场景选择最佳模式
//预览时用FAST模式保证流畅度
//拍照时用HIGH_QUALITY模式获得最佳细节
android.edge.availableEdgeModes (30002): byte[3]
[0 1 2 ]

      //闪光灯可用性
//含义: 摄像头是否具备可用的闪光灯单元
//值解析: TRUE 表示该摄像头配备闪光灯
//技术说明:
//闪光灯是物理硬件组件,用于在低光环境下补光
//支持多种闪光模式:自动、强制开启、强制关闭、防红眼等
//实际意义:
//具备低光环境拍摄能力
//支持人像补光、逆光补偿等高级摄影功能
//与之前曝光模式中的闪光灯控制相呼应
android.flash.info.available (50000): byte[1]
[TRUE ]

      //闪光灯充电时间
//含义: 闪光灯充电所需的时间(微秒)
//值解析: [0] 表示充电时间为0微秒
//技术说明:
//这通常表明使用的是LED闪光灯而非氙气闪光灯
//LED闪光灯不需要预充电,可以瞬时点亮
//氙气闪光灯通常需要几百毫秒的充电时间
//实际意义:
//快速连拍支持: 闪光灯可以立即就绪,不影响拍摄速度
//实时预览效果: 可以在取景时实时显示闪光效果
//低功耗: LED闪光灯比氙气灯更节能
android.flash.info.chargeDuration (50001): int64[1]
[0 ]

      //坏点校正模式
//含义: 支持的坏点/热像素校正模式
//值解析: 支持全部3种标准坏点校正模式
//模式说明:
//0 = OFF: 关闭校正 - 保留原始传感器数据,适合后期处理
//1 = FAST: 快速模式 - 适合预览和视频,处理速度快
//2 = HIGH_QUALITY: 高质量模式 - 适合静态照片,校正效果更好但处理耗时
//实际意义:
//完整的图像质量控制: 可以根据应用场景选择最佳校正策略
//专业级支持: OFF模式为专业摄影应用提供原始数据
//实用性: 自动消除传感器坏点对图像的影响
android.hotPixel.availableHotPixelModes (60001): byte[3]
[0 1 2 ]

      //可用缩略图尺寸
//含义: JPEG图像支持的嵌入式缩略图尺寸
//值解析: 7种不同的缩略图尺寸(每2个数字为一组:[宽, 高])
//具体尺寸:
//[0, 0] - 无缩略图
//[160, 96] - 标准小尺寸(约15K像素)
//[192, 108] - 16:9宽屏比例(约20K像素)
//[160, 160] - 正方形比例(约25K像素)
//[192, 144] - 4:3比例(约27K像素)
//[346, 160] - 超宽屏比例(约55K像素)
//[524, 234] - 电影宽屏比例(约122K像素)
android.jpeg.availableThumbnailSizes (70007): int32[14]
[0 0 160 96 ]
[192 108 160 160 ]
[192 144 346 160 ]
[524 234 ]

      //JPEG最大尺寸
//含义: 单张JPEG图像的最大可能字节数
//值解析: 19927545 字节 ≈ 19.9 MB
//技术说明:
//这是摄像头能够产生的最大JPEG文件大小
//实际文件大小取决于图像内容、压缩质量等因素
//这个数值与传感器分辨率直接相关
//实际意义:
//支持超高分辨率图像采集
//需要充足的存储空间和内存处理能力
//适合专业摄影和高质量图像需求
android.jpeg.maxSize (70008): int32[1]
[19927545 ]

      //镜头朝向
//含义: 摄像头镜头在设备上的朝向
//值解析: BACK 表示后置摄像头
//模式说明:
//BACK = 后置摄像头(主摄像头)
//FRONT = 前置摄像头(自拍摄像头)
//EXTERNAL = 外接摄像头
//实际意义:
//这是设备的主摄像头,用于常规拍摄
//通常具有最高的图像质量和功能
//与之前分析的所有高级功能相匹配
android.lens.facing (80005): byte[1]
[BACK ]

      //可用光圈值
//含义: 镜头支持的光圈值(f-number)
//值解析: f/2.2 - 固定光圈
//技术说明:
//光圈控制进光量和景深
//只有一个值表示这是固定光圈镜头,无法调节
//f/2.2属于较大光圈,适合低光环境拍摄
//实际意义:
//低光性能较好: 大光圈允许更多光线进入
//景深控制受限: 无法通过光圈变化调整背景虚化程度
//这是手机摄像头的典型配置(固定光圈)
android.lens.info.availableApertures (90000): float[1]
[2.20000005 ]

      //可用滤镜密度
//含义: 镜头前物理滤镜的光学密度
//值解析: 0.0 表示无中性密度滤镜或滤镜密度为0
//技术说明:
//中性密度滤镜用于减少进光量,类似"太阳镜"效果
//值为0表示没有内置ND滤镜,或者滤镜处于完全透明状态
//在强光环境下可能需要电子方式减少曝光
//实际意义:
//在强烈日光下拍摄时,可能需要使用其他曝光控制手段
//如降低ISO、提高快门速度或使用数字ND滤镜效果
android.lens.info.availableFilterDensities (90001): float[1]
[0.00000000 ]

      //可用焦距
//含义: 镜头支持的物理焦距值(毫米)
//值解析: 3.38mm - 固定焦距镜头
//技术说明:
//这是镜头的实际物理焦距,不是等效35mm焦距
//只有一个值表明这是定焦镜头,无法光学变焦
//3.38mm是手机摄像头的典型焦距,提供适中的视角
//实际意义:
//视角固定: 无法通过光学方式改变取景范围
//依赖数码变焦: 需要时只能使用之前分析的8倍数码变焦
//图像质量稳定: 定焦镜头通常在锐度和畸变控制上表现更好
android.lens.info.availableFocalLengths (90002): float[1]
[3.38000011 ]

      //可用光学防抖模式
//含义: 支持的光学防抖(OIS)模式
//值解析: [0] 表示不支持光学防抖
//模式说明:
//0 = OFF (不支持OIS)
//1 = ON (支持OIS)
//实际意义:
//手持拍摄易模糊: 特别是在低光环境下需要慢速快门时
//视频稳定性差: 之前分析也不支持电子防抖,视频拍摄抖动明显
//需要外部稳定: 依赖三脚架或数字后期稳定处理
android.lens.info.availableOpticalStabilization (90003): byte[1]
[0 ]

      //超焦距距离
//含义: 镜头的超焦距距离(米)
//值解析: 0.33米 (约33厘米)
//技术说明:
//超焦距是当镜头对焦在无穷远时,最近清晰点到镜头的距离
//当对焦在超焦距时,从超焦距的一半到无穷远都清晰
//0.33米的超焦距相对较近,适合广角镜头的特性
//实际意义:
//风景摄影: 对焦在0.33米可获得最大景深范围
//快速抓拍: 超焦距对焦适合不需要精确对焦的快速拍摄
//泛焦效果: 容易获得前后景都清晰的图像
android.lens.info.hyperfocalDistance (90004): float[1]
[0.33333334 ]

      //最近对焦距离
//含义: 镜头能够合焦的最近距离(厘米)
//值解析: 20.0厘米 - 优秀的微距能力
//技术说明:
//从镜头光学中心到被摄物体的最小对焦距离
//20厘米是非常近的对焦距离,表明具备微距拍摄能力
//这比许多手机摄像头的最近对焦距离要近得多
//实际意义:
//微距摄影: 可以拍摄小物体的特写细节
//近距离对焦: 适合文档扫描、产品拍摄等应用
//创作灵活性: 扩展了拍摄题材的范围
android.lens.info.minimumFocusDistance (90005): float[1]
[20.00000000 ]

      //阴影校正图尺寸
//含义: 镜头阴影校正(暗角校正)映射图的网格尺寸
//值解析: 17×17 网格 - 高精度的阴影校正
//技术说明:
//阴影映射用于校正镜头暗角(边缘变暗)现象
//17×17意味着将图像分为289个区域进行独立校正
//网格越密,校正精度越高,17×17属于较高精度级别
//实际意义:
//优秀的暗角校正: 能够精确消除图像边缘变暗问题
//均匀光照输出: 确保整个画面亮度一致
//专业级图像质量: 高精度校正提升整体图像质量
android.lens.info.shadingMapSize (90006): int32[2]
[17 17 ]

      //对焦距离校准状态
//含义: 对焦距离报告的校准精度
//值解析: UNCALIBRATED - 未校准的对焦距离
//校准级别说明:
//UNCALIBRATED: 对焦距离是近似值,精度较低
//APPROXIMATE: 近似校准,有基本精度
//CALIBRATED: 完全校准,高精度距离信息
//实际意义:
//距离信息仅供参考: 报告的对焦距离可能不准确
//影响高级功能: 深度估计、AR测量等依赖精确距离的功能受限
//普通拍摄无影响: 自动对焦系统本身工作正常
android.lens.info.focusDistanceCalibration (90007): byte[1]
[UNCALIBRATED ]

      //可用降噪模式
//含义: 支持的图像降噪处理模式
//值解析: 支持全部4种标准降噪模式
//模式说明:
//0 = OFF: 关闭降噪 - 保留所有细节,但噪点明显
//1 = FAST: 快速降噪 - 适合预览和视频,平衡速度与质量
//2 = HIGH_QUALITY: 高质量降噪 - 适合静态照片,处理精细
//3 = MINIMAL: 最小降噪 - 轻微降噪,尽可能保留细节
//实际意义:
//完整的噪点控制: 根据不同场景选择最佳降噪策略
//专业级支持: OFF模式为后期处理提供原始数据
//智能优化: 自动在不同光照条件下应用合适降噪
android.noiseReduction.availableNoiseReductionModes (a0002): byte[4]
[0 1 2 3 ]

      //最大输出流数量
//含义: 允许同时配置的输出数据流数量限制
//值解析: 三个数字分别代表不同类型流的限制:
//[1] = RAW流: 支持1个未处理原始数据流
//[3] = 处理后的流: 支持3个YUV或JPEG流(如预览+录像+分析)
//[1] = 阻塞式流: 支持1个高分辨率拍照流
//实际意义:
//多任务能力: 可以同时进行预览、录像和图像分析
//专业摄影支持: 允许RAW格式拍摄
//资源优化: 合理的流数量限制确保系统稳定性
android.request.maxNumOutputStreams (c0006): int32[3]
[1 3 1 ]

      //最大输入流数量
//含义: 允许配置的输入数据流数量(用于重处理)
//值解析: [0] 表示不支持输入流重处理
//技术说明:
//输入流通常用于YUV或RAW数据的再处理(如数字变焦、重新对焦)
//值为0表示该摄像头不支持将输出流重新作为输入进行处理
//这是移动设备摄像头的常见限制
//实际意义:
//无后期重对焦: 不支持类似"先拍照后对焦"的功能
//数字变焦限制: 变焦必须在捕获时完成,无法后期调整
//简化处理流水线: 系统架构相对简单
android.request.maxNumInputStreams (c0008): int32[1]
[0 ]

      //流水线最大深度
//含义: 图像处理流水线中允许的最大未完成请求数量
//值解析: 8 个请求 - 较高的并发处理能力
//技术说明:
//这代表摄像头可以同时处理最多8个拍摄请求
//深度越大,系统吞吐量越高,但内存占用也越大
//8属于中等偏上的流水线深度
//实际意义:
//良好的连拍性能: 支持快速连续拍摄多张照片
//低延迟预览: 预览帧可以快速处理,减少延迟
//系统稳定性: 合理的深度平衡了性能和资源消耗
android.request.pipelineMaxDepth (c000a): byte[1]
[8 ]

      //部分结果数量
//含义: 单个捕获请求可以分成多少个部分结果返回
//值解析: 10 个部分结果 - 精细的结果反馈机制
//技术说明:
//允许应用实时获取捕获过程的进度信息
//每个部分结果包含部分元数据(如对焦状态、曝光信息)
//10表示高度细化的进度反馈
//实际意义:
//实时状态监控: 应用可以精确了解捕获进度
//更好的用户体验: 提供更流畅的进度反馈
//调试和优化: 便于开发者优化拍摄流程
android.request.partialResultCount (c000b): int32[1]
[10 ]

      //可用能力列表
//能力详细说明:
//BACKWARD_COMPATIBLE
//含义: 向后兼容性保证
//意义: 确保与旧版Camera API的兼容性,所有基础应用都能正常工作
//MANUAL_SENSOR
//含义: 手动传感器控制
//意义: 支持完全的手动曝光控制(ISO、快门速度、手动对焦)
//专业价值: 这是专业摄影模式的核心功能
//MANUAL_POST_PROCESSING
//含义: 手动后处理控制
//意义: 允许手动调整色调曲线、锐化、降噪等后处理参数
//专业价值: 提供图像风格的精细控制
//READ_SENSOR_SETTINGS
//含义: 读取传感器设置
//意义: 可以实时读取当前的传感器参数(曝光值、白平衡等)
//实用价值: 用于显示实时拍摄信息和元数据记录
//BURST_CAPTURE
//含义: 连拍能力
//意义: 支持高速连续拍摄多张照片
//实用价值: 适合运动摄影、HDR合成等场景
android.request.availableCapabilities (c000c): byte[5]
[BACKWARD_COMPATIBLE MANUAL_SENSOR MANUAL_POST_PROCESSING READ_SENSOR_SETTINGS BURST_CAPTURE ]

4. 第四部分

      //可用请求键概述
//含义: 摄像头支持的所有可配置参数列表
//数量: 119 个可配置参数 - 极其丰富的控制能力
//重要性: 这定义了应用程序能够控制的所有摄像头功能
android.request.availableRequestKeys (c000d): int32[119]
[0 (mode) 1 (transform) 2 (gains) 3 (aberrationMode) ]
[65536 (aeAntibandingMode) 65537 (aeExposureCompensation) 65538 (aeLock) 65539 (aeMode) ]
[65540 (aeRegions) 65541 (aeTargetFpsRange) 65542 (aePrecaptureTrigger) 65543 (afMode) ]
[65544 (afRegions) 65545 (afTrigger) 65546 (awbLock) 65547 (awbMode) ]
[65549 (captureIntent) 65550 (effectMode) 65577 (enableZsl) 65551 (mode) ]
[65552 (sceneMode) 65553 (videoStabilizationMode) 131072 (mode) 196608 (mode) ]
[65583 (zoomRatio) 196609 (strength) 262144 (firingPower) 262145 (firingTime) ]
[262146 (mode) 393216 (mode) 458752 (gpsCoordinates) 458753 (gpsProcessingMethod) ]
[458754 (gpsTimestamp) 458755 (orientation) 458756 (quality) 458757 (thumbnailQuality) ]
[458758 (thumbnailSize) 524288 (aperture) 524289 (filterDensity) 524290 (focalLength) ]
[524291 (focusDistance) 524292 (opticalStabilizationMode) 655360 (mode) 655361 (strength) ]
[786433 (id) 786435 (metadataMode) 851999 851968 (cropRegion) ]
[917504 (exposureTime) 917505 (frameDuration) 917506 (sensitivity) 917527 (testPatternData) ]
[917528 (testPatternMode) 1048576 (mode) 1048577 (strength) 1114112 (faceDetectMode) ]
[1114113 (histogramMode) 1114114 (sharpnessMapMode) 1114115 (hotPixelMapMode) 1114128 (lensShadingMapMode) ]
[1245184 (curveBlue) 1245185 (curveGreen) 1245186 (curveRed) 1245187 (mode) ]
[1310720 (transmit) 1441792 (lock) -2147483648 (gesturemode) -2147483646 (smiledetectmode) ]
[-2147483644 (asdmode) -2147483639 (forceface3a) -2147221504 (mfbmode) -2147221501 (aismode) ]
[-2147418112 (3dnrmode) -2147155967 (capture) 65575 (postRawSensitivityBoostRange) -2146762751 (early.notification.trigger) ]
[-2146762747 (postviewsize) -2146697215 (prerelease) -2147090429 (aeIsoSpeed) -2147090427 (aeMeteringMode) ]
[-2147090420 (awbValue) -2146762749 (flipmode) 65544 (afRegions) -2147287040 (hdrMode) ]
[-2147287029 (hdrState) -2147287039 (SessionParamhdrMode) -2147024896 (eismode) -2147024893 (previeweis) ]
[-2146369536 (abfMode) -2146959360 (recordState) -2146697214 (imagereaderid) -2146631680 (initrequest) ]
[-2146631678 (proprietaryRequest) -2146762741 (singleYuvNr) -2146762740 (highQualityYuv) -2146762738 (hintForIspTuning) ]
[-2146762737 (hintForIspFrameCount) -2146762736 (hintForIspFrameIndex) -2146762735 (hintForIspFrameTuningIndex) -2147221497 (dozipwithbss) ]
[-2146762721 (hidl.jpegyuvtuning) -2146762727 (packedRaw.enable) -2146762726 (processRaw.enable) -2146762725 (raw.bpp) ]
[-2146762731 (ispTuningRequest) -2146762734 (ispMetaEnable) -2146959354 (hdr10) -2146959352 (pipDevices) ]
[-2147090429 (aeIsoSpeed) -2147090427 (aeMeteringMode) -2147090420 (awbValue) 65577 (enableZsl) ]
[-2146762742 (zsl.mode) -2146238463 (aovMode) -2146238461 (pipelineConfig) -2146762723 (singleYuvNr.mode) ]
[-2146762722 (inSensorZoom.mode) -2146762720 (raw10.convertfmt) -2146107392 (phone.rotation) ]

5. 第五部分

//Camera HAL 设备状态转储解析

  • HAL 设备版本: device@1.1/internal/0 (使用 Camera HAL Device 1.1 接口)

  • 接口版本: v1.3 (硬件抽象层接口版本 1.3)

  • 设备路径: internal/0 (内置摄像头,索引为0)

== Camera HAL device device@1.1/internal/0 (v1.3) dumpState: ==

//逻辑设备ID: [0] (系统分配的摄像头设备ID)

## Camera device [0]

//物理设备路径: [device@1.1/internal/0] (硬件层的设备路径)

## Camera device [device@1.1/internal/0]

//状态转换(最新状态在底部):摄像设备
== state transition (most recent at bottom): Camera device ==
//摄像头设备被系统初始化
//硬件和驱动准备就绪,等待应用程序使用
09-16 07:10:17.831 : -> initialized
//打开耗时: 44毫秒(快速打开)
09-16 07:10:52.057 : -> open +
09-16 07:10:52.101 : -> open - OK
//类型: 0x1 = TEMPLATE_PREVIEW (预览模板)
//耗时: 1毫秒(瞬间完成)
//含义: 应用请求获取预览模式的默认参数设置
09-16 07:10:52.138 : -> constructDefaultRequestSettings (type:0x1) +
09-16 07:10:52.139 : -> constructDefaultRequestSettings (type:0x1) -
//操作模式: 0 = 正常模式
//配置耗时: 257毫秒
//含义: 配置摄像头的输出流格式和参数
09-16 07:10:52.231 : -> configure (operationMode:0) +
09-16 07:10:52.488 : -> configure (operationMode:0) - OK
//首次请求: 成功开始图像捕获
//时间点: 配置完成后369毫秒开始捕获
09-16 07:10:52.857 : -> 1st request - OK
//刷新操作: 清空处理管道中的待处理请求
//关闭耗时: 46毫秒
//总会话时间: 约36秒(从open到close)
09-16 07:10:53.218 : -> flush +
09-16 07:10:53.271 : -> flush - OK
09-16 07:10:53.278 : -> close +
09-16 07:10:53.324 : -> close - OK
//设备再次打开
//打开耗时: 48毫秒
09-17 07:42:45.284 : -> open +
09-17 07:42:45.332 : -> open - OK

  09-17 07:42:45.464 : -> constructDefaultRequestSettings (type:0x1) +
09-17 07:42:45.464 : -> constructDefaultRequestSettings (type:0x1) -
09-17 07:42:45.508 : -> configure (operationMode:0) +
09-17 07:42:45.635 : -> configure (operationMode:0) - OK
09-17 07:42:45.708 : -> 1st request - OK
09-17 07:45:10.048 : -> flush +
09-17 07:45:10.184 : -> flush - OK
09-17 07:45:10.201 : -> flush +
09-17 07:45:10.203 : -> flush - OK
09-17 07:45:10.205 : -> close +
09-17 07:45:10.227 : -> close - OK

//错误状态解析
== error state (most recent at bottom): App Stream Manager ==
//没有缓冲区溢出或下溢错误,没有流配置冲突
//没有格式协商失败,没有性能相关的超时错误

  [no events yet]

//警告状态
== warning state (most recent at bottom): App Stream Manager ==
//含义: 尝试将已存在于结果队列的请求再次加入队列
//原因: 在flush操作时,系统正在清理待处理请求
//严重性:低 - 正常的资源清理过程
09-16 07:10:53.225 : W [0-ResultHandler::enqueResult] requestNo:8 existed in mResultQueue[0] - hasLastPartial:0->0
//流类型: 元数据流(动态参数P1主摄像头)
//状态: IN-FLIGHT(处理中)→ ERROR(错误)
//原因: flush操作强制终止了进行中的请求
09-16 07:10:53.226 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:8 streamId:0x100000024 App:Meta:DynamicP1_main1
09-16 07:10:53.226 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:8 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-16 07:10:53.226 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:8 streamId:0x1 s1:d0:App:YCrCb_420_SP:0|SW_READ_OFTEN state:IN-FLIGHT->ERROR
09-16 07:10:53.226 : W [0-FrameHandler::updateCallback] requestNo:8 Request Error
09-16 07:10:53.227 : W [0-FrameHandler::updateResult] requestNo:8 is not in FrameQueue; FrameQueue: 4 5 6 7; ResultQueue: 8
09-16 07:10:53.233 : W [0-ResultHandler::enqueResult] requestNo:5 existed in mResultQueue[1] - hasLastPartial:0->0
09-16 07:10:53.234 : W [0-ResultHandler::enqueResult] requestNo:5 existed in mResultQueue[1] - hasLastPartial:0->1
09-16 07:10:53.235 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:5 streamId:0x100000024 App:Meta:DynamicP1_main1
09-16 07:10:53.235 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:5 streamId:0x100000027 App:Meta:DynamicP2
09-16 07:10:53.235 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:5 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-16 07:10:53.236 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:5 streamId:0x1 s1:d0:App:YCrCb_420_SP:0|SW_READ_OFTEN state:IN-FLIGHT->ERROR
09-16 07:10:53.236 : W [0-FrameHandler::updateCallback] requestNo:5 Request Error
09-16 07:10:53.236 : W [0-FrameHandler::updateCallback] requestNo 5 is removed before shutter callbacked, there MUST have error frames or meta be sent for the request
09-16 07:10:53.237 : W [0-ResultHandler::enqueResult] requestNo:6 existed in mResultQueue[0] - hasLastPartial:0->0
...
...

//请求2640的错误模式
09-17 07:45:10.155 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2640 streamId:0x100000027 App:Meta:DynamicP2
09-17 07:45:10.155 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:2640 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-17 07:45:10.155 : W [0-FrameHandler::updateCallback] requestNo:2640 Request Error
09-17 07:45:10.155 : W [0-FrameHandler::updateCallback] requestNo 2640 is removed before shutter callbacked, there MUST have error frames or meta be sent for the request
09-17 07:45:10.156 : W [0-FrameHandler::updateResult] requestNo:2640 is not in FrameQueue; FrameQueue: 2641 2642 2643; ResultQueue: 2640
09-17 07:45:10.157 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2641 streamId:0x100000024 App:Meta:DynamicP1_main1
09-17 07:45:10.158 : W [0-ResultHandler::enqueResult] requestNo:2641 existed in mResultQueue[0] - hasLastPartial:0->0
09-17 07:45:10.159 : W [0-ResultHandler::enqueResult] requestNo:2641 existed in mResultQueue[0] - hasLastPartial:0->1
09-17 07:45:10.160 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2641 streamId:0x100000027 App:Meta:DynamicP2
09-17 07:45:10.160 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2641 streamId:0x100000029 App:Meta:FD
09-17 07:45:10.160 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:2641 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-17 07:45:10.160 : W [0-FrameHandler::updateCallback] requestNo:2641 Request Error
09-17 07:45:10.160 : W [0-FrameHandler::updateCallback] requestNo 2641 is removed before shutter callbacked, there MUST have error frames or meta be sent for the request
09-17 07:45:10.171 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2642 streamId:0x100000024 App:Meta:DynamicP1_main1
09-17 07:45:10.172 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2642 streamId:0x100000027 App:Meta:DynamicP2
09-17 07:45:10.172 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:2642 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-17 07:45:10.172 : W [0-FrameHandler::updateCallback] requestNo:2642 Request Error
09-17 07:45:10.172 : W [0-FrameHandler::updateCallback] requestNo 2642 is removed before shutter callbacked, there MUST have error frames or meta be sent for the request
09-17 07:45:10.173 : W [0-FrameHandler::updateResult] requestNo:2642 is not in FrameQueue; FrameQueue: 2643; ResultQueue: 2642
09-17 07:45:10.174 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2643 streamId:0x100000024 App:Meta:DynamicP1_main1
09-17 07:45:10.175 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2643 streamId:0x100000027 App:Meta:DynamicP2
09-17 07:45:10.175 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:2643 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-17 07:45:10.175 : W [0-FrameHandler::updateCallback] requestNo:2643 Request Error
09-17 07:45:10.175 : W [0-FrameHandler::updateCallback] requestNo 2643 is removed before shutter callbacked, there MUST have error frames or meta be sent for the request
09-17 07:45:10.208 : W [0:DeviceSessionPolicy::destroy] not implement yet.

//警告状态
== warning state (most recent at bottom): App Stream Manager ==
//含义: 尝试将已存在于结果队列的请求再次加入队列
//原因: 在flush操作时,系统正在清理待处理请求
//严重性:低 - 正常的资源清理过程
09-16 07:10:53.225 : W [0-ResultHandler::enqueResult] requestNo:8 existed in mResultQueue[0] - hasLastPartial:0->0
//流类型: 元数据流(动态参数P1主摄像头)
//状态: IN-FLIGHT(处理中)→ ERROR(错误)
//原因: flush操作强制终止了进行中的请求
09-16 07:10:53.226 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:8 streamId:0x100000024 App:Meta:DynamicP1_main1
09-16 07:10:53.226 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:8 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-16 07:10:53.226 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:8 streamId:0x1 s1:d0:App:YCrCb_420_SP:0|SW_READ_OFTEN state:IN-FLIGHT->ERROR
09-16 07:10:53.226 : W [0-FrameHandler::updateCallback] requestNo:8 Request Error
09-16 07:10:53.227 : W [0-FrameHandler::updateResult] requestNo:8 is not in FrameQueue; FrameQueue: 4 5 6 7; ResultQueue: 8
09-16 07:10:53.233 : W [0-ResultHandler::enqueResult] requestNo:5 existed in mResultQueue[1] - hasLastPartial:0->0
09-16 07:10:53.234 : W [0-ResultHandler::enqueResult] requestNo:5 existed in mResultQueue[1] - hasLastPartial:0->1
09-16 07:10:53.235 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:5 streamId:0x100000024 App:Meta:DynamicP1_main1
09-16 07:10:53.235 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:5 streamId:0x100000027 App:Meta:DynamicP2
09-16 07:10:53.235 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:5 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-16 07:10:53.236 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:5 streamId:0x1 s1:d0:App:YCrCb_420_SP:0|SW_READ_OFTEN state:IN-FLIGHT->ERROR
09-16 07:10:53.236 : W [0-FrameHandler::updateCallback] requestNo:5 Request Error
09-16 07:10:53.236 : W [0-FrameHandler::updateCallback] requestNo 5 is removed before shutter callbacked, there MUST have error frames or meta be sent for the request
09-16 07:10:53.237 : W [0-ResultHandler::enqueResult] requestNo:6 existed in mResultQueue[0] - hasLastPartial:0->0
...
...

//请求2640的错误模式
09-17 07:45:10.155 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2640 streamId:0x100000027 App:Meta:DynamicP2
09-17 07:45:10.155 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:2640 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-17 07:45:10.155 : W [0-FrameHandler::updateCallback] requestNo:2640 Request Error
09-17 07:45:10.155 : W [0-FrameHandler::updateCallback] requestNo 2640 is removed before shutter callbacked, there MUST have error frames or meta be sent for the request
09-17 07:45:10.156 : W [0-FrameHandler::updateResult] requestNo:2640 is not in FrameQueue; FrameQueue: 2641 2642 2643; ResultQueue: 2640
09-17 07:45:10.157 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2641 streamId:0x100000024 App:Meta:DynamicP1_main1
09-17 07:45:10.158 : W [0-ResultHandler::enqueResult] requestNo:2641 existed in mResultQueue[0] - hasLastPartial:0->0
09-17 07:45:10.159 : W [0-ResultHandler::enqueResult] requestNo:2641 existed in mResultQueue[0] - hasLastPartial:0->1
09-17 07:45:10.160 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2641 streamId:0x100000027 App:Meta:DynamicP2
09-17 07:45:10.160 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2641 streamId:0x100000029 App:Meta:FD
09-17 07:45:10.160 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:2641 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-17 07:45:10.160 : W [0-FrameHandler::updateCallback] requestNo:2641 Request Error
09-17 07:45:10.160 : W [0-FrameHandler::updateCallback] requestNo 2641 is removed before shutter callbacked, there MUST have error frames or meta be sent for the request
09-17 07:45:10.171 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2642 streamId:0x100000024 App:Meta:DynamicP1_main1
09-17 07:45:10.172 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2642 streamId:0x100000027 App:Meta:DynamicP2
09-17 07:45:10.172 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:2642 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-17 07:45:10.172 : W [0-FrameHandler::updateCallback] requestNo:2642 Request Error
09-17 07:45:10.172 : W [0-FrameHandler::updateCallback] requestNo 2642 is removed before shutter callbacked, there MUST have error frames or meta be sent for the request
09-17 07:45:10.173 : W [0-FrameHandler::updateResult] requestNo:2642 is not in FrameQueue; FrameQueue: 2643; ResultQueue: 2642
09-17 07:45:10.174 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2643 streamId:0x100000024 App:Meta:DynamicP1_main1
09-17 07:45:10.175 : W [0-FrameHandler::operator()] [Meta Stream Buffer] Error happens... - requestNo:2643 streamId:0x100000027 App:Meta:DynamicP2
09-17 07:45:10.175 : W [0-FrameHandler::operator()] [Image Stream Buffer] Error happens and all users release - requestNo:2643 streamId:0 s0:d0:App:YV12:0|HW_TEXTURE state:IN-FLIGHT->ERROR
09-17 07:45:10.175 : W [0-FrameHandler::updateCallback] requestNo:2643 Request Error
09-17 07:45:10.175 : W [0-FrameHandler::updateCallback] requestNo 2643 is removed before shutter callbacked, there MUST have error frames or meta be sent for the request
09-17 07:45:10.208 : W [0:DeviceSessionPolicy::destroy] not implement yet.


//请求处理状态跟踪
== debug state (most recent at bottom): App Stream Manager ==
//请求2641的最终状态
09-17 07:45:10.160 : D [0-FrameHandler::updateResult] requestNo 2641, real time:0, last partial:1
09-17 07:45:10.160 : V [0-FrameHandler::updateCallback] stop updating frame => requestNo: this(2642) > latest(2641) 
09-17 07:45:10.171 : D [0-FrameHandler::prepareCallbackIfPossible] requestNo:2642 Result Error Pending
09-17 07:45:10.171 : V [0-FrameHandler::updateCallback] stop updating frame => requestNo: this(2643) > latest(2642) 
09-17 07:45:10.172 : D [0-FrameHandler::updateStreamBuffer] Mark buffer_error. requestNo 2642, streamId 0
//帧更新停止机制
//保护机制: 系统检测到请求号不连续,停止更新帧
09-17 07:45:10.172 : V [0-FrameHandler::updateCallback] stop updating frame => requestNo: this(2643) > latest(2642) 
09-17 07:45:10.173 : V [0-FrameHandler::updateCallback] stop updating frame => requestNo: this(2643) > latest(2642) 
//错误结果挂起
//错误挂起状态: 请求2642和2643的结果被标记为错误挂起
//准备回调: 系统尝试为这些请求准备错误回调
09-17 07:45:10.174 : D [0-FrameHandler::prepareCallbackIfPossible] requestNo:2643 Result Error Pending
//缓冲区错误标记
09-17 07:45:10.175 : D [0-FrameHandler::updateStreamBuffer] Mark buffer_error. requestNo 2643, streamId 0
//队列地址: 0xb40000737d15fef0 和 0xb40000737d15fe50
//清空状态: 帧队列已被完全清空
//内存地址: 表明这是具体的物理队列实例
09-17 07:45:10.175 : D [0-FrameHandler::updateResult] Empty FrameQueue:0xb40000737d15fef0 0xb40000737d15fe50
//设备会话策略析构
09-17 07:45:10.208 : D [0:DeviceSessionPolicy::~DeviceSessionPolicy] destructor of devicesessionpolicy
//线程退出序列
09-17 07:45:10.209 : [destroy] join +
09-17 07:45:10.209 : D [0-ResultHandler::requestExit] + 0-ResultHandler
09-17 07:45:10.209 : D [0-ResultHandler::requestExit] - 0-ResultHandler
09-17 07:45:10.209 : [destroy] join -
//资源回调助手线程退出
09-17 07:45:10.209 : [destroy] 0:AppMgr-ResCbHelper->join +
09-17 07:45:10.209 : D [0:AppMgr-ResCbHelper::requestExit] + 0:AppMgr-ResCbHelper
09-17 07:45:10.209 : D [0:AppMgr-ResCbHelper::requestExit] - 0:AppMgr-ResCbHelper
09-17 07:45:10.209 : D [0:AppMgr-ResCbHelper::threadLoop] Queue1 is empty
09-17 07:45:10.210 : [destroy] 0:AppMgr-ResCbHelper->join -
09-17 07:45:10.210 : [destroy] 0:AppMgr-MsgCbHelper->join +
09-17 07:45:10.210 : D [0:AppMgr-MsgCbHelper::requestExit] + 0:AppMgr-MsgCbHelper
09-17 07:45:10.210 : D [0:AppMgr-MsgCbHelper::requestExit] - 0:AppMgr-MsgCbHelper
09-17 07:45:10.210 : D [0:AppMgr-MsgCbHelper::threadLoop] Queue1 is empty
09-17 07:45:10.210 : [destroy] 0:AppMgr-MsgCbHelper->join -

6. 第六部分

//HAL 设备版本: device@1.1/internal/1 (使用 Camera HAL Device 1.1 接口)

//接口版本: v1.3 (硬件抽象层接口版本 1.3)

//设备路径: internal/1 (内置第二个摄像头)

== Camera HAL device device@1.1/internal/1 (v1.3) dumpState: ==
## Camera device [1]
## Camera device [device@1.1/internal/1]

...

7. 第七部分

**********Dumpsys from previous open session**********

  //camera id 0 被打开
09-17 07:45:10 : Device 0 is open. Client instance dump:
//优先级分数: 0(正常优先级)
//状态: 2(活跃状态)
Client priority score: 0 state: 2
//进程ID: 24565
Client PID: 24565
//应用包名: com.myos.camera
Client package: com.myos.camera
CameraDeviceClient[0] (0xb400007bfd465b30) dump:
//用户ID: 10043(系统应用)
Current client UID 10043
State:
//请求计数器: 2
Request ID counter: 2
//当前没有输入流配置
No input stream configured.
//当前输出流
Current output stream/surface IDs:
Stream 1 Surface 0
Stream 0 Surface 0
//最新帧元数据
Latest received frame:
Dumping camera metadata array: 97 / 97 entries, 464 / 464 bytes of extra data.
Version: 1, Flags: 00000000
android.colorCorrection.mode (00000): byte[1]

...

8. 第八部分

  Device dump:
//设备状态: CONFIGURED(已配置状态)
Device status: CONFIGURED
Stream configuration:
//操作模式: NORMAL(正常模式)
Operation mode: NORMAL (0) 
No input stream.
//Stream 0
Stream[0]: Output
//名称
Consumer name: SurfaceTexture-1-24565-0
State: 4
//分辨率: 960×720 (720p)
//格式: YV12 (YUV420平面格式)
//数据空间: 标准视频数据空间
Dims: 960 x 720, format 0x32315659, dataspace 0x8c20000
Max size: 0
//最大HAL缓冲区12个
Combined usage: 0x20133, max HAL buffers: 12
Dynamic Range Profile: 0x1
Color Space: -1
Stream use case: 0
Timestamp base: 0
Frames produced: 2644, last timestamp: 0 ns
//15个缓冲区
Total buffers: 15, currently dequeued: 0, currently cached: 0
//取样时间占用比例,取样个数2644
DequeueBuffer latency histogram: (2644) samples
5     10     15     20     25     30     35     40     45    inf (max ms)
96.41   2.04   1.10   0.11   0.11   0.08   0.08   0.04   0.00   0.04 (%)

    //Stream 0
Stream[1]: Output
//名称
Consumer name: ImageReader-4160x3120f21m2-24565-0
State: 4
//4160×3120 (13.1MP)
//格式: JPEG 0x21(JPEG)
Dims: 4160 x 3120, format 0x21, dataspace 0x8c20000
//最大尺寸: 19,927,544字节 (约19MB)
Max size: 19927544
//最大HAL缓冲区6个
Combined usage: 0x20033, max HAL buffers: 6
Dynamic Range Profile: 0x1
Color Space: -1
Stream use case: 0
Timestamp base: 0
Frames produced: 0, last timestamp: 0 ns
//缓冲区数量: 8个缓冲区
Total buffers: 8, currently dequeued: 0, currently cached: 0
Camera3 Buffer Manager:
Total stream sets: 0
In-flight requests:
None
//取样时间占用比例,取样个数2644
ProcessCaptureRequest latency histogram: (2644) samples
40     80    120    160    200    240    280    320    360    inf (max ms)
72.28   4.16   23.49   0.08   0.00   0.00   0.00   0.00   0.00   0.00 (%)
Last request sent:
Dumping camera metadata array: 64 / 64 entries, 248 / 248 bytes of extra data.
Version: 1, Flags: 00000001
android.colorCorrection.mode (00000): byte[1]
[FAST ]

http://www.dtcms.com/a/420269.html

相关文章:

  • 湛江建站程序厂房装修东莞网站建设
  • hslenc.c 代码提纲挈领分析
  • 怎么搭建mysql数据库网站广州注册公司需要什么资料
  • 优惠劵精选网站怎么做网站建设丩金手指排名壹陆
  • 旅游小镇网站建设方案网站建设需要材料
  • 鸿蒙Next NFC标签读写开发指南:从基础到实战
  • 微网站制作工具有哪些西安做网站公司报价
  • 淄博网站建设给力臻动传媒城市建设理论研究收录网站
  • wordpress去除标志站长查询seo是什么意思
  • 鸿蒙(HarmonyOS)应用开发技能栈
  • 网站的功能性合作网站制作
  • Node.js面试题及详细答案120题(69-80) -- 数据库操作篇
  • 如何做好网站需求分析wordpress 去除新闻
  • 申请完域名怎么做网站宁波怎么建网站模板
  • nancy网站开发网站排名推广推荐
  • 网站建设辶金手指排名十五北京工程设计公司排名
  • 安装php网站360全景图合成软件
  • 小学微机作业做网站wordpress随机
  • 二叉树第一周总结
  • 湖北商城网站建设多少钱用手机可以做网站吗
  • 惠州微网站建设网站建设公司位置
  • 个人网站可以做百度推广吗wordpress后台多媒体不显示缩
  • istio 部署
  • 专业做营销网站哪个平台查企业免费
  • 【故障】win7命令行窗口cmd闪退
  • 优化网站加载速度宿迁市建设局网站维修基金
  • Spring IOC源码篇六 核心方法obtainFreshBeanFactory.parseCustomElement
  • 【c++】红黑树的部分实现
  • cpp02:类和对象
  • 即墨城乡建设局网站金融网站建设报价方案