Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
aom-rav1e
Commits
31596ee8
Commit
31596ee8
authored
Sep 19, 2014
by
hkuang
Committed by
Gerrit Code Review
Sep 19, 2014
Browse files
Merge "Remove mi_grid_* structures."
parents
930f825a
c70cea97
Changes
31
Expand all
Hide whitespace changes
Inline
Side-by-side
vp9/common/vp9_alloccommon.c
View file @
31596ee8
...
...
@@ -44,14 +44,8 @@ void vp9_set_mb_mi(VP9_COMMON *cm, int width, int height) {
static
void
setup_mi
(
VP9_COMMON
*
cm
)
{
cm
->
mi
=
cm
->
mip
+
cm
->
mi_stride
+
1
;
cm
->
prev_mi
=
cm
->
prev_mip
+
cm
->
mi_stride
+
1
;
cm
->
mi_grid_visible
=
cm
->
mi_grid_base
+
cm
->
mi_stride
+
1
;
cm
->
prev_mi_grid_visible
=
cm
->
prev_mi_grid_base
+
cm
->
mi_stride
+
1
;
vpx_memset
(
cm
->
mip
,
0
,
cm
->
mi_stride
*
(
cm
->
mi_rows
+
1
)
*
sizeof
(
*
cm
->
mip
));
vpx_memset
(
cm
->
mi_grid_base
,
0
,
cm
->
mi_stride
*
(
cm
->
mi_rows
+
1
)
*
sizeof
(
*
cm
->
mi_grid_base
));
clear_mi_border
(
cm
,
cm
->
prev_mip
);
}
...
...
@@ -63,11 +57,6 @@ static int alloc_mi(VP9_COMMON *cm, int mi_size) {
(
MODE_INFO
*
)
vpx_calloc
(
mi_size
,
sizeof
(
MODE_INFO
));
if
(
cm
->
mip_array
[
i
]
==
NULL
)
return
1
;
cm
->
mi_grid_base_array
[
i
]
=
(
MODE_INFO
**
)
vpx_calloc
(
mi_size
,
sizeof
(
MODE_INFO
*
));
if
(
cm
->
mi_grid_base_array
[
i
]
==
NULL
)
return
1
;
}
cm
->
mi_alloc_size
=
mi_size
;
...
...
@@ -78,8 +67,6 @@ static int alloc_mi(VP9_COMMON *cm, int mi_size) {
cm
->
mip
=
cm
->
mip_array
[
cm
->
mi_idx
];
cm
->
prev_mip
=
cm
->
mip_array
[
cm
->
prev_mi_idx
];
cm
->
mi_grid_base
=
cm
->
mi_grid_base_array
[
cm
->
mi_idx
];
cm
->
prev_mi_grid_base
=
cm
->
mi_grid_base_array
[
cm
->
prev_mi_idx
];
return
0
;
}
...
...
@@ -90,14 +77,10 @@ static void free_mi(VP9_COMMON *cm) {
for
(
i
=
0
;
i
<
2
;
++
i
)
{
vpx_free
(
cm
->
mip_array
[
i
]);
cm
->
mip_array
[
i
]
=
NULL
;
vpx_free
(
cm
->
mi_grid_base_array
[
i
]);
cm
->
mi_grid_base_array
[
i
]
=
NULL
;
}
cm
->
mip
=
NULL
;
cm
->
prev_mip
=
NULL
;
cm
->
mi_grid_base
=
NULL
;
cm
->
prev_mi_grid_base
=
NULL
;
}
void
vp9_free_ref_frame_buffers
(
VP9_COMMON
*
cm
)
{
...
...
@@ -224,12 +207,8 @@ void vp9_swap_mi_and_prev_mi(VP9_COMMON *cm) {
// Current mip will be the prev_mip for the next frame.
cm
->
mip
=
cm
->
mip_array
[
cm
->
mi_idx
];
cm
->
prev_mip
=
cm
->
mip_array
[
cm
->
prev_mi_idx
];
cm
->
mi_grid_base
=
cm
->
mi_grid_base_array
[
cm
->
mi_idx
];
cm
->
prev_mi_grid_base
=
cm
->
mi_grid_base_array
[
cm
->
prev_mi_idx
];
// Update the upper left visible macroblock ptrs.
cm
->
mi
=
cm
->
mip
+
cm
->
mi_stride
+
1
;
cm
->
prev_mi
=
cm
->
prev_mip
+
cm
->
mi_stride
+
1
;
cm
->
mi_grid_visible
=
cm
->
mi_grid_base
+
cm
->
mi_stride
+
1
;
cm
->
prev_mi_grid_visible
=
cm
->
prev_mi_grid_base
+
cm
->
mi_stride
+
1
;
}
vp9/common/vp9_blockd.c
View file @
31596ee8
...
...
@@ -40,7 +40,7 @@ void vp9_foreach_transformed_block_in_plane(
const
MACROBLOCKD
*
const
xd
,
BLOCK_SIZE
bsize
,
int
plane
,
foreach_transformed_block_visitor
visit
,
void
*
arg
)
{
const
struct
macroblockd_plane
*
const
pd
=
&
xd
->
plane
[
plane
];
const
MB_MODE_INFO
*
mbmi
=
&
xd
->
mi
[
0
]
->
mbmi
;
const
MB_MODE_INFO
*
mbmi
=
&
xd
->
mi
[
0
]
.
src_mi
->
mbmi
;
// block and transform sizes, in number of 4x4 blocks log 2 ("*_b")
// 4x4=0, 8x8=2, 16x16=4, 32x32=6, 64x64=8
// transform size varies per plane, look it up in a common way.
...
...
vp9/common/vp9_blockd.h
View file @
31596ee8
...
...
@@ -143,7 +143,8 @@ typedef struct {
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
;
...
...
@@ -206,8 +207,7 @@ typedef struct macroblockd {
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
;
...
...
@@ -255,7 +255,7 @@ extern const TX_TYPE intra_mode_to_tx_type_lookup[INTRA_MODES];
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
;
...
...
@@ -264,7 +264,7 @@ static INLINE TX_TYPE get_tx_type(PLANE_TYPE plane_type,
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
;
...
...
vp9/common/vp9_debugmodes.c
View file @
31596ee8
...
...
@@ -26,7 +26,8 @@ static void print_mi_data(VP9_COMMON *cm, FILE *file, const char *descriptor,
size_t
member_offset
)
{
int
mi_row
,
mi_col
;
int
mi_index
=
0
;
MODE_INFO
**
mi
=
cm
->
mi_grid_visible
;
// TODO(hkuang): Fix this debug function.
MODE_INFO
**
mi
=
NULL
;
int
rows
=
cm
->
mi_rows
;
int
cols
=
cm
->
mi_cols
;
char
prefix
=
descriptor
[
0
];
...
...
@@ -51,7 +52,8 @@ void vp9_print_modes_and_motion_vectors(VP9_COMMON *cm, const char *file) {
int
mi_col
;
int
mi_index
=
0
;
FILE
*
mvs
=
fopen
(
file
,
"a"
);
MODE_INFO
**
mi
=
cm
->
mi_grid_visible
;
// TODO(hkuang): Fix this debug function.
MODE_INFO
**
mi
=
NULL
;
int
rows
=
cm
->
mi_rows
;
int
cols
=
cm
->
mi_cols
;
...
...
vp9/common/vp9_entropy.h
View file @
31596ee8
...
...
@@ -214,7 +214,7 @@ static INLINE int get_entropy_context(TX_SIZE tx_size, const ENTROPY_CONTEXT *a,
static
INLINE
const
scan_order
*
get_scan
(
const
MACROBLOCKD
*
xd
,
TX_SIZE
tx_size
,
PLANE_TYPE
type
,
int
block_idx
)
{
const
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
];
const
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
]
.
src_mi
;
if
(
is_inter_block
(
&
mi
->
mbmi
)
||
type
!=
PLANE_TYPE_Y
||
xd
->
lossless
)
{
return
&
vp9_default_scan_orders
[
tx_size
];
...
...
vp9/common/vp9_loopfilter.c
View file @
31596ee8
...
...
@@ -619,12 +619,12 @@ static void build_y_mask(const loop_filter_info_n *const lfi_n,
// by mi_row, mi_col.
// TODO(JBB): This function only works for yv12.
void
vp9_setup_mask
(
VP9_COMMON
*
const
cm
,
const
int
mi_row
,
const
int
mi_col
,
MODE_INFO
*
*
mi
,
const
int
mode_info_stride
,
MODE_INFO
*
mi
,
const
int
mode_info_stride
,
LOOP_FILTER_MASK
*
lfm
)
{
int
idx_32
,
idx_16
,
idx_8
;
const
loop_filter_info_n
*
const
lfi_n
=
&
cm
->
lf_info
;
MODE_INFO
*
*
mip
=
mi
;
MODE_INFO
*
*
mip2
=
mi
;
MODE_INFO
*
mip
=
mi
;
MODE_INFO
*
mip2
=
mi
;
// These are offsets to the next mi in the 64x64 block. It is what gets
// added to the mi ptr as we go through each loop. It helps us to avoid
...
...
@@ -652,28 +652,28 @@ void vp9_setup_mask(VP9_COMMON *const cm, const int mi_row, const int mi_col,
cm
->
mi_cols
-
mi_col
:
MI_BLOCK_SIZE
);
vp9_zero
(
*
lfm
);
assert
(
mip
[
0
]
!=
NULL
);
assert
(
mip
!=
NULL
);
// TODO(jimbankoski): Try moving most of the following code into decode
// loop and storing lfm in the mbmi structure so that we don't have to go
// through the recursive loop structure multiple times.
switch
(
mip
[
0
]
->
mbmi
.
sb_type
)
{
switch
(
mip
->
mbmi
.
sb_type
)
{
case
BLOCK_64X64
:
build_masks
(
lfi_n
,
mip
[
0
]
,
0
,
0
,
lfm
);
build_masks
(
lfi_n
,
mip
,
0
,
0
,
lfm
);
break
;
case
BLOCK_64X32
:
build_masks
(
lfi_n
,
mip
[
0
]
,
0
,
0
,
lfm
);
build_masks
(
lfi_n
,
mip
,
0
,
0
,
lfm
);
mip2
=
mip
+
mode_info_stride
*
4
;
if
(
4
>=
max_rows
)
break
;
build_masks
(
lfi_n
,
mip2
[
0
]
,
32
,
8
,
lfm
);
build_masks
(
lfi_n
,
mip2
,
32
,
8
,
lfm
);
break
;
case
BLOCK_32X64
:
build_masks
(
lfi_n
,
mip
[
0
]
,
0
,
0
,
lfm
);
build_masks
(
lfi_n
,
mip
,
0
,
0
,
lfm
);
mip2
=
mip
+
4
;
if
(
4
>=
max_cols
)
break
;
build_masks
(
lfi_n
,
mip2
[
0
]
,
4
,
2
,
lfm
);
build_masks
(
lfi_n
,
mip2
,
4
,
2
,
lfm
);
break
;
default:
for
(
idx_32
=
0
;
idx_32
<
4
;
mip
+=
offset_32
[
idx_32
],
++
idx_32
)
{
...
...
@@ -683,23 +683,23 @@ void vp9_setup_mask(VP9_COMMON *const cm, const int mi_row, const int mi_col,
const
int
mi_32_row_offset
=
((
idx_32
>>
1
)
<<
2
);
if
(
mi_32_col_offset
>=
max_cols
||
mi_32_row_offset
>=
max_rows
)
continue
;
switch
(
mip
[
0
]
->
mbmi
.
sb_type
)
{
switch
(
mip
->
mbmi
.
sb_type
)
{
case
BLOCK_32X32
:
build_masks
(
lfi_n
,
mip
[
0
]
,
shift_y
,
shift_uv
,
lfm
);
build_masks
(
lfi_n
,
mip
,
shift_y
,
shift_uv
,
lfm
);
break
;
case
BLOCK_32X16
:
build_masks
(
lfi_n
,
mip
[
0
]
,
shift_y
,
shift_uv
,
lfm
);
build_masks
(
lfi_n
,
mip
,
shift_y
,
shift_uv
,
lfm
);
if
(
mi_32_row_offset
+
2
>=
max_rows
)
continue
;
mip2
=
mip
+
mode_info_stride
*
2
;
build_masks
(
lfi_n
,
mip2
[
0
]
,
shift_y
+
16
,
shift_uv
+
4
,
lfm
);
build_masks
(
lfi_n
,
mip2
,
shift_y
+
16
,
shift_uv
+
4
,
lfm
);
break
;
case
BLOCK_16X32
:
build_masks
(
lfi_n
,
mip
[
0
]
,
shift_y
,
shift_uv
,
lfm
);
build_masks
(
lfi_n
,
mip
,
shift_y
,
shift_uv
,
lfm
);
if
(
mi_32_col_offset
+
2
>=
max_cols
)
continue
;
mip2
=
mip
+
2
;
build_masks
(
lfi_n
,
mip2
[
0
]
,
shift_y
+
2
,
shift_uv
+
1
,
lfm
);
build_masks
(
lfi_n
,
mip2
,
shift_y
+
2
,
shift_uv
+
1
,
lfm
);
break
;
default:
for
(
idx_16
=
0
;
idx_16
<
4
;
mip
+=
offset_16
[
idx_16
],
++
idx_16
)
{
...
...
@@ -713,29 +713,29 @@ void vp9_setup_mask(VP9_COMMON *const cm, const int mi_row, const int mi_col,
if
(
mi_16_col_offset
>=
max_cols
||
mi_16_row_offset
>=
max_rows
)
continue
;
switch
(
mip
[
0
]
->
mbmi
.
sb_type
)
{
switch
(
mip
->
mbmi
.
sb_type
)
{
case
BLOCK_16X16
:
build_masks
(
lfi_n
,
mip
[
0
]
,
shift_y
,
shift_uv
,
lfm
);
build_masks
(
lfi_n
,
mip
,
shift_y
,
shift_uv
,
lfm
);
break
;
case
BLOCK_16X8
:
build_masks
(
lfi_n
,
mip
[
0
]
,
shift_y
,
shift_uv
,
lfm
);
build_masks
(
lfi_n
,
mip
,
shift_y
,
shift_uv
,
lfm
);
if
(
mi_16_row_offset
+
1
>=
max_rows
)
continue
;
mip2
=
mip
+
mode_info_stride
;
build_y_mask
(
lfi_n
,
mip2
[
0
]
,
shift_y
+
8
,
lfm
);
build_y_mask
(
lfi_n
,
mip2
,
shift_y
+
8
,
lfm
);
break
;
case
BLOCK_8X16
:
build_masks
(
lfi_n
,
mip
[
0
]
,
shift_y
,
shift_uv
,
lfm
);
build_masks
(
lfi_n
,
mip
,
shift_y
,
shift_uv
,
lfm
);
if
(
mi_16_col_offset
+
1
>=
max_cols
)
continue
;
mip2
=
mip
+
1
;
build_y_mask
(
lfi_n
,
mip2
[
0
]
,
shift_y
+
1
,
lfm
);
build_y_mask
(
lfi_n
,
mip2
,
shift_y
+
1
,
lfm
);
break
;
default:
{
const
int
shift_y
=
shift_32_y
[
idx_32
]
+
shift_16_y
[
idx_16
]
+
shift_8_y
[
0
];
build_masks
(
lfi_n
,
mip
[
0
]
,
shift_y
,
shift_uv
,
lfm
);
build_masks
(
lfi_n
,
mip
,
shift_y
,
shift_uv
,
lfm
);
mip
+=
offset
[
0
];
for
(
idx_8
=
1
;
idx_8
<
4
;
mip
+=
offset
[
idx_8
],
++
idx_8
)
{
const
int
shift_y
=
shift_32_y
[
idx_32
]
+
...
...
@@ -749,7 +749,7 @@ void vp9_setup_mask(VP9_COMMON *const cm, const int mi_row, const int mi_col,
if
(
mi_8_col_offset
>=
max_cols
||
mi_8_row_offset
>=
max_rows
)
continue
;
build_y_mask
(
lfi_n
,
mip
[
0
]
,
shift_y
,
lfm
);
build_y_mask
(
lfi_n
,
mip
,
shift_y
,
lfm
);
}
break
;
}
...
...
@@ -905,7 +905,7 @@ static void filter_selectively_vert(uint8_t *s, int pitch,
static
void
filter_block_plane_non420
(
VP9_COMMON
*
cm
,
struct
macroblockd_plane
*
plane
,
MODE_INFO
*
*
mi_8x8
,
MODE_INFO
*
mi_8x8
,
int
mi_row
,
int
mi_col
)
{
const
int
ss_x
=
plane
->
subsampling_x
;
const
int
ss_y
=
plane
->
subsampling_y
;
...
...
@@ -929,7 +929,7 @@ static void filter_block_plane_non420(VP9_COMMON *cm,
// Determine the vertical edges that need filtering
for
(
c
=
0
;
c
<
MI_BLOCK_SIZE
&&
mi_col
+
c
<
cm
->
mi_cols
;
c
+=
col_step
)
{
const
MODE_INFO
*
mi
=
mi_8x8
[
c
];
const
MODE_INFO
*
mi
=
mi_8x8
[
c
]
.
src_mi
;
const
BLOCK_SIZE
sb_type
=
mi
[
0
].
mbmi
.
sb_type
;
const
int
skip_this
=
mi
[
0
].
mbmi
.
skip
&&
is_inter_block
(
&
mi
[
0
].
mbmi
);
// left edge of current unit is block/partition edge -> no skip
...
...
@@ -1204,7 +1204,7 @@ void vp9_loop_filter_rows(YV12_BUFFER_CONFIG *frame_buffer,
int
mi_row
,
mi_col
;
for
(
mi_row
=
start
;
mi_row
<
stop
;
mi_row
+=
MI_BLOCK_SIZE
)
{
MODE_INFO
*
*
mi
=
cm
->
mi
_grid_visible
+
mi_row
*
cm
->
mi_stride
;
MODE_INFO
*
mi
=
cm
->
mi
+
mi_row
*
cm
->
mi_stride
;
for
(
mi_col
=
0
;
mi_col
<
cm
->
mi_cols
;
mi_col
+=
MI_BLOCK_SIZE
)
{
int
plane
;
...
...
vp9/common/vp9_loopfilter.h
View file @
31596ee8
...
...
@@ -89,7 +89,7 @@ struct VP9LfSyncData;
// by mi_row, mi_col.
void
vp9_setup_mask
(
struct
VP9Common
*
const
cm
,
const
int
mi_row
,
const
int
mi_col
,
MODE_INFO
*
*
mi_8x8
,
const
int
mode_info_stride
,
MODE_INFO
*
mi_8x8
,
const
int
mode_info_stride
,
LOOP_FILTER_MASK
*
lfm
);
void
vp9_filter_block_plane
(
struct
VP9Common
*
const
cm
,
...
...
vp9/common/vp9_mvref_common.c
View file @
31596ee8
...
...
@@ -21,9 +21,9 @@ static void find_mv_refs_idx(const VP9_COMMON *cm, const MACROBLOCKD *xd,
const
int
*
ref_sign_bias
=
cm
->
ref_frame_sign_bias
;
int
i
,
refmv_count
=
0
;
const
MODE_INFO
*
prev_mi
=
!
cm
->
error_resilient_mode
&&
cm
->
prev_mi
?
cm
->
prev_mi
_grid_visible
[
mi_row
*
xd
->
mi_stride
+
mi_col
]
?
cm
->
prev_mi
[
mi_row
*
xd
->
mi_stride
+
mi_col
]
.
src_mi
:
NULL
;
const
MB_MODE_INFO
*
const
prev_mbmi
=
prev_mi
?
&
prev_mi
->
mbmi
:
NULL
;
const
MB_MODE_INFO
*
const
prev_mbmi
=
prev_mi
?
&
prev_mi
->
src_mi
->
mbmi
:
NULL
;
const
POSITION
*
const
mv_ref_search
=
mv_ref_blocks
[
mi
->
mbmi
.
sb_type
];
...
...
@@ -41,7 +41,7 @@ static void find_mv_refs_idx(const VP9_COMMON *cm, const MACROBLOCKD *xd,
const
POSITION
*
const
mv_ref
=
&
mv_ref_search
[
i
];
if
(
is_inside
(
tile
,
mi_col
,
mi_row
,
cm
->
mi_rows
,
mv_ref
))
{
const
MODE_INFO
*
const
candidate_mi
=
xd
->
mi
[
mv_ref
->
col
+
mv_ref
->
row
*
xd
->
mi_stride
];
xd
->
mi_stride
]
.
src_mi
;
const
MB_MODE_INFO
*
const
candidate
=
&
candidate_mi
->
mbmi
;
// Keep counts for entropy encoding.
context_counter
+=
mode_2_counter
[
candidate
->
mode
];
...
...
@@ -61,7 +61,7 @@ static void find_mv_refs_idx(const VP9_COMMON *cm, const MACROBLOCKD *xd,
const
POSITION
*
const
mv_ref
=
&
mv_ref_search
[
i
];
if
(
is_inside
(
tile
,
mi_col
,
mi_row
,
cm
->
mi_rows
,
mv_ref
))
{
const
MB_MODE_INFO
*
const
candidate
=
&
xd
->
mi
[
mv_ref
->
col
+
mv_ref
->
row
*
xd
->
mi_stride
]
->
mbmi
;
xd
->
mi_stride
]
.
src_mi
->
mbmi
;
different_ref_found
=
1
;
if
(
candidate
->
ref_frame
[
0
]
==
ref_frame
)
...
...
@@ -87,7 +87,7 @@ static void find_mv_refs_idx(const VP9_COMMON *cm, const MACROBLOCKD *xd,
const
POSITION
*
mv_ref
=
&
mv_ref_search
[
i
];
if
(
is_inside
(
tile
,
mi_col
,
mi_row
,
cm
->
mi_rows
,
mv_ref
))
{
const
MB_MODE_INFO
*
const
candidate
=
&
xd
->
mi
[
mv_ref
->
col
+
mv_ref
->
row
*
xd
->
mi_stride
]
->
mbmi
;
*
xd
->
mi_stride
]
.
src_mi
->
mbmi
;
// If the candidate is INTRA we don't want to consider its mv.
IF_DIFF_REF_FRAME_ADD_MV
(
candidate
);
...
...
@@ -145,7 +145,7 @@ void vp9_append_sub8x8_mvs_for_idx(VP9_COMMON *cm, MACROBLOCKD *xd,
int
block
,
int
ref
,
int
mi_row
,
int
mi_col
,
int_mv
*
nearest
,
int_mv
*
near
)
{
int_mv
mv_list
[
MAX_MV_REF_CANDIDATES
];
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
];
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
]
.
src_mi
;
b_mode_info
*
bmi
=
mi
->
bmi
;
int
n
;
...
...
vp9/common/vp9_onyxc_int.h
View file @
31596ee8
...
...
@@ -150,11 +150,6 @@ typedef struct VP9Common {
MODE_INFO
*
prev_mip
;
/* MODE_INFO array 'mip' from last decoded frame */
MODE_INFO
*
prev_mi
;
/* 'mi' from last frame (points into prev_mip) */
MODE_INFO
**
mi_grid_base
;
MODE_INFO
**
mi_grid_visible
;
MODE_INFO
**
prev_mi_grid_base
;
MODE_INFO
**
prev_mi_grid_visible
;
// Persistent mb segment id map used in prediction.
unsigned
char
*
last_frame_seg_map
;
...
...
vp9/common/vp9_pred_common.c
View file @
31596ee8
...
...
@@ -348,7 +348,7 @@ int vp9_get_pred_context_single_ref_p2(const MACROBLOCKD *xd) {
// left of the entries corresponding to real blocks.
// The prediction flags in these dummy entries are initialized to 0.
int
vp9_get_tx_size_context
(
const
MACROBLOCKD
*
xd
)
{
const
int
max_tx_size
=
max_txsize_lookup
[
xd
->
mi
[
0
]
->
mbmi
.
sb_type
];
const
int
max_tx_size
=
max_txsize_lookup
[
xd
->
mi
[
0
]
.
src_mi
->
mbmi
.
sb_type
];
const
MB_MODE_INFO
*
const
above_mbmi
=
get_mbmi
(
get_above_mi
(
xd
));
const
MB_MODE_INFO
*
const
left_mbmi
=
get_mbmi
(
get_left_mi
(
xd
));
const
int
has_above
=
above_mbmi
!=
NULL
;
...
...
vp9/common/vp9_pred_common.h
View file @
31596ee8
...
...
@@ -19,11 +19,11 @@ extern "C" {
#endif
static
INLINE
const
MODE_INFO
*
get_above_mi
(
const
MACROBLOCKD
*
const
xd
)
{
return
xd
->
up_available
?
xd
->
mi
[
-
xd
->
mi_stride
]
:
NULL
;
return
xd
->
up_available
?
xd
->
mi
[
-
xd
->
mi_stride
]
.
src_mi
:
NULL
;
}
static
INLINE
const
MODE_INFO
*
get_left_mi
(
const
MACROBLOCKD
*
const
xd
)
{
return
xd
->
left_available
?
xd
->
mi
[
-
1
]
:
NULL
;
return
xd
->
left_available
?
xd
->
mi
[
-
1
]
.
src_mi
:
NULL
;
}
int
vp9_get_segment_id
(
const
VP9_COMMON
*
cm
,
const
uint8_t
*
segment_ids
,
...
...
vp9/common/vp9_reconinter.c
View file @
31596ee8
...
...
@@ -262,7 +262,7 @@ static void build_inter_predictors(MACROBLOCKD *xd, int plane, int block,
int
x
,
int
y
,
int
w
,
int
h
,
int
mi_x
,
int
mi_y
)
{
struct
macroblockd_plane
*
const
pd
=
&
xd
->
plane
[
plane
];
const
MODE_INFO
*
mi
=
xd
->
mi
[
0
];
const
MODE_INFO
*
mi
=
xd
->
mi
[
0
]
.
src_mi
;
const
int
is_compound
=
has_second_ref
(
&
mi
->
mbmi
);
const
InterpKernel
*
kernel
=
vp9_get_interp_kernel
(
mi
->
mbmi
.
interp_filter
);
int
ref
;
...
...
@@ -335,7 +335,7 @@ static void build_inter_predictors_for_planes(MACROBLOCKD *xd, BLOCK_SIZE bsize,
const
int
bw
=
4
*
num_4x4_w
;
const
int
bh
=
4
*
num_4x4_h
;
if
(
xd
->
mi
[
0
]
->
mbmi
.
sb_type
<
BLOCK_8X8
)
{
if
(
xd
->
mi
[
0
]
.
src_mi
->
mbmi
.
sb_type
<
BLOCK_8X8
)
{
int
i
=
0
,
x
,
y
;
assert
(
bsize
==
BLOCK_8X8
);
for
(
y
=
0
;
y
<
num_4x4_h
;
++
y
)
...
...
@@ -371,7 +371,7 @@ static void dec_build_inter_predictors(MACROBLOCKD *xd, int plane, int block,
int
x
,
int
y
,
int
w
,
int
h
,
int
mi_x
,
int
mi_y
)
{
struct
macroblockd_plane
*
const
pd
=
&
xd
->
plane
[
plane
];
const
MODE_INFO
*
mi
=
xd
->
mi
[
0
];
const
MODE_INFO
*
mi
=
xd
->
mi
[
0
]
.
src_mi
;
const
int
is_compound
=
has_second_ref
(
&
mi
->
mbmi
);
const
InterpKernel
*
kernel
=
vp9_get_interp_kernel
(
mi
->
mbmi
.
interp_filter
);
int
ref
;
...
...
@@ -561,7 +561,7 @@ void vp9_dec_build_inter_predictors_sb(MACROBLOCKD *xd, int mi_row, int mi_col,
const
int
bw
=
4
*
num_4x4_w
;
const
int
bh
=
4
*
num_4x4_h
;
if
(
xd
->
mi
[
0
]
->
mbmi
.
sb_type
<
BLOCK_8X8
)
{
if
(
xd
->
mi
[
0
]
.
src_mi
->
mbmi
.
sb_type
<
BLOCK_8X8
)
{
int
i
=
0
,
x
,
y
;
assert
(
bsize
==
BLOCK_8X8
);
for
(
y
=
0
;
y
<
num_4x4_h
;
++
y
)
...
...
vp9/decoder/vp9_decodeframe.c
View file @
31596ee8
...
...
@@ -249,7 +249,7 @@ static void predict_and_reconstruct_intra_block(int plane, int block,
VP9_COMMON
*
const
cm
=
args
->
cm
;
MACROBLOCKD
*
const
xd
=
args
->
xd
;
struct
macroblockd_plane
*
const
pd
=
&
xd
->
plane
[
plane
];
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
];
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
]
.
src_mi
;
const
PREDICTION_MODE
mode
=
(
plane
==
0
)
?
get_y_mode
(
mi
,
block
)
:
mi
->
mbmi
.
uv_mode
;
int
x
,
y
;
...
...
@@ -305,12 +305,14 @@ static MB_MODE_INFO *set_offsets(VP9_COMMON *const cm, MACROBLOCKD *const xd,
const
int
offset
=
mi_row
*
cm
->
mi_stride
+
mi_col
;
int
x
,
y
;
xd
->
mi
=
cm
->
mi_grid_visible
+
offset
;
xd
->
mi
[
0
]
=
&
cm
->
mi
[
offset
];
xd
->
mi
[
0
]
->
mbmi
.
sb_type
=
bsize
;
xd
->
mi
=
cm
->
mi
+
offset
;
xd
->
mi
[
0
].
src_mi
=
&
xd
->
mi
[
0
];
// Point to self.
xd
->
mi
[
0
].
mbmi
.
sb_type
=
bsize
;
for
(
y
=
0
;
y
<
y_mis
;
++
y
)
for
(
x
=
!
y
;
x
<
x_mis
;
++
x
)
xd
->
mi
[
y
*
cm
->
mi_stride
+
x
]
=
xd
->
mi
[
0
];
for
(
x
=
!
y
;
x
<
x_mis
;
++
x
)
{
xd
->
mi
[
y
*
cm
->
mi_stride
+
x
].
src_mi
=
&
xd
->
mi
[
0
];
}
set_skip_context
(
xd
,
mi_row
,
mi_col
);
...
...
@@ -319,12 +321,12 @@ static MB_MODE_INFO *set_offsets(VP9_COMMON *const cm, MACROBLOCKD *const xd,
set_mi_row_col
(
xd
,
tile
,
mi_row
,
bh
,
mi_col
,
bw
,
cm
->
mi_rows
,
cm
->
mi_cols
);
vp9_setup_dst_planes
(
xd
->
plane
,
get_frame_new_buffer
(
cm
),
mi_row
,
mi_col
);
return
&
xd
->
mi
[
0
]
->
mbmi
;
return
&
xd
->
mi
[
0
]
.
mbmi
;
}
static
void
set_ref
(
VP9_COMMON
*
const
cm
,
MACROBLOCKD
*
const
xd
,
int
idx
,
int
mi_row
,
int
mi_col
)
{
MB_MODE_INFO
*
const
mbmi
=
&
xd
->
mi
[
0
]
->
mbmi
;
MB_MODE_INFO
*
const
mbmi
=
&
xd
->
mi
[
0
]
.
src_mi
->
mbmi
;
RefBuffer
*
ref_buffer
=
&
cm
->
frame_refs
[
mbmi
->
ref_frame
[
idx
]
-
LAST_FRAME
];
xd
->
block_refs
[
idx
]
=
ref_buffer
;
if
(
!
vp9_is_valid_scale
(
&
ref_buffer
->
sf
))
...
...
vp9/decoder/vp9_decodemv.c
View file @
31596ee8
...
...
@@ -103,7 +103,7 @@ static int read_intra_segment_id(VP9_COMMON *const cm, MACROBLOCKD *const xd,
int
mi_row
,
int
mi_col
,
vp9_reader
*
r
)
{
struct
segmentation
*
const
seg
=
&
cm
->
seg
;
const
BLOCK_SIZE
bsize
=
xd
->
mi
[
0
]
->
mbmi
.
sb_type
;
const
BLOCK_SIZE
bsize
=
xd
->
mi
[
0
]
.
src_mi
->
mbmi
.
sb_type
;
int
segment_id
;
if
(
!
seg
->
enabled
)
...
...
@@ -120,7 +120,7 @@ static int read_intra_segment_id(VP9_COMMON *const cm, MACROBLOCKD *const xd,
static
int
read_inter_segment_id
(
VP9_COMMON
*
const
cm
,
MACROBLOCKD
*
const
xd
,
int
mi_row
,
int
mi_col
,
vp9_reader
*
r
)
{
struct
segmentation
*
const
seg
=
&
cm
->
seg
;
MB_MODE_INFO
*
const
mbmi
=
&
xd
->
mi
[
0
]
->
mbmi
;
MB_MODE_INFO
*
const
mbmi
=
&
xd
->
mi
[
0
]
.
src_mi
->
mbmi
;
const
BLOCK_SIZE
bsize
=
mbmi
->
sb_type
;
int
predicted_segment_id
,
segment_id
;
...
...
@@ -160,10 +160,10 @@ static int read_skip(VP9_COMMON *cm, const MACROBLOCKD *xd,
static
void
read_intra_frame_mode_info
(
VP9_COMMON
*
const
cm
,
MACROBLOCKD
*
const
xd
,
int
mi_row
,
int
mi_col
,
vp9_reader
*
r
)
{
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
];
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
]
.
src_mi
;
MB_MODE_INFO
*
const
mbmi
=
&
mi
->
mbmi
;
const
MODE_INFO
*
above_mi
=
xd
->
mi
[
-
cm
->
mi_stride
];
const
MODE_INFO
*
left_mi
=
xd
->
left_available
?
xd
->
mi
[
-
1
]
:
NULL
;
const
MODE_INFO
*
above_mi
=
xd
->
mi
[
-
cm
->
mi_stride
]
.
src_mi
;
const
MODE_INFO
*
left_mi
=
xd
->
left_available
?
xd
->
mi
[
-
1
]
.
src_mi
:
NULL
;
const
BLOCK_SIZE
bsize
=
mbmi
->
sb_type
;
int
i
;
...
...
@@ -519,7 +519,7 @@ static void read_inter_frame_mode_info(VP9_COMMON *const cm,
MACROBLOCKD
*
const
xd
,
const
TileInfo
*
const
tile
,
int
mi_row
,
int
mi_col
,
vp9_reader
*
r
)
{
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
];
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
]
.
src_mi
;
MB_MODE_INFO
*
const
mbmi
=
&
mi
->
mbmi
;
int
inter_block
;
...
...
vp9/decoder/vp9_detokenize.c
View file @
31596ee8
...
...
@@ -60,7 +60,7 @@ static int decode_coefs(VP9_COMMON *cm, const MACROBLOCKD *xd, PLANE_TYPE type,
const
int
max_eob
=
16
<<
(
tx_size
<<
1
);
const
FRAME_CONTEXT
*
const
fc
=
&
cm
->
fc
;
FRAME_COUNTS
*
const
counts
=
&
cm
->
counts
;
const
int
ref
=
is_inter_block
(
&
xd
->
mi
[
0
]
->
mbmi
);
const
int
ref
=
is_inter_block
(
&
xd
->
mi
[
0
]
.
src_mi
->
mbmi
);
int
band
,
c
=
0
;
const
vp9_prob
(
*
coef_probs
)[
COEFF_CONTEXTS
][
UNCONSTRAINED_NODES
]
=
fc
->
coef_probs
[
tx_size
][
type
][
ref
];
...
...
vp9/decoder/vp9_dthread.c
View file @
31596ee8
...
...
@@ -99,7 +99,7 @@ static void loop_filter_rows_mt(const YV12_BUFFER_CONFIG *const frame_buffer,
for
(
r
=
start
;
r
<
stop
;
r
+=
num_lf_workers
)
{
const
int
mi_row
=
r
<<
MI_BLOCK_SIZE_LOG2
;
MODE_INFO
*
*
const
mi
=
cm
->
mi
_grid_visible
+
mi_row
*
cm
->
mi_stride
;
MODE_INFO
*
const
mi
=
cm
->
mi
+
mi_row
*
cm
->
mi_stride
;
for
(
c
=
0
;
c
<
sb_cols
;
++
c
)
{
const
int
mi_col
=
c
<<
MI_BLOCK_SIZE_LOG2
;
...
...
vp9/encoder/vp9_bitstream.c
View file @
31596ee8
...
...
@@ -189,7 +189,7 @@ static void write_segment_id(vp9_writer *w, const struct segmentation *seg,
// This function encodes the reference frame
static
void
write_ref_frames
(
const
VP9_COMMON
*
cm
,
const
MACROBLOCKD
*
xd
,
vp9_writer
*
w
)
{
const
MB_MODE_INFO
*
const
mbmi
=
&
xd
->
mi
[
0
]
->
mbmi
;
const
MB_MODE_INFO
*
const
mbmi
=
&
xd
->
mi
[
0
]
.
src_mi
->
mbmi
;
const
int
is_compound
=
has_second_ref
(
mbmi
);
const
int
segment_id
=
mbmi
->
segment_id
;
...
...
@@ -329,11 +329,12 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, const MODE_INFO *mi,
}
static
void
write_mb_modes_kf
(
const
VP9_COMMON
*
cm
,
const
MACROBLOCKD
*
xd
,
MODE_INFO
*
*
mi_8x8
,
vp9_writer
*
w
)
{
MODE_INFO
*
mi_8x8
,
vp9_writer
*
w
)
{
const
struct
segmentation
*
const
seg
=
&
cm
->
seg
;
const
MODE_INFO
*
const
mi
=
mi_8x8
[
0
];
const
MODE_INFO
*
const
above_mi
=
mi_8x8
[
-
xd
->
mi_stride
];
const
MODE_INFO
*
const
left_mi
=
xd
->
left_available
?
mi_8x8
[
-
1
]
:
NULL
;
const
MODE_INFO
*
const
mi
=
mi_8x8
;
const
MODE_INFO
*
const
above_mi
=
mi_8x8
[
-
xd
->
mi_stride
].
src_mi
;
const
MODE_INFO
*
const
left_mi
=
xd
->
left_available
?
mi_8x8
[
-
1
].
src_mi
:
NULL
;
const
MB_MODE_INFO
*
const
mbmi
=
&
mi
->
mbmi
;
const
BLOCK_SIZE
bsize
=
mbmi
->
sb_type
;
...
...
@@ -372,8 +373,8 @@ static void write_modes_b(VP9_COMP *cpi, const TileInfo *const tile,
MACROBLOCKD
*
const
xd
=
&
cpi
->
mb
.
e_mbd
;
MODE_INFO
*
m
;
xd
->
mi
=
cm
->
mi
_grid_visible
+
(
mi_row
*
cm
->
mi_stride
+
mi_col
);
m
=
xd
->
mi
[
0
]
;
xd
->
mi
=
cm
->
mi
+
(
mi_row
*
cm
->
mi_stride
+
mi_col
);
m
=
xd
->
mi
;
set_mi_row_col
(
xd
,
tile
,
mi_row
,
num_8x8_blocks_high_lookup
[
m
->
mbmi
.
sb_type
],
...
...
@@ -427,7 +428,7 @@ static void write_modes_sb(VP9_COMP *cpi,
if
(
mi_row
>=
cm
->
mi_rows
||
mi_col
>=
cm
->
mi_cols
)
return
;
m
=
cm
->
mi
_grid_visible
[
mi_row
*
cm
->
mi_stride
+
mi_col
];
m
=
cm
->
mi
[
mi_row
*
cm
->
mi_stride
+
mi_col
]
.
src_mi
;
partition
=
partition_lookup
[
bsl
][
m
->
mbmi
.
sb_type
];
write_partition
(
cm
,
xd
,
bs
,
mi_row
,
mi_col
,
partition
,
bsize
,
w
);
...
...
vp9/encoder/vp9_denoiser.c
View file @
31596ee8
...
...
@@ -213,7 +213,7 @@ static VP9_DENOISER_DECISION perform_motion_compensation(VP9_DENOISER *denoiser,
int
sse_diff
=
ctx
->
zeromv_sse
-
ctx
->
newmv_sse
;
MV_REFERENCE_FRAME
frame
;
MACROBLOCKD
*
filter_mbd
=
&
mb
->
e_mbd
;
MB_MODE_INFO
*
mbmi
=
&
filter_mbd
->
mi
[
0
]
->
mbmi
;
MB_MODE_INFO
*
mbmi
=
&
filter_mbd
->
mi
[
0
]
.
src_mi
->
mbmi
;
MB_MODE_INFO
saved_mbmi
;
int
i
,
j
;
...
...
vp9/encoder/vp9_encodeframe.c
View file @
31596ee8
This diff is collapsed.
Click to expand it.
vp9/encoder/vp9_encodemb.c
View file @
31596ee8