APEX 96 tv timing documentation

  • 1 Replies
  • 102 Views
APEX 96 tv timing documentation
« on: 04 / August / 2018, 14:40:38 »
Advertisements
Hi all,

the documentation is reporting a simple log2 relationship between apex values and shutter time (see http://chdk.wikia.com/wiki/CHDK_scripting#set_tv96_direct):
"shutter time = 2 ^ (Tv96 / -96)"
This is nice, as we can easily halve the shutter time by adding 96.
However, the table below shows some slightly different values (human readability regarded roundings?), e.g:
384 "apex" is 1/15 second instead of 1/16
480 "apex" is 1/30 second instead of 1/32 ...and so forth.
If I set Tv96 using the set_tv96_direct method to 384, the camera also reports 1/15 seconds in the resulting image metadata.
So my question is: Is the table correct? Then, the formula above is not. What is the correct formula to convert between shutter time and apex value?

best
Martin
« Last Edit: 04 / August / 2018, 15:00:20 by derMart »

*

Offline reyalp

  • ******
  • 11514
Re: APEX 96 tv timing documentation
« Reply #1 on: 04 / August / 2018, 16:37:41 »
It's a convention going back to the film era to show the power of 2 values in more "normal" values, so 1/16 => 1/15, 1/128 => 1/125

I'd generally expect cameras to use the power of 2 values, since that's how APEX is defined (see http://dougkerr.net/Pumpkin/#APEX), but for normal manual shooting, the difference is irrelevant because you are generally limited to 1/3 or 1/4 stop increments.

I've generally assumed this the Canon firmware uses the proper APEX values, since single increments APEX96 works as expected, but I couldn't remember remember if I ever tested directly, so...

The actual microsecond value used by the camera can be obtained using the Canon firmware apex2us function. For historical reason, the script tv96_to_usec just uses the formula, so could theoretically differ.

Testing on elph130 shows the camera uses the same calculation, for 1 to 1/1000th, at least
Code: [Select]
=t='' for v=0,960,96 do t=t..string.format("%4d %6d %6d\n",v,tv96_to_usec(v),call_func_ptr(0xff29de84,v)) end return t
   0 1000000 1000000
  96 500000 500000
 192 250000 250000
 288 125000 125000
 384  62500  62500
 480  31250  31250
 576  15625  15625
 672   7813   7813
 768   3906   3906
 864   1953   1953
 960    977    977
Note the 0xff29de84 is specific to elph130, if you try this on another cameras, use that ports apex2us address from the funcs*.csv
Don't forget what the H stands for.

 

Related Topics