Nikon D850 NEF - exiftool incorrect value for MakerNotes:PhotoShootingMenuBank

Started by cq, May 22, 2018, 02:22:03 AM

Previous topic - Next topic

cq

Hi,
I have been shooting with Nikon D850 Photo Shooting Bank C (and custom bank C too), yet exiftool v10.97 incorrectly reports 'A', like this:

Quote
Script started on Mon May 21 16:51:20 2018
bash-3.2$ Image-ExifTool-10.97/exiftool -ver
10.97
bash-3.2$ Image-ExifTool-10.97/exiftool -MakerNotes:PhotoShootingMenuBank -MakerNotes:CustomSettingsBank  D8S_4488.NEF

Photo Shooting Menu Bank        : A
Custom Settings Bank            : C

bash-3.2$ exit
exit
Script done on Mon May 21 16:51:43 2018

As I couldn't find any reports of this I am calling this a new bug (but happy to be corrected if I'm wrong - it could be the camera firmware, for example?) running on Mac OS X.
The example NEF I have is 40 MBytes so far too big to share publicly
(which would cause my web site problems if many download it) - if you wish a copy offer a private means to share it, please.





Hayo Baan

You could always share the file via e.g. wetransfer.com. But I think if you create a jpg test shot instead of a nef it should be postable here too (make it jpg small, and shoot an all black picture, e.g. With the lens cap on)
Hayo Baan – Photography
Web: www.hayobaan.nl

cq

OK will try that should have thought of it myself (I rarely shoot JPEG so it didn't occur to me), thank you.
Be a couple of hours before I can share it, though

cq

Hayo's idea (to use a JPEG) didn't quite work as planned - because the results of the NEF and JPEG differ!

Here is my run (on Mac OS X as before):
Quote
Script started on Tue May 22 11:35:02 2018
bash-3.2$ Image-ExifTool-10.97/exiftool -ver
10.97
bash-3.2$ exiftool -File:FileName -MakerNotes:PhotoShootingMenuBank -MakerNotes:CustomSettingsBank D8S_4497.*

======== D8S_4497.JPG
File Name                       : D8S_4497.JPG
Photo Shooting Menu Bank        : C
Custom Settings Bank            : C
======== D8S_4497.NEF
File Name                       : D8S_4497.NEF
Photo Shooting Menu Bank        : A
Custom Settings Bank            : C
    2 image files read
bash-3.2$ exit
exit
Script done on Tue May 22 11:35:39 2018

Just to confirm, I shot NEF+JPEG (which should therefore contain the same metadata) using
MakerNotes:PhotoShootingMenuBank=C
MakerNotes:CustomSettingsBank=C

The camera selected this in the menu - which correctly showed C+C for both banks, and also in the 'info' display which again showed C+C for both settings.

Whilst we cannot rule out operator error, I can't see what I did wrong if so, be gentle with me if it's a silly boo-boo!

The two files (20MB D8S_4497.NEF and 1MB D8S_4497.JPG) - have been emailed to Phil at his offer (see below)

Phil Harvey

If you can mail large files like that, you can send them to me directly (philharvey66 at gmail.com)

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

cq

Hi Phil,

You have email :-) let me know if it arrives OK (or not?).

Kind regards - and thanks for accepting the large files via email, appreciated.

Phil Harvey

I got the files, thanks.

Somehow it seems that the PhotoShootingMenuBank may be stored in a different location in the NEF.

What "info" display are you talking about that shows this information?

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

cq

The D850 has a button on the back called 'Info' - which when pressed gives a nice concise summary of all the significant shooting settings on the rear LCD, including which Photo and Custom banks are being used.

If you need anything to help corner this problem, I'm happy to help.
I'm a long time user of EXIFTOOL so would be happy to give a little back if I can.

Phil Harvey

OK.  Could you send me a full set of JPEG+NEF images with all the same settings between them (in manual exposure mode with the lens cap on), one for each setting A,B,C,D?

Thanks.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

cq

Phil,

You should receive 4 emails (1/4, 2/4, 3/4, and 4/4) each with a NEF+JPEG for the four banks A,B,C, & D.
(the first email 1/4 stripped the attachments, so ignore the 'empty' email)

Note, if you need any more - am happy to provide them - but have found using TAR I can shrink the files to around 20% of their original size. Stupidly I didn't check that before sending these 4 emails, doh!

Please say when you have all 4 emails with the 8 file safely please.


Phil Harvey

I got the files, thanks.

Here is the result of looking for a value that increments in all of the unknown information in these files (I use my own "multi_diff" utility to compare the outputs of exiftool -a -U -G1 -n FILE for the NEF files):

> multi_diff tmp/DSC*NEF* | grep Inc
Increments: [Nikon]         Mechanical Shutter Count        : 5056+1+1+1
Increments: [Nikon]         Shutter Count                   : 5073+1+1+1
Increments: [Nikon]         File Number                     : 5+1+1+1
Increments: [NikonCustom]   Nikon Custom Settings D850 0x0000: 16+1+1+1
Increments: [NikonCustom]   Custom Settings Bank            : 0+1+1+1
Increments: [Composite]     Base Name                       : DSC_0005+1+1+1


I get this for the JPG's:

> multi_diff tmp/DSC*JPG* | grep Inc
Increments: [Nikon]         Mechanical Shutter Count        : 5056+1+1+1
Increments: [Nikon]         Nikon Shot Info D850 0x0df9     : 209+1+1+1
Increments: [Nikon]         Nikon Shot Info D850 0x0e03     : 192+1+1+1
Increments: [Nikon]         Photo Shooting Menu Bank        : 0+1+1+1
Increments: [Nikon]         Shutter Count                   : 5073+1+1+1
Increments: [Nikon]         File Number                     : 5+1+1+1
Increments: [NikonCustom]   Nikon Custom Settings D850 0x0000: 16+1+1+1
Increments: [NikonCustom]   Custom Settings Bank            : 0+1+1+1
Increments: [Composite]     Base Name                       : DSC_0005+1+1+1


So unfortunately the information just doesn't seem to be available in the NEF image (the Custom Settings 0x0000 is where the CustomSettingsBank tag is stored).  Odd.  The only thing I can do is to disable the extraction of the PhotoShootingMenuBank tag for NEF's.  :(

- Phil

Edit:  I wonder if your camera is getting this information from the JPEG?  Does it show the proper bank if you delete the JPEG image?  (Don't just shoot a NEF-only image because that may store different metadata.)  Also, is it possible for this to be different from the CustomSettingsBank?  If not, maybe the camera is just using this?
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

cq

I'm unable to do anything else today (family), but will experiment tomorrow and share what I find (or nothing).

Can you share your multi_diff source, please?
(A search doesn't reveal any source I can find called that)
Then I can have a play trying different combinations, as that does look a nice way of viewing the changes.

I'd be surprised if the camera uses the JPEG when shooting NEF+JPEG but what do I know?
There are so many settings with odd interactions (even with the files you have), I opted for lossless-compressed ,12-bit, small (S-raw) NEF) whilst there are quite a few other combinations that may lead to different results.
I usually go for the normal/full-sized NEF and 14-bit lossless when shooting below ISO 400 (when the sensor hardware pre-amp gain changes).

Also it would be interesting to check NEF (only) against JPEG (only) against NEF+JPEG metadata wouldn't it?

Anything specific or else you'd like? I'll check this thread before I have my play tomorrow Europe-time.

Phil Harvey

I'm not sure how useful my multi_diff will be because I haven't written up any documentation for it, but I've attached it anyway.  This is the only documentation available (from the header of the file):

#
# File:         multi_diff
#
# Description:  compare multiple text files and print unique lines
#               (only if half of the files have the same line)
#
# Syntax:       multi_diff [OPTIONS] FILE1 FILE2 FILE3 ...
#
# Options:      -p PATTERN - bit pattern to search across files (int8u values only)
#               -u - look for values that increase or decrease monotonically
#               -d - look for a value that is different in all files
#
# Created:      2009/07/17 - P. Harvey
#
# Notes:        also looks for numbers that increment with each file (ShutterCount)
#


I can't think of anything else specific to check -- there are just too many possibilities.  The guideline is to look for anything that is interesting to you.  Maybe it would be interesting if PhotoShootingMenuBank and CustomSettingsBank could be set differently.  Also, maybe try this command since this value correlates with PhotoShootingMenuBank for the samples I have, but the numbers are peculiar so I think this may be coincidental (A=26, B=23, C=20, D=17):

exiftool -U -Nikon_ShotInfoD850_0x3412 FILE

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

cq

Thanks Phil.

I'm not conversant with Perl but at one time programmed for a living so will see how it goes, I appreciate the chnace to play with it anyway :-)

Aside, Nikon's own NEF raw processor (NX-D) doesn't display the shooting bank details, nor does Iliah Borg's FastRawViewer which is interesting.

Phil Harvey

Note that I was making some additions to my previous post while you responded (comment about checking Nikon_ShotInfoD850_0x3412).

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).