ML on EOS-M2

Started by Palpatine, September 22, 2015, 02:48:23 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

dfort

How about taking the EOSM2 with ML out in the field? Yeah, not many features are working yet but here's one that is:

Movie crop mode


Same settings without Movie crop mode


No big deal. These are from H.264 files and the EOSM2 has digital zoom mode for video that does the same thing but hey, the camera is usable while ML is loaded so that's an accomplishment!



BTW--These were shot at the Elephant Seal Rookery in San Simeon, California. These are in the wild and not in a zoo. Canon EF-S 55-250mm STM lens with an EF to EF-M adapter.

Shooting CR2 and JPEG with ML loaded is also working. Yay!




Danne

Nice animal.
You can shoot raw lossless. Set fps override to 24 then push timer a under advanced settings with something like 50 units, can't remember exactly. Free liveview by pushing menu button twice.

dfort

Really? Try doing that while being chased by an elephant seal.

Anyway--thought I'd try running some tests with yet another new build. Merged in qemu and lua_fix. Test build on my downloads page.

Quote from: a1ex on December 16, 2017, 01:36:42 AM
Call for testers - as lately I've been hunting various bugs on this branch, and noticed some of the changes introduced model-specific issues (for example, api_test.lua was failing on 60D on one of the earliest tests).

For every single camera model available on the Experiments page (lua_fix build), please run:

- api_test.lua (upload the log)
- selftest.mo -> stubs tests (upload the log)
- bench.mo -> memory benchmarks (upload the screenshot)
- overall sanity check (for example, if you decide to take this build out and use it for a couple of hours, please report back)

Looks like there is a problem with the Menu/GUI stubs? Also looks like this camera has some nunchucks -- I mean num_chunks issues.

api_test.lua


LUATEST.LOG

===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2019-1-1 23:20:32
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 104
    apex = 6.
    ms = 16
    value = 0.015625
  aperture = table:
    raw = 48
    apex = 5.
    value = 5.6
    min = table:
      raw = 40
      apex = 4.
      value = 4.
    max = table:
      raw = 80
      apex = 9.
      value = 22.6
  iso = table:
    raw = 72
    apex = 5.
    value = 100
  ec = table:
    raw = 0
    value = 0
  flash = true
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 6500
  mode = 3
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS M2"
  model_short = "EOSM2"
  firmware = "1.0.3"
  temperature = 211
  gui = table:
    menu = false
    play = false
    play_photo = false
    play_movie = false
    qr = false
    idle = false
  shoot = function: 0xb0c564
  wait = function: 0xb0b490
  bulb = function: 0xb0c798
  reboot = function: 0xb0c538
  burst = function: 0xb0c818
event = table:
  pre_shoot = nil
  post_shoot = nil
  shoot_task = nil
  seconds_clock = nil
  keypress = nil
  custom_picture_taking = nil
  intervalometer = nil
  config_save = nil
console = table:
  hide = function: 0xb09e14
  show = function: 0xb09e24
  write = function: 0xb09eb8
  clear = function: 0xb09e04
lv = table:
  enabled = true
  paused = false
  running = true
  zoom = 1
  overlays = false
  pause = function: 0xb0d048
  stop = function: 0xb0c9b0
  wait = function: 0xb0d408
  info = function: 0xb0cd44
  resume = function: 0xb0d038
  start = function: 0xb0c9a0
lens = table:
  name = "EF-S55-250mm f/4-5.6 IS STM"
  focal_length = 55
  focus_distance = 655350
  hyperfocal = 28540
  dof_near = 27357
  dof_far = 1000000
  af = true
  af_mode = 0
  focus = function: 0xb0e0b4
  autofocus = function: 0xb0deec
display = table:
  idle = nil
  height = 480
  width = 720
  load = function: 0xb0ec24
  off = function: 0xb0e930
  print = function: 0xb0fd60
  clear = function: 0xb0e84c
  notify_box = function: 0xb0e9f4
  pixel = function: 0xb0fb94
  screenshot = function: 0xb0e85c
  on = function: 0xb0e940
  rect = function: 0xb0f568
  draw = function: 0xb0eadc
  line = function: 0xb0f8cc
  circle = function: 0xb0f298
key = table:
  last = 10
  press = function: 0xb10538
  wait = function: 0xb10270
menu = table:
  visible = false
  set = function: 0xb11b24
  close = function: 0xb10898
  new = function: 0xb12960
  get = function: 0xb11d04
  block = function: 0xb10aa0
  select = function: 0xb11a50
  open = function: 0xb108b0
movie = table:
  recording = false
  stop = function: 0xb0e4b4
  start = function: 0xb0e548
dryos = table:
  clock = 23
  ms_clock = 23408
  image_prefix = "IMG_"
  config_dir = table:
    exists = true
    create = function: 0xb13c84
    children = function: 0xb13b0c
    files = function: 0xb139f0
    parent = table:
      exists = true
      create = function: 0xb13c84
      children = function: 0xb13b0c
      files = function: 0xb139f0
      parent = table:
        exists = true
        create = function: 0xb13c84
        children = function: 0xb13b0c
        files = function: 0xb139f0
        parent = nil
        path = "B:/"
      path = "ML/"
    path = "ML/SETTINGS/"
  ml_card = table:
    drive_letter = "B"
    dcim_dir = table:
      exists = true
      create = function: 0xb13c84
      children = function: 0xb13b0c
      files = function: 0xb139f0
      parent = table:
        exists = true
        create = function: 0xb13c84
        children = function: 0xb13b0c
        files = function: 0xb139f0
        parent = table:
          exists = true
          create = function: 0xb13c84
          children = function: 0xb13b0c
          files = function: 0xb139f0
          parent = nil
          path = "B:/"
        path = "B:/DCIM/"
      path = "B:/DCIM/100CANON/"
    file_number = 1393
    folder_number = 100
    free_space = 13128
    image_path = function: 0xb13e60
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    drive_letter = "B"
    dcim_dir = table:
      exists = true
      create = function: 0xb13c84
      children = function: 0xb13b0c
      files = function: 0xb139f0
      parent = table:
        exists = true
        create = function: 0xb13c84
        children = function: 0xb13b0c
        files = function: 0xb139f0
        parent = table:
          exists = true
          create = function: 0xb13c84
          children = function: 0xb13b0c
          files = function: 0xb139f0
          parent = nil
          path = "B:/"
        path = "B:/DCIM/"
      path = "B:/DCIM/100CANON/"
    file_number = 1393
    folder_number = 100
    free_space = 13128
    image_path = function: 0xb13e60
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  cf_card = nil
  sd_card = table:
    drive_letter = "B"
    dcim_dir = table:
      exists = true
      create = function: 0xb13c84
      children = function: 0xb13b0c
      files = function: 0xb139f0
      parent = table:
        exists = true
        create = function: 0xb13c84
        children = function: 0xb13b0c
        files = function: 0xb139f0
        parent = table:
          exists = true
          create = function: 0xb13c84
          children = function: 0xb13b0c
          files = function: 0xb139f0
          parent = nil
          path = "B:/"
        path = "B:/DCIM/"
      path = "B:/DCIM/100CANON/"
    file_number = 1393
    folder_number = 100
    free_space = 13128
    image_path = function: 0xb13e60
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    hour = 23
    sec = 33
    year = 2019
    month = 1
    isdst = false
    wday = 3
    yday = 1
    day = 1
    min = 20
  directory = function: 0xb13550
  rename = function: 0xb13410
  call = function: 0xb1320c
  remove = function: 0xb134e4
interval = table:
  time = 10
  count = 0
  running = false
  stop = function: 0xb148a0
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:45: in function <ML/SCRIPTS/API_TEST.LUA:44>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:44: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:90: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1494: in function <ML/SCRIPTS/API_TEST.LUA:1490>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:1490: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1529: in main chunktask = table:
  create = function: 0xb15088
  yield = function: 0xb14f08
property = table:
Generic tests completed.

Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
SD card (B:/) present
- free space: 13128 MiB
- next image: B:/DCIM/100CANON/IMG_1394.CR2
- DCIM dir. : B:/DCIM/100CANON/
- B:/DCIM/100CANON/IMG_1352.CR2
- B:/DCIM/100CANON/IMG_1353.CR2
- B:/DCIM/100CANON/MVI_1354.MOV
- B:/DCIM/100CANON/MVI_1355.MOV
- B:/DCIM/100CANON/MVI_1356.MOV
- B:/DCIM/100CANON/MVI_1357.MOV
- B:/DCIM/100CANON/MVI_1358.MOV
- B:/DCIM/100CANON/MVI_1359.MOV
- B:/DCIM/100CANON/MVI_1360.MOV
- B:/DCIM/100CANON/IMG_1361.CR2
- B:/DCIM/100CANON/IMG_1362.CR2
- B:/DCIM/100CANON/IMG_1363.CR2
- B:/DCIM/100CANON/IMG_1364.CR2
- B:/DCIM/100CANON/IMG_1365.CR2
- B:/DCIM/100CANON/MVI_1366.MOV
- B:/DCIM/100CANON/MVI_1367.MOV
- B:/DCIM/100CANON/MVI_1368.MOV
- B:/DCIM/100CANON/MVI_1369.MOV
- B:/DCIM/100CANON/IMG_1370.CR2
- B:/DCIM/100CANON/IMG_1371.CR2
- B:/DCIM/100CANON/IMG_1372.CR2
- B:/DCIM/100CANON/IMG_1373.CR2
- B:/DCIM/100CANON/IMG_1374.CR2
- B:/DCIM/100CANON/IMG_1375.CR2
- B:/DCIM/100CANON/IMG_1376.CR2
- B:/DCIM/100CANON/IMG_1377.CR2
- B:/DCIM/100CANON/IMG_1378.CR2
- B:/DCIM/100CANON/IMG_1379.CR2
- B:/DCIM/100CANON/IMG_1380.CR2
- B:/DCIM/100CANON/IMG_1381.CR2
- B:/DCIM/100CANON/IMG_1382.CR2
- B:/DCIM/100CANON/IMG_1383.CR2
- B:/DCIM/100CANON/IMG_1384.CR2
- B:/DCIM/100CANON/MVI_1385.MOV
- B:/DCIM/100CANON/MVI_1386.MOV
- B:/DCIM/100CANON/IMG_1387.CR2
- B:/DCIM/100CANON/MVI_1388.MOV
- B:/DCIM/100CANON/MVI_1389.MOV
- B:/DCIM/100CANON/IMG_1390.CR2
- B:/DCIM/100CANON/MVI_1391.MOV
- B:/DCIM/100CANON/IMG_1392.CR2
- B:/DCIM/100CANON/MVI_1393.MOV
- B:/SPOTLI~1/
  - B:/SPOTLI~1/STORE-V2/
    - B:/SPOTLI~1/STORE-V2/DEEEAF~1/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.REP/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.COR/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.LIV/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~2.LIV/
        - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~2.LIV/RETIRE.26
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~3.LIV/
        - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~3.LIV/JOURNA~1.163
        - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~3.LIV/RETIR~1.163
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~4.LIV/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.ASS/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~2.ASS/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.HEA/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.MIG/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~2.MIG/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.SCA/
        - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.SCA/RETIRE.582
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/PSID.DB
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/TM~1.SNO
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/TM~1.LIO
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIO~1.CRE
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/TMP.CAB
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/CA~1.CRE
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/INDEXS~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~1.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~2.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~3.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~4.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~5.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~~37.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~~40.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~1.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/STOR~1.UPD
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/0DIREC~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~2.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~~54.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~~57.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~~60.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~1.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/PERMST~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/CA~1.MOD
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~2.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~3.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~4.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~5.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~90.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~93.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/STORE.DB
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/STOR~1.DB
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/REVERS~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/TMPSPO~1.STA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/STORE_~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/SHUTDO~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/REVERS~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~152.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~155.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~1.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE4D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~2.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~168.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~171.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~174.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~177.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~181.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~186.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~3.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~2.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~4.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~5.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~204.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/REVERS~1.UPD
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~211.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/TMPSPO~1.LOC
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~217.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~220.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~224.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~227.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~231.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~234.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~238.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE0D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~245.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~248.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~251.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~254.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~257.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~3.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE5D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~267.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~270.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~273.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~276.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~279.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~282.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~285.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~288.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~292.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~295.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~299.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~302.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~305.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~308.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~311.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~314.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~4.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE1D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~324.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~327.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~330.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~333.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~336.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~339.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~343.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~346.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~349.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~352.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~355.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~358.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~5.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE3D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~368.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~371.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~374.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~377.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~417.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~420.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~424.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~427.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~430.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~433.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~436.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~439.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~442.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE2D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~449.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~452.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~455.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~458.IND
  - B:/SPOTLI~1/STORE-V1/
    - B:/SPOTLI~1/STORE-V1/VOLUME~1.PLI
  - B:/SPOTLI~1/VOLUME~1.PLI
- B:/ML/
  - B:/ML/MODULES/
    - B:/ML/MODULES/M2_103.SYM
    - B:/ML/MODULES/ADTG_GUI.MO
    - B:/ML/MODULES/ADV_INT.MO
    - B:/ML/MODULES/ARKANOID.MO
    - B:/ML/MODULES/AUTOEXPO.MO
    - B:/ML/MODULES/BENCH.MO
    - B:/ML/MODULES/BOLT_REC.MO
    - B:/ML/MODULES/CROP_REC.MO
    - B:/ML/MODULES/DUAL_ISO.MO
    - B:/ML/MODULES/EDMAC.MO
    - B:/ML/MODULES/FILE_MAN.MO
    - B:/ML/MODULES/FILEPREF.MO
    - B:/ML/MODULES/IME_BASE.MO
    - B:/ML/MODULES/IME_NULL.MO
    - B:/ML/MODULES/IME_ROT.MO
    - B:/ML/MODULES/IME_STD.MO
    - B:/ML/MODULES/IMG_NAME.MO
    - B:/ML/MODULES/IO_CRYPT.MO
    - B:/ML/MODULES/ISO_REGS.MO
    - B:/ML/MODULES/LUA.MO
    - B:/ML/MODULES/MEM_SPY.MO
    - B:/ML/MODULES/MLV_LITE.MO
    - B:/ML/MODULES/MLV_PLAY.MO
    - B:/ML/MODULES/MLV_REC.MO
    - B:/ML/MODULES/MLV_SND.MO
    - B:/ML/MODULES/MPU_DUMP.MO
    - B:/ML/MODULES/PIC_VIEW.MO
    - B:/ML/MODULES/PLOT.MO
    - B:/ML/MODULES/RAW_DIAG.MO
    - B:/ML/MODULES/RAW_TWK.MO
    - B:/ML/MODULES/SD_UHS.MO
    - B:/ML/MODULES/SELFTEST.MO
    - B:/ML/MODULES/SF_DUMP.MO
    - B:/ML/MODULES/SILENT.MO
    - B:/ML/MODULES/TRACE.MO
    - B:/ML/MODULES/LOADING.LCK
  - B:/ML/FONTS/
    - B:/ML/FONTS/ARGHLF22.RBF
    - B:/ML/FONTS/ARGNOR23.RBF
    - B:/ML/FONTS/ARGNOR28.RBF
    - B:/ML/FONTS/ARGNOR32.RBF
    - B:/ML/FONTS/TERM12.RBF
    - B:/ML/FONTS/TERM20.RBF
  - B:/ML/DATA/
    - B:/ML/DATA/APSC8P.LUT
    - B:/ML/DATA/APSC8R.LUT
    - B:/ML/DATA/FF8P.LUT
    - B:/ML/DATA/FF8R.LUT
  - B:/ML/CROPMKS/
    - B:/ML/CROPMKS/CINESCO2.BMP
    - B:/ML/CROPMKS/CRSSMTR2.BMP
    - B:/ML/CROPMKS/PASSPORT.BMP
    - B:/ML/CROPMKS/PHIPHOTO.BMP
    - B:/ML/CROPMKS/PHIVIDEO.BMP
  - B:/ML/SCRIPTS/
    - B:/ML/SCRIPTS/LIB/
      - B:/ML/SCRIPTS/LIB/LOGGER.LUA
      - B:/ML/SCRIPTS/LIB/KEYS.LUA
      - B:/ML/SCRIPTS/LIB/CONFIG.LUA
      - B:/ML/SCRIPTS/LIB/STRICT.LUA
    - B:/ML/SCRIPTS/DARKFR~1.LUA
    - B:/ML/SCRIPTS/25K10B~1.LUA
    - B:/ML/SCRIPTS/1080P1~1.LUA
    - B:/ML/SCRIPTS/REBOOT.LUA
    - B:/ML/SCRIPTS/SDOVER~1.LUA
    - B:/ML/SCRIPTS/ADTGHE~1.LUA
    - B:/ML/SCRIPTS/SCRNSHOT.LUA
    - B:/ML/SCRIPTS/25K10B~2.LUA
    - B:/ML/SCRIPTS/MENUTEST.LUA
    - B:/ML/SCRIPTS/1080P1~2.LUA
    - B:/ML/SCRIPTS/COPY2M.LUA
    - B:/ML/SCRIPTS/UNLOAD.LUA
    - B:/ML/SCRIPTS/API_TEST.LUA
  - B:/ML/DOC/
  - B:/ML/LOGS/
    - B:/ML/LOGS/ROM1.BIN
    - B:/ML/LOGS/ROM0.BIN
    - B:/ML/LOGS/STUBTEST.LOG
    - B:/ML/LOGS/LUATEST.LOG
  - B:/ML/SETTINGS/
    - B:/ML/SETTINGS/LUA.EN
    - B:/ML/SETTINGS/MAGIC.CFG
    - B:/ML/SETTINGS/MENUS.CFG
- B:/TRASHE~1/
  - B:/TRASHE~1/501/
  - B:/TRASHE~1/_50~1
- B:/DCIM/
  - B:/DCIM/100CANON/
    - B:/DCIM/100CANON/IMG_1352.CR2
    - B:/DCIM/100CANON/IMG_1353.CR2
    - B:/DCIM/100CANON/MVI_1354.MOV
    - B:/DCIM/100CANON/MVI_1355.MOV
    - B:/DCIM/100CANON/MVI_1356.MOV
    - B:/DCIM/100CANON/MVI_1357.MOV
    - B:/DCIM/100CANON/MVI_1358.MOV
    - B:/DCIM/100CANON/MVI_1359.MOV
    - B:/DCIM/100CANON/MVI_1360.MOV
    - B:/DCIM/100CANON/IMG_1361.CR2
    - B:/DCIM/100CANON/IMG_1362.CR2
    - B:/DCIM/100CANON/IMG_1363.CR2
    - B:/DCIM/100CANON/IMG_1364.CR2
    - B:/DCIM/100CANON/IMG_1365.CR2
    - B:/DCIM/100CANON/MVI_1366.MOV
    - B:/DCIM/100CANON/MVI_1367.MOV
    - B:/DCIM/100CANON/MVI_1368.MOV
    - B:/DCIM/100CANON/MVI_1369.MOV
    - B:/DCIM/100CANON/IMG_1370.CR2
    - B:/DCIM/100CANON/IMG_1371.CR2
    - B:/DCIM/100CANON/IMG_1372.CR2
    - B:/DCIM/100CANON/IMG_1373.CR2
    - B:/DCIM/100CANON/IMG_1374.CR2
    - B:/DCIM/100CANON/IMG_1375.CR2
    - B:/DCIM/100CANON/IMG_1376.CR2
    - B:/DCIM/100CANON/IMG_1377.CR2
    - B:/DCIM/100CANON/IMG_1378.CR2
    - B:/DCIM/100CANON/IMG_1379.CR2
    - B:/DCIM/100CANON/IMG_1380.CR2
    - B:/DCIM/100CANON/IMG_1381.CR2
    - B:/DCIM/100CANON/IMG_1382.CR2
    - B:/DCIM/100CANON/IMG_1383.CR2
    - B:/DCIM/100CANON/IMG_1384.CR2
    - B:/DCIM/100CANON/MVI_1385.MOV
    - B:/DCIM/100CANON/MVI_1386.MOV
    - B:/DCIM/100CANON/IMG_1387.CR2
    - B:/DCIM/100CANON/MVI_1388.MOV
    - B:/DCIM/100CANON/MVI_1389.MOV
    - B:/DCIM/100CANON/IMG_1390.CR2
    - B:/DCIM/100CANON/MVI_1391.MOV
    - B:/DCIM/100CANON/IMG_1392.CR2
    - B:/DCIM/100CANON/MVI_1393.MOV
  - B:/DCIM/EOSMISC/
    - B:/DCIM/EOSMISC/M2100.CTG
- B:/MISC/
- B:/FSEVEN~1/
  - B:/FSEVEN~1/FSEVEN~1
  - B:/FSEVEN~1/000000~1
  - B:/FSEVEN~1/000000~2
- B:/ML-SETUP.FIR
- B:/AUTOEXEC.BIN
- B:/BENCH0.PPM
File I/O tests completed.

Testing Canon GUI functions...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...

ML/SCRIPTS/API_TEST.LUA:309: assertion failed!
stack traceback:
[C]: in function 'globals.assert'
ML/SCRIPTS/API_TEST.LUA:309: in function 'globals.test_camera_gui'
ML/SCRIPTS/API_TEST.LUA:1498: in function <ML/SCRIPTS/API_TEST.LUA:1490>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:1490: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1529: in main chunk
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2019-1-1 23:22:32
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 104
    apex = 6.
    ms = 16
    value = 0.015625
  aperture = table:
    raw = 48
    apex = 5.
    value = 5.6
    min = table:
      raw = 40
      apex = 4.
      value = 4.
    max = table:
      raw = 80
      apex = 9.
      value = 22.6
  iso = table:
    raw = 72
    apex = 5.
    value = 100
  ec = table:
    raw = 0
    value = 0
  flash = true
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 6500
  mode = 3
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS M2"
  model_short = "EOSM2"
  firmware = "1.0.3"
  temperature = 213
  gui = table:
    menu = false
    play = false
    play_photo = false
    play_movie = false
    qr = false
    idle = false
  shoot = function: 0xb0c564
  burst = function: 0xb0c818
  reboot = function: 0xb0c538
  bulb = function: 0xb0c798
  wait = function: 0xb0b490
event = table:
  pre_shoot = nil
  post_shoot = nil
  shoot_task = nil
  seconds_clock = nil
  keypress = nil
  custom_picture_taking = nil
  intervalometer = nil
  config_save = nil
console = table:
  write = function: 0xb09eb8
  show = function: 0xb09e24
  hide = function: 0xb09e14
  clear = function: 0xb09e04
lv = table:
  enabled = true
  paused = false
  running = true
  zoom = 1
  overlays = false
  resume = function: 0xb0d038
  stop = function: 0xb0c9b0
  info = function: 0xb0cd44
  wait = function: 0xb0d408
  start = function: 0xb0c9a0
  pause = function: 0xb0d048
lens = table:
  name = "EF-S55-250mm f/4-5.6 IS STM"
  focal_length = 55
  focus_distance = 2000
  hyperfocal = 28540
  dof_near = 1882
  dof_far = 2134
  af = true
  af_mode = 0
  autofocus = function: 0xb0deec
  focus = function: 0xb0e0b4
display = table:
  idle = nil
  height = 480
  width = 720
  load = function: 0xb0ec24
  circle = function: 0xb0f298
  pixel = function: 0xb0fb94
  draw = function: 0xb0eadc
  rect = function: 0xb0f568
  off = function: 0xb0e930
  print = function: 0xb0fd60
  notify_box = function: 0xb0e9f4
  screenshot = function: 0xb0e85c
  on = function: 0xb0e940
  line = function: 0xb0f8cc
  clear = function: 0xb0e84c
key = table:
  last = 10
  wait = function: 0xb10270
  press = function: 0xb10538
menu = table:
  visible = false
  open = function: 0xb108b0
  close = function: 0xb10898
  get = function: 0xb11d04
  block = function: 0xb10aa0
  new = function: 0xb12960
  select = function: 0xb11a50
  set = function: 0xb11b24
movie = table:
  recording = false
  start = function: 0xb0e548
  stop = function: 0xb0e4b4
dryos = table:
  clock = 144
  ms_clock = 144112
  image_prefix = "IMG_"
  config_dir = table:
    exists = true
    create = function: 0xb13c84
    children = function: 0xb13b0c
    files = function: 0xb139f0
    parent = table:
      exists = true
      create = function: 0xb13c84
      children = function: 0xb13b0c
      files = function: 0xb139f0
      parent = table:
        exists = true
        create = function: 0xb13c84
        children = function: 0xb13b0c
        files = function: 0xb139f0
        parent = nil
        path = "B:/"
      path = "ML/"
    path = "ML/SETTINGS/"
  ml_card = table:
    drive_letter = "B"
    dcim_dir = table:
      exists = true
      create = function: 0xb13c84
      children = function: 0xb13b0c
      files = function: 0xb139f0
      parent = table:
        exists = true
        create = function: 0xb13c84
        children = function: 0xb13b0c
        files = function: 0xb139f0
        parent = table:
          exists = true
          create = function: 0xb13c84
          children = function: 0xb13b0c
          files = function: 0xb139f0
          parent = nil
          path = "B:/"
        path = "B:/DCIM/"
      path = "B:/DCIM/100CANON/"
    file_number = 1394
    folder_number = 100
    free_space = 13110
    image_path = function: 0xb13e60
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    drive_letter = "B"
    dcim_dir = table:
      exists = true
      create = function: 0xb13c84
      children = function: 0xb13b0c
      files = function: 0xb139f0
      parent = table:
        exists = true
        create = function: 0xb13c84
        children = function: 0xb13b0c
        files = function: 0xb139f0
        parent = table:
          exists = true
          create = function: 0xb13c84
          children = function: 0xb13b0c
          files = function: 0xb139f0
          parent = nil
          path = "B:/"
        path = "B:/DCIM/"
      path = "B:/DCIM/100CANON/"
    file_number = 1394
    folder_number = 100
    free_space = 13110
    image_path = function: 0xb13e60
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  cf_card = nil
  sd_card = table:
    drive_letter = "B"
    dcim_dir = table:
      exists = true
      create = function: 0xb13c84
      children = function: 0xb13b0c
      files = function: 0xb139f0
      parent = table:
        exists = true
        create = function: 0xb13c84
        children = function: 0xb13b0c
        files = function: 0xb139f0
        parent = table:
          exists = true
          create = function: 0xb13c84
          children = function: 0xb13b0c
          files = function: 0xb139f0
          parent = nil
          path = "B:/"
        path = "B:/DCIM/"
      path = "B:/DCIM/100CANON/"
    file_number = 1394
    folder_number = 100
    free_space = 13110
    image_path = function: 0xb13e60
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    min = 22
    month = 1
    sec = 34
    day = 1
    isdst = false
    yday = 1
    year = 2019
    wday = 3
    hour = 23
  call = function: 0xb1320c
  rename = function: 0xb13410
  remove = function: 0xb134e4
  directory = function: 0xb13550
interval = table:
  time = 10
  count = 0
  running = false
  stop = function: 0xb148a0
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:45: in function <ML/SCRIPTS/API_TEST.LUA:44>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:44: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:90: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1494: in function <ML/SCRIPTS/API_TEST.LUA:1490>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:1490: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1529: in main chunktask = table:
  create = function: 0xb15088
  yield = function: 0xb14f08
property = table:
Generic tests completed.

Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
SD card (B:/) present
- free space: 13110 MiB
- next image: B:/DCIM/100CANON/IMG_1395.CR2
- DCIM dir. : B:/DCIM/100CANON/
- B:/DCIM/100CANON/IMG_1352.CR2
- B:/DCIM/100CANON/IMG_1353.CR2
- B:/DCIM/100CANON/MVI_1354.MOV
- B:/DCIM/100CANON/MVI_1355.MOV
- B:/DCIM/100CANON/MVI_1356.MOV
- B:/DCIM/100CANON/MVI_1357.MOV
- B:/DCIM/100CANON/MVI_1358.MOV
- B:/DCIM/100CANON/MVI_1359.MOV
- B:/DCIM/100CANON/MVI_1360.MOV
- B:/DCIM/100CANON/IMG_1361.CR2
- B:/DCIM/100CANON/IMG_1362.CR2
- B:/DCIM/100CANON/IMG_1363.CR2
- B:/DCIM/100CANON/IMG_1364.CR2
- B:/DCIM/100CANON/IMG_1365.CR2
- B:/DCIM/100CANON/MVI_1366.MOV
- B:/DCIM/100CANON/MVI_1367.MOV
- B:/DCIM/100CANON/MVI_1368.MOV
- B:/DCIM/100CANON/MVI_1369.MOV
- B:/DCIM/100CANON/IMG_1370.CR2
- B:/DCIM/100CANON/IMG_1371.CR2
- B:/DCIM/100CANON/IMG_1372.CR2
- B:/DCIM/100CANON/IMG_1373.CR2
- B:/DCIM/100CANON/IMG_1374.CR2
- B:/DCIM/100CANON/IMG_1375.CR2
- B:/DCIM/100CANON/IMG_1376.CR2
- B:/DCIM/100CANON/IMG_1377.CR2
- B:/DCIM/100CANON/IMG_1378.CR2
- B:/DCIM/100CANON/IMG_1379.CR2
- B:/DCIM/100CANON/IMG_1380.CR2
- B:/DCIM/100CANON/IMG_1381.CR2
- B:/DCIM/100CANON/IMG_1382.CR2
- B:/DCIM/100CANON/IMG_1383.CR2
- B:/DCIM/100CANON/IMG_1384.CR2
- B:/DCIM/100CANON/MVI_1385.MOV
- B:/DCIM/100CANON/MVI_1386.MOV
- B:/DCIM/100CANON/IMG_1387.CR2
- B:/DCIM/100CANON/MVI_1388.MOV
- B:/DCIM/100CANON/MVI_1389.MOV
- B:/DCIM/100CANON/IMG_1390.CR2
- B:/DCIM/100CANON/MVI_1391.MOV
- B:/DCIM/100CANON/IMG_1392.CR2
- B:/DCIM/100CANON/MVI_1393.MOV
- B:/DCIM/100CANON/IMG_1394.CR2
- B:/SPOTLI~1/
  - B:/SPOTLI~1/STORE-V2/
    - B:/SPOTLI~1/STORE-V2/DEEEAF~1/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.REP/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.COR/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.LIV/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~2.LIV/
        - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~2.LIV/RETIRE.26
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~3.LIV/
        - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~3.LIV/JOURNA~1.163
        - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~3.LIV/RETIR~1.163
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~4.LIV/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.ASS/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~2.ASS/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.HEA/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.MIG/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~2.MIG/
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.SCA/
        - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1.SCA/RETIRE.582
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/PSID.DB
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/TM~1.SNO
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/TM~1.LIO
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIO~1.CRE
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/TMP.CAB
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/CA~1.CRE
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/INDEXS~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~1.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~2.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~3.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~4.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~5.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~~37.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~~40.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~1.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/STOR~1.UPD
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/0DIREC~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~2.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~~54.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~~57.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/~~~~~~60.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~1.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/PERMST~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/CA~1.MOD
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~2.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~3.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~4.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~5.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~90.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~93.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/STORE.DB
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/STOR~1.DB
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/REVERS~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/TMPSPO~1.STA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/STORE_~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/JOURNA~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/SHUTDO~1
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/REVERS~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~152.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~155.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~1.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE4D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~2.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~168.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~171.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~174.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~177.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~181.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~186.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~3.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~2.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~4.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~5.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~204.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/REVERS~1.UPD
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~211.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/TMPSPO~1.LOC
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~217.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~220.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~224.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~227.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~231.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~234.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~238.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE0D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~245.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~248.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~251.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~254.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~257.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~3.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE5D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~267.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~270.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~273.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~276.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~279.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~282.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~285.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~288.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~292.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~295.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~299.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~302.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~305.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~308.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~311.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~314.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~4.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE1D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~324.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~327.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~330.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~333.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~336.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~339.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~343.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~346.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~349.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~352.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~355.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~358.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~~~5.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE3D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~368.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~371.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~374.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~377.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~417.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~420.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~424.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~427.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~430.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~433.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~436.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~439.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~442.DIR
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE2D~1.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~449.SHA
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~452.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~455.IND
      - B:/SPOTLI~1/STORE-V2/DEEEAF~1/LIVE~458.IND
  - B:/SPOTLI~1/STORE-V1/
    - B:/SPOTLI~1/STORE-V1/VOLUME~1.PLI
  - B:/SPOTLI~1/VOLUME~1.PLI
- B:/ML/
  - B:/ML/MODULES/
    - B:/ML/MODULES/M2_103.SYM
    - B:/ML/MODULES/ADTG_GUI.MO
    - B:/ML/MODULES/ADV_INT.MO
    - B:/ML/MODULES/ARKANOID.MO
    - B:/ML/MODULES/AUTOEXPO.MO
    - B:/ML/MODULES/BENCH.MO
    - B:/ML/MODULES/BOLT_REC.MO
    - B:/ML/MODULES/CROP_REC.MO
    - B:/ML/MODULES/DUAL_ISO.MO
    - B:/ML/MODULES/EDMAC.MO
    - B:/ML/MODULES/FILE_MAN.MO
    - B:/ML/MODULES/FILEPREF.MO
    - B:/ML/MODULES/IME_BASE.MO
    - B:/ML/MODULES/IME_NULL.MO
    - B:/ML/MODULES/IME_ROT.MO
    - B:/ML/MODULES/IME_STD.MO
    - B:/ML/MODULES/IMG_NAME.MO
    - B:/ML/MODULES/IO_CRYPT.MO
    - B:/ML/MODULES/ISO_REGS.MO
    - B:/ML/MODULES/LUA.MO
    - B:/ML/MODULES/MEM_SPY.MO
    - B:/ML/MODULES/MLV_LITE.MO
    - B:/ML/MODULES/MLV_PLAY.MO
    - B:/ML/MODULES/MLV_REC.MO
    - B:/ML/MODULES/MLV_SND.MO
    - B:/ML/MODULES/MPU_DUMP.MO
    - B:/ML/MODULES/PIC_VIEW.MO
    - B:/ML/MODULES/PLOT.MO
    - B:/ML/MODULES/RAW_DIAG.MO
    - B:/ML/MODULES/RAW_TWK.MO
    - B:/ML/MODULES/SD_UHS.MO
    - B:/ML/MODULES/SELFTEST.MO
    - B:/ML/MODULES/SF_DUMP.MO
    - B:/ML/MODULES/SILENT.MO
    - B:/ML/MODULES/TRACE.MO
    - B:/ML/MODULES/LOADING.LCK
  - B:/ML/FONTS/
    - B:/ML/FONTS/ARGHLF22.RBF
    - B:/ML/FONTS/ARGNOR23.RBF
    - B:/ML/FONTS/ARGNOR28.RBF
    - B:/ML/FONTS/ARGNOR32.RBF
    - B:/ML/FONTS/TERM12.RBF
    - B:/ML/FONTS/TERM20.RBF
  - B:/ML/DATA/
    - B:/ML/DATA/APSC8P.LUT
    - B:/ML/DATA/APSC8R.LUT
    - B:/ML/DATA/FF8P.LUT
    - B:/ML/DATA/FF8R.LUT
  - B:/ML/CROPMKS/
    - B:/ML/CROPMKS/CINESCO2.BMP
    - B:/ML/CROPMKS/CRSSMTR2.BMP
    - B:/ML/CROPMKS/PASSPORT.BMP
    - B:/ML/CROPMKS/PHIPHOTO.BMP
    - B:/ML/CROPMKS/PHIVIDEO.BMP
  - B:/ML/SCRIPTS/
    - B:/ML/SCRIPTS/LIB/
      - B:/ML/SCRIPTS/LIB/LOGGER.LUA
      - B:/ML/SCRIPTS/LIB/KEYS.LUA
      - B:/ML/SCRIPTS/LIB/CONFIG.LUA
      - B:/ML/SCRIPTS/LIB/STRICT.LUA
    - B:/ML/SCRIPTS/DARKFR~1.LUA
    - B:/ML/SCRIPTS/25K10B~1.LUA
    - B:/ML/SCRIPTS/1080P1~1.LUA
    - B:/ML/SCRIPTS/REBOOT.LUA
    - B:/ML/SCRIPTS/SDOVER~1.LUA
    - B:/ML/SCRIPTS/ADTGHE~1.LUA
    - B:/ML/SCRIPTS/SCRNSHOT.LUA
    - B:/ML/SCRIPTS/25K10B~2.LUA
    - B:/ML/SCRIPTS/MENUTEST.LUA
    - B:/ML/SCRIPTS/1080P1~2.LUA
    - B:/ML/SCRIPTS/COPY2M.LUA
    - B:/ML/SCRIPTS/UNLOAD.LUA
    - B:/ML/SCRIPTS/API_TEST.LUA
  - B:/ML/DOC/
  - B:/ML/LOGS/
    - B:/ML/LOGS/ROM1.BIN
    - B:/ML/LOGS/ROM0.BIN
    - B:/ML/LOGS/STUBTEST.LOG
    - B:/ML/LOGS/LUATEST.LOG
  - B:/ML/SETTINGS/
    - B:/ML/SETTINGS/LUA.EN
    - B:/ML/SETTINGS/MAGIC.CFG
    - B:/ML/SETTINGS/MENUS.CFG
- B:/TRASHE~1/
  - B:/TRASHE~1/501/
  - B:/TRASHE~1/_50~1
- B:/DCIM/
  - B:/DCIM/100CANON/
    - B:/DCIM/100CANON/IMG_1352.CR2
    - B:/DCIM/100CANON/IMG_1353.CR2
    - B:/DCIM/100CANON/MVI_1354.MOV
    - B:/DCIM/100CANON/MVI_1355.MOV
    - B:/DCIM/100CANON/MVI_1356.MOV
    - B:/DCIM/100CANON/MVI_1357.MOV
    - B:/DCIM/100CANON/MVI_1358.MOV
    - B:/DCIM/100CANON/MVI_1359.MOV
    - B:/DCIM/100CANON/MVI_1360.MOV
    - B:/DCIM/100CANON/IMG_1361.CR2
    - B:/DCIM/100CANON/IMG_1362.CR2
    - B:/DCIM/100CANON/IMG_1363.CR2
    - B:/DCIM/100CANON/IMG_1364.CR2
    - B:/DCIM/100CANON/IMG_1365.CR2
    - B:/DCIM/100CANON/MVI_1366.MOV
    - B:/DCIM/100CANON/MVI_1367.MOV
    - B:/DCIM/100CANON/MVI_1368.MOV
    - B:/DCIM/100CANON/MVI_1369.MOV
    - B:/DCIM/100CANON/IMG_1370.CR2
    - B:/DCIM/100CANON/IMG_1371.CR2
    - B:/DCIM/100CANON/IMG_1372.CR2
    - B:/DCIM/100CANON/IMG_1373.CR2
    - B:/DCIM/100CANON/IMG_1374.CR2
    - B:/DCIM/100CANON/IMG_1375.CR2
    - B:/DCIM/100CANON/IMG_1376.CR2
    - B:/DCIM/100CANON/IMG_1377.CR2
    - B:/DCIM/100CANON/IMG_1378.CR2
    - B:/DCIM/100CANON/IMG_1379.CR2
    - B:/DCIM/100CANON/IMG_1380.CR2
    - B:/DCIM/100CANON/IMG_1381.CR2
    - B:/DCIM/100CANON/IMG_1382.CR2
    - B:/DCIM/100CANON/IMG_1383.CR2
    - B:/DCIM/100CANON/IMG_1384.CR2
    - B:/DCIM/100CANON/MVI_1385.MOV
    - B:/DCIM/100CANON/MVI_1386.MOV
    - B:/DCIM/100CANON/IMG_1387.CR2
    - B:/DCIM/100CANON/MVI_1388.MOV
    - B:/DCIM/100CANON/MVI_1389.MOV
    - B:/DCIM/100CANON/IMG_1390.CR2
    - B:/DCIM/100CANON/MVI_1391.MOV
    - B:/DCIM/100CANON/IMG_1392.CR2
    - B:/DCIM/100CANON/MVI_1393.MOV
    - B:/DCIM/100CANON/IMG_1394.CR2
  - B:/DCIM/EOSMISC/
    - B:/DCIM/EOSMISC/M2100.CTG
- B:/MISC/
- B:/FSEVEN~1/
  - B:/FSEVEN~1/FSEVEN~1
  - B:/FSEVEN~1/000000~1
  - B:/FSEVEN~1/000000~2
- B:/ML-SETUP.FIR
- B:/AUTOEXEC.BIN
- B:/BENCH0.PPM
- B:/VRAM0.PPM
- B:/VRAM1.PPM
- B:/VRAM2.PPM
- B:/VRAM3.PPM
- B:/VRAM4.PPM
- B:/VRAM5.PPM
- B:/VRAM6.PPM
- B:/VRAM7.PPM
- B:/VRAM8.PPM
- B:/VRAM9.PPM
- B:/VRAM10.PPM
- B:/VRAM11.PPM
- B:/VRAM12.PPM
- B:/VRAM13.PPM
- B:/VRAM14.PPM
- B:/VRAM15.PPM
File I/O tests completed.

Testing Canon GUI functions...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...

ML/SCRIPTS/API_TEST.LUA:309: assertion failed!
stack traceback:
[C]: in function 'globals.assert'
ML/SCRIPTS/API_TEST.LUA:309: in function 'globals.test_camera_gui'
ML/SCRIPTS/API_TEST.LUA:1498: in function <ML/SCRIPTS/API_TEST.LUA:1490>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:1490: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1529: in main chunk


selftest.mo -> stubs tests
STUBTEST.LOG
[Pass] is_play_mode() => 0x1
[INFO] Camera model: Canon EOS M2 1.0.3 (0x80000355 EOSM2)
[Pass] is_camera("DIGIC", "*") => 0x1
[Pass] is_camera(__camera_model_short, firmware_version) => 0x1
[Pass] src = fio_malloc(size) => 0x4de3609c
[Pass] dst = fio_malloc(size) => 0x4e63a0a8
[Pass] memcmp(dst, src, 4097) => 0xffffffea
[Pass] edmac_memcpy(dst, src, 4097) => 0x4e63a0a8
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x4e63a0a8
[Pass] memcmp(dst, src, size) => 0xffffffc7
[Pass] edmac_memcpy(dst, src, size) => 0x4e63a0a8
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffea
[Pass] edmac_memcpy_start(dst, src, size) => 0x4e63a0a8
       dt => 0x293c
[Pass] copied => 0x400958
[Pass] copied => 0x400958
[Pass] copied => 0x400958
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x2
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xa9e728
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x81e
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xf4
[Pass] tries[1] => 0xfe
[Pass] tries[2] => 0x10a
[Pass] tries[3] => 0xec
[Pass] failr[0] => 0x4c
[Pass] failw[0] => 0x97
[Pass] failr[1] => 0x44
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0x9f
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x1c
       times[1] / tries[1] => 0x1c
       times[2] / tries[2] => 0x1f
       times[3] / tries[3] => 0x1e
Cache tests finished.

[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x5
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
       FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x40aa04a0
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x5
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x4de3609c
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x5
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x8808
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x1
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x882e
       msleep(400)
       CancelTimer(timer)
[Pass] timer_func => 0x0
       msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x32bc4
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x11a
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xfd
[Pass] ABS((get_us_clock() - t0) - 110000) => 0x1b4
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x32bc6
       msleep(80)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x3
       msleep(80)
[Pass] timer_func => 0x3
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x244
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x228
[Pass] ABS((get_us_clock() - t0) - 310000) => 0x195
       t0 = GET_DIGIC_TIMER() => 0xff3b3
       msleep(250)
       t1 = GET_DIGIC_TIMER() => 0x3b4f5
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x4
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x37
       Date/time: 2019/01/01 23:18:55
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x39
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
       m0 = MALLOC_FREE_MEMORY => 0x602e8
[Pass] p = (void*)_malloc(50*1024) => 0x11e7a8
[Pass] CACHEABLE(p) => 0x11e7a8
       m1 = MALLOC_FREE_MEMORY => 0x53ad8
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x602e8
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x1ecce4
[Pass] p = (void*)_AllocateMemory(128*1024) => 0xaa0460
[Pass] CACHEABLE(p) => 0xaa0460
       m1 = GetFreeMemForAllocateMemory() => 0x1cccd8
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x1ecce4
[Pass] ABS((m0-m1) - 128*1024) => 0xc
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x602e8
       m02 = GetFreeMemForAllocateMemory() => 0x1ecce4
[Pass] p = (void*)_alloc_dma_memory(128*1024) => 0x40aa04a0
[Pass] UNCACHEABLE(p) => 0x40aa04a0
[Pass] CACHEABLE(p) => 0xaa04a0
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40aa04a0
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(16*1024*1024) => 0x4de3608c
[Pass] UNCACHEABLE(p) => 0x4de3608c
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x602e8
       m12 = GetFreeMemForAllocateMemory() => 0x1ecce4
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(16*1024*1024) => 0x11e7a8
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x11e7d0
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4de36088
[Pass] UNCACHEABLE(p) => 0x4de36088
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0x102390
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1498000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x1023b8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1498000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4de1a070
[Pass] UNCACHEABLE(p) => 0x4de1a070
       largest_shoot_block = suite->size => 0x1498000
[INFO] largest_shoot_block: 21MB
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(largest_shoot_block + 1024*1024) => 0x102390
[Pass] suite->signature => 'MemSuite'
[FAIL] suite->num_chunks => 0x1
[Pass] suite->size => 0x1598000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x1023b8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1598000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4de1a070
[Pass] UNCACHEABLE(p) => 0x4de1a070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x1598000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0x102390
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x1700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x1023b8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x15b4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4de1a070
[Pass] UNCACHEABLE(p) => 0x4de1a070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1023f0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x169c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4ae00064
[Pass] UNCACHEABLE(p) => 0x4ae00064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x117458
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x45f240e4
[Pass] UNCACHEABLE(p) => 0x45f240e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x1700000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[FAIL] suite->num_chunks => 0x1
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x205a7c
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x205a60
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x205a40
[Pass] bar => '*****hjkl;'
       bzero32(bar + 5, 5)
[Pass] bar => '****'
       EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       task_create("test", 0x1c, 0x1000, test_task, 0) => 0xde9400ea
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] get_task_name_from_id(current_task->taskId) => 'run_test'
[Pass] task_max => 0x84
[Pass] task_max => 0x84
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0xde9600ba
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0xde980102
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0xde9a004c
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
       SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
       SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
       SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
       GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[FAIL] MENU_MODE => 0x0
[FAIL] PLAY_MODE => 0x1
[Pass] dialog->type => 'DIALOG'
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[FAIL] PLAY_MODE => 0x1
       SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
       SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[FAIL] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
=========================================================
Test complete, 11368 passed, 24 failed.
.


bench.mo -> memory benchmarks

gukuangshi

NICE work on digital zoom. I have tried this vision, and I find that I can't take a photo with the Movie crop mode. One more question is that once the white balance is adjusted, it can't turn back to auto, and when taking photos, the liveview will change. Hope trap Focusing mode will come one day.

dfort

Quote from: gukuangshi on January 03, 2019, 01:18:02 AM
...I can't take a photo with the Movie crop mode.

That is by design, same as on the EOSM. In fact you should get a warning screen like this:



Interesting that the EOSM shows the same warning even though it  doesn't "officially" support Digital zoom from the Canon menu.

Quote from: gukuangshi on January 03, 2019, 01:18:02 AM
...once the white balance is adjusted, it can't turn back to auto...

You need to use the Canon menu to switch back to auto white balance. (Once again funky colors when doing a screenshot of the Canon menus.)





Quote from: gukuangshi on January 03, 2019, 01:18:02 AM
...and when taking photos, the liveview will change.

Not sure what you mean by that. The ML overlays often vanish, that's a bug.

Quote from: gukuangshi on January 03, 2019, 01:18:02 AM
Hope trap Focusing mode will come one day.

Don't hold your breath. The EOSM, 100D, 650D and 700D can't do it. Check out the features matrix.

gukuangshi

Thank you a lot for your careful answers. I do get the warning when taking photo in Digital zoom mod. I thought the white balance could be adjusted back to auto in ML menu.
Quote from: dfort on January 03, 2019, 04:28:38 AM
That is by design, same as on the EOSM. In fact you should get a warning screen like this:



Interesting that the EOSM shows the same warning even though it  doesn't "officially" support Digital zoom from the Canon menu.

You need to use the Canon menu to switch back to auto white balance. (Once again funky colors when doing a screenshot of the Canon menus.)





Not sure what you mean by that. The ML overlays often vanish, that's a bug.

Don't hold your breath. The EOSM, 100D, 650D and 700D can't do it. Check out the features matrix.

dfort

I've been merging in the great work that Danne has been doing on the EOSM. Don't expect it to work on the EOSM2. However, there are some tools in the builds I'm posting on my downloads page that should help us figure it out.

dfort

Wow, 17 downloads for the January 4 test build and no user reports? I didn't even advertise that one.

I re-enabled raw histogram because several modules weren't building without that feature enabled. In addition, I had LiveView screen freezes even with the non-raw histogram. I didn't want to mess around with the default settings so you'll have to disable the histogram then restart the camera to keep the screen from freezing up right away.

So--what's working and what's broken? I've been testing the arkanoid module for hours (instead of doing anything productive) and it feels pretty solid. Any other reports?

DeafEyeJedi

Quote from: dfort on January 07, 2019, 12:29:43 AM
Wow, 17 downloads for the January 4 test build and no user reports? I didn't even advertise that one.

I admit that I was one of them. Even though I was busy testing out the EOSM experimental builds that @Danne has been posting lately which seems to be more stable than the 100D atm :D

Quote from: dfort on January 07, 2019, 12:29:43 AM
I re-enabled raw histogram because several modules weren't building without that feature enabled. In addition, I had LiveView screen freezes even with the non-raw histogram. I didn't want to mess around with the default settings so you'll have to disable the histogram then restart the camera to keep the screen from freezing up right away.

I second that. Thanks for the pointers. Also noticed I must turn off the cam frequently (or sometimes go into canon menu and/or simply half pressed shutter) which can also do the trick. Strange as to be expected. Love the boat loads of Modules that are included. Especially the tools that can helps dig through. Thanks @dfort!

Quote from: dfort on January 07, 2019, 12:29:43 AM
So--what's working and what's broken? I've been testing the arkanoid module for hours (instead of doing anything productive) and it feels pretty solid. Any other reports?

I went ahead and tried a bunch of MLV's (both uncompressed & lossless in varieties of bits) to my surprise that most if not all had certain rumbling effects of its own. Seems I had to turn off Camera after each recording to try and unfreeze the LiveView. Upon reviewing files within MLVApp I managed to get at least 1 or 2 clean footage until halfway through of the file is when the jumbling dumplings came back. Though none of the lossless seem to work well. Uncompressed seem to spit out OK until halfway through the file itself.

By after this point I decided just to put the card back in and try to run some self tests (the 15 minute one) which seem to get stuck during the "photo taken during recording" part even after letting it run for 15+ minutes to no avail. So then I decided just to try simple things first such as Silent Picture to see if I could pull off FRSP on this toy. As expected, Simple DNG (even Lossless) spat out fine while not with FRSP. Heck even the Intervalometer works w Silent Picture which is a plus.

You probably already know this but I get 'ISOless PH err( 8 )' message on the LiveView once I enable Dual-ISO (disable module and turn off/on cam fixes it) while I also notice that it keeps telling me I have set 12-bit lossless in crop_rec.mo even when I have it off. Is this to be expected?

More to come... It definitely feels cheerfully sentimental to at least be crawling back into the swaps to be with you guys once again.
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

dfort

There's also things that do work:

Overlay -- need to restart for screen to refresh
- Zebras
- Focus Peak (though not at the same time as Magic Zoom of course)
- Magic Zoom
- Cropmarks
- Spotmeter
- False color
- Histogram (though raw histogram freeze LV in Photo mode)
- Waveform
- Vectorscope

Other features I tried and works:

- Intervalometer
- Audio RemoteShot
- Motion Detect
- Anamorphic

The sf_dump module seems to work though I've been having problems running the EOSM2 in QEMU lately.

Anyway -- a lot is working but the camera is still temperamental to say the least.

Just for fun, I took the EOSM2 on vacation with me. Here's a simple silent still color graded to show those lovely focus pixels. Hum--got some work to do.


JohanJ

Quote from: dfort on January 07, 2019, 12:29:43 AM
I re-enabled raw histogram because several modules weren't building without that feature enabled. In addition, I had LiveView screen freezes even with the non-raw histogram.
LV did not freeze with (RAW) histogram enabled in photo mode for the nightly builds between 14th of Dec 2018 and at least 27 of Dec 2018, but it was freezing for the ISO research builds during this time interval. Yesterday I was loading the latest nightly build from January 7th and now LV is dead again with RAW histograms enabled (I cannot tell for the builds between 27/12 and yesterday, I was off there).

@dfort, you stated here
Quote from: dfort on December 21, 2018, 08:51:57 AM
Ok--so it looks like the "C" build is the most stable ..... This is actually from Danne's crop_rec_4k_mlv_snd_isogain_1x3_presets_EOSM2 branch with some of the lines in raw.c commented out.
C build was from magiclantern-Nightly.2018Dec14.EOSM210 and LV was stable with RAW histogram. So maybe some lines in raw.c had been activated again by merging in different new developments?
60D.111 / 100D.101 / M2.103

dfort

Good point.

Danne commented out a section of code then reverted the change. I was just following along but we should take a closer look at this and see what's going on. Commented out section once again to get raw histogram working without lv freezing.

January 8 test build posted.

Danne

 This part let us record raw without freezes but the content is gonna be noise only. Anyway, that's how far I got. One thing to test is enabling fps override and push tha A-timmer and see if that also fixes raw histogram freeze.

dfort

Here is something that might help track down one of the problems. Open up the console to see what's going on.

EOSM2


EOSM - same changeset


Any clues where to look?

src/raw.c
        /* allow the local sigma to be less than 3 * ref_sigma */
        if (local_stdev_x100 > ref_stdev_x100 * 3)
        {
            printf("Black %d/%d: stdev too large (%d/100, ref %d/100)\n", i+1, N, local_stdev_x100, ref_stdev_x100);
            return 0;
        }

dfort

Found a fix to pass the black_level_check_left.



LiveView screen freezing is still a problem so I'm keeping Danne's temp fix in place for now. Also merged in Danne's latest and posted a new test build.

dfort

One step forward, one step back.

Checking with the various RAW_DEBUG options it looks like yesterday's "fix" didn't fix anything. I'm checking the results from the EOSM2 against the EOSM and found another problem that needs to be tracked down.

src/raw.c
#define RAW_DEBUG        /* define it to help with porting */


EOSM2


EOSM


Also narrowed down the LiveView freeze issue to one line, the call to edmac_raw_slurp, so I'm trying some printf statements to figure out what parameters are being passed to edmac_raw_slurp.

src/raw.c
            if (raw_lv_buffer_size >= pitch * height)
            {
                printf("buf %x, (CACHEABLE(buf) %x, pitch %d, height %d\n", buf, CACHEABLE(buf), pitch, height);
                edmac_raw_slurp(CACHEABLE(buf), pitch, height);
            }


EOSM2


EOSM


Not sure if I'm getting warmer or colder because I don't really know what I'm doing here.

Danne

Raw2lv test -6 -6 (726, 486)
Should be 0, 0 (720, 480)
Wrong active areas?

Also wonder if the freeze is caused by some lock in ml code or unrelated.

dfort

Quote from: Danne on January 11, 2019, 05:40:29 AM
Wrong active areas?

I don't know. Ran raw_diag and it looks good to me. At least compared to the EOSM.

EOSM2


EOSM


EOSM2


EOSM


With raw histogram turned on and in photo mode the camera starts normally, screen is drawn and then between 1 and about 40 seconds the screen freezes. Going into the Canon menu and back to LiveView will "unfreeze" it but will freeze again in about the same timeframe.

With the raw histogram disabled the LiveView doesn't freeze, this is what the console shows:

EOSM2


Enabling the raw histogram will freeze LiveView in photo mode. Both the EOSM and EOSM2 show pretty much the same information on the console:

EOSM2


EOSM


One thing that might be a problem is the small size difference of the LV raw buffer between these two similar cameras, 0x48798100 for the EOSM2 verses 0x46798080 for the EOSM in this test. In any case it seems to point back to what running RAW_DEBUG back in Reply #440 turned up where the EOSM2 showed an LV raw buffer of 0x8798100 verses 0x6798080 for the EOSM on that test.

dfort

Thought I'd write up a quick update on a long process.

I've been trying to track down the issue with the LiveView freezing in photo mode when the raw histogram is active. I discovered that switching from RAW in the Canon menu to one of the JPEG options (except RAW + L) it will not freeze but then again we need it set to RAW for simple silent stills (FRSP is not working). I found some different PREFERRED_RAW_TYPE addresses by using the RAW_DEBUG_TYPE option that didn't freeze LiveView but then it wouldn't save valid silent stills. Took another look at the console with RAW_DEBUG enabled and things are looking pretty normal now--I think:



Danne reported that in movie mode, mlv_lite enabled and raw recording on he also gets the LiveView freeze. He discovered that with global draw turned off, FPS override set to 24fps and Timer A pushed to (FT+30) it will actually record raw video. Whew--took me a while to follow that but I tried it with the latest test build and yes, it does work.

The LiveView freeze is really bugging me but it is working--or at least limping. That's where we're at on this. Any other reports? Any hints on how to debug this?

dfort

Quote from: Danne on January 08, 2019, 07:26:51 PM
...One thing to test is enabling fps override and push tha A-timmer and see if that also fixes raw histogram freeze.

Getting back to this -- it is also working in photo mode. In other words, turn on FPS override, set it to 24fps and push timer A to (FT+30) and no more LiveView freezes.

A while back fps-engio.c intentionally failed to build on the EOSM and 1100D because the timer values needed to be tested. I'm not exactly sure how it is supposed to work but I looked up those discussions:

https://www.magiclantern.fm/forum/index.php?topic=14959.msg148768#msg148768
https://www.magiclantern.fm/forum/index.php?topic=1009.msg151433#msg151433

Looks like it is time to understand how this works.

[EDIT] Does fps-engio.c even come into play if FPS override it not enabled?

Danne

Great work Dan. Feels like you are getting there soon :). Quite the journey. NIce that we got the correct engio stub for crop_rec.c working at least  :P

a1ex

Quote from: dfort on January 16, 2019, 06:39:31 AM
Getting back to this -- it is also working in photo mode. In other words, turn on FPS override, set it to 24fps and push timer A to (FT+30) and no more LiveView freezes.

The final frame rate is still 24 fps, or a bit lower? If it's still 24 fps, then it doesn't make much sense (i.e. why specifically +30).

Quote
Does fps-engio.c even come into play if FPS override it not enabled?

It shouldn't.

Otherwise, the FPS limits should be the same as on 100D - they share the same focus pixel pattern, if I'm not mistaken.


    #define TG_FREQ_BASE 32000000
    #define FPS_TIMER_A_MIN (ZOOM ? 724 : MV1080CROP ? 540 : 520)
    #define FPS_TIMER_B_MIN (ZOOM ? 1450 : MV1080CROP ? 1750 : MV720 || (lv && lv_dispsize==1 && !is_movie_mode()) ? 990 : 1970)

Danne

Quote from: a1ex on January 16, 2019, 08:53:10 AM
The final frame rate is still 24 fps, or a bit lower? If it's still 24 fps, then it doesn't make much sense (i.e. why specifically +30).

Not specifically +30. However pushing timer A by a lot will have the positive side effect of freeing liveview from freezing thus giving the space to record lossless. It´s not fool proof. It sometimes freezes anyway but it´s way better than the starting point which is a complete ice age.
What could be related to fps override timers freeing liveview?

Edit: Added the 100D timers. Freezing liveview. Enabling fps override to 23.976 and looking at the a-timer and it´s on 528. Testing simply enabling this and pushing canon menu button frees liveview after about 3 seconds. Pushing timer-a to 588 and timer b will be at 2265 and now 24.027 fps and liveview stays free for a minute or longer.

dfort

Quote from: a1ex on January 16, 2019, 08:53:10 AM
...the FPS limits should be the same as on 100D - they share the same focus pixel pattern, if I'm not mistaken.

I also thought of that and have been using the 100D values on the EOSM2 for my tests.

dfort

News update -- made some major changes.

I was merging in Danne's latest EOSM changes but because there were so many branches merged into my M2 experiments branch it turned out that this branch wasn't working properly with the EOSM. After lots of trial and error I finally got it working on the EOSM so now we should be in a better place to continue debugging the M2.