forked from mirror/libbpg
libbpg-0.9.6
This commit is contained in:
parent
3035b41edf
commit
35a8402710
248 changed files with 232891 additions and 100 deletions
561
x265/doc/intra/intra-16x16.txt
Normal file
561
x265/doc/intra/intra-16x16.txt
Normal 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, *
|
1089
x265/doc/intra/intra-32x32.txt
Normal file
1089
x265/doc/intra/intra-32x32.txt
Normal file
File diff suppressed because it is too large
Load diff
166
x265/doc/intra/intra-4x4.txt
Normal file
166
x265/doc/intra/intra-4x4.txt
Normal 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, *
|
||||
|
298
x265/doc/intra/intra-8x8.txt
Normal file
298
x265/doc/intra/intra-8x8.txt
Normal 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
109
x265/doc/reST/Makefile
Normal 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
511
x265/doc/reST/api.rst
Normal 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
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
26
x265/doc/reST/conf.py
Normal 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
11
x265/doc/reST/index.rst
Normal file
|
@ -0,0 +1,11 @@
|
|||
x265 Documentation
|
||||
======================
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
introduction
|
||||
cli
|
||||
api
|
||||
threading
|
||||
presets
|
||||
lossless
|
82
x265/doc/reST/introduction.rst
Normal file
82
x265/doc/reST/introduction.rst
Normal 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
162
x265/doc/reST/lossless.rst
Normal 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
182
x265/doc/reST/presets.rst
Normal 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
266
x265/doc/reST/threading.rst
Normal 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
49
x265/doc/reST/x265.rst
Normal 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
|
||||
|
232
x265/doc/uncrustify/codingstyle.cfg
Normal file
232
x265/doc/uncrustify/codingstyle.cfg
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue