Danne's crop_rec_4k experiments for EOS M

Started by Danne, December 03, 2018, 06:10:17 PM

Previous topic - Next topic

1 Member and 2 Guests are viewing this topic.

kuchka94

have few questions.
1. crop mode 14 bit 1736x976 30 fps - on the top some transparent/pink bar + on highlights color flicker. is it real to fix or why this happens?

2. where is 5k(3.5k) anamorphic mode 24/25 fps? can't find=( only 12-18 fps

3. i bought sandisk extreme pro 95mb 256gb card, as a lot of people said that this is the best solution. yep, card is pretty good, works better in a lot of real time fps modes, then my samsung evo microsd+adapter.
BUT main reason was slow mo modes. all slow mo modes work the same and show me only max card speed 45-46 mb. while real time fps show 50-57mb.
1736x976 slow mo 46fps = 5 seconds only + some dropped frames.
can't understand why slow mo modes decrease card speed more than 10mb/s

thanks for any thoughts

anykill


2blackbar

Danne i have a question about finding place in ML code to adjust crop being shfted after video recording ends in 2.5k mode...
I have my addresses set so it doesnt vignette in 1920x1080 in 2.5k mode and theyre :
            case CROP_PRESET_2K_EOSM:
  cmos_new[5] = 0x300;             /* vertical (first|last) */
              cmos_new[7] = 0x2a9;    /* pink highlights without this */
                break;


And skipping for 2K mode :
        case CROP_PRESET_2K_EOSM:
            /* set ratio preset */
            if (ratios == 0x1)
            {
                skip_left       = 36;
                skip_right      = 36;
                skip_top        = 23;
                skip_bottom     = 23;
            }
            if (ratios == 0x2)
            {
                skip_left       = 36;
                skip_right      = 36;
                skip_top        = 14;
                skip_bottom     = 14;
            }
            if (ratios == 0x3)
            {
                skip_left       = 197;
                skip_right      = 197;
                skip_top        = 106;
                skip_bottom     = 106;
            }
            break;
           


Is this the only place that CMOS framing addresses for 2.5k mode are set ?
Im asking because when i set everything in ML menu to be in 1920x1080 and 16:9 aspect ratio (from raw video menu) then eveyrthing is fine and framing is correct for CCTV lens, looks like this :

When recording stops then liveview refreshes as alaways but it gets shifted and next recording is like this :

Its shifted slightly and vignetting is visible on left side cause its small CCTV lens that fits perfectly into 1920x1080 mode in 2.5k preset, so now to fix this what i have to do is go to ML menu, then turn off raw video and turn it on right away( just press SET twice) and leave ML menu, then liveveiew refreshes itself and now is correct again without vignette, i have to do it everytime i record new MLV clip but i would prefere to find a cause for this.
Do you know where liveview gets refreshed and shifted after recording ? I cant figure out how to make it refresh with correct values that i set myself so there is no vignetting and i dont have to refresh liveview with disabling/enabling raw video in ML menu.

Danne

I can´t reproduce here. But there could be some setting you use that I don´t. Are you setting resolution to 1920x1080 in raw menu. Maybe that is causing it, idk.
I tested your changes. Just shortly. Cannot say much atm but note that black level readings will take a hit with 16:9 mode because you alter skip offsets. What happens is raw.c(back end) will miss autodetection of black level reading. Look for this part in raw.c:
/* returns 1 on success, 0 on failure */
static int autodetect_black_level(int* black_mean, int* black_stdev_x100)
{
    //~ static int k = 0;
    //~ bmp_printf(FONT_MED, 250, 50, "black refresh: %d ", k++);
   
    /* also handle black level for dual ISO */
    int mean1 = 0;
    int stdev1 = 0;
    int mean2 = 0;
    int stdev2 = 0;
     
    if ((raw_info.active_area.x1 > 50) && (shamem_read(0xC0f0b13c) != 0xd) && (shamem_read(0xC0f0b13c) != 0x11) &&
(shamem_read(0xC0f0b13c) != 0xe) && (shamem_read(0xC0f0b13c) != 0xd) && (shamem_read(0xC0f06804) != 0x5a70298) &&
(shamem_read(0xC0f0b13c) != 0xb) && (shamem_read(0xc0f0713c) != 0x456) && (shamem_read(0xC0f06804) != 0x4550298) &&
(shamem_read(0xC0f06804) != 0x93a011b) && (shamem_read(0xC0f06804) != 0x8d6011b)) /* use the left black bar for black calibration, shamem exception anamorphic and high speed frame rates crop rec.c */
    {
        autodetect_black_level_calc(
            16, raw_info.active_area.x1 - 16,
            raw_info.active_area.y1 + 20, raw_info.active_area.y2 - 20,
            3, 16,
            &mean1, &stdev1
        );
        autodetect_black_level_calc(
            16, raw_info.active_area.x1 - 16,
            raw_info.active_area.y1 + 22, raw_info.active_area.y2 - 20,
            3, 16,
            &mean2, &stdev2
        );
       
        /* for dual iso: increase tolerance of the cleaner exposure (there is interference from the noisier one) */
        int ref_stdev = MAX(stdev1, stdev2);
       
        if (!black_level_check_left(mean1, ref_stdev, raw_info.active_area.y1 + 20, raw_info.active_area.y2 - 20))
        {
            return 0;
        }

        if (!black_level_check_left(mean2, ref_stdev, raw_info.active_area.y1 + 22, raw_info.active_area.y2 - 20))
        {
            return 0;
        }
    }
    else /* use the top black bar for black calibration */
    {
        autodetect_black_level_calc(
            raw_info.active_area.x1 + 20, raw_info.active_area.x2 - 20,
            4, raw_info.active_area.y1 - 4,
            16, 4,
            &mean1, &stdev1
        );
        autodetect_black_level_calc(
            raw_info.active_area.x1 + 20, raw_info.active_area.x2 - 20,
            6, raw_info.active_area.y1 - 4,
            16, 4,
            &mean2, &stdev2
        );
       
        /* todo: consistency check */
    }

I do a lot of shamem_read exceptions. It´s not good lokking but it gets the job done for a few presets I tweaked.

By the way. Did you test 2.5k 1:1 centered preset?

Oh, and one more thing. I encountered a few pink frames in 2.5k mode so changed a bit in regs. Hopefully fixed. New build uploaded.

EDIT: Issue reproduced. It´s related to resolution changed to 1980x1080 in raw video menu. Must be a conflict with crop_rec changes. I can take a look. I never really built my presets to be modified in raw video. Always set to max. Resolution set in crop_rec statically instead but not working for you in this case.
Seems we need to refresh hooks after each recording has stopped.

EDIT:
Uploaded a new version again. Seems to fix 2k stay in center when reducing to 1920x1080. Not working for 3k but also not high priority. Stay with static crop rec resolutions otherwise and we´re fine.

EDIT:
If you want to dig into cmos update routines here´s a snippet from crop_rec.c:

static int patch_active = 0;

static void update_patch()
{
   
    if (CROP_PRESET_MENU)
    {
        /* update preset */
        crop_preset = CROP_PRESET_MENU;
       
        /* install our hooks, if we haven't already do so */
        if (!patch_active)
        {
            patch_hook_function(CMOS_WRITE, MEM_CMOS_WRITE, &cmos_hook, "crop_rec: CMOS[1,2,6] parameters hook");
            patch_hook_function(ADTG_WRITE, MEM_ADTG_WRITE, &adtg_hook, "crop_rec: ADTG[8000,8806] parameters hook");
            if (ENGIO_WRITE)
            {
                patch_hook_function(ENGIO_WRITE, MEM_ENGIO_WRITE, engio_write_hook, "crop_rec: video timers hook");
            }
           
            patch_active = 1;
        }
    }
    else
    {
        /* undo active patches, if any */
        if (patch_active)
        {
            unpatch_memory(CMOS_WRITE);
            unpatch_memory(ADTG_WRITE);
            if (ENGIO_WRITE)
            {
                unpatch_memory(ENGIO_WRITE);
            }
            patch_active = 0;
            crop_preset = 0;
        }
    }
}

/* enable patch when switching LiveView (not in the middle of LiveView) */
/* otherwise you will end up with a halfway configured video mode that looks weird */
PROP_HANDLER(PROP_LV_ACTION)
{
    update_patch();
}

/* also try when switching zoom modes */
PROP_HANDLER(PROP_LV_DISPSIZE)
{
    update_patch();
}

2blackbar

Works Great now, perfectly fits and stays , thanks a lot , it was really bugging me and thank You for explaining changes, its valuable info for me.
I skipped from all sides to avoid offcenter issues in future, so i tried to make everything even from opposite sides, is it better for example to skip 16 from left side only instead of 8 from left and right ? cAuse from what i see now, its used for black area and not for centering view.
I do notivce levels being screwed up major time when i use ratios from that other menu above bitdepth.
So should i set skipping to what youre using ?
I find it amazing that this small camera works so well for different kinds of lenses and you can get some cheap fast CCTV lenses for 1/2'' sensors that work perfect in crop mode.

Danne

Well, if you need and want to you can modify and test to do exceptions in raw.c code that will detect correctly. You seem to be good with experimenting so you will probably solve it eventually.

keel

Quote from: mix_vfx on November 28, 2019, 07:39:34 AM
Try using MLVApp, available for Windows and MacOS as well, and very well supported, plus latest just came out. Never tried MLVProducer, but last update is from 5/2019.

Gave it shot, on both programs videos are importing very dark.

My live view is fine, but the imports are pitch black until i boost gamma or exposure.

bakersdozen

Quote from: IDA_ML on December 04, 2019, 01:24:44 PM
I am not sure if using the intervalometer is the best option for timelapses.  In the silent module of the 100D, intervalometer causes quite a sustantial dead time from frame to frame which results in a choppy timelapse video.  On the other hand, if you shoot timelapses in the movie mode using fps override, dead time is close to 0 and this produces very smooth and cinematic timelapses.  The only downside of this mode is the very slow refresh rate of the screen at low fps (0,4 to 4 fps) which makes focusing a pain.  Please compare both modes and if you succeed, I would be curious to see the results.

I agree and love the cinematic smoothness of fps override for timelapses - my favourite method of shooting them for a long time. I've only had the chance of shooting one quick timelapse with Danne's new functionality and it worked pretty well. I think it will be playing with the intervals depending on the subjects/scene you are shooting to reach a happy place. I'm confident this could be the way forward (rather than using silent modes or overexposed fps override). Will report back more once I've had a good chance to play around.

Quote from: Danne on December 04, 2019, 12:38:26 PM
Yup. Agree @bakersdozen. Pretty much sums up my thoughts and uses around this addition :).

@Danne , any chance of adding 0.25 and 0.5 options for the movie mode intervalometer ? Or maybe 0.20 0.40 0.60 0.80 would be better if achievable. My favourite for fps override is 2.5 fps for certain subjects. So the 0.40 should achieve that.
EOS M + 5D3

ZEEK

Quote from: keel on December 06, 2019, 01:49:28 AM
Gave it shot, on both programs videos are importing very dark.
My live view is fine, but the imports are pitch black until I boost gamma or exposure.
Check your "White Level" in MLV App. Double-tap on it to reset White Level or play around with that instead of Gamma or Exposure. If not, just do a fresh install with Danne's latest ML Build.
EOS M

Danne

Quote from: bakersdozen on December 06, 2019, 03:16:08 AM
@Danne , any chance of adding 0.25 and 0.5 options for the movie mode intervalometer ? Or maybe 0.20 0.40 0.60 0.80 would be better if achievable. My favourite for fps override is 2.5 fps for certain subjects. So the 0.40 should achieve that.
How do you mean? If you want 0.5 you enable fps override and then add intervalometer? Or what do you mean?
Besides that. If you you run frameburst mode and then average let's say 49 images you'll get the long exposure look but without the laggy screen.

IDA_ML

Quote from: bakersdozen on December 06, 2019, 03:16:08 AM
I think it will be playing with the intervals depending on the subjects/scene you are shooting to reach a happy place. I'm confident this could be the way forward (rather than using silent modes or overexposed fps override).
My favourite for fps override is 2.5 fps for certain subjects. So the 0.40 should achieve that.

If you want smooth cinematic timelapse videos, setting long enough frame to frame intervals is not enough.  You also need long exposure times.  If, for example, you choose 2.5 fps for a certain scene, you need 0,4 s shutter speed to get this smooth motion blur of the moving objects in the scene and this is what causes the overexposure in day light.  You need a variable ND filter to compensate for that.  Unfortunately, there is no way around it, no matter what method you use.  If you use, say 1/30 s, your smoothness is gone.  In my experience, fairly cheap no name VND filters do a decent job with timelapses.

About half a year ago, Danne brought timelapse shooting functionality on the 100D to perfection.  4k and 5k resolutions in combination with the correct fps rates and reciprocal slow shutter speeds, as well as a nice fast preview for focusing upon half shutter press make timelapse shooting really fast, easy and a lot of fun.  I have been enjoying it tremendously last summer - one more reason for me to keep my 100D.

Danne

Quote from: IDA_ML on December 06, 2019, 07:21:25 AM
About half a year ago, Danne brought timelapse shooting functionality on the 100D to perfection.  4k and 5k resolutions in combination with the correct fps rates and reciprocal slow shutter speeds, as well as a nice fast preview for focusing upon half shutter press make timelapse shooting really fast, easy and a lot of fun.  I have been enjoying it tremendously last summer - one more reason for me to keep my 100D.
Please reread my last message about averaging files for long exposure results.

bakersdozen

Quote from: Danne on December 06, 2019, 06:13:26 AM
How do you mean? If you want 0.5 you enable fps override and then add intervalometer? Or what do you mean?
Besides that. If you you run frameburst mode and then average let's say 49 images you'll get the long exposure look but without the laggy screen.

I meant a lower minimum interval than 1 second on the intervalometer could be selected. ie. If 0.20 was a choice, we would get 2.5 frames in a second just by using intervalometer.
EOS M + 5D3

bakersdozen

Quote from: IDA_ML on December 06, 2019, 07:21:25 AM
If you want smooth cinematic timelapse videos, setting long enough frame to frame intervals is not enough.  You also need long exposure times.  If, for example, you choose 2.5 fps for a certain scene, you need 0,4 s shutter speed to get this smooth motion blur of the moving objects in the scene and this is what causes the overexposure in day light.  You need a variable ND filter to compensate for that.  Unfortunately, there is no way around it, no matter what method you use.  If you use, say 1/30 s, your smoothness is gone.  In my experience, fairly cheap no name VND filters do a decent job with timelapses.

About half a year ago, Danne brought timelapse shooting functionality on the 100D to perfection.  4k and 5k resolutions in combination with the correct fps rates and reciprocal slow shutter speeds, as well as a nice fast preview for focusing upon half shutter press make timelapse shooting really fast, easy and a lot of fun.  I have been enjoying it tremendously last summer - one more reason for me to keep my 100D.
Thanks mate. Yes I've got heaps of variable nd's for this exact purpose :) I was really just trying to push this a little further to try out a different method of timelapses using intervalometer only. If it's not possible, that's cool, just wanted to try and see what resulted.
EOS M + 5D3

LeandroFreitas

I got great news! I got continuous recording with (2.5K) 2520x1054 Ratio 2.39:1 14bit with SanDisk Extreme PRO 128gb 170Mb i got 57.9MB/s as top speed with Kill Global Draw . Very good card i got on Blackfriday.
I notice there is a bug for 2.5k that if you set  to 24 exact fps it show like its not using correct the sensor its black on the right.
Iam running Danne version crop_rec_4k_mlv_snd_raw_only_2019Dec05.EOSM202.zip
I running this setup with Viltrox EF-M speedbooster with Sigma art 18-35 F1.8 that gives me F 1.2 doenst give you vignette.





Danne

Your images are too big. Lower resolution to around 700-900 pixels
EDIT: lowered, thanks

Where´s the black? Could you upload a sample. Will take a look later.

LeandroFreitas

Quote from: Danne on December 06, 2019, 09:00:16 AM
Your images are too big. Lower resolution to around 700-900 pixels
EDIT: lowered, thanks

Where´s the black? Could you upload a sample. Will take a look later.


Danne


Danne

New version:
https://www.magiclantern.fm/forum/index.php?topic=9741.msg208959#msg208959

- intervalometer
- recording delay


Refined my lua script but still a work in progress. Mission is to be able to fully control a few functions such as being able to program the camera to independently delay start, specify recording time, stopping and looping the programmed set up. Thanks to dmilligan examples from uploaded test scripts here http://davidmilligan.github.io/ml-lua/index.html I could start my experiments.

Usage:
1 - Load movie tlapse & rec_delay from Scripts section
2 - Choose intervalometer or recording delay from Movie tab section

Functions:
rec delay - start recording with a delay
recording time - stop recording after specified amount of time
loop this - loop this setup x many times, need recording time enabled

Of course one can still keep it simple and i.e set interval time and run halfshutter trigger and skip the rest of the settings. Treat them as advanced mode. Feedback and testing welcome.









Lua script in full here:
-- movie tlapse & rec_delay

--[[
Dedicated movie preset intervalometer
--]]

  console.hide()
  menu.close()

if camera.model_short ~= "EOSM" then
   display.notify_box("Only eosm for now")
   do return end
end

  displaybox = 0
  interval = 0
  delay_value1 = 0
  stop_value1 = 0
  delay_value2 = 0
  stop_value2 = 0
  stop_after = 0
  loop_this = 0

-- loop this function
function restart()
  main()
end

function restart2()
  main2()
end

function main()
  console.hide()
  menu.close()
  interval =  mymenu.submenu["interval"].value + 1
  delay_value1 = mymenu.submenu["rec delay"].value + 1
  stop_value1 = mymenu.submenu["recording time"].value

-- warning
if camera.mode ~= MODE.MOVIE then
  display.notify_box("enable MOVIE mode")
  do return end 
end

-- if rec delay set
if delay_value1 > 1 then
  display.notify_box("push display to disable rec delay")
  msleep(1000)
  display.notify_box("push display to disable rec delay")
  msleep(1000)
end

-- rec delay set?
    while delay_value1 > 1 do
      if menu.visible then
      do return end
      end
      delay_value1 = delay_value1 - 1
      display.notify_box("recording delay "..delay_value1)
      msleep(1000)
    end

  menu.set("raw video", "Rec trigger", "Half-shutter: pre only")
  msleep(1000)
  menu.set("raw video", "Pre-record", "1 frame")
  menu.set("presets", "frame burst", "OFF")
  menu.set("presets", "iso average", "OFF")
  display.notify_box("push rec to disable")
  msleep(1000)
  display.notify_box("push rec to disable")
  msleep(1000)
  key.press(KEY.REC)
  msleep(1000)

-- starting the timelapse loop
while interval > 0 do

      interval = interval - 1
      msleep(1000)

   -- share displaybox with stop function 
     if displaybox < 8 then
      display.notify_box("interval "..interval)
   -- check if stop function is enabled
      if stop_value1 > 0 then displaybox = displaybox + 1 end
     end

      if interval == 0 then
   -- reload interval
      interval =  mymenu.submenu["interval"].value + 1
      key.press(KEY.HALFSHUTTER)
      key.press(KEY.UNPRESS_HALFSHUTTER)
      end

   -- to be able and stop while running
      if menu.visible then
do return end
      end

      if movie.recording == false then
      menu.set("raw video", "Rec trigger", "OFF")
       if mymenu.submenu["loop this"].value < 1 then
do return end
       end
      end

-- stop function
   if stop_value1 > 0 then
      stop_value1 = stop_value1 - 1

   -- share displaybox with interval function
     if displaybox > 7 then
      display.notify_box("recording time "..stop_value1)
      displaybox = displaybox + 1
      if displaybox == 16 then
      displaybox = 0
      end
     end

      if stop_value1 == 0  and mymenu.submenu["recording time"].value > 0 then
      msleep(1000)
      displaybox = 0
      key.press(KEY.REC)
      msleep(1000)
      menu.set("raw video", "Rec trigger", "OFF")
        if mymenu.submenu["loop this"].value > 0 then
        mymenu.submenu["loop this"].value = mymenu.submenu["loop this"].value - 1
        restart()
        else
        do return end
end
      end
   end
end

end

function main2()
  console.hide()
  menu.close()
  interval =  mymenu.submenu["interval"].value + 1
  delay_value1 = mymenu.submenu["rec delay"].value + 1
  stop_value1 = mymenu.submenu["recording time"].value

-- warning
if camera.mode ~= MODE.MOVIE then
  display.notify_box("enable MOVIE mode")
  do return end 
end

-- if rec delay set
if delay_value1 > 1 then
  display.notify_box("push display to disable rec delay")
  msleep(1000)
  display.notify_box("push display to disable rec delay")
  msleep(1000)
end

-- rec delay set?
    while delay_value1 > 1 do
      if menu.visible then
      do return end
      end
      delay_value1 = delay_value1 - 1
      display.notify_box("recording delay "..delay_value1)
      msleep(1000)
    end

  display.notify_box("push display to disable")
  msleep(1000)
  display.notify_box("push display to disable")
  msleep(1000)
-- starting the timelapse loop
if interval > 0 then
    key.press(KEY.REC)
    msleep(1000)
end

  while interval > 0 do
      interval = interval - 1
      msleep(1000)

   -- share displaybox with stop function 
     if displaybox < 8 then
      display.notify_box("interval "..interval)
   -- check if stop function is enabled
      if stop_value1 > 0 then displaybox = displaybox + 1 end
     end


      if interval == 0 then
   -- reload interval
      interval =  mymenu.submenu["interval"].value + 1
      key.press(KEY.REC)
      end

   -- to be able and stop while running
      if menu.visible then
do return end
      end

-- stop function
   if stop_value1 > 0 then
      stop_value1 = stop_value1 - 1

   -- share displaybox with interval function
     if displaybox > 7 then
      display.notify_box("recording time "..stop_value1)
      displaybox = displaybox + 1
      if displaybox == 16 then
      displaybox = 0
      end
     end
   end

-- enter and exit loop
      if stop_value1 == 0 and mymenu.submenu["recording time"].value > 0 then
      msleep(1000)
      displaybox = 0
        if mymenu.submenu["loop this"].value > 0 then
        mymenu.submenu["loop this"].value = mymenu.submenu["loop this"].value - 1
        restart2()
        else
        do return end
end
      end

  end
end

mymenu = menu.new
{
    parent = "Movie",
    name = "intervalometer",
    help = "Movie preset intervalometer",
    submenu =
    {
        {
            name = "interval",
            min = 0,
            max = 600,
    value = 10,
            unit = UNIT.TIME,
            update = function(this) mymenu.value = this.value end,
    help = "default is 10 seconds",
        },
        {
            name = "run halfshutter trigger",
    select = function(this) task.create(main) end,
    help = "records single frames in a MLV chunk. enables REC trigger mode",
        },
        {
            name = "run rec key trigger",
    select = function(this) task.create(main2) end,
    help = "use with frame burst or iso average",
        },
        {
            name = "rec delay",
            min = 0,
            max = 10000,
            unit = UNIT.TIME,
            update = function(recd) recd.value = recd.value end,
    help = "start recording with a delay",
        },
        {
            name = "recording time",
            min = 0,
            max = 10000,
            unit = UNIT.TIME,
    help = "stop recording after specified amount of time",
        },
        {
            name = "loop this",
            min = 0,
            max = 10000,
            unit = UNIT.DEC,
    help = "loop this setup x many times, need recording time enabled",
        },

    },

}


-- starts movie recording after a delay

function recdelay_main()
  console.hide()
  menu.close()
  delay_value1 = recdelay_menu.submenu["rec delay"].value
  stop_value1 = recdelay_menu.submenu["recording time"].value
  delay_value2 = recdelay_menu.submenu["rec delay"].value
  stop_value2 = recdelay_menu.submenu["recording time"].value
  loop_this = recdelay_menu.submenu["loop this"].value - 1

-- rec delay needs to be specified
if delay_value1 == 0 then
  display.notify_box("set rec delay")
  msleep(1000)
  display.notify_box("set rec delay")
  msleep(1000)
  display.notify_box("set rec delay")
  msleep(1000)
do return end
end

-- rec delay set?
    while delay_value1 > 0 do
      msleep(1000)
      if menu.visible then
      do return end
      end
      delay_value1 = delay_value1 - 1
      display.notify_box("recording delay "..delay_value1)
    end
   key.press(KEY.REC)
      msleep(1000)

    while stop_value1 > 0 do
      msleep(1000)
      if movie.recording == false then
      do return end
      end
      stop_value1 = stop_value1 - 1
      display.notify_box("recording time "..stop_value1)

      if stop_value1 == 0 then
      key.press(KEY.REC)
      msleep(1000)
      end
    end

-- check for loop this
while loop_this > 0 and stop_value2 > 0 do

-- rec delay set?
    while delay_value2 > 0 do
      msleep(1000)
      if menu.visible then
      do return end
      end
      delay_value2 = delay_value2 - 1
      display.notify_box("recording delay "..delay_value2)
    end
   key.press(KEY.REC)
      msleep(1000)

    while stop_value2 > 0 do
      msleep(1000)
      if movie.recording == false then
      do return end
      end
      stop_value2 = stop_value2 - 1
      display.notify_box("recording time "..stop_value2)

      if stop_value2 == 0 then
      key.press(KEY.REC)
      msleep(1000)
      end
    end

-- reset for next loop
   delay_value2 = recdelay_menu.submenu["rec delay"].value
   stop_value2 = recdelay_menu.submenu["recording time"].value

-- check for loop this
  loop_this = loop_this - 1
  display.notify_box("loops left "..loop_this)
  msleep(500)
end

end

recdelay_menu = menu.new
{
    parent = "Movie",
    name = "recording delay",
    help = "start movie recording after a delay",
    submenu =
    {
        {
            name = "rec delay",
            min = 0,
            max = 10000,
            unit = UNIT.TIME,
            update = function(recd) recd.value = recd.value end,
    help = "start recording with a delay",
        },
        {
            name = "recording time",
            min = 0,
            max = 10000,
            unit = UNIT.TIME,
    help = "stop recording after specified amount of time",
        },
        {
            name = "loop this",
            min = 0,
            max = 10000,
            unit = UNIT.DEC,
    help = "loop this setup x many times, need recording time enabled",
        },
        {
            name = "Run",
            select = function(this) task.create(recdelay_main) end,
            help = "start the delay count down now",
        },
    },
}



Intervalometer easy mode:
1 - activate tlapse lua script then enter intervalometer. Set your preferred interval(default is 10)
2 - select run halfshutter trigger. A one chunk mlv file will be created containing x amount of dng frames
Done!

Averaging idea:
If you want to create a sequence of frames separated into individual mlv file instead select run rec key trigger. But see to it that you select a setting from either frame burst or iso average first. This will produce mlv files suitable for averaging in Mlv App.

I recently added two personal presets in the intervalometer script called rec delay + 3 frames and rec delay + 2 frames. Just skip those.

Advanced stuff:
rec delay - simply will delay the start of the selected set up. You can set it to start like after an hour or more if you like.
recording time - a global setting which will tell how long you want your set up to run. You can set it to run your script for 2 hours or so. If not set your script set up will be active until your battery drains.
loop this - If you created a workflow that you know works and included recording time you can here restart the exact set up x amount of times by selecting loop this. For instance. You want the camera to start recording with a rec delay of one hour nad you want the recording time to run for 2 hours and then end. If loop this is set it restarts the procedure, 1 hour delay, two hours recording time etc...






procopy

Hi, gents. What are your touch focus settings and generally what is your experience with it? I had quite a decent experience with the previous build I was using, but can't really say the same about the latest nightly build. What I'm looking for is just be able to switch focal point without the servo interfering all the time as I move and it seems it just does not work this way anymore. Yes, there is rack focus, but that unnecessarily complicates things for me. Or did the rack focus replace touch focus in newer builds? Or am I doing something wrong?

AF-OFF

Testing results:

using the Dec 07 build, firstly I've checked the new feature - intervalometer for video
I tested only the mv1080p rew interval script / video mode
this works with the preset aspect ratio 2.39:1
Ratio set to 16:9 - cam crasches sometime, have to pull battery
Ratio to off - doesn`t work, meaning maybe it does record once, but then the interval isn't over (10sec) and the recording starts and dont stop


I also have a problem with the mv1080p rew in 3x zoom - the top part of the LV is corrupted which also shows up in the recording, this is since some builds back the case
Also since some time, the GD LV item indicating remaining capacity of sd card doesn't update anymore. It updates only after powering cam off and on

As always, thanks to Danne and others for developing ML further




Danne

Can´t reproduce. x3zoom is working as before here.
Intervalometer is very specific with certain additions depending what you setting you choose. You describe very vaguely so hard to say what´s going on.
I would need a sample mlv in x3zoom to understand better since a ton of info is missing if you want me to reproduce.
Thanks 

AF-OFF

Quote from: Danne on December 08, 2019, 07:44:19 PM
Can´t reproduce. x3zoom is working as before here.
Intervalometer is very specific with certain additions depending what you setting you choose. You describe very vaguely so hard to say what´s going on.
I would need a sample mlv in x3zoom to understand better since a ton of info is missing if you want me to reproduce.
Thanks
3x zoom , Ratio off - here one sample file (only a week from now available)
I have this issue since nov 16th. then I noticed it the first time
https://we.tl/t-Oc5xgYbBAb
Intervalometer : withthe fresh build installed, mv1080p, 14bit, 2.39:1 - nothing changed - Works for the testing (4 x repeat of 4 second clips)
changing the RAtio to off it breaks, changing from there to 16:9 its still broken, cam can lock up
I hope this helps Danne

Danne

In your provided clip it says 25fps. Are you using fps override? Use set 25fps instead from Movie menu. Even if your camera is set to 25fps in canon menu. I also recommend to have camera set to 24 fps in canon menu as starting point.

About your issues with intervalometer. I really need to see full settings in your camera. Maybe you can do a screen recording? I still don´t know which function you tested in the tlapse script so I still am far from being able to reproduce.

AF-OFF

So, yes, I have switched to PAL in canon menu, and there to 1920x1080@25 pfs
No FPS override

I've switched now (still pal) to 1920x1080@24fps, restarted the cam and Yes! no problems.

so the 3x issue seems solved:
1.-in CANON menu choose (maybe either PAL or NTSC) 1920x1080@24FPS and restart


intervalometer script:
I've used the fresh build install and Just changed in movie (ML) menu Ratio to Off
then started the script (run) and changed the setting from the movie-intervalometer menu to
4 secs record time, repeat 4 times

Testing the intervalometer once more after this abovementioned settings change to 24FPS video in Canon menu
firstly I reseted the ML settings and restarted the cam, then changed the ratio to off and pressed Menu Button three times, nothing else changed
Then did run script  and still in ML menu -> movie tab -> intervalometer I've changed
1. recording time to 4s
2. loop this to 4
3. run rec key trigger

yes now it records, the cam starts recording right away, the countdown (from 10) counting and again recordings stops after 5-6 secs, starts again, stops and this is all

So thanks Danne to clarify the setting to 24FPS

But the intervalometer doesn't work as expected, if I let the Ratio setting at OFF.

Edit: if I run the intervalometer the recording starts right away, the LV display shows the countdown, but recording still running. then it stops, then starts again, then stops, then start and has to be manually stoped. in between the counter counts down, then a message is shown - push display to disable, it records two clips (have set it to loop 4x), then stops, sometimes recording doesn't stop