return 0;
}
+static const char *__get_filename_ext(const char *filename) {
+ const char *dot = strrchr(filename, '.');
+ if(!dot || dot == filename) return "";
+ return dot + 1;
+}
+
+static int __is_high_efficiency_image(char *filename)
+{
+ if (filename == NULL)
+ return 0;
+
+ const char *ext = __get_filename_ext(filename);
+ if (ext == NULL)
+ return 0;
+
+ if (0 == strncmp(ext, "heic", strlen(ext))
+ || 0 == strncmp(ext, "heif", strlen(ext))) {
+ return 1;
+ }
+
+ return 0;
+}
+
MTPObjectInfo *LIBMTP_Get_Object_Info(LIBMTP_mtpdevice_t *device, uint32_t object_id)
{
PTPParams *params = (PTPParams *)device->params;
else
object_info->Keywords = NULL;
- object_info->ObjectFormat = map_ptp_type_to_libmtp_type(object_info->ObjectFormat);
+ LIBMTP_INFO("Filename : %s, Object Format : %hu", object_info->Filename, object_info->ObjectFormat);
+ if (object_info->ObjectFormat == PTP_OFC_Defined && __is_high_efficiency_image(object_info->Filename)) {
+ LIBMTP_INFO("It is HEIF image");
+ object_info->ObjectFormat = LIBMTP_FILETYPE_HEIF;
+ } else {
+ object_info->ObjectFormat = map_ptp_type_to_libmtp_type(object_info->ObjectFormat);
+ }
+
object_info->ThumbFormat = map_ptp_type_to_libmtp_type(object_info->ThumbFormat);
return object_info;