本次要求是把照片exif信息中的make修改为空,其他类似需求可做参考用
vendor/qcom/proprietary/mm-still/jpeg2/src/exif_defaults.c
首先在丐文件中定义了camera 的exif信息列表
static exif_tag_entry_ex_t* default_tags[] =
{
&default_tag_make,
&default_tag_model,
&default_tag_datetime_original,
&default_tag_datetime_digitized,
&default_tag_exif_version,
&default_tag_flash_pix_version,
&default_tag_components_config,
&default_tag_resolution_unit,
&default_tag_tn_resolution_unit,
&default_tag_tn_compression,
&default_tag_tn_exif_x_resolution,
&default_tag_tn_exif_y_resolution,
&default_tag_exif_x_resolution,
&default_tag_exif_y_resolution,
&default_tag_ycbcr_positioning,
&default_tag_color_space
};
其中MAKE信息的具体定义
static exif_tag_entry_ex_t default_tag_make =
{
{
EXIF_ASCII, // type
0, // copy
8, // count
{"QCOM--AA"}, // data._ascii (initialization applies
// to first member of the union)
}, // entry
EXIFTAGID_MAKE,
};
QCamera2HardwareInterface::getExifData()函数
property_get("persist.sys.exif.make", value, "");
exif->addEntry(EXIFTAGID_MAKE,
vendor/qcom/proprietary/mm-still/jpeg2/src/exif_defaults.c
首先在丐文件中定义了camera 的exif信息列表
static exif_tag_entry_ex_t* default_tags[] =
{
&default_tag_make,
&default_tag_model,
&default_tag_datetime_original,
&default_tag_datetime_digitized,
&default_tag_exif_version,
&default_tag_flash_pix_version,
&default_tag_components_config,
&default_tag_resolution_unit,
&default_tag_tn_resolution_unit,
&default_tag_tn_compression,
&default_tag_tn_exif_x_resolution,
&default_tag_tn_exif_y_resolution,
&default_tag_exif_x_resolution,
&default_tag_exif_y_resolution,
&default_tag_ycbcr_positioning,
&default_tag_color_space
};
其中MAKE信息的具体定义
static exif_tag_entry_ex_t default_tag_make =
{
{
EXIF_ASCII, // type
0, // copy
8, // count
{"QCOM--AA"}, // data._ascii (initialization applies
// to first member of the union)
}, // entry
EXIFTAGID_MAKE,
};
具体实现的修改:
QCamera2HardwareInterface::getExifData()函数
该函数的作用:get exif data to be passed into jpeg encoding
所以想要把make信息修改为空只需要在该函数中添加代码,对EXIFTAGID_MAKE进行重新赋值。
本次修改是通过persist.sys.exif.make获取make的值。若不设置persist.sys.exif.make,则make信息为空
property_get("persist.sys.exif.make", value, "");
exif->addEntry(EXIFTAGID_MAKE,
EXIF_ASCII, strlen(value) + 1, (void *)value);
同理,在该函数中也可以对exif信息中的其他项进行设置。
剩余疑问:exif中的信息列表选项只能被修改值,却不能被删除某一个选项,该问题资讯高通也没有给出合理解释,有待进一步学习
并且AP也可以修改exif信息