diff options
author | Jim Bankoski <jimbankoski@google.com> | 2013-11-19 12:50:48 -0800 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2013-11-19 12:55:44 -0800 |
commit | ff4f1c4b7663695aed883dc66221bb0899f11ac2 (patch) | |
tree | 1c981e5e9089c37297197ea94ab46d3d62beb471 /vp9/common | |
parent | 5b3a8563deb9341300354dced690ba4e390ee590 (diff) | |
download | libvpx-ff4f1c4b7663695aed883dc66221bb0899f11ac2.tar libvpx-ff4f1c4b7663695aed883dc66221bb0899f11ac2.tar.gz libvpx-ff4f1c4b7663695aed883dc66221bb0899f11ac2.tar.bz2 libvpx-ff4f1c4b7663695aed883dc66221bb0899f11ac2.zip |
scan order / neighbors converted to lookup
Change-Id: I64b189dfeee1cf3e90134a1a93497072f3361e5e
Diffstat (limited to 'vp9/common')
-rw-r--r-- | vp9/common/vp9_scan.c | 56 | ||||
-rw-r--r-- | vp9/common/vp9_scan.h | 10 |
2 files changed, 65 insertions, 1 deletions
diff --git a/vp9/common/vp9_scan.c b/vp9/common/vp9_scan.c index f17da9110..f62150fd4 100644 --- a/vp9/common/vp9_scan.c +++ b/vp9/common/vp9_scan.c @@ -266,6 +266,62 @@ DECLARE_ALIGNED(16, int16_t, vp9_row_iscan_16x16[256]); DECLARE_ALIGNED(16, int16_t, vp9_default_iscan_16x16[256]); DECLARE_ALIGNED(16, int16_t, vp9_default_iscan_32x32[1024]); +const scan_order inter_scan_orders[TX_SIZES] = { + {vp9_default_scan_4x4, vp9_default_scan_4x4_neighbors}, // NEWMV + {vp9_default_scan_8x8, vp9_default_scan_8x8_neighbors}, // NEWMV + {vp9_default_scan_16x16, vp9_default_scan_16x16_neighbors}, // NEWMV + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // NEWMV +}; + +const scan_order intra_scan_orders[TX_SIZES][INTRA_MODES] = { + { // 4X4 + {vp9_default_scan_4x4, vp9_default_scan_4x4_neighbors}, // DC + {vp9_row_scan_4x4, vp9_row_scan_4x4_neighbors}, // V + {vp9_col_scan_4x4, vp9_col_scan_4x4_neighbors}, // H + {vp9_default_scan_4x4, vp9_default_scan_4x4_neighbors}, // D45 + {vp9_default_scan_4x4, vp9_default_scan_4x4_neighbors}, // D135 + {vp9_row_scan_4x4, vp9_row_scan_4x4_neighbors}, // D117 + {vp9_col_scan_4x4, vp9_col_scan_4x4_neighbors}, // D153 + {vp9_col_scan_4x4, vp9_col_scan_4x4_neighbors}, // D207 + {vp9_row_scan_4x4, vp9_row_scan_4x4_neighbors}, // D63 + {vp9_default_scan_4x4, vp9_default_scan_4x4_neighbors}, // TM + }, { // 8x8 + {vp9_default_scan_8x8, vp9_default_scan_8x8_neighbors}, // DC + {vp9_row_scan_8x8, vp9_row_scan_8x8_neighbors}, // V + {vp9_col_scan_8x8, vp9_col_scan_8x8_neighbors}, // H + {vp9_default_scan_8x8, vp9_default_scan_8x8_neighbors}, // D45 + {vp9_default_scan_8x8, vp9_default_scan_8x8_neighbors}, // D135 + {vp9_row_scan_8x8, vp9_row_scan_8x8_neighbors}, // D117 + {vp9_col_scan_8x8, vp9_col_scan_8x8_neighbors}, // D153 + {vp9_col_scan_8x8, vp9_col_scan_8x8_neighbors}, // D207 + {vp9_row_scan_8x8, vp9_row_scan_8x8_neighbors}, // D63 + {vp9_default_scan_8x8, vp9_default_scan_8x8_neighbors}, // TM + }, { // 16x16 + {vp9_default_scan_16x16, vp9_default_scan_16x16_neighbors}, // DC + {vp9_row_scan_16x16, vp9_row_scan_16x16_neighbors}, // V + {vp9_col_scan_16x16, vp9_col_scan_16x16_neighbors}, // H + {vp9_default_scan_16x16, vp9_default_scan_16x16_neighbors}, // D45 + {vp9_default_scan_16x16, vp9_default_scan_16x16_neighbors}, // D135 + {vp9_row_scan_16x16, vp9_row_scan_16x16_neighbors}, // D117 + {vp9_col_scan_16x16, vp9_col_scan_16x16_neighbors}, // D153 + {vp9_col_scan_16x16, vp9_col_scan_16x16_neighbors}, // D207 + {vp9_row_scan_16x16, vp9_row_scan_16x16_neighbors}, // D63 + {vp9_default_scan_16x16, vp9_default_scan_16x16_neighbors}, // TM + }, { // 32x32 + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // DC + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // V + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // H + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // D45 + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // D135 + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // D117 + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // D153 + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // D207 + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // D63 + {vp9_default_scan_32x32, vp9_default_scan_32x32_neighbors}, // TM + } +}; + + static int find_in_scan(const int16_t *scan, int l, int idx) { int n, l2 = l * l; for (n = 0; n < l2; n++) { diff --git a/vp9/common/vp9_scan.h b/vp9/common/vp9_scan.h index 14a1a7eb0..98fc607ca 100644 --- a/vp9/common/vp9_scan.h +++ b/vp9/common/vp9_scan.h @@ -15,6 +15,7 @@ #include "vpx_ports/mem.h" #include "vp9/common/vp9_enums.h" +#include "vp9/common/vp9_blockd.h" #define MAX_NEIGHBORS 2 @@ -67,9 +68,16 @@ extern DECLARE_ALIGNED(16, int16_t, extern DECLARE_ALIGNED(16, int16_t, vp9_default_scan_32x32_neighbors[1025 * MAX_NEIGHBORS]); - void vp9_init_neighbors(); +typedef struct { + const int16_t *scan; + const int16_t *neighbors; +} scan_order; + +extern const scan_order intra_scan_orders[TX_SIZES][INTRA_MODES]; +extern const scan_order inter_scan_orders[TX_SIZES]; + static INLINE const int16_t* get_scan_4x4(TX_TYPE tx_type) { switch (tx_type) { case ADST_DCT: |