Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/cdf.h
diff options
context:
space:
mode:
authorHenrik Gramner <gramner@twoorioles.com>2019-04-12 00:20:18 +0300
committerHenrik Gramner <henrik@gramner.com>2019-04-15 22:09:27 +0300
commitfa1b265142e1409a986f01bd7abe115b308c1028 (patch)
tree81befc8a99d235c98f9dce2a63cee0dee676591f /src/cdf.h
parent44d0de41d478b6b41a1ebbf1de012caa8d75cca0 (diff)
x86-64: Add msac_decode_symbol_adapt SSE2 asm
Also make various minor optimizations/style fixes to the MSAC C functions.
Diffstat (limited to 'src/cdf.h')
-rw-r--r--src/cdf.h20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/cdf.h b/src/cdf.h
index 6d95771..7512408 100644
--- a/src/cdf.h
+++ b/src/cdf.h
@@ -34,11 +34,13 @@
#include "src/ref.h"
#include "src/thread_data.h"
+/* Buffers padded to [8] or [16] for SIMD where needed. */
+
typedef struct CdfModeContext {
- uint16_t y_mode[4][N_INTRA_PRED_MODES + 1];
+ uint16_t y_mode[4][N_INTRA_PRED_MODES + 1 + 2];
uint16_t use_filter_intra[N_BS_SIZES][2];
uint16_t filter_intra[5 + 1];
- uint16_t uv_mode[2][N_INTRA_PRED_MODES][N_UV_INTRA_PRED_MODES + 1];
+ uint16_t uv_mode[2][N_INTRA_PRED_MODES][N_UV_INTRA_PRED_MODES + 1 + 1];
uint16_t angle_delta[8][8];
uint16_t filter[2][8][DAV1D_N_SWITCHABLE_FILTERS + 1];
uint16_t newmv_mode[6][2];
@@ -66,7 +68,7 @@ typedef struct CdfModeContext {
uint16_t txtp_intra[3][N_TX_SIZES][N_INTRA_PRED_MODES][N_TX_TYPES + 1];
uint16_t skip[3][2];
uint16_t skip_mode[3][2];
- uint16_t partition[N_BL_LEVELS][4][N_PARTITIONS + 1];
+ uint16_t partition[N_BL_LEVELS][4][N_PARTITIONS + 1 + 5];
uint16_t seg_pred[3][2];
uint16_t seg_id[3][DAV1D_MAX_SEGMENTS + 1];
uint16_t cfl_sign[8 + 1];
@@ -88,12 +90,12 @@ typedef struct CdfModeContext {
typedef struct CdfCoefContext {
uint16_t skip[N_TX_SIZES][13][2];
uint16_t eob_bin_16[2][2][6];
- uint16_t eob_bin_32[2][2][7];
+ uint16_t eob_bin_32[2][2][7 + 1];
uint16_t eob_bin_64[2][2][8];
uint16_t eob_bin_128[2][2][9];
- uint16_t eob_bin_256[2][2][10];
- uint16_t eob_bin_512[2][2][11];
- uint16_t eob_bin_1024[2][2][12];
+ uint16_t eob_bin_256[2][2][10 + 6];
+ uint16_t eob_bin_512[2][2][11 + 5];
+ uint16_t eob_bin_1024[2][2][12 + 4];
uint16_t eob_hi_bit[N_TX_SIZES][2][11 /*22*/][2];
uint16_t eob_base_tok[N_TX_SIZES][2][4][4];
uint16_t base_tok[N_TX_SIZES][2][41][5];
@@ -102,7 +104,7 @@ typedef struct CdfCoefContext {
} CdfCoefContext;
typedef struct CdfMvComponent {
- uint16_t classes[11 + 1];
+ uint16_t classes[11 + 1 + 4];
uint16_t class0[2];
uint16_t classN[10][2];
uint16_t class0_fp[2][4 + 1];
@@ -119,7 +121,7 @@ typedef struct CdfMvContext {
typedef struct CdfContext {
CdfModeContext m;
- uint16_t kfym[5][5][N_INTRA_PRED_MODES + 1];
+ uint16_t kfym[5][5][N_INTRA_PRED_MODES + 1 + 2];
CdfCoefContext coef;
CdfMvContext mv, dmv;
} CdfContext;