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>