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
diff options
context:
space:
mode:
authorHenrik Gramner <gramner@twoorioles.com>2022-09-30 01:11:29 +0300
committerHenrik Gramner <gramner@twoorioles.com>2022-09-30 18:04:20 +0300
commite4c4af02f3de5e6cea6f81272a2981c0fa7bae28 (patch)
treeaf7c69678a43322235e3abd85fd9cd6433690126
parent58c856b76ad423efe59a518b5f02752354e0d0d8 (diff)
Specify hidden visibility for global data symbol declarations
'-fvisibility=hidden' only applies to definitions, not declarations, so the compiler has to be conservative about how references to global data symbols are performed. Explicitly specifying the visibility allows for better code generation.
-rw-r--r--include/common/attributes.h6
-rw-r--r--src/cpu.h4
-rw-r--r--src/dequant_tables.h2
-rw-r--r--src/qm.h2
-rw-r--r--src/scan.h2
-rw-r--r--src/tables.h60
-rw-r--r--src/wedge.h4
7 files changed, 43 insertions, 37 deletions
diff --git a/include/common/attributes.h b/include/common/attributes.h
index ba04fcb..2af42ef 100644
--- a/include/common/attributes.h
+++ b/include/common/attributes.h
@@ -113,6 +113,12 @@
#define ALWAYS_INLINE __attribute__((always_inline)) inline
#endif
+#if (defined(__ELF__) || defined(__MACH__) || (defined(_WIN32) && defined(__clang__))) && __has_attribute(visibility)
+#define EXTERN extern __attribute__((visibility("hidden")))
+#else
+#define EXTERN extern
+#endif
+
#ifdef __clang__
#define NO_SANITIZE(x) __attribute__((no_sanitize(x)))
#else
diff --git a/src/cpu.h b/src/cpu.h
index 68fbaec..8f70fef 100644
--- a/src/cpu.h
+++ b/src/cpu.h
@@ -43,8 +43,8 @@
#include "src/x86/cpu.h"
#endif
-extern unsigned dav1d_cpu_flags;
-extern unsigned dav1d_cpu_flags_mask;
+EXTERN unsigned dav1d_cpu_flags;
+EXTERN unsigned dav1d_cpu_flags_mask;
void dav1d_init_cpu(void);
DAV1D_API void dav1d_set_cpu_flags_mask(unsigned mask);
diff --git a/src/dequant_tables.h b/src/dequant_tables.h
index 4f55595..1776337 100644
--- a/src/dequant_tables.h
+++ b/src/dequant_tables.h
@@ -32,6 +32,6 @@
#include "src/levels.h"
-extern const uint16_t dav1d_dq_tbl[3][QINDEX_RANGE][2];
+EXTERN const uint16_t dav1d_dq_tbl[3][QINDEX_RANGE][2];
#endif /* DAV1D_SRC_DEQUANT_TABLES_H */
diff --git a/src/qm.h b/src/qm.h
index 23b2348..8191c8a 100644
--- a/src/qm.h
+++ b/src/qm.h
@@ -30,7 +30,7 @@
#include "src/levels.h"
-extern const uint8_t *dav1d_qm_tbl[16][2][N_RECT_TX_SIZES];
+EXTERN const uint8_t *dav1d_qm_tbl[16][2][N_RECT_TX_SIZES];
void dav1d_init_qm_tables(void);
diff --git a/src/scan.h b/src/scan.h
index ca9743f..09df988 100644
--- a/src/scan.h
+++ b/src/scan.h
@@ -32,6 +32,6 @@
#include "src/levels.h"
-extern const uint16_t *const dav1d_scans[N_RECT_TX_SIZES];
+EXTERN const uint16_t *const dav1d_scans[N_RECT_TX_SIZES];
#endif /* DAV1D_SRC_SCAN_H */
diff --git a/src/tables.h b/src/tables.h
index 894f8c2..f3c00cf 100644
--- a/src/tables.h
+++ b/src/tables.h
@@ -34,38 +34,38 @@
#include "src/levels.h"
-extern const uint8_t dav1d_al_part_ctx[2][N_BL_LEVELS][N_PARTITIONS];
-extern const uint8_t /* enum BlockSize */
+EXTERN const uint8_t dav1d_al_part_ctx[2][N_BL_LEVELS][N_PARTITIONS];
+EXTERN const uint8_t /* enum BlockSize */
dav1d_block_sizes[N_BL_LEVELS][N_PARTITIONS][2];
// width, height (in 4px blocks), log2 versions of these two
-extern const uint8_t dav1d_block_dimensions[N_BS_SIZES][4];
+EXTERN const uint8_t dav1d_block_dimensions[N_BS_SIZES][4];
typedef struct TxfmInfo {
// width, height (in 4px blocks), log2 of them, min/max of log2, sub, pad
uint8_t w, h, lw, lh, min, max, sub, ctx;
} TxfmInfo;
-extern const TxfmInfo dav1d_txfm_dimensions[N_RECT_TX_SIZES];
-extern const uint8_t /* enum (Rect)TxfmSize */
+EXTERN const TxfmInfo dav1d_txfm_dimensions[N_RECT_TX_SIZES];
+EXTERN const uint8_t /* enum (Rect)TxfmSize */
dav1d_max_txfm_size_for_bs[N_BS_SIZES][4 /* y, 420, 422, 444 */];
-extern const uint8_t /* enum TxfmType */
+EXTERN const uint8_t /* enum TxfmType */
dav1d_txtp_from_uvmode[N_UV_INTRA_PRED_MODES];
-extern const uint8_t /* enum InterPredMode */
+EXTERN const uint8_t /* enum InterPredMode */
dav1d_comp_inter_pred_modes[N_COMP_INTER_PRED_MODES][2];
-extern const uint8_t dav1d_partition_type_count[N_BL_LEVELS];
-extern const uint8_t /* enum TxfmType */ dav1d_tx_types_per_set[40];
+EXTERN const uint8_t dav1d_partition_type_count[N_BL_LEVELS];
+EXTERN const uint8_t /* enum TxfmType */ dav1d_tx_types_per_set[40];
-extern const uint8_t dav1d_filter_mode_to_y_mode[5];
-extern const uint8_t dav1d_ymode_size_context[N_BS_SIZES];
-extern const uint8_t dav1d_lo_ctx_offsets[3][5][5];
-extern const uint8_t dav1d_skip_ctx[5][5];
-extern const uint8_t /* enum TxClass */
+EXTERN const uint8_t dav1d_filter_mode_to_y_mode[5];
+EXTERN const uint8_t dav1d_ymode_size_context[N_BS_SIZES];
+EXTERN const uint8_t dav1d_lo_ctx_offsets[3][5][5];
+EXTERN const uint8_t dav1d_skip_ctx[5][5];
+EXTERN const uint8_t /* enum TxClass */
dav1d_tx_type_class[N_TX_TYPES_PLUS_LL];
-extern const uint8_t /* enum Filter2d */
+EXTERN const uint8_t /* enum Filter2d */
dav1d_filter_2d[DAV1D_N_FILTERS /* h */][DAV1D_N_FILTERS /* v */];
-extern const uint8_t /* enum Dav1dFilterMode */ dav1d_filter_dir[N_2D_FILTERS][2];
-extern const uint8_t dav1d_intra_mode_context[N_INTRA_PRED_MODES];
-extern const uint8_t dav1d_wedge_ctx_lut[N_BS_SIZES];
+EXTERN const uint8_t /* enum Dav1dFilterMode */ dav1d_filter_dir[N_2D_FILTERS][2];
+EXTERN const uint8_t dav1d_intra_mode_context[N_INTRA_PRED_MODES];
+EXTERN const uint8_t dav1d_wedge_ctx_lut[N_BS_SIZES];
static const unsigned cfl_allowed_mask =
(1 << BS_32x32) |
@@ -103,23 +103,23 @@ static const unsigned interintra_allowed_mask =
(1 << BS_8x16) |
(1 << BS_8x8);
-extern const Dav1dWarpedMotionParams dav1d_default_wm_params;
+EXTERN const Dav1dWarpedMotionParams dav1d_default_wm_params;
-extern const int8_t dav1d_cdef_directions[12][2];
+EXTERN const int8_t dav1d_cdef_directions[12][2];
-extern const uint16_t dav1d_sgr_params[16][2];
-extern const uint8_t dav1d_sgr_x_by_x[256];
+EXTERN const uint16_t dav1d_sgr_params[16][2];
+EXTERN const uint8_t dav1d_sgr_x_by_x[256];
-extern const int8_t dav1d_mc_subpel_filters[6][15][8];
-extern const int8_t dav1d_mc_warp_filter[193][8];
-extern const int8_t dav1d_resize_filter[64][8];
+EXTERN const int8_t dav1d_mc_subpel_filters[6][15][8];
+EXTERN const int8_t dav1d_mc_warp_filter[193][8];
+EXTERN const int8_t dav1d_resize_filter[64][8];
-extern const uint8_t dav1d_sm_weights[128];
-extern const uint16_t dav1d_dr_intra_derivative[44];
-extern const int8_t dav1d_filter_intra_taps[5][64];
+EXTERN const uint8_t dav1d_sm_weights[128];
+EXTERN const uint16_t dav1d_dr_intra_derivative[44];
+EXTERN const int8_t dav1d_filter_intra_taps[5][64];
-extern const uint8_t dav1d_obmc_masks[64];
+EXTERN const uint8_t dav1d_obmc_masks[64];
-extern const int16_t dav1d_gaussian_sequence[2048]; // for fgs
+EXTERN const int16_t dav1d_gaussian_sequence[2048]; // for fgs
#endif /* DAV1D_SRC_TABLES_H */
diff --git a/src/wedge.h b/src/wedge.h
index 45f0570..586be98 100644
--- a/src/wedge.h
+++ b/src/wedge.h
@@ -31,11 +31,11 @@
#include "src/levels.h"
void dav1d_init_wedge_masks(void);
-extern const uint8_t *dav1d_wedge_masks[N_BS_SIZES][3 /* 444/luma, 422, 420 */]
+EXTERN const uint8_t *dav1d_wedge_masks[N_BS_SIZES][3 /* 444/luma, 422, 420 */]
[2 /* sign */][16 /* wedge_idx */];
void dav1d_init_interintra_masks(void);
-extern const uint8_t *dav1d_ii_masks[N_BS_SIZES][3 /* 444/luma, 422, 420 */]
+EXTERN const uint8_t *dav1d_ii_masks[N_BS_SIZES][3 /* 444/luma, 422, 420 */]
[N_INTER_INTRA_PRED_MODES];
#endif /* DAV1D_SRC_WEDGE_H */