Personal View site logo
Panasonic GH1 firmware research, testing
  • 277 Replies sorted by
  • @Futurity, i'd like to read reviews of it.

  • It is nice to hear that the attempt to revive GH1 is making a progress. I hope @humpman 's findings soon can be port to the old GF1 and G2. If I could only find a cheap GH1, then I will join the party soon.

  • I´m interested in @humpman 's findings too. Keep goin´, pal.

  • very interesting things.

    would it be possible to enable in the user section all the scalling tables for GH1 as we have in the GH2 ?

    how did you find the values for the tables?, are they from the original firmware or are they your own tables?

    can you develop a tutorial how to create the user settings? it seems you need to put the user ini file in same folder of ptool and then the ptool load it

    the "codec profile high" can be better maybe, how to force the camera to use it?

    the min qp in gh2 on my patches vary from 12 to 16. I think 16 can be a good number for the qp min on GH1 due to bitrate is lower than gh2.

    I think the max qp need to be 51 so the camera decides how much to increase it.

    how to create scalling tables for B frames? it would be useful for 24p, because the GH1 cannot increase datarate so much, so using IPB is good idea. Also, are these scalling tables in your user ini file for all recording modes?

    I did a look in the user ini file in notepad and the scalling tables design is different from gh2. ingh2 all numbers start with "0x" then there are the two hex numbers: 0x1111 in hex = 0x1717 in decimal on the gh2. the gh2 have 48 numbers separate with comma and space, 16 for Y, 16 for Cr, 16 for Cb. How is this design in GH1 numbers?, it seems there is only one 0x in beginning and then all numbers comes together...

    thanks.

  • @apefos wow, take it easy man ) Thanks for response, here is the answers:

    For now i added scaling tables for interlace mode, i-p and fallback tables, but there is exists Quantizer table and couple of another tables that i didn't add yet. Actually when i change them i didn't see the difference, so that the reason.

    That values are custom, i took them from GH2 settings, i tried yours also. But values for p-frame i did myself, i took number 2232 from original firmware values and just repeat it.

    Yes, you need to put the user.ini file and usual setiings file in same folder of ptool.

    There is 3 codec profiles. I posted them in beginning of this topic.
    * 01 - Baseline
    * 03 - Main
    * 04 - High (High is original)
    If you change it to Baseline or Main, scaling tables will turn off at all, it's not bad because there will be less compression stuff on the image, more close to raw data, but it needs more bitrate that GH1 have not. Visually you can see more blocky image that cause of scaling tables absence. Again, it needs more bitrate, lower qp, to be same visually quality as High profile.

    In GH1 qp can automatically vary from 0 to 51 without any problems.

    Original max qp is 51.

    There is no B-frames on gh1, as i said scaling tables that i presented are only for 1080 interlace mode.

    Structure of the scaling tables on GH1 is absolutely same, 48 values, 16 for each. For examlple in user.ini file valuse come as array:0x07060C0A0C0A120C..... when in GH2 settings file is 0x706 0xC0A 0xC0A 0x120C, so if you want to put number 1 in one of values, you need to write in user.ini 0001, 0x706 = 0706, 0xC0A = 0C0A, one value = 4 bytes. Example: array:0x070600010C0A....(0706 0001 0C0A). So be very careful here, table size is exact 192 bytes.

  • @humpman thanks for answers!

    if the default original is codec profile high, so it seems to be better to keep it as is...

    if the camera can vary qp from 0 to 51 so it seems to be good also. vary from 16 to 51 maybe can help to save datarate for other image areas because avoid camera to use from 0 to 16. the range 16to51 works pretty good on gh2.

    it would be interesting to enable the scalling I, P and fallback for 720p50, 720p60 and 1080p24 (I think the camera records native 24p when we check this option). If you enable them I can prepare some tables for you to try.

    Are you sure the GH1 camera does not have B frames when recording native 1080p24 ? Did you take a look on it using StreamParser software?

    Remember: I do not own the GH1 so all things I am doing is based on my previous GH2 knowledge.

    thanks again.

  • @apefos GH1 with original scaling tables works very well with qp from 0 to around 20, even on death chart qp is around 19. I also should check what qp is when scaling tables off, as i remember it's about 5 point higher. You know, turning to Baseline and disabling scaling tables is usefull, doing it you can check efficiency of your tables.

    Scaling tables for progressive mode are same for both 720p and 1080p. But i rejected native, it is not stable, point.

  • thanks for answer

    please, give a try on the sete and setf in last post of this link below to perceive if they can be stable, I used my gh2 knowledge to try to get stable progressive on gh1 with a 48Mbps datarate which is good enough for reasonable quality:

    http://personal-view.com/talks/discussion/13045/gh1-how-many-people-are-using-it-these-days-is-the-gh1-woth-the-effort-to-improve-the-hackpatch#Item_10

    thanks

  • @apefos my last post was not so constructive, don't hit me hard. Those settings that you post actually doesn't make sense, for first, as i said Native is not stable at all, lowering gop on gh1 is actually pointless also, because with those bitrates that we have on GH1 it decrease quality of i-frames, then due to low quality i-frames, p-frames also. So we need use encoder efficiency at maximum. Increase i-frames quality and decrease p-frames quality is the best way to go.

    And using only old patches without that new qp, scaling tables patches we can't improve quality on GH1.

    If someone want to test and develop new setings, take the setting that i added above as start point http://www.personal-view.com/talks/discussion/comment/196790#Comment_196790

  • @humpman is right.

    Actual GH1 improvements require more research of encoder code and developing new patches as he did, not changing few numbers.

  • @humpman Im glad you get back to GH1 which I stapes using becouse of crashes in trees. 25fps is essential for me however. Is there any settings above or other which may I test in 1080p25 mode? Stability is priority for me to be able live the cam itself :) Something like cake for GH2

  • @konjow settings that dated May 4 are pretty stable but it's interlace. Anyway i don't see problem on it, you can easily deinterlace it in post.

  • thanks I check them out soon. as long as its not 24 the 25 interlace should be fine.

  • @humpman your post dated May 4 show very impressive detail from your settings. I wish QP and I-P scaling can also be ported to the other old Lumix e.g. GF1 or G2.

  • @yskunto i will post new settings soon, there i modified i-sclaing tables. I understood a little on scaling tables. As you know main problem for GH1 is dark scenes and shadows. In new settings i modified tables in such way that in darks scenes encoder will do less compression but in detailed scenes more compression. I drunk now, will post setings soon. By the way those settings may be unstable in some scenes, because i-frames size is about 1 Mb . So need testers on it. Tomorrow i need to slaughter a sheep, so no time there.

  • Here is. One new patch that helps on stability. Added new settings. In this settings i tried to get very high quality in low light.

    image

    seta.ini
    846B
    user.ini
    2K
    ptool5.jpg
    396 x 641 - 71K
  • Crazy settings.

    seta.ini
    846B
    user.ini
    2K
  • I did a careful read in all the topic since page 1 first post and compared to my previous GH2 knowledge:

    it seems that codec profile is better to keep original so we can use scalling tables.

    in GH2 I got good results using QP min = 16 and QP max = 51 (I perceived that lowering QP min to less than 16 is pointless if you do not have enough datarate as GH1 is and keep the QP min = 16 maybe can save camera processor power and allow smaller QP for other image areas because camera will not low it so much anymore).

    about scalling tables I have some ideas based on my previous GH2 development, also considering the lower datarate on GH1, but I do not have GH1 to do tests so better not suggest values now, but if you ask me I would try these because they are the best for GH2 even in lower datarate, in good or low light, in low or high iso, for both 1080 and 720:

    Scalling I=0x606, 0x909, 0x909, 0xC0C, 0xF0F, 0xC0C, 0x1212, 0x1515, 0x1515, 0x1212, 0x1818, 0x1B1B, 0x1818, 0x1E1E, 0x1E1E, 0x2424, 0x606, 0x909, 0x909, 0xC0C, 0xF0F, 0xC0C, 0x1212, 0x1515, 0x1515, 0x1212, 0x7272, 0x7878, 0x7272, 0x7E7E, 0x7E7E, 0x9C9C, 0x606, 0x909, 0x909, 0xC0C, 0xF0F, 0xC0C, 0x1212, 0x1515, 0x1515, 0x1212, 0x7272, 0x7878, 0x7272, 0x7E7E, 0x7E7E, 0x9C9C

    Scalling P=0x606, 0x909, 0x909, 0xC0C, 0xF0F, 0xC0C, 0x1212, 0x1515, 0x1515, 0x1212, 0x1818, 0x1B1B, 0x1818, 0x1E1E, 0x1E1E, 0x2424, 0x606, 0x909, 0x909, 0xC0C, 0xF0F, 0xC0C, 0x1212, 0x1515, 0x1515, 0x1212, 0x7272, 0x7878, 0x7272, 0x7E7E, 0x7E7E, 0x9C9C, 0x606, 0x909, 0x909, 0xC0C, 0xF0F, 0xC0C, 0x1212, 0x1515, 0x1515, 0x1212, 0x7272, 0x7878, 0x7272, 0x7E7E, 0x7E7E, 0x9C9C

    Scaling Fallback=0x909, 0xC0C, 0xC0C, 0xF0F, 0x1212, 0xF0F, 0x1212, 0x1818, 0x1818, 0x1212, 0x1B1B, 0x2121, 0x1B1B, 0x2424, 0x2424, 0x3636, 0xC0C, 0xF0F, 0xF0F, 0x1212, 0x1515, 0x1212, 0x1515, 0x1818, 0x1818, 0x1515, 0xB4B4, 0xC6C6, 0xB4B4, 0xD8D8, 0xD8D8, 0xFCFC, 0xC0C, 0xF0F, 0xF0F, 0x1212, 0x1515, 0x1212, 0x1515, 0x1818, 0x1818, 0x1515, 0xB4B4, 0xC6C6, 0xB4B4, 0xD8D8, 0xD8D8, 0xFCFC

    these scalling above also have the benefits of same inter frame and intra frame values which is better for low camera processor usage, same I and P tables which gave excelent results in my tests with values in perfect point between lower and higher quantization in the matrix avoiding artifacts and improving quality. In my tests I found that using higher matrix quantization in P frames does not help quality and increase artifacts. These conclusions are for GH2 but maybe can be useful for GH1.

    about "limit setting", if it is the same behavior as GH2 it will mean each frame maximum size, this value must be a little higher than the maximum frame size that you see in streamparser, it seems that this value tells to the camera what kind of maximum frame size to handle. If this value is lower than the maximum frame size the camera will freeze. See the maximum i-frame size in streamparser and set this value to 20% more, this works ok on GH2. Use values which can be divided by 8. You need to know if it is using bit or byte values to do the type correctly.

    I believe that if we can get perfect settings combination using all patches maybe we can stabilize the Native 24p, try it!

    try to use the patches I developed in last post of my GH1 topic as a base for your user settings, they can be useful to pursue stability, after stability you can try raise datarate, this is what I did with GH2. I recommend the latest setA that I did as a base for your user settings. Try the others also from last post in my GH1 topic.

    about the "constant for 720p = 3456000" and "constant for 1080p = 777600" it seems that it means the frame buffer size, (or maybe the maximum frame limit). uncompressed 4:2:0 720p frame is 1382400 and uncompressed 4:2:0 1080p frame is 3110400. Doing the maths you will perceive that the camera allows a 4:1 compression ratio for the frames size. I believe that the original values are enough to raise datarate to 42Mbps or 32Mbps but you can try to raise these values to 3:1 compression ratio: "constant for 720p = 460800", "constant for 1080p = 1036800" (Or value less than 999999 for the 1080p)

    Problem now is: I do not own the GH1 !!!

    Good Luck !!!

  • edit post: please do not use patches below, they are using interlaced "user" ini file for progressive patches, please see next posts where the patches are correct. if you want to try these patches you need to open them in PTool and uncheck the native 24p option. better to use patches in next posts.

    apefos_ini_user_01.tar.gz
    1K
    apefos_ini_user_01.zip
    4K
  • @apefos you forgot that i did user settings only for interlace mode, so if you check the Native 24p, that settings won't work. You can't stabilize native 24p with actual patches. GH2 has different encoder, so it's another story. I just can't understand what a problem on using interlace. Progressive and interlace on GH1 actually have same quality on this area.

  • @humpman I understand about your experience with native24p/wrapped60i, but maybe it can be done... why not to try?... But if you prefer you can open the ini files and edit them erasing this option, or use the PTool to load/change/save the ini files as you prefer... the ini files I did can work ok with or without the native 24p option.

    I cannot do anything else at this moment, I did what I could to help you and the community, I do not have the GH1 in my hands...

    Keep up the great work!

  • @apefos i understand your desire to help. Anyway, i think we forgot one most important thing, we just need to shoot something :=)

  • @humpman yep!

    I have just one question: as you can see I used your "user" settings to apply my matrices to the patches. I would like to know if these matrices will be used by the Native 24p 1080 when the wrapper option is checked in PTool, or if these matrices just will be used in interlaced mode. Thanks.

    Native 24p GH1 Vimeo videos:

  • @apefos ok, i added seperate user.ini for progressive mode in case if somone wish to develop and test new settings. Remember that it affects on both 1080p and 720p modes.

    user.ini
    2K
  • @humpman thanks for the user ini for progressive. I will redo my patches with two versions: for interlaced and for progressive.

    two questions:

    are the matrices (array) on this progressive user file the original matrices from panasonic gh1 firmware? if yes so I can do some study on it and develop special matrices for GH1.

    I perceived the only difference from interlaced user ini and progressive user ini are the offset values. what are the offset values? are they what make the user ini to work for interlace or progressive?

    thanks