| Index: source/libvpx/vp9/common/vp9_blockd.h
|
| ===================================================================
|
| --- source/libvpx/vp9/common/vp9_blockd.h (revision 292072)
|
| +++ source/libvpx/vp9/common/vp9_blockd.h (working copy)
|
| @@ -21,6 +21,7 @@
|
| #include "vp9/common/vp9_common_data.h"
|
| #include "vp9/common/vp9_enums.h"
|
| #include "vp9/common/vp9_filter.h"
|
| +#include "vp9/common/vp9_idct.h"
|
| #include "vp9/common/vp9_mv.h"
|
| #include "vp9/common/vp9_scale.h"
|
| #include "vp9/common/vp9_seg_common.h"
|
| @@ -98,6 +99,9 @@
|
| int_mv as_mv[2]; // first, second inter predictor motion vectors
|
| } b_mode_info;
|
|
|
| +// Note that the rate-distortion optimization loop, bit-stream writer, and
|
| +// decoder implementation modules critically rely on the enum entry values
|
| +// specified herein. They should be refactored concurrently.
|
| typedef enum {
|
| NONE = -1,
|
| INTRA_FRAME = 0,
|
| @@ -139,7 +143,8 @@
|
| INTERP_FILTER interp_filter;
|
| } MB_MODE_INFO;
|
|
|
| -typedef struct {
|
| +typedef struct MODE_INFO {
|
| + struct MODE_INFO *src_mi;
|
| MB_MODE_INFO mbmi;
|
| b_mode_info bmi[4];
|
| } MODE_INFO;
|
| @@ -176,7 +181,7 @@
|
| };
|
|
|
| struct macroblockd_plane {
|
| - int16_t *dqcoeff;
|
| + tran_low_t *dqcoeff;
|
| PLANE_TYPE plane_type;
|
| int subsampling_x;
|
| int subsampling_y;
|
| @@ -202,8 +207,7 @@
|
|
|
| int mi_stride;
|
|
|
| - // A NULL indicates that the 8x8 is not part of the image
|
| - MODE_INFO **mi;
|
| + MODE_INFO *mi;
|
|
|
| int up_available;
|
| int left_available;
|
| @@ -223,11 +227,17 @@
|
| /* mc buffer */
|
| DECLARE_ALIGNED(16, uint8_t, mc_buf[80 * 2 * 80 * 2]);
|
|
|
| +#if CONFIG_VP9_HIGHBITDEPTH
|
| + /* Bit depth: 8, 10, 12 */
|
| + int bd;
|
| + DECLARE_ALIGNED(16, uint16_t, mc_buf_high[80 * 2 * 80 * 2]);
|
| +#endif
|
| +
|
| int lossless;
|
|
|
| int corrupted;
|
|
|
| - DECLARE_ALIGNED(16, int16_t, dqcoeff[MAX_MB_PLANE][64 * 64]);
|
| + DECLARE_ALIGNED(16, tran_low_t, dqcoeff[MAX_MB_PLANE][64 * 64]);
|
|
|
| ENTROPY_CONTEXT *above_context[MAX_MB_PLANE];
|
| ENTROPY_CONTEXT left_context[MAX_MB_PLANE][16];
|
| @@ -245,7 +255,7 @@
|
|
|
| static INLINE TX_TYPE get_tx_type(PLANE_TYPE plane_type,
|
| const MACROBLOCKD *xd) {
|
| - const MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi;
|
| + const MB_MODE_INFO *const mbmi = &xd->mi[0].src_mi->mbmi;
|
|
|
| if (plane_type != PLANE_TYPE_Y || is_inter_block(mbmi))
|
| return DCT_DCT;
|
| @@ -254,7 +264,7 @@
|
|
|
| static INLINE TX_TYPE get_tx_type_4x4(PLANE_TYPE plane_type,
|
| const MACROBLOCKD *xd, int ib) {
|
| - const MODE_INFO *const mi = xd->mi[0];
|
| + const MODE_INFO *const mi = xd->mi[0].src_mi;
|
|
|
| if (plane_type != PLANE_TYPE_Y || xd->lossless || is_inter_block(&mi->mbmi))
|
| return DCT_DCT;
|
|
|