Loading src/exif_cfg.h +1 −1 Original line number Diff line number Diff line Loading @@ -72,8 +72,8 @@ const unsigned int Exif_makernote_nikon_tag_list [] = 6, 8, /* Flash Setting */ 9, /* Flash Mode */ 24, /* Flash exposure bracket value */ 135, /* Flash used */ 18, /* Flash Exposure Comp */ 168, /* Flash info: control mode */ 2, /* ISO. Has some more info than EXIF_TAG_ISO_SPEED_RATINGS but also fails on Lo.1 */ Loading src/exif_nikon.c +33 −2 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ static void exn_get_prim_af_pt(unsigned int phasedetectaf, char * buffer, unsigned int maxsize); static void exn_get_flash_output(unsigned int flashoutput, char * buffer, unsigned int maxsize); static void exn_get_mnote_nikon_18(ExifData *ed, char * buffer, unsigned int maxsize); static void exn_get_mnote_nikon_34(ExifData *ed, char * buffer, unsigned int maxsize); static void exn_get_mnote_nikon_35(ExifData *ed, char * buffer, unsigned int maxsize); static void exn_get_mnote_nikon_168(ExifData *ed, char * buffer, unsigned int maxsize); Loading Loading @@ -199,6 +200,23 @@ static void exn_get_flash_output(unsigned int flashoutput, char * buffer, unsign /* get ActiveD-Lighting (18) info */ static void exn_get_mnote_nikon_18(ExifData *ed, char * buffer, unsigned int maxsize) { char buf[EXIF_STD_BUF_LEN]; float data = 0; buf[0] = '\0'; exif_get_mnote_tag(ed, 18, buf, sizeof(buf)); sscanf(buf, "Flash Exposure Compensation: %f", &data); /* libexif buggy here. fix conversion */ snprintf(buffer, maxsize, "FlashExposureCompensation: %.1f\n", ((float)((signed char)round(data*6.0))) / 6.0 ); } /* get ActiveD-Lighting (34) info */ static void exn_get_mnote_nikon_34(ExifData *ed, char * buffer, unsigned int maxsize) { Loading Loading @@ -321,13 +339,16 @@ static void exn_get_mnote_nikon_168(ExifData *ed, char * buffer, unsigned int ma unsigned int exn_fcm = (EXN_FLASH_CONTROL_MODES_MAX-1); /* default to N/A */ unsigned int flashoutput = 0; unsigned int externalflashflags = 0; unsigned int flashcompensation = 0; /* libexif does not support flash info 168 yet. so we have to parse the debug data :-( */ buf[0] = '\0'; exif_get_mnote_tag(ed, 168, buf, sizeof(buf)); sscanf(buf, "(null): %u bytes unknown data: 303130%02X%*8s%02X%02X%02X", &length, &version, &externalflashflags, &exn_fcm, &flashoutput); sscanf(buf, "(null): %u bytes unknown data: 303130%02X%*8s%02X%02X%02X%02X", &length, &version, &externalflashflags, &exn_fcm, &flashoutput, &flashcompensation); exn_fcm = exn_fcm & EXN_FLASH_CONTROL_MODE_MASK; /* printf("%s - %d %d %d %d\n", buf, externalflashflags, exn_fcm, flashoutput, (signed char)flashcompensation); */ if ( (exn_fcm < EXN_FLASH_CONTROL_MODES_MAX) && ( ((length == 22) && (version == '3')) /* Nikon FlashInfo0103 */ || ((length == 22) && (version == '4')) /* Nikon FlashInfo0104 */ Loading Loading @@ -422,7 +443,7 @@ void exn_get_mnote_nikon_tags(ExifData *ed, unsigned int tag, char * buffer, uns /* show only if flash was used */ case 8: /* Flash Setting */ case 9: /* Flash Mode */ case 24: /* Flash exposure bracket value */ case 27: /* Flash exposure bracket value */ case 135: /* Flash used */ { if ( !(strcmp("Flash: Flash did not fire\n", buf) == 0) ) Loading @@ -433,6 +454,16 @@ void exn_get_mnote_nikon_tags(ExifData *ed, unsigned int tag, char * buffer, uns } break; case 18: /* FlashExposureComp */ { if ( !(strcmp("Flash: Flash did not fire\n", buf) == 0) ) { /* show only if flash was fired */ exn_get_mnote_nikon_18(ed, buffer, maxsize); } } break; case 34: { /* ActiveD-Lighting */ Loading Loading
src/exif_cfg.h +1 −1 Original line number Diff line number Diff line Loading @@ -72,8 +72,8 @@ const unsigned int Exif_makernote_nikon_tag_list [] = 6, 8, /* Flash Setting */ 9, /* Flash Mode */ 24, /* Flash exposure bracket value */ 135, /* Flash used */ 18, /* Flash Exposure Comp */ 168, /* Flash info: control mode */ 2, /* ISO. Has some more info than EXIF_TAG_ISO_SPEED_RATINGS but also fails on Lo.1 */ Loading
src/exif_nikon.c +33 −2 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ static void exn_get_prim_af_pt(unsigned int phasedetectaf, char * buffer, unsigned int maxsize); static void exn_get_flash_output(unsigned int flashoutput, char * buffer, unsigned int maxsize); static void exn_get_mnote_nikon_18(ExifData *ed, char * buffer, unsigned int maxsize); static void exn_get_mnote_nikon_34(ExifData *ed, char * buffer, unsigned int maxsize); static void exn_get_mnote_nikon_35(ExifData *ed, char * buffer, unsigned int maxsize); static void exn_get_mnote_nikon_168(ExifData *ed, char * buffer, unsigned int maxsize); Loading Loading @@ -199,6 +200,23 @@ static void exn_get_flash_output(unsigned int flashoutput, char * buffer, unsign /* get ActiveD-Lighting (18) info */ static void exn_get_mnote_nikon_18(ExifData *ed, char * buffer, unsigned int maxsize) { char buf[EXIF_STD_BUF_LEN]; float data = 0; buf[0] = '\0'; exif_get_mnote_tag(ed, 18, buf, sizeof(buf)); sscanf(buf, "Flash Exposure Compensation: %f", &data); /* libexif buggy here. fix conversion */ snprintf(buffer, maxsize, "FlashExposureCompensation: %.1f\n", ((float)((signed char)round(data*6.0))) / 6.0 ); } /* get ActiveD-Lighting (34) info */ static void exn_get_mnote_nikon_34(ExifData *ed, char * buffer, unsigned int maxsize) { Loading Loading @@ -321,13 +339,16 @@ static void exn_get_mnote_nikon_168(ExifData *ed, char * buffer, unsigned int ma unsigned int exn_fcm = (EXN_FLASH_CONTROL_MODES_MAX-1); /* default to N/A */ unsigned int flashoutput = 0; unsigned int externalflashflags = 0; unsigned int flashcompensation = 0; /* libexif does not support flash info 168 yet. so we have to parse the debug data :-( */ buf[0] = '\0'; exif_get_mnote_tag(ed, 168, buf, sizeof(buf)); sscanf(buf, "(null): %u bytes unknown data: 303130%02X%*8s%02X%02X%02X", &length, &version, &externalflashflags, &exn_fcm, &flashoutput); sscanf(buf, "(null): %u bytes unknown data: 303130%02X%*8s%02X%02X%02X%02X", &length, &version, &externalflashflags, &exn_fcm, &flashoutput, &flashcompensation); exn_fcm = exn_fcm & EXN_FLASH_CONTROL_MODE_MASK; /* printf("%s - %d %d %d %d\n", buf, externalflashflags, exn_fcm, flashoutput, (signed char)flashcompensation); */ if ( (exn_fcm < EXN_FLASH_CONTROL_MODES_MAX) && ( ((length == 22) && (version == '3')) /* Nikon FlashInfo0103 */ || ((length == 22) && (version == '4')) /* Nikon FlashInfo0104 */ Loading Loading @@ -422,7 +443,7 @@ void exn_get_mnote_nikon_tags(ExifData *ed, unsigned int tag, char * buffer, uns /* show only if flash was used */ case 8: /* Flash Setting */ case 9: /* Flash Mode */ case 24: /* Flash exposure bracket value */ case 27: /* Flash exposure bracket value */ case 135: /* Flash used */ { if ( !(strcmp("Flash: Flash did not fire\n", buf) == 0) ) Loading @@ -433,6 +454,16 @@ void exn_get_mnote_nikon_tags(ExifData *ed, unsigned int tag, char * buffer, uns } break; case 18: /* FlashExposureComp */ { if ( !(strcmp("Flash: Flash did not fire\n", buf) == 0) ) { /* show only if flash was fired */ exn_get_mnote_nikon_18(ed, buffer, maxsize); } } break; case 34: { /* ActiveD-Lighting */ Loading