So I figured out some stuff about H.264 INI. bitrate.c 5d3/6D will have to be different. Had a start from what was discussed in the I/P thread.
The file:
Transform8x8Flag = 2
Profile = 100
Level = 51
BitRate = 110000000
EntropyCodingMode = 1
IntraPicInitQP = 5
InterPicInitQP = 5
QpOffsetForB = 0
MinQpI = 1
MinQpP = 1
MinQpB = 1
MaxQpI = 13
MaxQpP = 13
MaxQpB = 13
MinBitrate = 60000000
MaxBitrate = 110000000
SarWidth = 0
SarHeight = 0
AspectRatioIdc = 1
VideoFmtAndVspFlag = 81
VideoFullRangeFlag = 1
TimingInfoPresentFlag = 0
RateControlEnable = 1
ScalingMatrices = 0
pScalingMatrixAddr[0] = 0
pScalingMatrixAddr[1] = 0
pScalingMatrixAddr[2] = 0
pScalingMatrixAddr[3] = 0
pScalingMatrixAddr[4] = 0
pScalingMatrixAddr[5] = 0
Transform8x8Flag = 2 Transform flag. Already set to enabled.
Profile = 100 Cannot be changed. Camera has no other profiles loaded.
Level = 51 Can change this lower. 50 is all I've tried so far. But why?
BitRate = 110000000 Target bit rate for CBR/Rate Control. Adhered to for CBR more. Loosly in RC. Max is ~200-300
EntropyCodingMode = 1 1 is CABAC 0 is CAVLC
IntraPicInitQP = 5 Initial QP for inter and intra frames. Limit of 7 for "rate control" mode.
InterPicInitQP = 5 But a limit of 1 for CBR/VBR... haven't tried 0. MUCH better than any digic IV.
QpOffsetForB = 0 Have not tried but probably QP offset for B frames. I guess can be lower or higher than I.
MinQpI = 1 Min QPs for all modes. Can be 7 in RC, can be at least 1 in the other modes. Not strictly adhered
MinQpP = 1 to for VBR and CBR it seems. There can only be 13 QPs in any mode. 7-20 or 1-13 are a start.
MinQpB = 1
MaxQpI = 13 Max QP for modes that switch QP like VBR and RC. RC will only do 6-20 I believe. VBR will do
MaxQpP = 13 1-13 which seems best.
MaxQpB = 13
MinBitrate = 60000000 Min and Max for the VBR function. Don't do anything in other modes but I think max
MaxBitrate = 110000000 has to match target bit rate or you will get a crash.
RateControlEnable = 1
0= CBR - Stays at initQP and tries to get to the target bit rate. Should change QPs but really doesn't in any consistent way. Can use all QPs. 0 should be tried. Drops video when buffer or complexity is too high. Will record with audio and won't stop until sync is lost, which is real reason why audio stops w/ high bit rate, not buffer.
1 = VBR - Uses Min/Max and I think target. Also seems to switch QPs to keep rate in check. Initial QP can't be 1 I think or it won't switch. I set 5 and it hovered around 2, using 1-13 range. If you have settings too high, camera may freeze. I like this mode the best so far.
2 = Standard buffer saving function like tragic lantern but slightly faster and more stoppy. This is what you get by default but we have no good access to the MVR config. I think its on another proc. Will keep BR pretty low and can only use QPs 7-20. I should try with 1-13 again. It kicks in at the 1st buffer square now but still has a tendency to stop. Should have emphasized buffer and not frame size/prediction, tsk tsk.
ScalingMatrices = 0 Need to test this as I think it means you can put custom scaling matrixes to the encoder. The other fields are for address so I guess you load them into memory and then it uses them. Finding how this works would give a big boost to quality according to what I've read.
Other stuff:
Loading the INI can produce a lot of Err70s. Some of these should be patched I think. Some are from settings being incorrect. Sometimes it does it just because it feels like it. A good idea is to wait till the config finishes loading and the text is off the screen.
Another option will be to set the params 1 at a time from memory and not a file. This would make things a bunch easier. The only other solution is to auto-load configs or edit the files with ML and then make the camera reload them.
Having to load the config every start and hope it doesn't error 70 is a pain.
On 6D params are uploaded:
NSTUB(0xFF1F130C, str:ChangeIVAParam_ls_can_open._Transform8x8Flag_P)
Maybe there are others hidden somewhere or we can gain control of the video encoder. The future looks promising. The present is at least 100MBps with LOW qps and audio working.
RateControl will use 1-13, the crash happens if you let it use more than 13 qps.
average DRF 7.200181
standard deviation 5.679766
max DRF 13
DRF=1 219 ( 19.837 %) ####
DRF=2 337 ( 30.525 %) ######
DRF=3 0 ( 0.000 %)
DRF=4 1 ( 0.091 %)
DRF=5 2 ( 0.181 %)
DRF=6 2 ( 0.181 %)
DRF=7 2 ( 0.181 %)
DRF=8 1 ( 0.091 %)
DRF=9 1 ( 0.091 %)
DRF=10 1 ( 0.091 %)
DRF=11 2 ( 0.181 %)
DRF=12 1 ( 0.091 %)
DRF=13 535 ( 48.460 %) ##########
DRF>13 0 ( 0.000 %)
I-slices average DRF 7.200181
I-slices std. deviation 5.679766
I-slices max DRF 13
Great work!
Level might be an arbitary value, just a flag or something, it's implemented as 4.1 for IPB, 5.1 for ALL-I
Did you shoot any samples? what's the max average bitrate you got after the hack? under what ISO?
It produces similar bit rates and results to 600D. IPB makes higher rates for some reason before stopping. I can set it to target whatever rate I write to the file. It does crash/stop a bit more than the custom written version for 600D. Rate control halts with CRF 13 so I had videos producing almost 1/2 frames at CRF 1 and 2 and then 1/2 at like CRF 13. Averages out to better than stock. Video looks just like 600D video but I didn't pixel peep.
Its less dependent on ISO than digicIV. I made an 80Mbps 640x480 video with CBR. I can't open any files with bit rate viewer so haven't seen the graph.
There are a few test functions in the firmware to set some of these. Also need to see if my IPB videos are 5.1 or 4.1, I never new profile was supposed to be lower.
*, they are 5.1
Quote from: 1% on January 06, 2013, 11:34:46 PM
It produces similar bit rates and results to 600D. IPB makes higher rates for some reason before stopping. I can set it to target whatever rate I write to the file. It does crash/stop a bit more than the custom written version for 600D. Rate control halts with CRF 13 so I had videos producing almost 1/2 frames at CRF 1 and 2 and then 1/2 at like CRF 13. Averages out to better than stock. Video looks just like 600D video but I didn't pixel peep.
Its less dependent on ISO than digicIV. I made an 80Mbps 640x480 video with CBR. I can't open any files with bit rate viewer so haven't seen the graph.
There are a few test functions in the firmware to set some of these. Also need to see if my IPB videos are 5.1 or 4.1, I never new profile was supposed to be lower.
*, they are 5.1
You got IPB file with level 5.1? that's pretty impressive, the max bitrate is 300Mbps with 5.1, and only 62Mbps with 4.1 (according to spec)
In my tests I was able to hit 62Mbps with IPB mode. 150Mbps in ALL-I mode.
Maybe high bitrate IPB is better than standard bitrate ALL-I.
It definitely seems less prone to stop even though gop is standard. I don't know All I at QP 1 or IPB at QP1 is better. 5d3 should be able to match this so if someone loads up a fast CF card and sets BR to 300 we can see the upper limit.
I've turned on the 4x4 matrixes just by toggling the parameter in the config file:
This is 1. Movies don't play back.
Matrix coefficients : BT.709-2, SMPTE 274M, SMPTE 296M
Custom intra4X4 luma
16 21 26 31
21 26 31 36
26 31 36 31
31 36 196 4
setting of 2:
Custom intra4X4 luma
12 26 40 56
26 40 56 213
40 56 48 21
56 48 21 213
Setting of 3 did not work. Which one is better? 1 or 2?
2 Also won't play back. hmmm data looks like its there.
the sps/pps and nal uints are all screwed up again.
Setting both initQPs to -1 lets them be auto picked and will result in RC respecting your min/max and VBR doing actual VBR. It picked 1-26. For CBR not recommended as its a fixed QP mode. Initial is pretty much what it encodes at for the entire duration.
Quote from: 1% on January 06, 2013, 11:34:46 PM
It produces similar bit rates and results to 600D. IPB makes higher rates for some reason before stopping.
It should also produce better overall quality. Properly encoded B-frames can decrease bitrate by 20% or so. In other words, using B-frames at the same quality should reduce file size by 20%, or, using B-frames should increase quality by 20% at the same file size. I highly doubt the Canon implementation nets 20%, but 10% shouldn't be unreasonable.
Quote from: Marvin on January 07, 2013, 10:03:37 PM
You got IPB file with level 5.1? that's pretty impressive, the max bitrate is 300Mbps with 5.1, and only 62Mbps with 4.1 (according to spec)
With High Profile, yes. Has it been confirmed that 5d3/6d uses high profile? (edit: nevermind, I am catching up on the other thread) The digicIV cameras used baseline profile which reduces the max bitrates to 240Mbps and 50Mbps respectively. Bear in mind that the level flag is just that, a flag. You could flag a 8000x8000 resolution video @ 9 gazillion Mbps with 300 reference frames as level 1 if you wanted to. Afaik, a lot of decoders these days ignore the flag and run a quick analyses themselves to determine playback.
Quote from: 1% on January 08, 2013, 11:03:46 PM
Custom intra4X4 luma
16 21 26 31
21 26 31 36
26 31 36 31
31 36 196 4
setting of 2:
Custom intra4X4 luma
12 26 40 56
26 40 56 213
40 56 48 21
56 48 21 213
Setting of 3 did not work. Which one is better? 1 or 2?
Matrices and how they effect encoding is a fairly detailed topic, however, some very basic theories. The numbers at the top left represent large flat areas, and the numbers at the bottom right represent very fine details. Larger numbers mean more detail removal (in a nutshell).
Also, left to right and top to bottom represent vertical and horizontal frequencies. So in those 2 matrices above, the 1st one is applying some extra compression (detail removal) to the horizontal frequencies, and the second is applying more compression to the vertical frequencies. This could be very useful due to the way the encoder scales the information from the sensor but would require a decent amount of testing to ascertain best case.
See: http://en.wikipedia.org/wiki/Quantization_%28image_processing%29
JVT Matrix, which iirc is an official H.264 matrix.
#jvt
INTRA4X4_LUMA =
6,13,20,28,
13,20,28,32,
20,28,32,37,
28,32,37,42
INTRA4X4_CHROMAU =
6,13,20,28,
13,20,28,32,
20,28,32,37,
28,32,37,42
INTRA4X4_CHROMAV =
6,13,20,28,
13,20,28,32,
20,28,32,37,
28,32,37,42
INTER4X4_LUMA =
10,14,20,24,
14,20,24,27,
20,24,27,30,
24,27,30,34
INTER4X4_CHROMAU =
10,14,20,24,
14,20,24,27,
20,24,27,30,
24,27,30,34
INTER4X4_CHROMAV =
10,14,20,24,
14,20,24,27,
20,24,27,30,
24,27,30,34
INTRA8X8_LUMA =
6,10,13,16,18,23,25,27,
10,11,16,18,23,25,27,29,
13,16,18,23,25,27,29,31,
16,18,23,25,27,29,31,33,
18,23,25,27,29,31,33,36,
23,25,27,29,31,33,36,38,
25,27,29,31,33,36,38,40,
27,29,31,33,36,38,40,42
INTER8X8_LUMA =
9,13,15,17,19,21,22,24,
13,13,17,19,21,22,24,25,
15,17,19,21,22,24,25,27,
17,19,21,22,24,25,27,28,
19,21,22,24,25,27,28,30,
21,22,24,25,27,28,30,32,
22,24,25,27,28,30,32,33,
24,25,27,28,30,32,33,35
Here is a overview of the frequencies for an 8x8 matrix.
(http://i.imgbox.com/adsDAonD.gif)
I hope to have a 5d3 in around 2 months. I hope that I can be much more useful in testing then.
It should be using the 5.1 in IPB. When its not set the BR is limited to 60MBps. The matrix files don't play back, unfortunately, don't know why.
Quote from: 1% on January 14, 2013, 11:18:52 AM
The matrix files don't play back, unfortunately, don't know why.
can you upload (a small) one to http://upload.g3gg0.de ?
They are all on the 6D thread.
I can make some more when I get back from work:
http://www.qfpost.com/file/d?g=3TjJxDJYB
Quote from: 1% on January 14, 2013, 12:06:40 PM
I can make some more when I get back from work:
http://www.qfpost.com/file/d?g=3TjJxDJYB
Here is what mkvtoolnix reported when trying to mux the mov to mkv.
QuoteWarning: 'F:\Downloads\MVI_6990.MOV' track 0: The AVC video track is missing the 'CTTS' atom for frame timecode offsets. However, AVC/h.264 allows frames to have more than the traditional one (for P frames) or two (for B frames) references to other frames. The timecodes for such frames will be out-of-order, and the 'CTTS' atom is needed for getting the timecodes right. As it is missing the timecodes for this track might be wrong. You should watch the resulting file and make sure that it looks like you expected it to.
Might be worth trying with timecode turned off. If we find how the matrices work we can set custom 4x4's which enhance detail. I'll dig through some more of the TI docs because canon pretty much cribbed TI's proc and removed some modes.
According to H264/14496-10 doc
Transform8x8flag is
0 - Disabled. Only 4x4 transforms are used (default).
1 - Allows the additional use of 8x8 transform. Results in optimal RD performance
since it considers all possible modes
2 - Consider only 8x8 transform modes (i.e. disables 4x4 transform)
scaling matrix and all the addresses mean:
0 Not Present – Disabled (Default)
1 Present only in SPS
2 Present only in PPS
3 Present in both SPS and PPS
they are called ScalingListPresentFlag0
first 5 are for 4x4, 6+7 are for 8x8 which is not present in config
Setting transform to 1 and scaling matrixes to 3 produces video with these characteristics and its playable. all other combos so far seem not to work. 4x4 custom flag is not present however
Color primaries : BT.709-2, SMPTE 274M, SMPTE 296M
Transfer characteristics : BT.709-2, SMPTE 170M, SMPTE 274M, SMPTE 293M, SMPTE 296M
Matrix coefficients : BT.709-2, SMPTE 274M, SMPTE 296M
vs default:
Color primaries : BT.709-5, BT.1361, IEC 61966-2-4, SMPTE RP177
Transfer characteristics : BT.709-5, BT.1361
Matrix coefficients : BT.709-5, BT.1361, IEC 61966-2-4 709, SMPTE RP177
*This breaks 60P
What do you mean by, "This breaks 60P?"
720P60 records green instead of video with these settings and the height is wrong.
Here are some encoder docs... we have pretty much the same thing in 5d3/6d
Encoder Parameters
http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=spraba9&fileType=pdf
canon implemented some differently...
data sheet:
http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=sprugx8a&fileType=pdf
FAQ: http://processors.wiki.ti.com/index.php/DaVinciHD_Codecs_FAQ
QuoteHow does the target bit rate relate to the achieved output bit rate?
The transrater produces a bit-stream that has an average bit rate which is within +/- 5% of the target bit rate
Quote
What is the maximum resolution supported by the TI encoder?
Currently, TI has 2 separate encoders on DM6467. The 720p encoder can support resolutions from QCIF up to 720p. It can also support 1920 x 544 resolution as a special case. The 1080p encode can support resolutions from 640 x 448 up to 1920 x 1088. The restriction on 1080p30 encoder is that the width must be a multiple of 32, and height must be a multiple of 32.Also if the input resolution is 1920x1080, the last 8 lines of the frame need to padded and provided by the application to the encoder
QuoteCan the Hdvicps do encode/decode for 422 chroma format?
No, the Hdvicps do not support 422 chroma format.
How to do the 422 --> 420 chroma conversion (for encoder) and 422 --> 420 chroma conversion (for display) on DM6467?
The VDCE engine on the DM6467 can be used for the chroma conversions. Alternately, you could even use the DSP to do the chroma conversion.
QuoteCan the VDCE do up-scaling of YUV?
No, the VDCE can be used only for down-scaling the YUV. It does not support up-scaling.
So 422 and 2k or anything is out with the hardware encoder. Scaling is NOT so if YUV buffer is scaled it could be read and encoded via something else.. but dma/CPU are the only options.
Nice find, well done :)
does this mean, 1080/50/60p is possible in the hardware?
Means its not possible, nor is 4:2:2
ok, well I guess 1D C uses a different h264 encoder then.
Makes me wonder what it uses. They did mod the design so its not 1:1. But the FPS in 1080 and 720 and behavior + parameters match.
Also camera has no such limitation itself, you could create a 4K 4:22 buffer I bet. Probably easy to switch out encoder part... 650D has no ivaparam but has digic V. well... easy if you're the factory. Would explain the almost identical performance of 600d with digic IV.
ok then, maybe we'll just leave the mystery as it is?
which directions are we heading towards now? focusing on the scaling and bitrate parameters?
I did a quick search and couldn't find an HW realtime 4K encoder. I'd really like to see the internal of a 1Dc
Quotewhich directions are we heading towards now?
Best thing would be to make the YUV buffer 1:1` and encode that. or figure out the LV jpegs (422). The scaling is what really degrades the image.
You won't get much from anything except 1d firmware decompile. the encoder probably inside the digic package... and I thouht 1dc 2k/4k is jpeg, not 264
Ah, that explains it then
Quote from: 1% on February 12, 2013, 11:22:50 PM
Best thing would be to make the YUV buffer 1:1` and encode that. or figure out the LV jpegs (422). The scaling is what really degrades the image.
You won't get much from anything except 1d firmware decompile. the encoder probably inside the digic package... and I thouht 1dc 2k/4k is jpeg, not 264
Only 4K is M-JPEG, all other recording formats are H264.
(http://www.eoshd.com/wp-content/uploads/2012/10/caption_0101.jpg)
Hmm... is it 4:2:2 though? they co-designed with ti so they could have solved some of the regular encoder's problems. They renamed the parameters slightly already. Have to look inside to see.
Quote from: 1% on February 13, 2013, 05:30:43 PM
Hmm... is it 4:2:2 though? they co-designed with ti so they could have solved some of the regular encoder's problems. They renamed the parameters slightly already. Have to look inside to see.
Only 4K is JPEG 8bit 4:2:2, H264 is the same options as 5D3, plus 50p/60p mode and s35 mode.
Since I can now analyze files:
Transform8x8Flag=
0 - 16x16 only
1 - 8x8 only
2 - Auto 8x8,16x16, sometimes 4x4
Is there a benefit to having pmode be 8x8 all the time? Messing with 4x4 matrices seems to produce broken files or in mode 3 seems to set 8x8flag to 0 more.
So 1 I see 8x8 and 16x16 P mode and so far no 4x4 p-mode. 8x8 flag on all frames.
2 I see all but transform flag is only on some frames.
the 4x4 pops up like this
position : 112x0
slice_id : 1
mb_addr : 112
size (in bits) : 362
tr, pr, mv size : 346, 15, 0
mb_type : Intra 0 (I_4x4)
transform_8x8 : 0
field\frame : frame
cbp bits : 0 1101 1 11 0 00
: 0111 01 00
: 1111
: 0101
quant_param : 1
pmode : Intra_4x4
ipred Intra_4x4 :
DC DC DC DC
Vert Vert Vert Vert
Vert Vert Vert Vert
Vert DC Vert Vert
ipred chroma : DC
Are they worth using vs 8x8 flag on everything?
We need the ability to utilise both 8x8 and 4x4 transform - the finer 4x4 sub blocks consume more memory but when enabled along with 8x8 tend only to be used on strong changes in luma variance (like highlights and vert/horiz lines - edge detection) - the majority of the picture in h264 will be encoded in 8x8. Therefore I suggest to leave Transform8x8Flag=2 (Auto) alone.
When switching on the SIX '0' to '5' 4x4 scaling matrices; have you a way of user-entry (hex) into the sixteen '00' to '15' numbered slots yet? Also have you discovered a way of switching on and edit/entry of the two 8x8s [7] and [8]
I wish I had a 5DMKIII to play with - Id resolve a few of the problems pretty quickly. :-)
Here's a hex version of my GH2 moon setting for the 4x4s (note I have not included the special 'Fallback' matrix which kicks in when the encoder runs out of memory/buffer.
1080p24 Scaling I=0x706, 0xD0A, 0xD0A, 0x140D, 0x130C, 0x140D, 0x1912, 0x1913, 0x1912, 0x1912, 0x241A, 0x2424, 0x241A, 0x2624, 0x2624, 0x2626, 0x706, 0x1210, 0x1210, 0x201E, 0x1F17, 0x201E, 0x3030, 0x3030, 0x3030, 0x3030, 0x7F48, 0x7F48, 0x7F48, 0x7F7F, 0x7F7F, 0x7F7F, 0x706, 0x1210, 0x1210, 0x201E, 0x1F17, 0x201E, 0x3030, 0x3030, 0x3030, 0x3030, 0x7F48, 0x7F48, 0x7F48, 0x7F7F, 0x7F7F, 0x7F7F
1080p24 Scaling P=0x907, 0x1E16, 0x1E16, 0x2824, 0x2820, 0x2816, 0x4B24, 0x4B39, 0x4B4E, 0x4B57, 0x729C, 0x7266, 0x7248, 0xC090, 0xC0FF, 0xFFFF, 0x906, 0x4C24, 0x4C24, 0x7854, 0x684B, 0x7854, 0x7FE4, 0x7FE4, 0x7FE4, 0x7FE4, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x906, 0x4C24, 0x4C24, 0x7854, 0x684B, 0x7854, 0x7FE4, 0x7FE4, 0x7FE4, 0x7FE4, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
1080p24 Scaling B=0xC08,0x120A,0x120A,0x2414,0x180E,0x2414,0x3818,0x3820,0x3820,0x3818,0x4038,0x526C,0x4038,0x6C7F,0x6C7F,0x6C7F, 0x905, 0xD0A, 0xD0A,0x1419,0x120F,0x1419,0x4850,0x4850,0x4850,0x4850,0x546C,0x546C,0x546C,0x608C,0x608C,0x6CB0, 0x905, 0xD0A, 0xD0A,0x1419,0x120F,0x1419,0x4850,0x4850,0x4850,0x4850,0x546C,0x546C,0x546C,0x608C,0x608C,0x6CB0
Note that these matrices are condensed as two of the 6 matrices are identical - I think (in the pps or sps) you'll find Intra scaling_matrix(2) is the same as (1) and Inter scaling_matrix (5) is the same as (4) so you only need to design/devise entry for four scaler tables for each of the three IPB frame types entry - as in to produce Intra Y (0) Inter Y (3), Intra Cb/r (1) and Inter Cb/r (4).
--------- Profiles -----
Level = 51 currently (default) This allows Adaptive 8x8 transform. If it were =40 (level 4) it would probably force the encoder into using 4x4 transform. Give it a try. However, the numbr of macro blocks allowed (and size) will fall.
Here's an SPS (sequence Parameter Set) ripped from the new Panasonic GH3's 24p All-I mode (note the Profile is High Level 50 (5);-
[00]seq_parameter_set_rbsp() {
profile_idc = 100 (High)
constraint_set0_flag = 0 (false)
constraint_set1_flag = 0 (false)
constraint_set2_flag = 0 (false)
constraint_set3_flag = 0 (false)
reserved_zero_4bits = 0 (false)
level_idc = 50
seq_parameter_set_id = 0
if (profile_idc == 100 || profile_idc == 110 || profile_idc == 122 || profile_idc == 144) {
chroma_format_idc = 1 (4:2:0)
if (chroma_format_idc == 3)
residual_colour_transform_flag = na
bit_depth_luma_minus8 = 0 (8)
bit_depth_chroma_minus8 = 0 (8)
qpprime_y_zero_transform_bypass_flag = 0 (false)
seq_scaling_matrix_present_flag = 1 (true)
if (seq_scaling_matrix_present_flag)
for (i = 0; i < 8; i++) {
seq_scaling_list_present_flag[0] = 1 (true)
if (seq_scaling_list_present_flag[0])
scaling_list_4x4[00] = 6
scaling_list_4x4[01] = 10
scaling_list_4x4[02] = 14
scaling_list_4x4[03] = 18
scaling_list_4x4[04] = 10
scaling_list_4x4[05] = 13
scaling_list_4x4[06] = 17
scaling_list_4x4[07] = 36
scaling_list_4x4[08] = 13
scaling_list_4x4[09] = 16
scaling_list_4x4[10] = 34
scaling_list_4x4[11] = 96
scaling_list_4x4[12] = 16
scaling_list_4x4[13] = 32
scaling_list_4x4[14] = 72
scaling_list_4x4[15] = 127
seq_scaling_list_present_flag[1] = 1 (true)
if (seq_scaling_list_present_flag[1])
scaling_list_4x4[00] = 6
scaling_list_4x4[01] = 16
scaling_list_4x4[02] = 30
scaling_list_4x4[03] = 48
scaling_list_4x4[04] = 16
scaling_list_4x4[05] = 24
scaling_list_4x4[06] = 48
scaling_list_4x4[07] = 72
scaling_list_4x4[08] = 30
scaling_list_4x4[09] = 48
scaling_list_4x4[10] = 72
scaling_list_4x4[11] = 127
scaling_list_4x4[12] = 48
scaling_list_4x4[13] = 72
scaling_list_4x4[14] = 127
scaling_list_4x4[15] = 127
seq_scaling_list_present_flag[2] = 1 (true)
if (seq_scaling_list_present_flag[2])
scaling_list_4x4[00] = 6
scaling_list_4x4[01] = 16
scaling_list_4x4[02] = 30
scaling_list_4x4[03] = 48
scaling_list_4x4[04] = 16
scaling_list_4x4[05] = 24
scaling_list_4x4[06] = 48
scaling_list_4x4[07] = 72
scaling_list_4x4[08] = 30
scaling_list_4x4[09] = 48
scaling_list_4x4[10] = 72
scaling_list_4x4[11] = 127
scaling_list_4x4[12] = 48
scaling_list_4x4[13] = 72
scaling_list_4x4[14] = 127
scaling_list_4x4[15] = 127
seq_scaling_list_present_flag[3] = 1 (true)
if (seq_scaling_list_present_flag[3])
scaling_list_4x4[00] = 9
scaling_list_4x4[01] = 15
scaling_list_4x4[02] = 20
scaling_list_4x4[03] = 25
scaling_list_4x4[04] = 15
scaling_list_4x4[05] = 20
scaling_list_4x4[06] = 25
scaling_list_4x4[07] = 36
scaling_list_4x4[08] = 20
scaling_list_4x4[09] = 25
scaling_list_4x4[10] = 36
scaling_list_4x4[11] = 96
scaling_list_4x4[12] = 25
scaling_list_4x4[13] = 36
scaling_list_4x4[14] = 96
scaling_list_4x4[15] = 127
seq_scaling_list_present_flag[4] = 1 (true)
if (seq_scaling_list_present_flag[4])
scaling_list_4x4[00] = 16
scaling_list_4x4[01] = 32
scaling_list_4x4[02] = 52
scaling_list_4x4[03] = 74
scaling_list_4x4[04] = 32
scaling_list_4x4[05] = 46
scaling_list_4x4[06] = 74
scaling_list_4x4[07] = 127
scaling_list_4x4[08] = 52
scaling_list_4x4[09] = 74
scaling_list_4x4[10] = 127
scaling_list_4x4[11] = 127
scaling_list_4x4[12] = 74
scaling_list_4x4[13] = 127
scaling_list_4x4[14] = 127
scaling_list_4x4[15] = 127
seq_scaling_list_present_flag[5] = 1 (true)
if (seq_scaling_list_present_flag[5])
scaling_list_4x4[00] = 16
scaling_list_4x4[01] = 32
scaling_list_4x4[02] = 52
scaling_list_4x4[03] = 74
scaling_list_4x4[04] = 32
scaling_list_4x4[05] = 46
scaling_list_4x4[06] = 74
scaling_list_4x4[07] = 127
scaling_list_4x4[08] = 52
scaling_list_4x4[09] = 74
scaling_list_4x4[10] = 127
scaling_list_4x4[11] = 127
scaling_list_4x4[12] = 74
scaling_list_4x4[13] = 127
scaling_list_4x4[14] = 127
scaling_list_4x4[15] = 127
seq_scaling_list_present_flag[6] = 1 (true)
if (seq_scaling_list_present_flag[6])
scaling_list_8x8[00] = 6
scaling_list_8x8[01] = 8
scaling_list_8x8[02] = 10
scaling_list_8x8[03] = 12
scaling_list_8x8[04] = 14
scaling_list_8x8[05] = 16
scaling_list_8x8[06] = 19
scaling_list_8x8[07] = 22
scaling_list_8x8[08] = 8
scaling_list_8x8[09] = 10
scaling_list_8x8[10] = 12
scaling_list_8x8[11] = 14
scaling_list_8x8[12] = 16
scaling_list_8x8[13] = 19
scaling_list_8x8[14] = 22
scaling_list_8x8[15] = 28
scaling_list_8x8[16] = 10
scaling_list_8x8[17] = 12
scaling_list_8x8[18] = 14
scaling_list_8x8[19] = 16
scaling_list_8x8[20] = 19
scaling_list_8x8[21] = 22
scaling_list_8x8[22] = 28
scaling_list_8x8[23] = 36
scaling_list_8x8[24] = 12
scaling_list_8x8[25] = 13
scaling_list_8x8[26] = 15
scaling_list_8x8[27] = 19
scaling_list_8x8[28] = 22
scaling_list_8x8[29] = 32
scaling_list_8x8[30] = 42
scaling_list_8x8[31] = 64
scaling_list_8x8[32] = 13
scaling_list_8x8[33] = 14
scaling_list_8x8[34] = 18
scaling_list_8x8[35] = 21
scaling_list_8x8[36] = 32
scaling_list_8x8[37] = 48
scaling_list_8x8[38] = 96
scaling_list_8x8[39] = 96
scaling_list_8x8[40] = 14
scaling_list_8x8[41] = 17
scaling_list_8x8[42] = 20
scaling_list_8x8[43] = 28
scaling_list_8x8[44] = 42
scaling_list_8x8[45] = 96
scaling_list_8x8[46] = 127
scaling_list_8x8[47] = 127
scaling_list_8x8[48] = 16
scaling_list_8x8[49] = 19
scaling_list_8x8[50] = 24
scaling_list_8x8[51] = 36
scaling_list_8x8[52] = 64
scaling_list_8x8[53] = 96
scaling_list_8x8[54] = 127
scaling_list_8x8[55] = 127
scaling_list_8x8[56] = 18
scaling_list_8x8[57] = 22
scaling_list_8x8[58] = 30
scaling_list_8x8[59] = 42
scaling_list_8x8[60] = 64
scaling_list_8x8[61] = 96
scaling_list_8x8[62] = 127
scaling_list_8x8[63] = 127
seq_scaling_list_present_flag[7] = 1 (true)
if (seq_scaling_list_present_flag[7])
scaling_list_8x8[00] = 9
scaling_list_8x8[01] = 13
scaling_list_8x8[02] = 15
scaling_list_8x8[03] = 17
scaling_list_8x8[04] = 19
scaling_list_8x8[05] = 21
scaling_list_8x8[06] = 23
scaling_list_8x8[07] = 25
scaling_list_8x8[08] = 13
scaling_list_8x8[09] = 14
scaling_list_8x8[10] = 17
scaling_list_8x8[11] = 19
scaling_list_8x8[12] = 21
scaling_list_8x8[13] = 23
scaling_list_8x8[14] = 25
scaling_list_8x8[15] = 28
scaling_list_8x8[16] = 15
scaling_list_8x8[17] = 17
scaling_list_8x8[18] = 19
scaling_list_8x8[19] = 22
scaling_list_8x8[20] = 24
scaling_list_8x8[21] = 26
scaling_list_8x8[22] = 28
scaling_list_8x8[23] = 32
scaling_list_8x8[24] = 17
scaling_list_8x8[25] = 19
scaling_list_8x8[26] = 22
scaling_list_8x8[27] = 24
scaling_list_8x8[28] = 27
scaling_list_8x8[29] = 32
scaling_list_8x8[30] = 48
scaling_list_8x8[31] = 64
scaling_list_8x8[32] = 19
scaling_list_8x8[33] = 21
scaling_list_8x8[34] = 24
scaling_list_8x8[35] = 27
scaling_list_8x8[36] = 32
scaling_list_8x8[37] = 64
scaling_list_8x8[38] = 96
scaling_list_8x8[39] = 127
scaling_list_8x8[40] = 21
scaling_list_8x8[41] = 23
scaling_list_8x8[42] = 26
scaling_list_8x8[43] = 32
scaling_list_8x8[44] = 64
scaling_list_8x8[45] = 96
scaling_list_8x8[46] = 127
scaling_list_8x8[47] = 127
scaling_list_8x8[48] = 23
scaling_list_8x8[49] = 25
scaling_list_8x8[50] = 28
scaling_list_8x8[51] = 48
scaling_list_8x8[52] = 96
scaling_list_8x8[53] = 127
scaling_list_8x8[54] = 127
scaling_list_8x8[55] = 127
scaling_list_8x8[56] = 25
scaling_list_8x8[57] = 28
scaling_list_8x8[58] = 32
scaling_list_8x8[59] = 64
scaling_list_8x8[60] = 127
scaling_list_8x8[61] = 127
scaling_list_8x8[62] = 127
scaling_list_8x8[63] = 127
}
}
}
log2_max_frame_num_minus4 = 0 (4)
pic_order_cnt_type = 0
if (pic_order_cnt_type == 0)
log2_max_pic_order_cnt_lsb_minus4 = 0 (4)
else if (pic_order_cnt_type == 1) {
delta_pic_order_always_zero_flag = na
offset_for_non_ref_pic = na
offset_for_top_to_bottom_field = na
num_ref_frames_in_pic_order_cnt_cycle = na
for(i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++)
}
num_ref_frames = 2
gaps_in_frame_num_value_allowed_flag = 0
pic_width_in_mbs_minus1 = 119 (1920)
pic_height_in_map_units_minus1 = 67 (1088)
frame_mbs_only_flag = 1
if (!frame_mbs_only_flag)
mb_adaptive_frame_field_flag = na
direct_8x8_inference_flag = 1 (true)
frame_cropping_flag = 1 (true)
if (frame_cropping_flag) {
frame_crop_left_offset = 0
frame_crop_right_offset = 0
frame_crop_top_offset = 0
frame_crop_bottom_offset = 4
}
vui_parameters_present_flag = 1 (true)
if (vui_parameters_present_flag)
vui_parameters() {
aspect_ratio_info_present_flag = 1 (true)
if (aspect_ratio_info_present_flag) {
aspect_ratio_idc = 1 (1:1)
if (aspect_ratio_idc == Extended_SAR) {
sar_width = na
sar_height = na
}
...
...continued>>>
}
overscan_info_present_flag = 1 (true)
if (overscan_info_present_flag)
overscan_appropriate_flag = 0 (false)
video_signal_type_present_flag = 1 (true)
if (video_signal_type_present_flag) {
video_format = 5
video_full_range_flag = 1 (true)
colour_description_present_flag = 1 (true)
if (colour_description_present_flag) {
colour_primaries = 1
transfer_characteristics = 1
matrix_coefficients = 1
}
}
chroma_location_info_present_flag = 0 (false)
if (chroma_loc_info_present_flag) {
chroma_location_type_top_field = na
chroma_location_type_bottom_field = na
}
timing_info_present_flag = 1 (true)
if (timing_info_present_flag) {
num_units_in_tick = 1001
time_scale = 48000
fixed_frame_rate_flag = 1
}
nal_hrd_parameters_present_flag = 1 (true)
if (nal_hrd_parameters_present_flag)
nal_hrd_parameters() {
cpb_cnt_minus1 = 0 (1)
bit_rate_scale = 4
cpb_size_scale = 6
for (SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++) {
bit_rate_value_minus1[0] = 69999
cpb_size_value_minus1[0] = 62999
cbr_flag[0] = 0
}
initial_cpb_removal_delay_length_minus1 = 16
cpb_removal_delay_length_minus1 = 30
dpb_output_delay_length_minus1 = 30
time_offset_length = 24
}
}
vcl_hrd_parameters_present_flag = 1 (true)
if (vcl_hrd_parameters_present_flag)
vcl_hrd_parameters()
cpb_cnt_minus1 = 0 (1)
bit_rate_scale = 4
cpb_size_scale = 6
for (SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++) {
bit_rate_value_minus1[0] = 69999
cpb_size_value_minus1[0] = 62999
cbr_flag[0] = 0
}
initial_cpb_removal_delay_length_minus1 = 16
cpb_removal_delay_length_minus1 = 30
dpb_output_delay_length_minus1 = 30
time_offset_length = 24
}
}
if (nal_hrd_parameters_present_flag || vcl_hrd_parameters_present_flag)
low_delay_hrd_flag = 0 (false)
pic_struct_present_flag = 1 (true)
bitstream_restriction_flag = 0 (false)
if (bitstream_restriction_flag) {
motion_vectors_over_pic_boundaries_flag = na
max_bytes_per_pic_denom = na
max_bits_per_mb_denom = na
log2_max_mv_length_vertical = na
log2_max_mv_length_horizontal = na
num_reorder_frames = na
max_dec_frame_buffering = na
}
}
}
}
[00]pic_parameter_set_rbsp() {
pic_parameter_set_id = 0
seq_parameter_set_id = 0
entropy_coding_mode_flag = 0 (CAVLC)
pic_order_present_flag = 1 (true)
num_slice_groups_minus1 = 0 (1)
if (num_slice_groups_minus1 > 0) {
slice_group_map_type = na
if (slice_group_map_type == 0)
for (iGroup = 0; iGroup <= num_slice_groups_minus1; iGroup++) {
}
else if (slice_group_map_type == 2)
for (iGroup = 0; iGroup < num_slice_groups_minus1; iGroup++) {
}
else if ((slice_group_map_type == 3) || (slice_group_map_type == 4) || (slice_group_map_type == 5)) {
slice_group_change_direction_flag = na
slice_group_change_rate_minus1 = na
} else if (slice_group_map_type == 6) {
pic_size_in_map_units_minus1 = na
for (i = 0; i <= pic_size_in_map_units_minus1; i++)
}
}
num_ref_idx_l0_active_minus1 = 0 (1)
num_ref_idx_l1_active_minus1 = 0 (1)
weighted_pred_flag = 0 (false)
weighted_bipred_idc = 0
pic_init_qp_minus26 = 0 (26)
pic_init_qs_minus26 = 0 (26)
chroma_qp_index_offset = 0
deblocking_filter_control_present_flag = 1 (true)
constrained_intra_pred_flag = 0 (false)
redundant_pic_cnt_present_flag = 0 (false)
}
[00]slice_header() {
first_mb_in_slice = 0
slice_type = 7 (I slice)
pic_parameter_set_id = 0
frame_num = 0
if (!frame_mbs_only_flag) {
field_pic_flag = na
if (field_pic_flag)
bottom_field_flag = na
}
if (nal_unit_type == 5)
idr_pic_id = 12
if (pic_order_cnt_type == 0) {
pic_order_cnt_lsb = 0
if (pic_order_present_flag && !field_pic_flag)
delta_pic_order_cnt_bottom = 0
}
if (pic_order_cnt_type == 1 && !delta_pic_order_always_zero_flag) {
delta_pic_order_cnt[0] = na
if (pic_order_present_flag && !field_pic_flag)
delta_pic_order_cnt[1] = na
}
if (redundant_pic_cnt_present_flag)
redundant_pic_cnt = na
if (slice_type == B)
direct_spatial_mv_pred_flag = na
if (slice_type == P || slice_type == SP || slice_type == B) {
num_ref_idx_active_override_flag = na
if (num_ref_idx_active_override_flag) {
num_ref_idx_l0_active_minus1 = na
if (slice_type == B )
num_ref_idx_l1_active_minus1 = na
}
}
ref_pic_list_reordering()
if ((weighted_pred_flag && (slice_type == P || slice_type == SP)) || (weighted_bipred_idc == 1 && slice_type == B))
pred_weight_table()
if (nal_ref_idc != 0)
dec_ref_pic_marking()
if (entropy_coding_mode_flag && slice_type != I && slice_type != SI)
cabac_init_idc = na
slice_qp_delta = -7
if (slice_type == SP || slice_type == SI) {
if (slice_type == SP)
sp_for_switch_flag = na
slice_qs_delta = na
}
if (deblocking_filter_control_present_flag) {
disable_deblocking_filter_idc = 0
if (disable_deblocking_filter_idc != 1) {
slice_alpha_c0_offset_div2 = 0 (-1)
slice_beta_offset_div2 = -2 (-4)
}
}
if (num_slice_groups_minus1 > 0 && slice_group_map_type >= 3 && slice_group_map_type <= 5)
slice_group_change_cycle = na
}
[00]sei() { = 16
buffering_period() {
seq_parameter_set_id = 0
if (NalHrdBpPresentFlag) {
for (SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++) {
initial_cpb_removal_delay[00] = 0
initial_cpb_removal_delay_offset[00] = 0
}
}
if (VclHrdBpPresentFlag) {
for (SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++) {
initial_cpb_removal_delay[00] = 0
initial_cpb_removal_delay_offset[00] = 0
}
}
}
}
[01]sei() { = 16
pic_timing() {
if (CpbDpbDelaysPresentFlag) {
cpb_removal_delay = 0
dpb_output_delay = 0
}
if (pic_struct_present_flag) {
pic_struct = 0 (frame)
for (i = 0; i < NumClockTS; i++) {
clock_timestamp_flag[0] = 0 (false)
if (clock_timestamp_flag[0]) {
ct_type = na
nuit_field_based_flag = na
counting_type = na
full_timestamp_flag = na
discontinuity_flag = na
cnt_dropped_flag = na
n_frames = na
if (full_timestamp_flag) {
seconds_value = na
minutes_value = na
hours_value = na
} else {
seconds_flag = na
if (seconds_flag) {
seconds_value = na
minutes_flag = na
if (minutes_flag) {
minutes_value = na
hours_flag = na
if (hours_flag)
hours_value = na
}
}
}
if (time_offset_length > 0)
time_offset = 0
}
}
}
}
}
I should make some test vids. There doesn't seem to be a way to use only 4x4 transforms or the files come out black.
Choice seems to be auto pick, 16x16 only or 8x8. Need to find decision point for what gets used and patch it.
Also, what is the difference between the 4x4, 8x8, 16x16 pmodes? Seems you can have a search of 4x4 or 8x8 and not have transform 8x8 flag set.
And what about encoding with no p frames? Is IB better than all I or IPB? Because of timecode max gop is FPS.
All-I seems like a bust. It can't handle QPs as high as IPB because of SD interface limits. Maybe would do better on 5d3 CF card.
Is there a guide for getting bitrate control to work on 5D3 for dummies? I'm on a nightly build from March 14th, I don't get any errors showing when loading an ini, but I'm seeing no changes to recordings either.
Quote from: 1% on April 15, 2013, 11:58:51 PM
And what about encoding with no p frames? Is IB better than all I or IPB? Because of timecode max gop is FPS.
All-I seems like a bust. It can't handle QPs as high as IPB because of SD interface limits. Maybe would do better on 5d3 CF card.
I've never known an encoder to do IB only.
I doubt All-I could ever be a serious contention for image quality (for current cameras). They (I frames) simply require to much bits. You can up the bits in I frames (and make them good references) in IPB thanks to leaky bucket buffering.
Quote from: 1% on April 15, 2013, 11:58:51 PMAlso, what is the difference between the 4x4, 8x8, 16x16 pmodes?
QuoteH.264 video is split up into 16x16 macroblocks during compression. These blocks can then be further split up into smaller partitions...................
4x4 is generally not very useful and has an extremely high ratio of speed cost to resulting quality gain.
http://mewiki.project357.com/wiki/X264_Settings#partitions
I personally wouldn't be worrying about matracies (yet?). Thanks to the visual optimizations in H.264, matracies now play (only) a small part in the overall image quality thanks to in-loop deblocking etc. Bigger gains should be made with GOP size, open-gop, increasing consective B-frames, ref frames, IP and PB ratios.
driftwood, I like the look of these.
chroma_qp_index_offset > Increase QP for chroma. Human Visual System is less sensitive to chroma. Increasing the compression in chroma can tweak a little extra 'overall' quality.
weighted_pred_flag
weighted_bipred_idc > Weighted prediction significantly helps with fades.
Heh, I would have to port all of this to 5d3. I have the FW, should try at some point.
You should be able to load *some* of the 6D configs.. there are some error 70s that were patched but you just have to lower a couple parameters. Make sure the INI is in the correct spot as it will show the name being loaded even if the INI is not present.
5d3 might be a bust for the gop changing, a1ex said it would write corrupt headers when altered. 6D is not. Maybe just not tested all the way. I dunno if GOP_SLAVE works, it did not on 6D.
I have to post SPS/PPS of some of the different modes since I can get at that stuff now.. Not sure where all the flags are though, they seem dynamically set per frame.
No open gop, going past FPS results in timecode error or camera freeze if you patch the former.
Fixed QP of 5, flush 6, gop 3, I think CBR config. Did not watch on PC yet, only in camera.
http://www.filedropper.com/mvi9218
You don't necessarily need to use B frames but it certainly helps with motion prediction with its bi-directional lookup.
If B frames are switched on in an IPB GOP and the GOP is 3 you should only get 'ibb'. At least two consecutive b frames should be used in all IPBs under h264;-
3 GOP = ibb
6 GOP = ibbPbb
12 GOP = ibbPbbPbbPbb
15 GOP = ibbPbbPbbPbbPbb
Your MVI_9218 download played back fine on the Mac under Quicktime and Movist. Ill take a look at this in Elecard Stream Analysis
---- POSSIBLE OTHER ENCODER SETTINGS INSIDE? ------
Are there any other encoder settings you have found which instruct the GOP type order of frames/ enable the ipb partitions?
There is a Encoder Setting for 720p, 1080i, and 1080p in the GH2 which allow for example, Encoder Setting 1 720p = 1 to 3
When = 1 (Intra), when = 2 (Intra and P frames only) when = 3 (Full IPB - ie with B frames)
However, when = 1 and the GOP length parameter is > 1 the pic_order_count can go awry, likewise if Encoder Setting 1 720p = 2 or 3 and the GOP is set to = 1 (for Intra) the i frame pic_order is all over the place resulting in playback wobbles.
in-loop deblocking does exactly as it says - it smooths the relationship of side-by-side blocks, with scaling matrices you can actually improve the luma /chroma of the low & hi frequencies. Hence the numbers top left lower than bottom right range in the matrix.
There is a setting for how many reference frames to use... I have not tried 2 or 6 in there yet... default is 3, unless in all-I. I got that idea some time last night. Maybe can get IPP somehow. Also, seems i frame written twice at the start in most videos.
I think canon actually does IBPP, IBPP. Just 3 makes IPPIPP. I'll make some more with different settings like rate control or vbr with 8x8 flag forced and auto.
There is a setting to set SPS/PPS directly, I don't know if it includes all/any flags. Besides that have to hack the encoder code directly.
Here is a plain old rate control vid:
http://www.filedropper.com/mvi8982
Also still had issue in one vid with frame skip/drop. Maybe I need to dump to card after 9 frames not 6. The short gop did help a bunch. I took 3 vids in succession. last 2 are fine, the 3rd one is the one uploaded in previous post. The 1st had drops.
* I can make IPP too now.. going longer produces a crash, will try to patch and see if I can make 6 ref frames or different patterns.
I analysed the MVI_9218.mov file and had to rip out the annexb stuff using ffmpeg to read it in codecvisa. The strange thing was I saw Slice 0 = B frame, Slice 1 = B frame, Slice 2 = IRD (first Intra reference frame) and the rest wouldn't open. Was that mov file generated with some of the recent changes?
Can you set it to provide a picture parameter set (pps) for every slice/frame?
You only need 2 ref frames to begin with. Get everything else working first!
You said "Just 3 makes IPPIPP." There must be another encoder setting somewhere to enable B frames so that you can do ibb in the 3GOP?
Send me/upload as many variable mov recordings a s you can and I will analyse them
I think I mis-typed that.
Its either IPP or IBB... IPP seems to skip more.
Right now porting to 113 and having issues so we'll be back shortly... I hope :)
Hang on, I just re-read your earlier post - are you saying the 5DmkIII encoder is the same as the Texas Instruments TMS320DM365 H.264 Encoder?
Close... very similar design. Canon changed some parameters. Like initqp of -1 worked and I got that from the docs.
I'm on a nightly build from March 14th, I don't get any errors showing when loading an ini, but I'm seeing no changes to recordings either.
I think my little jaunt into 113 answered this riddle... if you're loading configs and no changes are taking place there is a possible explanation. 113 5d3 should be same as 113 6D... was there a 5d3 112? It seems canon has disabled this mode now. So now have to find a way to enable it to fix 5d3 (if really disabled) and 113 (6D)
Quote from: 1% on April 16, 2013, 11:15:12 PM
I think my little jaunt into 113 answered this riddle...
That's good. I was getting worried I was just stupid. I tried copying the files exactly as in your 6D folder upload, and all manner of other stuff, and it just wasn't working.
gui_stop_menu();
call("IVAParamMode", CARD_DRIVE "ML/H264.ini");
NotifyBox(2000, "%s", 0x4da10);
This is how 5d3 loads a config... so you have to rename to H264.ini... try it that way.
Quote from: 1% on April 17, 2013, 05:37:16 PM
gui_stop_menu();
call("IVAParamMode", CARD_DRIVE "ML/H264.ini");
NotifyBox(2000, "%s", 0x4da10);
This is how 5d3 loads a config... so you have to rename to H264.ini... try it that way.
I've tried that, also with lower case H, copied into different folders, copied onto both cards. I built the latest nightly also.
Any chance you can add some feedback confirmation to the code.
If it shows on the screen then its "loaded"... There is a memory location that should turn to 1 when in ivaparam mode.
0x4da10 is where the name gets stored in both the actual function and for ML.
I have to find/update all of these for 5d3. Or its disabled/broken. I am planning on porting the 6D br file to 5d3 but I have no way to test... I guess I can build you a bin once I properly check the firmware... Have to find all of the asserts to patch and rest of memory locations. But... I have the FW so its doable.
After selecting the option, I get 'ML/H264.ini' overlayed on screen. After about 1 second, all ML overlays disappear and immediately re-appear.
Does the same thing if I have no ini files on the card.
Needs some checking it looks like. Or they disabled it. I'll see what happens with 6D 113
Ok, appears to be working on 6D 113 so here is a 5d3 built off repo today with br6d instead of br5d3. I think I found all locations correctly but try in C-Mode first so you can reset easily if anything went wrong:
It loads configs like this: call("IVAParamMode", CARD_DRIVE "ML/cbr.ini");
So I think that is the card you have ML on... Try both A/B if nothing happens.
http://www.qfpost.com/file/d?g=RTSntPz1v (http://www.qfpost.com/file/d?g=RTSntPz1v)
BTW.. not sure if GOP is working as it didn't work on 6D with same location g3ggo found... I think he found where it selects B/P/I frame instead of "gop". I don't want to alter video parameters as I have no camera to test.
*fixed the cache hacks which I #ifdef'd but didn't update. I can't find the correct location for one of the player hacks but thats not so serious.
Maybe I'm stupid, and/or my understanding of how it all works is flawed. I can't seem to make bitrate changes via ini. It has to be loading and making a difference though as bitrate viewer shows differences in max bitrate and bitrate pumping where it's either flushing the frames to fast, or not fast enough. I'm really confused.
Changing 'config loaded' to disabled leads to [1] idle: stack overflow. Canon dialog and picture freeze, ML dialog artifacts. Battery has to be pulled.
Changing 'Autoload Conf' to override and adjusting InitQP is where the money is at. All-I and IPB can both be pushed to 180mb/s (holy fucking crap :) time for a lexar 1000x) on my sandisk 60MB/s cf.
Pushing bitrate to far in IPB mode leads to [7] task main: stack overflow, battery pull. Pushing to far in All-I leads to canon dialog buffer full, movie stop (no freeze).
Flush rate working good. Stops bitrate pumping :)
GOP does not appear to be working as reported by mediainfo. Using InitQP adjustments means files can no longer be opened in bitrate viewer. In the link below is InitQP 45, Flush 30, GOP 24.
https://dl.dropboxusercontent.com/u/34113196/Camera%20stuff/D46A6572.MOV
edit: Great time for an update 1%. I just realized the 5D3 got RAW histogram too :)
I made an oops: I set enco mode to wrong location... it was overwriting a pointer not mode :(
http://www.qfpost.com/file/d?g=WivCFe2se (http://www.qfpost.com/file/d?g=WivCFe2se)
Have some raw spot meter too :)
New StreamEye will analyze... if you recontainerize they will analyze too.
Also, you can set autoload to off and adjust the default profile 4.1 config. But configs should load with correct location.
Crash on config disable gone.
Can still make it crash on massive bitrates in IPB.
Changing Autoload Conf (override) to (off) still allows changing of InitQP. You have to exit Q menu and load config or else it stays in override even with the option set to off.
Both of these are giving level 4.1 with the same bitrate
Transform8x8Flag = 2
Profile = 100
Level = 41
BitRate = 120000000
EntropyCodingMode = 1
IntraPicInitQP = -1
InterPicInitQP = -1
QpOffsetForB = 0
MinQpI = 1
MinQpP = 1
MinQpB = 1
MaxQpI = 26
MaxQpP = 26
MaxQpB = 26
MinBitrate = 40000000
MaxBitrate = 120000000
SarWidth = 0
SarHeight = 0
AspectRatioIdc = 1
VideoFmtAndVspFlag = 81
VideoFullRangeFlag = 1
TimingInfoPresentFlag = 0
RateControlEnable = 1
Transform8x8Flag = 2
Profile = 100
Level = 51
BitRate = 550000000
EntropyCodingMode = 1
IntraPicInitQP = 5
InterPicInitQP = 5
QpOffsetForB = 0
MinQpI = 1
MinQpP = 1
MinQpB = 1
MaxQpI = 13
MaxQpP = 13
MaxQpB = 13
MinBitrate = 120000000
MaxBitrate = 550000000
SarWidth = 0
SarHeight = 0
AspectRatioIdc = 1
VideoFmtAndVspFlag = 81
VideoFullRangeFlag = 1
TimingInfoPresentFlag = 0
RateControlEnable = 0
Its weird that profile changing isn't taking. Try All_I with 4.1 or downgrading 4.1 to 4.0.
Did the CABAC setting take?
That is Fixed QP5 vs Rate control, Should be different. Unless canon neutered configs on 5d3 somehow.
And yes, menu has to be reloaded to re-read whether config is loaded or not.
Also is it showing the correct drive on the screen when it loads a config? Not sure what ML takes as CARD_DRIVE
It should work Like:
Autoload ON: Set initqp or BR and changes don't take effect, read from config.
Override: Loads Config + Overrides InitQP + Target Rate if set
Autoload OFF: pref from a cold boot- change INITQP and Target, should apply when you leave menu
It may show an initQP/BR set with autoload or when it hasn't updated yet. Then should write OFF over it.
IPB always level 4.1
All-I always level 5.1
No CABAC :(
Quote from: 1% on April 23, 2013, 01:58:16 AM
Also is it showing the correct drive on the screen when it loads a config? Not sure what ML takes as CARD_DRIVE
If I create a ML folder on the CF card to place the ini files. It complains about having ML on both cards and won't load.
edit: It doesn't show a drive. Just "ML/whatever.ini"
Its weird configs aren't working on 5d3, if it says config loaded in the menu the location must be getting set to 1.
You'd have to check logs and see if ivaparam mode messages are in them. The text on the screen is just a return so whether it loaded or not it will say what you tried to load.
If 5d3 can record QP1 to the CF card without jerking or defective frames then that is theoretically the best quality. The only other parameters that seem to matter are CABAC vs CAVLC and transform 8x8 flag. The profile is only loosely enforced and doubly so without any rate control mechanism active. All frames will be QP1... there is another thing we can do but I have to reverse it... set SPS/PPS directly. But its complicated since its 1 function and has to set P/I/B and "0" "1" frames. It should work if the QP/Target locations worked tho.
Also gop can be altered with video parameters but I don't know if the lenght on 5d3 is the same as 6D.
Quote from: 1% on April 23, 2013, 02:29:41 AM
You'd have to check logs and see if ivaparam mode messages are in them.
I'm not sure how to do this.
PROP_VIDEO_MODE is 0x80000039 .. you can look with property browser.. need the lenght to try changing gop.
http://www.qfpost.com/file/d?g=vv13nWgb7 (http://www.qfpost.com/file/d?g=vv13nWgb7)
Has debug mesage logging on don't click me.
Hit it once to start log and again to save it. Saves to root of the card like 1MB.
https://dl.dropboxusercontent.com/u/34113196/Camera%20stuff/DM.LOG
I searched the log for 'iva' and nothing was found.
I was in override mode. Switched that off, selected VBR mode and loaded config. Recorded small sample. Switched to CBR mode and loaded config and recorded small sample.
Thing with debug log is that canon dumps a ton of messages and its easy to overwrite stuff. Don't even record a movie, just start and hit load config manually like 10 times.
This is what it looks like:
encdrwrapSetIVAParamMode:B:/ML/rc.ini
If this isn't showing maybe have to call it by address on 5d3?
encdrwrapSetIVAParamMode:ML/cbr.ini
Missing the B:/ which I assume is the card drive.
https://dl.dropboxusercontent.com/u/34113196/Camera%20stuff/DM1.LOG
Quote from: 1% on April 23, 2013, 01:58:16 AM
It should work Like:
Autoload ON: Set initqp or BR and changes don't take effect, read from config.
Override: Loads Config + Overrides InitQP + Target Rate if set
Autoload OFF: pref from a cold boot- change INITQP and Target, should apply when you leave menu
It may show an initQP/BR set with autoload or when it hasn't updated yet. Then should write OFF over it.
Can't comment on the reading from config, but the only way to adjust Initqp is with Override. In any other mode, Bitrate and InitQP are greyed out and can't be adjusted.
Set config to disable or set autoload to off & reboot. You have to reload the menu to refresh it.
On 5D3, you need to say A:/ or B:/. The FIO calls have a wrapper that autodetects the drive, but here you need to write it explicitely.
Might be worth having a user option to select. Or detect which drive ML is installed on and run from there.
It already does that, but for regular file I/O calls, not for hacks.
http://www.qfpost.com/file/d?g=mF0qzViJY (http://www.qfpost.com/file/d?g=mF0qzViJY)
Ok, now loads configs from B:/. It was turning on IVA mode since you couldn't change QP/BR but drive was not being selected. Thanks!
Yep, that did it.
I'll do some testing today and report back.
edit: The ability to edit ini files in camera would be cool. Am I asking to much?
I made 1 recording using this ini.
Just realized as I was copy pasting that bitrate and maxbitrate weren't the same. Maybe 1 to many 0's in max bitrate ;-)
Transform8x8Flag = 2
Profile = 100
Level = 51
BitRate = 800000000
EntropyCodingMode = 1
IntraPicInitQP = -1
InterPicInitQP = -1
QpOffsetForB = 0
MinQpI = 1
MinQpP = 1
MinQpB = 1
MaxQpI = 26
MaxQpP = 26
MaxQpB = 26
MinBitrate = 100000000
MaxBitrate = 8000000000
SarWidth = 0
SarHeight = 0
AspectRatioIdc = 1
VideoFmtAndVspFlag = 81
VideoFullRangeFlag = 1
TimingInfoPresentFlag = 0
RateControlEnable = 1
That worked for the first recording, then adjusted shutter timing to get 23.976 shutter.
I got 2 crashlogs. This one and another the same except for task MovieRecorder
lv:1
ASSERT: 0
at ./MovieRecorder/EncDrvWrapper.c:1865, task MovieRecorder
lv:0 mode:3
Magic Lantern version : v2.3.NEXT.2013Apr23.5D3113
Mercurial changeset : badff1b15d04 (unified) tip
Built on 2013-04-23 15:51:36 by user@D610.
Free Memory : 253K + 3838K
And https://dl.dropboxusercontent.com/u/34113196/Camera%20stuff/LOG000.LOG
With bitrate from the above ini changed to 8000000000 to match maxbitrate, first time hit record camera, crash, battery pull. Put battery in and try again, err 70. Guess it doesn't like stupid bitrate.
When I muxed a file into mkv, mkvtoolnix reported,
Warning: 'O:\DCIM\100EOS5D\D46A6713.MOV': This file contains at least one frame with a negative timecode. All timecodes will be adjusted by 00:00:00.125 so that none is negative anymore.
Bitrate viewer still complained trying to open the file and I have no access to streameye :-(
Using vbr config and switching to override mode without loading the config again, crash.
https://dl.dropboxusercontent.com/u/34113196/Camera%20stuff/LOG001.LOG
Using vbr config, switch to override, load config and all works good. Restart camera still in override mode and crash on record, remove battery and try again err 70. Same crash logs as before, not sure if the log000 are the same.
https://dl.dropboxusercontent.com/u/34113196/Camera%20stuff/LOG002.LOG
Tried changing the GOP, mediainfo reports standard GOP, but I don't really trust it, and I can't think of any other way I have to check.
Here is a small file with GOP 3 to check.
https://dl.dropboxusercontent.com/u/34113196/Camera%20stuff/D46A6721.MOV
Using the below ini, push record, LV and ML overlays all keep working fine, you can't stop recording, nothing it written to card and ML says error writing, restart, and restarts.
Transform8x8Flag = 2
Profile = 100
Level = 51
BitRate = 500000000
EntropyCodingMode = 1
IntraPicInitQP = -1
InterPicInitQP = -1
QpOffsetForB = 2
MinQpI = 1
MinQpP = 1
MinQpB = 1
MaxQpI = 15
MaxQpP = 15
MaxQpB = 15
MinBitrate = 50000000
MaxBitrate = 200000000
SarWidth = 0
SarHeight = 0
AspectRatioIdc = 1
VideoFmtAndVspFlag = 81
VideoFullRangeFlag = 1
TimingInfoPresentFlag = 0
RateControlEnable = 1
At some stage in the future, I wonder if it's possible to put some sanity checks in.
QuoteAm I asking to much?
I'm a bit of a shitty coder but there may be a way to change the parameters on the fly. An in camera text editor would take care of it too. There is also probably a better way to handle all of this.
Give it a second to load up at startup, don't hit record right away. Go in and out of the menu and check that loaded says yes. I may have to patch a few more errors for 5D3 too, thought I got all the asserts. Once you have decent settings its usually good to go on startup at least from my experience with 6D.
Gop is probably going to have to be done from video parameters property. It didn't work on 6D till I did it that way.
Min/Max only apply to VBR mode. The other modes ignore it. We can add some sanity checks when we figure out what's good. I think max 500Mb/s in IPB and 300 in all I. Its just a target rate anyway, if it can't generate it at QP1 it can't go any higher.
If you override a dynamic config it won't flip QPs, just record fixed QP.
Any stutter or green frames, etc? I had that problem at QP1 with flush rate but it was generating 400Mb/s
Quote[LVKAO] Unfortunately Bad Face
This is amusing... maybe related to why the not writing error happens. I have to investigate it more rather than just resetting after 10s.
Quote from: 1% on April 24, 2013, 02:55:30 AM
Any stutter or green frames, etc? I had that problem at QP1 with flush rate but it was generating 400Mb/s
Haven't noticed any stuttering. Green frames only once with as you say QP1 and flush rate set to stop bitrate pumping. Was only the first second or 2 iirc.
Makes me wish I had cf :) Maybe those errors are write errors if 5d3 isn't experiencing them. I though the encoder wasn't keeping up but I think the encoder just can't write out fast enough.
That assert is:
FF1EA0F4 arString = %s , pString = %s
It looks like a file reading error.
I can patch it but it could be from how you edit the files. Some text editors screw things up. I used notepad++ on windows and pluma on linux. I had problems with notepad for some reason.
I found the frame skips. When the buffer doesn't flush fast enough. It must be related to CABAC (processor load) also.
I can push close to 200MB/s with CAVLC, but with CABAC I get to around 150MB/s and it shits itself. Tried playing with a heap of flush rate options but doesn't appear to be any difference, which is what makes me think it's processor related.
Just to clarify, if I push to hard in CAVLC it either stops recording or errors out. But I can adjust the flush rate to get that high without frame loss (skipping).
I can push CABAC high enough to stop or error also, but only around 150MB/s before it cracks the shits and starts throwing frames away.
Can I get some pointers how I can merge your changes with the source to build my own?
Swap bitrate 5d3.c for bitrate-6d in the makefile
https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/raw/7caa1b2946342c74ddd9abc0c2132776108045b2/src/bitrate-6d.c
Cheers, that did the trick.
Just in case anyone needs this: 5d3 w/ br and TCC. I dunno if LV rec should have been recompiled: I guess test it.
http://www.qfpost.com/file/d?g=4uFsXjjgm
What's TCC?
Its like picoC but faster. Lets you run the LV recorder.
te'
[E] failed to link modules
Unloading modules...
Then
tcc: error: undefined symbol 'Packmem_PopEDmacForMemorySuite'
[E] failed to link modules
I guess g3gg0 forgot to rename the stub in main. I fixed it on 6D first time I saw it... will have to make it again.
BTW magic.sym is a text file... I think you could probably rename it if you don't want to wait.
Cheers 1%, I'll take a look at getting it working myself.
G3ggo made a new recorder today. Have to fix it for 6D and then I can roll out new bins for both. I have 2 more stubs to find on 6D.
Guys where can I find your last h264 configs for MKIII before you moved over to RAW?
Also looking at a recent bitrate-6d.c
Can you refine/ fill in the missing '?' MKIII's video_modes;-
video_mode[0] = ?
video_mode[1] = mode/size ?
video_mode[2] =FPS
video_mode[3] = GOP settings
video_mode[4]= ?
video_mode[5] = Ref frames (M=Header) How many max ref frames? (eg 2 ?)
https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/downloads/H264inis.zip
/* 30I 30IPB 24I 24IPB 60I 60IPB 30IPB
0 - 0 0 0 0 0 0 0
1 - 0 0 0 0 1 1 2 Mode/Size
2 - 1e 1e 18 18 3C 3C 1e FPS
3 - 1 f 1 c 1 f f GOP
4 - 0 0 0 0 0 0 0
5 - 1 3 1 3 1 3 3 Ref Frames (M= in Header)
*/
0 and 4 are 0 so ????
Ta. :)
Da?
I guess best way would be to find what is linked to the missing values in FW.
1% Have you made a provision yet for entering matrix values for the 4x4s/and two 8x8s once switched on?
I had a problem with those.. the video would come out black. Only had success with forced 8x8 transforms but I don't know if that was better than letting it chose.
slowly going thru all the history of testing ML h264 on mkIII and reading up on all the threads. Looks like a better look of the FW is needed.
I am trying to get a grasp on the encoder/bitrate options for the 6D. Can someone help me a little. I read some on using CBR config select. What is the rate control config select? And on the autoload conf, I am lost on what to do. Left it on override, what does turning it on or off do? I ordered a VAF filter for my 6D so I want to know what I am doing with the encoder options before it gets here. I read what all I can find, but a lot the options for other camera models are not found (at least for me) on the current build. Sorry if these are relatively simple questions, any help much appreciated.
Its pretty easy:
Config select - Choses which h264 ini to load
Autoload - load chosen config at startup (for convenience)
Override - override the init QP and target rate on either selected config or the default eeko encoder if no config is loaded.
Quoteut a lot the options for other camera models are not found (at least for me) on the current buil
Yep, they don't exist.
I just load the rate control and go with that since really hardcore rates + flush rate can drop frames as the encoder is overloaded. For the first time we can write faster than the IC can encode.
Thanks you @1%, I had been wondering why those options were not available and felt like I did not understand the options there to choose from. I will try it again now.
@1%, what are some of your preferred settings? I am specifically wondering how to best utilize the configure select and what bit rate numbers are actually the most successful with the 6D. I am using it some to try and understand, but for lack of being able to find any information I am specifically curious as to what settings you are using. Looking at boards for other camera models usually has me more confused trying to understand the details of what I am doing. I had been doing this. config:cbr fixed qp, autoload:override and then messed with various bit rate numbers. I did not realize then I might have been doing it properly (or closer than I had thought) a couple weeks back.
Once I understand all this I want to make a how to video so maybe it will help the next new 6D ML user. Learning to film in raw was no problem, now I want to learn what else I can do successfully with ML. Thank you for any help.
I usually load the RC config as is in IPB mode 24fps.
For fixed QP I pick something like 10-15.
Thanks again 1%, that helped me some as well. Been messing with it for the last two days just testing settings. Trying to decide if I want to shoot this gig tomorrow in raw or cranked bitrate. These new sandisk extremes are getting me a little better write with raw, The new 80mb ones, Had no trouble with writing the encoder settings.
Well I ran all day for my gig using the encoder set on 15 bit rate, I stayed on the configure select: rate control and had it set on the IPB on the canon side. I had a couple small hiccups, but nothing major. One of my older sandisk extreme 40mb cards would not record at all on encoder (for some reason it was fine recording raw). But both of my newer 80mb sandisk cards did great on these settings. One of the 32g cards did the freeze once and no recording for a second. I shut it off and on and it was fine after. Overall it was nice and I am more than happy with the results. Thanks again for helping me get going on this.
I'm trying to get my 5D3 read the h264.ini file to increase bitrates on my mov files. (I do not want RAW. I need H264.)
Unfortunately there is little information on how this works. This thread seemed to be the only one that I found, but allthough I read through every single post and tried out different versions of h264.ini files, I could not get it to work. I put the file in ML/h264.ini and selected "Load h264.ini". I'm not sure if the file was actually loaded or if it is in the right place. I just don't know how to find out IF it was loaded...
I use the latest nightly build (19.09.2013)
Can anyone please tell me, what do I have to do to make the 5D3 record at a higher bitrate? Your help would be greatly appreciated! :)
Does anyone have an answer for me, please? :)
You can modify the 5DIII bitrate file... the paths were messed up when this came up for me or compile off my repo, its more advanced anyway. If you read from the beginning, 5DIII write > what the encoder can output for once.
Hey 1%!
Thanks for your answer!
I used the exact code of your first post and saved it in ML/h264.ini
I then recorded a 10s clip.
Next I loaded ML/H264.ini
Now I recorded a second 10s clip.
There were no differences in size or quality of the two files. Shouldn't the second file be bigger and have better quality?
I also tried changing the parameters, but none made a difference.
What am I doing wrong?
Your not doing anything wrong, just config loading on 5DIII is broken, it tells you the name but never loads the file.
I see :(
How can it be fixed? Can anyone fix it?
I guess hard set the path:
ie
call("IVAParamMode", "A:/ML/cbr.ini");
A:/ CF
B:/ SD
:o Unfortunately I don't understand..
I'm not a programmer (not a good one, at least).
Can I do anything without changing and compiling the source code?
Maybe dig up the old builds I made for 5DIII but I don't think they had raw.
Using old builds will not help me, because, as you said, they don't have raw - which I also need.
I'm trying to compile this thing myself now - because I need bitrate changes on my 5D3.
Unfortunately I ran into a problem with the compiler, which i have to set up first..
I installed everything on my win7 machine as described here: http://www.magiclantern.fm/forum/index.php?topic=2899.msg14021#msg14021
(I used gcc version 4.7.2 and also changed the according settings in the makefile.user)
The installation seemed to be successful.
Then i did a "make clean" and a "make 5D3".
This is what I got:
$ make 5D3
make -C ../platform/5D3.113
make[1]: Entering directory `/home/manniac/magic-lantern/platform/5D3.113'
[ VERSION ] ../../platform/5D3.113/version.bin
[ CPP ] magiclantern.lds
[ AS ] ../../platform/5D3.113/stubs.o
[ VERSION ] ../../platform/5D3.113/version.c
[ CC ] version.o
[ CC ] boot-hack.o
[ CC ] mem.o
../../src/mem.c: In function 'memcheck_remove':
../../src/mem.c:409:49: warning: assignment makes integer from pointer without a cast [enabled by default]
[ CC ] ico.o
[ CC ] edmac.o
[ CC ] menu.o
../../src/menu.c: In function 'menu_post_display':
../../src/menu.c:2394:24: warning: initialization makes pointer from integer without a cast [enabled by default]
[ CC ] debug.o
[ CC ] cfn.o
[ CC ] gui.o
[ CC ] picstyle.o
[ CC ] exmem.o
[ CC ] bmp.o
[ CC ] rbf_font.o
[ CC ] config.o
[ CC ] stdio.o
[ CC ] bitrate-5d3.o
[ CC ] lcdsensor.o
[ CC ] tweaks.o
[ CC ] lens.o
[ CC ] property.o
[ CC ] propvalues.o
[ CC ] gui-common.o
[ CC ] chdk-gui_draw.o
[ CC ] movtweaks.o
[ CC ] menuhelp.o
[ CC ] menuindex.o
[ CC ] focus.o
[ CC ] notify_box.o
[ CC ] dialog_test.o
[ CC ] vram.o
../../src/vram.c: In function 'vram_redirect_lv_buffer':
../../src/vram.c:581:35: warning: assignment makes integer from pointer without a cast [enabled by default]
[ CC ] aj_port.o
[ CC ] fps-engio.o
[ CC ] shoot.o
../../src/shoot.c:4608:6: warning: conflicting types for 'set_interval_index' [enabled by default]
../../src/shoot.c:464:9: note: previous implicit declaration of 'set_interval_index' was here
[ CC ] hdr.o
[ CC ] lv-img-engio.o
[ CC ] state-object.o
[ CC ] tasks.o
[ CC ] vsync-lite.o
[ CC ] tskmon.o
[ CC ] battery.o
[ CC ] imgconv.o
[ CC ] histogram.o
[ CC ] falsecolor.o
[ CC ] audio-ak.o
[ CC ] zebra.o
[ CC ] beep.o
[ CC ] crop-mode-hack.o
[ CC ] ph_info_disp.o
[ CC ] flexinfo.o
[ CC ] fileprefix.o
[ CC ] console.o
[ CC ] tcc-glue.o
make -C ../../tcc
make[2]: Entering directory `/home/manniac/magic-lantern/tcc'
make[2]: Für das Ziel »all« ist nichts zu tun.
make[2]: Leaving directory `/home/manniac/magic-lantern/tcc'
[ CC ] module.o
[ CC ] video_hacks.o
[ CC ] fio-5d3.o
[ CC ] misc.o
[ CC ] afma.o
[ CC ] raw.o
[ CC ] chdk-dng.o
[ CC ] edmac-memcpy.o
[ CC ] asm.o
[ AR ] strrchr.o
[ AR ] dietlibc.a
[ AR ] lib_a-setjmp.o
[ AR ] newlib-libc.a
[ LD ] magiclantern
c:/program files/cygwin64/home/manniac/arm-toolchain472/bin/../lib/gcc/arm-none-eabi/4.7.2\libgcc.a(unwind-arm.o): In function `unwind_phase2':
C:\msys\1.0\home\yagarto\gcc-build\arm-none-eabi\libgcc/../../../gcc-4.7.2/libgcc/unwind-arm-common.inc:289: undefined reference to `abort'
c:/program files/cygwin64/home/manniac/arm-toolchain472/bin/../lib/gcc/arm-none-eabi/4.7.2\libgcc.a(unwind-arm.o): In function `__gnu_Unwind_Resume':
C:\msys\1.0\home\yagarto\gcc-build\arm-none-eabi\libgcc/../../../gcc-4.7.2/libgcc/unwind-arm-common.inc:487: undefined reference to `abort'
C:\msys\1.0\home\yagarto\gcc-build\arm-none-eabi\libgcc/../../../gcc-4.7.2/libgcc/unwind-arm-common.inc:505: undefined reference to `abort'
c:/program files/cygwin64/home/manniac/arm-toolchain472/bin/../lib/gcc/arm-none-eabi/4.7.2\libgcc.a(pr-support.o): In function `_Unwind_GetDataRelBase':
C:\msys\1.0\home\yagarto\gcc-build\arm-none-eabi\libgcc/../../../gcc-4.7.2/libgcc/config/arm/pr-support.c:394: undefined reference to `abort'
c:/program files/cygwin64/home/manniac/arm-toolchain472/bin/../lib/gcc/arm-none-eabi/4.7.2\libgcc.a(pr-support.o): In function `_Unwind_GetTextRelBase':
C:\msys\1.0\home\yagarto\gcc-build\arm-none-eabi\libgcc/../../../gcc-4.7.2/libgcc/config/arm/pr-support.c:400: undefined reference to `abort'
collect2.exe: error: ld returned 1 exit status
../../src/Makefile.src:176: recipe for target `magiclantern' failed
make[1]: *** [magiclantern] Error 1
make[1]: Leaving directory `/home/manniac/magic-lantern/platform/5D3.113'
Makefile:33: recipe for target `5D3' failed
make: *** [5D3] Error 2
Everything looks good, but in the end the compiler fails and I have no idea why. :/
I think the problem is yagarto. I can compile using cygwin/msys.. I think thats the preffered route. Also if you have space/bandwidth there is a virtual machine image lurking around here with the toolchain set up.
The easy way:
Quick Guide and Solutions for VirtualBox
http://www.magiclantern.fm/forum/index.php?topic=7579.0
thanks, I will give virtualbox a try - but to be honest with you: I read the installation instructions before and they seemed even more complicated than cygwin :)) also: 1.3 GB? :-OOOO
Anyway, I'll try and let you know if it worked..
Virtualbox now works for me, and I got the bitrate thing running. Thanks!
the only strange thing is: all fonts in ML are terribly big now..
I still have one question: Is there a reason, why you don't change
call("IVAParamMode", CARD_DRIVE "ML/H264.ini");
to
call("IVAParamMode", "B:/ML/H264.ini");
in bitrate-5d3.c ?
wouldn't that be better anyway, so people can use it?
copy new fonts to ML/fonts
For me on SD cams its B:/
For 5d3 I guess can be A:/ or b:/, however you run ML.
In my port the 6D stuff runs on 5DIII minus the gop control (prop changing, I'm not comfortable adding without testing)
Hi.. I've just switched from 60D to 5D3 and I would like to record some videos in h264 with max bitrate. I've found 1% post with some ini files, also replaced CARDDRIVE with B: letter in bitrate-5d3.c file. I tested it with rc.ini file and bitrate is much better now (around 9-10MB/s). Maybe someone found the best stable settings for 5d3 with max bitrate and quality ? thanks in advance for your help.
I am also interested about this.Can you help us out?
If the config is really loaded you'll get better rates on IPB and similar rates on all-I. Remember the indicators are in megabits, if you're getting 9 megabits something loaded wrong.
Learning to compile is the way offcourse but does someone have a working file for the 5d3? I dont care if it is the newest version just one where i can modify and load the ini.
I've updated the 5D3 code to load the INI file (should be in next nightly, but you will have to add the ini file yourself). This should have been a pull request.
I didn't try it.
@Marekk, Did you see any difference between stock h264 and the high bitrate one?
Quote from: marekk on February 07, 2014, 12:21:14 PM
Hi.. I've just switched from 60D to 5D3 and I would like to record some videos in h264 with max bitrate. I've found 1% post with some ini files, also replaced CARDDRIVE with B: letter in bitrate-5d3.c file. I tested it with rc.ini file and bitrate is much better now (around 9-10MB/s). Maybe someone found the best stable settings for 5d3 with max bitrate and quality ? thanks in advance for your help.
Thnx A1ex!
Also FYI you may not be able to get some configurations without patches. If you set something like profile and get an error 70 then you know at least its loading the config.
Average on safe RC for me is 60-70Mb/s IPB... stock is 24Mb/s or less.
Is there an improvement with these settings?which file you recommend for the 5d?
I've used the RC mainly. Its fairly predictable and consistent. Remember I have no 5DIII, what I would to to test this is actually compile off my repo wth the 6D bitrate controls so you have all the patches.
You can configure it from garbled 1Mb/s mess up to where the video is 400Mb/s and has problems recording/playing back.
I got an error 70 when changing the maxbitrate and targeted bitrate to 180000000 the first time, but when rebooting and loading it again it didnt crash.
So it is working on the nightly 3-3-2014. Just had to create a h264.ini, copy the settings in it, and put it in ML folder.
So easy I could do it.
Quote from: 1% on March 02, 2014, 10:24:37 PM
Remember I have no 5DIII, what I would to to test this is actually compile off my repo wth the 6D bitrate controls so you have all the patches.
The last time I tried (probably a month or more ago), it wouldn't compile. I immediately put it on the back burner because the photo stuff with ADTG was more interesting.
I'll have a better look at it later today.
Compiled 5D3.123 with iso research. Using the rc.ini file from here (http://www.magiclantern.fm/forum/index.php?topic=4124.msg48436#msg48436), renamed to H264.ini
Loading the ini file worked fine :)
Pressing record caused a crash requiring battery pull.
ASSERT: 0
at ./MovieRecorder/EncDrvWrapper.c:1931, task MovieRecorder
lv:0 mode:3
Magic Lantern version : v2.3.NEXT.2014Mar03.5D3123
Mercurial changeset : d5486956e2bb (test) tip
Built on 2014-03-03 04:43:33 UTC by magiclantern@magiclantern-VirtualBox.
Free Memory : 149K + 3919K
https://dl.dropboxusercontent.com/u/34113196/LOG000.LOG
The same but i have managed to record some h264 footage with ini loaded. I had many crashes with battery out though.
EDIT: i have used rc.ini (and renamed to h264.ini) from 1% H264inis.zip.
Recorded 2 clips: according to mediainfo the stock one had 52mbit, with ini loaded 73mbit.
I will make some further tests.
Yea, those have to be all patched out. I only had it going on 5DIII 1.1.3.. they didn't want *too* much tweaking with the encoder. You can get by without patches following what I found in the first few posts when editing the config.
Compare the configs I had posted up in my repo... each one is a different mode, rc/vbr/cbr. I've been using those. The encoders between the two are the same.
And then test! seriously, so few people tried it out, there wasn't too much feedback.