Browse Source

save flash state in the exif data

Martijn Braam 3 years ago
parent
commit
d41fb6745a
3 changed files with 15 additions and 1 deletions
  1. 1 0
      src/io_pipeline.c
  2. 12 1
      src/process_pipeline.c
  3. 2 0
      src/process_pipeline.h

+ 1 - 0
src/io_pipeline.c

@@ -322,6 +322,7 @@ update_process_pipeline()
                 .exposure = current_controls.exposure,
                 .has_auto_focus_continuous = info->has_auto_focus_continuous,
                 .has_auto_focus_start = info->has_auto_focus_start,
+                .flash_enabled = flash_enabled,
         };
         mp_process_pipeline_update_state(&pipeline_state);
 }

+ 12 - 1
src/process_pipeline.c

@@ -51,6 +51,8 @@ static int gain_max;
 static bool exposure_is_manual;
 static int exposure;
 
+static bool flash_enabled;
+
 static bool save_dng;
 
 static char capture_fname[255];
@@ -556,7 +558,16 @@ process_image_for_capture(const uint8_t *image, int count)
                         gain - 1, 0, gain_max, camera->iso_min, camera->iso_max);
                 TIFFSetField(tif, EXIFTAG_ISOSPEEDRATINGS, 1, &isospeed);
         }
-        TIFFSetField(tif, EXIFTAG_FLASH, 0);
+        if(!camera->has_flash){
+            // No flash function
+            TIFFSetField(tif, EXIFTAG_FLASH, 0x20);
+        } else if (flash_enabled) {
+            // Flash present and fired
+            TIFFSetField(tif, EXIFTAG_FLASH, 0x1);
+        } else {
+            // Flash present but not fired
+            TIFFSetField(tif, EXIFTAG_FLASH, 0x0);
+        }
 
         TIFFSetField(tif, EXIFTAG_DATETIMEORIGINAL, datetime);
         TIFFSetField(tif, EXIFTAG_DATETIMEDIGITIZED, datetime);

+ 2 - 0
src/process_pipeline.h

@@ -25,6 +25,8 @@ struct mp_process_pipeline_state {
         bool has_auto_focus_continuous;
         bool has_auto_focus_start;
 
+        bool flash_enabled;
+
         bool save_dng;
 };