阅读 179

CameraMetaData

标签:generate   hat   信息   char   session   methods   mil   摄像头   dde   

一、camera_metadata简介

  Camera API2/HAL3架构下使用了全新的CameraMetadata结构取代了之前的SetParameter/Paramters等操作,实现了Java到native到HAL3的参数传递。引入了管道的概念将安卓设备和摄像头之间联系起来,系统向摄像头发送 Capture 请求,而摄像头会返回 CameraMetadata,这一切建立在一个叫作 CameraCaptureSession 的会话中。和Camera_metadata数据结构相关的主要有以下几个文件:

system/media/camera/include/system/camera_metadata_tags.h(不允许直接引用该头文件,如需引用,可以引用camera_metadata.h)
system/media/camera/include/system/camera_metadata.h
system/media/camera/include/system/camera_vendor_tags.h(给各个芯片厂商扩展的tag)
system/media/camera/src/camera_metadata_tag_info.c(不允许直接调用该文件中的函数,如需调用,调用camera_metadata.c中包装函数)
system/media/camera/src/camera_metadata.c
framework/av/camera/CameraMetadata.cpp
framework/av/include/camera/CameraMetadata.h
frameworks/base/core/jni/android_hardware_camera2_CameraMetadata.cpp

二、Framework到HAL层的转换

  Camera2Client 使用 API1 传递参数采用的逻辑是还是在Java层预留了setParameters接口,只是当Parameter在设置时比起CameraClient而言,是将这个Parameter根据不同的TAG形式直接绑定到CameraMetadata mPreviewRequest/mRecordRequest/mCaptureRequest中,这些数据会由Capture_Request转为camera3_capture_request中的camera_metadata_t settings完成参数从Java到native到HAL3的传递。

  但是在Camera API2下,不再需要那么复杂的转换过程,在Java层中直接对参数进行设置并将其封装到Capture_Request即可,即参数控制由Java层来完成。这也体现了API2中Request和Result在APP中就大量存在的原因。对此为了和Framework Native层相关TAG数据的统一,在Java层中大量出现的参数设置是通过Section Tag的name来交由Native完成转换生成在Java层的TAG。

(1)Java层对应代码位置:frameworks/base/core/java/android/hardware/camera2/impl/CameraMetadataNative.java

 1     private <T> T getBase(Key<T> key) { 2         int tag = nativeGetTagFromKeyLocal(key.getName()); 3         byte[] values = readValues(tag); 4         if (values == null) { 5             // If the key returns null, use the fallback key if exists. 6             // This is to support old key names for the newly published keys. 7             if (key.mFallbackName == null) { 8                 return null; 9             }10             tag = nativeGetTagFromKeyLocal(key.mFallbackName);11             values = readValues(tag);12             if (values == null) {13                 return null;14             }15         }16 17         int nativeType = nativeGetTypeFromTagLocal(tag);18         Marshaler<T> marshaler = getMarshalerForKey(key, nativeType);19         ByteBuffer buffer = ByteBuffer.wrap(values).order(ByteOrder.nativeOrder());20         return marshaler.unmarshal(buffer);21     }

(2)Native层对应代码位置:frameworks/base/core/jni/android_hardware_camera2_CameraMetadata.cpp

 1 static const JNINativeMethod gCameraMetadataMethods[] = { 2 // static methods 3   { "nativeGetTagFromKey", 4     "(Ljava/lang/String;J)I", 5     (void *)CameraMetadata_getTagFromKey }, 6   { "nativeGetTypeFromTag", 7     "(IJ)I", 8     (void *)CameraMetadata_getTypeFromTag }, 9   { "nativeSetupGlobalVendorTagDescriptor",10     "()I",11     (void*)CameraMetadata_setupGlobalVendorTagDescriptor },12 // instance methods13   { "nativeAllocate",14     "()J",15     (void*)CameraMetadata_allocate },16   { "nativeAllocateCopy",17     "(L" CAMERA_METADATA_CLASS_NAME ";)J",18     (void *)CameraMetadata_allocateCopy },19   { "nativeIsEmpty",20     "()Z",21     (void*)CameraMetadata_isEmpty },22   { "nativeGetEntryCount",23     "()I",24     (void*)CameraMetadata_getEntryCount },25   { "nativeClose",26     "()V",27     (void*)CameraMetadata_close },28   { "nativeSwap",29     "(L" CAMERA_METADATA_CLASS_NAME ";)V",30     (void *)CameraMetadata_swap },31   { "nativeGetTagFromKeyLocal",32     "(Ljava/lang/String;)I",33     (void *)CameraMetadata_getTagFromKeyLocal },34   { "nativeGetTypeFromTagLocal",35     "(I)I",36     (void *)CameraMetadata_getTypeFromTagLocal },37 ...38 };

其中CameraMetadata_getTagFromKey是实现将一个Java层的string转为一个tag的值,如:android.control.mode。对比最初不同的Section name就可以发现前面两个x.y的字符串就是代表是Section name.而后面mode即是在该section下的tag数值,所以通过对这个string的分析可知,就可以定位对应的section以及tag值,这样返回到Java层的就是key相应的tag值了。继续追踪到 \system\media\camera\src\camera_metadata.c:

 1 // Declared in system/media/private/camera/include/camera_metadata_hidden.h 2 const char *get_local_camera_metadata_tag_name_vendor_id(uint32_t tag, 3         metadata_vendor_id_t id) { 4     uint32_t tag_section = tag >> 16; 5     if (tag_section >= VENDOR_SECTION && vendor_cache_ops != NULL && 6                 id != CAMERA_METADATA_INVALID_VENDOR_ID) { 7             return vendor_cache_ops->get_tag_name(tag, id); 8     } else  if (tag_section >= VENDOR_SECTION && vendor_tag_ops != NULL) { 9         return vendor_tag_ops->get_tag_name(10             vendor_tag_ops,11             tag);12     }13     if (tag_section >= ANDROID_SECTION_COUNT ||14         tag >= camera_metadata_section_bounds[tag_section][1] ) {  // 关键是camera_metadata_section_bounds这个数组,保存了各个tag的绑定信息15         return NULL;16     }17     uint32_t tag_index = tag & 0xFFFF;18     return tag_info[tag_section][tag_index].tag_name;19 }

相关文件调用关系如下:

技术图片

其中 camera_metadata_tags.h 包含了所有的基本宏,每一个section的大小是64K(每个section_start 由section偏移16位,也就是2^16=65536,即64K)。tag也就是又section_start偏移而来,比如android.control.mode,由camera_metadata_section--->ANDROID_CONTROL找到对应的camera_metadata_section_start--->ANDROID_CONTROL_START,然后在camera_metadata_tag找到对应的ANDROID_CONTROL_MODE,也就是tag值。

  1 /**  2  * !! Do not include this file directly !!  3  *  4  * Include camera_metadata.h instead.  5  */  6   7 /**  8  * ! Do not edit this file directly !  9  * 10  * Generated automatically from camera_metadata_tags.mako 11  */ 12  13 /** TODO: Nearly every enum in this file needs a description */ 14  15 /** 16  * Top level hierarchy definitions for camera metadata. *_INFO sections are for 17  * the static metadata that can be retrived without opening the camera device. 18  * New sections must be added right before ANDROID_SECTION_COUNT to maintain 19  * existing enumerations. 20  */ 21 typedef enum camera_metadata_section { 22     ANDROID_COLOR_CORRECTION, 23     ANDROID_CONTROL, 24     ANDROID_DEMOSAIC, 25     ANDROID_EDGE, 26     ANDROID_FLASH, 27     ANDROID_FLASH_INFO, 28     ANDROID_HOT_PIXEL, 29     ANDROID_JPEG, 30     ANDROID_LENS, 31     ANDROID_LENS_INFO, 32     ANDROID_NOISE_REDUCTION, 33     ANDROID_QUIRKS, 34     ANDROID_REQUEST, 35     ANDROID_SCALER, 36     ANDROID_SENSOR, 37     ANDROID_SENSOR_INFO, 38     ANDROID_SHADING, 39     ANDROID_STATISTICS, 40     ANDROID_STATISTICS_INFO, 41     ANDROID_TONEMAP, 42     ANDROID_LED, 43     ANDROID_INFO, 44     ANDROID_BLACK_LEVEL, 45     ANDROID_SYNC, 46     ANDROID_REPROCESS, 47     ANDROID_DEPTH, 48     ANDROID_LOGICAL_MULTI_CAMERA, 49     ANDROID_DISTORTION_CORRECTION, 50     ANDROID_HEIC, 51     ANDROID_HEIC_INFO, 52     ANDROID_H264, 53     ANDROID_H265, 54     ANDROID_SECTION_COUNT, 55  56     VENDOR_SECTION = 0x8000 57 } camera_metadata_section_t; 58  59 /** 60  * Hierarchy positions in enum space. All vendor extension tags must be 61  * defined with tag >= VENDOR_SECTION_START 62  */ 63 typedef enum camera_metadata_section_start { 64     ANDROID_COLOR_CORRECTION_START = ANDROID_COLOR_CORRECTION  << 16, 65     ANDROID_CONTROL_START          = ANDROID_CONTROL           << 16, 66     ANDROID_DEMOSAIC_START         = ANDROID_DEMOSAIC          << 16, 67     ANDROID_EDGE_START             = ANDROID_EDGE              << 16, 68     ANDROID_FLASH_START            = ANDROID_FLASH             << 16, 69     ANDROID_FLASH_INFO_START       = ANDROID_FLASH_INFO        << 16, 70     ANDROID_HOT_PIXEL_START        = ANDROID_HOT_PIXEL         << 16, 71     ANDROID_JPEG_START             = ANDROID_JPEG              << 16, 72     ANDROID_LENS_START             = ANDROID_LENS              << 16, 73     ANDROID_LENS_INFO_START        = ANDROID_LENS_INFO         << 16, 74     ANDROID_NOISE_REDUCTION_START  = ANDROID_NOISE_REDUCTION   << 16, 75     ANDROID_QUIRKS_START           = ANDROID_QUIRKS            << 16, 76     ANDROID_REQUEST_START          = ANDROID_REQUEST           << 16, 77     ANDROID_SCALER_START           = ANDROID_SCALER            << 16, 78     ANDROID_SENSOR_START           = ANDROID_SENSOR            << 16, 79     ANDROID_SENSOR_INFO_START      = ANDROID_SENSOR_INFO       << 16, 80     ANDROID_SHADING_START          = ANDROID_SHADING           << 16, 81     ANDROID_STATISTICS_START       = ANDROID_STATISTICS        << 16, 82     ANDROID_STATISTICS_INFO_START  = ANDROID_STATISTICS_INFO   << 16, 83     ANDROID_TONEMAP_START          = ANDROID_TONEMAP           << 16, 84     ANDROID_LED_START              = ANDROID_LED               << 16, 85     ANDROID_INFO_START             = ANDROID_INFO              << 16, 86     ANDROID_BLACK_LEVEL_START      = ANDROID_BLACK_LEVEL       << 16, 87     ANDROID_SYNC_START             = ANDROID_SYNC              << 16, 88     ANDROID_REPROCESS_START        = ANDROID_REPROCESS         << 16, 89     ANDROID_DEPTH_START            = ANDROID_DEPTH             << 16, 90     ANDROID_LOGICAL_MULTI_CAMERA_START 91                                    = ANDROID_LOGICAL_MULTI_CAMERA 92                                                                 << 16, 93     ANDROID_DISTORTION_CORRECTION_START 94                                    = ANDROID_DISTORTION_CORRECTION 95                                                                 << 16, 96     ANDROID_HEIC_START             = ANDROID_HEIC              << 16, 97     ANDROID_HEIC_INFO_START        = ANDROID_HEIC_INFO         << 16, 98     ANDROID_H264_START             = ANDROID_H264              << 16, 99     ANDROID_H265_START             = ANDROID_H265              << 16,100     VENDOR_SECTION_START           = VENDOR_SECTION            << 16101 } camera_metadata_section_start_t;

 

 

 1 /** 2  * Main enum for defining camera metadata tags.  New entries must always go 3  * before the section _END tag to preserve existing enumeration values.  In 4  * addition, the name and type of the tag needs to be added to 5  * system/media/camera/src/camera_metadata_tag_info.c 6  */ 7 typedef enum camera_metadata_tag { 8     ANDROID_COLOR_CORRECTION_MODE =                   // enum         | public       | HIDL v3.2 9             ANDROID_COLOR_CORRECTION_START,10     ANDROID_COLOR_CORRECTION_TRANSFORM,               // rational[]   | public       | HIDL v3.211     ANDROID_COLOR_CORRECTION_GAINS,                   // float[]      | public       | HIDL v3.212     ANDROID_COLOR_CORRECTION_ABERRATION_MODE,         // enum         | public       | HIDL v3.213     ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,14                                                       // byte[]       | public       | HIDL v3.215     ANDROID_COLOR_CORRECTION_END,16 17     ANDROID_CONTROL_AE_ANTIBANDING_MODE =             // enum         | public       | HIDL v3.218             ANDROID_CONTROL_START,19     ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,         // int32        | public       | HIDL v3.220     ANDROID_CONTROL_AE_LOCK,                          // enum         | public       | HIDL v3.221     ANDROID_CONTROL_AE_MODE,                          // enum         | public       | HIDL v3.222     ANDROID_CONTROL_AE_REGIONS,                       // int32[]      | public       | HIDL v3.223     ANDROID_CONTROL_AE_TARGET_FPS_RANGE,              // int32[]      | public       | HIDL v3.224     ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,            // enum         | public       | HIDL v3.225     ANDROID_CONTROL_AF_MODE,                          // enum         | public       | HIDL v3.226     ANDROID_CONTROL_AF_REGIONS,                       // int32[]      | public       | HIDL v3.227     ANDROID_CONTROL_AF_TRIGGER,                       // enum         | public       | HIDL v3.228     ANDROID_CONTROL_AWB_LOCK,                         // enum         | public       | HIDL v3.229     ANDROID_CONTROL_AWB_MODE,                         // enum         | public       | HIDL v3.230     ANDROID_CONTROL_AWB_REGIONS,                      // int32[]      | public       | HIDL v3.231     ANDROID_CONTROL_CAPTURE_INTENT,                   // enum         | public       | HIDL v3.232     ANDROID_CONTROL_EFFECT_MODE,                      // enum         | public       | HIDL v3.233     ANDROID_CONTROL_MODE,                             // enum         | public       | HIDL v3.234     ANDROID_CONTROL_SCENE_MODE,                       // enum         | public       | HIDL v3.235     ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,         // enum         | public       | HIDL v3.236     ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,   // byte[]       | public       | HIDL v3.237     ANDROID_CONTROL_AE_AVAILABLE_MODES,               // byte[]       | public       | HIDL v3.238     ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,   // int32[]      | public       | HIDL v3.239     ANDROID_CONTROL_AE_COMPENSATION_RANGE,            // int32[]      | public       | HIDL v3.240     ANDROID_CONTROL_AE_COMPENSATION_STEP,             // rational     | public       | HIDL v3.241     ANDROID_CONTROL_AF_AVAILABLE_MODES,               // byte[]       | public       | HIDL v3.242     ANDROID_CONTROL_AVAILABLE_EFFECTS,                // byte[]       | public       | HIDL v3.243     ANDROID_CONTROL_AVAILABLE_SCENE_MODES,            // byte[]       | public       | HIDL v3.244     ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,45                                                       // byte[]       | public       | HIDL v3.246     ANDROID_CONTROL_AWB_AVAILABLE_MODES,              // byte[]       | public       | HIDL v3.247     ANDROID_CONTROL_MAX_REGIONS,                      // int32[]      | ndk_public   | HIDL v3.248     ANDROID_CONTROL_SCENE_MODE_OVERRIDES,             // byte[]       | system       | HIDL v3.249     ANDROID_CONTROL_AE_PRECAPTURE_ID,                 // int32        | system       | HIDL v3.250     ANDROID_CONTROL_AE_STATE,                         // enum         | public       | HIDL v3.251     ANDROID_CONTROL_AF_STATE,                         // enum         | public       | HIDL v3.252     ANDROID_CONTROL_AF_TRIGGER_ID,                    // int32        | system       | HIDL v3.253     ANDROID_CONTROL_AWB_STATE,                        // enum         | public       | HIDL v3.254     ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS,55                                                       // int32[]      | hidden       | HIDL v3.256     ANDROID_CONTROL_AE_LOCK_AVAILABLE,                // enum         | public       | HIDL v3.257     ANDROID_CONTROL_AWB_LOCK_AVAILABLE,               // enum         | public       | HIDL v3.258     ANDROID_CONTROL_AVAILABLE_MODES,                  // byte[]       | public       | HIDL v3.259     ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE, // int32[]      | public       | HIDL v3.260     ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST,       // int32        | public       | HIDL v3.261     ANDROID_CONTROL_ENABLE_ZSL,                       // enum         | public       | HIDL v3.262     ANDROID_CONTROL_AF_SCENE_CHANGE,                  // enum         | public       | HIDL v3.363     ANDROID_CONTROL_END,64   65   ......

对应关系如图所示:

技术图片

 

 然后在 camera_metadata_tag_info.c 中进行了映射和绑定,前面Native层CameraMetadata_getTagFromKey--->getTagFromName--->camera_metadata_section_bounds调用的camera_metadata_section_bounds实现在这里:

 1 /** 2  * ! Do not edit this file directly ! 3  * 4  * Generated automatically from camera_metadata_tag_info.mako 5  */ 6  7 const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = { 8     [ANDROID_COLOR_CORRECTION]     = "android.colorCorrection", 9     [ANDROID_CONTROL]              = "android.control",10     [ANDROID_DEMOSAIC]             = "android.demosaic",11     [ANDROID_EDGE]                 = "android.edge",12     [ANDROID_FLASH]                = "android.flash",13     [ANDROID_FLASH_INFO]           = "android.flash.info",14     [ANDROID_HOT_PIXEL]            = "android.hotPixel",15     [ANDROID_JPEG]                 = "android.jpeg",16     [ANDROID_LENS]                 = "android.lens",17     [ANDROID_LENS_INFO]            = "android.lens.info",18     [ANDROID_NOISE_REDUCTION]      = "android.noiseReduction",19     [ANDROID_QUIRKS]               = "android.quirks",20     [ANDROID_REQUEST]              = "android.request",21     [ANDROID_SCALER]               = "android.scaler",22     [ANDROID_SENSOR]               = "android.sensor",23     [ANDROID_SENSOR_INFO]          = "android.sensor.info",24     [ANDROID_SHADING]              = "android.shading",25     [ANDROID_STATISTICS]           = "android.statistics",26     [ANDROID_STATISTICS_INFO]      = "android.statistics.info",27     [ANDROID_TONEMAP]              = "android.tonemap",28     [ANDROID_LED]                  = "android.led",29     [ANDROID_INFO]                 = "android.info",30     [ANDROID_BLACK_LEVEL]          = "android.blackLevel",31     [ANDROID_SYNC]                 = "android.sync",32     [ANDROID_REPROCESS]            = "android.reprocess",33     [ANDROID_DEPTH]                = "android.depth",34     [ANDROID_LOGICAL_MULTI_CAMERA] = "android.logicalMultiCamera",35     [ANDROID_DISTORTION_CORRECTION]36                                     = "android.distortionCorrection",37 };38 39 unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {40     [ANDROID_COLOR_CORRECTION]     = { ANDROID_COLOR_CORRECTION_START,41                                        ANDROID_COLOR_CORRECTION_END },42     [ANDROID_CONTROL]              = { ANDROID_CONTROL_START,43                                        ANDROID_CONTROL_END },44     [ANDROID_DEMOSAIC]             = { ANDROID_DEMOSAIC_START,45                                        ANDROID_DEMOSAIC_END },46     [ANDROID_EDGE]                 = { ANDROID_EDGE_START,47                                        ANDROID_EDGE_END },48     [ANDROID_FLASH]                = { ANDROID_FLASH_START,49                                        ANDROID_FLASH_END },50     [ANDROID_FLASH_INFO]           = { ANDROID_FLASH_INFO_START,51                                        ANDROID_FLASH_INFO_END },52     [ANDROID_HOT_PIXEL]            = { ANDROID_HOT_PIXEL_START,53                                        ANDROID_HOT_PIXEL_END },54     [ANDROID_JPEG]                 = { ANDROID_JPEG_START,55                                        ANDROID_JPEG_END },56     [ANDROID_LENS]                 = { ANDROID_LENS_START,57                                        ANDROID_LENS_END },58     [ANDROID_LENS_INFO]            = { ANDROID_LENS_INFO_START,59                                        ANDROID_LENS_INFO_END },60     [ANDROID_NOISE_REDUCTION]      = { ANDROID_NOISE_REDUCTION_START,61                                        ANDROID_NOISE_REDUCTION_END },62     [ANDROID_QUIRKS]               = { ANDROID_QUIRKS_START,63                                        ANDROID_QUIRKS_END },64     [ANDROID_REQUEST]              = { ANDROID_REQUEST_START,65                                        ANDROID_REQUEST_END },66     [ANDROID_SCALER]               = { ANDROID_SCALER_START,67                                        ANDROID_SCALER_END },68     [ANDROID_SENSOR]               = { ANDROID_SENSOR_START,69                                        ANDROID_SENSOR_END },70     [ANDROID_SENSOR_INFO]          = { ANDROID_SENSOR_INFO_START,71                                        ANDROID_SENSOR_INFO_END },72     [ANDROID_SHADING]              = { ANDROID_SHADING_START,73                                        ANDROID_SHADING_END },74     [ANDROID_STATISTICS]           = { ANDROID_STATISTICS_START,75                                        ANDROID_STATISTICS_END },76     [ANDROID_STATISTICS_INFO]      = { ANDROID_STATISTICS_INFO_START,77                                        ANDROID_STATISTICS_INFO_END },78     [ANDROID_TONEMAP]              = { ANDROID_TONEMAP_START,79                                        ANDROID_TONEMAP_END },80     [ANDROID_LED]                  = { ANDROID_LED_START,81                                        ANDROID_LED_END },82     [ANDROID_INFO]                 = { ANDROID_INFO_START,83                                        ANDROID_INFO_END },84     [ANDROID_BLACK_LEVEL]          = { ANDROID_BLACK_LEVEL_START,85                                        ANDROID_BLACK_LEVEL_END },86     [ANDROID_SYNC]                 = { ANDROID_SYNC_START,87                                        ANDROID_SYNC_END },88     [ANDROID_REPROCESS]            = { ANDROID_REPROCESS_START,89                                        ANDROID_REPROCESS_END },90     [ANDROID_DEPTH]                = { ANDROID_DEPTH_START,91                                        ANDROID_DEPTH_END },92     [ANDROID_LOGICAL_MULTI_CAMERA] = { ANDROID_LOGICAL_MULTI_CAMERA_START,93                                        ANDROID_LOGICAL_MULTI_CAMERA_END },94     [ANDROID_DISTORTION_CORRECTION]95                                     = { ANDROID_DISTORTION_CORRECTION_START,96                                        ANDROID_DISTORTION_CORRECTION_END },97 };

由 tag_info 结构体统一管理:

 1 static tag_info_t android_color_correction[ANDROID_COLOR_CORRECTION_END - 2         ANDROID_COLOR_CORRECTION_START] = { 3     [ ANDROID_COLOR_CORRECTION_MODE - ANDROID_COLOR_CORRECTION_START ] = 4     { "mode",                          TYPE_BYTE   }, 5     [ ANDROID_COLOR_CORRECTION_TRANSFORM - ANDROID_COLOR_CORRECTION_START ] = 6     { "transform",                     TYPE_RATIONAL 7                 }, 8     [ ANDROID_COLOR_CORRECTION_GAINS - ANDROID_COLOR_CORRECTION_START ] = 9     { "gains",                         TYPE_FLOAT  },10     [ ANDROID_COLOR_CORRECTION_ABERRATION_MODE - ANDROID_COLOR_CORRECTION_START ] =11     { "aberrationMode",                TYPE_BYTE   },12     [ ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES - ANDROID_COLOR_CORRECTION_START ] =13     { "availableAberrationModes",      TYPE_BYTE   },14 };15 16 -------------------------------------------------------------17 18 tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {19     android_color_correction,20     android_control,21     android_demosaic,22     android_edge,23     android_flash,24     android_flash_info,25     android_hot_pixel,26     android_jpeg,27     android_lens,28     android_lens_info,29     android_noise_reduction,30     android_quirks,31     android_request,32     android_scaler,33     android_sensor,34     android_sensor_info,35     android_shading,36     android_statistics,37     android_statistics_info,38     android_tonemap,39     android_led,40     android_info,41     android_black_level,42     android_sync,43     android_reprocess,44     android_depth,45     android_logical_multi_camera,46     android_distortion_correction,47 };

下图是Camera Metadata对不同section以及相应section下不同tag的布局图,以最常见的android.control Section为例进行描述:

技术图片

 

CameraMetaData

标签:generate   hat   信息   char   session   methods   mil   摄像头   dde   

原文地址:https://www.cnblogs.com/SaraMoring/p/14385967.html


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐