Danne's crop_rec_4k experiments for EOS M

Started by Danne, December 03, 2018, 06:10:17 PM

Previous topic - Next topic

0 Members and 6 Guests are viewing this topic.

masc

Not bad... all I can find what is not correct is max write speed of 40MB overclocked ( -> ~60MB ) and that you just get some frames in 1x3 binning... but we can get continous @ 4.5K 2.35:1 ;)
5D3.113 | EOSM.202

dfort

Wow, they even posted a link to Danne's downloads page:

QuoteCurrently, one of the most avid EOS M co-developers (Danne) downloads new versions with corresponding presets almost every day, which can always be found here.

Thanks Google Translate.

In other news, all this testing turned up a problem with one of the EOSM stubs.

@a1ex -- Which branch should we use for stub fixes?

henricusmaria

Is there a way to use autofocus with ml? I was hoping to be able to use the back button focus with the eos-m kitlens. But when I do I can only record for a couple of seconds. Is there a way to use the af lock in magic lantern and keep the normal recording times? That would be really convenient!

Danne

Pushed a new build:
https://www.magiclantern.fm/forum/index.php?topic=9741.msg208959#msg208959

This one needs some testing. Preview framing is now on default set to the same function as for Clear Overlays 'HalfShutter'. Means nothing has to be changed in Clear Overlays menu to ovecome the stuck real time issue. It´s probably not 100% rock solid but better then before. Test by simply start off and film longer takes with framing set in preview menu. If it behaves as it should like 95% of the time we are good to go.

Also note that without mlv_snd module enabled the stuck real time issue seems not to exist.
I spent a lot of time trying to see what is causing this lock. It mostly happens around 28 second into filming and often waithing for the next 30 second cycle reaching a minute it sometimes unlocks. Who can live with this  :P. I suspect some bmp_lock but why it´s happening I cannot explain. Why the zebra.c clearscreen code seems to help I can´t explain either...
Commit:
https://bitbucket.org/Dannephoto/magic-lantern/commits/c5668e08f01ead0bd915b3a6b6b7227ff88cec32


EDIT:
Still needs to create an exception for real-time preview. Will check into it.

ctfire

Quote from: Danne on January 24, 2019, 08:06:16 PM
Pushed a new build:
https://www.magiclantern.fm/forum/index.php?topic=9741.msg208959#msg208959

This one needs some testing. Preview framing is now on default set to the same function as for Clear Overlays 'HalfShutter'. Means nothing has to be changed in Clear Overlays menu to ovecome the stuck real time issue. It´s probably not 100% rock solid but better then before. Test by simply start off and film longer takes with framing set in preview menu. If it behaves as it should like 95% of the time we are good to go.



Also note that without mlv_snd module enabled the stuck real time issue seems not to exist.
I spent a lot of time trying to see what is causing this lock. It mostly happens around 28 second into filming and often waithing for the next 30 second cycle reaching a minute it sometimes unlocks. Who can live with this  :P. I suspect some bmp_lock but why it´s happening I cannot explain. Why the zebra.c clearscreen code seems to help I can´t explain either...
Commit:
https://bitbucket.org/Dannephoto/magic-lantern/commits/c5668e08f01ead0bd915b3a6b6b7227ff88cec32


EDIT:
Still needs to create an exception for real-time preview. Will check into it.


Just tested some footages from this new build, good news in preview in crop mode 1080mv, when i choose framing the preview became black and wight but good is that framerate of preview is more smoth then in older builds, and more usable overall . Thank you Danne

Danne

Yeah, I thought b & w was the better choice for speed reasons.

jacquaviva

Thanks a lot. In my opinion full sensor raw is the best part of your hack. Is there any chance to make framing even smoother with mv1080 crop mode ?

Danne


dfort

Speaking of needing some more understanding, there are some fails on the selftest module Stubs API tests that should probably be fixed. I was able to get a perfect score a while back but trying to find the right combination of changeset, lens used (I know it wasn't an EF-M lens but an EF/EF-S lens with the adapter), camera settings and alignment of the stars has eluded me these past few days. It seems like maybe there is an incorrect stub but which one? Here's the section of code that is showing the problem.

modules/selftest/selftest.c
        /* enable autofocus on half-shutter */
        /* lv_focus_status expected to be 3 when focusing and 1 or 2 when idle */
        lens_setup_af(AF_ENABLE);
        module_send_keypress(MODULE_KEY_PRESS_HALFSHUTTER);
        msleep(200);
        TEST_FUNC_CHECK(HALFSHUTTER_PRESSED, == 1);
        if (lv) {
            TEST_MSG("[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******\n");   
            TEST_FUNC_CHECK(wait_focus_status(1000, 3), == 1);
            TEST_FUNC_CHECK(lv_focus_status, == 3)
        } else {
            msleep(1000);
            TEST_FUNC_CHECK(get_focus_confirmation(), != 0);
        }


I put in some annotations to help debug the EOSM2.

Here's the full log. Notice that the only failing tests are the focus tests. This is with the EF-M 22mm f/2 prime lens but it is happening with all lenses in both movie and photo mode. Once today it passed a few of the tests using an EF lens on an adapter in photo mode but I couldn't replicate it. Seems like changing some of the Canon settings may have something to do with the test results.

[Pass] is_play_mode() => 0x1
[INFO] Camera model: Canon EOS M 2.0.2 (0x80000331 EOSM)
[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) => 0x25
[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) => 0x9c
[Pass] edmac_memcpy(dst, src, size) => 0x4e63a0a8
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x42
[Pass] edmac_memcpy_start(dst, src, size) => 0x4e63a0a8
       dt => 0x2949
[Pass] copied => 0x400558
[Pass] copied => 0x400558
[Pass] copied => 0x400558
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x27
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0x80f2e0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x12ee
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xf1
[Pass] tries[1] => 0xf3
[Pass] tries[2] => 0xff
[Pass] tries[3] => 0x105
[Pass] failr[0] => 0x63
[Pass] failw[0] => 0xca
[Pass] failr[1] => 0x71
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xd4
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x1e
       times[1] / tries[1] => 0x1d
       times[2] / tries[2] => 0x1d
       times[3] / tries[3] => 0x1d
Cache tests finished.

[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[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
[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[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
[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[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
[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[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
[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[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
[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[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
[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[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
[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[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
[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[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
[INFO] ****** EOSM/M2 usually fails here but sometimes passes ******
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[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") => 0x3
[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) => 0x40862fbc
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[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) => 0x3
[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) => 0xb4b0
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x8
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0xb51c
       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) => 0x32a1c
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x11c
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xf8
[Pass] ABS((get_us_clock() - t0) - 110000) => 0xffffff93
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x32a1e
       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) => 0x28
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0xb
[Pass] ABS((get_us_clock() - t0) - 310000) => 0xffffffa7
       t0 = GET_DIGIC_TIMER() => 0x42af6
       msleep(250)
       t1 = GET_DIGIC_TIMER() => 0x7f3e6
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x2
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x2c
       Date/time: 2019/01/24 14:49:44
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x2d
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
       m0 = MALLOC_FREE_MEMORY => 0x38d18
[Pass] p = (void*)_malloc(50*1024) => 0x136ad0
[Pass] CACHEABLE(p) => 0x136ad0
       m1 = MALLOC_FREE_MEMORY => 0x2c508
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x38d18
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x336790
[Pass] p = (void*)_AllocateMemory(128*1024) => 0x862f7c
[Pass] CACHEABLE(p) => 0x862f7c
       m1 = GetFreeMemForAllocateMemory() => 0x316784
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x336790
[Pass] ABS((m0-m1) - 128*1024) => 0xc
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x38d18
       m02 = GetFreeMemForAllocateMemory() => 0x336790
[Pass] p = (void*)_alloc_dma_memory(128*1024) => 0x40862fbc
[Pass] UNCACHEABLE(p) => 0x40862fbc
[Pass] CACHEABLE(p) => 0x862fbc
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40862fbc
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(16*1024*1024) => 0x4de3608c
[Pass] UNCACHEABLE(p) => 0x4de3608c
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x38d18
       m12 = GetFreeMemForAllocateMemory() => 0x336790
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(16*1024*1024) => 0x136ad0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x136af8
[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) => 0x1301d0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1f24000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x136980
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1f24000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44000064
[Pass] UNCACHEABLE(p) => 0x44000064
       largest_shoot_block = suite->size => 0x1f24000
[INFO] largest_shoot_block: 31MB
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(largest_shoot_block + 1024*1024) => 0x1301d0
[Pass] suite->signature => 'MemSuite'
[INFO] ************ Reset Canon settings if suite->num_chunks => 0x1 fails ************
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x2024000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x136980
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x13b4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4de1a070
[Pass] UNCACHEABLE(p) => 0x4de1a070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x136a18
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x148c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x45f240e4
[Pass] UNCACHEABLE(p) => 0x45f240e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x136a50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1574000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4ae00064
[Pass] UNCACHEABLE(p) => 0x4ae00064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x136a88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1974000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x419ff0a4
[Pass] UNCACHEABLE(p) => 0x419ff0a4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x136ac0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2024000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44000064
[Pass] UNCACHEABLE(p) => 0x44000064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x2024000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0x1301d0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x3700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x136980
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x13b4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4de1a070
[Pass] UNCACHEABLE(p) => 0x4de1a070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x136a18
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x148c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x45f240e4
[Pass] UNCACHEABLE(p) => 0x45f240e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x136a50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1574000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4ae00064
[Pass] UNCACHEABLE(p) => 0x4ae00064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x136a88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1974000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x419ff0a4
[Pass] UNCACHEABLE(p) => 0x419ff0a4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x136ac0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44000064
[Pass] UNCACHEABLE(p) => 0x44000064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x3700000
[INFO] ************ Reset Canon settings if suite->num_chunks => 0x1 fails ************
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x213d2c
[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) => 0x213d00
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x213ce0
[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) => 0xed6c00ca
[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 => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0xed6e00b6
[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) => 0xed7002f8
[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) => 0xed720036
[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
[INFO] ************ Checking stub = LiveViewShutterApp_handler ************
[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);
[INFO] ************ EOSM2 fails here ************
[Pass] MENU_MODE => 0x1
[INFO] ************ EOSM2 fails here ************
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[INFO] ************ EOSM2 fails here ************
[Pass] PLAY_MODE => 0x0
       SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
       SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[INFO] ************ Checking stub = PlayMain_handler ************
[Pass] is_pure_play_photo_mode() => 0x1
[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, 11852 passed, 20 failed.
.

Danne

New build. Only affects 'framing' setting. Hopefully solid preview now:
https://www.magiclantern.fm/forum/index.php?topic=9741.msg208959#msg208959

No need for Clear Overlays 'HalfShutter' in framing mode hopefully.

jacquaviva

Danne, do you mean framing is improved for crop mode mv1080 ? Thank you

Danne


ctfire

Quote from: Danne on January 25, 2019, 08:57:17 AM
New build. Only affects 'framing' setting. Hopefully solid preview now:
https://www.magiclantern.fm/forum/index.php?topic=9741.msg208959#msg208959

No need for Clear Overlays 'HalfShutter' in framing mode hopefully.



Just tested that build, it's awesome improvement in preview. 1080mv in 2.35 : 1 now is more than usable. Thank you. Also tested 50fps option with sd uhs hack , and only downside is that in 14 bit loseless it's only rec 5 sec. But as i understand this is depends more from sd card than from magic lantern. Thank you againe Danne.

Danne

Cool. Yes, probably card. I can record more or less continuous when selecting 10bit.
Just pushed a build with slightly changed registers in 50fps modes. 45fps is still problematic.

AF-OFF

Did a quick 1x3 recording with the new (Jan25) build
10bit and 1:2.35, sd-uhd, didn't touch any of the regs
had to deaktivate sound, because it would record only few seconds

I was able to record continuously. first clip with the default 'Framing' - setting (Auto),
for 3 1/2 minutes. Then switched to Real-time and recorded 2 1/2 min.

With MLV App (drop frames disabled) both of them without any damage
Will test other modes later

Many thanks to Danne and other developers

 

dfort

Quote from: dfort on January 25, 2019, 02:00:29 AM
...Notice that the only failing tests are the focus tests. This is with the EF-M 22mm f/2 prime lens but it is happening with all lenses in both movie and photo mode...

Figured it out. Those failing tests are supposed to run in photo mode outside of LiveView. In other words, the tests aren't valid on the EOSM/EOSM2.

Ok--now back to the cool stuff that Danne is doing.

masc

Rendered 2 clips recorded with todays build @ 1x3 and another one @50p. No corrupted frame and just one single frame jump. So: nice progress!
I noticed in 1x3 a red line at the bottom. Is it possible to do something against? Or do we have to fix that in post (e.g. by copying blue and green channel from row n-1)?
5D3.113 | EOSM.202

Danne

Green line. I will take a look. Full 5k set up or 2.35:1?
What preset caused the frame jump by the way? With or without global draw enabled?

masc

Setting was GlobalDraw On, 1504x1920, 10bit lossless, preview=framing.
Here the bottom line is red. You should it also have in the clip I sent you.
5D3.113 | EOSM.202

Danne

Thanks for noticing! Fixed:
https://www.magiclantern.fm/forum/index.php?topic=9741.msg208959#msg208959

It could be fixed also by using the height reg in the sub menu reg_6804 set to + 1. Well sorry for this, new build posted.

Commit:
https://bitbucket.org/Dannephoto/magic-lantern/commits/133ba5a624c0b5d9bb7af809d8e792d16651ec39

masc

5D3.113 | EOSM.202

henricusmaria

Sounds good! Does it also work in other ratios like 16:9?

Danne

@henricusmaria
I pushed a fix also for the 5k 3x1 preset. Had a thin red line:

Download
https://www.magiclantern.fm/forum/index.php?topic=9741.msg208959#msg208959

If you or someone else could check all presets for bottom red lines it would be good. With and without ratios from crop rec sub menu set. Lack of time here. Open up the files in Mlv App and simply zoom into the file, scroll to bottom...

henricusmaria

I will let you know, when I find the time. I am actually looking for a preset that gives me clean/corrupt free footage. I am shooting a film in China and I want to use the eos m in some areas where it's a bit difficult (not allowed) to film. Right now I'm thinking of using the 2.5k preset since it's the cleanest. The mv1080 gives too much aliasing and moire. But it would be great to be able to shoot with a wider angle. The 1x3 preset looks promising!

Danne

Cool. Yes 1x3 should be the best if it's reliable. If you could test it thoroughly we might work out a solid working 1x3 preset.