Unknown values for AFPoint of newer Olympus cameras

Started by herb, November 07, 2022, 09:57:10 AM

Previous topic - Next topic

herb

Hello,

For testing my application I often download images from internet.
So I found also images taken by Olympus/OMDS cameras like E-M1iii, E-M1X or also OM-1.

For these types I have seen that tag: AFPoint needs some enhancements,
it has values like:
OM-1: "Unknown (8648)", "Unknown (8645)" or "Unknown (8524)"
E-M1X: "Unknown (305)"
E-M1iii: "Unknown (298)"

I own 2 Olympus cameras and the first was to see what values they use:
SP510UZ: This camera does not write tag AFPoint.
E-PL6: For all AF-settings (I used) tag AFPoint has always the same value 0,
        which means: Left or (n/a).
       For all my test-setting I found the correct values within other tags.

As said: Because I do not own one of these cameras I cannot look what they store for various AF-setting.
The goal of this post is now to find someone that owns such a camera and will do tests in order to see what these "Unknown" values are for.

I will try to get the AF-Point values for an E-M5iii (which is owned by a friend).


Thanks in advance to all
Best regards
herb

Phil Harvey

Hi Herb,

Yes.  Keeping up with the changing AFPoint metadata is difficult because there are so many variations and you often need the camera to figure it out.

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

herb

Hello,

in meantime I checked all my test-images taken by an Olympus OMD E-M10iii.
The value for tag AFPoints is always 0 = Left or (n/a).

But please be aware that I downloaded all these images. So I do not know who has taken it and which settings were really used.

Best regards
herb

W.P.

Hello,

the expression pseudo-code, I use this in my application-definition-file. It can be used directly on a VBScript-Engine with defined functions.

Explanation to code:
%Tagvalue as Decimalcode%
Use: %TagNr% or %TagNr,ArrayIndex% or %TagNr,StartArrayIndex, EndArrayIndex%
Variables:
%Model%: Space trimmed Model Definition
Operators:
\=Integer Division

Note: The Definitions are formatted in sections, which accessed by IFD-Definitions.

Used functions:
IIF: Inline If-Function
ValueExp: ValueExp(Tag or Term, SrcArray(), ExpressionArray(),NotFoundString)
Array: Define Array Values
Split: Define Array via splitting text with a delimiter
CStr: Convert value to string
Note: Strings are in german

This Code access the follow cameras:
E-1, E-30, E-3, E-5, E-620, E-600, rest as 3 AF-default values
121 Field P-AF from OM-D M1 Mark II, O-MD M1 Mark III, O-MD M5 Mark III
Note: On 121 AF-Fields. If AF is switched to small AF, the value are always undefined or 0. Tested with FT lens on adapter.

IIF("%Model%" = "E-3" Or "%Model%" = "E-30" Or "%Model%" = "E-5", ValueExp(%776,0% AND 63,Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,255),Split("Aus,OL,OM,OR,ML,MML,MM,MMR,MR,UL,UM,UR,OL,OM,OR,ML,MML,MM,MMR,MR,UL,UM,UR,Kein", ","), CStr(%776,0% AND 63) & ": Unbekanntes Feld"),IIF("%Model%" = "E-620" Or "%Model%" = "E-600", ValueExp(%776,0% AND 63,Array(0,2,5,6,7,10,13,15,16,17,18,19,21,63),Split("Aus,OM,MMR,MM,MML,UM,OM,MR,MMR,MM,MML,ML,UM,Kein", ","), CStr(%776,0% AND 63) & ": Unbekanntes Feld"),IIF("%Model%" = "E-M1MarkII" Or "%Model%" = "E-M1MarkIII" Or "%Model%" = "E-M5MarkIII" Or "%Model%" = "E-M1X",IIF((%776,0% AND 255)=121,"Kein P-AF","(" & ((%776,0% AND 255) Mod 11) & ";" & ((%776,0% AND 255) \ 11) & ")"),IIF("%Model%"="E-M1" Or "%Model%"="OM-1" Or "%Model%"="OM-5", CStr(%776,0% AND 255) & ": Feld nicht ausgewertet",ValueExp(%776,0% AND 63,Array(0,1,2,3,255),Split("L,M,R,M,Kein", ","), CStr(%776,0% AND 63) & ": Unbekanntes Feld")))))

Supplement:
OlyDebug(AF Section) <=Same section
DBGAFPointUseable
Expression=ValueExp((%776,0% \ 256) And 63, Array(0,1,2,4,8,9,10,16,17,32,33,34), Split("K-AF,P-AF,P-AF+K-AF,5x5,Kleines Feld,Kleines Feld,Kleines Feld,Alle Felder,Alle Felder,3x3,3x3,3x3", ","), "Nicht vorhanden!")

Note: The expression can be defined as Bit-Field, but there are exceptions. For Example 5x5 Group. For Integer Devision you can be use shift operators
Note 2: K-AF = Contrast AF(German: contrast=(K)ontrast, P-AF = Phase detection. It can be translate as sensor micro step AF.


For E-M1 Mark 1 (81 AF-Fields) and OMD-OM1 no Data available.
For first edition E-M1 it can be, it uses an 9x9 grid line by line from left till right. I have no samples to verify it.

With best Regards
Werner

PS: For more definitions, you can contact me on Email. For example: Flash or XZ-2 AF values (other SubIFD)

herb

Hello W.P.

Sorry, but it is totally unclear to me, what the goal is of your "Code".
Please give a better explanation or an example of usage.

Best regards
herb

StarGeek

Phil is currently away until next week, so this has to wait until he gets back.
* Did you read FAQ #3 and use the command listed there?
* Please use the Code button for exiftool code/output.
 
* Please include your OS, Exiftool version, and type of file you're processing (MP4, JPG, etc).

herb

Hello,

after reading the post of W.P. very often, I guess he/she gives a formula/piece of code for tag 0x0308 (=776 decimal).

I tried to make it more readable:
if "%Model%" = "E-3" Or "%Model%" = "E-30" Or "%Model%" = "E-5"
then
   ValueExp(%AFPoint% AND 63,Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,255),Split("Aus,OL,OM,OR,ML,MML,MM,MMR,MR,UL,UM,UR,OL,OM,OR,ML,MML,MM,MMR,MR,UL,UM,UR,Kein", ","), CStr(%AFPoint% AND 63) & ": Unbekanntes Feld"
else
   if "%Model%" = "E-620" Or "%Model%" = "E-600"
   then
      ValueExp(%AFPoint% AND 63,Array(0,2,5,6,7,10,13,15,16,17,18,19,21,63),Split("Aus,OM,MMR,MM,MML,UM,OM,MR,MMR,MM,MML,ML,UM,Kein", ","), CStr(%AFPoint% AND 63) & ": Unbekanntes Feld"
   else
      if "%Model%" = "E-M1MarkII" Or "%Model%" = "E-M1MarkIII" Or "%Model%" = "E-M5MarkIII" Or "%Model%" = "E-M1X"
      then
         if (%AFPoint% AND 255)=121
         then
            "Kein P-AF"
         else
            "(" & ((%AFPoint% AND 255) Mod 11) & ";" & ((%AFPoint% AND 255) \ 11) & ")"
      else
         if "%Model%"="E-M1" Or "%Model%"="OM-1" Or "%Model%"="OM-5"
         then
            CStr(%AFPoint% AND 255) & ": Feld nicht ausgewertet"
         else
            ValueExp(%AFPoint% AND 63,Array(0,1,2,3,255),Split("L,M,R,M,Kein", ","), CStr(%AFPoint% AND 63) & ": Unbekanntes Feld"
         endif
      endif
   endif
endif

Best regards
herb

herb

Hello,

today I tried to use the formula/piece of code given by W.P. with images of my EM5iii camera; but for me it has many restrictions/limitation for "newer models":
Quote121 Field P-AF from OM-D M1 Mark II, O-MD M1 Mark III, O-MD M5 Mark III
Note: On 121 AF-Fields. If AF is switched to small AF, the value are always undefined or 0. Tested with FT lens on adapter.
all given by w.P.itself.

I cannot decide whether it fully supports "older models" (E-1, E-30, E-3, E-5, E-620, E-600).
Maybe Phil can do this.

So for me it is still open what "newer models" write into tag "AFPoint".
 

Best regards
herb