To record in 3x3 mode on the EOSM we have to patch the ADTG2[800C] register to 2.
mlv_rec knows about the quirk of the EOSM and to allow proper recording in 3x3 mode I removed this check (for now). I'm not sure how to properly handle this, maybe check the crop.preset config value in mlv_rec?
The cmos hook doesn't seem to play nice with the EOSM. When enabled without overriding any values I get black preview data from the sensor hence I disabled it for the EOSM.
What also needs fixing is that the preview in 3x3 mode is now vertically strechted.
Right, I didn't handle the mlv_rec interaction either.
The preview is probably hard to fix, and I'd say not very important, since the framing will be correct (I guess). What's more important (at least for some lenses) is the centering of the recording area. That one needs to be adjusted from a CMOS register, but we need to find out why it crashes without overriding any values. Will check.
Just to narrow down: if you use an empty cmos_hook, do you still get black screen?
If you enable CROP_DEBUG, do you get any messages from cmos_hook to the console?
Yes, setting the start/stop lines would be great. The cmos_hook should be able to handle that when we get it working.
I won't be near my camera until monday evening but will try to debug the issue with the hook then.
Turns out the EOSM uses more than 8 CMOS registers and the code then went outside the cmos_new array and overwrote registers  and .
To center the crop section I used register . Register  didn't work (it actually stays the same between normal mode and 600D hack crop mode).
The only nitpicks left are:
the other crop menu choices (is there any point in replacing the crop mode hack with this one? if not, we should probably make this the only choice)
The second one is a bit outside the scope of this PR, as it must be solved for the 5D3 as well.
The 600D crop mode is more useful as it has the higher frame size that can be recorded from. So the 1x1 crop mode from this module is kinda pointless for the EOSM. The 3x1 and 1x3 modes currently don't work properly and don't seem particularly useful atm - I can see a point in 3x1 on something like the 5D2 to read every line and bin three columns to alleviate the aliasing.
Much more interesting for EOSM users would be if I could get the 600D crop mode to run in 3x3 mode to make use of the higher frame size. Currently in mv720 it is stuck with max 692 lines.
I like the crop info proposal - this would also help a lot with removing the focus pixels in post.
Just noticed something unusual. On the normal unified version setting the Canon menu at either 1080p or 720p, MLV horizontal resolution at 1280 and aspect ratio at 16:9 the vertical resolution will be at 432. This is expected because the EOSM doesn't get into mv1080 mode. With this crop_rec build even if the crop_rec module is not loaded with the Canon menu settings at 1080p the vertical resolution maxes out at 692 and the aspect ratio maxes out at 1.85:1. In addition, the live view shows a more vertical cropping than the settings indicate though the image is not vertically stretched like when the crop_rec module is selected. Shouldn't the expected behavior without loading the crop_rec module be the same as the unified build?
I'm still trying to understand how to use this crop_rec module on the EOSM. Should the Canon movie rec. be set to 720p or 1080p when using crop_rec? Maybe crop_rec should deactivate when the Canon menu is set to the "wrong" setting?
I've had some testers send me samples that don't work with the focus pixel maps I've been creating for this video mode and been wondering if there are multiple settings for this module. Of course the focus pixel maps should cover all possible settings.
As it says in the description of the PR and as you can see below to make the crop_rec module useful I had to change the mlv_rec module:
"mlv_rec knows about the quirk of the EOSM and to allow proper recording in 3x3 mode I removed this check (for now)."
I removed the assumption that the EOSM always runs in mv720 mode regardless of what you select in the Canon menu. What is missing is a good way to by which the mlv_rec module can detect the proper squeeze factor (and by that how to calculate the amount of lines to record for a given horizontal resolution and aspect ratio).