Magic Lantern Cracks 4k Video on the Canon EOS 5D Mark III! Hidden Inside An April Fools Joke is Reality

by planetMitch5 Comments

The Magic Lantern team has indeed done it again by adding a ton of new features to the Canon EOS 5D Mark III including 4k Video! Some of these items are still just proof of concepts and may not be usable for production use – but it is astounding to see what can be done!

And in their usually jovial way, they initially teased it on April 1st leading many of us (including yours truly) to pause and scratch our heads wondering if there was some reality in the joke. And also,  even tho I was a software developer in my past, I'm always feeling a bit daft when reading thru ML threads because it is way over my head and I'm often grasping at straws – it is sometimes like trying to read a foreign language for me.

But spending a bit of time poking thru the posts after April 1st, you can see (unless they're really good at continuing a joke for a long time) some discussion that looks valid about the feature set and testing of code that's recently been added to the ML code base.

Now, please realize, much of this isn't like full 4k with choose what ever you want fps, bit rate etc, some is pretty limited and you even have to put up with B&W previews. Here's a comment from Alex for example “Only the simplest crop mode (1920×1080) has good real-time preview. The modes with higher vertical resolutions have color preview too, but it's not centered (only the top of the frame is shown). In the regular crop_rec branch, there's also centered 5x zoom. Here I've removed it temporarily, as it increased the code complexity quite a bit, but I'll probably add it later when things will settle.”

And as we all felt… from @reddeercity: “I read all this and thought Great Joke ! 😛 but then I read the Source Code Holy Cow 😮 😮 😮 :o”

And this update from A1ex yesterday:

“Yep – my point was that people outside the core team are definitely able to play with this code (as in, it's not pure black magic).

Took this build out for a test (nothing fancy, just taking pictures of the kids with full-res LiveView and pre-recording). Noticed a major limitation (could not set shutter speeds fast enough for daylight) and pushed a fix for that.

After the fix, modes with reduced FPS (4K and full-res LiveView) now have the usual range of 1/4000…1/30 (or 1/60) mapped to 1/15000 to 1/fps. That's right – 1/15000 exposure time with 128ms rolling shutter 😀

Next annoyance was the grayscale preview, which is slow and not working at all in 10-bit. Also, lossless MLVs are not playable in mlv_play. Will look into those.”

So, it is still a fluid situation and as people start testing, we may see even more advances! And again, probably not a good choice for “production” usage at this point. And the usual caveat – this could void your warranty (tho your 5D3 isn't under warranty any more most likely LOL), and who knows, it may not work.

Kudos to Alex and the whole Magic Lantern team!

Magic Lantern Post:

On the 5D Mark III, you now have the following new resolutions:

* 1920×960 @ 50p (both 1:1 crop and full-frame – 3×3 pixel binning)
* 1920×800 @ 60p (same as above)
* 1920×1080 @ 45p and 48p (3×3 binning)
* 1920×1920 @ 24p (1:1 square crop)
* 3072×1920 @ 24p (1:1 crop)
* 3840×1600 @ 24p (1:1 crop)
* 4096×2560 @ 12.5p (1:1 crop)
* 4096×1440 @ 25p (1:1 crop)
* Full-resolution LiveView: 5796×3870 at 7.4 fps (128ms rolling shutter).

The last feature complements the well-known full-resolution silent pictures – the new implementation will be usable at fast shutter speeds, without the exposure gradient – but with rolling shutter (just like regular LiveView frames).

Credits: Greg (full-width LiveView), g3gg0 (video timerDIGIC registers documentation and lots of other low-level insights).

Complete list of new video modes:

Code: [Select]

                                /*   24p   25p   30p   50p   60p */
[CROP_PRESET_3X_TALL]       = { 1920, 1728, 1536,  960,  800 }, /* 1920 */
[CROP_PRESET_3x3_1X]        = { 1290, 1290, 1290,  960,  800 }, /* 1920 */
[CROP_PRESET_3x3_1X_48p]    = { 1290, 1290, 1290, 1080, 1080 }, /* 1920; 1080p45/48 <- 50/60p in menu */
[CROP_PRESET_3K]            = { 1920, 1728, 1504,  760,  680 }, /* 3072 */
[CROP_PRESET_UHD]           = { 1600, 1500, 1200,  640,  540 }, /* 3840 */
[CROP_PRESET_4K_HFPS]       = { 2560, 2560, 2500, 1440, 1200 }, /* 4096 half-FPS */
[CROP_PRESET_FULLRES_LV]    = { 3870, 3870, 3870, 3870, 3870 }, /* 5796 */

What else could you wish for?



Where's the catch?

This is only a very rough proof of concept. It has not been battle-tested and has many quirks. Some of them may be easy to fix, others not so. In particular:

* It feels quite buggy. I'm still hunting the issues one by one, but it's hard, as Canon's LiveView implementation is very complex, and our understanding on how it works is still very limited.
* Write speeds are high. For example, 10-bit 4096×2500 at 15 fps requires 180 MB/s. 1080p45 should be a little more manageable at 111 MB/s.
* Canon preview is broken in most modes; you need to use the grayscale preview in the raw recording module.
* High-resolution modes (in particular, full-res LiveView) may cause trouble with memory management. This is very tricky to solve, as we only get 3 full-resolution buffers in LiveView, with restrictions on the order in which they must be freed, and lots of other quirks.
* Since these settings were pushed to limit, the risk of corrupted frames is high. If it happens, decrease the vertical resolution a bit.
* When refreshing LiveView settings, the camera might lock-up (no idea why). Pressing MENU twice appears to fix it.

May I fine-tune the new modes?

Yes! I've included some of the knobs on the user interface. Normally you shouldn't need to touch these buttons, but if you do, you might be able to squeeze a few more pixels.

Does it work with FPS override?

Sort of. It's not reliable at this point, so it's best not to try yet.


During my tests, I didn't manage to get a sensor temperature higher than 60 degrees. Your mileage may vary.


This mod changes some low-level sensor parameters that are not well understood. They were all figured by trial and error, and there are no guarantees about the safety of these changes.

As usual, if it breaks, it's your fault, sorry.

Will it work on other camera models?

I hope so; however, this is an area where I hope to get contributions from others (yes, from you). If these new features don't motivate you to look into it, I wonder what else will.

I'll explain how all this works in the coming days or weeks.

Is it difficult to port to other camera models?

So far, the 3×3 720p mode from crop_rec was ported to EOS M (rbrune) and 700D (dfort). So it shouldn't be that hard…

Will you port this to my camera model, please?

No, sorry. I have better things to do – such as, preparing the April 1st prank for next year :)

Wait a minute, didn't you say you are primarily a still photo user? Why are you even doing this?

If you look close, the usefulness for video is fairly limited, as the write speeds (and therefore the recording times) are not practical.

But the full-resolution LiveView is – in my opinion – very useful for still photo users. Although the current implementation is not very polished (it's just a proof of concept), I hope you'll like the idea of a 7.4 FPS burst mode, 100% silent, without shutter actuations.

Right now, you can take the mlv_lite module with pre-recording and half-shutter trigger: at 10 bits per pixel, you get 5 frames pre-recorded, and saved to card as soon as you touch the half-shutter button. Or, you can capture one frame for each half-shutter press, with negative shutter lag! (since the captured frame will always be pre-recorded).

And if a burst at 7.4 fps is not enough, you may also look at the 4K modes (12-15 fps).

(I know, I know, GH4 already does this, at much higher frame rates…)

The help menu for full-res LiveView says 5796×3870, but MLV Lite only records 5784×56. What's going on?

The raw recording modules have a couple of alignment constraints (e.g. can only start cropping from a multiple of 8 pixels, and the size of the cropped area (that goes into the MLV file) must be multiple of 16 bytes (that is, W*bpp/8 + H mod 16 must be 0).

To capture the full resolution, you may use the silent picture module. However, this module is not the best when it comes to memory management and buffering. Currently, you'll get an impressive buffer of 2 frames in burst mode :)

But hey – it outputs lossless DNG!

What about that lossless compression routine?

It's included, although I didn't manage to test it much. There is a lot of room for improvement, but for a proof of concept, it seems to work.

P.S. The initial announcement was disguised as an April Fools joke, just like the original crop_rec.

(cover photo credit: snap from the ML team)


  1. Pingback: Video 4K con la Canon 5D Mark III de la mano de Magic Lantern |

  2. Pingback: Magic Lantern adds 4k raw video to Canon 5D Mark III - DIY Photography

  3. How do you compare the Mark III with the Mark IV? I love my Mark III, mostly for stills. Should we upgrade?

Leave a Comment