Experiments

The following builds are works in progress, known to have rough edges.
Please test thoroughly before considering them for serious work.
The functionality from this page will be integrated in the main builds as soon as all major issues will be ironed out.
However, we need your help. If you use any of these builds, please report your experience.
Still confused? Each experimental build has a link to the relevant forum thread, where you can discuss the new features.
You may also check this page for ideas on how to help, and this page for how to suggest changes with a pull request, from your web browser.

Latest Lua updates + fixes (please review)

Latest Lua updates (details).

Includes many other backend changes, e.g. focus, menu, Q button handling, fonts etc.

Therefore, it's important to give it a good try on all functions, not just Lua, so we can include it in the nightly builds.

Also includes lens.focus_pos and dynamic-my-menu.

Forum discussion

Branch: lua_fix

Latest Build (2018-09-17 16:39)

magiclantern-lua_fix.2018Sep17.100D101.zip

magiclantern-lua_fix.2018Sep17.1100D105.zip

magiclantern-lua_fix.2018Sep17.50D109.zip

magiclantern-lua_fix.2018Sep17.550D109.zip

magiclantern-lua_fix.2018Sep17.5D2212.zip

magiclantern-lua_fix.2018Sep17.5D3113.zip

magiclantern-lua_fix.2018Sep17.5D3123.zip

magiclantern-lua_fix.2018Sep17.600D102.zip

magiclantern-lua_fix.2018Sep17.60D111.zip

magiclantern-lua_fix.2018Sep17.650D104.zip

magiclantern-lua_fix.2018Sep17.6D116.zip

magiclantern-lua_fix.2018Sep17.700D115.zip

magiclantern-lua_fix.2018Sep17.70D112.zip

magiclantern-lua_fix.2018Sep17.7D203.zip

magiclantern-lua_fix.2018Sep17.EOSM202.zip

0040e6c: Merged allocate-raw-lv-buffer into lua_fix

7ca7753: Merged qemu into lua_fix

238b57a: Merged 100D_merge_fw101 into lua_fix

1cf3de0: 500D: experimental workaround for ERR70, issue #1468
(only enabled when recording H.264 with sound)

24b5439: 500D: removed old workarounds for ERR70
(still experimenting)

8bd8bb7: VRAM: recompute LUTs only when display parameters actually change
(appears to help with 500D's ERR70 while recording; to be tested with external monitors)

4eb1a1e: selftest: info screen toggling test
(crashes 500D)

b951e43: Lua: fix printing pointer values
(no %p in Canon's vsnprintf)

2703bfb: Lua: minor stack fix
(apparently never triggered)

1265adf: Lua: simple stack checking when yielding to other tasks

7d08956: Lua: stack dump function for debugging
http://www.lua.org/pil/24.2.3.html

6cb0b5f: Lua: dryos.directory.__tostring()

61b7286: Lua dryos: removed card.cluster_size
(too low-level to be useful for Lua)

4521fef: Lua dryos: refactored card functions for consistency with directory functions

8b34a1a: Lua: moved dryos.dcim_dir to dryos.shooting_card:dcim_dir
(or dryos..dcim_dir)

e6ff287: Lua dryos: fix card free_space field
(never worked)

e4e0ea7: Lua: added dryos.cf_card and dryos.sd_card
(just for consistency)

a6e51b7: 6D DEFAULT_RAW_BUFFER_SIZE
https://www.magiclantern.fm/forum/index.php?topic=5601.msg196632#msg196632

9d642c6: 650D DEFAULT_RAW_BUFFER_SIZE is the same as on the 700D
https://www.magiclantern.fm/forum/index.php?topic=5601.msg196632#msg196632

3d08648: Lua: added dryos.shooting_card.get_image_path to fix edge cases
from api_test.lua when image number wrapped around at 9999->0001
(this replaced the hardcoded logic from api_test.lua for getting previous/future still image paths)

832ae7f: Merged img_name into lua_fix
(required to test the file number updates, i.e. wrapping around at 9999->0001)

c7e5427: shoot.c: Canon wraps around from IMG_9999 to IMG_0001, not 0000
(affected: fast pictures, intervalometer/bracketing scripts)

All changes on BitBucket

Build Log


4K raw video recording; lossless compression

crop_rec module with higher resolutions (4K, 1080p48 etc):

5D3:

  • 1920x960 @ 50p (both 1:1 crop and full-frame - 3x3 pixel binning)
  • 1920x800 @ 60p (same as above)
  • 1920x1080 @ 45p and 48p (3x3 binning)
  • 1920x1920 @ 24p (1:1 square crop)
  • 3072x1920 @ 24p (1:1 crop)
  • 3840x1600 @ 24p (1:1 crop)
  • 4096x2560 @ 12.5p (1:1 crop)
  • 4096x1440 @ 25p (1:1 crop)
  • Full-resolution LiveView: 5796x3870 at 7.4 fps (128ms rolling shutter).
  • Continuous: 3072x1308 @ 24p, 1920x1080 @ 45p, 1920x960 @ 50p, 1920x800 @ 60p, 4096x2560 @ 8p, 5796x3870 @ 5p.

EOSM, 650D, 700D, 100D:

  • 1736x696 @ 50/60p with 3x3 pixel binning (actually column binning / line skipping)
  • Lossless compression: 1736x976 @ 24p continuous (this is the maximum 16:9 resolution with 3x3 sampling)

6D:

  • 1824x634 @ 50/60p with 3x3 pixel binning (actually column binning / line skipping)
  • Lossless compression: 1824x1026 @ 24p [continuous?] (this is the maximum 16:9 resolution with 3x3 sampling)

Notes:

  • It's quite bleeding edge (expect bugs)
  • Includes lossless compression for MLV (mlv_lite/mlv_play) and DNG (silent/pic_view)
  • Includes lua_fix and dynamic-my-menu
  • You will generally need to use the (non-realtime) preview from the raw recording module.
  • Setting the preview to Frozen LV will give sligthly better recording times.
  • Modes with higher vertical resolution will have real-time preview only for the top of the frame.
  • Modes with higher horizontal resolution will have the preview completely broken.
  • Centered x5 zoom will show either a cropped real-time preview, or a slow preview with correct framing (half-shutter to toggle).
  • mlv_lite has lossless compression, H.264 proxy and experimental sound recording via mlv_snd
  • mlv_rec works too, but without lossless compression

This is also the "de facto" bleeding edge branch, with other experimental stuff being tested here.

Forum discussion

Branch: crop_rec_4k_mlv_snd

Latest Build (2018-07-22 13:09)

mlv_dump.exe

mlv_dump.linux

mlv_dump.osx

magiclantern-crop_rec_4k.2018Jul22.100D101.zip

magiclantern-crop_rec_4k.2018Jul22.5D3113.zip

magiclantern-crop_rec_4k.2018Jul22.5D3123.zip

magiclantern-crop_rec_4k.2018Jul22.650D104.zip

magiclantern-crop_rec_4k.2018Jul22.6D116.zip

magiclantern-crop_rec_4k.2018Jul22.700D115.zip

magiclantern-crop_rec_4k.2018Jul22.EOSM202.zip

c1e44b8: mlv_dump: pass INFO blocks as image description

7883869: mlv_dump: fix compile warnings / empty lines

e6d5795: mlv_dump: change DNG code to pass through RAWI color matrix if the camera model could not be determined

2c126b5: mlv_dump: harden string length handling for DEBG and VERS against inconsistent field sizes

d1bd7bb: mlv_dump: fix incorrectly placed null byte for text blocks line DEBG and VERS

All changes on BitBucket

Build Log


10/12-bit RAW video

Experimental raw video recording at lower bit depths. Only models with CONFIG_EDMAC_RAW_SLURP/CONFIG_EDMAC_RAW_PATCH are compiled.

Forum discussion

Branch: raw_video_10bit_12bit_LVState

Latest Build (2018-09-17 17:07)

magiclantern-raw_video_10bit_12bit.2018Sep17.100D101.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.1100D105.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.5D2212.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.5D3113.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.5D3123.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.600D102.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.60D111.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.650D104.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.6D116.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.700D115.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.70D112.zip

magiclantern-raw_video_10bit_12bit.2018Sep17.EOSM202.zip

3e3fac1: Raw backend: experimental method for overriding raw stream parameters in Canon firmware (CONFIG_EDMAC_RAW_PATCH)
Stubs for 5D2. Clean footage in 1080p30 10-bit!

c26a800: Merged patchmgr into raw_video_10bit_12bit_LVState

43b0d6f: Raw backend: use generic resolution autodetection for LVState models
(experimental)

d318f77: mlv.c: fix buffer overflow in mlv_build_vers

33d93c0: Merged allocate-raw-lv-buffer into raw_video_10bit_12bit

a6e51b7: 6D DEFAULT_RAW_BUFFER_SIZE
https://www.magiclantern.fm/forum/index.php?topic=5601.msg196632#msg196632

9d642c6: 650D DEFAULT_RAW_BUFFER_SIZE is the same as on the 700D
https://www.magiclantern.fm/forum/index.php?topic=5601.msg196632#msg196632

8fe2663: arm-mcr.h: minor cleanups, non-functional:
- moved _sync_caches in the old place
- commented out setup_memory_region et al

2be51b8: Patch manager: provide a default sync_caches for targets that don't include it
(minimal, installer, reboot)

4d9b0eb: Patch manager: moved sync_caches in patch.c and removed the "weak" trickery
(fixes patch restoring when called from modules)

4c33f64: Patch manager: reworked mechanism for re-applying cache patches when needed
* arm-mcr.h: clean_d_cache and flush_i_cache are now private (sync_caches is the high-level function to be used)
* replaced all calls to clean_d_cache/flush_i_cache with sync_caches
* should fix issues with randomly "disappearing" cache patches
* to be tested for performance issues etc

deeeced: Modules: patch.h no longer needed

81b9e49: Raw backend: DEFAULT_RAW_BUFFER_SIZE for 700D and EOSM (thanks dfort)

33d943d: mem.c: fix compiling for 5D3.123
(display buffer address depends on HDMI options)

a9728fe: selftest: EOSM takes the crown for the lowest amount of shoot_memory available
(fragmented allocation can no longer be tested with hardcoded value)

b784fdf: Raw backend: 60D appears to allocate 28MB for the raw buffer

d32e6d5: Raw backend: updated 5D3 hypothesis about Canon LV RAW buffer
(todo: re-check 1.2.3)

e799e89: Raw backend: attempt to autodetect Canon's raw buffer size
Usage:
- compile with CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP (config-defines.h)
- open the console (Debug menu) and enable something that uses LiveView RAW features (raw video, raw histogram etc)
- test by starting the camera in all video modes (photo, 1080p, 720p, crop, x5 etc)
- take a screenshot or write down the console messages

d93c113: Raw backend: fix compilation on very old models
(without CONFIG_EDMAC_RAW_SLURP)

fa9c903: 1100D: CONFIG_ALLOCATE_RAW_LV_BUFFER may not be needed, after all
http://www.magiclantern.fm/forum/index.php?topic=1009.1450

23524a6: Free Memory dialog: updated common addresses to allow dynamically allocated buffers (not just hardcoded ones);
also show current RAW and BMP buffer(s), not just the YUV ones

69bdcde: Raw backend: 1100D also needs DEFAULT_RAW_BUFFER / DEFAULT_RAW_BUFFER_SIZE

All changes on BitBucket

Build Log


Pre-recording with half-shutter triggers

Pre-recording with half-shutter triggers (details).

Should work on top of latest nightly build.

Forum discussion

Branch: rec-trigger

Latest Build (2017-08-17 22:29)

mlv_lite.mo

7441ed4: mlv_lite: fix compilation

9e60bc5: mlv_lite: prevent recording in x10 zoom
(to be used for focusing)

All changes on BitBucket

Build Log


Non-CPU lens info

Set lens name, focal length and aperture for manual lenses. Lua script.

Forum discussion

Branch: manual_lens_info

Latest Build (2018-09-13 23:06)

magiclantern-manual_lens_info.2018Sep14.100D101.zip

magiclantern-manual_lens_info.2018Sep14.1100D105.zip

magiclantern-manual_lens_info.2018Sep14.500D111.zip

magiclantern-manual_lens_info.2018Sep14.50D109.zip

magiclantern-manual_lens_info.2018Sep14.550D109.zip

magiclantern-manual_lens_info.2018Sep14.5D2212.zip

magiclantern-manual_lens_info.2018Sep14.5D3113.zip

magiclantern-manual_lens_info.2018Sep14.5D3123.zip

magiclantern-manual_lens_info.2018Sep14.600D102.zip

magiclantern-manual_lens_info.2018Sep14.60D111.zip

magiclantern-manual_lens_info.2018Sep14.650D104.zip

magiclantern-manual_lens_info.2018Sep14.6D116.zip

magiclantern-manual_lens_info.2017Apr04.700D114.zip

magiclantern-manual_lens_info.2018Sep14.700D115.zip

magiclantern-manual_lens_info-crop_rec_4k.2018Feb02.70D112.zip

magiclantern-manual_lens_info.2018Sep14.7D203.zip

magiclantern-manual_lens_info.2018Sep14.7D_MASTER203.zip

magiclantern-manual_lens_info.2018Sep14.EOSM202.zip

149418d: selftest: missing * causes compile error
https://bitbucket.org/hudson/magic-lantern/commits/065ceae1247d909e9952a2bc9eb35f3924267719#comment-6590387

All changes on BitBucket

Build Log


Warning!
Magic Lantern is not approved nor endorsed by Canon in any way, and using it will probably void your warranty.
We are not responsible for any damages to your camera.

Copyright (C) 2009-2017 Magic Lantern Development Team

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.