Host-controlled silent shooting

Started by mhier, September 12, 2019, 10:32:19 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

mhier

Hi,

I would like to use the silent shooting mode introduced with ML on my 7D from gphoto2 to shoot a series of pictures with a Python script. I also need to make sure that the picture was actually taken - relying on a remote cable which signals half-pressed shutters without confirmation that the picture was taken is not sufficient. Can I do this somehow? I managed to trigger a silent picture with "set-config autofocusdrive=1" followed by "set-config autofocusdrive=0", but I don't know when this is ready and I cannot find the recorded picture with gphoto2 on the sdcard (which would allow to verify it actually has been taken).

The background is: I want to digitize Super 8 films with single picture transfer. My setup is already working quite well, but right now I am using my new EOS RP camera and its pseudo silent shooting mode (aka focus stacking). Since I have lots of films to digitize, I would prefer using my 7D instead, so my main camera is free for normal use again :-) Also the smaller pixels of the 7D might actually help a bit with better resolution. I have a lots of pictures per film, I don't want any of them to be missing or duplicate in the end, so a reliable confirmation that a picture has been taken is vital. Also using the shutter is not an option, since we are talking about something like a million of pictures I have to take in total...  :o

Thanks for any help!
Martin

Walter Schulz

Most likely gphoto2 cannot find silent pic because it is labeled *.DNG.
You can work around this problem by forcing silent.mo to write DNGs labeled as CR2 by changing some strings in silent.c source code and compiling a custom build. dfort wrote some - pretty easy to follow - tutorials how to build up a development environment.

AF-OFF

Quote from: mhier on September 12, 2019, 10:32:19 PM
I want to digitize Super 8 films with single picture transfer.
Martin

Alternatively You can also save silent pics as MLV file. If used with Intervalometer or maybe a lua script  this would result in one MLV raw movie file. see MLV App also.

mhier

Thanks for the replies.

Quote from: Walter Schulz on September 13, 2019, 10:56:37 AM
Most likely gphoto2 cannot find silent pic because it is labeled *.DNG.
You can work around this problem by forcing silent.mo to write DNGs labeled as CR2 by changing some strings in silent.c source code and compiling a custom build. dfort wrote some - pretty easy to follow - tutorials how to build up a development environment.
That could work. I would have to name the file following the usual Canon naming scheme, e.g. IMG_0001.CR2 etc. I think I can even work with a fixed file name, if I simply download the photo and then delete it from the card. I will checkout the source code now :-)

Quote from: AF-OFF on September 13, 2019, 07:18:58 PM
Alternatively You can also save silent pics as MLV file. If used with Intervalometer or maybe a lua script  this would result in one MLV raw movie file. see MLV App also.
Interesting idea, but I could not synchronise the intervalometer or lua script with my projector, or is there some trick to communicate with the outside world? Also, the MLV file would be way too big for any CF card: The long films have around 20000 images, in full-res this would be around 600 GB.  :o

mhier

Ok, I managed to hack ML to save the DNG file with a CR2 extension. Still the image doesn't show up on gphoto2. Only after rebooting the camera they are visible. It seems there is some internal book keeping of recently taken pictures which is not properly taken care of. Any ideas?

Btw: For normal pictures, gphoto2 can capture and download images directly without saving them to CF card. Would this somehow be possible even for silent pics (with hacking the ML firmware of course)? This would dramatically speed up things - saving the 32 MB DNG file to my CF card takes something like 3 seconds. This is way too long for my purpose... I know in principle C well enough for things like this, but I would need some hints where to start looking and if this is even possible at all...

a1ex

Indeed, there is a "catalog" of pictures, updated by Canon firmware as pictures are taken. ML doesn't touch it (at the time of writing). Figuring it out will require significant reverse engineering efforts, as the image capture code is not very simple.

Saving directly to USB is probably doable, wasn't explored, requires reverse engineering. One has to figure out how it works with gphoto2 (maybe with this or this), then mimic that behavior. There is a third drive configured in Canon firmware (C:) besides CF (A:) and SD (B:), that probably works for this purpose; I've never tried it.

Regarding speed - saving MLV is a lot faster. With uncompressed 14-bit DNG, most of the time is spent fixing the byte order required by the DNG spec (i.e. swapping every two bytes over the entire image, on a slow general-purpose CPU). With MLV, you offload that task to your PC, which is much faster. You also get the entire movie in a single file.

Of course, the fastest option is lossless DNG (ideally in video mode, aka full-res LiveView, with every frame triggered by half-shutter), but none of these features are working on 7D, and are probably not straightforward to implement.

mhier

Is there a tutorial how to enable those logging functions you mention? The posts you were linking didn't really explain how to do this, at least not in a way some newbie like me would understand :-)