Mirror lock-up trick for handheld shots (poor man IS)

Started by a1ex, October 20, 2012, 12:20:59 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

discocalculi

Quote from: ilguercio on October 21, 2012, 02:55:05 PM
There's Canon's proper MLU for that. This is for hand held shooting.

Yes, but as already noted, ML is superior the Canon mirror lock up since it only requires one click. With a delay of more than 1 seconds, it could actually become a replacer for the Canon function.

So I don't really understand why the function should be limited to hand held shooting only.


Francis

Working great on 5d2. It's awesome to see new photo-specific features. This and exposure lock are fantastic.

a1ex

For longer delays, use the self-timer option (2s or 10s) - only one click.

ilguercio

Canon EOS 6D, 60D, 50D.
Sigma 70-200 EX OS HSM, Sigma 70-200 Apo EX HSM, Samyang 14 2.8, Samyang 35 1.4, Samyang 85 1.4.
Proud supporter of Magic Lantern.

discocalculi

Quote from: a1ex on October 22, 2012, 03:44:33 PM
For longer delays, use the self-timer option (2s or 10s) - only one click.

That's true and with a rather annoying blinking light as a bonus.

I know.. I can do like Canon and put some scotch over it.



Did some more tests yesterday and was able to get decent handheld shots at 1/60 iso 6400 800mm f/8 evening/night photos from across the street. I was also able to get pretty decent 1/4 iso 100 50mm f/2 indoor shots without much shake.

Two examples:

Iso 3200, 1/100 f/8.0 800mm mirror lens, hand held.

http://imageshack.us/a/img26/2183/img1468acr.jpg


Iso 12800, 1/160, f/8.0 800mm mirror lens, hand held.

http://imageshack.us/a/img853/6108/img1395acr.jpg



a1ex

@ilguercio: try the 5D2 ifdef. If that doesn't work, we'll have to troubleshoot it.

Can you try to find out whether mlu_take_pic is called? (do some LED blinking or print some message from there).

1%

On 600D both 5dII method and "release" method work the same.

M-AV-TV - 2 button presses to take photo.
P - Usually 1 button press to take photo.


a1ex

It should always work with 1 button press to take the photo. However, the "mirror up" event may not always be detected correctly.

Here's some code to detect it:

1) enable cache hacks and add dm-spy.o to Makefile

2) patch debug.c as follows

--- a/src/debug.c Mon Oct 22 17:19:17 2012 +0300
+++ b/src/debug.c Mon Oct 22 18:50:17 2012 +0300
@@ -554,6 +554,10 @@

void run_test()
{
+    msleep(2000);
+    debug_intercept();
+    msleep(10000);
+    debug_intercept();
}

void run_in_separate_task(void (*priv)(void), int delta)
@@ -3583,7 +3587,7 @@

void spy_event(struct event * event)
{
-    if (get_draw_event())
+    if (1)
     {
         static int kev = 0;
         kev++;
@@ -3595,14 +3599,14 @@
             event->obj ? ((int)event->obj & 0xf0000000 ? (int)event->obj : *(int*)(event->obj + 4)) : 0,
             event->obj ? ((int)event->obj & 0xf0000000 ? (int)event->obj : *(int*)(event->obj + 8)) : 0,
             event->arg);
-       /* console_printf("Ev%d[%d]: p=%8x *o=%8x/%8x/%8x a=%8x\n",
+       DryosDebugMsg(0, 0, "Ev%d[%d]: p=%8x *o=%8x/%8x/%8x a=%8x\n",
             kev,
             event->type,
             event->param,
             event->obj ? ((int)event->obj & 0xf0000000 ? event->obj : *(uint32_t*)(event->obj)) : 0,
             event->obj ? ((int)event->obj & 0xf0000000 ? event->obj : *(uint32_t*)(event->obj + 4)) : 0,
             event->obj ? ((int)event->obj & 0xf0000000 ? event->obj : *(uint32_t*)(event->obj + 8)) : 0,
-            event->arg);*/
+            event->arg);
     }
}


3) enable MLU from Canon menu, run "don't click me", then, after logging message, press shutter once. Mirror should go up. Wait until the debug log gets saved.

4) In dm.log, you should see something about mirror, and some events containing something similar to 0x80xx1. This condition should match the event code you find:

((MEM(event->obj) & 0xFFFFF00F) == 0x80001) // OK on 5D3, 5D2, 550D, 600D, 500D, maybe others


On 500D, the "release" method seems to work perfect.

Edit: the latest code contains a fix for 5D2 with manual lenses, maybe it fixes some problems on the other cameras too.

1%

This is what happens in AV mode:

http://pastebin.com/nQPZyZwk

in P mode

Anit-shake disabled, only canon mirror lockup:


SendPipeEvent [0][0][10]
   mirror_up 2
bindReceiveNewTFTOLC
GUI_Control:97 0xc63628
Ev52[0]: p=      61 *o=   80081/       2/  c63618 a=       8

a1ex

Okay, the event is 80087.

Maybe changing the mask to 0xFFFFF001 will do the trick? I'm not sure what's the meaning of this number, but I smell a bit field.

1%

Thanks! Changing the mask makes it work in all modes.

discocalculi

This was rather surprising. More tests should be done before we can make any claims (Sigma image stabilizator, 2010-year old model)

http://imageshack.us/a/img585/8712/21963082.jpg

1%

That mirror adds a lot of shake. Also it probably takes care of anticipation issues/etc. Just like with shooting a gun.

engardeknave

Can someone briefly explain the point of this when liveview seems to do the same thing? I am definitely missing something.

1%

Most people don't shoot photos in LV. LV doesn't do the same thing either, it drops the mirror. Look through the VF, you'll see it.

engardeknave


1%


Shizuka

I think the low end cameras have the shutter and mirror coupled together. So XXD and above cameras don't need to drop the mirror to actuate the shutter.

nanomad

Well, the 1100D acts like the 600D and it sucks. And we have no MLU too  :(
EOS 1100D | EOS 650 (No, I didn't forget the D) | Ye Olde Canon EF Lenses ('87): 50 f/1.8 - 28 f/2.8 - 70-210 f/4 | EF-S 18-55 f/3.5-5.6 | Metz 36 AF-5

ilguercio

Nothing new with these changesets. I'm working on some stuff this afternoon, maybe i can find some time to test something tonight.
Canon EOS 6D, 60D, 50D.
Sigma 70-200 EX OS HSM, Sigma 70-200 Apo EX HSM, Samyang 14 2.8, Samyang 35 1.4, Samyang 85 1.4.
Proud supporter of Magic Lantern.

1%


ilguercio

Canon EOS 6D, 60D, 50D.
Sigma 70-200 EX OS HSM, Sigma 70-200 Apo EX HSM, Samyang 14 2.8, Samyang 35 1.4, Samyang 85 1.4.
Proud supporter of Magic Lantern.

discocalculi

Quote from: 1% on October 23, 2012, 04:42:55 PM
Do what I did and see what event it generates.

I also want to test some but noticed that dm.spy.o was already in the makefile, but cant seem to get the cache hack to work correctly. I included #cache_hacks.h in boot-hack.c (noticed there's a lack of defined HIJACK_CACHE_HACK) also noticed that there's some problems with the debug_intercept ()

Patching the stuff A1ex posted was ok though, but cant compile.. any hints would be great.




nanomad

Since the 1100D has no MLU Cfn I wonder if it possible to enable that feature with ML. Can anyone with ML trace the prop changes when switching MLU modes from canon menu?
EOS 1100D | EOS 650 (No, I didn't forget the D) | Ye Olde Canon EF Lenses ('87): 50 f/1.8 - 28 f/2.8 - 70-210 f/4 | EF-S 18-55 f/3.5-5.6 | Metz 36 AF-5

a1ex

5D3:
#define PROP_HTP 0x8000004a
#define PROP_MLU 0x80000047

I'm afraid most custom functions are camera-specific (you can find them on camera review sites).