libbpg-0.9.6

This commit is contained in:
King_DuckZ 2015-10-27 11:46:00 +01:00
parent 3035b41edf
commit 35a8402710
248 changed files with 232891 additions and 100 deletions

View file

@ -0,0 +1,561 @@
--- 16x16, Mode= 2 [F]---
[ 0]: Fact= 0: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 1]: Fact= 0: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 2]: Fact= 0: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[ 3]: Fact= 0: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[ 4]: Fact= 0: -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
[ 5]: Fact= 0: -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22, *
[ 6]: Fact= 0: -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23, *
[ 7]: Fact= 0: -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24, *
[ 8]: Fact= 0: -10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25, *
[ 9]: Fact= 0: -11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26, *
[10]: Fact= 0: -12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27, *
[11]: Fact= 0: -13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28, *
[12]: Fact= 0: -14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29, *
[13]: Fact= 0: -15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30, *
[14]: Fact= 0: -16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31, *
[15]: Fact= 0: -17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, *
--- 16x16, Mode= 3 [F]---
[ 0]: Fact=26: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 1]: Fact=20: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 2]: Fact=14: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[ 3]: Fact= 8: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[ 4]: Fact= 2: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
[ 5]: Fact=28: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
[ 6]: Fact=22: -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22, *
[ 7]: Fact=16: -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23, *
[ 8]: Fact=10: -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24, *
[ 9]: Fact= 4: -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25, *
[10]: Fact=30: -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25, *
[11]: Fact=24: -10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26, *
[12]: Fact=18: -11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27, *
[13]: Fact=12: -12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28, *
[14]: Fact= 6: -13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29, *
[15]: Fact= 0: -14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29, *
--- 16x16, Mode= 4 [F]---
[ 0]: Fact=21: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 1]: Fact=10: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 2]: Fact=31: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 3]: Fact=20: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[ 4]: Fact= 9: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[ 5]: Fact=30: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[ 6]: Fact=19: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
[ 7]: Fact= 8: -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22, *
[ 8]: Fact=29: -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22, *
[ 9]: Fact=18: -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23, *
[10]: Fact= 7: -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24, *
[11]: Fact=28: -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24, *
[12]: Fact=17: -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25, *
[13]: Fact= 6: -10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26, *
[14]: Fact=27: -10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26, *
[15]: Fact=16: -11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27, *
--- 16x16, Mode= 5 [F]---
[ 0]: Fact=17: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 1]: Fact= 2: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 2]: Fact=19: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 3]: Fact= 4: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[ 4]: Fact=21: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[ 5]: Fact= 6: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[ 6]: Fact=23: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[ 7]: Fact= 8: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
[ 8]: Fact=25: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
[ 9]: Fact=10: -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22, *
[10]: Fact=27: -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22, *
[11]: Fact=12: -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23, *
[12]: Fact=29: -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23, *
[13]: Fact=14: -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24, *
[14]: Fact=31: -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24, *
[15]: Fact=16: -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25, *
--- 16x16, Mode= 6 [F]---
[ 0]: Fact=13: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 1]: Fact=26: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 2]: Fact= 7: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 3]: Fact=20: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 4]: Fact= 1: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[ 5]: Fact=14: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[ 6]: Fact=27: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[ 7]: Fact= 8: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[ 8]: Fact=21: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[ 9]: Fact= 2: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
[10]: Fact=15: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
[11]: Fact=28: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
[12]: Fact= 9: -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22, *
[13]: Fact=22: -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22, *
[14]: Fact= 3: -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23, *
[15]: Fact=16: -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23, *
--- 16x16, Mode= 7 [F]---
[ 0]: Fact= 9: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 1]: Fact=18: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 2]: Fact=27: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 3]: Fact= 4: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 4]: Fact=13: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 5]: Fact=22: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 6]: Fact=31: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 7]: Fact= 8: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[ 8]: Fact=17: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[ 9]: Fact=26: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[10]: Fact= 3: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[11]: Fact=12: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[12]: Fact=21: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[13]: Fact=30: -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20, *
[14]: Fact= 7: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
[15]: Fact=16: -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21, *
--- 16x16, Mode= 8 [F]---
[ 0]: Fact= 5: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 1]: Fact=10: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 2]: Fact=15: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 3]: Fact=20: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 4]: Fact=25: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 5]: Fact=30: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 6]: Fact= 3: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 7]: Fact= 8: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 8]: Fact=13: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[ 9]: Fact=18: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[10]: Fact=23: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[11]: Fact=28: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18, *
[12]: Fact= 1: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[13]: Fact= 6: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[14]: Fact=11: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
[15]: Fact=16: -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19, *
--- 16x16, Mode= 9 [ ]---
[ 0]: Fact= 2: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 1]: Fact= 4: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 2]: Fact= 6: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 3]: Fact= 8: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 4]: Fact=10: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 5]: Fact=12: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 6]: Fact=14: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 7]: Fact=16: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 8]: Fact=18: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[ 9]: Fact=20: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[10]: Fact=22: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[11]: Fact=24: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[12]: Fact=26: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[13]: Fact=28: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[14]: Fact=30: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
[15]: Fact= 0: -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16,-17, *
--- 16x16, Mode=10 [ ]---
[ 0]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 1]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 2]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 3]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 4]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 5]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 6]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 7]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 8]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 9]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[10]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[11]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[12]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[13]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[14]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[15]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
--- 16x16, Mode=11 [ ]---
[ 0]: Fact=30: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 1]: Fact=28: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 2]: Fact=26: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 3]: Fact=24: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 4]: Fact=22: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 5]: Fact=20: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 6]: Fact=18: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 7]: Fact=16: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 8]: Fact=14: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 9]: Fact=12: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[10]: Fact=10: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[11]: Fact= 8: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[12]: Fact= 6: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[13]: Fact= 4: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[14]: Fact= 2: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[15]: Fact= 0: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
--- 16x16, Mode=12 [F]---
[ 0]: Fact=27: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 1]: Fact=22: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 2]: Fact=17: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 3]: Fact=12: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 4]: Fact= 7: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 5]: Fact= 2: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 6]: Fact=29: 6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 7]: Fact=24: 6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 8]: Fact=19: 6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 9]: Fact=14: 6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[10]: Fact= 9: 6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[11]: Fact= 4: 6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[12]: Fact=31: 13, 6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[13]: Fact=26: 13, 6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[14]: Fact=21: 13, 6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[15]: Fact=16: 13, 6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
--- 16x16, Mode=13 [F]---
[ 0]: Fact=23: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 1]: Fact=14: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 2]: Fact= 5: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 3]: Fact=28: 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 4]: Fact=19: 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 5]: Fact=10: 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 6]: Fact= 1: 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 7]: Fact=24: 7, 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[ 8]: Fact=15: 7, 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[ 9]: Fact= 6: 7, 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[10]: Fact=29: 11, 7, 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[11]: Fact=20: 11, 7, 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[12]: Fact=11: 11, 7, 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[13]: Fact= 2: 11, 7, 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[14]: Fact=25: 14, 11, 7, 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[15]: Fact=16: 14, 11, 7, 4, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12, *
--- 16x16, Mode=14 [F]---
[ 0]: Fact=19: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 1]: Fact= 6: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 2]: Fact=25: 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 3]: Fact=12: 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 4]: Fact=31: 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[ 5]: Fact=18: 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[ 6]: Fact= 5: 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[ 7]: Fact=24: 7, 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[ 8]: Fact=11: 7, 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[ 9]: Fact=30: 10, 7, 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[10]: Fact=17: 10, 7, 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[11]: Fact= 4: 10, 7, 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[12]: Fact=23: 12, 10, 7, 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[13]: Fact=10: 12, 10, 7, 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[14]: Fact=29: 15, 12, 10, 7, 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[15]: Fact=16: 15, 12, 10, 7, 5, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10, *
--- 16x16, Mode=15 [F]---
[ 0]: Fact=15: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 1]: Fact=30: 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 2]: Fact=13: 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 3]: Fact=28: 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[ 4]: Fact=11: 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[ 5]: Fact=26: 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[ 6]: Fact= 9: 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[ 7]: Fact=24: 8, 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[ 8]: Fact= 7: 8, 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[ 9]: Fact=22: 9, 8, 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[10]: Fact= 5: 9, 8, 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[11]: Fact=20: 11, 9, 8, 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[12]: Fact= 3: 11, 9, 8, 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[13]: Fact=18: 13, 11, 9, 8, 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[14]: Fact= 1: 13, 11, 9, 8, 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[15]: Fact=16: 15, 13, 11, 9, 8, 6, 4, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, *
--- 16x16, Mode=16 [F]---
[ 0]: Fact=11: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 1]: Fact=22: 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 2]: Fact= 1: 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 3]: Fact=12: 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[ 4]: Fact=23: 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[ 5]: Fact= 2: 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[ 6]: Fact=13: 6, 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[ 7]: Fact=24: 8, 6, 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[ 8]: Fact= 3: 8, 6, 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[ 9]: Fact=14: 9, 8, 6, 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[10]: Fact=25: 11, 9, 8, 6, 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[11]: Fact= 4: 11, 9, 8, 6, 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[12]: Fact=15: 12, 11, 9, 8, 6, 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[13]: Fact=26: 14, 12, 11, 9, 8, 6, 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, *
[14]: Fact= 5: 14, 12, 11, 9, 8, 6, 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, -7, *
[15]: Fact=16: 15, 14, 12, 11, 9, 8, 6, 5, 3, 2, 0, -1, -2, -3, -4, -5, -6, *
--- 16x16, Mode=17 [F]---
[ 0]: Fact= 6: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15,-16, *
[ 1]: Fact=12: 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14,-15, *
[ 2]: Fact=18: 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[ 3]: Fact=24: 4, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[ 4]: Fact=30: 5, 4, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[ 5]: Fact= 4: 5, 4, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[ 6]: Fact=10: 6, 5, 4, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[ 7]: Fact=16: 7, 6, 5, 4, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 8]: Fact=22: 9, 7, 6, 5, 4, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 9]: Fact=28: 10, 9, 7, 6, 5, 4, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[10]: Fact= 2: 10, 9, 7, 6, 5, 4, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[11]: Fact= 8: 11, 10, 9, 7, 6, 5, 4, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, *
[12]: Fact=14: 12, 11, 10, 9, 7, 6, 5, 4, 2, 1, 0, -1, -2, -3, -4, -5, -6, *
[13]: Fact=20: 14, 12, 11, 10, 9, 7, 6, 5, 4, 2, 1, 0, -1, -2, -3, -4, -5, *
[14]: Fact=26: 15, 14, 12, 11, 10, 9, 7, 6, 5, 4, 2, 1, 0, -1, -2, -3, -4, *
[15]: Fact= 0: 15, 14, 12, 11, 10, 9, 7, 6, 5, 4, 2, 1, 0, -1, -2, -3, *
--- 16x16, Mode=18 [F]---
[ 0]: Fact= 0: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 1]: Fact= 0: -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 2]: Fact= 0: -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 3]: Fact= 0: -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 4]: Fact= 0: -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 5]: Fact= 0: -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 6]: Fact= 0: -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 7]: Fact= 0: -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 8]: Fact= 0: -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 9]: Fact= 0: -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, *
[10]: Fact= 0: -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, *
[11]: Fact= 0: -11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, *
[12]: Fact= 0: -12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, *
[13]: Fact= 0: -13,-12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, *
[14]: Fact= 0: -14,-13,-12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, *
[15]: Fact= 0: -15,-14,-13,-12,-11,-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, *
--- 16x16, Mode=19 [F]---
[ 0]: Fact= 6: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 1]: Fact=12: -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 2]: Fact=18: -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 3]: Fact=24: -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 4]: Fact=30: -5, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 5]: Fact= 4: -5, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 6]: Fact=10: -6, -5, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 7]: Fact=16: -7, -6, -5, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 8]: Fact=22: -9, -7, -6, -5, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 9]: Fact=28: -10, -9, -7, -6, -5, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[10]: Fact= 2: -10, -9, -7, -6, -5, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[11]: Fact= 8: -11,-10, -9, -7, -6, -5, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, *
[12]: Fact=14: -12,-11,-10, -9, -7, -6, -5, -4, -2, -1, 0, 1, 2, 3, 4, 5, 6, *
[13]: Fact=20: -14,-12,-11,-10, -9, -7, -6, -5, -4, -2, -1, 0, 1, 2, 3, 4, 5, *
[14]: Fact=26: -15,-14,-12,-11,-10, -9, -7, -6, -5, -4, -2, -1, 0, 1, 2, 3, 4, *
[15]: Fact= 0: -15,-14,-12,-11,-10, -9, -7, -6, -5, -4, -2, -1, 0, 1, 2, 3, *
--- 16x16, Mode=20 [F]---
[ 0]: Fact=11: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 1]: Fact=22: -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 2]: Fact= 1: -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 3]: Fact=12: -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 4]: Fact=23: -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 5]: Fact= 2: -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 6]: Fact=13: -6, -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 7]: Fact=24: -8, -6, -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 8]: Fact= 3: -8, -6, -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 9]: Fact=14: -9, -8, -6, -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[10]: Fact=25: -11, -9, -8, -6, -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[11]: Fact= 4: -11, -9, -8, -6, -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[12]: Fact=15: -12,-11, -9, -8, -6, -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[13]: Fact=26: -14,-12,-11, -9, -8, -6, -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, *
[14]: Fact= 5: -14,-12,-11, -9, -8, -6, -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, 7, *
[15]: Fact=16: -15,-14,-12,-11, -9, -8, -6, -5, -3, -2, 0, 1, 2, 3, 4, 5, 6, *
--- 16x16, Mode=21 [F]---
[ 0]: Fact=15: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 1]: Fact=30: -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 2]: Fact=13: -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 3]: Fact=28: -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 4]: Fact=11: -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 5]: Fact=26: -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 6]: Fact= 9: -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 7]: Fact=24: -8, -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 8]: Fact= 7: -8, -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 9]: Fact=22: -9, -8, -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[10]: Fact= 5: -9, -8, -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[11]: Fact=20: -11, -9, -8, -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[12]: Fact= 3: -11, -9, -8, -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[13]: Fact=18: -13,-11, -9, -8, -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[14]: Fact= 1: -13,-11, -9, -8, -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[15]: Fact=16: -15,-13,-11, -9, -8, -6, -4, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, *
--- 16x16, Mode=22 [F]---
[ 0]: Fact=19: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 1]: Fact= 6: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 2]: Fact=25: -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 3]: Fact=12: -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 4]: Fact=31: -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 5]: Fact=18: -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 6]: Fact= 5: -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 7]: Fact=24: -7, -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 8]: Fact=11: -7, -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 9]: Fact=30: -10, -7, -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[10]: Fact=17: -10, -7, -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[11]: Fact= 4: -10, -7, -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[12]: Fact=23: -12,-10, -7, -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[13]: Fact=10: -12,-10, -7, -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[14]: Fact=29: -15,-12,-10, -7, -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[15]: Fact=16: -15,-12,-10, -7, -5, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *
--- 16x16, Mode=23 [F]---
[ 0]: Fact=23: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 1]: Fact=14: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 2]: Fact= 5: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 3]: Fact=28: -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 4]: Fact=19: -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 5]: Fact=10: -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 6]: Fact= 1: -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 7]: Fact=24: -7, -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 8]: Fact=15: -7, -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 9]: Fact= 6: -7, -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[10]: Fact=29: -11, -7, -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[11]: Fact=20: -11, -7, -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[12]: Fact=11: -11, -7, -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[13]: Fact= 2: -11, -7, -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[14]: Fact=25: -14,-11, -7, -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[15]: Fact=16: -14,-11, -7, -4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *
--- 16x16, Mode=24 [F]---
[ 0]: Fact=27: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 1]: Fact=22: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 2]: Fact=17: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 3]: Fact=12: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 4]: Fact= 7: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 5]: Fact= 2: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 6]: Fact=29: -6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 7]: Fact=24: -6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 8]: Fact=19: -6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[ 9]: Fact=14: -6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[10]: Fact= 9: -6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[11]: Fact= 4: -6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
[12]: Fact=31: -13, -6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[13]: Fact=26: -13, -6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[14]: Fact=21: -13, -6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[15]: Fact=16: -13, -6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, *
--- 16x16, Mode=25 [ ]---
[ 0]: Fact=30: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 1]: Fact=28: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 2]: Fact=26: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 3]: Fact=24: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 4]: Fact=22: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 5]: Fact=20: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 6]: Fact=18: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 7]: Fact=16: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 8]: Fact=14: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 9]: Fact=12: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[10]: Fact=10: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[11]: Fact= 8: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[12]: Fact= 6: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[13]: Fact= 4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[14]: Fact= 2: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[15]: Fact= 0: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, *
--- 16x16, Mode=26 [ ]---
[ 0]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 1]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 2]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 3]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 4]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 5]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 6]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 7]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 8]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[ 9]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[10]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[11]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[12]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[13]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[14]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
[15]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *
--- 16x16, Mode=27 [ ]---
[ 0]: Fact= 2: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 1]: Fact= 4: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 2]: Fact= 6: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 3]: Fact= 8: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 4]: Fact=10: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 5]: Fact=12: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 6]: Fact=14: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 7]: Fact=16: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 8]: Fact=18: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 9]: Fact=20: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[10]: Fact=22: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[11]: Fact=24: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[12]: Fact=26: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[13]: Fact=28: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[14]: Fact=30: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[15]: Fact= 0: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
--- 16x16, Mode=28 [F]---
[ 0]: Fact= 5: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 1]: Fact=10: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 2]: Fact=15: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 3]: Fact=20: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 4]: Fact=25: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 5]: Fact=30: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 6]: Fact= 3: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 7]: Fact= 8: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 8]: Fact=13: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 9]: Fact=18: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[10]: Fact=23: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[11]: Fact=28: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[12]: Fact= 1: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[13]: Fact= 6: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[14]: Fact=11: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[15]: Fact=16: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
--- 16x16, Mode=29 [F]---
[ 0]: Fact= 9: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 1]: Fact=18: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 2]: Fact=27: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 3]: Fact= 4: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 4]: Fact=13: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 5]: Fact=22: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 6]: Fact=31: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 7]: Fact= 8: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[ 8]: Fact=17: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[ 9]: Fact=26: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[10]: Fact= 3: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[11]: Fact=12: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[12]: Fact=21: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[13]: Fact=30: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[14]: Fact= 7: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
[15]: Fact=16: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
--- 16x16, Mode=30 [F]---
[ 0]: Fact=13: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 1]: Fact=26: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 2]: Fact= 7: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 3]: Fact=20: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 4]: Fact= 1: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[ 5]: Fact=14: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[ 6]: Fact=27: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[ 7]: Fact= 8: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[ 8]: Fact=21: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[ 9]: Fact= 2: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
[10]: Fact=15: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
[11]: Fact=28: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
[12]: Fact= 9: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, *
[13]: Fact=22: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, *
[14]: Fact= 3: 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, *
[15]: Fact=16: 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, *
--- 16x16, Mode=31 [F]---
[ 0]: Fact=17: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 1]: Fact= 2: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 2]: Fact=19: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 3]: Fact= 4: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[ 4]: Fact=21: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[ 5]: Fact= 6: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[ 6]: Fact=23: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[ 7]: Fact= 8: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
[ 8]: Fact=25: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
[ 9]: Fact=10: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, *
[10]: Fact=27: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, *
[11]: Fact=12: 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, *
[12]: Fact=29: 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, *
[13]: Fact=14: 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, *
[14]: Fact=31: 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, *
[15]: Fact=16: 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, *
--- 16x16, Mode=32 [F]---
[ 0]: Fact=21: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 1]: Fact=10: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 2]: Fact=31: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 3]: Fact=20: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[ 4]: Fact= 9: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[ 5]: Fact=30: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[ 6]: Fact=19: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
[ 7]: Fact= 8: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, *
[ 8]: Fact=29: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, *
[ 9]: Fact=18: 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, *
[10]: Fact= 7: 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, *
[11]: Fact=28: 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, *
[12]: Fact=17: 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, *
[13]: Fact= 6: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, *
[14]: Fact=27: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, *
[15]: Fact=16: 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, *
--- 16x16, Mode=33 [F]---
[ 0]: Fact=26: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 1]: Fact=20: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 2]: Fact=14: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[ 3]: Fact= 8: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[ 4]: Fact= 2: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
[ 5]: Fact=28: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
[ 6]: Fact=22: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, *
[ 7]: Fact=16: 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, *
[ 8]: Fact=10: 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, *
[ 9]: Fact= 4: 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, *
[10]: Fact=30: 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, *
[11]: Fact=24: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, *
[12]: Fact=18: 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, *
[13]: Fact=12: 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, *
[14]: Fact= 6: 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, *
[15]: Fact= 0: 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, *
--- 16x16, Mode=34 [F]---
[ 0]: Fact= 0: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, *
[ 1]: Fact= 0: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *
[ 2]: Fact= 0: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, *
[ 3]: Fact= 0: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, *
[ 4]: Fact= 0: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, *
[ 5]: Fact= 0: 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, *
[ 6]: Fact= 0: 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, *
[ 7]: Fact= 0: 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, *
[ 8]: Fact= 0: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, *
[ 9]: Fact= 0: 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, *
[10]: Fact= 0: 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, *
[11]: Fact= 0: 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, *
[12]: Fact= 0: 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, *
[13]: Fact= 0: 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, *
[14]: Fact= 0: 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, *
[15]: Fact= 0: 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, *

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,166 @@
--- 4x4, Mode= 2 --- [refPix]
[ 0]: Fact= 0: 10, 11, 12, 13 *
[ 1]: Fact= 0: 11, 12, 13, 14 *
[ 2]: Fact= 0: 12, 13, 14, 15 *
[ 3]: Fact= 0: 13, 14, 15, 16 *
--- 4x4, Mode= 3 ---
[ 0]: Fact=26: 9, 10, 11, 12, 13 *
[ 1]: Fact=20: 10, 11, 12, 13, 14 *
[ 2]: Fact=14: 11, 12, 13, 14, 15 *
[ 3]: Fact= 8: 12, 13, 14, 15, 16 *
--- 4x4, Mode= 4 ---
[ 0]: Fact=21: 9, 10, 11, 12, 13 *
[ 1]: Fact=10: 10, 11, 12, 13, 14 *
[ 2]: Fact=31: 10, 11, 12, 13, 14 *
[ 3]: Fact=20: 11, 12, 13, 14, 15 *
--- 4x4, Mode= 5 ---
[ 0]: Fact=17: 9, 10, 11, 12, 13 *
[ 1]: Fact= 2: 10, 11, 12, 13, 14 *
[ 2]: Fact=19: 10, 11, 12, 13, 14 *
[ 3]: Fact= 4: 11, 12, 13, 14, 15 *
--- 4x4, Mode= 6 ---
[ 0]: Fact=13: 9, 10, 11, 12, 13 *
[ 1]: Fact=26: 9, 10, 11, 12, 13 *
[ 2]: Fact= 7: 10, 11, 12, 13, 14 *
[ 3]: Fact=20: 10, 11, 12, 13, 14 *
--- 4x4, Mode= 7 ---
[ 0]: Fact= 9: 9, 10, 11, 12, 13 *
[ 1]: Fact=18: 9, 10, 11, 12, 13 *
[ 2]: Fact=27: 9, 10, 11, 12, 13 *
[ 3]: Fact= 4: 10, 11, 12, 13, 14 *
--- 4x4, Mode= 8 ---
[ 0]: Fact= 5: 9, 10, 11, 12, 13 *
[ 1]: Fact=10: 9, 10, 11, 12, 13 *
[ 2]: Fact=15: 9, 10, 11, 12, 13 *
[ 3]: Fact=20: 9, 10, 11, 12, 13 *
--- 4x4, Mode= 9 ---
[ 0]: Fact= 2: 9, 10, 11, 12, 13 *
[ 1]: Fact= 4: 9, 10, 11, 12, 13 *
[ 2]: Fact= 6: 9, 10, 11, 12, 13 *
[ 3]: Fact= 8: 9, 10, 11, 12, 13 *
--- 4x4, Mode=10 --- filtPix
[ 0]: Fact= 0: 9, 10, 11, 12 *
[ 1]: Fact= 0: 9, 10, 11, 12 *
[ 2]: Fact= 0: 9, 10, 11, 12 *
[ 3]: Fact= 0: 9, 10, 11, 12 *
--- 4x4, Mode=11 ---
[ 0]: Fact=30: 0, 9, 10, 11, 12 *
[ 1]: Fact=28: 0, 9, 10, 11, 12 *
[ 2]: Fact=26: 0, 9, 10, 11, 12 *
[ 3]: Fact=24: 0, 9, 10, 11, 12 *
--- 4x4, Mode=12 ---
[ 0]: Fact=27: 0, 9, 10, 11, 12 *
[ 1]: Fact=22: 0, 9, 10, 11, 12 *
[ 2]: Fact=17: 0, 9, 10, 11, 12 *
[ 3]: Fact=12: 0, 9, 10, 11, 12 *
--- 4x4, Mode=13 ---
[ 0]: Fact=23: 0, 9, 10, 11, 12 *
[ 1]: Fact=14: 0, 9, 10, 11, 12 *
[ 2]: Fact= 5: 0, 9, 10, 11, 12 *
[ 3]: Fact=28: 4, 0, 9, 10, 11 *
--- 4x4, Mode=14 ---
[ 0]: Fact=19: 0, 9, 10, 11, 12 *
[ 1]: Fact= 6: 0, 9, 10, 11, 12 *
[ 2]: Fact=25: 2, 0, 9, 10, 11 *
[ 3]: Fact=12: 2, 0, 9, 10, 11 *
--- 4x4, Mode=15 ---
[ 0]: Fact=15: 0, 9, 10, 11, 12 *
[ 1]: Fact=30: 2, 0, 9, 10, 11 *
[ 2]: Fact=13: 2, 0, 9, 10, 11 *
[ 3]: Fact=28: 4, 2, 0, 9, 10 *
--- 4x4, Mode=16 ---
[ 0]: Fact=11: 0, 9, 10, 11, 12 *
[ 1]: Fact=22: 2, 0, 9, 10, 11 *
[ 2]: Fact= 1: 2, 0, 9, 10, 11 *
[ 3]: Fact=12: 3, 2, 0, 9, 10 *
--- 4x4, Mode=17 ---
[ 0]: Fact= 6: 0, 9, 10, 11, 12 *
[ 1]: Fact=12: 1, 0, 9, 10, 11 *
[ 2]: Fact=18: 2, 1, 0, 9, 10 *
[ 3]: Fact=24: 4, 2, 1, 0, 9 *
--- 4x4, Mode=18 ---
[ 0]: Fact= 0: 0, 1, 2, 3 *
[ 1]: Fact= 0: 9, 0, 1, 2 *
[ 2]: Fact= 0: 10, 9, 0, 1 *
[ 3]: Fact= 0: 11, 10, 9, 0 *
--- 4x4, Mode=19 ---
[ 0]: Fact= 6: 0, 1, 2, 3, 4 *
[ 1]: Fact=12: 9, 0, 1, 2, 3 *
[ 2]: Fact=18: 10, 9, 0, 1, 2 *
[ 3]: Fact=24: 12, 10, 9, 0, 1 *
--- 4x4, Mode=20 ---
[ 0]: Fact=11: 0, 1, 2, 3, 4 *
[ 1]: Fact=22: 10, 0, 1, 2, 3 *
[ 2]: Fact= 1: 10, 0, 1, 2, 3 *
[ 3]: Fact=12: 11, 10, 0, 1, 2 *
--- 4x4, Mode=21 ---
[ 0]: Fact=15: 0, 1, 2, 3, 4 *
[ 1]: Fact=30: 10, 0, 1, 2, 3 *
[ 2]: Fact=13: 10, 0, 1, 2, 3 *
[ 3]: Fact=28: 12, 10, 0, 1, 2 *
--- 4x4, Mode=22 ---
[ 0]: Fact=19: 0, 1, 2, 3, 4 *
[ 1]: Fact= 6: 0, 1, 2, 3, 4 *
[ 2]: Fact=25: 10, 0, 1, 2, 3 *
[ 3]: Fact=12: 10, 0, 1, 2, 3 *
--- 4x4, Mode=23 ---
[ 0]: Fact=23: 0, 1, 2, 3, 4 *
[ 1]: Fact=14: 0, 1, 2, 3, 4 *
[ 2]: Fact= 5: 0, 1, 2, 3, 4 *
[ 3]: Fact=28: 12, 0, 1, 2, 3 *
--- 4x4, Mode=24 ---
[ 0]: Fact=27: 0, 1, 2, 3, 4 *
[ 1]: Fact=22: 0, 1, 2, 3, 4 *
[ 2]: Fact=17: 0, 1, 2, 3, 4 *
[ 3]: Fact=12: 0, 1, 2, 3, 4 *
--- 4x4, Mode=25 ---
[ 0]: Fact=30: 0, 1, 2, 3, 4 *
[ 1]: Fact=28: 0, 1, 2, 3, 4 *
[ 2]: Fact=26: 0, 1, 2, 3, 4 *
[ 3]: Fact=24: 0, 1, 2, 3, 4 *
--- 4x4, Mode=26 ---
[ 0]: Fact= 0: 1, 2, 3, 4, *
[ 1]: Fact= 0: 1, 2, 3, 4, *
[ 2]: Fact= 0: 1, 2, 3, 4, *
[ 3]: Fact= 0: 1, 2, 3, 4, *
--- 4x4, Mode=27 ---
[ 0]: Fact= 2: 1, 2, 3, 4, 5, *
[ 1]: Fact= 4: 1, 2, 3, 4, 5, *
[ 2]: Fact= 6: 1, 2, 3, 4, 5, *
[ 3]: Fact= 8: 1, 2, 3, 4, 5, *
--- 4x4, Mode=28 ---
[ 0]: Fact= 5: 1, 2, 3, 4, 5, *
[ 1]: Fact=10: 1, 2, 3, 4, 5, *
[ 2]: Fact=15: 1, 2, 3, 4, 5, *
[ 3]: Fact=20: 1, 2, 3, 4, 5, *
--- 4x4, Mode=29 ---
[ 0]: Fact= 9: 1, 2, 3, 4, 5, *
[ 1]: Fact=18: 1, 2, 3, 4, 5, *
[ 2]: Fact=27: 1, 2, 3, 4, 5, *
[ 3]: Fact= 4: 2, 3, 4, 5, 6, *
--- 4x4, Mode=30 ---
[ 0]: Fact=13: 1, 2, 3, 4, 5, *
[ 1]: Fact=26: 1, 2, 3, 4, 5, *
[ 2]: Fact= 7: 2, 3, 4, 5, 6, *
[ 3]: Fact=20: 2, 3, 4, 5, 6, *
--- 4x4, Mode=31 ---
[ 0]: Fact=17: 1, 2, 3, 4, 5, *
[ 1]: Fact= 2: 2, 3, 4, 5, 6, *
[ 2]: Fact=19: 2, 3, 4, 5, 6, *
[ 3]: Fact= 4: 3, 4, 5, 6, 7, *
--- 4x4, Mode=32 ---
[ 0]: Fact=21: 1, 2, 3, 4, 5, *
[ 1]: Fact=10: 2, 3, 4, 5, 6, *
[ 2]: Fact=31: 2, 3, 4, 5, 6, *
[ 3]: Fact=20: 3, 4, 5, 6, 7, *
--- 4x4, Mode=33 ---
[ 0]: Fact=26: 1, 2, 3, 4, 5, *
[ 1]: Fact=20: 2, 3, 4, 5, 6, *
[ 2]: Fact=14: 3, 4, 5, 6, 7, *
[ 3]: Fact= 8: 4, 5, 6, 7, 8, *
--- 4x4, Mode=34 ---
[ 0]: Fact= 0: 2, 3, 4, 5, *
[ 1]: Fact= 0: 3, 4, 5, 6, *
[ 2]: Fact= 0: 4, 5, 6, 7, *
[ 3]: Fact= 0: 5, 6, 7, 8, *

View file

@ -0,0 +1,298 @@
--- 8x8, Mode= 2 ---
[ 0]: Fact= 0: -2, -3, -4, -5, -6, -7, -8, -9, *
[ 1]: Fact= 0: -3, -4, -5, -6, -7, -8, -9,-10, *
[ 2]: Fact= 0: -4, -5, -6, -7, -8, -9,-10,-11, *
[ 3]: Fact= 0: -5, -6, -7, -8, -9,-10,-11,-12, *
[ 4]: Fact= 0: -6, -7, -8, -9,-10,-11,-12,-13, *
[ 5]: Fact= 0: -7, -8, -9,-10,-11,-12,-13,-14, *
[ 6]: Fact= 0: -8, -9,-10,-11,-12,-13,-14,-15, *
[ 7]: Fact= 0: -9,-10,-11,-12,-13,-14,-15,-16, *
--- 8x8, Mode= 3 ---
[ 0]: Fact=26: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 1]: Fact=20: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 2]: Fact=14: -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[ 3]: Fact= 8: -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[ 4]: Fact= 2: -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[ 5]: Fact=28: -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[ 6]: Fact=22: -6, -7, -8, -9,-10,-11,-12,-13,-14, *
[ 7]: Fact=16: -7, -8, -9,-10,-11,-12,-13,-14,-15, *
--- 8x8, Mode= 4 ---
[ 0]: Fact=21: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 1]: Fact=10: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 2]: Fact=31: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 3]: Fact=20: -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[ 4]: Fact= 9: -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[ 5]: Fact=30: -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[ 6]: Fact=19: -5, -6, -7, -8, -9,-10,-11,-12,-13, *
[ 7]: Fact= 8: -6, -7, -8, -9,-10,-11,-12,-13,-14, *
--- 8x8, Mode= 5 ---
[ 0]: Fact=17: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 1]: Fact= 2: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 2]: Fact=19: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 3]: Fact= 4: -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[ 4]: Fact=21: -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[ 5]: Fact= 6: -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[ 6]: Fact=23: -4, -5, -6, -7, -8, -9,-10,-11,-12, *
[ 7]: Fact= 8: -5, -6, -7, -8, -9,-10,-11,-12,-13, *
--- 8x8, Mode= 6 ---
[ 0]: Fact=13: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 1]: Fact=26: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 2]: Fact= 7: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 3]: Fact=20: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 4]: Fact= 1: -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[ 5]: Fact=14: -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[ 6]: Fact=27: -3, -4, -5, -6, -7, -8, -9,-10,-11, *
[ 7]: Fact= 8: -4, -5, -6, -7, -8, -9,-10,-11,-12, *
--- 8x8, Mode= 7 ---
[ 0]: Fact= 9: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 1]: Fact=18: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 2]: Fact=27: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 3]: Fact= 4: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 4]: Fact=13: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 5]: Fact=22: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 6]: Fact=31: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 7]: Fact= 8: -3, -4, -5, -6, -7, -8, -9,-10,-11, *
--- 8x8, Mode= 8 ---
[ 0]: Fact= 5: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 1]: Fact=10: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 2]: Fact=15: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 3]: Fact=20: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 4]: Fact=25: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 5]: Fact=30: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 6]: Fact= 3: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
[ 7]: Fact= 8: -2, -3, -4, -5, -6, -7, -8, -9,-10, *
--- 8x8, Mode= 9 ---
[ 0]: Fact= 2: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 1]: Fact= 4: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 2]: Fact= 6: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 3]: Fact= 8: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 4]: Fact=10: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 5]: Fact=12: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 6]: Fact=14: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
[ 7]: Fact=16: -1, -2, -3, -4, -5, -6, -7, -8, -9, *
--- 8x8, Mode=10 ---
[ 0]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, *
[ 1]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, *
[ 2]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, *
[ 3]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, *
[ 4]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, *
[ 5]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, *
[ 6]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, *
[ 7]: Fact= 0: -1, -2, -3, -4, -5, -6, -7, -8, *
--- 8x8, Mode=11 ---
[ 0]: Fact=30: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 1]: Fact=28: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 2]: Fact=26: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 3]: Fact=24: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 4]: Fact=22: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 5]: Fact=20: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 6]: Fact=18: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 7]: Fact=16: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
--- 8x8, Mode=12 ---
[ 0]: Fact=27: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 1]: Fact=22: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 2]: Fact=17: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 3]: Fact=12: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 4]: Fact= 7: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 5]: Fact= 2: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 6]: Fact=29: 6, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 7]: Fact=24: 6, 0, -1, -2, -3, -4, -5, -6, -7, *
--- 8x8, Mode=13 ---
[ 0]: Fact=23: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 1]: Fact=14: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 2]: Fact= 5: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 3]: Fact=28: 4, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 4]: Fact=19: 4, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 5]: Fact=10: 4, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 6]: Fact= 1: 4, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 7]: Fact=24: 7, 4, 0, -1, -2, -3, -4, -5, -6, *
--- 8x8, Mode=14 ---
[ 0]: Fact=19: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 1]: Fact= 6: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 2]: Fact=25: 2, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 3]: Fact=12: 2, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 4]: Fact=31: 5, 2, 0, -1, -2, -3, -4, -5, -6, *
[ 5]: Fact=18: 5, 2, 0, -1, -2, -3, -4, -5, -6, *
[ 6]: Fact= 5: 5, 2, 0, -1, -2, -3, -4, -5, -6, *
[ 7]: Fact=24: 7, 5, 2, 0, -1, -2, -3, -4, -5, *
--- 8x8, Mode=15 ---
[ 0]: Fact=15: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 1]: Fact=30: 2, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 2]: Fact=13: 2, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 3]: Fact=28: 4, 2, 0, -1, -2, -3, -4, -5, -6, *
[ 4]: Fact=11: 4, 2, 0, -1, -2, -3, -4, -5, -6, *
[ 5]: Fact=26: 6, 4, 2, 0, -1, -2, -3, -4, -5, *
[ 6]: Fact= 9: 6, 4, 2, 0, -1, -2, -3, -4, -5, *
[ 7]: Fact=24: 8, 6, 4, 2, 0, -1, -2, -3, -4, *
--- 8x8, Mode=16 ---
[ 0]: Fact=11: 0, -1, -2, -3, -4, -5, -6, -7, -8, *
[ 1]: Fact=22: 2, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 2]: Fact= 1: 2, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 3]: Fact=12: 3, 2, 0, -1, -2, -3, -4, -5, -6, *
[ 4]: Fact=23: 5, 3, 2, 0, -1, -2, -3, -4, -5, *
[ 5]: Fact= 2: 5, 3, 2, 0, -1, -2, -3, -4, -5, *
[ 6]: Fact=13: 6, 5, 3, 2, 0, -1, -2, -3, -4, *
[ 7]: Fact=24: 8, 6, 5, 3, 2, 0, -1, -2, -3, *
--- 8x8, Mode=17 ---
[ 0]: Fact= 6: 0, -1, -2, -3, -4, -5, -6, -7, -8, x
[ 1]: Fact=12: 1, 0, -1, -2, -3, -4, -5, -6, -7, *
[ 2]: Fact=18: 2, 1, 0, -1, -2, -3, -4, -5, -6, *
[ 3]: Fact=24: 4, 2, 1, 0, -1, -2, -3, -4, -5, *
[ 4]: Fact=30: 5, 4, 2, 1, 0, -1, -2, -3, -4, *
[ 5]: Fact= 4: 5, 4, 2, 1, 0, -1, -2, -3, -4, *
[ 6]: Fact=10: 6, 5, 4, 2, 1, 0, -1, -2, -3, *
[ 7]: Fact=16: 7, 6, 5, 4, 2, 1, 0, -1, -2, *
--- 8x8, Mode=18 ---
[ 0]: Fact= 0: 0, 1, 2, 3, 4, 5, 6, 7, *
[ 1]: Fact= 0: -1, 0, 1, 2, 3, 4, 5, 6, *
[ 2]: Fact= 0: -2, -1, 0, 1, 2, 3, 4, 5, *
[ 3]: Fact= 0: -3, -2, -1, 0, 1, 2, 3, 4, *
[ 4]: Fact= 0: -4, -3, -2, -1, 0, 1, 2, 3, *
[ 5]: Fact= 0: -5, -4, -3, -2, -1, 0, 1, 2, *
[ 6]: Fact= 0: -6, -5, -4, -3, -2, -1, 0, 1, *
[ 7]: Fact= 0: -7, -6, -5, -4, -3, -2, -1, 0, *
--- 8x8, Mode=19 ---
[ 0]: Fact= 6: 0, 1, 2, 3, 4, 5, 6, 7, 8, x
[ 1]: Fact=12: -1, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 2]: Fact=18: -2, -1, 0, 1, 2, 3, 4, 5, 6, *
[ 3]: Fact=24: -4, -2, -1, 0, 1, 2, 3, 4, 5, *
[ 4]: Fact=30: -5, -4, -2, -1, 0, 1, 2, 3, 4, *
[ 5]: Fact= 4: -5, -4, -2, -1, 0, 1, 2, 3, 4, *
[ 6]: Fact=10: -6, -5, -4, -2, -1, 0, 1, 2, 3, *
[ 7]: Fact=16: -7, -6, -5, -4, -2, -1, 0, 1, 2, *
--- 8x8, Mode=20 ---
[ 0]: Fact=11: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 1]: Fact=22: -2, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 2]: Fact= 1: -2, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 3]: Fact=12: -3, -2, 0, 1, 2, 3, 4, 5, 6, *
[ 4]: Fact=23: -5, -3, -2, 0, 1, 2, 3, 4, 5, *
[ 5]: Fact= 2: -5, -3, -2, 0, 1, 2, 3, 4, 5, *
[ 6]: Fact=13: -6, -5, -3, -2, 0, 1, 2, 3, 4, *
[ 7]: Fact=24: -8, -6, -5, -3, -2, 0, 1, 2, 3, *
--- 8x8, Mode=21 ---
[ 0]: Fact=15: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 1]: Fact=30: -2, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 2]: Fact=13: -2, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 3]: Fact=28: -4, -2, 0, 1, 2, 3, 4, 5, 6, *
[ 4]: Fact=11: -4, -2, 0, 1, 2, 3, 4, 5, 6, *
[ 5]: Fact=26: -6, -4, -2, 0, 1, 2, 3, 4, 5, *
[ 6]: Fact= 9: -6, -4, -2, 0, 1, 2, 3, 4, 5, *
[ 7]: Fact=24: -8, -6, -4, -2, 0, 1, 2, 3, 4, *
--- 8x8, Mode=22 ---
[ 0]: Fact=19: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 1]: Fact= 6: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 2]: Fact=25: -2, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 3]: Fact=12: -2, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 4]: Fact=31: -5, -2, 0, 1, 2, 3, 4, 5, 6, *
[ 5]: Fact=18: -5, -2, 0, 1, 2, 3, 4, 5, 6, *
[ 6]: Fact= 5: -5, -2, 0, 1, 2, 3, 4, 5, 6, *
[ 7]: Fact=24: -7, -5, -2, 0, 1, 2, 3, 4, 5, *
--- 8x8, Mode=23 ---
[ 0]: Fact=23: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 1]: Fact=14: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 2]: Fact= 5: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 3]: Fact=28: -4, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 4]: Fact=19: -4, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 5]: Fact=10: -4, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 6]: Fact= 1: -4, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 7]: Fact=24: -7, -4, 0, 1, 2, 3, 4, 5, 6, *
--- 8x8, Mode=24 ---
[ 0]: Fact=27: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 1]: Fact=22: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 2]: Fact=17: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 3]: Fact=12: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 4]: Fact= 7: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 5]: Fact= 2: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 6]: Fact=29: -6, 0, 1, 2, 3, 4, 5, 6, 7, *
[ 7]: Fact=24: -6, 0, 1, 2, 3, 4, 5, 6, 7, *
--- 8x8, Mode=25 ---
[ 0]: Fact=30: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 1]: Fact=28: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 2]: Fact=26: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 3]: Fact=24: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 4]: Fact=22: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 5]: Fact=20: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 6]: Fact=18: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
[ 7]: Fact=16: 0, 1, 2, 3, 4, 5, 6, 7, 8, *
--- 8x8, Mode=26 ---
[ 0]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, *
[ 1]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, *
[ 2]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, *
[ 3]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, *
[ 4]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, *
[ 5]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, *
[ 6]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, *
[ 7]: Fact= 0: 1, 2, 3, 4, 5, 6, 7, 8, *
--- 8x8, Mode=27 ---
[ 0]: Fact= 2: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 1]: Fact= 4: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 2]: Fact= 6: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 3]: Fact= 8: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 4]: Fact=10: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 5]: Fact=12: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 6]: Fact=14: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 7]: Fact=16: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
--- 8x8, Mode=28 ---
[ 0]: Fact= 5: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 1]: Fact=10: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 2]: Fact=15: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 3]: Fact=20: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 4]: Fact=25: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 5]: Fact=30: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 6]: Fact= 3: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 7]: Fact= 8: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
--- 8x8, Mode=29 ---
[ 0]: Fact= 9: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 1]: Fact=18: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 2]: Fact=27: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 3]: Fact= 4: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 4]: Fact=13: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 5]: Fact=22: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 6]: Fact=31: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 7]: Fact= 8: 3, 4, 5, 6, 7, 8, 9, 10, 11, *
--- 8x8, Mode=30 ---
[ 0]: Fact=13: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 1]: Fact=26: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 2]: Fact= 7: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 3]: Fact=20: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 4]: Fact= 1: 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 5]: Fact=14: 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 6]: Fact=27: 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 7]: Fact= 8: 4, 5, 6, 7, 8, 9, 10, 11, 12, *
--- 8x8, Mode=31 ---
[ 0]: Fact=17: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 1]: Fact= 2: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 2]: Fact=19: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 3]: Fact= 4: 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 4]: Fact=21: 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 5]: Fact= 6: 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 6]: Fact=23: 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 7]: Fact= 8: 5, 6, 7, 8, 9, 10, 11, 12, 13, *
--- 8x8, Mode=32 ---
[ 0]: Fact=21: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 1]: Fact=10: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 2]: Fact=31: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 3]: Fact=20: 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 4]: Fact= 9: 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 5]: Fact=30: 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 6]: Fact=19: 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 7]: Fact= 8: 6, 7, 8, 9, 10, 11, 12, 13, 14, *
--- 8x8, Mode=33 ---
[ 0]: Fact=26: 1, 2, 3, 4, 5, 6, 7, 8, 9, *
[ 1]: Fact=20: 2, 3, 4, 5, 6, 7, 8, 9, 10, *
[ 2]: Fact=14: 3, 4, 5, 6, 7, 8, 9, 10, 11, *
[ 3]: Fact= 8: 4, 5, 6, 7, 8, 9, 10, 11, 12, *
[ 4]: Fact= 2: 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 5]: Fact=28: 5, 6, 7, 8, 9, 10, 11, 12, 13, *
[ 6]: Fact=22: 6, 7, 8, 9, 10, 11, 12, 13, 14, *
[ 7]: Fact=16: 7, 8, 9, 10, 11, 12, 13, 14, 15, *
--- 8x8, Mode=34 ---
[ 0]: Fact= 0: 2, 3, 4, 5, 6, 7, 8, 9, *
[ 1]: Fact= 0: 3, 4, 5, 6, 7, 8, 9, 10, *
[ 2]: Fact= 0: 4, 5, 6, 7, 8, 9, 10, 11, *
[ 3]: Fact= 0: 5, 6, 7, 8, 9, 10, 11, 12, *
[ 4]: Fact= 0: 6, 7, 8, 9, 10, 11, 12, 13, *
[ 5]: Fact= 0: 7, 8, 9, 10, 11, 12, 13, 14, *
[ 6]: Fact= 0: 8, 9, 10, 11, 12, 13, 14, 15, *
[ 7]: Fact= 0: 9, 10, 11, 12, 13, 14, 15, 16, *

109
x265/doc/reST/Makefile Normal file
View file

@ -0,0 +1,109 @@
# Makefile for (Sphinx based) restructured text documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
QCOLLECTIONGENERATOR = qcollectiongenerator
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean distclean html web pickle htmlhelp qthelp qhc latex changes linkcheck
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " qhc to make QHC file"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " man to make manpages"
@echo " changes to make an overview over all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
clean:
-rm -rf build/*
distclean: clean
-rmdir build/
html:
mkdir -p build/html build/doctrees
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html
@echo
@echo "Build finished. The HTML pages are in build/html."
zip: html
(cd build ; zip TortoiseHg.html.zip -r html)
pickle:
mkdir -p build/pickle build/doctrees
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) build/pickle
@echo
@echo "Build finished; now you can process the pickle files."
web: pickle
json:
mkdir -p build/json build/doctrees
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) build/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
mkdir -p build/htmlhelp build/doctrees
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) build/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in build/htmlhelp."
qthelp:
mkdir -p build/qthelp build/doctrees
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) build/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in build/qthelp, like this:"
@echo "# qcollectiongenerator build/qthelp/foo.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile build/qthelp/foo.qhc"
qhc: qthelp
$(QCOLLECTIONGENERATOR) build/qthelp/TortoiseHg.qhcp
@echo "Build finished. To view the help file:"
@echo "# assistant -collectionFile build/qthelp/TortoiseHg.qhc"
latex:
mkdir -p build/latex build/doctrees
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) build/latex
@echo
@echo "Build finished; the LaTeX files are in build/latex."
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
"run these through (pdf)latex."
man:
mkdir -p build/man build/doctrees
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) build/man
@echo
@echo "Build finished; the manpages are in build/man."
@echo "Run \`man -l build/man/x265.1' or \`man -l build/man/libx265.3'" \
"to view them."
changes:
mkdir -p build/changes build/doctrees
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) build/changes
@echo
@echo "The overview file is in build/changes."
linkcheck:
mkdir -p build/linkcheck build/doctrees
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) build/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in build/linkcheck/output.txt."

511
x265/doc/reST/api.rst Normal file
View file

@ -0,0 +1,511 @@
*********************************
Application Programming Interface
*********************************
Introduction
============
x265 is written primarily in C++ and x86 assembly language but the
public facing programming interface is C for the widest possible
portability. This C interface is wholly defined within :file:`x265.h`
in the source/ folder of our source tree. All of the functions and
variables and enumerations meant to be used by the end-user are present
in this header.
Where possible, x265 has tried to keep its public API as close as
possible to x264's public API. So those familiar with using x264 through
its C interface will find x265 quite familiar.
This file is meant to be read in-order; the narrative follows linearly
through the various sections
Build Considerations
====================
The choice of Main or Main10 profile encodes is made at compile time;
the internal pixel depth influences a great deal of variable sizes and
thus 8 and 10bit pixels are handled as different build options
(primarily to maintain the performance of the 8bit builds). libx265
exports a variable **x265_max_bit_depth** which indicates how the
library was compiled (it will contain a value of 8 or 10). Further,
**x265_version_str** is a pointer to a string indicating the version of
x265 which was compiled, and **x265_build_info_str** is a pointer to a
string identifying the compiler and build options.
.. Note::
**x265_version_str** is only updated when **cmake** runs. If you are
making binaries for others to use, it is recommended to run
**cmake** prior to **make** in your build scripts.
x265 will accept input pixels of any depth between 8 and 16 bits
regardless of the depth of its internal pixels (8 or 10). It will shift
and mask input pixels as required to reach the internal depth. If
downshifting is being performed using our CLI application (to 8 bits),
the :option:`--dither` option may be enabled to reduce banding. This
feature is not available through the C interface.
Encoder
=======
The primary object in x265 is the encoder object, and this is
represented in the public API as an opaque typedef **x265_encoder**.
Pointers of this type are passed to most encoder functions.
A single encoder generates a single output bitstream from a sequence of
raw input pictures. Thus if you need multiple output bitstreams you
must allocate multiple encoders. You may pass the same input pictures
to multiple encoders, the encode function does not modify the input
picture structures (the pictures are copied into the encoder as the
first step of encode).
Encoder allocation is a reentrant function, so multiple encoders may be
safely allocated in a single process. The encoder access functions are
not reentrant for a single encoder, so the recommended use case is to
allocate one client thread per encoder instance (one thread for all
encoder instances is possible, but some encoder access functions are
blocking and thus this would be less efficient).
.. Note::
There is one caveat to having multiple encoders within a single
process. All of the encoders must use the same maximum CTU size
because many global variables are configured based on this size.
Encoder allocation will fail if a mis-matched CTU size is attempted.
If no encoders are open, **x265_cleanup()** can be called to reset
the configured CTU size so a new size can be used.
An encoder is allocated by calling **x265_encoder_open()**::
/* x265_encoder_open:
* create a new encoder handler, all parameters from x265_param are copied */
x265_encoder* x265_encoder_open(x265_param *);
The returned pointer is then passed to all of the functions pertaining
to this encode. A large amount of memory is allocated during this
function call, but the encoder will continue to allocate memory as the
first pictures are passed to the encoder; until its pool of picture
structures is large enough to handle all of the pictures it must keep
internally. The pool size is determined by the lookahead depth, the
number of frame threads, and the maximum number of references.
As indicated in the comment, **x265_param** is copied internally so the user
may release their copy after allocating the encoder. Changes made to
their copy of the param structure have no affect on the encoder after it
has been allocated.
Param
=====
The **x265_param** structure describes everything the encoder needs to
know about the input pictures and the output bitstream and most
everything in between.
The recommended way to handle these param structures is to allocate them
from libx265 via::
/* x265_param_alloc:
* Allocates an x265_param instance. The returned param structure is not
* special in any way, but using this method together with x265_param_free()
* and x265_param_parse() to set values by name allows the application to treat
* x265_param as an opaque data struct for version safety */
x265_param *x265_param_alloc();
In this way, your application does not need to know the exact size of
the param structure (the build of x265 could potentially be a bit newer
than the copy of :file:`x265.h` that your application compiled against).
Next you perform the initial *rough cut* configuration of the encoder by
chosing a performance preset and optional tune factor
**x265_preset_names** and **x265_tune_names** respectively hold the
string names of the presets and tune factors (see :ref:`presets
<preset-tune-ref>` for more detail on presets and tune factors)::
/* returns 0 on success, negative on failure (e.g. invalid preset/tune name). */
int x265_param_default_preset(x265_param *, const char *preset, const char *tune);
Now you may optionally specify a profile. **x265_profile_names**
contains the string names this function accepts::
/* (can be NULL, in which case the function will do nothing)
* returns 0 on success, negative on failure (e.g. invalid profile name). */
int x265_param_apply_profile(x265_param *, const char *profile);
Finally you configure any remaining options by name using repeated calls to::
/* x265_param_parse:
* set one parameter by name.
* returns 0 on success, or returns one of the following errors.
* note: BAD_VALUE occurs only if it can't even parse the value,
* numerical range is not checked until x265_encoder_open().
* value=NULL means "true" for boolean options, but is a BAD_VALUE for non-booleans. */
#define X265_PARAM_BAD_NAME (-1)
#define X265_PARAM_BAD_VALUE (-2)
int x265_param_parse(x265_param *p, const char *name, const char *value);
See :ref:`string options <string-options-ref>` for the list of options (and their
descriptions) which can be set by **x265_param_parse()**.
After the encoder has been created, you may release the param structure::
/* x265_param_free:
* Use x265_param_free() to release storage for an x265_param instance
* allocated by x265_param_alloc() */
void x265_param_free(x265_param *);
.. Note::
Using these methods to allocate and release the param structures
helps future-proof your code in many ways, but the x265 API is
versioned in such a way that we prevent linkage against a build of
x265 that does not match the version of the header you are compiling
against (unless you use x265_api_query() to acquire the library's
interfaces). This is function of the X265_BUILD macro.
**x265_encoder_parameters()** may be used to get a copy of the param
structure from the encoder after it has been opened, in order to see the
changes made to the parameters for auto-detection and other reasons::
/* x265_encoder_parameters:
* copies the current internal set of parameters to the pointer provided
* by the caller. useful when the calling application needs to know
* how x265_encoder_open has changed the parameters.
* note that the data accessible through pointers in the returned param struct
* (e.g. filenames) should not be modified by the calling application. */
void x265_encoder_parameters(x265_encoder *, x265_param *);
**x265_encoder_reconfig()** may be used to reconfigure encoder parameters mid-encode::
/* x265_encoder_reconfig:
* used to modify encoder parameters.
* various parameters from x265_param are copied.
* this takes effect immediately, on whichever frame is encoded next;
* returns 0 on success, negative on parameter validation error.
*
* not all parameters can be changed; see the actual function for a
* detailed breakdown. since not all parameters can be changed, moving
* from preset to preset may not always fully copy all relevant parameters,
* but should still work usably in practice. however, more so than for
* other presets, many of the speed shortcuts used in ultrafast cannot be
* switched out of; using reconfig to switch between ultrafast and other
* presets is not recommended without a more fine-grained breakdown of
* parameters to take this into account. */
int x265_encoder_reconfig(x265_encoder *, x265_param *);
Pictures
========
Raw pictures are passed to the encoder via the **x265_picture** structure.
Just like the param structure we recommend you allocate this structure
from the encoder to avoid potential size mismatches::
/* x265_picture_alloc:
* Allocates an x265_picture instance. The returned picture structure is not
* special in any way, but using this method together with x265_picture_free()
* and x265_picture_init() allows some version safety. New picture fields will
* always be added to the end of x265_picture */
x265_picture *x265_picture_alloc();
Regardless of whether you allocate your picture structure this way or
whether you simply declare it on the stack, your next step is to
initialize the structure via::
/***
* Initialize an x265_picture structure to default values. It sets the pixel
* depth and color space to the encoder's internal values and sets the slice
* type to auto - so the lookahead will determine slice type.
*/
void x265_picture_init(x265_param *param, x265_picture *pic);
x265 does not perform any color space conversions, so the raw picture's
color space (chroma sampling) must match the color space specified in
the param structure used to allocate the encoder. **x265_picture_init**
initializes this field to the internal color space and it is best to
leave it unmodified.
The picture bit depth is initialized to be the encoder's internal bit
depth but this value should be changed to the actual depth of the pixels
being passed into the encoder. If the picture bit depth is more than 8,
the encoder assumes two bytes are used to represent each sample
(little-endian shorts).
The user is responsible for setting the plane pointers and plane strides
(in units of bytes, not pixels). The presentation time stamp (**pts**)
is optional, depending on whether you need accurate decode time stamps
(**dts**) on output.
If you wish to override the lookahead or rate control for a given
picture you may specify a slicetype other than X265_TYPE_AUTO, or a
forceQP value other than 0.
x265 does not modify the picture structure provided as input, so you may
reuse a single **x265_picture** for all pictures passed to a single
encoder, or even all pictures passed to multiple encoders.
Structures allocated from the library should eventually be released::
/* x265_picture_free:
* Use x265_picture_free() to release storage for an x265_picture instance
* allocated by x265_picture_alloc() */
void x265_picture_free(x265_picture *);
Analysis Buffers
================
Analysis information can be saved and reused to between encodes of the
same video sequence (generally for multiple bitrate encodes). The best
results are attained by saving the analysis information of the highest
bitrate encode and reuse it in lower bitrate encodes.
When saving or loading analysis data, buffers must be allocated for
every picture passed into the encoder using::
/* x265_alloc_analysis_data:
* Allocate memory to hold analysis meta data, returns 1 on success else 0 */
int x265_alloc_analysis_data(x265_picture*);
Note that this is very different from the typical semantics of
**x265_picture**, which can be reused many times. The analysis buffers must
be re-allocated for every input picture.
Analysis buffers passed to the encoder are owned by the encoder until
they pass the buffers back via an output **x265_picture**. The user is
responsible for releasing the buffers when they are finished with them
via::
/* x265_free_analysis_data:
* Use x265_free_analysis_data to release storage of members allocated by
* x265_alloc_analysis_data */
void x265_free_analysis_data(x265_picture*);
Encode Process
==============
The output of the encoder is a series of NAL packets, which are always
returned concatenated in consecutive memory. HEVC streams have SPS and
PPS and VPS headers which describe how the following packets are to be
decoded. If you specified :option:`--repeat-headers` then those headers
will be output with every keyframe. Otherwise you must explicitly query
those headers using::
/* x265_encoder_headers:
* return the SPS and PPS that will be used for the whole stream.
* *pi_nal is the number of NAL units outputted in pp_nal.
* returns negative on error, total byte size of payload data on success
* the payloads of all output NALs are guaranteed to be sequential in memory. */
int x265_encoder_headers(x265_encoder *, x265_nal **pp_nal, uint32_t *pi_nal);
Now we get to the main encode loop. Raw input pictures are passed to the
encoder in display order via::
/* x265_encoder_encode:
* encode one picture.
* *pi_nal is the number of NAL units outputted in pp_nal.
* returns negative on error, zero if no NAL units returned.
* the payloads of all output NALs are guaranteed to be sequential in memory. */
int x265_encoder_encode(x265_encoder *encoder, x265_nal **pp_nal, uint32_t *pi_nal, x265_picture *pic_in, x265_picture *pic_out);
These pictures are queued up until the lookahead is full, and then the
frame encoders in turn are filled, and then finally you begin receiving
a output NALs (corresponding to a single output picture) with each input
picture you pass into the encoder.
Once the pipeline is completely full, **x265_encoder_encode()** will
block until the next output picture is complete.
.. note::
Optionally, if the pointer of a second **x265_picture** structure is
provided, the encoder will fill it with data pertaining to the
output picture corresponding to the output NALs, including the
recontructed image, POC and decode timestamp. These pictures will be
in encode (or decode) order.
When the last of the raw input pictures has been sent to the encoder,
**x265_encoder_encode()** must still be called repeatedly with a
*pic_in* argument of 0, indicating a pipeline flush, until the function
returns a value less than or equal to 0 (indicating the output bitstream
is complete).
At any time during this process, the application may query running
statistics from the encoder::
/* x265_encoder_get_stats:
* returns encoder statistics */
void x265_encoder_get_stats(x265_encoder *encoder, x265_stats *, uint32_t statsSizeBytes);
Cleanup
=======
Finally, the encoder must be closed in order to free all of its
resources. An encoder that has been flushed cannot be restarted and
reused. Once **x265_encoder_close()** has been called, the encoder
handle must be discarded::
/* x265_encoder_close:
* close an encoder handler */
void x265_encoder_close(x265_encoder *);
When the application has completed all encodes, it should call
**x265_cleanup()** to free process global, particularly if a memory-leak
detection tool is being used. **x265_cleanup()** also resets the saved
CTU size so it will be possible to create a new encoder with a different
CTU size::
/* x265_cleanup:
* release library static allocations, reset configured CTU size */
void x265_cleanup(void);
Multi-library Interface
=======================
If your application might want to make a runtime bit-depth selection, it
will need to use one of these bit-depth introspection interfaces which
returns an API structure containing the public function entry points and
constants.
Instead of directly using all of the **x265_** methods documented above,
you query an x265_api structure from your libx265 and then use the
function pointers of the same name (minus the **x265_** prefix) within
that structure. For instance **x265_param_default()** becomes
**api->param_default()**.
x265_api_get
------------
The first bit-depth instrospecton method is x265_api_get(). It designed
for applications that might statically link with libx265, or will at
least be tied to a particular SONAME or API version::
/* x265_api_get:
* Retrieve the programming interface for a linked x265 library.
* May return NULL if no library is available that supports the
* requested bit depth. If bitDepth is 0, the function is guarunteed
* to return a non-NULL x265_api pointer from the system default
* libx265 */
const x265_api* x265_api_get(int bitDepth);
Like **x265_encoder_encode()**, this function has the build number
automatically appended to the function name via macros. This ties your
application to a particular binary API version of libx265 (the one you
compile against). If you attempt to link with a libx265 with a different
API version number, the link will fail.
Obviously this has no meaningful effect on applications which statically
link to libx265.
x265_api_query
--------------
The second bit-depth introspection method is designed for applications
which need more flexibility in API versioning. If you use
**x265_api_query()** and dynamically link to libx265 at runtime (using
dlopen() on POSIX or LoadLibrary() on Windows) your application is no
longer directly tied to the API version that it was compiled against::
/* x265_api_query:
* Retrieve the programming interface for a linked x265 library, like
* x265_api_get(), except this function accepts X265_BUILD as the second
* argument rather than using the build number as part of the function name.
* Applications which dynamically link to libx265 can use this interface to
* query the library API and achieve a relative amount of version skew
* flexibility. The function may return NULL if the library determines that
* the apiVersion that your application was compiled against is not compatible
* with the library you have linked with.
*
* api_major_version will be incremented any time non-backward compatible
* changes are made to any public structures or functions. If
* api_major_version does not match X265_MAJOR_VERSION from the x265.h your
* application compiled against, your application must not use the returned
* x265_api pointer.
*
* Users of this API *must* also validate the sizes of any structures which
* are not treated as opaque in application code. For instance, if your
* application dereferences a x265_param pointer, then it must check that
* api->sizeof_param matches the sizeof(x265_param) that your application
* compiled with. */
const x265_api* x265_api_query(int bitDepth, int apiVersion, int* err);
A number of validations must be performed on the returned API structure
in order to determine if it is safe for use by your application. If you
do not perform these checks, your application is liable to crash::
if (api->api_major_version != X265_MAJOR_VERSION) /* do not use */
if (api->sizeof_param != sizeof(x265_param)) /* do not use */
if (api->sizeof_picture != sizeof(x265_picture)) /* do not use */
if (api->sizeof_stats != sizeof(x265_stats)) /* do not use */
if (api->sizeof_zone != sizeof(x265_zone)) /* do not use */
etc.
Note that if your application does not directly allocate or dereference
one of these structures, if it treats the structure as opaque or does
not use it at all, then it can skip the size check for that structure.
In particular, if your application uses api->param_alloc(),
api->param_free(), api->param_parse(), etc and never directly accesses
any x265_param fields, then it can skip the check on the
sizeof(x265_parm) and thereby ignore changes to that structure (which
account for a large percentage of X265_BUILD bumps).
Build Implications
------------------
By default libx265 will place all of its internal C++ classes and
functions within an x265 namespace and export all of the C functions
documented in this file. Obviously this prevents 8bit and 10bit builds
of libx265 from being statically linked into a single binary, all of
those symbols would collide.
However, if you set the EXPORT_C_API cmake option to OFF then libx265
will use a bit-depth specific namespace and prefix for its assembly
functions (x265_8bit, x265_10bit or x265_12bit) and export no C
functions.
In this way you can build one or more libx265 libraries without any
exported C interface and link them into a libx265 build that does export
a C interface. The build which exported the C functions becomes the
*default* bit depth for the combined library, and the other bit depths
are available via the bit-depth introspection methods.
.. Note::
When setting EXPORT_C_API cmake option to OFF, it is recommended to
also set ENABLE_SHARED and ENABLE_CLI to OFF to prevent build
problems. We only need the static library from these builds.
If an application requests a bit-depth that is not supported by the
default library or any of the additionally linked libraries, the
introspection method will fall-back to an attempt to dynamically bind a
shared library with a name appropriate for the requested bit-depth::
8-bit: libx265_main
10-bit: libx265_main10
12-bit: libx265_main12
If the profile-named library is not found, it will then try to bind a
generic libx265 in the hopes that it is a multilib library with all bit
depths.
Packaging and Distribution
--------------------------
We recommend that packagers distribute a single combined shared/static
library build which includes all the bit depth libraries linked
together. See the multilib scripts in our :file:`build/` subdirectories
for examples of how to affect these combined library builds. It is the
packager's discretion which bit-depth exports the public C functions and
thus becomes the default bit-depth for the combined library.
.. Note::
Windows packagers might want to build libx265 with WINXP_SUPPORT
enabled. This makes the resulting binaries functional on XP and
Vista. Without this flag, the minimum supported host O/S is Windows
7. Also note that binaries built with WINXP_SUPPORT will *not* have
NUMA support and they will have slightly less performance.
STATIC_LINK_CRT is also recommended so end-users will not need to
install any additional MSVC C runtime libraries.

1770
x265/doc/reST/cli.rst Normal file

File diff suppressed because it is too large Load diff

26
x265/doc/reST/conf.py Normal file
View file

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
#
# -- General configuration -----------------------------------------------------
source_suffix = '.rst'
# Name of the master file
master_doc = 'index'
# General information about the project.
project = u'x265'
# This is the Copyright Information that will appear on the bottom of the document
copyright = u'2014 MulticoreWare Inc'
# -- Options for HTML output ---------------------------------------------------
html_theme = "default"
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'libx265', 'Full x265 Documentation',
['MulticoreWare Inc'], 3),
('x265', 'x265', 'x265 CLI Documentation',
['MulticoreWare Inc'], 1)
]

11
x265/doc/reST/index.rst Normal file
View file

@ -0,0 +1,11 @@
x265 Documentation
======================
.. toctree::
:maxdepth: 2
introduction
cli
api
threading
presets
lossless

View file

@ -0,0 +1,82 @@
************
Introduction
************
Increasing demand for high definition and ultra-high definition video,
along with an increasing desire for video on demand has led to
exponential growth in demand for bandwidth and storage requirements.
These challenges can be met by the new High Efficiency Video Coding
(HEVC) standard, also known as H.265. The x265 HEVC encoder project was
launched by MulticoreWare in 2013, aiming to provide the most efficient,
highest performance HEVC video encoder.
About HEVC
==========
The High Efficiency Video Coding (HEVC) was developed by the ISO/IEC
Moving Picture Experts Group (MPEG) and ITU-T Video Coding Experts Group
(VCEG), through their Joint Collaborative Team on Video Coding (JCT-VC).
HEVC is also known as ISO/IEC 23008-2 MPEG-H Part 2 and ITU-T H.265.
HEVC provides superior video quality and up to twice the data
compression as the previous standard (H.264/MPEG-4 AVC). HEVC can
support 8K Ultra High Definition video, with a picture size up to
8192x4320 pixels.
About x265
==========
The primary objective of x265 is to become the best H.265/HEVC encoder
available anywhere, offering the highest compression efficiency and the
highest performance on a wide variety of hardware platforms. The x265
encoder is available as an open source library, published under the
GPLv2 license. It is also available under a commercial license, enabling
commercial companies to utilize and distribute x265 in their solutions
without being subject to the restrictions of the GPL license.
x265 is developed by `MulticoreWare <http://www.multicorewareinc.com>`_,
leaders in high performance software solutions, with backing from
leading video technology providers including `Telestream
<http://www.telestream.com>`_ and `Doremi Labs
<http://www.doremilabs.com>`_ (and other companies who want to remain
anonymous at this time), and with contributions from open source
developers. x265 leverages many of the outstanding video encoding
features and optimizations from the x264 AVC encoder project.
The x265 software is available for free under the GNU GPL 2 license,
from https://bitbucket.org/multicoreware/x265. For commercial companies
that wish to distribute x265 without being subject to the open source
requirements of the GPL 2 license, commercial licenses are available
with competitive terms. Contact license @ x265.com to inquire about
commercial license terms.
While x265 is primarily designed as a video encoder software library, a
command-line executable is provided to facilitate testing and
development. We expect x265 to be utilized in many leading video
hardware and software products and services in the coming months.
LEGAL NOTICES
=============
The x265 software is owned and copyrighted by MulticoreWare, Inc.
MulticoreWare is committed to offering the x265 software under the GNU
GPL v2 license. Companies who do not wish to integrate the x265
Software in their products under the terms of the GPL license can
contact MulticoreWare (license @ x265.com) to obtain a commercial
license agreement. Companies who use x265 under the GPL may also wish
to work with MulticoreWare to accelerate the development of specific
features or optimized support for specific hardware or software
platforms, or to contract for support.
The GNU GPL v2 license or the x265 commercial license agreement govern
your rights to access the copyrighted x265 software source code, but do
not cover any patents that may be applicable to the function of binary
executable software created from the x265 source code. You are
responsible for understanding the laws in your country, and for
licensing all applicable patent rights needed for use or distribution of
software applications created from the x265 source code. A good place
to start is with the `Motion Picture Experts Group - Licensing Authority
- HEVC Licensing Program <http://www.mpegla.com/main/PID/HEVC/default.aspx>`_.
x265 is a registered trademark of MulticoreWare, Inc. The x265 logo is
a trademark of MulticoreWare, and may only be used with explicit written
permission. All rights reserved.

162
x265/doc/reST/lossless.rst Normal file
View file

@ -0,0 +1,162 @@
Lossless
--------
Lossless Encoding
=================
x265 can encode HEVC bitstreams that are entirely lossless (the
reconstructed images are bit-exact to the source images) by using the
:option:`--lossless` option. Lossless operation is theoretically
simple. Rate control, by definition, is disabled and the encoder
disables all quality metrics since they would only waste CPU cycles.
Instead, x265 reports only a compression factor at the end of the
encode.
In HEVC, lossless coding means bypassing both the DCT transforms and
bypassing quantization (often referred to as transquant bypass). Normal
predictions are still allowed, so the encoder will find optimal inter or
intra predictions and then losslessly code the residual (with transquant
bypass).
All :option:`--preset` options are capable of generating lossless video
streams, but in general the slower the preset the better the compression
ratio (and the slower the encode). Here are some examples::
./x265 ../test-720p.y4m o.bin --preset ultrafast --lossless
... <snip> ...
encoded 721 frames in 238.38s (3.02 fps), 57457.94 kb/s
./x265 ../test-720p.y4m o.bin --preset faster --lossless
... <snip> ...
x265 [info]: lossless compression ratio 3.11::1
encoded 721 frames in 258.46s (2.79 fps), 56787.65 kb/s
./x265 ../test-720p.y4m o.bin --preset slow --lossless
... <snip> ...
x265 [info]: lossless compression ratio 3.36::1
encoded 721 frames in 576.73s (1.25 fps), 52668.25 kb/s
./x265 ../test-720p.y4m o.bin --preset veryslow --lossless
x265 [info]: lossless compression ratio 3.76::1
encoded 721 frames in 6298.22s (0.11 fps), 47008.65 kb/s
.. Note::
In HEVC, only QP=4 is truly lossless quantization, and thus when
encoding losslesly x265 uses QP=4 internally in its RDO decisions.
Near-lossless Encoding
======================
Near-lossless conditions are a quite a bit more interesting. Normal ABR
rate control will allow one to scale the bitrate up to the point where
quantization is entirely bypassed (QP <= 4), but even at this point
there is a lot of SSIM left on the table because of the DCT transforms,
which are not lossless::
./x265 ../test-720p.y4m o.bin --preset medium --bitrate 40000 --ssim
encoded 721 frames in 326.62s (2.21 fps), 39750.56 kb/s, SSIM Mean Y: 0.9990703 (30.317 dB)
./x265 ../test-720p.y4m o.bin --preset medium --bitrate 50000 --ssim
encoded 721 frames in 349.27s (2.06 fps), 44326.84 kb/s, SSIM Mean Y: 0.9994134 (32.316 dB)
./x265 ../test-720p.y4m o.bin --preset medium --bitrate 60000 --ssim
encoded 721 frames in 360.04s (2.00 fps), 45394.50 kb/s, SSIM Mean Y: 0.9994823 (32.859 dB)
For the encoder to get over this quality plateau, one must enable
lossless coding at the CU level with :option:`--cu-lossless`. It tells
the encoder to evaluate trans-quant bypass as a coding option for each
CU, and to pick the option with the best rate-distortion
characteristics.
The :option:`--cu-lossless` option is very expensive, computationally,
and it only has a positive effect when the QP is extremely low, allowing
RDO to spend a large amount of bits to make small improvements to
quality. So this option should only be enabled when you are encoding
near-lossless bitstreams::
./x265 ../test-720p.y4m o.bin --preset medium --bitrate 40000 --ssim --cu-lossless
encoded 721 frames in 500.51s (1.44 fps), 40017.10 kb/s, SSIM Mean Y: 0.9997790 (36.557 dB)
./x265 ../test-720p.y4m o.bin --preset medium --bitrate 50000 --ssim --cu-lossless
encoded 721 frames in 524.60s (1.37 fps), 46083.37 kb/s, SSIM Mean Y: 0.9999432 (42.456 dB)
./x265 ../test-720p.y4m o.bin --preset medium --bitrate 60000 --ssim --cu-lossless
encoded 721 frames in 523.63s (1.38 fps), 46552.92 kb/s, SSIM Mean Y: 0.9999489 (42.917 dB)
.. Note::
It is not unusual for bitrate to drop as you increase lossless coding.
Having "perfectly coded" reference blocks reduces residual in later
frames. It is quite possible for a near-lossless encode to spend
more bits than a lossless encode.
Enabling psycho-visual rate distortion will improve lossless coding.
:option:`--psy-rd` influences the RDO decisions in favor of energy
(detail) preservation over bit cost and results in more blocks being
losslessly coded. Our psy-rd feature is not yet assembly optimized, so
this makes the encodes run even slower::
./x265 ../test-720p.y4m o.bin --preset medium --bitrate 40000 --ssim --cu-lossless --psy-rd 1.0
encoded 721 frames in 581.83s (1.24 fps), 40112.15 kb/s, SSIM Mean Y: 0.9998632 (38.638 dB)
./x265 ../test-720p.y4m o.bin --preset medium --bitrate 50000 --ssim --cu-lossless --psy-rd 1.0
encoded 721 frames in 587.54s (1.23 fps), 46284.55 kb/s, SSIM Mean Y: 0.9999663 (44.721 dB)
./x265 ../test-720p.y4m o.bin --preset medium --bitrate 60000 --ssim --cu-lossless --psy-rd 1.0
encoded 721 frames in 592.93s (1.22 fps), 46839.51 kb/s, SSIM Mean Y: 0.9999707 (45.334 dB)
:option:`--cu-lossless` will also be more effective at slower
presets which perform RDO at more levels and thus may find smaller
blocks that would benefit from lossless coding::
./x265 ../test-720p.y4m o.bin --preset veryslow --bitrate 40000 --ssim --cu-lossless
encoded 721 frames in 12969.25s (0.06 fps), 37331.96 kb/s, SSIM Mean Y: 0.9998108 (37.231 dB)
./x265 ../test-720p.y4m o.bin --preset veryslow --bitrate 50000 --ssim --cu-lossless
encoded 721 frames in 46217.84s (0.05 fps), 42976.28 kb/s, SSIM Mean Y: 0.9999482 (42.856 dB)
./x265 ../test-720p.y4m o.bin --preset veryslow --bitrate 60000 --ssim --cu-lossless
encoded 721 frames in 13738.17s (0.05 fps), 43864.21 kb/s, SSIM Mean Y: 0.9999633 (44.348 dB)
And with psy-rd and a slow preset together, very high SSIMs are
possible::
./x265 ../test-720p.y4m o.bin --preset veryslow --bitrate 40000 --ssim --cu-lossless --psy-rd 1.0
encoded 721 frames in 11675.81s (0.06 fps), 37819.45 kb/s, SSIM Mean Y: 0.9999181 (40.867 dB)
./x265 ../test-720p.y4m o.bin --preset veryslow --bitrate 50000 --ssim --cu-lossless --psy-rd 1.0
encoded 721 frames in 12414.56s (0.06 fps), 42815.75 kb/s, SSIM Mean Y: 0.9999758 (46.168 dB)
./x265 ../test-720p.y4m o.bin --preset veryslow --bitrate 60000 --ssim --cu-lossless --psy-rd 1.0
encoded 721 frames in 11684.89s (0.06 fps), 43324.48 kb/s, SSIM Mean Y: 0.9999793 (46.835 dB)
It's important to note in the end that it is easier (less work) for the
encoder to encode the video losslessly than it is to encode it
near-losslessly. If the encoder knows up front the encode must be
lossless, it does not need to evaluate any lossy coding methods. The
encoder only needs to find the most efficient prediction for each block
and then entropy code the residual.
It is not feasible for :option:`--cu-lossless` to turn itself on when
the encoder determines it is encoding a near-lossless bitstream (ie:
when rate control nearly disables all quantization) because the feature
requires a flag to be enabled in the stream headers. At the time the
stream headers are being coded we do not know whether
:option:`--cu-lossless` would be a help or a hinder. If very few or no
blocks end up being coded as lossless, then having the feature enabled
is a net loss in compression efficiency because it adds a flag that must
be coded for every CU. So ignoring even the performance aspects of the
feature, it can be a compression loss if enabled without being used. So
it is up to the user to only enable this feature when they are coding at
near-lossless quality.
Transform Skip
==============
A somewhat related feature, :option:`--tskip` tells the encoder to
evaluate transform-skip (bypass DCT but with quantization still enabled)
when coding small 4x4 transform blocks. This feature is intended to
improve the coding efficiency of screen content (aka: text on a screen)
and is not really intended for lossless coding. This feature should
only be enabled if the content has a lot of very sharp edges in it, and
is mostly unrelated to lossless coding.

182
x265/doc/reST/presets.rst Normal file
View file

@ -0,0 +1,182 @@
Preset Options
--------------
.. _presets:
Presets
=======
x265 has a number of predefined :option:`--preset` options that make
trade-offs between encode speed (encoded frames per second) and
compression efficiency (quality per bit in the bitstream). The default
preset is medium, it does a reasonably good job of finding the best
possible quality without spending enormous CPU cycles looking for the
absolute most efficient way to achieve that quality. As you go higher
than medium, the encoder takes shortcuts to improve performance at the
expense of quality and compression efficiency. As you go lower than
medium, the encoder tries harder and harder to achieve the best quailty
per bit compression ratio.
The presets adjust encoder parameters to affect these trade-offs.
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| | ultrafast | superfast | veryfast | faster | fast | medium | slow | slower | veryslow | placebo |
+==============+===========+===========+==========+========+======+========+======+========+==========+=========+
| ctu | 32 | 32 | 32 | 64 | 64 | 64 | 64 | 64 | 64 | 64 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| min-cu-size | 16 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| bframes | 3 | 3 | 4 | 4 | 4 | 4 | 4 | 8 | 8 | 8 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| b-adapt | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| rc-lookahead | 5 | 10 | 15 | 15 | 15 | 20 | 25 | 30 | 40 | 60 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| scenecut | 0 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 | 40 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| refs | 1 | 1 | 1 | 1 | 2 | 3 | 3 | 3 | 5 | 5 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| me | dia | hex | hex | hex | hex | hex | star | star | star | star |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| merange | 57 | 57 | 57 | 57 | 57 | 57 | 57 | 57 | 57 | 92 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| subme | 0 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 4 | 5 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| rect | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| amp | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| max-merge | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 4 | 5 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| early-skip | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| fast-intra | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| b-intra | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| sao | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| signhide | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| weightp | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| weightb | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| aq-mode | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| cuTree | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| rdLevel | 2 | 2 | 2 | 2 | 2 | 3 | 4 | 6 | 6 | 6 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| rdoq-level | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 2 | 2 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| tu-intra | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 3 | 4 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
| tu-inter | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 3 | 4 |
+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
Placebo mode enables transform-skip prediction evaluation.
.. _tunings:
Tuning
======
There are a few :option:`--tune` options available, which are applied
after the preset.
.. Note::
The *psnr* and *ssim* tune options disable all optimizations that
sacrafice metric scores for perceived visual quality (also known as
psycho-visual optimizations). By default x265 always tunes for
highest perceived visual quality but if one intends to measure an
encode using PSNR or SSIM for the purpose of benchmarking, we highly
recommend you configure x265 to tune for that particular metric.
+--------------+-----------------------------------------------------+
| --tune | effect |
+==============+=====================================================+
| psnr | disables adaptive quant, psy-rd, and cutree |
+--------------+-----------------------------------------------------+
| ssim | enables adaptive quant auto-mode, disables psy-rd |
+--------------+-----------------------------------------------------+
| grain | improves retention of film grain. more below |
+--------------+-----------------------------------------------------+
| fastdecode | no loop filters, no weighted pred, no intra in B |
+--------------+-----------------------------------------------------+
| zerolatency | no lookahead, no B frames, no cutree |
+--------------+-----------------------------------------------------+
Film Grain Retention
~~~~~~~~~~~~~~~~~~~~
:option:`--tune` *grain* tries to improve the retention of film grain in
the reconstructed output. It disables rate distortion optimizations in
quantization, and increases the default psy-rd.
* :option:`--psy-rd` 0.5
* :option:`--rdoq-level` 0
* :option:`--psy-rdoq` 0
It lowers the strength of adaptive quantization, so residual energy can
be more evenly distributed across the (noisy) picture:
* :option:`--aq-strength` 0.3
And it similarly tunes rate control to prevent the slice QP from
swinging too wildly from frame to frame:
* :option:`--ipratio` 1.1
* :option:`--pbratio` 1.1
* :option:`--qcomp` 0.8
And lastly it reduces the strength of deblocking to prevent grain being
blurred on block boundaries:
* :option:`--deblock` -2
Fast Decode
~~~~~~~~~~~
:option:`--tune` *fastdecode* disables encoder features which tend to be
bottlenecks for the decoder. It is intended for use with 4K content at
high bitrates which can cause decoders to struggle. It disables both
HEVC loop filters, which tend to be process bottlenecks:
* :option:`--no-deblock`
* :option:`--no-sao`
It disables weighted prediction, which tend to be bandwidth bottlenecks:
* :option:`--no-weightp`
* :option:`--no-weightb`
And it disables intra blocks in B frames with :option:`--no-b-intra`
since intra predicted blocks cause serial dependencies in the decoder.
Zero Latency
~~~~~~~~~~~~
There are two halves to the latency problem. There is latency at the
decoder and latency at the encoder. :option:`--tune` *zerolatency*
removes latency from both sides. The decoder latency is removed by:
* :option:`--bframes` 0
Encoder latency is removed by:
* :option:`--b-adapt` 0
* :option:`--rc-lookahead` 0
* :option:`--no-scenecut`
* :option:`--no-cutree`
* :option:`--frame-threads` 1
With all of these settings x265_encoder_encode() will run synchronously,
the picture passed as pic_in will be encoded and returned as NALs. These
settings disable frame parallelism, which is an important component for
x265 performance. If you can tolerate any latency on the encoder, you
can increase performance by increasing the number of frame threads. Each
additional frame thread adds one frame of latency.

266
x265/doc/reST/threading.rst Normal file
View file

@ -0,0 +1,266 @@
*********
Threading
*********
.. _pools:
Thread Pools
============
x265 creates one or more thread pools per encoder, one pool per NUMA
node (typically a CPU socket). :option:`--pools` specifies the number of
pools and the number of threads per pool the encoder will allocate. By
default x265 allocates one thread per (hyperthreaded) CPU core on each
NUMA node.
If you are running multiple encoders on a system with multiple NUMA
nodes, it is recommended to isolate each of them to a single node in
order to avoid the NUMA overhead of remote memory access.
Work distribution is job based. Idle worker threads scan the job
providers assigned to their thread pool for jobs to perform. When no
jobs are available, the idle worker threads block and consume no CPU
cycles.
Objects which desire to distribute work to worker threads are known as
job providers (and they derive from the JobProvider class). The thread
pool has a method to **poke** awake a blocked idle thread, and job
providers are recommended to call this method when they make new jobs
available.
Worker jobs are not allowed to block except when absolutely necessary
for data locking. If a job becomes blocked, the work function is
expected to drop that job so the worker thread may go back to the pool
and find more work.
On Windows, the native APIs offer sufficient functionality to discover
the NUMA topology and enforce the thread affinity that libx265 needs (so
long as you have not chosen to target XP or Vista), but on POSIX systems
it relies on libnuma for this functionality. If your target POSIX system
is single socket, then building without libnuma is a perfectly
reasonable option, as it will have no effect on the runtime behavior. On
a multiple-socket system, a POSIX build of libx265 without libnuma will
be less work efficient, but will still function correctly. You lose the
work isolation effect that keeps each frame encoder from only using the
threads of a single socket and so you incur a heavier context switching
cost.
Wavefront Parallel Processing
=============================
New with HEVC, Wavefront Parallel Processing allows each row of CTUs to
be encoded in parallel, so long as each row stays at least two CTUs
behind the row above it, to ensure the intra references and other data
of the blocks above and above-right are available. WPP has almost no
effect on the analysis and compression of each CTU and so it has a very
small impact on compression efficiency relative to slices or tiles. The
compression loss from WPP has been found to be less than 1% in most of
our tests.
WPP has three effects which can impact efficiency. The first is the row
starts must be signaled in the slice header, the second is each row must
be padded to an even byte in length, and the third is the state of the
entropy coder is transferred from the second CTU of each row to the
first CTU of the row below it. In some conditions this transfer of
state actually improves compression since the above-right state may have
better locality than the end of the previous row.
Parabola Research have published an excellent HEVC
`animation <http://www.parabolaresearch.com/blog/2013-12-01-hevc-wavefront-animation.html>`_
which visualizes WPP very well. It even correctly visualizes some of
WPPs key drawbacks, such as:
1. the low thread utilization at the start and end of each frame
2. a difficult block may stall the wave-front and it takes a while for
the wave-front to recover.
3. 64x64 CTUs are big! there are much fewer rows than with H.264 and
similar codecs
Because of these stall issues you rarely get the full parallelisation
benefit one would expect from row threading. 30% to 50% of the
theoretical perfect threading is typical.
In x265 WPP is enabled by default since it not only improves performance
at encode but it also makes it possible for the decoder to be threaded.
If WPP is disabled by :option:`--no-wpp` the frame will be encoded in
scan order and the entropy overheads will be avoided. If frame
threading is not disabled, the encoder will change the default frame
thread count to be higher than if WPP was enabled. The exact formulas
are described in the next section.
Bonded Task Groups
==================
If a worker thread job has work which can be performed in parallel by
many threads, it may allocate a bonded task group and enlist the help of
other idle worker threads from the same thread pool. Those threads will
cooperate to complete the work of the bonded task group and then return
to their idle states. The larger and more uniform those tasks are, the
better the bonded task group will perform.
Parallel Mode Analysis
~~~~~~~~~~~~~~~~~~~~~~
When :option:`--pmode` is enabled, each CU (at all depths from 64x64 to
8x8) will distribute its analysis work to the thread pool via a bonded
task group. Each analysis job will measure the cost of one prediction
for the CU: merge, skip, intra, inter (2Nx2N, Nx2N, 2NxN, and AMP).
At slower presets, the amount of increased parallelism from pmode is
often enough to be able to reduce or disable frame parallelism while
achieving the same overall CPU utilization. Reducing frame threads is
often beneficial to ABR and VBV rate control.
Parallel Motion Estimation
~~~~~~~~~~~~~~~~~~~~~~~~~~
When :option:`--pme` is enabled all of the analysis functions which
perform motion searches to reference frames will distribute those motion
searches to other worker threads via a bonded task group (if more than
two motion searches are required).
Frame Threading
===============
Frame threading is the act of encoding multiple frames at the same time.
It is a challenge because each frame will generally use one or more of
the previously encoded frames as motion references and those frames may
still be in the process of being encoded themselves.
Previous encoders such as x264 worked around this problem by limiting
the motion search region within these reference frames to just one
macroblock row below the coincident row being encoded. Thus a frame
could be encoded at the same time as its reference frames so long as it
stayed one row behind the encode progress of its references (glossing
over a few details).
x265 has the same frame threading mechanism, but we generally have much
less frame parallelism to exploit than x264 because of the size of our
CTU rows. For instance, with 1080p video x264 has 68 16x16 macroblock
rows available each frame while x265 only has 17 64x64 CTU rows.
The second extenuating circumstance is the loop filters. The pixels used
for motion reference must be processed by the loop filters and the loop
filters cannot run until a full row has been encoded, and it must run a
full row behind the encode process so that the pixels below the row
being filtered are available. On top of this, HEVC has two loop filters:
deblocking and SAO, which must be run in series with a row lag between
them. When you add up all the row lags each frame ends up being 3 CTU
rows behind its reference frames (the equivalent of 12 macroblock rows
for x264). And keep in mind the wave-front progression pattern; by the
time the reference frame finishes the third row of CTUs, nearly half of
the CTUs in the frame may be compressed (depending on the display aspect
ratio).
The third extenuating circumstance is that when a frame being encoded
becomes blocked by a reference frame row being available, that frame's
wave-front becomes completely stalled and when the row becomes available
again it can take quite some time for the wave to be restarted, if it
ever does. This makes WPP less effective when frame parallelism is in
use.
:option:`--merange` can have a negative impact on frame parallelism. If
the range is too large, more rows of CTU lag must be added to ensure
those pixels are available in the reference frames.
.. note::
Even though the merange is used to determine the amount of reference
pixels that must be available in the reference frames, the actual
motion search is not necessarily centered around the coincident
block. The motion search is actually centered around the motion
predictor, but the available pixel area (mvmin, mvmax) is determined
by merange and the interpolation filter half-heights.
When frame threading is disabled, the entirety of all reference frames
are always fully available (by definition) and thus the available pixel
area is not restricted at all, and this can sometimes improve
compression efficiency. Because of this, the output of encodes with
frame parallelism disabled will not match the output of encodes with
frame parallelism enabled; but when enabled the number of frame threads
should have no effect on the output bitstream except when using ABR or
VBV rate control or noise reduction.
When :option:`--nr` is enabled, the outputs of each number of frame threads
will be deterministic but none of them will match becaue each frame
encoder maintains a cumulative noise reduction state.
VBV introduces non-determinism in the encoder, at this point in time,
regardless of the amount of frame parallelism.
By default frame parallelism and WPP are enabled together. The number of
frame threads used is auto-detected from the (hyperthreaded) CPU core
count, but may be manually specified via :option:`--frame-threads`
+-------+--------+
| Cores | Frames |
+=======+========+
| > 32 | 6..8 |
+-------+--------+
| >= 16 | 5 |
+-------+--------+
| >= 8 | 3 |
+-------+--------+
| >= 4 | 2 |
+-------+--------+
If WPP is disabled, then the frame thread count defaults to **min(cpuCount, ctuRows / 2)**
Over-allocating frame threads can be very counter-productive. They
each allocate a large amount of memory and because of the limited number
of CTU rows and the reference lag, you generally get limited benefit
from adding frame encoders beyond the auto-detected count, and often
the extra frame encoders reduce performance.
Given these considerations, you can understand why the faster presets
lower the max CTU size to 32x32 (making twice as many CTU rows available
for WPP and for finer grained frame parallelism) and reduce
:option:`--merange`
Each frame encoder runs in its own thread (allocated separately from the
worker pool). This frame thread has some pre-processing responsibilities
and some post-processing responsibilities for each frame, but it spends
the bulk of its time managing the wave-front processing by making CTU
rows available to the worker threads when their dependencies are
resolved. The frame encoder threads spend nearly all of their time
blocked in one of 4 possible locations:
1. blocked, waiting for a frame to process
2. blocked on a reference frame, waiting for a CTU row of reconstructed
and loop-filtered reference pixels to become available
3. blocked waiting for wave-front completion
4. blocked waiting for the main thread to consume an encoded frame
Lookahead
=========
The lookahead module of x265 (the lowres pre-encode which determines
scene cuts and slice types) uses the thread pool to distribute the
lowres cost analysis to worker threads. It will use bonded task groups
to perform batches of frame cost estimates, and it may optionally use
bonded task groups to measure single frame cost estimates using slices.
(see :option:`--lookahead-slices`)
The main slicetypeDecide() function itself is also performed by a worker
thread if your encoder has a thread pool, else it runs within the
context of the thread which calls the x265_encoder_encode().
SAO
===
The Sample Adaptive Offset loopfilter has a large effect on encode
performance because of the peculiar way it must be analyzed and coded.
SAO flags and data are encoded at the CTU level before the CTU itself is
coded, but SAO analysis (deciding whether to enable SAO and with what
parameters) cannot be performed until that CTU is completely analyzed
(reconstructed pixels are available) as well as the CTUs to the right
and below. So in effect the encoder must perform SAO analysis in a
wavefront at least a full row behind the CTU compression wavefront.
This extra latency forces the encoder to save the encode data of every
CTU until the entire frame has been analyzed, at which point a function
can code the final slice bitstream with the decided SAO flags and data
interleaved between each CTU. This second pass over the CTUs can be
expensive, particularly at large resolutions and high bitrates.

49
x265/doc/reST/x265.rst Normal file
View file

@ -0,0 +1,49 @@
x265 CLI Documentation
######################
SYNOPSIS
========
**x265** [options] infile [-o] outfile
Bit depth: 8
**x265-10bit** [options] infile [-o] outfile
Bit depth: 10
infile can be YUV or Y4M
outfile is raw HEVC bitstream
DESCRIPTION
===========
.. toctree::
:maxdepth: 2
introduction
OPTIONS
=======
.. toctree::
:maxdepth: 2
cli
presets
lossless
SEE ALSO
========
**libx265**\(3)
Online documentation: http://x265.readthedocs.org/en/default/cli.html

View file

@ -0,0 +1,232 @@
align_func_params=true
align_keep_tabs=false
align_left_shift=true
align_mix_var_proto=false
align_nl_cont=false
align_number_left=false
align_oc_decl_colon=false
align_on_operator=false
align_on_tabstop=false
align_right_cmt_mix=false
align_single_line_brace=false
align_single_line_func=false
align_var_def_attribute=false
align_var_def_colon=false
align_var_def_inline=false
align_with_tabs=false
cmt_c_group=true
cmt_c_nl_end=false
cmt_c_nl_start=true
cmt_cpp_group=true
cmt_cpp_nl_end=false
cmt_cpp_nl_start=false
cmt_cpp_to_c=false
cmt_indent_multi=false
cmt_insert_before_preproc=false
cmt_multi_check_last=true
cmt_reflow_mode=1
cmt_sp_before_star_cont=0
cmt_star_cont=true
cmt_width=130
#code_width=130
eat_blanks_after_open_brace=true
eat_blanks_before_close_brace=true
indent_access_spec_body=false
indent_align_assign=false
indent_align_string=false
indent_bool_paren=false
indent_brace_parent=false
indent_braces=false
indent_braces_no_class=false
indent_braces_no_func=false
indent_braces_no_struct=false
indent_class=true
indent_class_colon=false
indent_cmt_with_tabs=false
indent_col1_comment=false
indent_columns=4
indent_comma_paren=false
indent_else_if=false
indent_extern=false
indent_first_bool_expr=false
indent_func_call_param=false
indent_func_class_param=false
indent_func_ctor_var_param=false
indent_func_def_param=false
indent_func_param_double=false
indent_func_proto_param=false
indent_namespace=false
indent_paren_nl=false
indent_preserve_sql=false
indent_relative_single_line_comments=false
indent_square_nl=false
indent_template_param=false
indent_var_def_cont=false
indent_with_tabs=0
input_tab_size=2
ls_for_split_full=true
ls_func_split_full=true
mod_add_long_ifdef_else_comment=10
mod_add_long_ifdef_endif_comment=10
mod_full_brace_do=add
mod_full_brace_for=add
mod_full_brace_if=ignore
mod_full_brace_if_chain=false
mod_full_brace_while=add
mod_full_paren_if_bool=false
mod_move_case_break=false
mod_paren_on_return=remove
mod_pawn_semicolon=false
mod_remove_empty_return=true
mod_remove_extra_semicolon=true
mod_sort_import=false
mod_sort_include=false
mod_sort_using=false
newlines=lf
nl_after_access_spec=2
#nl_after_brace_close=ignore
#nl_after_brace_open=ignore
nl_after_brace_open_cmt=true
nl_after_case=false
nl_after_class=2
nl_after_for=add
nl_after_func_body=2
nl_after_func_body_one_liner=2
nl_after_if=ignore
nl_after_multiline_comment=true
nl_after_return=false
nl_after_semicolon=true
nl_after_struct=2
nl_after_switch=add
nl_after_vbrace_close=false
nl_after_vbrace_open=false
nl_after_vbrace_open_empty=false
nl_after_while=add
nl_assign_brace=add
nl_assign_leave_one_liners=true
nl_before_access_spec=2
nl_before_block_comment=2
nl_before_case=false
nl_brace_else=add
nl_brace_while=add
nl_case_colon_brace=add
nl_class_brace=add
nl_class_init_args=ignore
nl_class_leave_one_liners=true
nl_collapse_empty_body=false
nl_create_for_one_liner=false
nl_create_if_one_liner=false
nl_create_while_one_liner=false
nl_define_macro=false
nl_do_brace=add
nl_ds_struct_enum_close_brace=false
nl_ds_struct_enum_cmt=false
nl_else_brace=add
nl_else_if=remove
nl_elseif_brace=add
nl_end_of_file=add
nl_end_of_file_min=1
nl_enum_brace=add
nl_enum_leave_one_liners=true
nl_fdef_brace=add
nl_for_brace=add
nl_func_decl_end=remove
nl_func_decl_start=remove
nl_func_def_paren=remove
nl_func_def_start=remove
nl_func_leave_one_liners=true
nl_func_paren=remove
nl_func_proto_type_name=remove
nl_func_type_name=remove
nl_func_type_name_class=remove
nl_func_var_def_blk=2
nl_getset_leave_one_liners=true
nl_if_brace=add
nl_if_leave_one_liners=true
nl_max=2
nl_multi_line_cond=false
nl_multi_line_define=false
nl_namespace_brace=remove
nl_return_expr=remove
nl_squeeze_ifdef=false
nl_start_of_file=remove
nl_struct_brace=add
nl_switch_brace=add
nl_template_class=add
nl_while_brace=add
pp_define_at_level=false
pp_if_indent_code=false
pp_indent=remove
pp_indent_at_level=false
pp_region_indent_code=false
sp_addr=remove
sp_after_angle=remove
sp_after_cast=remove
sp_after_class_colon=add
sp_after_comma=add
sp_after_dc=remove
sp_after_new=add
sp_after_operator=add
sp_after_operator_sym=remove
sp_after_type=ignore
sp_angle_paren=remove
sp_angle_word=add
sp_arith=add
sp_assign=add
sp_assign_default=add
sp_attribute_paren=remove
sp_balance_nested_parens=false
sp_before_angle=remove
sp_before_case_colon=remove
sp_before_class_colon=add
sp_before_comma=remove
sp_before_dc=remove
sp_before_nl_cont=add
sp_before_semi=remove
sp_before_semi_for=remove
sp_before_semi_for_empty=remove
sp_before_sparen=add
sp_before_square=remove
sp_before_squares=ignore
sp_before_tr_emb_cmt=add
sp_bool=add
sp_brace_else=add
sp_cmt_cpp_start=ignore
sp_compare=add
sp_cond_colon=add
sp_cond_question=add
sp_cpp_cast_paren=remove
sp_defined_paren=remove
sp_deref=remove
sp_else_brace=add
sp_endif_cmt=add
sp_enum_assign=add
sp_fparen_brace=add
sp_func_call_paren=remove
sp_func_class_paren=remove
sp_func_def_paren=remove
sp_func_proto_paren=remove
sp_incdec=remove
sp_inside_angle=remove
sp_inside_braces=add
#sp_inside_braces_empty=remove
sp_inside_fparen=remove
sp_inside_fparens=remove
sp_inside_paren=remove
sp_inside_paren_cast=remove
sp_inside_sparen=remove
sp_inside_square=remove
sp_inv=remove
sp_member=remove
sp_not=remove
sp_paren_brace=add
sp_paren_paren=remove
sp_pp_concat=add
sp_sign=remove
sp_sizeof_paren=remove
sp_special_semi=ignore
sp_template_angle=remove
tok_split_gte=false
utf8_bom=remove
utf8_byte=false
utf8_force=false