Make enum size same for all compilers
Enum size is defined depending upon range of values used in enum.
ATTRIBUTE_PACKED is unused.
Tested with multiple streams with diffrent configuration and
observed no change in memory footprint or encoder/decoder time.
Change-Id: I9bba27c0652ec29153cdbdac58cd3ff891a6a10a
diff --git a/aom/aom_codec.h b/aom/aom_codec.h
index fc0df5b..be3a6c9 100644
--- a/aom/aom_codec.h
+++ b/aom/aom_codec.h
@@ -98,7 +98,7 @@
#define AOM_CODEC_ABI_VERSION (3 + AOM_IMAGE_ABI_VERSION) /**<\hideinitializer*/
/*!\brief Algorithm return codes */
-typedef enum {
+enum {
/*!\brief Operation completed without error */
AOM_CODEC_OK,
@@ -150,7 +150,7 @@
*/
AOM_CODEC_LIST_END
-} aom_codec_err_t;
+} UENUM1BYTE(aom_codec_err_t); /**< enum type algorithm return codes */
/*! \brief Codec capabilities bitfield
*
@@ -221,11 +221,11 @@
* *
* This enumeration determines the bit depth of the codec.
*/
-typedef enum aom_bit_depth {
- AOM_BITS_8 = 8, /**< 8 bits */
- AOM_BITS_10 = 10, /**< 10 bits */
- AOM_BITS_12 = 12, /**< 12 bits */
-} aom_bit_depth_t;
+enum {
+ AOM_BITS_8 = 8, /**< 8 bits */
+ AOM_BITS_10 = 10, /**< 10 bits */
+ AOM_BITS_12 = 12, /**< 12 bits */
+} SENUM1BYTE(aom_bit_depth_t); /**< enum type for codec bit depth*/
/*!\brief Superblock size selection.
*
@@ -233,11 +233,11 @@
* either be fixed at 64x64 or 128x128 pixels, or it can be dynamically
* selected by the encoder for each frame.
*/
-typedef enum aom_superblock_size {
- AOM_SUPERBLOCK_SIZE_64X64, /**< Always use 64x64 superblocks. */
- AOM_SUPERBLOCK_SIZE_128X128, /**< Always use 128x128 superblocks. */
- AOM_SUPERBLOCK_SIZE_DYNAMIC /**< Select superblock size dynamically. */
-} aom_superblock_size_t;
+enum {
+ AOM_SUPERBLOCK_SIZE_64X64, /**< Always use 64x64 superblocks. */
+ AOM_SUPERBLOCK_SIZE_128X128, /**< Always use 128x128 superblocks. */
+ AOM_SUPERBLOCK_SIZE_DYNAMIC /**< Select superblock size dynamically. */
+} SENUM1BYTE(aom_superblock_size_t); /**<enum type super block size selection*/
/*
* Library Version Number Interface
@@ -475,7 +475,7 @@
#endif
/*!\brief OBU types. */
-typedef enum ATTRIBUTE_PACKED {
+enum {
OBU_SEQUENCE_HEADER = 1,
OBU_TEMPORAL_DELIMITER = 2,
OBU_FRAME_HEADER = 3,
@@ -485,17 +485,17 @@
OBU_REDUNDANT_FRAME_HEADER = 7,
OBU_TILE_LIST = 8,
OBU_PADDING = 15,
-} OBU_TYPE;
+} SENUM1BYTE(OBU_TYPE); /**< enum type for OBU*/
/*!\brief OBU metadata types. */
-typedef enum {
+enum {
OBU_METADATA_TYPE_AOM_RESERVED_0 = 0,
OBU_METADATA_TYPE_HDR_CLL = 1,
OBU_METADATA_TYPE_HDR_MDCV = 2,
OBU_METADATA_TYPE_SCALABILITY = 3,
OBU_METADATA_TYPE_ITUT_T35 = 4,
OBU_METADATA_TYPE_TIMECODE = 5,
-} OBU_METADATA_TYPE;
+} UENUM1BYTE(OBU_METADATA_TYPE); /**< enum type for OBU metadata*/
/*!\brief Returns string representation of OBU_TYPE.
*
diff --git a/aom/aom_image.h b/aom/aom_image.h
index 245ef2c..8c6d7e3 100644
--- a/aom/aom_image.h
+++ b/aom/aom_image.h
@@ -55,7 +55,7 @@
} aom_img_fmt_t; /**< alias for enum aom_img_fmt */
/*!\brief List of supported color primaries */
-typedef enum aom_color_primaries {
+enum {
AOM_CICP_CP_RESERVED_0 = 0, /**< For future use */
AOM_CICP_CP_BT_709 = 1, /**< BT.709 */
AOM_CICP_CP_UNSPECIFIED = 2, /**< Unspecified */
@@ -66,17 +66,17 @@
AOM_CICP_CP_SMPTE_240 = 7, /**< SMPTE 240 */
AOM_CICP_CP_GENERIC_FILM =
8, /**< Generic film (color filters using illuminant C) */
- AOM_CICP_CP_BT_2020 = 9, /**< BT.2020, BT.2100 */
- AOM_CICP_CP_XYZ = 10, /**< SMPTE 428 (CIE 1921 XYZ) */
- AOM_CICP_CP_SMPTE_431 = 11, /**< SMPTE RP 431-2 */
- AOM_CICP_CP_SMPTE_432 = 12, /**< SMPTE EG 432-1 */
- AOM_CICP_CP_RESERVED_13 = 13, /**< For future use (values 13 - 21) */
- AOM_CICP_CP_EBU_3213 = 22, /**< EBU Tech. 3213-E */
- AOM_CICP_CP_RESERVED_23 = 23 /**< For future use (values 23 - 255) */
-} aom_color_primaries_t; /**< alias for enum aom_color_primaries */
+ AOM_CICP_CP_BT_2020 = 9, /**< BT.2020, BT.2100 */
+ AOM_CICP_CP_XYZ = 10, /**< SMPTE 428 (CIE 1921 XYZ) */
+ AOM_CICP_CP_SMPTE_431 = 11, /**< SMPTE RP 431-2 */
+ AOM_CICP_CP_SMPTE_432 = 12, /**< SMPTE EG 432-1 */
+ AOM_CICP_CP_RESERVED_13 = 13, /**< For future use (values 13 - 21) */
+ AOM_CICP_CP_EBU_3213 = 22, /**< EBU Tech. 3213-E */
+ AOM_CICP_CP_RESERVED_23 = 23 /**< For future use (values 23 - 255) */
+} UENUM1BYTE(aom_color_primaries_t); /**< alias for enum aom_color_primaries */
/*!\brief List of supported transfer functions */
-typedef enum aom_transfer_characteristics {
+enum {
AOM_CICP_TC_RESERVED_0 = 0, /**< For future use */
AOM_CICP_TC_BT_709 = 1, /**< BT.709 */
AOM_CICP_TC_UNSPECIFIED = 2, /**< Unspecified */
@@ -98,10 +98,10 @@
AOM_CICP_TC_SMPTE_428 = 17, /**< SMPTE ST 428 */
AOM_CICP_TC_HLG = 18, /**< BT.2100 HLG, ARIB STD-B67 */
AOM_CICP_TC_RESERVED_19 = 19 /**< For future use (values 19-255) */
-} aom_transfer_characteristics_t; /**< alias for enum aom_transfer_function */
+} UENUM1BYTE(aom_transfer_characteristics_t); /**<transfer characteristics*/
/*!\brief List of supported matrix coefficients */
-typedef enum aom_matrix_coefficients {
+enum {
AOM_CICP_MC_IDENTITY = 0, /**< Identity matrix */
AOM_CICP_MC_BT_709 = 1, /**< BT.709 */
AOM_CICP_MC_UNSPECIFIED = 2, /**< Unspecified */
@@ -120,22 +120,22 @@
AOM_CICP_MC_CHROMAT_CL = 13, /**< Chromaticity-derived constant luminance */
AOM_CICP_MC_ICTCP = 14, /**< BT.2100 ICtCp */
AOM_CICP_MC_RESERVED_15 = 15 /**< For future use (values 15-255) */
-} aom_matrix_coefficients_t;
+} SENUM1BYTE(aom_matrix_coefficients_t); /**<enum type Matrix Coefficients*/
/*!\brief List of supported color range */
-typedef enum aom_color_range {
- AOM_CR_STUDIO_RANGE = 0, /**< Y [16..235], UV [16..240] */
- AOM_CR_FULL_RANGE = 1 /**< YUV/RGB [0..255] */
-} aom_color_range_t; /**< alias for enum aom_color_range */
+enum {
+ AOM_CR_STUDIO_RANGE = 0, /**< Y [16..235], UV [16..240] */
+ AOM_CR_FULL_RANGE = 1 /**< YUV/RGB [0..255] */
+} UENUM1BYTE(aom_color_range_t); /**< alias for enum aom_color_range */
/*!\brief List of chroma sample positions */
-typedef enum aom_chroma_sample_position {
- AOM_CSP_UNKNOWN = 0, /**< Unknown */
- AOM_CSP_VERTICAL = 1, /**< Horizontally co-located with luma(0, 0)*/
- /**< sample, between two vertical samples */
- AOM_CSP_COLOCATED = 2, /**< Co-located with luma(0, 0) sample */
- AOM_CSP_RESERVED = 3 /**< Reserved value */
-} aom_chroma_sample_position_t; /**< alias for enum aom_transfer_function */
+enum {
+ AOM_CSP_UNKNOWN = 0, /**< Unknown */
+ AOM_CSP_VERTICAL = 1, /**< Horizontally co-located with luma(0, 0)*/
+ /**< sample, between two vertical samples */
+ AOM_CSP_COLOCATED = 2, /**< Co-located with luma(0, 0) sample */
+ AOM_CSP_RESERVED = 3 /**< Reserved value */
+} UENUM1BYTE(aom_chroma_sample_position_t); /**<chroma sample positions*/
/**\brief Image Descriptor */
typedef struct aom_image {
diff --git a/aom/aom_integer.h b/aom/aom_integer.h
index 90263bd..1ce6ea3 100644
--- a/aom/aom_integer.h
+++ b/aom/aom_integer.h
@@ -74,6 +74,36 @@
#define NELEMENTS(x) (int)(sizeof(x) / sizeof(x[0]))
+/*!\brief force enum to be unsigned 1 byte*/
+#define UENUM1BYTE(enumvar) \
+ ; \
+ typedef uint8_t enumvar
+
+/*!\brief force enum to be signed 1 byte*/
+#define SENUM1BYTE(enumvar) \
+ ; \
+ typedef int8_t enumvar
+
+/*!\brief force enum to be unsigned 2 byte*/
+#define UENUM2BYTE(enumvar) \
+ ; \
+ typedef uint16_t enumvar
+
+/*!\brief force enum to be signed 2 byte*/
+#define SENUM2BYTE(enumvar) \
+ ; \
+ typedef int16_t enumvar
+
+/*!\brief force enum to be unsigned 4 byte*/
+#define UENUM4BYTE(enumvar) \
+ ; \
+ typedef uint32_t enumvar
+
+/*!\brief force enum to be unsigned 4 byte*/
+#define SENUM4BYTE(enumvar) \
+ ; \
+ typedef int32_t enumvar
+
#if defined(__cplusplus)
extern "C" {
#endif // __cplusplus
diff --git a/aom/aomcx.h b/aom/aomcx.h
index 982a1f1..2787660 100644
--- a/aom/aomcx.h
+++ b/aom/aomcx.h
@@ -150,7 +150,7 @@
*
* \sa #aom_codec_control
*/
-enum aome_enc_control_id {
+enum {
/*!\brief Codec control function to set which reference frame encoder can use.
*/
AOME_USE_REFERENCE = 7,
@@ -949,18 +949,18 @@
/*!\brief Control to select maximum height for the GF group pyramid structure
* (valid values: 1 - 4) */
AV1E_SET_GF_MAX_PYRAMID_HEIGHT,
-};
+} UENUM1BYTE(aome_enc_control_id); /**<enum type encoder control function*/
/*!\brief aom 1-D scaling mode
*
* This set of constants define 1-D aom scaling modes
*/
-typedef enum aom_scaling_mode_1d {
+enum {
AOME_NORMAL = 0,
AOME_FOURFIVE = 1,
AOME_THREEFIVE = 2,
AOME_ONETWO = 3
-} AOM_SCALING_MODE;
+} UENUM1BYTE(AOM_SCALING_MODE); /**< enum type 1-D scaling mode*/
/*!\brief Max number of segments
*
@@ -1013,30 +1013,30 @@
} aom_scaling_mode_t;
/*!brief AV1 encoder content type */
-typedef enum {
+enum {
AOM_CONTENT_DEFAULT,
AOM_CONTENT_SCREEN,
AOM_CONTENT_INVALID
-} aom_tune_content;
+} SENUM1BYTE(aom_tune_content); /**< anum type encoder content type*/
/*!brief AV1 encoder timing info type signaling */
-typedef enum {
+enum {
AOM_TIMING_UNSPECIFIED,
AOM_TIMING_EQUAL,
AOM_TIMING_DEC_MODEL
-} aom_timing_info_type_t;
+} SENUM1BYTE(aom_timing_info_type_t); /**<encoder timing info type signaling*/
/*!\brief Model tuning parameters
*
* Changes the encoder to tune for certain types of input material.
*
*/
-typedef enum {
+enum {
AOM_TUNE_PSNR,
AOM_TUNE_SSIM,
AOM_TUNE_CDEF_DIST,
AOM_TUNE_DAALA_DIST
-} aom_tune_metric;
+} SENUM1BYTE(aom_tune_metric); /**< enum type model tuning parameters*/
/*!\cond */
/*!\brief Encoder control function parameter type
diff --git a/aom/aomdx.h b/aom/aomdx.h
index c71eaf9..6023c9e 100644
--- a/aom/aomdx.h
+++ b/aom/aomdx.h
@@ -100,15 +100,14 @@
int num;
} av1_ext_ref_frame_t;
-/*!\enum aom_dec_control_id
- * \brief AOM decoder control functions
+/*! \brief AOM decoder control functions
*
* This set of macros define the control functions available for the AOM
* decoder interface.
*
* \sa #aom_codec_control
*/
-enum aom_dec_control_id {
+enum {
/** control function to get info on which reference frames were updated
* by the last decode
*/
@@ -253,7 +252,7 @@
AV1D_SET_SKIP_FILM_GRAIN,
AOM_DECODER_CTRL_ID_MAX,
-};
+} UENUM2BYTE(aom_dec_control_id) /**< enum type decoder control function*/;
/*!\cond */
/*!\brief AOM decoder control function parameter type
diff --git a/aom_dsp/noise_model.h b/aom_dsp/noise_model.h
index 049d5be..5e7de9b 100644
--- a/aom_dsp/noise_model.h
+++ b/aom_dsp/noise_model.h
@@ -158,10 +158,10 @@
int stride, uint8_t *flat_blocks);
// The noise shape indicates the allowed coefficients in the AR model.
-typedef enum {
+enum {
AOM_NOISE_SHAPE_DIAMOND = 0,
AOM_NOISE_SHAPE_SQUARE = 1
-} aom_noise_shape;
+} UENUM1BYTE(aom_noise_shape);
// The parameters of the noise model include the shape type, lag, the
// bit depth of the input images provided, and whether the input images
@@ -202,13 +202,13 @@
} aom_noise_model_t;
/*!\brief Result of a noise model update. */
-typedef enum {
+enum {
AOM_NOISE_STATUS_OK = 0,
AOM_NOISE_STATUS_INVALID_ARGUMENT,
AOM_NOISE_STATUS_INSUFFICIENT_FLAT_BLOCKS,
AOM_NOISE_STATUS_DIFFERENT_NOISE_TYPE,
AOM_NOISE_STATUS_INTERNAL_ERROR,
-} aom_noise_status_t;
+} UENUM1BYTE(aom_noise_status_t);
/*!\brief Initializes a noise model with the given parameters.
*
diff --git a/aom_util/aom_thread.h b/aom_util/aom_thread.h
index bda8b75..0cfb000 100644
--- a/aom_util/aom_thread.h
+++ b/aom_util/aom_thread.h
@@ -363,11 +363,11 @@
#endif // CONFIG_MULTITHREAD
// State of the worker thread object
-typedef enum {
+enum {
NOT_OK = 0, // object is unusable
OK, // ready to work
WORK // busy finishing the current task
-} AVxWorkerStatus;
+} UENUM1BYTE(AVxWorkerStatus);
// Function to be called by the worker thread. Takes two opaque pointers as
// arguments (data1 and data2). Should return true on success and return false
diff --git a/av1/common/av1_loopfilter.c b/av1/common/av1_loopfilter.c
index c5a86fb..838fa29 100644
--- a/av1/common/av1_loopfilter.c
+++ b/av1/common/av1_loopfilter.c
@@ -32,7 +32,7 @@
{ 0, 1 }, { 2, 2 }, { 3, 3 }
};
-typedef enum EDGE_DIR { VERT_EDGE = 0, HORZ_EDGE = 1, NUM_EDGE_DIRS } EDGE_DIR;
+enum { VERT_EDGE = 0, HORZ_EDGE = 1, NUM_EDGE_DIRS } UENUM1BYTE(EDGE_DIR);
static const int mode_lf_lut[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // INTRA_MODES
diff --git a/av1/common/av1_txfm.h b/av1/common/av1_txfm.h
index 59d64ca..14e2c0e 100644
--- a/av1/common/av1_txfm.h
+++ b/av1/common/av1_txfm.h
@@ -110,7 +110,7 @@
typedef void (*FwdTxfm2dFunc)(const int16_t *input, int32_t *output, int stride,
TX_TYPE tx_type, int bd);
-typedef enum TXFM_TYPE {
+enum {
TXFM_TYPE_DCT4,
TXFM_TYPE_DCT8,
TXFM_TYPE_DCT16,
@@ -125,7 +125,7 @@
TXFM_TYPE_IDENTITY32,
TXFM_TYPES,
TXFM_TYPE_INVALID,
-} TXFM_TYPE;
+} UENUM1BYTE(TXFM_TYPE);
typedef struct TXFM_2D_FLIP_CFG {
TX_SIZE tx_size;
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 88afc76..69c01a1 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -38,19 +38,19 @@
#define MAX_DIFFWTD_MASK_BITS 1
// DIFFWTD_MASK_TYPES should not surpass 1 << MAX_DIFFWTD_MASK_BITS
-typedef enum ATTRIBUTE_PACKED {
+enum {
DIFFWTD_38 = 0,
DIFFWTD_38_INV,
DIFFWTD_MASK_TYPES,
-} DIFFWTD_MASK_TYPE;
+} UENUM1BYTE(DIFFWTD_MASK_TYPE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
KEY_FRAME = 0,
INTER_FRAME = 1,
INTRA_ONLY_FRAME = 2, // replaces intra-only
S_FRAME = 3,
FRAME_TYPES,
-} FRAME_TYPE;
+} UENUM1BYTE(FRAME_TYPE);
static INLINE int is_comp_ref_allowed(BLOCK_SIZE bsize) {
return AOMMIN(block_size_wide[bsize], block_size_high[bsize]) >= 8;
@@ -372,7 +372,7 @@
}
#endif
-enum ATTRIBUTE_PACKED mv_precision { MV_PRECISION_Q3, MV_PRECISION_Q4 };
+enum { MV_PRECISION_Q3, MV_PRECISION_Q4 } UENUM1BYTE(mv_precision);
struct buf_2d {
uint8_t *buf;
diff --git a/av1/common/entropy.h b/av1/common/entropy.h
index 991692c..41218d3 100644
--- a/av1/common/entropy.h
+++ b/av1/common/entropy.h
@@ -54,12 +54,12 @@
#define BASE_CONTEXT_POSITION_NUM 12
-typedef enum TX_CLASS {
+enum {
TX_CLASS_2D = 0,
TX_CLASS_HORIZ = 1,
TX_CLASS_VERT = 2,
TX_CLASSES = 3,
-} TX_CLASS;
+} UENUM1BYTE(TX_CLASS);
#define DCT_MAX_VALUE 16384
#define DCT_MAX_VALUE_HIGH10 65536
diff --git a/av1/common/entropymv.h b/av1/common/entropymv.h
index fa818a2..cddc807 100644
--- a/av1/common/entropymv.h
+++ b/av1/common/entropymv.h
@@ -30,12 +30,12 @@
/* Symbols for coding which components are zero jointly */
#define MV_JOINTS 4
-typedef enum {
+enum {
MV_JOINT_ZERO = 0, /* Zero vector */
MV_JOINT_HNZVZ = 1, /* Vert zero, hor nonzero */
MV_JOINT_HZVNZ = 2, /* Hor zero, vert nonzero */
MV_JOINT_HNZVNZ = 3, /* Both components nonzero */
-} MV_JOINT_TYPE;
+} UENUM1BYTE(MV_JOINT_TYPE);
static INLINE int mv_joint_vertical(MV_JOINT_TYPE type) {
return type == MV_JOINT_HZVNZ || type == MV_JOINT_HNZVNZ;
@@ -47,7 +47,7 @@
/* Symbols for coding magnitude class of nonzero components */
#define MV_CLASSES 11
-typedef enum {
+enum {
MV_CLASS_0 = 0, /* (0, 2] integer pel */
MV_CLASS_1 = 1, /* (2, 4] integer pel */
MV_CLASS_2 = 2, /* (4, 8] integer pel */
@@ -59,7 +59,7 @@
MV_CLASS_8 = 8, /* (256, 512] integer pel */
MV_CLASS_9 = 9, /* (512, 1024] integer pel */
MV_CLASS_10 = 10, /* (1024,2048] integer pel */
-} MV_CLASS_TYPE;
+} UENUM1BYTE(MV_CLASS_TYPE);
#define CLASS0_BITS 1 /* bits at integer precision for class 0 */
#define CLASS0_SIZE (1 << CLASS0_BITS)
@@ -91,11 +91,11 @@
nmv_component comps[2];
} nmv_context;
-typedef enum {
+enum {
MV_SUBPEL_NONE = -1,
MV_SUBPEL_LOW_PRECISION = 0,
MV_SUBPEL_HIGH_PRECISION,
-} MvSubpelPrecision;
+} SENUM1BYTE(MvSubpelPrecision);
#ifdef __cplusplus
} // extern "C"
diff --git a/av1/common/enums.h b/av1/common/enums.h
index d7c6279..24d4177 100644
--- a/av1/common/enums.h
+++ b/av1/common/enums.h
@@ -84,12 +84,12 @@
// Profile 2. 8-bit and 10-bit 4:2:2
// 12-bit 4:0:0, 4:2:2 and 4:4:4
// Since we have three bits for the profiles, it can be extended later.
-typedef enum BITSTREAM_PROFILE {
+enum {
PROFILE_0,
PROFILE_1,
PROFILE_2,
MAX_PROFILES,
-} BITSTREAM_PROFILE;
+} SENUM1BYTE(BITSTREAM_PROFILE);
#define LEVEL_MAJOR_BITS 3
#define LEVEL_MINOR_BITS 2
@@ -138,7 +138,7 @@
// 4X4, 8X8, 16X16, 32X32, 64X64, 128X128
#define SQR_BLOCK_SIZES 6
-typedef enum ATTRIBUTE_PACKED {
+enum {
PARTITION_NONE,
PARTITION_HORZ,
PARTITION_VERT,
@@ -152,7 +152,7 @@
EXT_PARTITION_TYPES,
PARTITION_TYPES = PARTITION_SPLIT + 1,
PARTITION_INVALID = 255
-} PARTITION_TYPE;
+} UENUM1BYTE(PARTITION_TYPE);
typedef char PARTITION_CONTEXT;
#define PARTITION_PLOFFSET 4 // number of probability models per block size
@@ -160,12 +160,7 @@
#define PARTITION_CONTEXTS (PARTITION_BLOCK_SIZES * PARTITION_PLOFFSET)
// block transform size
-#if defined(_MSC_VER)
-typedef uint8_t TX_SIZE;
-enum ATTRIBUTE_PACKED {
-#else
-typedef enum ATTRIBUTE_PACKED {
-#endif
+enum {
TX_4X4, // 4x4 transform
TX_8X8, // 8x8 transform
TX_16X16, // 16x16 transform
@@ -189,11 +184,7 @@
TX_SIZES = TX_4X8, // Does NOT include rectangular transforms
TX_SIZES_LARGEST = TX_64X64,
TX_INVALID = 255 // Invalid transform size
-#if defined(_MSC_VER)
-};
-#else
-} TX_SIZE;
-#endif
+} UENUM1BYTE(TX_SIZE);
#define TX_SIZE_LUMA_MIN (TX_4X4)
/* We don't need to code a transform size unless the allowed size is at least
@@ -227,23 +218,23 @@
#define MAX_TX_BLOCKS_IN_MAX_SB (1 << MAX_TX_BLOCKS_IN_MAX_SB_LOG2)
// frame transform mode
-typedef enum ATTRIBUTE_PACKED {
+enum {
ONLY_4X4, // use only 4x4 transform
TX_MODE_LARGEST, // transform size is the largest possible for pu size
TX_MODE_SELECT, // transform specified for each block
TX_MODES,
-} TX_MODE;
+} UENUM1BYTE(TX_MODE);
// 1D tx types
-typedef enum ATTRIBUTE_PACKED {
+enum {
DCT_1D,
ADST_1D,
FLIPADST_1D,
IDTX_1D,
TX_TYPES_1D,
-} TX_TYPE_1D;
+} UENUM1BYTE(TX_TYPE_1D);
-typedef enum ATTRIBUTE_PACKED {
+enum {
DCT_DCT, // DCT in both horizontal and vertical
ADST_DCT, // ADST in vertical, DCT in horizontal
DCT_ADST, // DCT in vertical, ADST in horizontal
@@ -261,9 +252,9 @@
V_FLIPADST, // FLIPADST in vertical, identity in horizontal
H_FLIPADST, // Identity in vertical, FLIPADST in horizontal
TX_TYPES,
-} TX_TYPE;
+} UENUM1BYTE(TX_TYPE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
REG_REG,
REG_SMOOTH,
REG_SHARP,
@@ -273,9 +264,9 @@
SHARP_REG,
SHARP_SMOOTH,
SHARP_SHARP,
-} DUAL_FILTER_TYPE;
+} UENUM1BYTE(DUAL_FILTER_TYPE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
// DCT only
EXT_TX_SET_DCTONLY,
// DCT + Identity only
@@ -289,7 +280,7 @@
// Discrete Trig transforms w/ flip (9) + Identity (1) + 1D Hor/Ver (6)
EXT_TX_SET_ALL16,
EXT_TX_SET_TYPES
-} TxSetType;
+} UENUM1BYTE(TxSetType);
#define IS_2D_TRANSFORM(tx_type) (tx_type < IDTX)
@@ -297,7 +288,7 @@
#define EXT_TX_SETS_INTER 4 // Sets of transform selections for INTER
#define EXT_TX_SETS_INTRA 3 // Sets of transform selections for INTRA
-typedef enum ATTRIBUTE_PACKED {
+enum {
AOM_LAST_FLAG = 1 << 0,
AOM_LAST2_FLAG = 1 << 1,
AOM_LAST3_FLAG = 1 << 2,
@@ -306,19 +297,15 @@
AOM_ALT2_FLAG = 1 << 5,
AOM_ALT_FLAG = 1 << 6,
AOM_REFFRAME_ALL = (1 << 7) - 1
-} AOM_REFFRAME;
+} UENUM1BYTE(AOM_REFFRAME);
-typedef enum ATTRIBUTE_PACKED {
+enum {
UNIDIR_COMP_REFERENCE,
BIDIR_COMP_REFERENCE,
COMP_REFERENCE_TYPES,
-} COMP_REFERENCE_TYPE;
+} UENUM1BYTE(COMP_REFERENCE_TYPE);
-typedef enum ATTRIBUTE_PACKED {
- PLANE_TYPE_Y,
- PLANE_TYPE_UV,
- PLANE_TYPES
-} PLANE_TYPE;
+enum { PLANE_TYPE_Y, PLANE_TYPE_UV, PLANE_TYPES } UENUM1BYTE(PLANE_TYPE);
#define CFL_ALPHABET_SIZE_LOG2 4
#define CFL_ALPHABET_SIZE (1 << CFL_ALPHABET_SIZE_LOG2)
@@ -326,24 +313,20 @@
#define CFL_IDX_U(idx) (idx >> CFL_ALPHABET_SIZE_LOG2)
#define CFL_IDX_V(idx) (idx & (CFL_ALPHABET_SIZE - 1))
-typedef enum ATTRIBUTE_PACKED {
- CFL_PRED_U,
- CFL_PRED_V,
- CFL_PRED_PLANES
-} CFL_PRED_TYPE;
+enum { CFL_PRED_U, CFL_PRED_V, CFL_PRED_PLANES } UENUM1BYTE(CFL_PRED_TYPE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
CFL_SIGN_ZERO,
CFL_SIGN_NEG,
CFL_SIGN_POS,
CFL_SIGNS
-} CFL_SIGN_TYPE;
+} UENUM1BYTE(CFL_SIGN_TYPE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
CFL_DISALLOWED,
CFL_ALLOWED,
CFL_ALLOWED_TYPES
-} CFL_ALLOWED_TYPE;
+} UENUM1BYTE(CFL_ALLOWED_TYPE);
// CFL_SIGN_ZERO,CFL_SIGN_ZERO is invalid
#define CFL_JOINT_SIGNS (CFL_SIGNS * CFL_SIGNS - 1)
@@ -360,12 +343,12 @@
#define CFL_CONTEXT_V(js) \
(CFL_SIGN_V(js) * CFL_SIGNS + CFL_SIGN_U(js) - CFL_SIGNS)
-typedef enum ATTRIBUTE_PACKED {
+enum {
PALETTE_MAP,
COLOR_MAP_TYPES,
-} COLOR_MAP_TYPE;
+} UENUM1BYTE(COLOR_MAP_TYPE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
TWO_COLORS,
THREE_COLORS,
FOUR_COLORS,
@@ -374,9 +357,9 @@
SEVEN_COLORS,
EIGHT_COLORS,
PALETTE_SIZES
-} PALETTE_SIZE;
+} UENUM1BYTE(PALETTE_SIZE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
PALETTE_COLOR_ONE,
PALETTE_COLOR_TWO,
PALETTE_COLOR_THREE,
@@ -386,11 +369,11 @@
PALETTE_COLOR_SEVEN,
PALETTE_COLOR_EIGHT,
PALETTE_COLORS
-} PALETTE_COLOR;
+} UENUM1BYTE(PALETTE_COLOR);
// Note: All directional predictors must be between V_PRED and D67_PRED (both
// inclusive).
-typedef enum ATTRIBUTE_PACKED {
+enum {
DC_PRED, // Average of above and left pixels
V_PRED, // Vertical
H_PRED, // Horizontal
@@ -431,11 +414,11 @@
INTER_MODE_END = MB_MODE_COUNT,
INTRA_MODES = PAETH_PRED + 1, // PAETH_PRED has to be the last intra mode.
INTRA_INVALID = MB_MODE_COUNT // For uv_mode in inter blocks
-} PREDICTION_MODE;
+} UENUM1BYTE(PREDICTION_MODE);
// TODO(ltrudeau) Do we really want to pack this?
// TODO(ltrudeau) Do we match with PREDICTION_MODE?
-typedef enum ATTRIBUTE_PACKED {
+enum {
UV_DC_PRED, // Average of above and left pixels
UV_V_PRED, // Vertical
UV_H_PRED, // Horizontal
@@ -452,38 +435,38 @@
UV_CFL_PRED, // Chroma-from-Luma
UV_INTRA_MODES,
UV_MODE_INVALID, // For uv_mode in inter blocks
-} UV_PREDICTION_MODE;
+} UENUM1BYTE(UV_PREDICTION_MODE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
SIMPLE_TRANSLATION,
OBMC_CAUSAL, // 2-sided OBMC
WARPED_CAUSAL, // 2-sided WARPED
MOTION_MODES
-} MOTION_MODE;
+} UENUM1BYTE(MOTION_MODE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
II_DC_PRED,
II_V_PRED,
II_H_PRED,
II_SMOOTH_PRED,
INTERINTRA_MODES
-} INTERINTRA_MODE;
+} UENUM1BYTE(INTERINTRA_MODE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
COMPOUND_AVERAGE,
COMPOUND_WEDGE,
COMPOUND_DIFFWTD,
COMPOUND_TYPES,
-} COMPOUND_TYPE;
+} UENUM1BYTE(COMPOUND_TYPE);
-typedef enum ATTRIBUTE_PACKED {
+enum {
FILTER_DC_PRED,
FILTER_V_PRED,
FILTER_H_PRED,
FILTER_D157_PRED,
FILTER_PAETH_PRED,
FILTER_INTRA_MODES,
-} FILTER_INTRA_MODE;
+} UENUM1BYTE(FILTER_INTRA_MODE);
#define DIRECTIONAL_MODES 8
#define MAX_ANGLE_DELTA 3
@@ -540,7 +523,7 @@
typedef uint8_t TXFM_CONTEXT;
// An enum for single reference types (and some derived values).
-enum ATTRIBUTE_PACKED {
+enum {
NONE_FRAME = -1,
INTRA_FRAME,
LAST_FRAME,
@@ -579,7 +562,7 @@
#define FWD_RF_OFFSET(ref) (ref - LAST_FRAME)
#define BWD_RF_OFFSET(ref) (ref - BWDREF_FRAME)
-typedef enum ATTRIBUTE_PACKED {
+enum {
LAST_LAST2_FRAMES, // { LAST_FRAME, LAST2_FRAME }
LAST_LAST3_FRAMES, // { LAST_FRAME, LAST3_FRAME }
LAST_GOLDEN_FRAMES, // { LAST_FRAME, GOLDEN_FRAME }
@@ -593,7 +576,7 @@
// NOTE: UNIDIR_COMP_REFS is the number of uni-directional reference pairs
// that are explicitly signaled.
UNIDIR_COMP_REFS = BWDREF_ALTREF_FRAMES + 1,
-} UNIDIR_COMP_REF;
+} UENUM1BYTE(UNIDIR_COMP_REF);
#define TOTAL_COMP_REFS (FWD_REFS * BWD_REFS + TOTAL_UNIDIR_COMP_REFS)
@@ -608,14 +591,14 @@
// NONE_FRAME to (MODE_CTX_REF_FRAMES - 1). Hence, it is not defined as an enum.
typedef int8_t MV_REFERENCE_FRAME;
-typedef enum ATTRIBUTE_PACKED {
+enum {
RESTORE_NONE,
RESTORE_WIENER,
RESTORE_SGRPROJ,
RESTORE_SWITCHABLE,
RESTORE_SWITCHABLE_TYPES = RESTORE_SWITCHABLE,
RESTORE_TYPES = 4,
-} RestorationType;
+} UENUM1BYTE(RestorationType);
#define SUPERRES_SCALE_BITS 3
#define SUPERRES_SCALE_DENOMINATOR_MIN (SCALE_NUMERATOR + 1)
diff --git a/av1/common/filter.h b/av1/common/filter.h
index d7ef5c9..184f5b2 100644
--- a/av1/common/filter.h
+++ b/av1/common/filter.h
@@ -37,12 +37,12 @@
EXTRA_FILTERS = INTERP_FILTERS_ALL - SWITCHABLE_FILTERS,
} InterpFilter;
-typedef enum {
+enum {
USE_2_TAPS_ORIG = 0, // This is used in temporal filtering.
USE_2_TAPS,
USE_4_TAPS,
USE_8_TAPS,
-} SUBPEL_SEARCH_TYPE;
+} UENUM1BYTE(SUBPEL_SEARCH_TYPE);
// Pack two InterpFilter's into a uint32_t: since there are at most 10 filters,
// we can use 16 bits for each and have more than enough space. This reduces
diff --git a/av1/common/mv.h b/av1/common/mv.h
index 737d715..f3a4def 100644
--- a/av1/common/mv.h
+++ b/av1/common/mv.h
@@ -56,13 +56,13 @@
#define WARPEDDIFF_PREC_BITS (WARPEDMODEL_PREC_BITS - WARPEDPIXEL_PREC_BITS)
/* clang-format off */
-typedef enum ATTRIBUTE_PACKED {
+enum {
IDENTITY = 0, // identity transformation, 0-parameter
TRANSLATION = 1, // translational motion 2-parameter
ROTZOOM = 2, // simplified affine with rotation + zoom only, 4-parameter
AFFINE = 3, // affine, 6-parameter
TRANS_TYPES,
-} TransformationType;
+} UENUM1BYTE(TransformationType);
/* clang-format on */
// Number of types used for global motion (must be >= 3 and <= TRANS_TYPES)
diff --git a/av1/common/onyxc_int.h b/av1/common/onyxc_int.h
index 1d85c0f..4b4209a 100644
--- a/av1/common/onyxc_int.h
+++ b/av1/common/onyxc_int.h
@@ -79,14 +79,14 @@
#define TXCOEFF_TIMER 0
#define TXCOEFF_COST_TIMER 0
-typedef enum {
+enum {
SINGLE_REFERENCE = 0,
COMPOUND_REFERENCE = 1,
REFERENCE_MODE_SELECT = 2,
REFERENCE_MODES = 3,
-} REFERENCE_MODE;
+} UENUM1BYTE(REFERENCE_MODE);
-typedef enum {
+enum {
/**
* Frame context updates are disabled
*/
@@ -96,7 +96,7 @@
* updates based on entropy/counts in the decoded frame
*/
REFRESH_FRAME_CONTEXT_BACKWARD,
-} REFRESH_FRAME_CONTEXT_MODE;
+} UENUM1BYTE(REFRESH_FRAME_CONTEXT_MODE);
#define MFMV_STACK_SIZE 3
typedef struct {
@@ -112,7 +112,7 @@
// FIXME(jack.haughton@argondesign.com): This enum was originally in
// encoder/ratectrl.h, and is encoder specific. When we move to C++, this
// should go back there and BufferPool should be templatized.
-typedef enum {
+enum {
INTER_NORMAL = 0,
INTER_LOW = 1,
INTER_HIGH = 2,
@@ -120,7 +120,7 @@
GF_ARF_STD = 4,
KF_STD = 5,
RATE_FACTOR_LEVELS = 6
-} RATE_FACTOR_LEVEL;
+} UENUM1BYTE(RATE_FACTOR_LEVEL);
typedef struct RefCntBuffer {
// For a RefCntBuffer, the following are reference-holding variables:
diff --git a/av1/common/reconinter.h b/av1/common/reconinter.h
index fb825e0..b97f72c 100644
--- a/av1/common/reconinter.h
+++ b/av1/common/reconinter.h
@@ -47,7 +47,7 @@
#define WEDGE_NONE -1
// Angles are with respect to horizontal anti-clockwise
-typedef enum {
+enum {
WEDGE_HORIZONTAL = 0,
WEDGE_VERTICAL = 1,
WEDGE_OBLIQUE27 = 2,
@@ -55,7 +55,7 @@
WEDGE_OBLIQUE117 = 4,
WEDGE_OBLIQUE153 = 5,
WEDGE_DIRECTIONS
-} WedgeDirectionType;
+} UENUM1BYTE(WedgeDirectionType);
// 3-tuple: {direction, x_offset, y_offset}
typedef struct {
diff --git a/av1/common/scan.h b/av1/common/scan.h
index 233dc0e..f9c3392 100644
--- a/av1/common/scan.h
+++ b/av1/common/scan.h
@@ -25,14 +25,14 @@
#define MAX_NEIGHBORS 2
-typedef enum SCAN_MODE {
+enum {
SCAN_MODE_ZIG_ZAG,
SCAN_MODE_COL_DIAG,
SCAN_MODE_ROW_DIAG,
SCAN_MODE_COL_1D,
SCAN_MODE_ROW_1D,
SCAN_MODES
-} SCAN_MODE;
+} UENUM1BYTE(SCAN_MODE);
extern const SCAN_ORDER av1_default_scan_orders[TX_SIZES];
extern const SCAN_ORDER av1_scan_orders[TX_SIZES_ALL][TX_TYPES];
diff --git a/av1/common/seg_common.h b/av1/common/seg_common.h
index 8c35bba..fa7894c 100644
--- a/av1/common/seg_common.h
+++ b/av1/common/seg_common.h
@@ -24,7 +24,7 @@
#define SEG_TEMPORAL_PRED_CTXS 3
#define SPATIAL_PREDICTION_PROBS 3
-typedef enum {
+enum {
SEG_LVL_ALT_Q, // Use alternate Quantizer ....
SEG_LVL_ALT_LF_Y_V, // Use alternate loop filter value on y plane vertical
SEG_LVL_ALT_LF_Y_H, // Use alternate loop filter value on y plane horizontal
@@ -34,7 +34,7 @@
SEG_LVL_SKIP, // Optional Segment (0,0) + skip mode
SEG_LVL_GLOBALMV,
SEG_LVL_MAX
-} SEG_LVL_FEATURES;
+} UENUM1BYTE(SEG_LVL_FEATURES);
struct segmentation {
uint8_t enabled;
diff --git a/av1/common/x86/av1_inv_txfm_ssse3.h b/av1/common/x86/av1_inv_txfm_ssse3.h
index 66bd339..7d5055d 100644
--- a/av1/common/x86/av1_inv_txfm_ssse3.h
+++ b/av1/common/x86/av1_inv_txfm_ssse3.h
@@ -72,13 +72,13 @@
}
// 1D itx types
-typedef enum ATTRIBUTE_PACKED {
+enum {
IDCT_1D,
IADST_1D,
IFLIPADST_1D = IADST_1D,
IIDENTITY_1D,
ITX_TYPES_1D,
-} ITX_TYPE_1D;
+} UENUM1BYTE(ITX_TYPE_1D);
static const ITX_TYPE_1D vitx_1d_tab[TX_TYPES] = {
IDCT_1D, IADST_1D, IDCT_1D, IADST_1D,
diff --git a/av1/decoder/obu.c b/av1/decoder/obu.c
index 9081e0d..58f7d2c 100644
--- a/av1/decoder/obu.c
+++ b/av1/decoder/obu.c
@@ -26,7 +26,7 @@
#include "av1/decoder/obu.h"
// Picture prediction structures (0-12 are predefined) in scalability metadata.
-typedef enum {
+enum {
SCALABILITY_L1T2 = 0,
SCALABILITY_L1T3 = 1,
SCALABILITY_L2T1 = 2,
@@ -42,7 +42,7 @@
SCALABILITY_S2T2h = 12,
SCALABILITY_S2T3h = 13,
SCALABILITY_SS = 14
-} SCALABILITY_STRUCTURES;
+} UENUM1BYTE(SCALABILITY_STRUCTURES);
aom_codec_err_t aom_get_num_layers_from_operating_point_idc(
int operating_point_idc, unsigned int *number_spatial_layers,
diff --git a/av1/encoder/context_tree.h b/av1/encoder/context_tree.h
index 7adb83b..3ced1f5 100644
--- a/av1/encoder/context_tree.h
+++ b/av1/encoder/context_tree.h
@@ -23,7 +23,7 @@
struct AV1Common;
struct ThreadData;
-typedef enum {
+enum {
// Search all the partition types in this plane.
SEARCH_FULL_PLANE = 0,
// Only search none_partition coding block.
@@ -32,7 +32,7 @@
SEARCH_SAME_PLANE = 2,
// Skip search partition on this plane. Go split directly.
SPLIT_PLANE = 3,
-} CB_TREE_SEARCH;
+} UENUM1BYTE(CB_TREE_SEARCH);
// Structure to hold snapshot of coding context during the mode picking process
typedef struct {
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 03ab7a9..c7ca078 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -2348,14 +2348,14 @@
8, 8, 10
};
-typedef enum {
+enum {
MV_ZERO = 0,
MV_LEFT = 1,
MV_UP = 2,
MV_RIGHT = 3,
MV_DOWN = 4,
MV_INVALID
-} MOTION_DIRECTION;
+} UENUM1BYTE(MOTION_DIRECTION);
static INLINE MOTION_DIRECTION get_motion_direction_fp(uint8_t fp_byte) {
if (fp_byte & FPMB_MOTION_ZERO_MASK) {
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index e0c0370..d38321b 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -116,11 +116,11 @@
rate_cost, cpi->oxcf.sharpness);
}
-typedef enum QUANT_FUNC {
+enum {
QUANT_FUNC_LOWBD = 0,
QUANT_FUNC_HIGHBD = 1,
QUANT_FUNC_TYPES = 2
-} QUANT_FUNC;
+} UENUM1BYTE(QUANT_FUNC);
static AV1_QUANT_FACADE
quant_func_list[AV1_XFORM_QUANT_TYPES][QUANT_FUNC_TYPES] = {
diff --git a/av1/encoder/encodemb.h b/av1/encoder/encodemb.h
index 39080de..d4394cf 100644
--- a/av1/encoder/encodemb.h
+++ b/av1/encoder/encodemb.h
@@ -37,13 +37,13 @@
int8_t enable_optimize_b;
};
-typedef enum AV1_XFORM_QUANT {
+enum {
AV1_XFORM_QUANT_FP = 0,
AV1_XFORM_QUANT_B = 1,
AV1_XFORM_QUANT_DC = 2,
AV1_XFORM_QUANT_SKIP_QUANT,
AV1_XFORM_QUANT_TYPES,
-} AV1_XFORM_QUANT;
+} UENUM1BYTE(AV1_XFORM_QUANT);
void av1_encode_sb(const struct AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize,
int mi_row, int mi_col, RUN_TYPE dry_run);
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 83b26a6..eeb307b 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -59,7 +59,7 @@
FRAME_CONTEXT fc;
} CODING_CONTEXT;
-typedef enum {
+enum {
// regular inter frame
REGULAR_FRAME = 0,
// alternate reference frame
@@ -73,22 +73,22 @@
// extra alternate reference frame
EXT_ARF_FRAME = 5,
FRAME_CONTEXT_INDEXES
-} FRAME_CONTEXT_INDEX;
+} UENUM1BYTE(FRAME_CONTEXT_INDEX);
-typedef enum {
+enum {
NORMAL = 0,
FOURFIVE = 1,
THREEFIVE = 2,
ONETWO = 3
-} AOM_SCALING;
+} UENUM1BYTE(AOM_SCALING);
-typedef enum {
+enum {
// Good Quality Fast Encoding. The encoder balances quality with the amount of
// time it takes to encode the output. Speed setting controls how fast.
GOOD
-} MODE;
+} UENUM1BYTE(MODE);
-typedef enum {
+enum {
FRAMEFLAGS_KEY = 1 << 0,
FRAMEFLAGS_GOLDEN = 1 << 1,
FRAMEFLAGS_BWDREF = 1 << 2,
@@ -97,30 +97,30 @@
FRAMEFLAGS_INTRAONLY = 1 << 4,
FRAMEFLAGS_SWITCH = 1 << 5,
FRAMEFLAGS_ERROR_RESILIENT = 1 << 6,
-} FRAMETYPE_FLAGS;
+} UENUM1BYTE(FRAMETYPE_FLAGS);
-typedef enum {
+enum {
NO_AQ = 0,
VARIANCE_AQ = 1,
COMPLEXITY_AQ = 2,
CYCLIC_REFRESH_AQ = 3,
AQ_MODE_COUNT // This should always be the last member of the enum
-} AQ_MODE;
-typedef enum {
+} UENUM1BYTE(AQ_MODE);
+enum {
NO_DELTA_Q = 0,
DELTA_Q_ONLY = 1,
DELTA_Q_LF = 2,
DELTAQ_MODE_COUNT // This should always be the last member of the enum
-} DELTAQ_MODE;
+} UENUM1BYTE(DELTAQ_MODE);
-typedef enum {
+enum {
RESIZE_NONE = 0, // No frame resizing allowed.
RESIZE_FIXED = 1, // All frames are coded at the specified scale.
RESIZE_RANDOM = 2, // All frames are coded at a random scale.
RESIZE_MODES
-} RESIZE_MODE;
+} UENUM1BYTE(RESIZE_MODE);
-typedef enum {
+enum {
SUPERRES_NONE = 0, // No frame superres allowed
SUPERRES_FIXED = 1, // All frames are coded at the specified scale,
// and super-resolved.
@@ -129,7 +129,7 @@
SUPERRES_QTHRESH = 3, // Superres scale for a frame is determined based on
// q_index
SUPERRES_MODES
-} SUPERRES_MODE;
+} UENUM1BYTE(SUPERRES_MODE);
typedef struct TplDepStats {
int64_t intra_cost;
@@ -572,13 +572,13 @@
#if CONFIG_INTERNAL_STATS
// types of stats
-typedef enum {
+enum {
STAT_Y,
STAT_U,
STAT_V,
STAT_ALL,
NUM_STAT_TYPES // This should always be the last member of the enum
-} StatType;
+} UENUM1BYTE(StatType);
typedef struct IMAGE_STAT {
double stat[NUM_STAT_TYPES];
diff --git a/av1/encoder/firstpass.h b/av1/encoder/firstpass.h
index f0e8627..c7e7e70 100644
--- a/av1/encoder/firstpass.h
+++ b/av1/encoder/firstpass.h
@@ -86,7 +86,7 @@
double raw_error_stdev;
} FIRSTPASS_STATS;
-typedef enum {
+enum {
KF_UPDATE = 0,
LF_UPDATE = 1,
GF_UPDATE = 2,
@@ -98,14 +98,14 @@
INTNL_OVERLAY_UPDATE = 8, // Internal Overlay Frame
INTNL_ARF_UPDATE = 9, // Internal Altref Frame (candidate for ALTREF2)
FRAME_UPDATE_TYPES = 10
-} FRAME_UPDATE_TYPE;
+} UENUM1BYTE(FRAME_UPDATE_TYPE);
#define FC_ANIMATION_THRESH 0.15
-typedef enum {
+enum {
FC_NORMAL = 0,
FC_GRAPHICS_ANIMATION = 1,
FRAME_CONTENT_TYPES = 2
-} FRAME_CONTENT_TYPE;
+} UENUM1BYTE(FRAME_CONTENT_TYPE);
typedef struct {
unsigned char index;
diff --git a/av1/encoder/rd.h b/av1/encoder/rd.h
index 2e2a30d..f61c23d 100644
--- a/av1/encoder/rd.h
+++ b/av1/encoder/rd.h
@@ -48,7 +48,7 @@
// This enumerator type needs to be kept aligned with the mode order in
// const MODE_DEFINITION av1_mode_order[MAX_MODES] used in the rd code.
-typedef enum {
+enum {
THR_NEARESTMV,
THR_NEARESTL2,
THR_NEARESTL3,
@@ -246,9 +246,9 @@
MAX_SINGLE_REF_MODES = LAST_SINGLE_REF_MODES + 1,
LAST_COMP_REF_MODES = THR_COMP_GLOBAL_GLOBALBA,
MAX_COMP_REF_MODES = LAST_COMP_REF_MODES + 1
-} THR_MODES;
+} UENUM1BYTE(THR_MODES);
-typedef enum {
+enum {
THR_LAST,
THR_LAST2,
THR_LAST3,
@@ -275,7 +275,7 @@
THR_INTRA,
MAX_REFS
-} THR_MODES_SUB8X8;
+} UENUM1BYTE(THR_MODES_SUB8X8);
typedef struct RD_OPT {
// Thresh_mult is used to set a threshold for the rd score. A higher value
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 3195768..fc86014 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -125,14 +125,14 @@
int64_t sse, int num_samples, int *rate,
int64_t *dist);
-typedef enum {
+enum {
MODELRD_LEGACY,
MODELRD_CURVFIT,
MODELRD_SUFFIT,
MODELRD_DNN,
MODELRD_FULLRDY,
MODELRD_TYPES
-} ModelRdType;
+} UENUM1BYTE(ModelRdType);
static model_rd_for_sb_type model_rd_sb_fn[MODELRD_TYPES] = {
model_rd_for_sb, model_rd_for_sb_with_curvfit, model_rd_for_sb_with_surffit,
@@ -183,12 +183,12 @@
MV_REFERENCE_FRAME ref_frame[2];
} REF_DEFINITION;
-typedef enum {
+enum {
FTXS_NONE = 0,
FTXS_DCT_AND_1D_DCT_ONLY = 1 << 0,
FTXS_DISABLE_TRELLIS_OPT = 1 << 1,
FTXS_USE_TRANSFORM_DOMAIN = 1 << 2
-} FAST_TX_SEARCH_MODE;
+} UENUM1BYTE(FAST_TX_SEARCH_MODE);
static int inter_block_uvrd(const AV1_COMP *cpi, MACROBLOCK *x,
RD_STATS *rd_stats, BLOCK_SIZE bsize,
diff --git a/av1/encoder/reconinter_enc.c b/av1/encoder/reconinter_enc.c
index 9ba2584..1a22676 100644
--- a/av1/encoder/reconinter_enc.c
+++ b/av1/encoder/reconinter_enc.c
@@ -310,7 +310,7 @@
InterpFilters interp_filters,
const WarpTypesAllowed *warp_types, int p_col,
int p_row, int plane, int ref,
- enum mv_precision precision, int x, int y,
+ mv_precision precision, int x, int y,
const MACROBLOCKD *xd, int can_use_previous) {
const int is_q4 = precision == MV_PRECISION_Q4;
const MV mv_q4 = { is_q4 ? src_mv->row : src_mv->row * 2,
diff --git a/av1/encoder/reconinter_enc.h b/av1/encoder/reconinter_enc.h
index 10d5e8c..3476c51 100644
--- a/av1/encoder/reconinter_enc.h
+++ b/av1/encoder/reconinter_enc.h
@@ -46,7 +46,7 @@
InterpFilters interp_filters,
const WarpTypesAllowed *warp_types, int p_col,
int p_row, int plane, int ref,
- enum mv_precision precision, int x, int y,
+ mv_precision precision, int x, int y,
const MACROBLOCKD *xd, int can_use_previous);
// Detect if the block have sub-pixel level motion vectors
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index a9d9338..916e260 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -73,7 +73,7 @@
(1 << THR_ALTR) | (1 << THR_GOLD)
};
-typedef enum {
+enum {
TXFM_CODING_SF = 1,
INTER_PRED_SF = 2,
INTRA_PRED_SF = 4,
@@ -82,9 +82,9 @@
RD_SKIP_SF = 32,
RESERVE_2_SF = 64,
RESERVE_3_SF = 128,
-} DEV_SPEED_FEATURES;
+} UENUM1BYTE(DEV_SPEED_FEATURES);
-typedef enum {
+enum {
DIAMOND = 0,
NSTEP = 1,
HEX = 2,
@@ -92,9 +92,9 @@
SQUARE = 4,
FAST_HEX = 5,
FAST_DIAMOND = 6
-} SEARCH_METHODS;
+} UENUM1BYTE(SEARCH_METHODS);
-typedef enum {
+enum {
// No recode.
DISALLOW_RECODE = 0,
// Allow recode for KF and exceeding maximum frame bandwidth.
@@ -103,28 +103,28 @@
ALLOW_RECODE_KFARFGF = 2,
// Allow recode for all frames based on bitrate constraints.
ALLOW_RECODE = 3,
-} RECODE_LOOP_TYPE;
+} UENUM1BYTE(RECODE_LOOP_TYPE);
-typedef enum {
+enum {
SUBPEL_TREE = 0,
SUBPEL_TREE_PRUNED = 1, // Prunes 1/2-pel searches
SUBPEL_TREE_PRUNED_MORE = 2, // Prunes 1/2-pel searches more aggressively
SUBPEL_TREE_PRUNED_EVENMORE = 3, // Prunes 1/2- and 1/4-pel searches
// Other methods to come
-} SUBPEL_SEARCH_METHODS;
+} UENUM1BYTE(SUBPEL_SEARCH_METHODS);
-typedef enum {
+enum {
USE_FULL_RD = 0,
USE_FAST_RD,
USE_LARGESTALL,
-} TX_SIZE_SEARCH_METHOD;
+} UENUM1BYTE(TX_SIZE_SEARCH_METHOD);
-typedef enum {
+enum {
NOT_IN_USE = 0,
RELAXED_NEIGHBORING_MIN_MAX = 1
-} AUTO_MIN_MAX_MODE;
+} UENUM1BYTE(AUTO_MIN_MAX_MODE);
-typedef enum {
+enum {
// Try the full image with different values.
LPF_PICK_FROM_FULL_IMAGE,
// Try a small portion of the image with different values.
@@ -133,9 +133,9 @@
LPF_PICK_FROM_Q,
// Pick 0 to disable LPF if LPF was enabled last frame
LPF_PICK_MINIMAL_LPF
-} LPF_PICK_METHOD;
+} UENUM1BYTE(LPF_PICK_METHOD);
-typedef enum {
+enum {
// Terminate search early based on distortion so far compared to
// qp step, distortion in the neighborhood of the frame, etc.
FLAG_EARLY_TERMINATE = 1 << 0,
@@ -152,9 +152,9 @@
// Skips intra modes other than DC_PRED if the source variance is small
FLAG_SKIP_INTRA_LOWVAR = 1 << 5,
-} MODE_SEARCH_SKIP_LOGIC;
+} UENUM1BYTE(MODE_SEARCH_SKIP_LOGIC);
-typedef enum {
+enum {
NO_PRUNE = 0,
// eliminates one tx type in vertical and horizontal direction
PRUNE_ONE = 1,
@@ -165,7 +165,7 @@
PRUNE_2D_ACCURATE = 3,
// similar, but applies much more aggressive pruning to get better speed-up
PRUNE_2D_FAST = 4,
-} TX_TYPE_PRUNE_MODE;
+} UENUM1BYTE(TX_TYPE_PRUNE_MODE);
typedef struct {
TX_TYPE_PRUNE_MODE prune_mode;
@@ -184,7 +184,7 @@
int skip_tx_search;
} TX_TYPE_SEARCH;
-typedef enum {
+enum {
// Search partitions using RD criterion
SEARCH_PARTITION,
@@ -192,9 +192,14 @@
FIXED_PARTITION,
REFERENCE_PARTITION
-} PARTITION_SEARCH_TYPE;
+} UENUM1BYTE(PARTITION_SEARCH_TYPE);
-typedef enum { EIGHTH_PEL, QUARTER_PEL, HALF_PEL, FULL_PEL } SUBPEL_FORCE_STOP;
+enum {
+ EIGHTH_PEL,
+ QUARTER_PEL,
+ HALF_PEL,
+ FULL_PEL
+} UENUM1BYTE(SUBPEL_FORCE_STOP);
typedef struct MV_SPEED_FEATURES {
// Motion search method (Diamond, NSTEP, Hex, Big Diamond, Square, etc).
@@ -228,35 +233,35 @@
int interval;
} MESH_PATTERN;
-typedef enum {
+enum {
GM_FULL_SEARCH,
GM_REDUCED_REF_SEARCH,
GM_DISABLE_SEARCH
-} GM_SEARCH_TYPE;
+} UENUM1BYTE(GM_SEARCH_TYPE);
-typedef enum {
+enum {
GM_ERRORADV_TR_0,
GM_ERRORADV_TR_1,
GM_ERRORADV_TR_2,
GM_ERRORADV_TR_TYPES,
-} GM_ERRORADV_TYPE;
+} UENUM1BYTE(GM_ERRORADV_TYPE);
-typedef enum {
+enum {
NO_TRELLIS_OPT, // No trellis optimization
FULL_TRELLIS_OPT, // Trellis optimization in all stages
FINAL_PASS_TRELLIS_OPT // Trellis optimization in only the final encode pass
-} TRELLIS_OPT_TYPE;
+} UENUM1BYTE(TRELLIS_OPT_TYPE);
-typedef enum {
+enum {
FULL_TXFM_RD,
LOW_TXFM_RD,
-} TXFM_RD_MODEL;
+} UENUM1BYTE(TXFM_RD_MODEL);
-typedef enum {
+enum {
JNT_COMP_ENABLED,
JNT_COMP_SKIP_MV_SEARCH,
JNT_COMP_DISABLED,
-} JNT_COMP_FLAG;
+} UENUM1BYTE(JNT_COMP_FLAG);
typedef struct SPEED_FEATURES {
MV_SPEED_FEATURES mv;
diff --git a/av1/encoder/temporal_filter.c b/av1/encoder/temporal_filter.c
index 8c13bef..d26a264 100644
--- a/av1/encoder/temporal_filter.c
+++ b/av1/encoder/temporal_filter.c
@@ -42,7 +42,7 @@
int stride, int uv_block_width, int uv_block_height, int mv_row, int mv_col,
uint8_t *pred, struct scale_factors *scale, int x, int y,
int can_use_previous, int num_planes, MV *blk_mvs, int use_32x32) {
- enum mv_precision mv_precision_uv;
+ mv_precision mv_precision_uv;
int uv_stride;
// TODO(angiebird): change plane setting accordingly
ConvolveParams conv_params = get_conv_params(0, 0, xd->bd);
diff --git a/av1/encoder/tokenize.h b/av1/encoder/tokenize.h
index 63b505f..c80af7b 100644
--- a/av1/encoder/tokenize.h
+++ b/av1/encoder/tokenize.h
@@ -38,11 +38,11 @@
uint8_t allow_update_cdf;
};
-typedef enum {
+enum {
OUTPUT_ENABLED = 0,
DRY_RUN_NORMAL,
DRY_RUN_COSTCOEFFS,
-} RUN_TYPE;
+} UENUM1BYTE(RUN_TYPE);
// Note in all the tokenize functions rate if non NULL is incremented
// with the coefficient token cost only if dry_run = DRY_RUN_COSTCOEFS,
diff --git a/common/tools_common.h b/common/tools_common.h
index df3b62b..92b287c 100644
--- a/common/tools_common.h
+++ b/common/tools_common.h
@@ -78,11 +78,11 @@
};
// Used in lightfield example.
-typedef enum OUTPUT_FORMAT {
+enum {
YUV1D, // 1D tile output for conformance test.
YUV, // Tile output in YUV format.
NV12, // Tile output in NV12 format.
-} OUTPUT_FORMAT;
+} UENUM1BYTE(OUTPUT_FORMAT);
struct FileTypeDetectionBuffer {
char buf[4];
diff --git a/common/video_writer.h b/common/video_writer.h
index 3e2b655..14bdc1b 100644
--- a/common/video_writer.h
+++ b/common/video_writer.h
@@ -14,7 +14,7 @@
#include "common/video_common.h"
-typedef enum { kContainerIVF } AvxContainer;
+enum { kContainerIVF } UENUM1BYTE(AvxContainer);
struct AvxVideoWriterStruct;
typedef struct AvxVideoWriterStruct AvxVideoWriter;
diff --git a/common/webmenc.h b/common/webmenc.h
index 4cdfd68..a4aa992 100644
--- a/common/webmenc.h
+++ b/common/webmenc.h
@@ -30,13 +30,13 @@
};
/* Stereo 3D packed frame format */
-typedef enum stereo_format {
+enum {
STEREO_FORMAT_MONO = 0,
STEREO_FORMAT_LEFT_RIGHT = 1,
STEREO_FORMAT_BOTTOM_TOP = 2,
STEREO_FORMAT_TOP_BOTTOM = 3,
STEREO_FORMAT_RIGHT_LEFT = 11
-} stereo_format_t;
+} UENUM1BYTE(stereo_format_t);
// The following functions wrap libwebm's mkvmuxer. All functions return 0 upon
// success, or -1 upon failure.
diff --git a/test/av1_txfm_test.h b/test/av1_txfm_test.h
index a181647..5a56d28 100644
--- a/test/av1_txfm_test.h
+++ b/test/av1_txfm_test.h
@@ -29,14 +29,14 @@
#include "av1/common/enums.h"
namespace libaom_test {
-typedef enum {
+enum {
TYPE_DCT = 0,
TYPE_ADST,
TYPE_IDTX,
TYPE_IDCT,
TYPE_IADST,
TYPE_LAST
-} TYPE_TXFM;
+} UENUM1BYTE(TYPE_TXFM);
int get_txfm1d_size(TX_SIZE tx_size);
diff --git a/test/quantize_func_test.cc b/test/quantize_func_test.cc
index 8dee864..e0e4c6a 100644
--- a/test/quantize_func_test.cc
+++ b/test/quantize_func_test.cc
@@ -63,7 +63,7 @@
HBD_QUAN_FUNC;
}
-typedef enum { TYPE_B, TYPE_DC, TYPE_FP } QuantType;
+enum { TYPE_B, TYPE_DC, TYPE_FP } UENUM1BYTE(QuantType);
using ::testing::tuple;
typedef tuple<QuantizeFunc, QuantizeFunc, TX_SIZE, QuantType, aom_bit_depth_t>