Bug 1430188: av1: Mark AOM_QM matricies const. r=kinetik.

These large (200 KB) static stables are functionally read-only.
Marking them const moves them to the read-only section of shared
libraries, reducing memory footprint when multiple application
processes are running simultaneously.

This is a backport of the upstream commit 90243cf9e670.

MozReview-Commit-ID: 319jjpgNlTI

--HG--
extra : rebase_source : d085a344d5e8aee73dfb14ca39c93cd2eea957a6
This commit is contained in:
Ralph Giles 2018-01-15 09:08:18 -08:00
parent 86a6393324
commit 05f04d05ef
3 changed files with 14 additions and 14 deletions

View File

@ -310,15 +310,15 @@ typedef struct AV1Common {
#if CONFIG_AOM_QM
// Global quant matrix tables
qm_val_t *giqmatrix[NUM_QM_LEVELS][2][2][TX_SIZES_ALL];
qm_val_t *gqmatrix[NUM_QM_LEVELS][2][2][TX_SIZES_ALL];
const qm_val_t *giqmatrix[NUM_QM_LEVELS][2][2][TX_SIZES_ALL];
const qm_val_t *gqmatrix[NUM_QM_LEVELS][2][2][TX_SIZES_ALL];
// Local quant matrix tables for each frame
qm_val_t *y_iqmatrix[MAX_SEGMENTS][2][TX_SIZES_ALL];
qm_val_t *uv_iqmatrix[MAX_SEGMENTS][2][TX_SIZES_ALL];
const qm_val_t *y_iqmatrix[MAX_SEGMENTS][2][TX_SIZES_ALL];
const qm_val_t *uv_iqmatrix[MAX_SEGMENTS][2][TX_SIZES_ALL];
// Encoder
qm_val_t *y_qmatrix[MAX_SEGMENTS][2][TX_SIZES_ALL];
qm_val_t *uv_qmatrix[MAX_SEGMENTS][2][TX_SIZES_ALL];
const qm_val_t *y_qmatrix[MAX_SEGMENTS][2][TX_SIZES_ALL];
const qm_val_t *uv_qmatrix[MAX_SEGMENTS][2][TX_SIZES_ALL];
int using_qmatrix;
int min_qmlevel;

View File

@ -342,11 +342,11 @@ int av1_get_qindex(const struct segmentation *seg, int segment_id,
}
#if CONFIG_AOM_QM
qm_val_t *aom_iqmatrix(AV1_COMMON *cm, int qmlevel, int is_chroma,
const qm_val_t *aom_iqmatrix(AV1_COMMON *cm, int qmlevel, int is_chroma,
TX_SIZE tx_size, int is_intra) {
return &cm->giqmatrix[qmlevel][!!is_chroma][!!is_intra][tx_size][0];
}
qm_val_t *aom_qmatrix(AV1_COMMON *cm, int qmlevel, int is_chroma,
const qm_val_t *aom_qmatrix(AV1_COMMON *cm, int qmlevel, int is_chroma,
TX_SIZE tx_size, int is_intra) {
return &cm->gqmatrix[qmlevel][!!is_chroma][!!is_intra][tx_size][0];
}
@ -356,8 +356,8 @@ qm_val_t *aom_qmatrix(AV1_COMMON *cm, int qmlevel, int is_chroma,
#else
#define QM_TOTAL_SIZE 3344
#endif
static uint16_t wt_matrix_ref[NUM_QM_LEVELS][2][QM_TOTAL_SIZE];
static uint16_t iwt_matrix_ref[NUM_QM_LEVELS][2][QM_TOTAL_SIZE];
static const uint16_t wt_matrix_ref[NUM_QM_LEVELS][2][QM_TOTAL_SIZE];
static const uint16_t iwt_matrix_ref[NUM_QM_LEVELS][2][QM_TOTAL_SIZE];
void aom_qm_init(AV1_COMMON *cm) {
int q, c, f, t;
@ -399,7 +399,7 @@ void aom_qm_init(AV1_COMMON *cm) {
frequency domain according to different nominal viewing
distances.
*/
static uint16_t iwt_matrix_ref[NUM_QM_LEVELS][2][QM_TOTAL_SIZE] = {
static const uint16_t iwt_matrix_ref[NUM_QM_LEVELS][2][QM_TOTAL_SIZE] = {
{
{ /* Luma */
#if CONFIG_CHROMA_2X2
@ -7295,7 +7295,7 @@ static uint16_t iwt_matrix_ref[NUM_QM_LEVELS][2][QM_TOTAL_SIZE] = {
},
};
static uint16_t wt_matrix_ref[NUM_QM_LEVELS][2][QM_TOTAL_SIZE] = {
static const uint16_t wt_matrix_ref[NUM_QM_LEVELS][2][QM_TOTAL_SIZE] = {
{
{ /* Luma */
#if CONFIG_CHROMA_2X2

View File

@ -51,9 +51,9 @@ static INLINE int aom_get_qmlevel(int qindex, int first, int last) {
return first + (qindex * (last + 1 - first)) / QINDEX_RANGE;
}
void aom_qm_init(struct AV1Common *cm);
qm_val_t *aom_iqmatrix(struct AV1Common *cm, int qindex, int comp,
const qm_val_t *aom_iqmatrix(struct AV1Common *cm, int qindex, int comp,
TX_SIZE tx_size, int is_intra);
qm_val_t *aom_qmatrix(struct AV1Common *cm, int qindex, int comp,
const qm_val_t *aom_qmatrix(struct AV1Common *cm, int qindex, int comp,
TX_SIZE tx_size, int is_intra);
#endif