Improving CHDK ND filter support

  • 108 Replies
  • 33154 Views
*

Offline reyalp

  • ******
  • 11592
Re: Improving CHDK ND filter support
« Reply #50 on: 25 / February / 2018, 00:18:57 »
Advertisements
Trying to sort out which cameras actually have what, I wrote a shell script (attached, expects to be run in the platform directory) which generates a csv (attached) with the following information:

GetUsableMinAv - on older cameras, this is only present on cameras with an actual Iris. However, it's also present on ixus160, which (IMHO) is almost certainly ND only. It's also present on some other questionable cases described below.

edit: ixus175 also has GetUsable*Av, does not have an iris. It returns the values with/without ND. This allows obtaining the ND value even if the canon firmware did not put the ND in.

task_IrisEvent, string IrisActuator.c - These generally appear to only be present on cameras with a real iris, though again there are some questions. Not present on ILC (EOS M) cameras.

task_Nd, string NdActuator.c - Generally only present on cameras with a real ND. (Some very old ND only ixus don't have the task: ixus40_sd300, ixus50_sd400, ixus700_sd500, ixus30_sd200)

CAM_HAS_ND_FILTER and CAM_HAS_IRIS_DIAPHRAGM -  The current CHDK settings.

If anyone has any of the cameras mentioned below and is willing to test, let me know.

The simplest test is probably to check whether the "ND" (or Av on cameras that might be really be ND only)  significantly changes depth of field. This is easiest to see at high zooms.

Questionable cases:

Some Ixus / SD cameras with task_IrisEvent and IrisActuator.
ixus1000_sd4500 (DryOS 45, 2010)
* Defined as ND only in CHDK
* Does not have task_Nd, NdActuator.c
* PutInNdFilter calls GetUsable*Av,
* Does not mention M, Tv, Av in Canon manual
* Canon manual includes aperture specs: Type blade (x2); f/number f/3.4-f/7.1(W), f/5.6-9.0 (T). Real ND only cameras around this time list different specs, e.g. SD1400 doesn't have a spec, A3300 says "circular together with ND filter"
* ReloadNdFilterAdjustment is noop

ixus200_sd980 (DryOS 39, 2009) - confirmed iris only
* Defined as ND + Iris in CHDK
* Does not have task_Nd, NdActuator.c
* PutInNdFilter calls GetUsable*Av,
* Does not mention M, Tv, Av in Canon manual
* No aperture type spec in Canon manual
* ReloadNdFilterAdjustment is noop

ixus310_elph500hs (DryOS 47, 2011), ixus300_sd4000 (DryOS 43, 2010)
* Defined as ND + Iris in CHDK
* Has task_Nd, NdActuator.c, GetUsable*Av
* Canon manual describes Av and Tv modes (but not M), doesn't mention ND.
* PutInNdFilter calls a function that references NdActuator.c
* ixus310 Canon manual aperture spec Type "Iris used together with ND filter", f/2.0(W)-f/8.0(T), f/5.8-f/8.0(W)
* ixus300 No aperture type spec in Canon manual
* ReloadNdFilterAdjustment appears to have ND style code (both ixus300 and ixus310)

Other oddities
SX400IS (DryOS 55, 2014)
* Defined as ND only in CHDK
* Does not have task_Nd, NdActuator.c
* Has task_IrisEvent and IrisActuator.c
* Does not have M, Tv, Av modes
* PutInNdFilter doesn't obviously call GetUsable*
* NOTE: Related SX410IS was shown to have a real aperture, despite having no Av/Tv (https://chdk.setepontos.com/index.php?topic=12948.msg129671#msg129671) but PutInNdFilter code is different.
* No aperture type spec in Canon manual

TX1 (VxWorks 2005) - confirmed iris only
* Defined as Iris + ND in CHDK
* Has GetUsable* (which on cameras this old appears to only be present in real iris cams)
* Canon manual doesn't mention M, Av, Tv or ND.
* No aperture type spec in Canon manual
* ReloadNdFilterAdjustment is noop

Some cameras defined in CHDK as  iris-only, but have the task_Nd and NdActuator.c
A650, SX1, SX10, SX20
I don't see references to an ND filter in the manuals of any of them. It isn't immediately obvious to me what the PutInNdFilter code on these cameras does, it's not the same as the later "hidden" ND cams that obviously manipulate the iris.


Edit:
Added Canon manual "aperture type" specs.

Edit:
An additional characteristic of cameras without an ND is "ReloadNdFilterAdjustment" eventproc is noop (either a return, return 0, or call to similar). The eventproc appears to exist on most iris-only cams, and is part of the jumptable interface. The ND value appears to obtainable through this function on ND cameras, more on this later.

The corresponding ReloadIrisAdjustment appears to have code even on ND only cameras.
« Last Edit: 07 / July / 2018, 21:01:12 by reyalp »
Don't forget what the H stands for.

*

Offline reyalp

  • ******
  • 11592
Re: Improving CHDK ND filter support
« Reply #51 on: 25 / February / 2018, 18:07:47 »
The following are former "hidden ND" cameras I intend to remove CAM_HAS_ND_FILTER from. All have the Av code and do not have the ND code, and have an adjustable aperture in the Canon firmware. I've verified that PutInNdFilter actually calls aperture related functions on most.

sx170is
sx220hs
sx230hs
sx240hs
sx260hs
sx280hs
sx40hs
sx50hs
sx510hs
sx60hs

On the other ambiguous cases:
IMO it's unlikely that many (if any) actually have both ND and iris.

SX410 makes it clear that Canon has sometimes used a real iris in cameras that do not have manual control or an Av mode.

Canon also made at least one camera (IXUS980/SD990) which expose an "aperture" control the UI that actually controls an ND. This camera has an M mode, but not Av/Tv.

Either of the above could explain some of the ambiguous cases.
Don't forget what the H stands for.

*

Offline reyalp

  • ******
  • 11592
Re: Improving CHDK ND filter support
« Reply #52 on: 10 / May / 2018, 01:07:01 »
The following are former "hidden ND" cameras I intend to remove CAM_HAS_ND_FILTER from.
I finally checked this in, trunk r5014.

I would still be interested in any reports on the questionable cases posted earlier.
Don't forget what the H stands for.

*

Offline koshy

  • *****
  • 799
Re: Improving CHDK ND filter support
« Reply #53 on: 18 / May / 2018, 18:12:28 »
I would still be interested in any reports on the questionable cases posted earlier.

I haven't been around in a long time but saw this by chance today.
Of the cameras you mention there I still have ixus1000, IXUS200, TX1, SX1, SX10, SX20.
Let me know what you'd like to get done with them. I'll be away until Tuesday though.
Generally please send me a copy of that post by PM, or just let me know to come back here.


*

Offline reyalp

  • ******
  • 11592
Re: Improving CHDK ND filter support
« Reply #54 on: 19 / May / 2018, 20:46:36 »
I haven't been around in a long time but saw this by chance today.
Of the cameras you mention there I still have ixus1000, IXUS200, TX1, SX1, SX10, SX20.
Let me know what you'd like to get done with them. I'll be away until Tuesday though.
Generally please send me a copy of that post by PM, or just let me know to come back here.
Hi @koshy, thanks for volunteering your camera collection again :D

The goal is to determine which cameras physically have an ND and/or adjustable aperture.

I think the most reliable way to do this is to check the effect on depth of field. This will be most obvious with max zoom and a scene with some depth, like in this post: https://chdk.setepontos.com/index.php?topic=13228.msg135733#msg135733

For ixus1000, ixus200 and tx1, I'd suggest:

Using chdkptp and current trunk autobuilds
set zoom to max optical, and focus with Canon AF lock on the camera
rs -nd=out -av=3
rs -nd=in -av=3

If the exposure is too different to tell what's going on, you can use -tv to set the shutter speed on one or both shots. If there's really an ND it should be about 3 stops different.

ixus200 and tx1 are also defined to have an iris. You can test this by doing several shots over the available aperture range.

Get available AV range
Code: [Select]
!local minav,maxav=con:execwait([[return get_min_av96(),get_max_av96()]]) printf('%0.1f %0.1f\n',exp.av96_to_f(minav),exp.av96_to_f(maxav))
Shot min, something in between and max. E.g if the above prints 3.3 10.0
Code: [Select]
rs -av=3.3
rs -av=6
rs -av=10

Put the images in a zip and upload them somewhere. You can put the camera name and setting in the rs command to keep track, like
rs -av=3.3 ixus200_f3.3

If you let me know which firmware version your ixus1000 has, I can upload a test build with AV control enabled so we can test that as well.

I'm not sure it's worth doing anything with your SX cams, I'm fairly sure they don't have an ND.
Don't forget what the H stands for.

*

Offline koshy

  • *****
  • 799
Re: Improving CHDK ND filter support
« Reply #55 on: 31 / May / 2018, 12:23:14 »
Ixus 200: Has an iris, does not react to ND in/out

Code: [Select]
> !local minav,maxav=con:execwait([[return get_min_av96(),get_max_av96()]]) printf('%0.1f %0.1f\n',exp.av96_to_f(minav),exp.av96_to_f(maxav))6.1 33.2
> rs -av=6.1
> rs -av=8.0
> rs -av=11.0
> rs -av=22.0
> rs -av=33.2
> rs -nd=out -av=6.1
> rs -nd=in -av=6.1
https://nofile.io/f/VUsbZzzS2p7/IXUS200.7z

UPDATE: It didn't react to ND as that is aperture based and the -av setting overwrote it.
Code: [Select]
rs -nd=out -av=5.7
rs -nd=in -av=5.7
rs -nd=out
rs -nd=in
https://nofile.io/f/NcsqS0B9W7F/ixus200_2.7z
« Last Edit: 31 / May / 2018, 13:50:12 by koshy »

*

Offline koshy

  • *****
  • 799
Re: Improving CHDK ND filter support
« Reply #56 on: 31 / May / 2018, 13:39:15 »
TX1: Has an iris, did react to ND in/out in the same sense as IXUS 200
Code: [Select]
> !local minav,maxav=con:execwait([[return get_min_av96(),get_max_av96()]]) printf('%0.1f %0.1f\n',exp.av96_to_f(minav),exp.av96_to_f(maxav))
5.7 14.7

> rs -av=5.7
> rs -av=8.0
> rs -av=11.0
> rs -av=14.7
> rs -av=14.7 -nd=in
> rs -nd=out
> rs -nd=in
https://nofile.io/f/Q5WzTm4dGg6/tx1.7z
« Last Edit: 31 / May / 2018, 13:50:51 by koshy »

*

Offline koshy

  • *****
  • 799
Re: Improving CHDK ND filter support
« Reply #57 on: 31 / May / 2018, 15:32:34 »
IXUS 1000 crashes with current trunk build, that will need more attention elsewhere. I used ixus1000_sd4500-100d-1.5.0-5018-full. "Crashes" means that it locks up on pressing the power button without showing anything and no light. SD card removal does not cure that. Battery out/in is needed. Stable ixus1000_sd4500-100d-1.4.1-5012-full booted and was used to retreive attached ROMLOG
« Last Edit: 31 / May / 2018, 15:34:07 by koshy »


*

Offline koshy

  • *****
  • 799
Re: Improving CHDK ND filter support
« Reply #58 on: 31 / May / 2018, 15:45:04 »
I take it that the fact that the reported aperture range does vary depending on the current zoom setting is known.
Along with the weirdness of the range in f-stops narrowing...

Code: [Select]
TX1 zoomed out
> !local minav,maxav=con:execwait([[return get_min_av96(),get_max_av96()]]) printf('%0.1f %0.1f\n',exp.av96_to_f(minav),exp.av96_to_f(maxav))
3.6 13.5
TX1 zoomed in
> !local minav,maxav=con:execwait([[return get_min_av96(),get_max_av96()]]) printf('%0.1f %0.1f\n',exp.av96_to_f(minav),exp.av96_to_f(maxav))
5.7 14.7
« Last Edit: 31 / May / 2018, 15:48:02 by koshy »

*

Offline srsa_4c

  • ******
  • 3728
Re: Improving CHDK ND filter support
« Reply #59 on: 31 / May / 2018, 16:03:41 »
IXUS 1000 crashes with current trunk build, that will need more attention elsewhere. I used ixus1000_sd4500-100d-1.5.0-5018-full. "Crashes" means that it locks up on pressing the power button without showing anything and no light. SD card removal does not cure that. Battery out/in is needed. Stable ixus1000_sd4500-100d-1.4.1-5012-full booted and was used to retreive attached ROMLOG
Sorry about that, I'm afraid I'm the one to blame (changeset 4341).
Are you available for testing on this cam? If so, please post a reminder in the Ixus1000 porting thread, and I'll try to repair what I broke.

 

Related Topics