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
c0504a9b
Commit
c0504a9b
authored
May 07, 2013
by
Jingning Han
Committed by
Gerrit Code Review
May 07, 2013
Browse files
Merge "Merge SB8X8 into the codebase" into experimental
parents
9c7d06e6
776c1482
Changes
33
Expand all
Hide whitespace changes
Inline
Side-by-side
configure
View file @
c0504a9b
...
...
@@ -249,7 +249,6 @@ EXPERIMENT_LIST="
oneshotq
multiple_arf
code_zerogroup
sb8x8
non420
"
CONFIG_LIST
=
"
...
...
vp9/common/vp9_blockd.h
View file @
c0504a9b
...
...
@@ -83,9 +83,6 @@ typedef enum {
D27_PRED
,
/* Directional 22 deg prediction [anti-clockwise from 0 deg hor] */
D63_PRED
,
/* Directional 67 deg prediction [anti-clockwise from 0 deg hor] */
TM_PRED
,
/* Truemotion prediction */
#if !CONFIG_SB8X8
I8X8_PRED
,
/* 8x8 based prediction, each 8x8 has its own mode */
#endif
I4X4_PRED
,
/* 4x4 based prediction, each 4x4 has its own mode */
NEARESTMV
,
NEARMV
,
...
...
@@ -128,9 +125,6 @@ typedef enum {
#define VP9_YMODES (I4X4_PRED + 1)
#define VP9_UV_MODES (TM_PRED + 1)
#if !CONFIG_SB8X8
#define VP9_I8X8_MODES (TM_PRED + 1)
#endif
#define VP9_I32X32_MODES (TM_PRED + 1)
#define VP9_MVREFS (1 + SPLITMV - NEARESTMV)
...
...
@@ -173,16 +167,6 @@ typedef enum {
#define VP9_NKF_BINTRAMODES (VP9_BINTRAMODES)
/* 10 */
#endif
#if !CONFIG_SB8X8
typedef
enum
{
PARTITIONING_16X8
=
0
,
PARTITIONING_8X16
,
PARTITIONING_8X8
,
PARTITIONING_4X4
,
NB_PARTITIONINGS
,
}
SPLITMV_PARTITIONING_TYPE
;
#endif
/* For keyframes, intra block modes are predicted by the (already decoded)
modes for the Y blocks to the left and above us; for interframes, there
is a single probability table. */
...
...
@@ -209,11 +193,9 @@ typedef enum {
static
INLINE
int
b_width_log2
(
BLOCK_SIZE_TYPE
sb_type
)
{
switch
(
sb_type
)
{
case
BLOCK_SIZE_AB4X4
:
return
0
;
#if CONFIG_SB8X8
case
BLOCK_SIZE_SB8X8
:
case
BLOCK_SIZE_SB8X16
:
return
1
;
case
BLOCK_SIZE_SB16X8
:
#endif
case
BLOCK_SIZE_MB16X16
:
case
BLOCK_SIZE_SB16X32
:
return
2
;
case
BLOCK_SIZE_SB32X16
:
...
...
@@ -228,11 +210,9 @@ static INLINE int b_width_log2(BLOCK_SIZE_TYPE sb_type) {
static
INLINE
int
b_height_log2
(
BLOCK_SIZE_TYPE
sb_type
)
{
switch
(
sb_type
)
{
case
BLOCK_SIZE_AB4X4
:
return
0
;
#if CONFIG_SB8X8
case
BLOCK_SIZE_SB8X8
:
case
BLOCK_SIZE_SB16X8
:
return
1
;
case
BLOCK_SIZE_SB8X16
:
#endif
case
BLOCK_SIZE_MB16X16
:
case
BLOCK_SIZE_SB32X16
:
return
2
;
case
BLOCK_SIZE_SB16X32
:
...
...
@@ -245,21 +225,13 @@ static INLINE int b_height_log2(BLOCK_SIZE_TYPE sb_type) {
}
static
INLINE
int
mi_width_log2
(
BLOCK_SIZE_TYPE
sb_type
)
{
#if CONFIG_SB8X8
int
a
=
b_width_log2
(
sb_type
)
-
1
;
#else
int
a
=
b_width_log2
(
sb_type
)
-
2
;
#endif
assert
(
a
>=
0
);
return
a
;
}
static
INLINE
int
mi_height_log2
(
BLOCK_SIZE_TYPE
sb_type
)
{
#if CONFIG_SB8X8
int
a
=
b_height_log2
(
sb_type
)
-
1
;
#else
int
a
=
b_height_log2
(
sb_type
)
-
2
;
#endif
assert
(
a
>=
0
);
return
a
;
}
...
...
@@ -277,9 +249,6 @@ typedef struct {
int
mb_mode_context
[
MAX_REF_FRAMES
];
#if !CONFIG_SB8X8
SPLITMV_PARTITIONING_TYPE
partitioning
;
#endif
unsigned
char
mb_skip_coeff
;
/* does this mb has coefficients at all, 1=no coefficients, 0=need decode tokens */
unsigned
char
need_to_clamp_mvs
;
unsigned
char
need_to_clamp_secondmv
;
...
...
@@ -301,7 +270,7 @@ typedef struct {
typedef
struct
{
MB_MODE_INFO
mbmi
;
union
b_mode_info
bmi
[
16
>>
(
CONFIG_SB8X8
*
2
)
];
union
b_mode_info
bmi
[
4
];
}
MODE_INFO
;
struct
scale_factors
{
...
...
@@ -443,9 +412,7 @@ typedef struct macroblockd {
int
sb_index
;
// index of 32x32 block inside the 64x64 block
int
mb_index
;
// index of 16x16 block inside the 32x32 block
#if CONFIG_SB8X8
int
b_index
;
// index of 8x8 block inside the 16x16 block
#endif
int
q_index
;
}
MACROBLOCKD
;
...
...
@@ -462,11 +429,7 @@ static INLINE void update_partition_context(MACROBLOCKD *xd,
if
(
bsl
==
0
)
return
;
#if CONFIG_SB8X8
bs
=
1
<<
(
bsl
-
1
);
#else
bs
=
1
<<
bsl
;
#endif
// update the partition context at the end notes. set partition bits
// of block sizes larger than the current one to be one, and partition
...
...
@@ -502,21 +465,13 @@ static INLINE int partition_plane_context(MACROBLOCKD *xd,
int
above
=
0
,
left
=
0
,
i
;
int
boffset
=
mi_width_log2
(
BLOCK_SIZE_SB64X64
)
-
bsl
;
#if CONFIG_SB8X8
bs
=
1
<<
(
bsl
-
1
);
#else
bs
=
1
<<
bsl
;
#endif
assert
(
mi_width_log2
(
sb_type
)
==
mi_height_log2
(
sb_type
));
assert
(
bsl
>=
0
);
assert
(
boffset
>=
0
);
#if CONFIG_SB8X8
bs
=
1
<<
(
bsl
-
1
);
#else
bs
=
1
<<
bsl
;
#endif
for
(
i
=
0
;
i
<
bs
;
i
++
)
above
|=
(
xd
->
above_seg_context
[
i
]
&
(
1
<<
boffset
));
...
...
@@ -541,10 +496,8 @@ static BLOCK_SIZE_TYPE get_subsize(BLOCK_SIZE_TYPE bsize,
subsize
=
BLOCK_SIZE_SB64X32
;
else
if
(
bsize
==
BLOCK_SIZE_SB32X32
)
subsize
=
BLOCK_SIZE_SB32X16
;
#if CONFIG_SB8X8
else
if
(
bsize
==
BLOCK_SIZE_MB16X16
)
subsize
=
BLOCK_SIZE_SB16X8
;
#endif
else
assert
(
0
);
break
;
...
...
@@ -553,10 +506,8 @@ static BLOCK_SIZE_TYPE get_subsize(BLOCK_SIZE_TYPE bsize,
subsize
=
BLOCK_SIZE_SB32X64
;
else
if
(
bsize
==
BLOCK_SIZE_SB32X32
)
subsize
=
BLOCK_SIZE_SB16X32
;
#if CONFIG_SB8X8
else
if
(
bsize
==
BLOCK_SIZE_MB16X16
)
subsize
=
BLOCK_SIZE_SB8X16
;
#endif
else
assert
(
0
);
break
;
...
...
@@ -565,10 +516,8 @@ static BLOCK_SIZE_TYPE get_subsize(BLOCK_SIZE_TYPE bsize,
subsize
=
BLOCK_SIZE_SB32X32
;
else
if
(
bsize
==
BLOCK_SIZE_SB32X32
)
subsize
=
BLOCK_SIZE_MB16X16
;
#if CONFIG_SB8X8
else
if
(
bsize
==
BLOCK_SIZE_MB16X16
)
subsize
=
BLOCK_SIZE_SB8X8
;
#endif
else
assert
(
0
);
break
;
...
...
@@ -659,42 +608,6 @@ static TX_TYPE get_tx_type_4x4(const MACROBLOCKD *xd, int ib) {
xd
->
mode_info_context
->
bmi
[
ib
].
as_mode
.
context
:
#endif
xd
->
mode_info_context
->
bmi
[
ib
].
as_mode
.
first
);
#if !CONFIG_SB8X8
}
else
if
(
xd
->
mode_info_context
->
mbmi
.
mode
==
I8X8_PRED
&&
xd
->
q_index
<
ACTIVE_HT
)
{
const
int
ic
=
(
ib
&
10
);
#if USE_ADST_FOR_I8X8_4X4
#if USE_ADST_PERIPHERY_ONLY
// Use ADST for periphery blocks only
const
int
inner
=
ib
&
5
;
tx_type
=
txfm_map
(
pred_mode_conv
(
(
MB_PREDICTION_MODE
)
xd
->
mode_info_context
->
bmi
[
ic
].
as_mode
.
first
));
#if USE_ADST_FOR_REMOTE_EDGE
if
(
inner
==
5
)
tx_type
=
DCT_DCT
;
#else
if
(
inner
==
1
)
{
if
(
tx_type
==
ADST_ADST
)
tx_type
=
ADST_DCT
;
else
if
(
tx_type
==
DCT_ADST
)
tx_type
=
DCT_DCT
;
}
else
if
(
inner
==
4
)
{
if
(
tx_type
==
ADST_ADST
)
tx_type
=
DCT_ADST
;
else
if
(
tx_type
==
ADST_DCT
)
tx_type
=
DCT_DCT
;
}
else
if
(
inner
==
5
)
{
tx_type
=
DCT_DCT
;
}
#endif
#else
// Use ADST
b
+=
ic
-
ib
;
tx_type
=
txfm_map
(
pred_mode_conv
(
(
MB_PREDICTION_MODE
)
b
->
bmi
.
as_mode
.
first
));
#endif
#else
// Use 2D DCT
tx_type
=
DCT_DCT
;
#endif
#endif // !CONFIG_SB8X8
}
else
if
(
xd
->
mode_info_context
->
mbmi
.
mode
<=
TM_PRED
&&
xd
->
q_index
<
ACTIVE_HT
)
{
#if USE_ADST_FOR_I16X16_4X4
...
...
@@ -739,15 +652,6 @@ static TX_TYPE get_tx_type_8x8(const MACROBLOCKD *xd, int ib) {
#endif
if
(
ib
>=
(
1
<<
(
wb
+
hb
)))
// no chroma adst
return
tx_type
;
#if !CONFIG_SB8X8
if
(
xd
->
mode_info_context
->
mbmi
.
mode
==
I8X8_PRED
&&
xd
->
q_index
<
ACTIVE_HT8
)
{
// TODO(rbultje): MB_PREDICTION_MODE / B_PREDICTION_MODE should be merged
// or the relationship otherwise modified to address this type conversion.
tx_type
=
txfm_map
(
pred_mode_conv
(
(
MB_PREDICTION_MODE
)
xd
->
mode_info_context
->
bmi
[
ib
].
as_mode
.
first
));
}
else
#endif // CONFIG_SB8X8
if
(
xd
->
mode_info_context
->
mbmi
.
mode
<=
TM_PRED
&&
xd
->
q_index
<
ACTIVE_HT8
)
{
#if USE_ADST_FOR_I16X16_8X8
...
...
@@ -821,9 +725,6 @@ void vp9_setup_block_dptrs(MACROBLOCKD *xd);
static
TX_SIZE
get_uv_tx_size
(
const
MACROBLOCKD
*
xd
)
{
MB_MODE_INFO
*
mbmi
=
&
xd
->
mode_info_context
->
mbmi
;
const
TX_SIZE
size
=
mbmi
->
txfm_size
;
#if !CONFIG_SB8X8
const
MB_PREDICTION_MODE
mode
=
mbmi
->
mode
;
#endif // !CONFIG_SB8X8
switch
(
mbmi
->
sb_type
)
{
case
BLOCK_SIZE_SB64X64
:
...
...
@@ -835,7 +736,6 @@ static TX_SIZE get_uv_tx_size(const MACROBLOCKD *xd) {
return
TX_16X16
;
else
return
size
;
#if CONFIG_SB8X8
case
BLOCK_SIZE_SB32X16
:
case
BLOCK_SIZE_SB16X32
:
case
BLOCK_SIZE_MB16X16
:
...
...
@@ -845,15 +745,6 @@ static TX_SIZE get_uv_tx_size(const MACROBLOCKD *xd) {
return
size
;
default:
return
TX_4X4
;
#else // CONFIG_SB8X8
default:
if
(
size
==
TX_16X16
)
return
TX_8X8
;
else
if
(
size
==
TX_8X8
&&
(
mode
==
I8X8_PRED
||
mode
==
SPLITMV
))
return
TX_4X4
;
else
return
size
;
#endif // CONFIG_SB8X8
}
return
size
;
...
...
@@ -891,9 +782,6 @@ typedef void (*foreach_transformed_block_visitor)(int plane, int block,
void
*
arg
);
static
INLINE
void
foreach_transformed_block_in_plane
(
const
MACROBLOCKD
*
const
xd
,
BLOCK_SIZE_TYPE
bsize
,
int
plane
,
#if !CONFIG_SB8X8
int
is_split
,
#endif // !CONFIG_SB8X8
foreach_transformed_block_visitor
visit
,
void
*
arg
)
{
const
int
bw
=
b_width_log2
(
bsize
),
bh
=
b_height_log2
(
bsize
);
...
...
@@ -913,9 +801,6 @@ static INLINE void foreach_transformed_block_in_plane(
const
int
ss_max
=
MAX
(
xd
->
plane
[
plane
].
subsampling_x
,
xd
->
plane
[
plane
].
subsampling_y
);
const
int
ss_txfrm_size
=
txfrm_size_b
>
ss_block_size
#if !CONFIG_SB8X8
||
is_split
#endif // !CONFIG_SB8X8
?
txfrm_size_b
-
ss_max
*
2
:
txfrm_size_b
;
const
int
step
=
1
<<
ss_txfrm_size
;
...
...
@@ -932,24 +817,10 @@ static INLINE void foreach_transformed_block_in_plane(
static
INLINE
void
foreach_transformed_block
(
const
MACROBLOCKD
*
const
xd
,
BLOCK_SIZE_TYPE
bsize
,
foreach_transformed_block_visitor
visit
,
void
*
arg
)
{
#if !CONFIG_SB8X8
const
MB_PREDICTION_MODE
mode
=
xd
->
mode_info_context
->
mbmi
.
mode
;
const
int
is_split
=
xd
->
mode_info_context
->
mbmi
.
txfm_size
==
TX_8X8
&&
(
mode
==
I8X8_PRED
||
mode
==
SPLITMV
);
#endif // !CONFIG_SB8X8
int
plane
;
for
(
plane
=
0
;
plane
<
MAX_MB_PLANE
;
plane
++
)
{
#if !CONFIG_SB8X8
const
int
is_split_chroma
=
is_split
&&
xd
->
plane
[
plane
].
plane_type
==
PLANE_TYPE_UV
;
#endif // !CONFIG_SB8X8
foreach_transformed_block_in_plane
(
xd
,
bsize
,
plane
,
#if !CONFIG_SB8X8
is_split_chroma
,
#endif // !CONFIG_SB8X8
visit
,
arg
);
}
}
...
...
@@ -957,19 +828,10 @@ static INLINE void foreach_transformed_block(
static
INLINE
void
foreach_transformed_block_uv
(
const
MACROBLOCKD
*
const
xd
,
BLOCK_SIZE_TYPE
bsize
,
foreach_transformed_block_visitor
visit
,
void
*
arg
)
{
#if !CONFIG_SB8X8
const
MB_PREDICTION_MODE
mode
=
xd
->
mode_info_context
->
mbmi
.
mode
;
const
int
is_split
=
xd
->
mode_info_context
->
mbmi
.
txfm_size
==
TX_8X8
&&
(
mode
==
I8X8_PRED
||
mode
==
SPLITMV
);
#endif // !CONFIG_SB8X8
int
plane
;
for
(
plane
=
1
;
plane
<
MAX_MB_PLANE
;
plane
++
)
{
foreach_transformed_block_in_plane
(
xd
,
bsize
,
plane
,
#if !CONFIG_SB8X8
is_split
,
#endif // !CONFIG_SB8X8
visit
,
arg
);
}
}
...
...
@@ -997,16 +859,8 @@ static INLINE void foreach_predicted_block_in_plane(
int
pred_w
,
pred_h
;
if
(
mode
==
SPLITMV
)
{
#if CONFIG_SB8X8
pred_w
=
0
;
pred_h
=
0
;
#else
// 4x4 or 8x8
const
int
is_4x4
=
(
xd
->
mode_info_context
->
mbmi
.
partitioning
==
PARTITIONING_4X4
);
pred_w
=
is_4x4
?
0
:
1
>>
xd
->
plane
[
plane
].
subsampling_x
;
pred_h
=
is_4x4
?
0
:
1
>>
xd
->
plane
[
plane
].
subsampling_y
;
#endif
}
else
{
pred_w
=
bw
;
pred_h
=
bh
;
...
...
@@ -1099,13 +953,6 @@ static TX_SIZE tx_size_for_plane(MACROBLOCKD *xd, BLOCK_SIZE_TYPE bsize,
return
xd
->
mode_info_context
->
mbmi
.
txfm_size
;
}
else
{
const
int
bw
=
b_width_log2
(
bsize
),
bh
=
b_height_log2
(
bsize
);
#if !CONFIG_SB8X8
const
MB_PREDICTION_MODE
mode
=
xd
->
mode_info_context
->
mbmi
.
mode
;
const
int
is_split
=
xd
->
mode_info_context
->
mbmi
.
txfm_size
==
TX_8X8
&&
(
mode
==
I8X8_PRED
||
mode
==
SPLITMV
);
#endif
// block and transform sizes, in number of 4x4 blocks log 2 ("*_b")
// 4x4=0, 8x8=2, 16x16=4, 32x32=6, 64x64=8
const
TX_SIZE
tx_size
=
xd
->
mode_info_context
->
mbmi
.
txfm_size
;
...
...
@@ -1122,9 +969,6 @@ static TX_SIZE tx_size_for_plane(MACROBLOCKD *xd, BLOCK_SIZE_TYPE bsize,
const
int
ss_max
=
MAX
(
xd
->
plane
[
plane
].
subsampling_x
,
xd
->
plane
[
plane
].
subsampling_y
);
const
int
ss_txfrm_size
=
txfrm_size_b
>
ss_block_size
#if !CONFIG_SB8X8
||
is_split
#endif // !CONFIG_SB8X8
?
txfrm_size_b
-
ss_max
*
2
:
txfrm_size_b
;
return
(
TX_SIZE
)(
ss_txfrm_size
/
2
);
...
...
vp9/common/vp9_entropymode.c
View file @
c0504a9b
...
...
@@ -16,7 +16,6 @@
#include
"vpx_mem/vpx_mem.h"
static
const
unsigned
int
kf_y_mode_cts
[
8
][
VP9_YMODES
]
=
{
#if CONFIG_SB8X8
/* DC V H D45 135 117 153 D27 D63 TM i4X4 */
{
12
,
6
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
2
,
200
},
{
25
,
13
,
13
,
7
,
7
,
7
,
7
,
7
,
7
,
6
,
160
},
...
...
@@ -26,27 +25,11 @@ static const unsigned int kf_y_mode_cts[8][VP9_YMODES] = {
{
68
,
33
,
35
,
8
,
8
,
8
,
8
,
8
,
8
,
17
,
68
},
{
78
,
38
,
38
,
8
,
8
,
8
,
8
,
8
,
8
,
19
,
52
},
{
89
,
42
,
42
,
8
,
8
,
8
,
8
,
8
,
8
,
21
,
34
},
#else
/* DC V H D45 135 117 153 D27 D63 TM i8x8 i4X4 */
{
12
,
6
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
2
,
22
,
200
},
{
25
,
13
,
13
,
7
,
7
,
7
,
7
,
7
,
7
,
6
,
27
,
160
},
{
31
,
17
,
18
,
8
,
8
,
8
,
8
,
8
,
8
,
9
,
26
,
139
},
{
40
,
22
,
23
,
8
,
8
,
8
,
8
,
8
,
8
,
12
,
27
,
116
},
{
53
,
26
,
28
,
8
,
8
,
8
,
8
,
8
,
8
,
13
,
26
,
94
},
{
68
,
33
,
35
,
8
,
8
,
8
,
8
,
8
,
8
,
17
,
20
,
68
},
{
78
,
38
,
38
,
8
,
8
,
8
,
8
,
8
,
8
,
19
,
16
,
52
},
{
89
,
42
,
42
,
8
,
8
,
8
,
8
,
8
,
8
,
21
,
12
,
34
},
#endif
};
static
const
unsigned
int
y_mode_cts
[
VP9_YMODES
]
=
{
#if CONFIG_SB8X8
/* DC V H D45 135 117 153 D27 D63 TM i4X4 */
98
,
19
,
15
,
14
,
14
,
14
,
14
,
12
,
12
,
13
,
70
#else
/* DC V H D45 135 117 153 D27 D63 TM i8x8 i4X4 */
98
,
19
,
15
,
14
,
14
,
14
,
14
,
12
,
12
,
13
,
16
,
70
#endif
};
static
const
unsigned
int
uv_mode_cts
[
VP9_YMODES
]
[
VP9_UV_MODES
]
=
{
...
...
@@ -61,19 +44,9 @@ static const unsigned int uv_mode_cts [VP9_YMODES] [VP9_UV_MODES] = {
{
150
,
15
,
10
,
10
,
10
,
10
,
10
,
75
,
10
,
6
},
/* D27 */
{
150
,
15
,
10
,
10
,
10
,
10
,
10
,
10
,
75
,
6
},
/* D63 */
{
160
,
30
,
30
,
10
,
10
,
10
,
10
,
10
,
10
,
16
},
/* TM */
#if !CONFIG_SB8X8
{
132
,
46
,
40
,
10
,
10
,
10
,
10
,
10
,
10
,
18
},
/* i8x8 - never used */
#endif
{
150
,
35
,
41
,
10
,
10
,
10
,
10
,
10
,
10
,
10
},
/* i4X4 */
};
#if !CONFIG_SB8X8
static
const
unsigned
int
i8x8_mode_cts
[
VP9_I8X8_MODES
]
=
{
/* DC V H D45 135 117 153 D27 D63 TM */
73
,
49
,
61
,
30
,
30
,
30
,
30
,
30
,
30
,
13
};
#endif
static
const
unsigned
int
kf_uv_mode_cts
[
VP9_YMODES
]
[
VP9_UV_MODES
]
=
{
// DC V H D45 135 117 153 D27 D63 TM
{
160
,
24
,
24
,
20
,
20
,
20
,
20
,
20
,
20
,
8
},
/* DC */
...
...
@@ -86,9 +59,6 @@ static const unsigned int kf_uv_mode_cts [VP9_YMODES] [VP9_UV_MODES] = {
{
102
,
33
,
20
,
20
,
20
,
20
,
20
,
64
,
20
,
14
},
/* D27 */
{
102
,
33
,
20
,
20
,
20
,
20
,
20
,
20
,
64
,
14
},
/* D63 */
{
132
,
36
,
30
,
20
,
20
,
20
,
20
,
20
,
20
,
18
},
/* TM */
#if !CONFIG_SB8X8
{
122
,
41
,
35
,
20
,
20
,
20
,
20
,
20
,
20
,
18
},
/* i8x8 - never used */
#endif
{
122
,
41
,
35
,
20
,
20
,
20
,
20
,
20
,
20
,
18
},
/* I4X4 */
};
...
...
@@ -146,45 +116,13 @@ const vp9_prob vp9_sub_mv_ref_prob2 [SUBMVREF_COUNT][VP9_SUBMVREFS - 1] = {
{
208
,
1
,
1
}
};
#if !CONFIG_SB8X8
vp9_mbsplit
vp9_mbsplits
[
VP9_NUMMBSPLITS
]
=
{
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
},
{
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
},
{
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
2
,
2
,
3
,
3
,
2
,
2
,
3
,
3
,
},
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
},
};
const
int
vp9_mbsplit_count
[
VP9_NUMMBSPLITS
]
=
{
2
,
2
,
4
,
16
};
const
vp9_prob
vp9_mbsplit_probs
[
VP9_NUMMBSPLITS
-
1
]
=
{
110
,
111
,
150
};
#endif
const
vp9_prob
vp9_partition_probs
[
NUM_PARTITION_CONTEXTS
]
[
PARTITION_TYPES
-
1
]
=
{
#if CONFIG_SB8X8
// FIXME(jingning,rbultje) put real probabilities here
{
202
,
162
,
107
},
{
16
,
2
,
169
},
{
3
,
246
,
19
},
{
104
,
90
,
134
},
#endif
{
202
,
162
,
107
},
{
16
,
2
,
169
},
{
3
,
246
,
19
},
...
...
@@ -260,12 +198,7 @@ const vp9_tree_index vp9_ymode_tree[VP9_YMODES * 2 - 2] = {
-
D27_PRED
,
-
D63_PRED
,
16
,
18
,
-
V_PRED
,
-
H_PRED
,
#if CONFIG_SB8X8
-
TM_PRED
,
-
I4X4_PRED
#else
-
TM_PRED
,
20
,
-
I4X4_PRED
,
-
I8X8_PRED
#endif
};
const
vp9_tree_index
vp9_kf_ymode_tree
[
VP9_YMODES
*
2
-
2
]
=
{
...
...
@@ -278,28 +211,9 @@ const vp9_tree_index vp9_kf_ymode_tree[VP9_YMODES * 2 - 2] = {
-
D27_PRED
,
-
D63_PRED
,
16
,
18
,
-
V_PRED
,
-
H_PRED
,
#if CONFIG_SB8X8
-
TM_PRED
,
-
I4X4_PRED
#else
-
TM_PRED
,
20
,
-
I4X4_PRED
,
-
I8X8_PRED
#endif
};
#if !CONFIG_SB8X8
const
vp9_tree_index
vp9_i8x8_mode_tree
[
VP9_I8X8_MODES
*
2
-
2
]
=
{
2
,
14
,
-
DC_PRED
,
4
,
6
,
8
,
-
D45_PRED
,
-
D135_PRED
,
10
,
12
,
-
D117_PRED
,
-
D153_PRED
,
-
D27_PRED
,
-
D63_PRED
,
-
V_PRED
,
16
,
-
H_PRED
,
-
TM_PRED
};
#endif
const
vp9_tree_index
vp9_uv_mode_tree
[
VP9_UV_MODES
*
2
-
2
]
=
{
2
,
14
,
-
DC_PRED
,
4
,
...
...
@@ -312,14 +226,6 @@ const vp9_tree_index vp9_uv_mode_tree[VP9_UV_MODES * 2 - 2] = {
-
H_PRED
,
-
TM_PRED
};
#if !CONFIG_SB8X8
const
vp9_tree_index
vp9_mbsplit_tree
[
6
]
=
{
-
PARTITIONING_4X4
,
2
,
-
PARTITIONING_8X8
,
4
,
-
PARTITIONING_16X8
,
-
PARTITIONING_8X16
,
};
#endif
const
vp9_tree_index
vp9_mv_ref_tree
[
8
]
=
{
-
ZEROMV
,
2
,
-
NEARESTMV
,
4
,
...
...
@@ -352,10 +258,6 @@ struct vp9_token vp9_sb_ymode_encodings[VP9_I32X32_MODES];
struct
vp9_token
vp9_sb_kf_ymode_encodings
[
VP9_I32X32_MODES
];
struct
vp9_token
vp9_kf_ymode_encodings
[
VP9_YMODES
];
struct
vp9_token
vp9_uv_mode_encodings
[
VP9_UV_MODES
];
#if !CONFIG_SB8X8
struct
vp9_token
vp9_i8x8_mode_encodings
[
VP9_I8X8_MODES
];
struct
vp9_token
vp9_mbsplit_encodings
[
VP9_NUMMBSPLITS
];
#endif
struct
vp9_token
vp9_mv_ref_encoding_array
[
VP9_MVREFS
];
struct
vp9_token
vp9_sb_mv_ref_encoding_array
[
VP9_MVREFS
];
...
...
@@ -386,16 +288,8 @@ void vp9_init_mbmode_probs(VP9_COMMON *x) {
bct
,
uv_mode_cts
[
i
],
0
);
}
#if !CONFIG_SB8X8
vp9_tree_probs_from_distribution
(
vp9_i8x8_mode_tree
,
x
->
fc
.
i8x8_mode_prob
,
bct
,
i8x8_mode_cts
,
0
);
#endif
vpx_memcpy
(
x
->
fc
.
sub_mv_ref_prob
,
vp9_sub_mv_ref_prob2
,
sizeof
(
vp9_sub_mv_ref_prob2
));
#if !CONFIG_SB8X8
vpx_memcpy
(
x
->
fc
.
mbsplit_prob
,
vp9_mbsplit_probs
,
sizeof
(
vp9_mbsplit_probs
));
#endif
vpx_memcpy
(
x
->
fc
.
switchable_interp_prob
,
vp9_switchable_interp_prob
,
sizeof
(
vp9_switchable_interp_prob
));
...
...
@@ -499,10 +393,6 @@ void vp9_entropy_mode_init() {
vp9_tokens_from_tree
(
vp9_sb_ymode_encodings
,
vp9_sb_ymode_tree
);
vp9_tokens_from_tree
(
vp9_sb_kf_ymode_encodings
,
vp9_sb_kf_ymode_tree
);
vp9_tokens_from_tree
(
vp9_uv_mode_encodings
,
vp9_uv_mode_tree
);
#if !CONFIG_SB8X8
vp9_tokens_from_tree
(
vp9_i8x8_mode_encodings
,
vp9_i8x8_mode_tree
);
vp9_tokens_from_tree
(
vp9_mbsplit_encodings
,
vp9_mbsplit_tree
);
#endif
vp9_tokens_from_tree
(
vp9_switchable_interp_encodings
,
vp9_switchable_interp_tree
);
vp9_tokens_from_tree
(
vp9_partition_encodings
,
vp9_partition_tree
);
...
...
@@ -681,11 +571,6 @@ void vp9_adapt_mode_probs(VP9_COMMON *cm) {
update_mode_probs
(
VP9_NKF_BINTRAMODES
,
vp9_bmode_tree
,
fc
->
bmode_counts
,
fc
->
pre_bmode_prob
,
fc
->
bmode_prob
,
0
);
#if !CONFIG_SB8X8
update_mode_probs
(
VP9_I8X8_MODES
,
vp9_i8x8_mode_tree
,
fc
->
i8x8_mode_counts
,
fc
->
pre_i8x8_mode_prob
,
fc
->
i8x8_mode_prob
,
0
);
#endif
for
(
i
=
0
;
i
<
SUBMVREF_COUNT
;
++
i
)
update_mode_probs
(
VP9_SUBMVREFS
,
...
...
@@ -693,11 +578,6 @@ void vp9_adapt_mode_probs(VP9_COMMON *cm) {
fc
->
pre_sub_mv_ref_prob
[
i
],
fc
->
sub_mv_ref_prob
[
i
],
LEFT4X4
);
#if !CONFIG_SB8X8
update_mode_probs
(
VP9_NUMMBSPLITS
,
vp9_mbsplit_tree
,
fc
->
mbsplit_counts
,
fc
->
pre_mbsplit_prob
,
fc
->
mbsplit_prob
,
0
);
#endif
#if CONFIG_COMP_INTERINTRA_PRED
if
(
cm
->
use_interintra
)
{
int
factor
,
interintra_prob
,
count
;
...
...
vp9/common/vp9_entropymode.h
View file @
c0504a9b
...
...
@@ -15,9 +15,6 @@
#include
"vp9/common/vp9_treecoder.h"
#define SUBMVREF_COUNT 5
#if !CONFIG_SB8X8
#define VP9_NUMMBSPLITS 4
#endif
#if CONFIG_COMP_INTERINTRA_PRED
#define VP9_DEF_INTERINTRA_PROB 248
...
...
@@ -26,16 +23,6 @@
#define SEPARATE_INTERINTRA_UV 0
#endif
#if !CONFIG_SB8X8
typedef
const
int
vp9_mbsplit
[
16
];
extern
vp9_mbsplit
vp9_mbsplits
[
VP9_NUMMBSPLITS
];
extern
const
int
vp9_mbsplit_count
[
VP9_NUMMBSPLITS
];
/* # of subsets */