Doxygen comments for restoration info structures
Change-Id: I5d2003b08178cb5856088e71e20560f15a9de443
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 2f14635..7a05224 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -419,16 +419,36 @@
#define BLOCK_OFFSET(i) ((i) << 4)
+/*!\endcond */
+
+/*!\brief Parameters related to Wiener Filter */
typedef struct {
+ /*!
+ * Vertical filter kernel.
+ */
DECLARE_ALIGNED(16, InterpKernel, vfilter);
+
+ /*!
+ * Horizontal filter kernel.
+ */
DECLARE_ALIGNED(16, InterpKernel, hfilter);
} WienerInfo;
+/*!\brief Parameters related to Sgrproj Filter */
typedef struct {
+ /*!
+ * Parameter index.
+ */
int ep;
+
+ /*!
+ * Weights for linear combination of filtered versions
+ */
int xqd[2];
} SgrprojInfo;
+/*!\cond */
+
#if CONFIG_DEBUG
#define CFL_SUB8X8_VAL_MI_SIZE (4)
#define CFL_SUB8X8_VAL_MI_SQUARE \
diff --git a/av1/common/enums.h b/av1/common/enums.h
index 0c09a1b..77d2b6a 100644
--- a/av1/common/enums.h
+++ b/av1/common/enums.h
@@ -22,6 +22,10 @@
extern "C" {
#endif
+/*! @file */
+
+/*!\cond */
+
#undef MAX_SB_SIZE
// Max superblock size
@@ -636,15 +640,21 @@
// NONE_FRAME to (MODE_CTX_REF_FRAMES - 1). Hence, it is not defined as an enum.
typedef int8_t MV_REFERENCE_FRAME;
-enum {
- RESTORE_NONE,
- RESTORE_WIENER,
- RESTORE_SGRPROJ,
- RESTORE_SWITCHABLE,
- RESTORE_SWITCHABLE_TYPES = RESTORE_SWITCHABLE,
- RESTORE_TYPES = 4,
-} UENUM1BYTE(RestorationType);
+/*!\endcond */
+/*!\enum RestorationType
+ * \brief This enumeration defines various restoration types supported
+ */
+typedef enum {
+ RESTORE_NONE, /**< No restoration */
+ RESTORE_WIENER, /**< Separable Wiener restoration */
+ RESTORE_SGRPROJ, /**< Selfguided restoration */
+ RESTORE_SWITCHABLE, /**< Switchable restoration */
+ RESTORE_SWITCHABLE_TYPES = RESTORE_SWITCHABLE, /**< Num Switchable types */
+ RESTORE_TYPES = 4, /**< Num Restore types */
+} RestorationType;
+
+/*!\cond */
// Picture prediction structures (0-12 are predefined) in scalability metadata.
enum {
SCALABILITY_L1T2 = 0,
@@ -671,6 +681,8 @@
#define MAX_EXTERNAL_REFERENCES 128
#define MAX_TILES 512
+/*!\endcond */
+
#ifdef __cplusplus
} // extern "C"
#endif
diff --git a/av1/common/restoration.h b/av1/common/restoration.h
index 3b80dd5..317072a 100644
--- a/av1/common/restoration.h
+++ b/av1/common/restoration.h
@@ -22,6 +22,10 @@
extern "C" {
#endif
+/*! @file */
+
+/*!\cond */
+
// Border for Loop restoration buffer
#define AOM_RESTORATION_FRAME_BORDER 32
#define CLIP(x, lo, hi) ((x) < (lo) ? (lo) : (x) > (hi) ? (hi) : (x))
@@ -183,13 +187,28 @@
int r[2]; // radii
int s[2]; // sgr parameters for r[0] and r[1], based on GenSgrprojVtable()
} sgr_params_type;
+/*!\endcond */
+/*!\brief Parameters related to Restoration Unit Info */
typedef struct {
+ /*!
+ * restoration type
+ */
RestorationType restoration_type;
+
+ /*!
+ * Wiener filter parameters if restoration_type indicates Wiener
+ */
WienerInfo wiener_info;
+
+ /*!
+ * Sgrproj filter parameters if restoration_type indicates Sgrproj
+ */
SgrprojInfo sgrproj_info;
} RestorationUnitInfo;
+/*!\cond */
+
// A restoration line buffer needs space for two lines plus a horizontal filter
// margin of RESTORATION_EXTRA_HORZ on each side.
#define RESTORATION_LINEBUFFER_WIDTH \
@@ -207,33 +226,89 @@
uint16_t tmp_save_above[RESTORATION_BORDER][RESTORATION_LINEBUFFER_WIDTH];
uint16_t tmp_save_below[RESTORATION_BORDER][RESTORATION_LINEBUFFER_WIDTH];
} RestorationLineBuffers;
+/*!\endcond */
+/*!\brief Parameters related to Restoration Stripe boundaries */
typedef struct {
+ /*!
+ * stripe boundary above
+ */
uint8_t *stripe_boundary_above;
+
+ /*!
+ * stripe boundary below
+ */
uint8_t *stripe_boundary_below;
+
+ /*!
+ * strides for stripe boundaries above and below
+ */
int stripe_boundary_stride;
+
+ /*!
+ * size of stripe boundaries above and below
+ */
int stripe_boundary_size;
} RestorationStripeBoundaries;
+/*!\brief Parameters related to Restoration Info */
typedef struct {
+ /*!
+ * Restoration type for frame
+ */
RestorationType frame_restoration_type;
+
+ /*!
+ * Restoration unit size
+ */
int restoration_unit_size;
- // Fields below here are allocated and initialised by
- // av1_alloc_restoration_struct. (horz_)units_per_tile give the number of
- // restoration units in (one row of) the largest tile in the frame. The data
- // in unit_info is laid out with units_per_tile entries for each tile, which
- // have stride horz_units_per_tile.
- //
- // Even if there are tiles of different sizes, the data in unit_info is laid
- // out as if all tiles are of full size.
+ /**
+ * \name Fields allocated and initialised by av1_alloc_restoration_struct.
+ * (horz_)units_per_tile give the number of restoration units in
+ * (one row of) the largest tile in the frame.
+ */
+ /**@{*/
+ /*!
+ * Number of units per tile for the largest tile in the frame
+ */
int units_per_tile;
- int vert_units_per_tile, horz_units_per_tile;
+
+ /*!
+ * Number of vertical units per tile
+ */
+ int vert_units_per_tile;
+
+ /*!
+ * Number of horizontal units per tile for the largest tile in the frame
+ */
+ int horz_units_per_tile;
+ /**@}*/
+
+ /*!
+ * List of info for units in tile.
+ * The data in unit_info is laid out with units_per_tile entries for each
+ * tile, which have stride horz_units_per_tile.
+ * Even if there are tiles of different sizes, the data in unit_info is
+ * laid out as if all tiles are of full size.
+ */
RestorationUnitInfo *unit_info;
+
+ /*!
+ * Restoration Stripe boundary info
+ */
RestorationStripeBoundaries boundaries;
+
+ /*!
+ * Whether optimized lr can be used for speed.
+ * That includes cases of no cdef and no superres, or if fast trial runs
+ * are used on the encoder side.
+ */
int optimized_lr;
} RestorationInfo;
+/*!\cond */
+
static INLINE void set_default_sgrproj(SgrprojInfo *sgrproj_info) {
sgrproj_info->xqd[0] = (SGRPROJ_PRJ_MIN0 + SGRPROJ_PRJ_MAX0) / 2;
sgrproj_info->xqd[1] = (SGRPROJ_PRJ_MIN1 + SGRPROJ_PRJ_MAX1) / 2;
@@ -373,6 +448,9 @@
void av1_lr_sync_read_dummy(void *const lr_sync, int r, int c, int plane);
void av1_lr_sync_write_dummy(void *const lr_sync, int r, int c,
const int sb_cols, int plane);
+
+/*!\endcond */
+
#ifdef __cplusplus
} // extern "C"
#endif
diff --git a/av1/encoder/pickrst.h b/av1/encoder/pickrst.h
index a515a3a..2463361 100644
--- a/av1/encoder/pickrst.h
+++ b/av1/encoder/pickrst.h
@@ -68,7 +68,7 @@
*
* \return Nothing is returned. Instead, chosen restoration filter
* types and parameters are stored per plane in the \c rst_info structure
- * inside \c cpi-> \c common:
+ * of type \ref RestorationInfo inside \c cpi->common:
* \arg \c rst_info[ \c 0 ]: Chosen parameters for Y plane
* \arg \c rst_info[ \c 1 ]: Chosen parameters for U plane if it exists
* \arg \c rst_info[ \c 2 ]: Chosen parameters for V plane if it exists
@@ -81,12 +81,13 @@
* where \c n( \c p ) is the number of restoration units in plane \c p.
* \par
* The following fields in each \c rst_info[ \c p ].\c unit_info[ \c u ],
- * \c p = 0, 1, 2 and \c u = 0, 1, ..., \c n( \c p ) - 1,
- * are populated:
+ * \c p = 0, 1, 2 and \c u = 0, 1, ..., \c n( \c p ) - 1, of type
+ * \ref RestorationUnitInfo are populated:
* \arg \c rst_info[ \c p ].\c unit_info[ \c u ].\c restoration_type
* \arg \c rst_info[ \c p ].\c unit_info[ \c u ].\c wiener_info OR
* \c rst_info[ \c p ].\c unit_info[ \c u ].\c sgrproj_info OR
- * neither, depending on \c restoration_type.
+ * neither, depending on
+ * \c rst_info[ \c p ].\c unit_info[ \c u ].\c restoration_type
*
*/
void av1_pick_filter_restoration(const YV12_BUFFER_CONFIG *sd, AV1_COMP *cpi);
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index e35cf42..44910e7 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -24,7 +24,6 @@
/*! @file */
/*!\cond */
-
#define MAX_MESH_STEP 4
typedef struct MESH_PATTERN {
diff --git a/docs.cmake b/docs.cmake
index c26fd27..48e4128 100644
--- a/docs.cmake
+++ b/docs.cmake
@@ -29,9 +29,11 @@
"${AOM_ROOT}/aom/aom_image.h"
"${AOM_ROOT}/aom/aom_integer.h"
"${AOM_ROOT}/av1/common/av1_common_int.h"
+ "${AOM_ROOT}/av1/common/av1_loopfilter.h"
"${AOM_ROOT}/av1/common/blockd.h"
"${AOM_ROOT}/av1/common/cdef.h"
- "${AOM_ROOT}/av1/common/av1_loopfilter.h"
+ "${AOM_ROOT}/av1/common/enums.h"
+ "${AOM_ROOT}/av1/common/restoration.h"
"${AOM_ROOT}/keywords.dox"
"${AOM_ROOT}/mainpage.dox"
"${AOM_ROOT}/usage.dox")