supplierdeeply

CHDK on SD4000/IXUS 300 HS

  • 79 Replies
  • 6608 Views
Re: CHDK on SD4000/IXUS 300 HS
« Reply #40 on: 01 / September / 2017, 16:02:54 »
Advertisements
There you go. And it happens to me in Av. Don't know about the other modes.
I've played with this for a couple of hours now and I think I've isolated what causes the crash after going through many combinations of setting that work and others that crash. I'd forgotten how complicated the code for custom autoISO is. For example, it will work in P, AUTO, and Av modes but is disabled in Tv, M, and stitch modes.  It is also disabled if the flash is set in Auto mode but not if the flash is forced on or off (in the Canon UI).

However, some good news.  After much hacking of the autoiso.c code trying to isolate the problem, I've pretty much determined it's not an issue with custom autoISO.  It turns out to actually be a problem any time that CHDK tries to use a low ISO setting (apparently anything less than ISO125) with the flash forced on.  Custom autoISO trips over this when it tries to use a low ISO value.

To prove this out, go into the CHDK Enhanced Photo Operations menu and set Disable Overrides [ No ].  Then scroll down  and set  Override ISO [ * ] [ 80 ].  Exit <ALT>,  set the flash to On, and take a picture.  On my ixus300, it will crash 100% of the time this way.

The next question is why this causes an Assert in capt_seq.c ?  The Canon menu won't allow an ISO setting lower than 125 so I'm guessing the Canon code asserts if the flash is enabled and anything tries to use a value lower than that.  But that's just my working theory right now.

Ported :   A1200    SD940   G10    Powershot N    G16

Re: CHDK on SD4000/IXUS 300 HS
« Reply #41 on: 01 / September / 2017, 16:36:55 »
Interesting... Concerning Auto ISO, I already noticed some exposure issues with Min ISO set at 80. That was default. Then I raised it to 125, which is Canon native minimum, and everything was OK.
But how is this connected to flash? What in CHDK tries to select ISO below 125, if min. A-ISO is 125, and we don't use ISO override at all? Is there any code in CHDK related to flash power (I'm not seeing any flash options in CHDK menus)?
This could happen only if there is more than min. A-ISO and override ISO - something which tries to use lowest ISO with flash On.
Sometimes this really is the most natural thing to do. I was often annoyed by my Nikon DSLR for using Max Auto ISO with Flash On, instead of the cleanest base ISO. So I had to turn off Auto ISO, and set ISO 100. But now I find myself doing exactly the opposite: I want background and shadows to be brighter, and I let ISO jump to 1600.
On SD4000, I would use ISO 800 even with flash On, for people and event photos. This puts less stress on the battery as well, because it needs less flash power to achieve proper exposure. But for macro shooting, I would use base ISO with flash On.

But is there anything in CHDK which concerns the relationship between ISO and flash power? First, we have to determine what is trying to lower the ISO below 125. Then we have to determine CHDK Auto ISO behavior with Flash On. Canon's auto ISO operates differently with flash On, maximum value is 250 instead of 800.
« Last Edit: 01 / September / 2017, 16:44:16 by Robert1975 »

*

Offline reyalp

  • ******
  • 11592
Re: CHDK on SD4000/IXUS 300 HS
« Reply #42 on: 01 / September / 2017, 16:51:28 »
The next question is why this causes an Assert in capt_seq.c ?  The Canon menu won't allow an ISO setting lower than 125 so I'm guessing the Canon code asserts if the flash is enabled and anything tries to use a value lower than that.  But that's just my working theory right now.
Crashing when ISO override is set below factory values and flash enabled is something we've seen before: See CAM_MIN_ISO_OVERRIDE in camera.h and results for it in the forum.

You can use isoinc.lua to see what range of ISO overrides are effective: https://chdk.setepontos.com/index.php?topic=12165.msg127110#msg127110

If it's not effective significantly below the stock value, setting the limit is the obvious solution. If there is useful override that works when the flash is not enabled, then we either have to accept the crash, or come up with some special case.
Don't forget what the H stands for.

Re: CHDK on SD4000/IXUS 300 HS
« Reply #43 on: 01 / September / 2017, 17:35:44 »
Still, I am puzzled, because in my case ISO override is not enabled independently of Auto ISO, and A-ISO range is 125-800. With flash On, selected ISO is 800 which I prefer. So, what is trying to override that ISO with lower than factory minimum?

Personally, I would be happy if minimum ISO was limited to factory value. Or, if CHDK Auto ISO was disabled with flash On. I believe both solutions would prevent the crash. With second option, I would notice that selected ISO is 250 and then manually raised it to 800.

But, setting the lower limit to ISO 125 is the best solution in my opinion. It's faster in practice, because there would be no need to set ISO manually.


Re: CHDK on SD4000/IXUS 300 HS
« Reply #44 on: 01 / September / 2017, 17:37:00 »
Crashing when ISO override is set below factory values and flash enabled is something we've seen before: See CAM_MIN_ISO_OVERRIDE in camera.h and results for it in the forum. You can use isoinc.lua to see what range of ISO overrides are effective: https://chdk.setepontos.com/index.php?topic=12165.msg127110#msg127110 If it's not effective significantly below the stock value, setting the limit is the obvious solution. If there is useful override that works when the flash is not enabled, then we either have to accept the crash, or come up with some special case.
Thanks for that.  I'll take a look - sounds like it's not something I should try to fix in capt_seq.c

But how is this connected to flash?
The Canon code seems to make an additional check to ensure the ISO is not set below 125 when shooting with flash.  You'd have to ask a Canon software engineer why - how's your Japanese ?   :haha

Quote
What in CHDK tries to select ISO below 125, if min. A-ISO is 125, and we don't use ISO override at all?
There is nothing in the CHDK core that sets exposures automatically other than Custom Auto ISO (although you can set Tv, Av, Sv, ND filter values to fixed settings in the Enhanced Photo Operations menu).   More typically, scripts are used for creating customized exposure settings.

Quote
Is there any code in CHDK related to flash power (I'm not seeing any flash options in CHDK menus)?
link>
 CHDK User Manual : Manual Flash + Power

Quote
But is there anything in CHDK which concerns the relationship between ISO and flash power?
No.

So, what is trying to override that ISO with lower than factory minimum?
CHDK's Custom Auto ISO
« Last Edit: 01 / September / 2017, 17:39:54 by waterwingz »
Ported :   A1200    SD940   G10    Powershot N    G16

Re: CHDK on SD4000/IXUS 300 HS
« Reply #45 on: 01 / September / 2017, 17:43:05 »
But how is this connected to flash?
The Canon code seems to make an additional check to ensure the ISO is not set below 125 when shooting with flash.  You'd have to ask a Canon software engineer why - how's your Japanese ?   :haha


Well there's the root of the problem. I didn't know that...

Now I'm even more certain that the best solution is to limit ISO to factory value. ISO 80 wouldn't produce less noise, because it's "fake" and not on sensor, but it would produce longer exposures. However, this camera has decent ND filter. I don't think going below ISO 125 is beneficial on SD4000 in any way.

What do you think?

Re: CHDK on SD4000/IXUS 300 HS
« Reply #46 on: 01 / September / 2017, 17:45:04 »
So, what is trying to override that ISO with lower than factory minimum?
CHDK's Custom Auto ISO
[/quote]

Yes, but mine is set to min. 125.
If Canon's firmware checks min ISO how could it detect anything below 125?
Could there be anything else?

Re: CHDK on SD4000/IXUS 300 HS
« Reply #47 on: 01 / September / 2017, 18:15:17 »
Yes, but mine is set to min. 125. If Canon's firmware checks min ISO how could it detect anything below 125?
I believe there is a small rounding error when CHDK converts ISO125 to its internal APEX96 "real" ISO value.  I have to set the internal CHDK low limit (CAM_MIN_ISO_OVERRIDE) to 126 for the crashes to go away.  Using 125 does not do it.
Ported :   A1200    SD940   G10    Powershot N    G16


Re: CHDK on SD4000/IXUS 300 HS
« Reply #48 on: 01 / September / 2017, 18:58:41 »
I don't think going below ISO 125 is beneficial on SD4000 in any way.
I tested from ISO100 to ISO200 using reyalp's isoinc.lua script.

Below ISO125, nothing changes.  Once the script reaches the equivalent of ISO125 the Canon image histogram starts shifting.  So using values below ISO125 with CHDK does not actually change the image from what you get using ISO125.

I've updated today's patch file to include a CAM_MIN_ISO_OVERRIDE of 126 (per my previous post).
Ported :   A1200    SD940   G10    Powershot N    G16

Re: CHDK on SD4000/IXUS 300 HS
« Reply #49 on: 02 / September / 2017, 04:18:35 »
I don't think going below ISO 125 is beneficial on SD4000 in any way.
I tested from ISO100 to ISO200 using reyalp's isoinc.lua script.

Below ISO125, nothing changes.  Once the script reaches the equivalent of ISO125 the Canon image histogram starts shifting.  So using values below ISO125 with CHDK does not actually change the image from what you get using ISO125.

I've updated today's patch file to include a CAM_MIN_ISO_OVERRIDE of 126 (per my previous post).

But we can't do that, ISO 126 is noisier than ISO 125!

Just kidding... This is the best solution...

So, both patches will be included later today, or tomorrow?

This does it for me, it's all very fast, functional and all the main issues have been resolved.

 

Related Topics