Author Topic: Changing Canon's menu settings  (Read 283 times)

Dmytro_ua

  • Member
  • ***
  • Posts: 158
  • Kyiv, Ukraine
Changing Canon's menu settings
« on: November 17, 2019, 08:24:34 PM »
Hi,
I'm currently trying to make my own presets for different video settings for 5dIII (inspired by Danne's cine.lua).
I've set all up in ML menu using lua script but some stuff is in Canon's menu:

I need to change: PAL to NTSC   
and   
Recording format: 1920 25 ALL-I   to  1280 50 ALL-I

I'm lost here.
What is the correct way to navigate through those settings?
5d3 1.1.3 exp | Canon 16-35 4.0L | Canon 50 1.4 | Canon 100mm 2.8 macro
Ronin-S

Danne

  • Contributor
  • Hero Member
  • *****
  • Posts: 6039
Re: Changing Canon's menu settings
« Reply #1 on: November 17, 2019, 10:34:07 PM »
You can have alook at my lua scripts here:
https://bitbucket.org/Dannephoto/lua_magic/src/default/

They all handle simple commands as opening menus, navigating to places, mostly in magic lantern menu but I am certain lua can do what you want with some tinkering.

Dmytro_ua

  • Member
  • ***
  • Posts: 158
  • Kyiv, Ukraine
Re: Changing Canon's menu settings
« Reply #2 on: November 17, 2019, 10:50:41 PM »
Thanks! I've already been there.
I know, we can go to menu by key.press(KEY.MENU)
Navigate by key.press(KEY.WHEEL_DOWN) etc
SET and Q buttons.

But it's a blind walk.
I can command step-by-step: left-right-set-Q etc, but it won't exactly know that it changes: 1920 25 ALL-I   to  1280 50 ALL-I
If I browse through menu before, it will mess all the instructions.

p.s. Oh, I have an idea. Have to check it. I'll reply here later ;)
5d3 1.1.3 exp | Canon 16-35 4.0L | Canon 50 1.4 | Canon 100mm 2.8 macro
Ronin-S

a1ex

  • Administrator
  • Hero Member
  • *****
  • Posts: 12326
  • Holidays!
Re: Changing Canon's menu settings
« Reply #3 on: November 18, 2019, 09:06:07 AM »
There's no sensible way to do this from Lua at the time of writing, I'm afraid.

Options (for future development):

1) Add some API to switch video modes, for example, movie.set_mode(1080, 30) or movie.set_mode("1080p25 ALL-I crop") or maybe movie.set_mode{res=1080, fps=24, crop=true, compression=H264.ALL_I}; such a function would - internally - take care of the PAL/NTSC setting. I'm not sure whether to go for int/bool parameters, data structure (table of named parameters), string parsing or predefined constants (presets), given the variations in movie mode configurations among different models. Whitelisting all valid video modes, for each camera model, might be necessary; invalid setting can soft-brick the camera (recoverable, but... ask Danne). Pretty much the same constraints as with picture quality setting.

2) Add some API for Canon menu navigation (it is possible to retrieve all menu strings from the current page, and the current menu selection from properties, but I'm not sure how portable these things are). This would also be language-dependent.

3) Expose various Canon settings (PAL/NTSC, but also many others) directly to Lua; many of them are portable, but some aren't. There is a generic property interface in Lua, but it's disabled by default, because I don't trust the input validation done by Canon firmware (which is often done at next boot, *after* saving the incorrect setting into nonvolatile memories, resulting in a soft-brick). One would need to whitelist all valid settings for all camera models, which is a huge amount of work without proper tools (automation), also considering the risk of soft-bricking and the time required to recover. Sure, PAL/NTSC is a just boolean setting, and most (if not all) EOS models have it, so exposing this particular setting is quite straightforward, but I'm considering the larger problem of making most "interesting" Canon settings available to Lua, on all supported models, current AND future.

I'd find all these options useful, but neither is trivial to implement in a portable way. They would all require a solid test suite (doable in QEMU, takes a lot of time - but the benefits of a solid test suite could be huge - for the entire ML project, not just for a few tiny features).

BTW - for switching Canon settings, the C modes from the mode dial might do the trick.