Raw Resolution from data rate.

Started by bnvm, September 05, 2013, 12:43:46 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

bnvm

How about an option to choose the highest raw recording resolution possible using a supplied data rate, aspect ratio?  Would be a pretty useful feature to squeeze the most out of raw video. Thanks.

ItsMeLenny

When selecting raw res it tells you what data rate would be required.
To list all the different combinations would be a long list.
Choose your aspect ratio then ramp it up til you get max data rate.

bnvm

For example I shoot 4/3 with an anamorphic adapter sometimes. I can choose from 1472x1106 which is something like 65 MB/s or 1600x1200 which is around 77 MB/s while I get 71 MB/s with my MKII so I can never get an optimal data rate from the resolutions provided. I figured it would require a lot less work with the UI with a data rate selector than asking for more resolution options.

ItsMeLenny

You can't have "more resolution options" as the resolutions provided are calculated via some divisible number.
So you can't make up your own resolutions like 1500x1117 or the like because it's not divisible by 4 or 8 or 16, one of those numbers.
As far as I'm aware.

Rewind

QuoteSo you can't make up your own resolutions like 1500x1117
From raw_rec:
/**
* resolution should be multiple of 16 horizontally
* see http://www.magiclantern.fm/forum/index.php?topic=5839.0
* use roughly 10% increments
**/


I've been succesfully using 1152x482 on 550d, and 482 is not a multiple of 4,8 or 16.
For example 1200x500 and 1536x642 works well either.

Anyways, you can easily add whatever resolutions and aspect ratios by yourself, just edit the raw_rec and compile it. Now I'm doing this for my 650D:

static int resolution_presets_x[] = {  1200,  1280,  1472,  1504,  1520,  1536,  1552,  1600,  1728 };
#define  RESOLUTION_CHOICES_X CHOICES("1200","1280","1472","1504","1520","1536","1552","1600","1728")

static int aspect_ratio_presets_num[]      = {   25,      242,    24,    239,     235,      16,    4};
static int aspect_ratio_presets_den[]      = {   10,      100,    10,    100,     100,       9,    3};
static const char * aspect_ratio_choices[] = {"2.50:1","2.42:1","2.4:1","2.39:1","2.35:1","16:9","4:3"};


Also, please read this: http://www.magiclantern.fm/forum/index.php?topic=5839.0

bnvm

I realize that there are restrictions on the resolution, I thought from one of the papers I read that raw video comes blocks of 8 pixels so it probably should be divisible by 8. I am not asking for single pixel accuracy here, but something in between 1600 and 1472 would most likely be possible that is a 128 pixel difference after all. I see that the resolutions chosen are the most efficient ones, thanks for the link Rewind, but I think its possible that if I could max out my write speed I would be able to record continuous at a higher resolution than the highest continuous resolution currently available even if that higher res is not as efficient to write.


EDIT: I just did the math and assuming optimum write speeds, which may not be the case, here is one example.

23.976 FPS,4/3 aspect, write speed of 71 MB/s (that's the max I get with my current card).

Highest continuous current build
1472 x 1104 = 65 MB/s

Highest mod 16 res continuous with data rate set at 71 MB/s
1536 x 1152 = 70.8 MB/s

That is a little over 104% increase in resolution.

@Rewind Thanks for the tip, have you had any issues compiling on windows, if that is the OS you use? I have some programming experience so maybe I will give that a shot.