Announcement

Collapse
No announcement yet.

MJPEG Encoder Research, no questions here

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #61
    Originally posted by lpowell View Post
    The GH1 firmware appears to contain 1024 hard-coded quantization matrices in ROM, selectable by the T1-T4 patch settings.
    Actually, no, it does not contain anything like this.

    From a technical perspective, 1024 different Q-tables would make absolutely no sense. The camera needs perhaps 8 different Q-tables for the different levels of still-frame quality and motion-frame quality. Could it have more tables for testing or future use? Sure, but nothing like 1016 more. From an engineering perspective that would be a ridiculous waste of firmware bytes.

    Also Vitaliy, who knows more than any of us about the firmware internals, posited in this thread that the quantization tables are all scaled from a (single) source table in the hardware.

    I think you are confused because the hack tool labels this value "Table", and it affects the final Q-table in some as-yet-unknown way. But it is NOT a Q-Table reference. According to Vitaliy, it is simply an index into a 1KB data table in the firmware.

    It is possible that this data table contains several variable-length lists of scaling factors, with a terminator or length byte to delimit each sequence. That's my best guess, unless/until Vitaliy can provide the actual values for inspection.

    But it is simply impossible that each byte in that table would represent a unique Q-table stored somewhere in hardware.

    You aren't conversant with machine code, so I'll explain: Each byte has a range of 256 values. So even if these bytes were pointers elsewhere in the firmware or hardware, they could only point to 256 different places. There is no way that they could point to 1024 different tables.

    The highest numbered table used by the GH1's MJPEG factory settings is Table 155, and I haven't tested any tables higher than that.
    OK. So you're saying that you did a binary search on the values between 0-155, and they consistently converged on your desired bitrate?

    Or did some fail, or give unexpected bitrates?

    The number of values that you tested is very small, that it would be best if you could just list them all along with results.

    J

    Comment


      #62
      Originally posted by jaydil View Post
      ...But it is simply impossible that each byte in that table would represent a unique Q-table stored somewhere in hardware.

      You aren't conversant with machine code, so I'll explain: Each byte has a range of 256 values. So even if these bytes were pointers elsewhere in the firmware or hardware, they could only point to 256 different places. There is no way that they could point to 1024 different tables.
      LOL, as it happens, I've specialized in assembly language DSP optimization of audio and video codecs for the last 15 years. As far as wasting firmware space is concerned, a JPEG quantization table has 64 entries, and 1024 of these tables would occupy just 64 kilobytes out of the 8.7 megabyte GH1 firmware file. But since I'm evidently too confused to understand how ridiculously impossible it would be to engineer such a thing, you may have to resort to figuring out the rest of it on your own.
      Last edited by Lpowell; 02-23-2011, 07:39 PM.
      GH2 100Mbps Flow Motion v2 Patch

      GH1 Reliable In-Camera Playback Patch
      GH1 Blackout-Powell Patch
      GH1 75Mbps GH1 Peak Reliability Patch
      GH1 100Mbps Max Latitude Patch

      Comment

      Working...
      X