Canon 100D / SL1

Started by nikfreak, October 19, 2015, 10:41:29 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Danne

Nice, will check some. On the train atm. Got 2968x1080 output by the way:



Erasing  (*height)--; in raw.c for digic V. Of course it normally gives stuttery recordings but wanted to test how it reacts here and seems better. Too early to say:
In raw.c
#if defined(CONFIG_700D) || defined(CONFIG_650D) || defined(CONFIG_EOSM)
    /* required to squeeze 1080p in x5 zoom */
    (*height)++;
#elif defined(CONFIG_DIGIC_V)
    (*height)--;
#endif

to this:
    /* required to squeeze 1080p in x5 zoom */
    (*height)++;
#endif



Regarding math, check A1ex question here:
https://bitbucket.org/Dannephoto/magic-lantern/commits/24e2631aabb6c1d751f35c9f32a844d6eedfec9c#comment-6238927
Quote
32000000/520/1288 = 47.77, how did you get 42?
I am not a math guy  :P



3040x1080


#if defined(CONFIG_EOSM) || defined(CONFIG_700D) || defined(CONFIG_650D) || defined(CONFIG_100D)
        skip_top    = 28;
        skip_left   = 72;
        skip_right  = 0;

to this:
#if defined(CONFIG_EOSM) || defined(CONFIG_700D) || defined(CONFIG_650D) || defined(CONFIG_100D)
        skip_top    = 28;
        skip_left   = 0;
        skip_right  = 0;



Also changed to this:
        #if defined(CONFIG_EOSM) || defined(CONFIG_700D) || defined(CONFIG_650D) || defined(CONFIG_100D)
        skip_top    = 20;
        skip_left   = 0;
        skip_right  = 0;
        #ifdef CONFIG_100D

And got 3040x1088
Only tested 14fps

Seems possible to keep going and get over 1100 in height. Caveat, no preview but pink scrambled lines.

nikfreak

I am already getting better results in terms of height extension.  I wouldn't do more widht adjustments for now. It looks like we can do ~3000x1200 res. Maybe sacrifice some width to get more height. It also looks like whatevr we end up here will be 1:1 usable on 700D  :P
[size=8pt]70D.112 & 100D.101[/size]

Danne


nikfreak

I've got 2904x1254 recorded. My slow card can't manage it and also 14bit  lossless set it prints some "slot" error  after recording but the clip looks fine BUT there's a black border at the bottom at the exact size of the height extension :P

ML ASSERT:
slots[slot_index].size < max_frame_size
at mlv_lite.c:3408 (raw_video_rec_task), task raw_rec_task
lv:0 mode:3

raw_rec_task stack: 1edd18 [1eddd8-1ecdd8]
0x0044C94C @ a7a020:1edd48
0x0044C468 @ 44c9ac:1edd18

Magic Lantern version : Nightly.2018Jun11.100D101
Mercurial changeset   : 0075d0fa70f2+ (crop_rec_4k) tip
Built on 2018-06-11 10:38:36 UTC by ml@ml-pc.
Free Memory  : 578K + 1123K



ML ASSERT:
0
at mlv_lite.c:2517 (compress_task), task compress_task
lv:0 mode:3

compress_task stack: 1f1d58 [1f1de0-1f0de0]
0x0044C94C @ a751ac:1f1d88
0x0044C468 @ 44c9ac:1f1d58

Magic Lantern version : Nightly.2018Jun11.100D101
Mercurial changeset   : 0075d0fa70f2+ (crop_rec_4k) tip
Built on 2018-06-11 10:38:36 UTC by ml@ml-pc.
Free Memory  : 578K + 1122K


Here the settings to experiment with slightly reduced settings:
https://drive.google.com/file/d/10vPO9U7lrEh-iBbtYovBp8jquFDwmEOR/view?usp=sharing
https://drive.google.com/file/d/1ZVB8hif2B4WGNe0u-hepC3ZFFwrxMDcc/view?usp=sharing

Btw: Can you do some testing (3k width only) how much recording is possible and if there's corrupted frames etc.?
[size=8pt]70D.112 & 100D.101[/size]

OlRivrRat

   @NikFreak

Will theses Settings work with >

magiclantern-Nightly.2018Jun09.100D101sd_uhs

   or

magiclantern-Nightly.2018Jun10.100D101_merge
ORR~DeanB  ~~  80D-ML  &  SL1+ML  &  5D2+ML  &  5DC+ML  &  70D+ML(AliveAgain)

nikfreak

It will work on any build which enables adtg gui module. Check Danne's previous posts he earlier linked some zips which are fine to use if you want to experiment.
[size=8pt]70D.112 & 100D.101[/size]

Danne

I see you altered some ADTG adresses too. Tell me(noobish) can I add those to the hack as well or are they to be put in manually? Tried adding all but seems only the C0F0 is added. Would be gret if we could keep on working the hack here :):
static int res3k_reg(int reg)
{
    if (regs[reg].dst == 0xC0F0)
    {
        switch (regs[reg].reg)
        {
            case 0x6804:                /* C0F06804 - raw resolution */
                return 0x4580311;       /* from 0x528011B -> 3072px in raw_rec */
            case 0x6824:
               return 0x4ca;
            case 0x6828:
               return 0x4ca;
            case 0x682c:
               return 0x4ca;
            case 0x6830:
               return 0x4ca;
            case 0x6008:
               return 0x36b036b;
            case 0x600c:
               return 0x36b036b;
            case 0x6010:
               return 0x36b;
            case 0x8172:
               return 0x457;
            case 0x713c:
               return 0x455;
            case 0x8178:
               return 0x457;
            case 0x8179:
               return 0x587;
            case 0x7150:
               return 0x428;

        }
    }

    return 0;
}


I doubet 3k will last more than a second or two. WHen testing the 2880x1072 I got more tan a few good seconds with sd_uhs enabled. Needs more testing. Very nice that height is growing but couldn´t get it to work yet over here  :P

@OlRivrRat
Here´s an adtg_gui version:
https://bitbucket.org/Dannephoto/magic-lantern/downloads/magiclantern-Nightly.2018Jun09.100D101sd_uhs_adtg_gui.zip

nikfreak

Danne like this:

static int res3k_reg(int reg)
{
    if (regs[reg].dst == 0xC0F0)
    {
        switch (regs[reg].reg)
        {
            case 0x6804:                /* C0F06804 - raw resolution */
                return 0x4580311;       /* from 0x528011B -> 3072px in raw_rec */
            case 0x6824:
               return 0x4ca;
            case 0x6828:
               return 0x4ca;
            case 0x682c:
               return 0x4ca;
            case 0x6830:
               return 0x4ca;
            case 0x6008:
               return 0x36b036b;
            case 0x600c:
               return 0x36b036b;
            case 0x6010:
               return 0x36b;
            case 0x6014:
               return 0x66b;
            case 0x7150:
              return 0x428;
            case 0x713c:
               return 0x455;
         
         }
    }
       else if (regs[reg].dst == 2)        /* ADTG 2 */
    {
        switch (regs[reg].reg)
        {
           case 0x8172:
               return 0x457;
            case 0x8178:
               return 0x457;
            case 0x8179:
               return 0x587;

        }
    }

    return 0;
}


Notice / Update:
I added C0F06014 for you into the code. Now later with "Overriden regs" option you can modify it for vertical resolution and fps.

btw can you post me that updated adtg_gui module. Me is doing this still manually each time....
[size=8pt]70D.112 & 100D.101[/size]

Danne


nikfreak

Oops updated my code above
713c and 7150 are not adtg2 registers. Please recompile.
[size=8pt]70D.112 & 100D.101[/size]

Danne


OlRivrRat

           @Danne

Thanks for the "adtg_gui version" but My SL1 wasn't happy with that taste of it.

Have a Crash Log, how do I get it to You?
ORR~DeanB  ~~  80D-ML  &  SL1+ML  &  5D2+ML  &  5DC+ML  &  70D+ML(AliveAgain)

Danne

There"s crashes all the time with the adtg_gui and the 100D. It works better though with the hack from Nikfreak.

Danne

Modified the adtg_gui module to following and recordings works in 2904x1248

adtg_gui_ver_03.zip
https://bitbucket.org/Dannephoto/magic-lantern/downloads/adtg_gui_ver_03.zip
static int res3k_reg(int reg)
{
    if (regs[reg].dst == 0xC0F0)
    {
        switch (regs[reg].reg)
        {
            case 0x6800:                /* C0F06804 - raw resolution */
                return 0x40019;
            case 0x6804:                /* C0F06804 - raw resolution */
                return 0x5080301;       /* from 0x528011B -> 3072px in raw_rec */
            case 0x6824:
               return 0x4ca;
            case 0x6828:
               return 0x4ca;
            case 0x682c:
               return 0x4ca;
            case 0x6830:
               return 0x4ca;
            case 0x6008:
               return 0x36b036b;
            case 0x600c:
               return 0x36b036b;
            case 0x6010:
               return 0x36b;
            case 0x6014:
               return 0x66b;
            case 0x7150:
              return 0x428;
            case 0x713c:
               return 0x505;
         
         }
    }
       else if (regs[reg].dst == 2)        /* ADTG 2 */
    {
        switch (regs[reg].reg)
        {
           case 0x8172:
               return 0x437;
            case 0x8178:
               return 0x437;
            case 0x8179:
               return 0x587;

        }
    }

    return 0;
}


I added and changed a few registers from Nikfreak´s latest screenshots.

             case 0x6014:
               return 0x66b;

Not sure if I´m talking out my ass here but above register gives around 22fps which seems stable for non corrupted frames. So do we lower height to get more fps? Is this the register to tweak?:
            case 0x6804:                /* C0F06804 - raw resolution */
                return 0x5080301;


Or this as you state:
QuoteNotice / Update:
I added C0F06014 for you into the code. Now later with "Overriden regs" option you can modify it for vertical resolution and fps.

nikfreak


case 0x6008:
               return 0x35b035b;
            case 0x600c:
               return 0x35b035b;
            case 0x6010:
               return 0x35b;
            case 0x6014:
               return 0x65b;


Lower it step by step like this. Above seen control fps. Don't forget to open Canon menu after each adjustment. until you reach 24fps and no corrupted frames. I guess you can lower 0x6014 to something like 0x60b or even lower 0x5cb etc.

The first three have not much room to lower. Just try step by step

Update: I initially stated that movie crop mode can be adjusted with same technique. Wouldn't it be even more useful in that mode?
x3 zoom vs x5. Wide angle will be much wider???
[size=8pt]70D.112 & 100D.101[/size]

Danne

Cool, will test!
Extending 3x mode is of course very interesting. How much more info can we get in there you think(movie crop mode)? 2.5 and 3K seems exclusively for 5x Zoom?
Sidenote. Thinking of a lua script which performs initial adtg steps...

nikfreak

Initial test was definitely 2400 width possible in movie crop mode. Maybe more with the knowledge now.
From 70D I know there's a x3 zoom which I think "movie crop mode" is equal to. But I can't tell if the output is different or x5 zoom has the same FOV / POV. I still "think" it has another POV when viewing on PC but If they are same then it doesn't make sense. Can someone comment on it.
[size=8pt]70D.112 & 100D.101[/size]

Danne

2400. That seems really nice!

By the way. Got 23.996 fps with this:
static int res3k_reg(int reg)
{
    if (regs[reg].dst == 0xC0F0)
    {
        switch (regs[reg].reg)
        {
            case 0x6800:                /* C0F06804 - raw resolution */
                return 0x40019;
            case 0x6804:                /* C0F06804 - raw resolution */
                return 0x5080301;       /* from 0x528011B -> 3072px in raw_rec */
            case 0x6824:
               return 0x4ca;
            case 0x6828:
               return 0x4ca;
            case 0x682c:
               return 0x4ca;
            case 0x6830:
               return 0x4ca;
            case 0x6008:
               return 0x34b034b;
            case 0x600c:
               return 0x34b034b;
            case 0x6010:
               return 0x34b;
            case 0x6014:
               return 0x62b;
            case 0x7150:
              return 0x428;
            case 0x713c:
               return 0x505;
         
         }
    }
       else if (regs[reg].dst == 2)        /* ADTG 2 */
    {
        switch (regs[reg].reg)
        {
           case 0x8172:
               return 0x437;
            case 0x8178:
               return 0x437;
            case 0x8179:
               return 0x587;

        }
    }

    return 0;
}


Register change in question:
23.996 fps
           case 0x6008:
               return 0x34b034b;
            case 0x600c:
               return 0x34b034b;
            case 0x6010:
               return 0x34b;
            case 0x6014:
               return 0x62b;



24.037 fps
           case 0x6008:
               return 0x35b035b;
            case 0x600c:
               return 0x35b035b;
            case 0x6010:
               return 0x35b;
            case 0x6014:
               return 0x60b;

nikfreak

Good news. Battery empty I am pausing BUT I have the full vertical resolution displayed on the LCD. Needs some fine tuning an additional register added. Now there's some pink overlay but that could be CMOS registers. We will see when I pick it up again ;-)
[size=8pt]70D.112 & 100D.101[/size]

Danne

Sounds great Nikfreak. Can´t wait for some more registers  :P. Meanwhile I created a ML build which contains a lua script that enables SD overclocking and applies the adtg_gui patches for 2904x1248 24 fps recording. The lua script is called SD overclock-adtg_gui helper.
ML build here:
https://bitbucket.org/Dannephoto/magic-lantern/downloads/magiclantern-Nightly.2018Jun12.100D101_adtg_gui_ver_05.zip

Movie link here:


You absolutely need global draw set to off before running the script. Some bug. Otherwise you have to do a battery pull.
Liveview window will be pinkish(black on video) but you will be able to record a second or two even with the crappy liveview view.

wety67e

wow  ;D

But with SD overclocking ...no zoom 5x..What is the maximum resolution?? Only 1736x976 24 fps recording??

Thanks

Walter Schulz

?
Which build are you using?

nikfreak

Danne can you try this:


static int res3k_reg(int reg)
{
    if (regs[reg].dst == 0xC0F0)
    {
        switch (regs[reg].reg)
        {
            case 0x6800:                /* C0F06804 - raw resolution */
                return 0x40019;
            case 0x6804:                /* C0F06804 - raw resolution */
                return 0x5080301;       /* from 0x528011B -> 3072px in raw_rec */
            case 0x6824:
               return 0x4ca;
            case 0x6828:
               return 0x4ca;
            case 0x682c:
               return 0x4ca;
            case 0x6830:
               return 0x4ca;
            case 0x6008:
               return 0x34b034b;
            case 0x600c:
               return 0x34b034b;
            case 0x6010:
               return 0x34b;
            case 0x6014:
               return 0x60b;
            case 0x7150:
              return 0x428;
            case 0x713c:
               return 0x545;
         
         }
    }
       else if (regs[reg].dst == 2)        /* ADTG 2 */
    {
        switch (regs[reg].reg)
        {
           case 0x8172:
               return 0x437;
            case 0x8178:
               return 0x437;
            case 0x8179:
               return 0x587;
            case 0x82b6:
               return 0x87f;

        }
    }

    return 0;
}


713c has been changed and 82B6 added.
[size=8pt]70D.112 & 100D.101[/size]

Danne

hm, I am getting RAW detect error and having a hard time getting the registers to apply. Also notice that fps is 24.445 instead of 24.037 fps from the registers below.
Back soon...

static int res3k_reg(int reg)
{
    if (regs[reg].dst == 0xC0F0)
    {
        switch (regs[reg].reg)
        {
            case 0x6800:                /* C0F06804 - raw resolution */
                return 0x40019;
            case 0x6804:                /* C0F06804 - raw resolution */
                return 0x5080301;       /* from 0x528011B -> 3072px in raw_rec */
            case 0x6824:
               return 0x4ca;
            case 0x6828:
               return 0x4ca;
            case 0x682c:
               return 0x4ca;
            case 0x6830:
               return 0x4ca;
            case 0x6008:
               return 0x35b035b;
            case 0x600c:
               return 0x35b035b;
            case 0x6010:
               return 0x35b;
            case 0x6014:
               return 0x60b;
            case 0x7150:
              return 0x428;
            case 0x713c:
               return 0x505;
         
         }
    }
       else if (regs[reg].dst == 2)        /* ADTG 2 */
    {
        switch (regs[reg].reg)
        {
           case 0x8172:
               return 0x437;
            case 0x8178:
               return 0x437;
            case 0x8179:
               return 0x587;

        }
    }

    return 0;
}

Danne

I got a question. I tried a baby step to see if we could get back 1080 in the 2520x1072 mode in the 100D without stirring too much, keeping 10/12bit lossless and so on. By tweaking folowing:
2520x1072
            case 0x6804:                /* C0F06804 - raw resolution */
                return 0x4580201;

To:
2520x1080
            case 0x6804:                /* C0F06804 - raw resolution */
                return 0x45902a1;


All modes seems ok with this change, preview working and so on. Question. How do I test this newly set register and put it in ML code not needing go through adtg_gui every time?

Seems it makes mv1080p non zoom mode to freeze but 5xZoom works...

Following gives 14bit-lossless 24 fps with good preview capabilities, 16:9, a good preset):
2520x1248
            case 0x6804:                /* C0F06804 - raw resolution */
                return 0x50802a1;