Discovering Nikon D610 FlashInfo0106/ShotInfo0232

Started by TorC, January 02, 2016, 09:15:51 PM

Previous topic - Next topic

TorC

#15
By TOC, I was hoping for links at the top of the page to the anchors already in the page for each camera to make it easy to A) know which cameras have at least some settings decoded and B) easy to get to the list of settings for each of those cameras.   More than that I understand would be more work than it's worth.

Your guess of:

0x07cf mask 0x07 - A3: FocusTrackingLockOn, 0x0 = Off, 0x1 = 1 (Short), 0x2 = 2, 0x3 = 3 (Normal), 0x4 = 4, 0x5 = 5 (Long)

is spot on.

Time to get the spreadsheet properly laid out.  Would a DSV like below be good?


$offset, $bitmask, $setting_menu_position, $setting_name, 0xNN, $option_name


Is there by chance an easy list for the D810 in particular and perhaps Nikon cameras in general of which settings are in which byte?
Now I see how the list is ordered - by byte_number.setting_within_byte.  That works.  Should go a lot easier now.

Do you by chance have a DSV of the D810 settings to work from?

I did note that D810 setting 2.3 AFPointBrightness is in my (U.S. English) camera and downloaded D810 manual as AF Point Illumination.

Phil Harvey

Quote from: TorC on January 07, 2016, 02:03:46 AM
By TOC, I was hoping for links at the top of the page to the anchors already in the page

Look at the list of links for the ShotInfo tag on the main Nikon page.

QuoteYour guess of:

0x07cf mask 0x07 - A3: FocusTrackingLockOn, 0x0 = Off, 0x1 = 1 (Short), 0x2 = 2, 0x3 = 3 (Normal), 0x4 = 4, 0x5 = 5 (Long)

is spot on.

Great.  You could maybe consult the D810 decoding for reference then.

QuoteTime to get the spreadsheet properly laid out.  Would a DSV like below be good?

Sure.

QuoteDo you by chance have a DSV of the D810 settings to work from?

No.  The format I work from is a Perl structure (see the source code).  ExifTool will output XML format (with the -listx option), but not CSV.

QuoteI did note that D810 setting 2.3 AFPointBrightness is in my (U.S. English) camera and downloaded D810 manual as AF Point Illumination.

Yes.  Nikon sometimes changes the names of the settings, but the tag names in ExifTool generally correspond to their original name (for the earliest model with the setting).

- 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 ($).

TorC

Looking just fine.  Could showtest sort filenames when displaying tags?  Right now with the workflow you gave me I end up with my test files all out of order, which makes it hard to keep track of which setting is on which line.  I made a (failed) try, but it's a bit of a challenge with zero knowledge of perl.

Phil Harvey

Very odd.  The files should already be in alphabetical order on Unix systems.  They were in the output I provided.  I could see this happening on Windows though.  To sort the result manually, change this line of showtest:

    my @lines = `$cmd`;

to this

    my @lines = sort `$cmd`;

- 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 ($).

TorC

#19
Well, I am most definitely not on windows and the output was definitely not in alphabetical order.  I'm using GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu) on Debian Jessie.

Actually, I've found that Linux systems will often feed files in some form of disk order which may or may not be alphabetical when not explicitly sorted.  I've seen files processed out of ASCII order before with the (dangerous) 'ls|while read' combination (or at least I seem to recall such).  Probably does provide a performance increase for cases where humans only care that the job gets done.

In any case, the change fixes the problem.  Thanks.

Edit to add:  After staying up too late, I've gotten through the Bs in the custom settings.  I also figured out the fine-tune Optimal Exposure (8.2-9.2 on both D610 and D810), which values should be safe to add to the D810.  Any notes like that I'll add with a sharp at the start of a field after all real settings on the line.  Specifically, it represents +/-1EV in 1/6th EV steps as a 4-bit twos complement signed integer.

Phil Harvey

Quote from: TorC on January 08, 2016, 04:34:51 AM
Actually, I've found that Linux systems will often feed files in some form of disk order which may or may not be alphabetical when not explicitly sorted.

Interesting.  I've never see this myself, but I mainly use OS X (FreeBSD).

QuoteEdit to add:  After staying up too late, I've gotten through the Bs in the custom settings.  I also figured out the fine-tune Optimal Exposure (8.2-9.2 on both D610 and D810), which values should be safe to add to the D810.  Any notes like that I'll add with a sharp at the start of a field after all real settings on the line.  Specifically, it represents +/-1EV in 1/6th EV steps as a 4-bit twos complement signed integer.

Excellent!  I appreciate all of the work you are doing.

- 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 ($).

TorC

If the setting is simply the decimal number in hex, do you need the values laid out?  For example, the analogue to the D801 20.3 SelfTimerShotCount is just a 4-bit unsigned number (and conveniently has a 0x0f mask).

I wrote out the Fine-tuneOptimalExposure, but that wants a bit of translation (print sign and add "/6 EV"), which I figure you need.

Phil Harvey

Quote from: TorC on January 08, 2016, 06:20:23 PM
If the setting is simply the decimal number in hex, do you need the values laid out?  For example, the analogue to the D801 20.3 SelfTimerShotCount is just a 4-bit unsigned number (and conveniently has a 0x0f mask).

No.  For numbers that aren't converted I don't need a conversion.  ExifTool will mask the byte.

QuoteI wrote out the Fine-tuneOptimalExposure, but that wants a bit of translation (print sign and add "/6 EV"), which I figure you need.

Yes.  If a math formula should be applied, just give the formula (eg. val/6 EV).

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 ($).

TorC

More specifically, in the case the formula should be printed to match the menu/manual.  The following is a 4-bit signed integer, caring only for the unmasked bits, including one with a 0xf0 mask.  Is this a case where I can give you something like "$val/6 EV"?  Or is exiftool unprepared for this particular case, and I can only do this if it is a uint?


0x07d6  Mask  0x0f  B5A  FineTuneOptMatrixMetering  0x0=0 (Off), 0x1=+1/6 EV, 0xf=-1/6 EV (binary -1), ...

Phil Harvey

This case is a bit tricky since it is signed and you may want the EV values to be formatting in a specific way.  In this case I would probably just do sprintf("%+.1f", ($val < 8 ? $val : $val - 16) / 6)), and not worry about displaying it as a fraction.  Here I have handled the negative values manually.

- 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 ($).

TorC

Actually, not so difficult because it is displayed as an unreduced fraction where the integer is the numerator.  The "/6 EV" can be treated as a string.  Perhaps then something like '0x0=0 (Off), sprintf("%+d/6 EV", ($val < 8 ? $val : $val - 16))', though I've probably mangled the syntax.

Phil Harvey

...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 ($).

TorC

Great.  I've gotten through the "C" settings.  Attached is the CSV of what I have so far.  Field 1 is a derived field I added to help keep track of where to find a setting in existing settings, and can be safely discarded.  Let me know if there are any problems with the way I am going about this.

Tor

Phil Harvey

Hi Tor,

I haven't gone through this in detail, so I may have some questions later, but this looks fantastic so far!

- 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 ($).

TorC

I've been busy with other things, but I'm thinking I might get back to this soon.  Fortunately I posted what I did, because in the intervening time I had a hard drive failure that destroyed everything I'd done on this.