Files

55 lines
1.6 KiB
Ruby

# generate a table of error correction codewords
RS_BLOCK_TABLE = [
[ 26, 1, 26, 19],
[ 44, 1, 44, 34],
[ 70, 1, 70, 55],
[ 100, 1, 100, 80],
[ 134, 1, 134, 108],
[ 172, 2, 86, 68],
[ 196, 2, 98, 78],
[ 242, 2, 121, 97],
[ 292, 2, 146, 116],
[ 346, 2, 86, 68, 2, 87, 69],
[ 404, 4, 101, 81],
[ 466, 2, 116, 92, 2, 117, 93],
[ 532, 4, 133, 107],
[ 581, 3, 145, 115, 1, 146, 116],
[ 655, 5, 109, 87, 1, 110, 88],
[ 733, 5, 122, 98, 1, 123, 99],
[ 815, 1, 135, 107, 5, 136, 108],
[ 901, 5, 150, 120, 1, 151, 121],
[ 991, 3, 141, 113, 4, 142, 114],
[1085, 3, 135, 107, 5, 136, 108],
[1156, 4, 144, 116, 4, 145, 117],
[1258, 2, 139, 111, 7, 140, 112],
[1364, 4, 151, 121, 5, 152, 122],
[1474, 6, 147, 117, 4, 148, 118],
[1588, 8, 132, 106, 4, 133, 107],
[1706, 10, 142, 114, 2, 143, 115],
[1828, 8, 152, 122, 4, 153, 123],
[1921, 3, 147, 117, 10, 148, 118],
[2051, 7, 146, 116, 7, 147, 117],
[2185, 5, 145, 115, 10, 146, 116],
[2323, 13, 145, 115, 3, 146, 116],
[2465, 17, 145, 115],
[2611, 17, 145, 115, 1, 146, 116],
[2761, 13, 145, 115, 6, 146, 116],
[2876, 12, 151, 121, 7, 152, 122],
[3034, 6, 151, 121, 14, 152, 122],
[3196, 17, 152, 122, 4, 153, 123],
[3362, 4, 152, 122, 18, 153, 123],
[3532, 20, 147, 117, 4, 148, 118],
[3706, 19, 148, 118, 6, 149, 119],
]
s = ""
RS_BLOCK_TABLE.each.with_index(1) do |a, v|
size_1 = 4 * v + 16
total_codes, n1, c1, k1, n2, c2, k2 = *a
s << (total_codes * 54 / 265 - (n2 ? n1 + n2 : n1) * (c1 - k1) + 43)
end
p s