Half-shutter triggers for raw recording

#819 Open

Bitbucket cannot automatically merge this request.

The commits that make up this pull request have been removed.

Bitbucket cannot automatically merge this request due to conflicts.

Review the conflicts on the Overview tab. You can then either decline the request or merge it manually on your local system using the following commands:

hg update 7a3b5fa3f4c6
# Note: This will create a new head!
hg merge 7441ed4fbe0f
hg commit -m 'Merged in rec-trigger (pull request #819)'
  1. Alex

This is a continuation of pre-recording, as suggested by @mk11174 in pull request #728. I think I've found a way that would cover a wide range of uses:

  • start recording without the additional delay (required for creating the video file, setting up the raw backend, allocating memory etc)
  • start recording with an additional remote
  • group short bursts of action into a single clip
  • interface with external triggers (using the half-shutter signals)
  • interface with Lua scripts (using half-shutter - not tested, may require merging with lua_fix)
  • interfacing with intervalometer or motion detection (not implemented, but very easy after this change)

The half-shutter triggers can be used as standalone, or alongside with pre-recording. Internally, they use the pre-recording backend to pause and resume the video (therefore skipping the frames that were not triggered).

The post-recording feature suggested by @mk11174 can be achieved in the "Half-shutter hold" mode, by holding the half-shutter as long as needed.

In all cases, you still have to press the usual REC button to start/stop a clip. Then, half-shutter (in the 3 different modes) should be used to start/pause recording.

The feature might be useful for the film scanning project from here as well: http://www.magiclantern.fm/forum/index.php?topic=19005

Test build available on http://builds.magiclantern.fm/experiments.html .

Comments (13)

  1. Daniel Fort

    I'm a little late to the party. It looks like this has been merged with the crop_rec branch so I'm using a crop_rec test build. I can think of so many uses for this but thought I'd start out with the note on the film scanning project where the EOSM captures one frame at a time using AUDIO_REMOTE_SHOT.

    I started out setting the Pre-record for 1 second and the Reg trigger to Half-shut:1 frame. Every half-shutter recorded a second instead of just 1 frame.

    Ok--don't really need pre-record for this so I turned that off and now I'm getting 2 frames per half-shutter press. Not sure if I'm doing something wrong but it looks like all the settings are telling me that it should record only 1 frame.

    We'd like to use an EOSM on the film scanner but it doesn't have a wired remote so I tried Audio RemoteShot. It works to get the camera into record mode but when trying to shoot a single frame it returns an "Already recording" error on the screen.

  2. Daniel Fort

    The option to record 1 frame at a time was really a cool feature. Looks like commit fc4f20b did away with that. Is there a possibility of getting 1-frame-at-a-time recording to work properly? Yeah, the silent module can do this but it doesn't have all the goodies that are in mlv_lite.

      1. Daniel Fort

        What's wrong with silent module or with this rec-trigger module? The silent module is OK but you can't change the image size, aspect ratio and can you do the lossless compression with it?

        Discovered something else with this pull request. I'm getting a "Data corruption at slot 20" message while the frame number increments on the LiveView.


        There's also some Canon messages going on that are conflicting with the ML information. (This is on the EOSM)

        1. Alex author

          Since you asked about the option to record 1 frame, I thought it's obvious that we are talking about that.

          1. Daniel Fort

            Oh, right. What's wrong with the option to record 1 frame? Commit fc4f20b removed that option, didn't it? Was it because I reported that it saved 2 frames instead of 1?

            1. Alex author

              It's not removed, check the help. It was just renamed, because you found it confusing...

              1. Daniel Fort

                Ok--took me a while but got it working, 1-frame at a time, I think. Will have to do further testing. So the counter is counting in 1/10th of second instead of in frames? On the EOSM I need to do 3 half-shutter presses for the counter to increment to 1, three more to get to 2, etc. ?

                  1. Daniel Fort

                    How about timecode? HH:MM:SS.FF The frame count goes from 00 to fps - 1. That way every half-shutter press will increment the frame field.

                    I haven't played around with it yet but this is the code you are using for the time display, right?

                    int t = ((frame_count-1) * 1000 * 10) / fps;
                    snprintf(buffer, sizeof(buffer), "%02d:%02d.%d", t/10/60, (t/10)%60, t % 10);
                    1. Daniel Fort

                      Submitted pull request #823 to change display from showing fractional seconds to frames. This should help when shooting one-frame-at-a-time because you can see the counter increment on every frame instead of every tenth second.

  3. Michal Powalko

    Hi there - very nice development :) I would like to add some points:

    1) Would it be possible to adjust the module name shown in ML menu to differentiate between MLV 1.1 and MLV 2.0 (e.g. "Raw video MLV 1.1")


    2) Would it make sens to change the bar colors on the top right (Daniel's Fort picture):

    • Prerecording ongoing: Use Yellow/Orange instead of Blue
    • Recording: Use Red instead of Yellow/Green --> this should not indicate the buffer state, but the process of recording

    3) Is it possible to add timecode during the recording --> "00:00" is not providing much information

    4) Is it an idea to make consequent naming for "REC key" from Movie menu and "Rec trigger" in MLV_1.1 (e.g. big "REC" letters)


    5) Pleas add the posibility to use "Motion Detection" as "Rec trigger"...

    Best regards and thx for developing this module :)

    Michal Powalko