Author Topic: Canon 70D  (Read 1487208 times)

andy kh

  • Senior
  • ****
  • Posts: 357
Re: Canon 70D
« Reply #3075 on: January 12, 2018, 09:25:15 AM »
Can't test as i am out of station at the moment. MlvProducer has the option to change the black level. It happen when 10bit/12bit raw was implemented in 70D

fjodor

  • Just arrived
  • *
  • Posts: 2
Re: Canon 70D
« Reply #3076 on: January 12, 2018, 10:10:00 PM »
Unfortunately 14bit-lossless is still broken in my tests. I use MLVP v3200. Perhaps the lossless compression in this build is a bit better than the previous build (see attachment), I do not know ...
Also the mlv_sound module seems broken in this Jan11-build and wont boot-up. To be honest I have never tested a 70d-build where the sound from mlv_sound was synchronous and / or continuous in a logical way with raw video. My workflow is MLVP > C-DNG > Resolve. Maybe I'm doing something wrong and someone has some good tips for usable audio.





I'm hopeful that lossless compression will come to the 70d, hopefully with usable audio, fingers crossed :-p
Thanks again for everyone's hard work and commitment to ML

David_Hugh

  • New to the forum
  • *
  • Posts: 49
Re: Canon 70D
« Reply #3077 on: January 13, 2018, 06:08:18 PM »
Just tested the January 11th build from esas. Unfortunately, I have to report that the files still come out like this:

 This was 12 bit lossless, global draw off/ highest resolution possible. 14bit looks the same. Does your 14 bit lossless come out differently @esas? The right blacklevelfor MLV files in MLV Producer is 127 by the way. Changing that is no problem with the new MLV Producer version, it works with the lossless files.

Fazit: Everything "works" but those pink "stripes" (more like bars really) arent exactly pretty ;). Is there anything else to test?

farrellts

  • New to the forum
  • *
  • Posts: 7
  • Yada yada yada bada bing bada boom!
Re: Canon 70D
« Reply #3078 on: January 17, 2018, 12:06:30 PM »
I was reviewing the list of Magic Lantern features which cannot be implemented on EOS 70D due to firmware limitations.  Okay, I don't know a thing about the CPU on this device or what language its firmware was written in, but I would imagine that somebody had to run a decompiler on the firmware at some point, while verifying what limitations it presents when porting Magic Lantern to run on it.  Furthermore, I would imagine, that if it could be demonstrated that the source code of decompiled firmware was sound enough to be compiled and link-edited to create machine code identical -- or at least functionally identical -- to the original firmware from which that source code was decompiled -- well, then I'd imagine the source code could then be tweaked so that the desired missing features of Magic Lantern would then run on EOS 70D.

Now, I know that's a lot of ifs -- and testing tweaked firmware would not only void warranty but could damage the camera.  But I imagine it could be done -- unless there is an actual hardware limitation on this camera beyond what the firmware will allow.  It might be foolish to try this ... but I cannot help wondering if somebody has?  Anybody in this forum perhaps?

As a software developer myself with pretty broad experience, I know the challenges and dangers inherent in a project like this.  It's certainly not something I would undertake alone.  I've worked with some very impressive decompilers, but have never seen one generate perfect source code which can be flawlessly compiled.  Perhaps if one wants higher-fidelity video, it might just be easier to go buy one of the increasingly-affordable 4K-capable cameras out there?  But I'd still like to pull more out of my 70D.

I'd be interested in comments on this. Hope I am not going wildly off the range of topics which this forum hosts?

Please note that it is not my intention to disparage Magic Lantern as implemented on 70D.  I truly appreciate the work involved in creating and maintaining this build!
Tom Farrell 70D.111A

Walter Schulz

  • Hero Member
  • *****
  • Posts: 6007
Re: Canon 70D
« Reply #3079 on: January 17, 2018, 12:17:47 PM »
ML does not alter or replace Canon firmware. ML doesn't (re)use Canon IP in its code. Therefore ML is not prone to legal action.
As far as I understand your request you want to replace Canon's firmware with a version where ML features are integrated in firmware. IMO this violates Canon IP. Won't happen here.

eduperez

  • Developer
  • Freshman
  • *****
  • Posts: 92
Re: Canon 70D
« Reply #3080 on: January 17, 2018, 04:52:36 PM »
I was reviewing the list of Magic Lantern features which cannot be implemented on EOS 70D due to firmware limitations.  Okay, I don't know a thing about the CPU on this device or what language its firmware was written in, but I would imagine that somebody had to run a decompiler on the firmware at some point, while verifying what limitations it presents when porting Magic Lantern to run on it.  Furthermore, I would imagine, that if it could be demonstrated that the source code of decompiled firmware was sound enough to be compiled and link-edited to create machine code identical -- or at least functionally identical -- to the original firmware from which that source code was decompiled -- well, then I'd imagine the source code could then be tweaked so that the desired missing features of Magic Lantern would then run on EOS 70D.

Now, I know that's a lot of ifs -- and testing tweaked firmware would not only void warranty but could damage the camera.  But I imagine it could be done -- unless there is an actual hardware limitation on this camera beyond what the firmware will allow.  It might be foolish to try this ... but I cannot help wondering if somebody has?  Anybody in this forum perhaps?

That is not how it works...

Most of the firmware (at least the parts of it being executed on the main CPU) were (most probably) written in C. So far, all decompiling efforts have just translated machine code into assembler, and only for the purpose of studying how does the firmware work; it has never been translated into the original C (except probably some very specific parts, for illustration purposes). Besides, ML does not contain any of Canon's code, neither as binary, source code, or compiled from a decompilaton.

ML does not replace or substitute the original firmware, or even parts of it: what ML does is to interfere in specific points, hijacking the communication between different parts of the firmware, or between the firmware and the hardware; but the original untouched firmware is still in charge of the hardware, most of the time.

What you are proposing is a whole new beast... not only you need to produce a sorce code that can be compiled to match the current firmware, you also have to ensure that any modification you make to it does not break everything. I have still not heard of anyone decompiling the ASM into the original C, or any C code that can be compiled back and produce the same firmware, let alone some C that can be understood by humans. And then, just adding one single instruction means all code and data gets relocated, and thus all references must be updated.

lojzik

  • New to the forum
  • *
  • Posts: 48
Re: Canon 70D
« Reply #3081 on: January 26, 2018, 11:36:57 PM »
magiclantern-Nightly.2018Jan23.70D112 tests
stubtest.log
Code: [Select]
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x42104094
[Pass] dst = fio_malloc(size) => 0x429080a0
[Pass] memcmp(dst, src, 4097) => 0xffffff80
[Pass] edmac_memcpy(dst, src, 4097) => 0x429080a0
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x429080a0
[Pass] memcmp(dst, src, size) => 0xffffffb8
[Pass] edmac_memcpy(dst, src, size) => 0x429080a0
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x67
[Pass] edmac_memcpy_start(dst, src, size) => 0x429080a0
       dt => 0x1828
[Pass] copied => 0x4015e0
[Pass] copied => 0x4015e0
[Pass] copied => 0x4015e0
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x59
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0x127678
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x8ef
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xe1
[Pass] tries[1] => 0xf1
[Pass] tries[2] => 0x11a
[Pass] tries[3] => 0xfc
[Pass] failr[0] => 0x6a
[Pass] failw[0] => 0x96
[Pass] failr[1] => 0x6b
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xca
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x2b
       times[1] / tries[1] => 0x2f
       times[2] / tries[2] => 0x2f
       times[3] / tries[3] => 0x2d
Cache tests finished.

[Pass] f = FIO_CreateFile("test.dat") => 0x6
[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) => 0x40933c08
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x6
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x42104094
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x6
[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) => 0x9b82
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x2
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9bbe
       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) => 0x38470
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0xe8
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xca
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xe4
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x38472
       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) => 0x15c
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x13c
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0xfd
       t0 = *(uint32_t*)0xC0242014 => 0xa4051
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0xdf76a
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x7
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x39
       Date/time: 2018/01/26 23:12:57
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x3a
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
       m0 = MALLOC_FREE_MEMORY => 0x37278
[Pass] p = (void*)_malloc(50*1024) => 0x1293c8
[Pass] CACHEABLE(p) => 0x1293c8
       m1 = MALLOC_FREE_MEMORY => 0x2aa68
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x37278
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x258ff0
[Pass] p = (void*)_AllocateMemory(256*1024) => 0x933bc8
[Pass] CACHEABLE(p) => 0x933bc8
       m1 = GetFreeMemForAllocateMemory() => 0x218fe4
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x258ff0
[Pass] ABS((m0-m1) - 256*1024) => 0xc
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x37278
       m02 = GetFreeMemForAllocateMemory() => 0x258ff0
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40933c08
[Pass] UNCACHEABLE(p) => 0x40933c08
[Pass] CACHEABLE(p) => 0x933c08
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40933c08
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x42104074
[Pass] UNCACHEABLE(p) => 0x42104074
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x37278
       m12 = GetFreeMemForAllocateMemory() => 0x258ff0
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0x1256e8
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x125710
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42104070
[Pass] UNCACHEABLE(p) => 0x42104070
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0x1256e8
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x2000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x125710
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x2000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42104070
[Pass] UNCACHEABLE(p) => 0x42104070
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0x1256e8
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0xa
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x125710
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42104070
[Pass] UNCACHEABLE(p) => 0x42104070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125770
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x220c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4410407c
[Pass] UNCACHEABLE(p) => 0x4410407c
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1257a8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x22f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5c9140e4
[Pass] UNCACHEABLE(p) => 0x5c9140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1257e0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x23dc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a5140e4
[Pass] UNCACHEABLE(p) => 0x5a5140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125818
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x24c4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x581140e4
[Pass] UNCACHEABLE(p) => 0x581140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125850
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x25ac000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4af140e4
[Pass] UNCACHEABLE(p) => 0x4af140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125888
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2694000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48b140e4
[Pass] UNCACHEABLE(p) => 0x48b140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1258c0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x277c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x467140e4
[Pass] UNCACHEABLE(p) => 0x467140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1258f8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2864000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x443140e4
[Pass] UNCACHEABLE(p) => 0x443140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125930
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44400064
[Pass] UNCACHEABLE(p) => 0x44400064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0x1256e8
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x14
[Pass] suite->size => 0xf700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x125710
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42104070
[Pass] UNCACHEABLE(p) => 0x42104070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125770
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x220c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4410407c
[Pass] UNCACHEABLE(p) => 0x4410407c
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1257a8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x22f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5c9140e4
[Pass] UNCACHEABLE(p) => 0x5c9140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1257e0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x23dc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a5140e4
[Pass] UNCACHEABLE(p) => 0x5a5140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125818
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x24c4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x581140e4
[Pass] UNCACHEABLE(p) => 0x581140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125850
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x25ac000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4af140e4
[Pass] UNCACHEABLE(p) => 0x4af140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125888
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2694000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48b140e4
[Pass] UNCACHEABLE(p) => 0x48b140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1258c0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x277c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x467140e4
[Pass] UNCACHEABLE(p) => 0x467140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1258f8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2864000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x443140e4
[Pass] UNCACHEABLE(p) => 0x443140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125930
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4864000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44400064
[Pass] UNCACHEABLE(p) => 0x44400064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125968
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4b78000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46400070
[Pass] UNCACHEABLE(p) => 0x46400070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1259a0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x6b78000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46800064
[Pass] UNCACHEABLE(p) => 0x46800064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1259d8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x6e8c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48800070
[Pass] UNCACHEABLE(p) => 0x48800070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125a10
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x8e8c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48c00064
[Pass] UNCACHEABLE(p) => 0x48c00064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125a48
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x91a0000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4ac00070
[Pass] UNCACHEABLE(p) => 0x4ac00070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125a80
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xb1a0000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x55e00064
[Pass] UNCACHEABLE(p) => 0x55e00064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125ab8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xb4b4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x57e00070
[Pass] UNCACHEABLE(p) => 0x57e00070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125af0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xd4b4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x58200064
[Pass] UNCACHEABLE(p) => 0x58200064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125b28
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xd7c8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a200070
[Pass] UNCACHEABLE(p) => 0x5a200070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125b60
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xf700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a600064
[Pass] UNCACHEABLE(p) => 0x5a600064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0xf700000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x1ec2bc
[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) => 0x1ec2a0
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x1ec280
[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) => 0xd94600f2
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x84
[Pass] task_max => 0x84
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0xd94800c8
[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) => 0xd94a0234
[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) => 0xd94c00de
[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);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
       SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
       SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[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

luatest.log
Code: [Select]
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-1-26 23:27:27
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
camera = table:
  shutter = table:
    raw = 91
    apex = 4.374999
    ms = 48
    value = 0.048194
  aperture = table:
    raw = 32
    apex = 3.
    value = 2.799999
    min = table:
      raw = 32
      apex = 3.
      value = 2.799999
    max = table:
      raw = 80
      apex = 9
      value = 22.6
  iso = table:
    raw = 0
    apex = -4
    value = 0
  ec = table:
    raw = 0
    value = 0
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 6400
  mode = 3
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS 70D"
  model_short = "70D"
  firmware = "1.1.2"
  temperature = 156
  state = 0
  reboot = function: p
  bulb = function: p
  shoot = function: p
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: p
  write = function: p
  show = function: p
  clear = function: p
lv = table:
  enabled = false
  paused = false
  running = false
  zoom = 1
  wait = function: p
  resume = function: p
  start = function: p
  info = function: p
  stop = function: p
  pause = function: p
lens = table:
  name = "EF-S24mm f/2.8 STM"
  focal_length = 0
  focus_distance = 90
  hyperfocal = 0
  dof_near = 0
  dof_far = 0
  af = true
  af_mode = 0
  focus = function: p
display = table:
  idle = true
  height = 480
  width = 720
  circle = function: p
  screenshot = function: p
  print = function: p
  off = function: p
  line = function: p
  draw = function: p
  pixel = function: p
  notify_box = function: p
  clear = function: p
  load = function: p
  rect = function: p
  on = function: p
key = table:
  last = 0
  press = function: p
  wait = function: p
menu = table:
  visible = false
  open = function: p
  get = function: p
  close = function: p
  new = function: p
  block = function: p
  set = function: p
testmenu = userdata:
  value = 0
  name = "Script API tests"
  help = "Various tests for the Lua scripting API."
  help2 = "When adding new Lua APIs, tests for them should go here."
  advanced = 0
  depends_on = 0
  edit_mode = 0
  hidden = false
  icon_type = 5
  jhidden = false
  max = 0
  min = 0
  selected = true
  shidden = false
  starred = false
  submenu_height = 0
  submenu_width = 0
  unit = 0
  works_best_in = 0
  run_in_separate_task = 0
  select = function: p
  update = nil
  info = nil
  rinfo = nil
  warning = nil
movie = table:
  recording = false
  start = function: p
  stop = function: p
dryos = table:
  clock = 15
  ms_clock = 15386
  prefix = "IMG_"
  dcim_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "B:/DCIM/"
    path = "B:/DCIM/100CANON/"
  config_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "ML/"
    path = "ML/SETTINGS/"
  ml_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 4566
    folder_number = 100
    free_space = 15577824
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 4566
    folder_number = 100
    free_space = 15577824
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    isdst = false
    min = 27
    month = 1
    day = 26
    wday = 6
    year = 2018
    yday = 26
    hour = 23
    sec = 28
  call = function: p
  directory = function: p
  remove = function: p
interval = table:
  time = 10
  count = 0
  running = 0
  stop = function: p
battery = table:
  level = 86
  id = 1
  performance = 0
  time = 9288
  drain_rate = 33
task = table:
  yield = function: p
  create = function: p
property = table:
Generic tests completed.

Module tests...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Testing exposure settings, module 'camera'...
Camera    : Canon EOS 70D (70D) 1.1.2
Lens      : EF-S24mm f/2.8 STM
Shoot mode: 3
Shutter   : ‚20 (raw 91, 0.048194s, 48ms, apex 4.374999)
Aperture  : 2.8 (raw 32, f/2.799999, apex 3.)
Av range  : 2.8..22 (raw 32..80, f/2.799999..f/22.6, apex 3...9)
ISO       : AutoISO (raw 0, 0, apex -4)
EC        : 0.0 (raw 0, 0 EV)
Flash EC  : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.

Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.

Focus distance: 250
Focusing backward...
Focus distance: 6310
Focusing forward with step size 3, wait=true...
.................
Focus distance: 180
Focusing backward with step size 3, wait=true...
.................
Focus distance: 6310
Focus range: 17 steps forward, 17 steps backward.
Focusing forward with step size 3, wait=false...
.................
Focus distance: 180
Focusing backward with step size 3, wait=false...
.................
Focus distance: 655350
Focus range: 17 steps forward, 17 steps backward.
Focusing forward with step size 2, wait=true...
...
Focus distance: 170
Focusing backward with step size 2, wait=true...
...
Focus distance: 655350
Focus range: 125 steps forward, 125 steps backward.
Focusing forward with step size 2, wait=false...
...
Focus distance: 170
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus range: 125 steps forward, 125 steps backward.
Focusing forward with step size 1, wait=true...
...
Focus distance: 170
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus range: 454 steps forward, 454 steps backward.
Focusing forward with step size 1, wait=false...
...
Focus distance: 170
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus range: 454 steps forward, 454 steps backward.
Focus test completed.

Done! 
70D.112

Anantajit

  • New to the forum
  • *
  • Posts: 6
Re: Canon 70D
« Reply #3082 on: February 02, 2018, 08:51:09 AM »
Hi. What is new in the jan23 release? I am no developer, just a user and can't seem to find any news about it, that I understand.
Thanks for your amazing work!

Walter Schulz

  • Hero Member
  • *****
  • Posts: 6007
Re: Canon 70D
« Reply #3083 on: February 02, 2018, 09:08:38 AM »
Top of page -> Downloads -> Download nightly builds -> 70D -> Change log.
Some bugs removed ...

a1ex

  • Administrator
  • Hero Member
  • *****
  • Posts: 11211
  • 5D Mark Free
Re: Canon 70D
« Reply #3084 on: February 02, 2018, 09:11:28 AM »
Just backend work towards unification. How is it working, compared to previous build?

I don't have a 70D to try; you may notice:
- null pointer errors are now reported (you may emulate one with the selftest module)
- buttons no longer working (hopefully not)
- some additional messages if you compile from the same changeset for running in QEMU
- random stuff might be broken, please report if you find any (can't predict exactly what, see for example this 6D bug)
- fixes for other camera models (so they can all run from the same source tree) - see the Lua call for testers to try these changes on other models.

Yeah, unification requires work from owners of all other cameras. So far, only received reports on a few models...

kalamuni

  • New to the forum
  • *
  • Posts: 7
Re: Canon 70D
« Reply #3085 on: February 05, 2018, 12:53:38 PM »
Hi
The very recent update i have installed in my camera (70D). Here i cant see any section to change the Bit depth . I dont even know what is the default BPP i am working with. sir  Pls answer it... as am unable to switch through 14/12/10 bpp.
regards 

theBilalFakhouri

  • Freshman
  • **
  • Posts: 79
Re: Canon 70D
« Reply #3086 on: February 05, 2018, 01:14:56 PM »
Hi
The very recent update i have installed in my camera (70D). Here i cant see any section to change the Bit depth . I dont even know what is the default BPP i am working with. sir  Pls answer it... as am unable to switch through 14/12/10 bpp.
regards
You have downloaded the latest nightly build update (it doesn't have 10-12bit yet).
So you will find the 10-12 bit depth build in experiments section under 10/12-bit RAW video (scroll down).
https://builds.magiclantern.fm/experiments.html
700D 1.1.5 | no more ISOless LV err 8

kalamuni

  • New to the forum
  • *
  • Posts: 7
Re: Canon 70D
« Reply #3087 on: February 06, 2018, 10:32:18 AM »
theBilalFakhouri  thank you for info   :)

sangev

  • Just arrived
  • *
  • Posts: 1
Re: Canon 70D
« Reply #3088 on: February 10, 2018, 01:03:48 AM »
Hello! Recently while I was filming with ML in my SD card, my 70D froze. I tried playing around with it but nothing would respond.
So I decided to turn it off, and once I did I could never turn it on again. Tried using different SD cards, different batteries, and still, it won't turn on! I followed this forum but it didn't fix my camera! https://www.magiclantern.fm/forum/index.php?topic=14732

Anybody have any suggestions? Really want my 70D up and running!

ShootMeAlready

  • Member
  • ***
  • Posts: 243
Re: Canon 70D
« Reply #3089 on: February 11, 2018, 08:08:42 PM »
Ensure you have Canon v1.1.2 firmware.  ** If you ever had ML running recently then you must be v1.1.2.
Ok try reformating your card.  ExFat no quick. 
After done, Copy a jpg file, and read it, just to ensure your card reads/writes. Then blow it away.
Copy ML from nightlies (port in progress) to your SD card. Ensure its extracted prior to copy. It must be only item on card.
Put SD card in camera.
Remove batteries from camera for 60s.
Reboot camera.
Assuming it comes up, go to Fn setting to check version.
Install ML. (you should see some messages as it installs) and then turn camera off/on when instructed.

These above steps have yet to fail me, from a number of crashes, however I have had to remove the batteries twice for 60s, and repeat those reboot/install steps, especially if I am too quick or the bug is in overwriting data from a movie being processed.



T3i+ML & 70D.112+ML, Tokina 11-16 2.8, Sigma 18-35 1.8, 50-150 II 2.8, 50 1.4, Canon 28 1.8, 35 2, 50 1.8, 85 1.8"Shoot Long and Prosper"

OlRivrRat

  • Senior
  • ****
  • Posts: 304
Re: Canon 70D
« Reply #3090 on: February 15, 2018, 08:44:11 PM »
      @ S'M'A'

   Thanks much for the info. Just tried on My Dead 70D & Sadly It's still Dead.

                     ORR ~ DeanB
ORR~DeanB  ~~  80D-ML  &  SL1+ML  &  5D2+ML  &  5DC+ML  &  70D+ML.111B(DEAD)

a1ex

  • Administrator
  • Hero Member
  • *****
  • Posts: 11211
  • 5D Mark Free
Re: Canon 70D
« Reply #3091 on: February 17, 2018, 01:03:34 AM »
Noticed focus stacking & related features might work with latest lua_fix build (2018Feb17); conclusion drawn from lojzik's test.

These features were enabled temporarily just for this particular build (not committed to the repository); to commit them, please report back. If compiling from source, enable them from features.h (and update the comments in lens.c with your findings, since they were written for an older version of the PROP_LV_FOCUS_DONE handler).

andy kh

  • Senior
  • ****
  • Posts: 357
Re: Canon 70D
« Reply #3092 on: February 18, 2018, 07:56:58 AM »
shooting in raw is not possible anymore for me after upgrading to 70D. i get color moire in all my clips. when i shoot wit my 550D & 650D, it hapeen only if i shoot in 50/60fps and not in 24/25fps. any 70D users experiencing  the same?



ShootMeAlready

  • Member
  • ***
  • Posts: 243
Re: Canon 70D
« Reply #3093 on: February 19, 2018, 02:46:32 AM »
70D has two solutions for moire. 3X video mode is a centre crop without moire.  However to get best H264 video it requires a flat profile, All-I compression, denoise, and post processing.  70D does shoot 10bit raw, check my back posts for resolutions but they will have the moire.  The second approach is a VAF by Mosaic, which generally gets rid of moire aliasing. 
T3i+ML & 70D.112+ML, Tokina 11-16 2.8, Sigma 18-35 1.8, 50-150 II 2.8, 50 1.4, Canon 28 1.8, 35 2, 50 1.8, 85 1.8"Shoot Long and Prosper"

andy kh

  • Senior
  • ****
  • Posts: 357
Re: Canon 70D
« Reply #3094 on: February 19, 2018, 10:32:51 AM »
#shootmealready   im aware of the vaf but i don think i wil spend 295$ buying a filter. i bought a 70D sometime back since i love its auto focus and sold out my 650D since pink dots of 650D was annoying so much. shooting in crop mode in a 70D make its auto focus unusable. my question is do you also get moire like me when you shoot raw? or is it only me. i have seen some good raw video shoot with a 70D on youtube

lojzik

  • New to the forum
  • *
  • Posts: 48
Re: Canon 70D
« Reply #3095 on: February 19, 2018, 12:01:21 PM »
fast magiclantern-Nightly.2018Feb17.70D112 build test
stubtest.log (Test complete, 12810 passed, 10 failed.)
Code: [Select]
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x4238c0a8
[Pass] dst = fio_malloc(size) => 0x42b900b4
[Pass] memcmp(dst, src, 4097) => 0xffffffd8
[Pass] edmac_memcpy(dst, src, 4097) => 0x42b900b4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42b900b4
[Pass] memcmp(dst, src, size) => 0xffffffb9
[Pass] edmac_memcpy(dst, src, size) => 0x42b900b4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x8
[Pass] edmac_memcpy_start(dst, src, size) => 0x42b900b4
       dt => 0x16e6
[Pass] copied => 0x402000
[Pass] copied => 0x402000
[Pass] copied => 0x402000
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xffffff9f
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0x1268e8
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x1140
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0x104
[Pass] tries[1] => 0xf6
[Pass] tries[2] => 0xf1
[Pass] tries[3] => 0xfd
[Pass] failr[0] => 0x80
[Pass] failw[0] => 0xa4
[Pass] failr[1] => 0x63
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0x97
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x32
       times[1] / tries[1] => 0x35
       times[2] / tries[2] => 0x33
       times[3] / tries[3] => 0x37
Cache tests finished.

[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[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
[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
[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
[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
[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
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x6
[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) => 0x40934338
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x6
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x4238c0a8
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x6
[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) => 0xa446
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x7
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0xa488
       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) => 0x2d56a
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0xf7
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xd6
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xffffffa1
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x2d56c
       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) => 0x24
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x3
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0xffffffa7
       t0 = *(uint32_t*)0xC0242014 => 0x7f260
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0xba69c
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x8
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x8
       Date/time: 2018/02/19 11:38:08
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x9
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
       m0 = MALLOC_FREE_MEMORY => 0x37940
[Pass] p = (void*)_malloc(50*1024) => 0x128628
[Pass] CACHEABLE(p) => 0x128628
       m1 = MALLOC_FREE_MEMORY => 0x2b130
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x37940
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x2578c0
[Pass] p = (void*)_AllocateMemory(128*1024) => 0x9342f8
[Pass] CACHEABLE(p) => 0x9342f8
       m1 = GetFreeMemForAllocateMemory() => 0x2378b4
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x2578c0
[Pass] ABS((m0-m1) - 128*1024) => 0xc
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x37940
       m02 = GetFreeMemForAllocateMemory() => 0x2578c0
[Pass] p = (void*)_alloc_dma_memory(128*1024) => 0x40934338
[Pass] UNCACHEABLE(p) => 0x40934338
[Pass] CACHEABLE(p) => 0x934338
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40934338
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(16*1024*1024) => 0x4238c098
[Pass] UNCACHEABLE(p) => 0x4238c098
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x37940
       m12 = GetFreeMemForAllocateMemory() => 0x257920
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x60
[Pass] suite = shoot_malloc_suite_contig(16*1024*1024) => 0x125340
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x125368
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4238c094
[Pass] UNCACHEABLE(p) => 0x4238c094
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0x125340
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x2000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x125368
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x2000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48c00064
[Pass] UNCACHEABLE(p) => 0x48c00064
       largest_shoot_block = suite->size => 0x2000000
[INFO] largest_shoot_block: 32MB
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(largest_shoot_block + 1024*1024) => 0x125340
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x2
[Pass] suite->size => 0x2100000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x125368
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1f84000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4238c094
[Pass] UNCACHEABLE(p) => 0x4238c094
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1253c8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2100000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48c00064
[Pass] UNCACHEABLE(p) => 0x48c00064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x2100000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0x125340
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x14
[Pass] suite->size => 0xf700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x125368
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1f84000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4238c094
[Pass] UNCACHEABLE(p) => 0x4238c094
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1253c8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3f84000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48c00064
[Pass] UNCACHEABLE(p) => 0x48c00064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125400
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4298000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4ac00070
[Pass] UNCACHEABLE(p) => 0x4ac00070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125438
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4380000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48b140e4
[Pass] UNCACHEABLE(p) => 0x48b140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125470
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4468000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x467140e4
[Pass] UNCACHEABLE(p) => 0x467140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1254a8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4550000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5c9140e4
[Pass] UNCACHEABLE(p) => 0x5c9140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1254e0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4638000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a5140e4
[Pass] UNCACHEABLE(p) => 0x5a5140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125518
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4720000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x581140e4
[Pass] UNCACHEABLE(p) => 0x581140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125550
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4808000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4af140e4
[Pass] UNCACHEABLE(p) => 0x4af140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125588
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x48f0000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x443140e4
[Pass] UNCACHEABLE(p) => 0x443140e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1255c0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x68f0000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x55e00064
[Pass] UNCACHEABLE(p) => 0x55e00064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1255f8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x6c04000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x57e00070
[Pass] UNCACHEABLE(p) => 0x57e00070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125630
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x8c04000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x58200064
[Pass] UNCACHEABLE(p) => 0x58200064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125668
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x8f18000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a200070
[Pass] UNCACHEABLE(p) => 0x5a200070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1256a0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xaf18000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a600064
[Pass] UNCACHEABLE(p) => 0x5a600064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1256d8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xb22c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5c600070
[Pass] UNCACHEABLE(p) => 0x5c600070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125710
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xd22c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44400064
[Pass] UNCACHEABLE(p) => 0x44400064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125748
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xd540000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46400070
[Pass] UNCACHEABLE(p) => 0x46400070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x125780
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xf540000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46800064
[Pass] UNCACHEABLE(p) => 0x46800064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1257b8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xf700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48800070
[Pass] UNCACHEABLE(p) => 0x48800070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0xf700000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x1ebeb4
[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) => 0x1ebe80
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x1ebe60
[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) => 0xde2200ee
[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) => 0xde2400c6
[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) => 0xde2602bc
[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) => 0xde2800b0
[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);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
       SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
       SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[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, 12810 passed, 10 failed.
.

luatest.log (no errors)
Code: [Select]
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-2-19 11:40:19
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 0
    apex = -7.
    ms = 0
    value = 0
  aperture = table:
    raw = 35
    apex = 3.375
    value = 3.2
    min = table:
      raw = 22
      apex = 1.75
      value = 1.8
    max = table:
      raw = 80
      apex = 9.
      value = 22.6
  iso = table:
    raw = 0
    apex = 0
    value = 0
  ec = table:
    raw = 0
    value = 0
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 6400
  mode = 2
  metering_mode = 3
  drive_mode = 19
  model = "Canon EOS 70D"
  model_short = "70D"
  firmware = "1.1.2"
  temperature = 161
  gui = table:
    menu = false
    play = false
    play_photo = false
    play_movie = false
    qr = false
    idle = true
  reboot = function: p
  wait = function: p
  burst = function: p
  bulb = function: p
  shoot = function: p
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: p
  hide = function: p
  clear = function: p
  show = function: p
lv = table:
  enabled = false
  paused = false
  running = false
  zoom = 1
  overlays = false
  pause = function: p
  wait = function: p
  start = function: p
  resume = function: p
  info = function: p
  stop = function: p
lens = table:
  name = "EF50mm f/1.8 STM"
  focal_length = 50
  focus_distance = 655350
  hyperfocal = 41218
  dof_near = 38790
  dof_far = 1000000
  af = true
  af_mode = 0
  autofocus = function: p
  focus = function: p
display = table:
  idle = nil
  height = 480
  width = 720
  off = function: p
  rect = function: p
  line = function: p
  print = function: p
  on = function: p
  notify_box = function: p
  screenshot = function: p
  draw = function: p
  pixel = function: p
  circle = function: p
  load = function: p
  clear = function: p
key = table:
  last = 10
  wait = function: p
  press = function: p
menu = table:
  visible = false
  close = function: p
  set = function: p
  new = function: p
  open = function: p
  block = function: p
  get = function: p
  select = function: p
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 22
  ms_clock = 23010
  image_prefix = "IMG_"
  dcim_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "B:/DCIM/"
    path = "B:/DCIM/100CANON/"
  config_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "ML/"
    path = "ML/SETTINGS/"
  ml_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 4848
    folder_number = 100
    free_space = 10832864
    type = "SD"
    _card_ptr = userdata
    path = "B:/"
  shooting_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 4848
    folder_number = 100
    free_space = 10832864
    type = "SD"
    _card_ptr = userdata
    path = "B:/"
  date = table:
    year = 2018
    day = 19
    wday = 2
    min = 40
    sec = 21
    hour = 11
    yday = 50
    isdst = false
    month = 2
  remove = function: p
  rename = function: p
  directory = function: p
  call = function: p
interval = table:
  time = 10
  count = 0
  running = false
  stop = function: p
battery = table:
  level = 58
  id = 1
  performance = 0
  time = nil
  drain_rate = 21
task = table:
  create = function: p
  yield = function: p
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
File I/O tests completed.

Testing Canon GUI functions...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Start LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Canon GUI tests completed.

Testing ML menu API...
Menu tests completed.

Testing picture taking functions...
Please switch to M mode.
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_4849.CR2: 24961243
B:/DCIM/100CANON/IMG_4849.JPG not found.
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/100CANON/ABC_4850.CR2: 24978453
B:/DCIM/100CANON/ABC_4850.JPG not found.
B:/DCIM/100CANON/ABC_4851.CR2: 25012699
B:/DCIM/100CANON/ABC_4851.JPG not found.
Bracketed pictures...
B:/DCIM/100CANON/IMG_4852.CR2: 32302711
B:/DCIM/100CANON/IMG_4852.JPG not found.
B:/DCIM/100CANON/IMG_4853.CR2: 24982746
B:/DCIM/100CANON/IMG_4853.JPG not found.
B:/DCIM/100CANON/IMG_4854.CR2: 14768124
B:/DCIM/100CANON/IMG_4854.JPG not found.
Bulb picture...
Elapsed time: 13240
B:/DCIM/100CANON/IMG_4855.CR2: 14472832
B:/DCIM/100CANON/IMG_4855.JPG not found.
Picture taking tests completed.

Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.

Testing half-shutter...
Half-shutter test OK.

Testing module 'lv'...
LiveView is running; stopping...
Starting LiveView...
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: ML
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: disabled
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.


Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 655350
Autofocus in LiveView...
Please trigger autofocus (half-shutter / AF-ON / * ).
19...18...17...16...Autofocus triggered.
Autofocus completed.
Focus distance: 655350
Focusing backward...
Focus distance: 655350
Focus motor position: 3094
Focusing forward with step size 3, wait=true...
.........................
Focus distance: 340
Focus motor position: 278
Focusing backward with step size 3, wait=true...
.........................
Focus distance: 655350
Focus motor position: 3094
Focus range: 25 steps forward, 25 steps backward.
Motor steps: 2816 forward, 2816 backward, 0 lost.
Focusing forward with step size 3, wait=false...
..........................................................
Focus distance: 340
Focus motor position: 278
Focusing backward with step size 3, wait=false...
.........................................................
Focus distance: 655350
Focus motor position: 3094
Focus range: 58 steps forward, 57 steps backward.
Motor steps: 2816 forward, 2816 backward, 0 lost.
Focusing forward with step size 2, wait=true...
...
Focus distance: 370
Focus motor position: 534
Focusing backward with step size 2, wait=true...
...
Focus distance: 655350
Focus motor position: 3094
Focus range: 164 steps forward, 164 steps backward.
Motor steps: 2560 forward, 2560 backward, 0 lost.
Focusing forward with step size 2, wait=false...
...
Focus distance: 340
Focus motor position: 278
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus motor position: 3094
Focus range: 185 steps forward, 188 steps backward.
Motor steps: 2816 forward, 2816 backward, 0 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 340
Focus motor position: 278
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus motor position: 3094
Focus range: 1061 steps forward, 1062 steps backward.
Motor steps: 2816 forward, 2816 backward, 0 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 340
Focus motor position: 278
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus motor position: 3094
Focus range: 1061 steps forward, 1059 steps backward.
Motor steps: 2816 forward, 2816 backward, 0 lost.

Focus test completed.

Testing exposure settings...
Camera    : Canon EOS 70D (70D) 1.1.2
Lens      : EF50mm f/1.8 STM
Shoot mode: 3
Shutter   : ‚5 (raw 75, 0.192776s, 193ms, apex 2.375)
Aperture  : 4.9 (raw 45, f/4.9, apex 4.625)
Av range  : 1.8..22 (raw 22..80, f/1.8..f/22.6, apex 1.75..9.)
ISO       : €1600 (raw 104, 1600, apex 9.)
EC        : 0.0 (raw 0, 0 EV)
Flash EC  : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.


Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.

Done! 

edit:
in memory benchmark it stops on memcpy cacheable (verifying) and red led shines
70D.112

ShootMeAlready

  • Member
  • ***
  • Posts: 243
Re: Canon 70D
« Reply #3096 on: February 24, 2018, 06:13:29 AM »
#shootmealready   im aware of the vaf but i don think i wil spend 295$ buying a filter. i bought a 70D sometime back since i love its auto focus and sold out my 650D since pink dots of 650D was annoying so much. shooting in crop mode in a 70D make its auto focus unusable. my question is do you also get moire like me when you shoot raw? or is it only me. i have seen some good raw video shoot with a 70D on youtube

I bought a  VAF shortly after buying my 70D, as I shoot in the city and find things like tiles, bricks, wires, and street car tracks everywhere and annoying to shoot around.  As for 3X mode, it has centre point AF, but mostly I would be using MF and flat pic profile for H264 (which on 70D is good for high ISO shooting), and 10bit raw for general clips (you can also shoot 3X mode raw for up to ISO800). I get moire without filter on, and not 3X.  RAW is very good but takes longer to process, so you have to consider turn around time.

AF is good for motion tracking, and pull focus.  So MF should be used most often, I find with the 70D you can over use touch focus which can lead to wandering focal plane for video. The more you want to control focus the less AF.
T3i+ML & 70D.112+ML, Tokina 11-16 2.8, Sigma 18-35 1.8, 50-150 II 2.8, 50 1.4, Canon 28 1.8, 35 2, 50 1.8, 85 1.8"Shoot Long and Prosper"

hacki

  • New to the forum
  • *
  • Posts: 3
Re: Canon 70D
« Reply #3097 on: March 04, 2018, 10:22:16 PM »
Hi,

I've got a problem with a lua script. Tried on both nightly (magiclantern-Nightly.2018Feb17.70D112) and experimental (lua_fix.2018Feb24.70D112) builds

camera.shoot() behaves weird in live view mode. If i use it in a while loop or call it several times in a row it soft-locks the camera.

Screen stays black and nothing further happens, sometimes it continues in the script after 20, 30 seconds.

Is this a problem with live view in general (on all cameras), or some 70D specific quirk?
I couldnt find anything on it.




a1ex

  • Administrator
  • Hero Member
  • *****
  • Posts: 11211
  • 5D Mark Free
Re: Canon 70D
« Reply #3098 on: March 05, 2018, 02:37:14 PM »
Code: [Select]
-- shoot test
for i=1,50 do
  camera.shoot()
end

Runs fine on 60D. It slows down after a few pictures (buffer getting full), but does not lock up.

hacki

  • New to the forum
  • *
  • Posts: 3
Re: Canon 70D
« Reply #3099 on: March 05, 2018, 06:47:38 PM »
Okay, since seeing for yourself is better than a thousand word essay, i made two short videos about the behaviour:

This script:

Code: [Select]
--[[ 
TEST
--]]

   
testmenu = menu.new
{
 parent = "Shoot",
 name = "Test",
 help = "Test",
 submenu =
 {
{
name = "Run",
help = "Run this script.",
icon_type = ICON_TYPE.ACTION,
update = "",
},
 }
}

testmenu.submenu["Run"].select = function()
-- shoot test
for i=1,50 do
  camera.shoot()
end
end

Locks the camera up. Video:

https://youtu.be/QgQGYxUWV20


While this script:

Code: [Select]
--[[ 
TEST SINGLE SHOT
--]]

   
testmenu = menu.new
{
 parent = "Shoot",
 name = "Test",
 help = "Test",
 submenu =
 {
{
name = "Run",
help = "Run this script.",
icon_type = ICON_TYPE.ACTION,
update = "",
},
 }
}

testmenu.submenu["Run"].select = function()
  camera.shoot()
end

Works fine.

Video: https://www.youtube.com/watch?v=uU0iiB8xTGE


Now, i even tried adding a sleep like this:

Code: [Select]
for i=1,50 do
  camera.shoot()
          msleep(5000)
end

It locks up.

Even a simple

Code: [Select]
testmenu.submenu["Run"].select = function()
  camera.shoot()
  camera.shoot()
  camera.shoot()
end

Locks up.


It looks like camera.shoot() in live view locks something that only gets cleared when the LUA script ends?