Changes to scan order neighbors -Fix some bugs in row_scan and col_scan. In some cases, the above or left neighbor was not considered even though it is available. -When above or left neighbor is not available, try using the top-left, top-right or bottom-left neighbor. Compression improvement: lowres 0.20% midres 0.16% hdres 0.20% Change-Id: If521665589c7f29277b8e9223f21f4a8bf3fef39
diff --git a/vp10/common/scan.c b/vp10/common/scan.c index a2eb6d5..9fef038 100644 --- a/vp10/common/scan.c +++ b/vp10/common/scan.c
@@ -793,7 +793,7 @@ // -1 indicates the neighbor does not exist. DECLARE_ALIGNED(16, static const int16_t, default_scan_4x4_neighbors[17 * MAX_NEIGHBORS]) = { - 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 1, 1, + 0, 0, 0, 0, 4, 0, 1, 4, 4, 5, 5, 1, 8, 8, 5, 8, 2, 2, 2, 5, 9, 12, 6, 9, 3, 6, 10, 13, 7, 10, 11, 14, 0, 0, }; @@ -814,31 +814,31 @@ DECLARE_ALIGNED(16, static const int16_t, col_scan_4x4_neighbors[17 * MAX_NEIGHBORS]) = { - 0, 0, 0, 0, 4, 4, 0, 0, 8, 8, 1, 1, - 5, 5, 1, 1, 9, 9, 2, 2, 6, 6, 2, 2, - 3, 3, 10, 10, 7, 7, 11, 11, 0, 0, + 0, 0, 0, 0, 4, 4, 4, 0, 8, 8, 1, 4, + 5, 8, 5, 1, 9, 12, 2, 5, 6, 9, 6, 2, + 3, 6, 10, 13, 7, 10, 11, 14, 0, 0, }; DECLARE_ALIGNED(16, static const int16_t, row_scan_4x4_neighbors[17 * MAX_NEIGHBORS]) = { - 0, 0, 0, 0, 0, 0, 1, 1, 4, 4, 2, 2, - 5, 5, 4, 4, 8, 8, 6, 6, 8, 8, 9, 9, - 12, 12, 10, 10, 13, 13, 14, 14, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 4, 2, 2, + 2, 5, 4, 5, 5, 8, 3, 6, 8, 9, 6, 9, + 9, 12, 7, 10, 10, 13, 11, 14, 0, 0, }; DECLARE_ALIGNED(16, static const int16_t, col_scan_8x8_neighbors[65 * MAX_NEIGHBORS]) = { - 0, 0, 0, 0, 8, 8, 0, 0, 16, 16, 1, 1, - 24, 24, 9, 9, 1, 1, 32, 32, 17, 17, 2, 2, - 25, 25, 10, 10, 40, 40, 2, 2, 18, 18, 33, 33, - 3, 3, 48, 48, 11, 11, 26, 26, 3, 3, 41, 41, - 19, 19, 34, 34, 4, 4, 27, 27, 12, 12, 49, 49, - 42, 42, 20, 20, 4, 4, 35, 35, 5, 5, 28, 28, - 50, 50, 43, 43, 13, 13, 36, 36, 5, 5, 21, 21, - 51, 51, 29, 29, 6, 6, 44, 44, 14, 14, 6, 6, - 37, 37, 52, 52, 22, 22, 7, 7, 30, 30, 45, 45, - 15, 15, 38, 38, 23, 23, 53, 53, 31, 31, 46, 46, - 39, 39, 54, 54, 47, 47, 55, 55, 0, 0, + 0, 0, 0, 0, 8, 8, 8, 0, 16, 16, 1, 8, + 24, 24, 9, 16, 9, 1, 32, 32, 17, 24, 2, 9, + 25, 32, 10, 17, 40, 40, 10, 2, 18, 25, 33, 40, + 3, 10, 48, 48, 11, 18, 26, 33, 11, 3, 41, 48, + 19, 26, 34, 41, 4, 11, 27, 34, 12, 19, 49, 56, + 42, 49, 20, 27, 12, 4, 35, 42, 5, 12, 28, 35, + 50, 57, 43, 50, 13, 20, 36, 43, 13, 5, 21, 28, + 51, 58, 29, 36, 6, 13, 44, 51, 14, 21, 14, 6, + 37, 44, 52, 59, 22, 29, 7, 14, 30, 37, 45, 52, + 15, 22, 38, 45, 23, 30, 53, 60, 31, 38, 46, 53, + 39, 46, 54, 61, 47, 54, 55, 62, 0, 0, }; #if CONFIG_EXT_TX @@ -867,27 +867,27 @@ DECLARE_ALIGNED(16, static const int16_t, row_scan_8x8_neighbors[65 * MAX_NEIGHBORS]) = { - 0, 0, 0, 0, 1, 1, 0, 0, 8, 8, 2, 2, - 8, 8, 9, 9, 3, 3, 16, 16, 10, 10, 16, 16, - 4, 4, 17, 17, 24, 24, 11, 11, 18, 18, 25, 25, - 24, 24, 5, 5, 12, 12, 19, 19, 32, 32, 26, 26, - 6, 6, 33, 33, 32, 32, 20, 20, 27, 27, 40, 40, - 13, 13, 34, 34, 40, 40, 41, 41, 28, 28, 35, 35, - 48, 48, 21, 21, 42, 42, 14, 14, 48, 48, 36, 36, - 49, 49, 43, 43, 29, 29, 56, 56, 22, 22, 50, 50, - 57, 57, 44, 44, 37, 37, 51, 51, 30, 30, 58, 58, - 52, 52, 45, 45, 59, 59, 38, 38, 60, 60, 46, 46, - 53, 53, 54, 54, 61, 61, 62, 62, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 1, 1, 8, 2, 2, + 8, 9, 2, 9, 3, 3, 9, 16, 3, 10, 16, 17, + 4, 4, 10, 17, 17, 24, 4, 11, 11, 18, 18, 25, + 24, 25, 5, 5, 5, 12, 12, 19, 25, 32, 19, 26, + 6, 6, 26, 33, 32, 33, 13, 20, 20, 27, 33, 40, + 6, 13, 27, 34, 40, 41, 34, 41, 21, 28, 28, 35, + 41, 48, 14, 21, 35, 42, 7, 14, 48, 49, 29, 36, + 42, 49, 36, 43, 22, 29, 49, 56, 15, 22, 43, 50, + 50, 57, 37, 44, 30, 37, 44, 51, 23, 30, 51, 58, + 45, 52, 38, 45, 52, 59, 31, 38, 53, 60, 39, 46, + 46, 53, 47, 54, 54, 61, 55, 62, 0, 0, }; DECLARE_ALIGNED(16, static const int16_t, default_scan_8x8_neighbors[65 * MAX_NEIGHBORS]) = { - 0, 0, 0, 0, 0, 0, 8, 8, 1, 8, 1, 1, - 9, 16, 16, 16, 2, 9, 2, 2, 10, 17, 17, 24, - 24, 24, 3, 10, 3, 3, 18, 25, 25, 32, 11, 18, - 32, 32, 4, 11, 26, 33, 19, 26, 4, 4, 33, 40, - 12, 19, 40, 40, 5, 12, 27, 34, 34, 41, 20, 27, - 13, 20, 5, 5, 41, 48, 48, 48, 28, 35, 35, 42, + 0, 0, 0, 0, 8, 0, 8, 8, 1, 8, 9, 1, + 9, 16, 16, 17, 2, 9, 10, 2, 10, 17, 17, 24, + 24, 25, 3, 10, 11, 3, 18, 25, 25, 32, 11, 18, + 32, 33, 4, 11, 26, 33, 19, 26, 12, 4, 33, 40, + 12, 19, 40, 41, 5, 12, 27, 34, 34, 41, 20, 27, + 13, 20, 13, 5, 41, 48, 48, 49, 28, 35, 35, 42, 21, 28, 6, 6, 6, 13, 42, 49, 49, 56, 36, 43, 14, 21, 29, 36, 7, 14, 43, 50, 50, 57, 22, 29, 37, 44, 15, 22, 44, 51, 51, 58, 30, 37, 23, 30, @@ -1007,130 +1007,130 @@ DECLARE_ALIGNED(16, static const int16_t, col_scan_16x16_neighbors[257 * MAX_NEIGHBORS]) = { - 0, 0, 0, 0, 16, 16, 32, 32, 0, 0, 48, 48, - 1, 1, 64, 64, 17, 17, 80, 80, 33, 33, 1, 1, - 49, 49, 96, 96, 2, 2, 65, 65, 18, 18, 112, 112, - 34, 34, 81, 81, 2, 2, 50, 50, 128, 128, 3, 3, - 97, 97, 19, 19, 66, 66, 144, 144, 82, 82, 35, 35, - 113, 113, 3, 3, 51, 51, 160, 160, 4, 4, 98, 98, - 129, 129, 67, 67, 20, 20, 83, 83, 114, 114, 36, 36, - 176, 176, 4, 4, 145, 145, 52, 52, 99, 99, 5, 5, - 130, 130, 68, 68, 192, 192, 161, 161, 21, 21, 115, 115, - 84, 84, 37, 37, 146, 146, 208, 208, 53, 53, 5, 5, - 100, 100, 177, 177, 131, 131, 69, 69, 6, 6, 224, 224, - 116, 116, 22, 22, 162, 162, 85, 85, 147, 147, 38, 38, - 193, 193, 101, 101, 54, 54, 6, 6, 132, 132, 178, 178, - 70, 70, 163, 163, 209, 209, 7, 7, 117, 117, 23, 23, - 148, 148, 7, 7, 86, 86, 194, 194, 225, 225, 39, 39, - 179, 179, 102, 102, 133, 133, 55, 55, 164, 164, 8, 8, - 71, 71, 210, 210, 118, 118, 149, 149, 195, 195, 24, 24, - 87, 87, 40, 40, 56, 56, 134, 134, 180, 180, 226, 226, - 103, 103, 8, 8, 165, 165, 211, 211, 72, 72, 150, 150, - 9, 9, 119, 119, 25, 25, 88, 88, 196, 196, 41, 41, - 135, 135, 181, 181, 104, 104, 57, 57, 227, 227, 166, 166, - 120, 120, 151, 151, 197, 197, 73, 73, 9, 9, 212, 212, - 89, 89, 136, 136, 182, 182, 10, 10, 26, 26, 105, 105, - 167, 167, 228, 228, 152, 152, 42, 42, 121, 121, 213, 213, - 58, 58, 198, 198, 74, 74, 137, 137, 183, 183, 168, 168, - 10, 10, 90, 90, 229, 229, 11, 11, 106, 106, 214, 214, - 153, 153, 27, 27, 199, 199, 43, 43, 184, 184, 122, 122, - 169, 169, 230, 230, 59, 59, 11, 11, 75, 75, 138, 138, - 200, 200, 215, 215, 91, 91, 12, 12, 28, 28, 185, 185, - 107, 107, 154, 154, 44, 44, 231, 231, 216, 216, 60, 60, - 123, 123, 12, 12, 76, 76, 201, 201, 170, 170, 232, 232, - 139, 139, 92, 92, 13, 13, 108, 108, 29, 29, 186, 186, - 217, 217, 155, 155, 45, 45, 13, 13, 61, 61, 124, 124, - 14, 14, 233, 233, 77, 77, 14, 14, 171, 171, 140, 140, - 202, 202, 30, 30, 93, 93, 109, 109, 46, 46, 156, 156, - 62, 62, 187, 187, 15, 15, 125, 125, 218, 218, 78, 78, - 31, 31, 172, 172, 47, 47, 141, 141, 94, 94, 234, 234, - 203, 203, 63, 63, 110, 110, 188, 188, 157, 157, 126, 126, - 79, 79, 173, 173, 95, 95, 219, 219, 142, 142, 204, 204, - 235, 235, 111, 111, 158, 158, 127, 127, 189, 189, 220, 220, - 143, 143, 174, 174, 205, 205, 236, 236, 159, 159, 190, 190, - 221, 221, 175, 175, 237, 237, 206, 206, 222, 222, 191, 191, - 238, 238, 207, 207, 223, 223, 239, 239, 0, 0, + 0, 0, 0, 0, 16, 16, 32, 32, 16, 0, 48, 48, + 1, 16, 64, 64, 17, 32, 80, 80, 33, 48, 17, 1, + 49, 64, 96, 96, 2, 17, 65, 80, 18, 33, 112, 112, + 34, 49, 81, 96, 18, 2, 50, 65, 128, 128, 3, 18, + 97, 112, 19, 34, 66, 81, 144, 144, 82, 97, 35, 50, + 113, 128, 19, 3, 51, 66, 160, 160, 4, 19, 98, 113, + 129, 144, 67, 82, 20, 35, 83, 98, 114, 129, 36, 51, + 176, 176, 20, 4, 145, 160, 52, 67, 99, 114, 5, 20, + 130, 145, 68, 83, 192, 192, 161, 176, 21, 36, 115, 130, + 84, 99, 37, 52, 146, 161, 208, 208, 53, 68, 21, 5, + 100, 115, 177, 192, 131, 146, 69, 84, 6, 21, 224, 224, + 116, 131, 22, 37, 162, 177, 85, 100, 147, 162, 38, 53, + 193, 208, 101, 116, 54, 69, 22, 6, 132, 147, 178, 193, + 70, 85, 163, 178, 209, 224, 7, 22, 117, 132, 23, 38, + 148, 163, 23, 7, 86, 101, 194, 209, 225, 240, 39, 54, + 179, 194, 102, 117, 133, 148, 55, 70, 164, 179, 8, 23, + 71, 86, 210, 225, 118, 133, 149, 164, 195, 210, 24, 39, + 87, 102, 40, 55, 56, 71, 134, 149, 180, 195, 226, 241, + 103, 118, 24, 8, 165, 180, 211, 226, 72, 87, 150, 165, + 9, 24, 119, 134, 25, 40, 88, 103, 196, 211, 41, 56, + 135, 150, 181, 196, 104, 119, 57, 72, 227, 242, 166, 181, + 120, 135, 151, 166, 197, 212, 73, 88, 25, 9, 212, 227, + 89, 104, 136, 151, 182, 197, 10, 25, 26, 41, 105, 120, + 167, 182, 228, 243, 152, 167, 42, 57, 121, 136, 213, 228, + 58, 73, 198, 213, 74, 89, 137, 152, 183, 198, 168, 183, + 26, 10, 90, 105, 229, 244, 11, 26, 106, 121, 214, 229, + 153, 168, 27, 42, 199, 214, 43, 58, 184, 199, 122, 137, + 169, 184, 230, 245, 59, 74, 27, 11, 75, 90, 138, 153, + 200, 215, 215, 230, 91, 106, 12, 27, 28, 43, 185, 200, + 107, 122, 154, 169, 44, 59, 231, 246, 216, 231, 60, 75, + 123, 138, 28, 12, 76, 91, 201, 216, 170, 185, 232, 247, + 139, 154, 92, 107, 13, 28, 108, 123, 29, 44, 186, 201, + 217, 232, 155, 170, 45, 60, 29, 13, 61, 76, 124, 139, + 14, 14, 233, 248, 77, 92, 14, 29, 171, 186, 140, 155, + 202, 217, 30, 45, 93, 108, 109, 124, 46, 61, 156, 171, + 62, 77, 187, 202, 15, 30, 125, 140, 218, 233, 78, 93, + 31, 46, 172, 187, 47, 62, 141, 156, 94, 109, 234, 249, + 203, 218, 63, 78, 110, 125, 188, 203, 157, 172, 126, 141, + 79, 94, 173, 188, 95, 110, 219, 234, 142, 157, 204, 219, + 235, 250, 111, 126, 158, 173, 127, 142, 189, 204, 220, 235, + 143, 158, 174, 189, 205, 220, 236, 251, 159, 174, 190, 205, + 221, 236, 175, 190, 237, 252, 206, 221, 222, 237, 191, 206, + 238, 253, 207, 222, 223, 238, 239, 254, 0, 0, }; DECLARE_ALIGNED(16, static const int16_t, row_scan_16x16_neighbors[257 * MAX_NEIGHBORS]) = { - 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 16, 16, - 3, 3, 17, 17, 16, 16, 4, 4, 32, 32, 18, 18, - 5, 5, 33, 33, 32, 32, 19, 19, 48, 48, 6, 6, - 34, 34, 20, 20, 49, 49, 48, 48, 7, 7, 35, 35, - 64, 64, 21, 21, 50, 50, 36, 36, 64, 64, 8, 8, - 65, 65, 51, 51, 22, 22, 37, 37, 80, 80, 66, 66, - 9, 9, 52, 52, 23, 23, 81, 81, 67, 67, 80, 80, - 38, 38, 10, 10, 53, 53, 82, 82, 96, 96, 68, 68, - 24, 24, 97, 97, 83, 83, 39, 39, 96, 96, 54, 54, - 11, 11, 69, 69, 98, 98, 112, 112, 84, 84, 25, 25, - 40, 40, 55, 55, 113, 113, 99, 99, 12, 12, 70, 70, - 112, 112, 85, 85, 26, 26, 114, 114, 100, 100, 128, 128, - 41, 41, 56, 56, 71, 71, 115, 115, 13, 13, 86, 86, - 129, 129, 101, 101, 128, 128, 72, 72, 130, 130, 116, 116, - 27, 27, 57, 57, 14, 14, 87, 87, 42, 42, 144, 144, - 102, 102, 131, 131, 145, 145, 117, 117, 73, 73, 144, 144, - 88, 88, 132, 132, 103, 103, 28, 28, 58, 58, 146, 146, - 118, 118, 43, 43, 160, 160, 147, 147, 89, 89, 104, 104, - 133, 133, 161, 161, 119, 119, 160, 160, 74, 74, 134, 134, - 148, 148, 29, 29, 59, 59, 162, 162, 176, 176, 44, 44, - 120, 120, 90, 90, 105, 105, 163, 163, 177, 177, 149, 149, - 176, 176, 135, 135, 164, 164, 178, 178, 30, 30, 150, 150, - 192, 192, 75, 75, 121, 121, 60, 60, 136, 136, 193, 193, - 106, 106, 151, 151, 179, 179, 192, 192, 45, 45, 165, 165, - 166, 166, 194, 194, 91, 91, 180, 180, 137, 137, 208, 208, - 122, 122, 152, 152, 208, 208, 195, 195, 76, 76, 167, 167, - 209, 209, 181, 181, 224, 224, 107, 107, 196, 196, 61, 61, - 153, 153, 224, 224, 182, 182, 168, 168, 210, 210, 46, 46, - 138, 138, 92, 92, 183, 183, 225, 225, 211, 211, 240, 240, - 197, 197, 169, 169, 123, 123, 154, 154, 198, 198, 77, 77, - 212, 212, 184, 184, 108, 108, 226, 226, 199, 199, 62, 62, - 227, 227, 241, 241, 139, 139, 213, 213, 170, 170, 185, 185, - 155, 155, 228, 228, 242, 242, 124, 124, 93, 93, 200, 200, - 243, 243, 214, 214, 215, 215, 229, 229, 140, 140, 186, 186, - 201, 201, 78, 78, 171, 171, 109, 109, 156, 156, 244, 244, - 216, 216, 230, 230, 94, 94, 245, 245, 231, 231, 125, 125, - 202, 202, 246, 246, 232, 232, 172, 172, 217, 217, 141, 141, - 110, 110, 157, 157, 187, 187, 247, 247, 126, 126, 233, 233, - 218, 218, 248, 248, 188, 188, 203, 203, 142, 142, 173, 173, - 158, 158, 249, 249, 234, 234, 204, 204, 219, 219, 174, 174, - 189, 189, 250, 250, 220, 220, 190, 190, 205, 205, 235, 235, - 206, 206, 236, 236, 251, 251, 221, 221, 252, 252, 222, 222, - 237, 237, 238, 238, 253, 253, 254, 254, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 1, 2, 2, 1, 16, + 3, 3, 2, 17, 16, 17, 4, 4, 17, 32, 3, 18, + 5, 5, 18, 33, 32, 33, 4, 19, 33, 48, 6, 6, + 19, 34, 5, 20, 34, 49, 48, 49, 7, 7, 20, 35, + 49, 64, 6, 21, 35, 50, 21, 36, 64, 65, 8, 8, + 50, 65, 36, 51, 7, 22, 22, 37, 65, 80, 51, 66, + 9, 9, 37, 52, 8, 23, 66, 81, 52, 67, 80, 81, + 23, 38, 10, 10, 38, 53, 67, 82, 81, 96, 53, 68, + 9, 24, 82, 97, 68, 83, 24, 39, 96, 97, 39, 54, + 11, 11, 54, 69, 83, 98, 97, 112, 69, 84, 10, 25, + 25, 40, 40, 55, 98, 113, 84, 99, 12, 12, 55, 70, + 112, 113, 70, 85, 11, 26, 99, 114, 85, 100, 113, 128, + 26, 41, 41, 56, 56, 71, 100, 115, 13, 13, 71, 86, + 114, 129, 86, 101, 128, 129, 57, 72, 115, 130, 101, 116, + 12, 27, 42, 57, 14, 14, 72, 87, 27, 42, 129, 144, + 87, 102, 116, 131, 130, 145, 102, 117, 58, 73, 144, 145, + 73, 88, 117, 132, 88, 103, 13, 28, 43, 58, 131, 146, + 103, 118, 28, 43, 145, 160, 132, 147, 74, 89, 89, 104, + 118, 133, 146, 161, 104, 119, 160, 161, 59, 74, 119, 134, + 133, 148, 14, 29, 44, 59, 147, 162, 161, 176, 29, 44, + 105, 120, 75, 90, 90, 105, 148, 163, 162, 177, 134, 149, + 176, 177, 120, 135, 149, 164, 163, 178, 15, 30, 135, 150, + 177, 192, 60, 75, 106, 121, 45, 60, 121, 136, 178, 193, + 91, 106, 136, 151, 164, 179, 192, 193, 30, 45, 150, 165, + 151, 166, 179, 194, 76, 91, 165, 180, 122, 137, 193, 208, + 107, 122, 137, 152, 208, 209, 180, 195, 61, 76, 152, 167, + 194, 209, 166, 181, 224, 224, 92, 107, 181, 196, 46, 61, + 138, 153, 209, 224, 167, 182, 153, 168, 195, 210, 31, 46, + 123, 138, 77, 92, 168, 183, 210, 225, 196, 211, 225, 240, + 182, 197, 154, 169, 108, 123, 139, 154, 183, 198, 62, 77, + 197, 212, 169, 184, 93, 108, 211, 226, 184, 199, 47, 62, + 212, 227, 226, 241, 124, 139, 198, 213, 155, 170, 170, 185, + 140, 155, 213, 228, 227, 242, 109, 124, 78, 93, 185, 200, + 228, 243, 199, 214, 200, 215, 214, 229, 125, 140, 171, 186, + 186, 201, 63, 78, 156, 171, 94, 109, 141, 156, 229, 244, + 201, 216, 215, 230, 79, 94, 230, 245, 216, 231, 110, 125, + 187, 202, 231, 246, 217, 232, 157, 172, 202, 217, 126, 141, + 95, 110, 142, 157, 172, 187, 232, 247, 111, 126, 218, 233, + 203, 218, 233, 248, 173, 188, 188, 203, 127, 142, 158, 173, + 143, 158, 234, 249, 219, 234, 189, 204, 204, 219, 159, 174, + 174, 189, 235, 250, 205, 220, 175, 190, 190, 205, 220, 235, + 191, 206, 221, 236, 236, 251, 206, 221, 237, 252, 207, 222, + 222, 237, 223, 238, 238, 253, 239, 254, 0, 0, }; DECLARE_ALIGNED(16, static const int16_t, default_scan_16x16_neighbors[257 * MAX_NEIGHBORS]) = { - 0, 0, 0, 0, 0, 0, 16, 16, 1, 16, 1, 1, - 32, 32, 17, 32, 2, 17, 2, 2, 48, 48, 18, 33, - 33, 48, 3, 18, 49, 64, 64, 64, 34, 49, 3, 3, - 19, 34, 50, 65, 4, 19, 65, 80, 80, 80, 35, 50, - 4, 4, 20, 35, 66, 81, 81, 96, 51, 66, 96, 96, + 0, 0, 0, 0, 16, 0, 16, 16, 1, 16, 17, 1, + 32, 32, 17, 32, 2, 17, 18, 2, 48, 48, 18, 33, + 33, 48, 3, 18, 49, 64, 64, 65, 34, 49, 19, 3, + 19, 34, 50, 65, 4, 19, 65, 80, 80, 81, 35, 50, + 20, 4, 20, 35, 66, 81, 81, 96, 51, 66, 96, 97, 5, 20, 36, 51, 82, 97, 21, 36, 67, 82, 97, 112, - 5, 5, 52, 67, 112, 112, 37, 52, 6, 21, 83, 98, - 98, 113, 68, 83, 6, 6, 113, 128, 22, 37, 53, 68, - 84, 99, 99, 114, 128, 128, 114, 129, 69, 84, 38, 53, - 7, 22, 7, 7, 129, 144, 23, 38, 54, 69, 100, 115, - 85, 100, 115, 130, 144, 144, 130, 145, 39, 54, 70, 85, + 21, 5, 52, 67, 112, 113, 37, 52, 6, 21, 83, 98, + 98, 113, 68, 83, 22, 6, 113, 128, 22, 37, 53, 68, + 84, 99, 99, 114, 128, 129, 114, 129, 69, 84, 38, 53, + 7, 22, 23, 7, 129, 144, 23, 38, 54, 69, 100, 115, + 85, 100, 115, 130, 144, 145, 130, 145, 39, 54, 70, 85, 8, 23, 55, 70, 116, 131, 101, 116, 145, 160, 24, 39, - 8, 8, 86, 101, 131, 146, 160, 160, 146, 161, 71, 86, + 24, 8, 86, 101, 131, 146, 160, 161, 146, 161, 71, 86, 40, 55, 9, 24, 117, 132, 102, 117, 161, 176, 132, 147, - 56, 71, 87, 102, 25, 40, 147, 162, 9, 9, 176, 176, + 56, 71, 87, 102, 25, 40, 147, 162, 25, 9, 176, 177, 162, 177, 72, 87, 41, 56, 118, 133, 133, 148, 103, 118, 10, 25, 148, 163, 57, 72, 88, 103, 177, 192, 26, 41, - 163, 178, 192, 192, 10, 10, 119, 134, 73, 88, 149, 164, + 163, 178, 192, 193, 26, 10, 119, 134, 73, 88, 149, 164, 104, 119, 134, 149, 42, 57, 178, 193, 164, 179, 11, 26, 58, 73, 193, 208, 89, 104, 135, 150, 120, 135, 27, 42, - 74, 89, 208, 208, 150, 165, 179, 194, 165, 180, 105, 120, - 194, 209, 43, 58, 11, 11, 136, 151, 90, 105, 151, 166, - 180, 195, 59, 74, 121, 136, 209, 224, 195, 210, 224, 224, - 166, 181, 106, 121, 75, 90, 12, 27, 181, 196, 12, 12, + 74, 89, 208, 209, 150, 165, 179, 194, 165, 180, 105, 120, + 194, 209, 43, 58, 27, 11, 136, 151, 90, 105, 151, 166, + 180, 195, 59, 74, 121, 136, 209, 224, 195, 210, 224, 225, + 166, 181, 106, 121, 75, 90, 12, 27, 181, 196, 28, 12, 210, 225, 152, 167, 167, 182, 137, 152, 28, 43, 196, 211, 122, 137, 91, 106, 225, 240, 44, 59, 13, 28, 107, 122, 182, 197, 168, 183, 211, 226, 153, 168, 226, 241, 60, 75, - 197, 212, 138, 153, 29, 44, 76, 91, 13, 13, 183, 198, + 197, 212, 138, 153, 29, 44, 76, 91, 29, 13, 183, 198, 123, 138, 45, 60, 212, 227, 198, 213, 154, 169, 169, 184, - 227, 242, 92, 107, 61, 76, 139, 154, 14, 29, 14, 14, + 227, 242, 92, 107, 61, 76, 139, 154, 14, 29, 30, 14, 184, 199, 213, 228, 108, 123, 199, 214, 228, 243, 77, 92, 30, 45, 170, 185, 155, 170, 185, 200, 93, 108, 124, 139, 214, 229, 46, 61, 200, 215, 229, 244, 15, 30, 109, 124, @@ -1538,94 +1538,94 @@ DECLARE_ALIGNED(16, static const int16_t, default_scan_32x32_neighbors[1025 * MAX_NEIGHBORS]) = { - 0, 0, 0, 0, 0, 0, 32, 32, 1, 32, 1, 1, - 64, 64, 33, 64, 2, 33, 96, 96, 2, 2, 65, 96, - 34, 65, 128, 128, 97, 128, 3, 34, 66, 97, 3, 3, - 35, 66, 98, 129, 129, 160, 160, 160, 4, 35, 67, 98, - 192, 192, 4, 4, 130, 161, 161, 192, 36, 67, 99, 130, - 5, 36, 68, 99, 193, 224, 162, 193, 224, 224, 131, 162, - 37, 68, 100, 131, 5, 5, 194, 225, 225, 256, 256, 256, - 163, 194, 69, 100, 132, 163, 6, 37, 226, 257, 6, 6, - 195, 226, 257, 288, 101, 132, 288, 288, 38, 69, 164, 195, + 0, 0, 0, 0, 32, 0, 32, 32, 1, 32, 33, 1, + 64, 64, 33, 64, 2, 33, 96, 96, 34, 2, 65, 96, + 34, 65, 128, 128, 97, 128, 3, 34, 66, 97, 35, 3, + 35, 66, 98, 129, 129, 160, 160, 161, 4, 35, 67, 98, + 192, 192, 36, 4, 130, 161, 161, 192, 36, 67, 99, 130, + 5, 36, 68, 99, 193, 224, 162, 193, 224, 225, 131, 162, + 37, 68, 100, 131, 37, 5, 194, 225, 225, 256, 256, 257, + 163, 194, 69, 100, 132, 163, 6, 37, 226, 257, 38, 6, + 195, 226, 257, 288, 101, 132, 288, 289, 38, 69, 164, 195, 133, 164, 258, 289, 227, 258, 196, 227, 7, 38, 289, 320, - 70, 101, 320, 320, 7, 7, 165, 196, 39, 70, 102, 133, - 290, 321, 259, 290, 228, 259, 321, 352, 352, 352, 197, 228, + 70, 101, 320, 321, 39, 7, 165, 196, 39, 70, 102, 133, + 290, 321, 259, 290, 228, 259, 321, 352, 352, 353, 197, 228, 134, 165, 71, 102, 8, 39, 322, 353, 291, 322, 260, 291, - 103, 134, 353, 384, 166, 197, 229, 260, 40, 71, 8, 8, - 384, 384, 135, 166, 354, 385, 323, 354, 198, 229, 292, 323, + 103, 134, 353, 384, 166, 197, 229, 260, 40, 71, 40, 8, + 384, 385, 135, 166, 354, 385, 323, 354, 198, 229, 292, 323, 72, 103, 261, 292, 9, 40, 385, 416, 167, 198, 104, 135, - 230, 261, 355, 386, 416, 416, 293, 324, 324, 355, 9, 9, + 230, 261, 355, 386, 416, 417, 293, 324, 324, 355, 41, 9, 41, 72, 386, 417, 199, 230, 136, 167, 417, 448, 262, 293, 356, 387, 73, 104, 387, 418, 231, 262, 10, 41, 168, 199, - 325, 356, 418, 449, 105, 136, 448, 448, 42, 73, 294, 325, - 200, 231, 10, 10, 357, 388, 137, 168, 263, 294, 388, 419, + 325, 356, 418, 449, 105, 136, 448, 449, 42, 73, 294, 325, + 200, 231, 42, 10, 357, 388, 137, 168, 263, 294, 388, 419, 74, 105, 419, 450, 449, 480, 326, 357, 232, 263, 295, 326, - 169, 200, 11, 42, 106, 137, 480, 480, 450, 481, 358, 389, + 169, 200, 11, 42, 106, 137, 480, 481, 450, 481, 358, 389, 264, 295, 201, 232, 138, 169, 389, 420, 43, 74, 420, 451, - 327, 358, 11, 11, 481, 512, 233, 264, 451, 482, 296, 327, - 75, 106, 170, 201, 482, 513, 512, 512, 390, 421, 359, 390, + 327, 358, 43, 11, 481, 512, 233, 264, 451, 482, 296, 327, + 75, 106, 170, 201, 482, 513, 512, 513, 390, 421, 359, 390, 421, 452, 107, 138, 12, 43, 202, 233, 452, 483, 265, 296, 328, 359, 139, 170, 44, 75, 483, 514, 513, 544, 234, 265, - 297, 328, 422, 453, 12, 12, 391, 422, 171, 202, 76, 107, - 514, 545, 453, 484, 544, 544, 266, 297, 203, 234, 108, 139, + 297, 328, 422, 453, 44, 12, 391, 422, 171, 202, 76, 107, + 514, 545, 453, 484, 544, 545, 266, 297, 203, 234, 108, 139, 329, 360, 298, 329, 140, 171, 515, 546, 13, 44, 423, 454, 235, 266, 545, 576, 454, 485, 45, 76, 172, 203, 330, 361, - 576, 576, 13, 13, 267, 298, 546, 577, 77, 108, 204, 235, + 576, 577, 45, 13, 267, 298, 546, 577, 77, 108, 204, 235, 455, 486, 577, 608, 299, 330, 109, 140, 547, 578, 14, 45, - 14, 14, 141, 172, 578, 609, 331, 362, 46, 77, 173, 204, + 46, 14, 141, 172, 578, 609, 331, 362, 46, 77, 173, 204, 15, 15, 78, 109, 205, 236, 579, 610, 110, 141, 15, 46, 142, 173, 47, 78, 174, 205, 16, 16, 79, 110, 206, 237, 16, 47, 111, 142, 48, 79, 143, 174, 80, 111, 175, 206, - 17, 48, 17, 17, 207, 238, 49, 80, 81, 112, 18, 18, + 17, 48, 49, 17, 207, 238, 49, 80, 81, 112, 18, 18, 18, 49, 50, 81, 82, 113, 19, 50, 51, 82, 83, 114, - 608, 608, 484, 515, 360, 391, 236, 267, 112, 143, 19, 19, + 608, 609, 484, 515, 360, 391, 236, 267, 112, 143, 51, 19, 640, 640, 609, 640, 516, 547, 485, 516, 392, 423, 361, 392, - 268, 299, 237, 268, 144, 175, 113, 144, 20, 51, 20, 20, + 268, 299, 237, 268, 144, 175, 113, 144, 20, 51, 52, 20, 672, 672, 641, 672, 610, 641, 548, 579, 517, 548, 486, 517, 424, 455, 393, 424, 362, 393, 300, 331, 269, 300, 238, 269, - 176, 207, 145, 176, 114, 145, 52, 83, 21, 52, 21, 21, + 176, 207, 145, 176, 114, 145, 52, 83, 21, 52, 53, 21, 704, 704, 673, 704, 642, 673, 611, 642, 580, 611, 549, 580, 518, 549, 487, 518, 456, 487, 425, 456, 394, 425, 363, 394, 332, 363, 301, 332, 270, 301, 239, 270, 208, 239, 177, 208, - 146, 177, 115, 146, 84, 115, 53, 84, 22, 53, 22, 22, + 146, 177, 115, 146, 84, 115, 53, 84, 22, 53, 54, 22, 705, 736, 674, 705, 643, 674, 581, 612, 550, 581, 519, 550, 457, 488, 426, 457, 395, 426, 333, 364, 302, 333, 271, 302, 209, 240, 178, 209, 147, 178, 85, 116, 54, 85, 23, 54, 706, 737, 675, 706, 582, 613, 551, 582, 458, 489, 427, 458, 334, 365, 303, 334, 210, 241, 179, 210, 86, 117, 55, 86, 707, 738, 583, 614, 459, 490, 335, 366, 211, 242, 87, 118, - 736, 736, 612, 643, 488, 519, 364, 395, 240, 271, 116, 147, - 23, 23, 768, 768, 737, 768, 644, 675, 613, 644, 520, 551, + 736, 737, 612, 643, 488, 519, 364, 395, 240, 271, 116, 147, + 55, 23, 768, 768, 737, 768, 644, 675, 613, 644, 520, 551, 489, 520, 396, 427, 365, 396, 272, 303, 241, 272, 148, 179, - 117, 148, 24, 55, 24, 24, 800, 800, 769, 800, 738, 769, + 117, 148, 24, 55, 56, 24, 800, 800, 769, 800, 738, 769, 676, 707, 645, 676, 614, 645, 552, 583, 521, 552, 490, 521, 428, 459, 397, 428, 366, 397, 304, 335, 273, 304, 242, 273, - 180, 211, 149, 180, 118, 149, 56, 87, 25, 56, 25, 25, + 180, 211, 149, 180, 118, 149, 56, 87, 25, 56, 57, 25, 832, 832, 801, 832, 770, 801, 739, 770, 708, 739, 677, 708, 646, 677, 615, 646, 584, 615, 553, 584, 522, 553, 491, 522, 460, 491, 429, 460, 398, 429, 367, 398, 336, 367, 305, 336, 274, 305, 243, 274, 212, 243, 181, 212, 150, 181, 119, 150, - 88, 119, 57, 88, 26, 57, 26, 26, 833, 864, 802, 833, + 88, 119, 57, 88, 26, 57, 58, 26, 833, 864, 802, 833, 771, 802, 709, 740, 678, 709, 647, 678, 585, 616, 554, 585, 523, 554, 461, 492, 430, 461, 399, 430, 337, 368, 306, 337, 275, 306, 213, 244, 182, 213, 151, 182, 89, 120, 58, 89, 27, 58, 834, 865, 803, 834, 710, 741, 679, 710, 586, 617, 555, 586, 462, 493, 431, 462, 338, 369, 307, 338, 214, 245, 183, 214, 90, 121, 59, 90, 835, 866, 711, 742, 587, 618, - 463, 494, 339, 370, 215, 246, 91, 122, 864, 864, 740, 771, - 616, 647, 492, 523, 368, 399, 244, 275, 120, 151, 27, 27, + 463, 494, 339, 370, 215, 246, 91, 122, 864, 865, 740, 771, + 616, 647, 492, 523, 368, 399, 244, 275, 120, 151, 59, 27, 896, 896, 865, 896, 772, 803, 741, 772, 648, 679, 617, 648, 524, 555, 493, 524, 400, 431, 369, 400, 276, 307, 245, 276, - 152, 183, 121, 152, 28, 59, 28, 28, 928, 928, 897, 928, + 152, 183, 121, 152, 28, 59, 60, 28, 928, 928, 897, 928, 866, 897, 804, 835, 773, 804, 742, 773, 680, 711, 649, 680, 618, 649, 556, 587, 525, 556, 494, 525, 432, 463, 401, 432, 370, 401, 308, 339, 277, 308, 246, 277, 184, 215, 153, 184, - 122, 153, 60, 91, 29, 60, 29, 29, 960, 960, 929, 960, + 122, 153, 60, 91, 29, 60, 61, 29, 960, 960, 929, 960, 898, 929, 867, 898, 836, 867, 805, 836, 774, 805, 743, 774, 712, 743, 681, 712, 650, 681, 619, 650, 588, 619, 557, 588, 526, 557, 495, 526, 464, 495, 433, 464, 402, 433, 371, 402, 340, 371, 309, 340, 278, 309, 247, 278, 216, 247, 185, 216, - 154, 185, 123, 154, 92, 123, 61, 92, 30, 61, 30, 30, + 154, 185, 123, 154, 92, 123, 61, 92, 30, 61, 62, 30, 961, 992, 930, 961, 899, 930, 837, 868, 806, 837, 775, 806, 713, 744, 682, 713, 651, 682, 589, 620, 558, 589, 527, 558, 465, 496, 434, 465, 403, 434, 341, 372, 310, 341, 279, 310,