Magic Lantern Forum

Developing Magic Lantern => Feature Requests => Topic started by: theBilalFakhouri on May 03, 2019, 10:24:50 PM

Title: H.264 in-camera encoder - proxy.mo ?
Post by: theBilalFakhouri on May 03, 2019, 10:24:50 PM
I am still searching around how we can get real-time MLV preview, I gave some ideas here (https://www.magiclantern.fm/forum/index.php?topic=23778.0).

And got this idea today
Can we encode MLV from the card to H.264.mov in camera ? Using the chipset or H.264 engine not sure what I should call it.

Making proxies in camera it will be very fast process just like recording H.264 (e.g. in 700D a 20 seconds clip @1736x976 @ 29.97 FPS needs 20 Seconds to encode it and maybe less, then we can preview it in real-time with sound.

Not sure if it worked how the higher resolution will take to encode, but at least we don't need real-time encoding, some more seconds doesn't seem a problem.
Title: Re: H.264 in-camera encoder - proxy.mo ?
Post by: a1ex on May 04, 2019, 09:04:15 AM
Might be doable, but.... keep in mind you also have to decode and render the movie, so it's not going to be any faster than mlv_play. Don't forget mlv_play renders at 720x480, so... if you need high resolution, it's not going to require just "some more seconds".

To make it as fast as possible, one has to:
- figure out how Canon renders a Bayer image buffer as YUV422 (non-trivial)
- figure out how to call the H.264 encoder (likely similar to lossless compression)
- optimize both the MLV reading and the H.264 writing routines (doable, but...)

TLDR - a lot of work would be required for this (and you can achieve the same thing in post-processing).

As a comparison, implementing a software-based pixel binning (starting from 1x3 readout) would be easier by at least one order of magnitude.