Something has puzzled me for years now. If I look at the properties for a JPEG image from my camera, it keeps telling me that the Flash was settings were “Flash not fired; Compulsory flash mode” – even though the flash was off. I was sure Windows XP and Vista both gave this but when I looked at my fully patched versions the field was blank. [I’m also sure some extra properties have appeared on the details page as well – Maximum aperture and digital zoom ratio for example]
My recent poking round with EXIF data shows that on my pictures the field is set to 16. Great. What does 16 mean ? Only one thing for it. Off to http://www.exif.org/specifications.html and lets have a look.
This tag indicates the status of flash when the image was shot. Bit 0 indicates the flash firing status, bits 1 and 2 indicate the flash return status, bits 3 and 4 indicate the flash mode, bit 5 indicates whether the flash function is present, and bit 6 indicates “red eye” mode
Tag = 37385 (9209.H)
Type = SHORT
Count = 1
Values for bit 0 indicating whether the flash fired.
0b = Flash did not fire.
1b = Flash fired.
Values for bits 1 and 2 indicating the status of returned light.
00b = No strobe return detection function
01b = reserved
10b = Strobe return light not detected.
11b = Strobe return light detected.
Values for bits 3 and 4 indicating the camera’s flash mode.
00b = unknown
01b = Compulsory flash firing
10b = Compulsory flash suppression
11b = Auto mode
Values for bit 5 indicating the presence of a flash function.
0b = Flash function present
1b = No flash function
Values for bit 6 indicating the camera’s red-eye mode.
0b = No red-eye reduction mode or unknown
1b = Red-eye reduction supported
So 16 would be all bits except bit 4 set to zero. Bit 4=1 and Bit 3=0 “Compulsory flash suppression” – switched off. The other bits mean the flash was present, it didn’t fire and we didn’t have red-eye, or return detection. So what’s all this nonsense about Compulsory flash mode.
Lets read on the spec has a section on Resulting Flash tag values: here’s an extract
0000.H = Flash did not fire.
0001.H = Flash fired.
0005.H = Strobe return light not detected.
0007.H = Strobe return light detected.
0009.H = Flash fired, compulsory flash mode
000D.H = Flash fired, compulsory flash mode, return light not detected
000F.H = Flash fired, compulsory flash mode, return light detected
0010.H = Flash did not fire, compulsory flash mode
0018.H = Flash did not fire, auto mode
0019.H = Flash fired, auto mode
001D.H = Flash fired, auto mode, return light not detected
001F.H = Flash fired, auto mode, return light detected
Most match the information we have above but 0x0010 (16 decimal) doesn’t. That explanation belongs to 8 not 16. Oops. Or may it should say Flash did not fire, Compulsory flash Suppression mode. Interestingly those people who used this second table stay pretty true to the text in it.