Skip to content
GitLab
Menu
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
a0900fd0
Commit
a0900fd0
authored
Jan 08, 2016
by
Debargha Mukherjee
Browse files
Remove experimental flag for ext_tx
Also includes a bug fix. Change-Id: Ia49ed00f8ffd1531c10bcf89b1f497310ee7cb82
parent
004b546a
Changes
13
Hide whitespace changes
Inline
Side-by-side
configure
View file @
a0900fd0
...
...
@@ -273,7 +273,6 @@ EXPERIMENT_LIST="
fp_mb_stats
emulate_hardware
misc_fixes
ext_tx
"
CONFIG_LIST
=
"
dependency_tracking
...
...
vp10/common/blockd.h
View file @
a0900fd0
...
...
@@ -82,9 +82,7 @@ typedef struct {
// Only for INTER blocks
INTERP_FILTER
interp_filter
;
MV_REFERENCE_FRAME
ref_frame
[
2
];
#if CONFIG_EXT_TX
TX_TYPE
tx_type
;
#endif // CONFIG_EXT_TX
// TODO(slavarnway): Delete and use bmi[3].as_mv[] instead.
int_mv
mv
[
2
];
...
...
@@ -228,20 +226,12 @@ static INLINE TX_TYPE get_tx_type(PLANE_TYPE plane_type, const MACROBLOCKD *xd,
const
MODE_INFO
*
const
mi
=
xd
->
mi
[
0
];
const
MB_MODE_INFO
*
const
mbmi
=
&
mi
->
mbmi
;
#if CONFIG_EXT_TX
(
void
)
block_idx
;
if
(
plane_type
!=
PLANE_TYPE_Y
||
xd
->
lossless
[
mbmi
->
segment_id
]
||
mbmi
->
tx_size
>=
TX_32X32
)
return
DCT_DCT
;
return
mbmi
->
tx_type
;
#else
if
(
plane_type
!=
PLANE_TYPE_Y
||
xd
->
lossless
[
mbmi
->
segment_id
]
||
is_inter_block
(
mbmi
)
||
mbmi
->
tx_size
>=
TX_32X32
)
return
DCT_DCT
;
return
intra_mode_to_tx_type_context
[
get_y_mode
(
mi
,
block_idx
)];
#endif // CONFIG_EXT_TX
}
void
vp10_setup_block_planes
(
MACROBLOCKD
*
xd
,
int
ss_x
,
int
ss_y
);
...
...
vp10/common/entropymode.c
View file @
a0900fd0
...
...
@@ -326,7 +326,6 @@ static const struct segmentation_probs default_seg_probs = {
};
#endif
#if CONFIG_EXT_TX
const
vpx_tree_index
vp10_ext_tx_tree
[
TREE_SIZE
(
TX_TYPES
)]
=
{
-
DCT_DCT
,
2
,
-
ADST_ADST
,
4
,
...
...
@@ -346,7 +345,6 @@ static const vpx_prob default_inter_ext_tx_prob[EXT_TX_SIZES]
{
176
,
85
,
128
},
{
192
,
85
,
128
},
};
#endif // CONFIG_EXT_TX
static
void
init_mode_probs
(
FRAME_CONTEXT
*
fc
)
{
vp10_copy
(
fc
->
uv_mode_prob
,
default_uv_probs
);
...
...
@@ -364,10 +362,8 @@ static void init_mode_probs(FRAME_CONTEXT *fc) {
vp10_copy
(
fc
->
seg
.
tree_probs
,
default_seg_probs
.
tree_probs
);
vp10_copy
(
fc
->
seg
.
pred_probs
,
default_seg_probs
.
pred_probs
);
#endif
#if CONFIG_EXT_TX
vp10_copy
(
fc
->
intra_ext_tx_prob
,
default_intra_ext_tx_prob
);
vp10_copy
(
fc
->
inter_ext_tx_prob
,
default_inter_ext_tx_prob
);
#endif // CONFIG_EXT_TX
}
const
vpx_tree_index
vp10_switchable_interp_tree
...
...
@@ -457,7 +453,6 @@ void vp10_adapt_intra_frame_probs(VP10_COMMON *cm) {
fc
->
skip_probs
[
i
]
=
mode_mv_merge_probs
(
pre_fc
->
skip_probs
[
i
],
counts
->
skip
[
i
]);
#if CONFIG_EXT_TX
for
(
i
=
TX_4X4
;
i
<
EXT_TX_SIZES
;
++
i
)
{
int
j
;
for
(
j
=
0
;
j
<
TX_TYPES
;
++
j
)
...
...
@@ -472,7 +467,6 @@ void vp10_adapt_intra_frame_probs(VP10_COMMON *cm) {
counts
->
inter_ext_tx
[
i
],
fc
->
inter_ext_tx_prob
[
i
]);
}
#endif // CONFIG_EXT_TX
#if CONFIG_MISC_FIXES
if
(
cm
->
seg
.
temporal_update
)
{
...
...
vp10/common/entropymode.h
View file @
a0900fd0
...
...
@@ -66,10 +66,8 @@ typedef struct frame_contexts {
#if CONFIG_MISC_FIXES
struct
segmentation_probs
seg
;
#endif
#if CONFIG_EXT_TX
vpx_prob
intra_ext_tx_prob
[
EXT_TX_SIZES
][
TX_TYPES
][
TX_TYPES
-
1
];
vpx_prob
inter_ext_tx_prob
[
EXT_TX_SIZES
][
TX_TYPES
-
1
];
#endif // CONFIG_EXT_TX
int
initialized
;
}
FRAME_CONTEXT
;
...
...
@@ -94,10 +92,8 @@ typedef struct FRAME_COUNTS {
#if CONFIG_MISC_FIXES
struct
seg_counts
seg
;
#endif
#if CONFIG_EXT_TX
unsigned
int
intra_ext_tx
[
EXT_TX_SIZES
][
TX_TYPES
][
TX_TYPES
];
unsigned
int
inter_ext_tx
[
EXT_TX_SIZES
][
TX_TYPES
];
#endif // CONFIG_EXT_TX
}
FRAME_COUNTS
;
extern
const
vpx_prob
vp10_kf_y_mode_prob
[
INTRA_MODES
][
INTRA_MODES
]
...
...
@@ -127,10 +123,8 @@ void vp10_tx_counts_to_branch_counts_16x16(const unsigned int *tx_count_16x16p,
void
vp10_tx_counts_to_branch_counts_8x8
(
const
unsigned
int
*
tx_count_8x8p
,
unsigned
int
(
*
ct_8x8p
)[
2
]);
#if CONFIG_EXT_TX
extern
const
vpx_tree_index
vp10_ext_tx_tree
[
TREE_SIZE
(
TX_TYPES
)];
#endif // CONFIG_EXT_TX
static
INLINE
int
vp10_ceil_log2
(
int
n
)
{
int
i
=
1
,
p
=
2
;
...
...
vp10/common/enums.h
View file @
a0900fd0
...
...
@@ -97,9 +97,7 @@ typedef enum {
TX_TYPES
=
4
}
TX_TYPE
;
#if CONFIG_EXT_TX
#define EXT_TX_SIZES 3 // number of sizes that use extended transforms
#endif // CONFIG_EXT_TX
typedef
enum
{
VP9_LAST_FLAG
=
1
<<
0
,
...
...
vp10/common/thread_common.c
View file @
a0900fd0
...
...
@@ -435,7 +435,6 @@ void vp10_accumulate_frame_counts(VP10_COMMON *cm, FRAME_COUNTS *counts,
comps
->
fp
[
i
]
+=
comps_t
->
fp
[
i
];
}
#if CONFIG_EXT_TX
for
(
i
=
0
;
i
<
EXT_TX_SIZES
;
i
++
)
{
int
j
;
for
(
j
=
0
;
j
<
TX_TYPES
;
++
j
)
...
...
@@ -446,7 +445,6 @@ void vp10_accumulate_frame_counts(VP10_COMMON *cm, FRAME_COUNTS *counts,
for
(
k
=
0
;
k
<
TX_TYPES
;
k
++
)
cm
->
counts
.
inter_ext_tx
[
i
][
k
]
+=
counts
->
inter_ext_tx
[
i
][
k
];
}
#endif // CONFIG_EXT_TX
#if CONFIG_MISC_FIXES
for
(
i
=
0
;
i
<
PREDICTION_PROBS
;
i
++
)
...
...
vp10/decoder/decodeframe.c
View file @
a0900fd0
...
...
@@ -268,11 +268,7 @@ static void inverse_transform_block_inter(MACROBLOCKD* xd, int plane,
if
(
eob
==
1
)
{
dqcoeff
[
0
]
=
0
;
}
else
{
#if CONFIG_EXT_TX
if
(
tx_type
==
DCT_DCT
&&
tx_size
<=
TX_16X16
&&
eob
<=
10
)
#else
if
(
tx_size
<=
TX_16X16
&&
eob
<=
10
)
#endif // CONFIG_EXT_TX
memset
(
dqcoeff
,
0
,
4
*
(
4
<<
tx_size
)
*
sizeof
(
dqcoeff
[
0
]));
else
if
(
tx_size
==
TX_32X32
&&
eob
<=
34
)
memset
(
dqcoeff
,
0
,
256
*
sizeof
(
dqcoeff
[
0
]));
...
...
@@ -2128,7 +2124,6 @@ static size_t read_uncompressed_header(VP10Decoder *pbi,
return
sz
;
}
#if CONFIG_EXT_TX
static
void
read_ext_tx_probs
(
FRAME_CONTEXT
*
fc
,
vpx_reader
*
r
)
{
int
i
,
j
,
k
;
if
(
vpx_read
(
r
,
GROUP_DIFF_UPDATE_PROB
))
{
...
...
@@ -2145,7 +2140,6 @@ static void read_ext_tx_probs(FRAME_CONTEXT *fc, vpx_reader *r) {
}
}
}
#endif // CONFIG_EXT_TX
static
int
read_compressed_header
(
VP10Decoder
*
pbi
,
const
uint8_t
*
data
,
size_t
partition_size
)
{
...
...
@@ -2228,9 +2222,7 @@ static int read_compressed_header(VP10Decoder *pbi, const uint8_t *data,
#endif
read_mv_probs
(
nmvc
,
cm
->
allow_high_precision_mv
,
&
r
);
#if CONFIG_EXT_TX
read_ext_tx_probs
(
fc
,
&
r
);
#endif
}
return
vpx_reader_has_error
(
&
r
);
...
...
@@ -2271,12 +2263,10 @@ static void debug_check_frame_counts(const VP10_COMMON *const cm) {
assert
(
!
memcmp
(
&
cm
->
counts
.
tx
,
&
zero_counts
.
tx
,
sizeof
(
cm
->
counts
.
tx
)));
assert
(
!
memcmp
(
cm
->
counts
.
skip
,
zero_counts
.
skip
,
sizeof
(
cm
->
counts
.
skip
)));
assert
(
!
memcmp
(
&
cm
->
counts
.
mv
,
&
zero_counts
.
mv
,
sizeof
(
cm
->
counts
.
mv
)));
#if CONFIG_EXT_TX
assert
(
!
memcmp
(
cm
->
counts
.
intra_ext_tx
,
zero_counts
.
intra_ext_tx
,
sizeof
(
cm
->
counts
.
intra_ext_tx
)));
assert
(
!
memcmp
(
cm
->
counts
.
inter_ext_tx
,
zero_counts
.
inter_ext_tx
,
sizeof
(
cm
->
counts
.
inter_ext_tx
)));
#endif // CONFIG_EXT_TX
}
#endif // NDEBUG
...
...
vp10/decoder/decodemv.c
View file @
a0900fd0
...
...
@@ -297,21 +297,19 @@ static void read_intra_frame_mode_info(VP10_COMMON *const cm,
mbmi
->
uv_mode
=
read_intra_mode_uv
(
cm
,
xd
,
r
,
mbmi
->
mode
);
#if CONFIG_EXT_TX
if
(
mbmi
->
tx_size
<
TX_32X32
&&
cm
->
base_qindex
>
0
&&
!
mbmi
->
skip
&&
!
segfeature_active
(
&
cm
->
seg
,
mbmi
->
segment_id
,
SEG_LVL_SKIP
))
{
FRAME_COUNTS
*
counts
=
xd
->
counts
;
TX_TYPE
tx_type_nom
=
intra_mode_to_tx_type_context
[
mbmi
->
mode
];
mbmi
->
tx_type
=
vpx_read_tree
(
r
,
vp10_ext_tx_tree
,
cm
->
fc
->
intra_ext_tx_prob
[
mbmi
->
tx_size
][
tx_type_nom
]);
if
(
counts
)
++
counts
->
intra_ext_tx
[
mbmi
->
tx_size
][
tx_type_nom
][
mbmi
->
tx_type
];
}
else
{
mbmi
->
tx_type
=
DCT_DCT
;
}
#endif // CONFIG_EXT_TX
if
(
mbmi
->
tx_size
<
TX_32X32
&&
cm
->
base_qindex
>
0
&&
!
mbmi
->
skip
&&
!
segfeature_active
(
&
cm
->
seg
,
mbmi
->
segment_id
,
SEG_LVL_SKIP
))
{
FRAME_COUNTS
*
counts
=
xd
->
counts
;
TX_TYPE
tx_type_nom
=
intra_mode_to_tx_type_context
[
mbmi
->
mode
];
mbmi
->
tx_type
=
vpx_read_tree
(
r
,
vp10_ext_tx_tree
,
cm
->
fc
->
intra_ext_tx_prob
[
mbmi
->
tx_size
][
tx_type_nom
]);
if
(
counts
)
++
counts
->
intra_ext_tx
[
mbmi
->
tx_size
][
tx_type_nom
][
mbmi
->
tx_type
];
}
else
{
mbmi
->
tx_type
=
DCT_DCT
;
}
}
static
int
read_mv_component
(
vpx_reader
*
r
,
...
...
@@ -669,7 +667,6 @@ static void read_inter_frame_mode_info(VP10Decoder *const pbi,
else
read_intra_block_mode_info
(
cm
,
xd
,
mi
,
r
);
#if CONFIG_EXT_TX
if
(
mbmi
->
tx_size
<
TX_32X32
&&
cm
->
base_qindex
>
0
&&
!
mbmi
->
skip
&&
!
segfeature_active
(
&
cm
->
seg
,
mbmi
->
segment_id
,
SEG_LVL_SKIP
))
{
...
...
@@ -691,7 +688,6 @@ static void read_inter_frame_mode_info(VP10Decoder *const pbi,
}
else
{
mbmi
->
tx_type
=
DCT_DCT
;
}
#endif // CONFIG_EXT_TX
}
void
vp10_read_mode_info
(
VP10Decoder
*
const
pbi
,
MACROBLOCKD
*
xd
,
...
...
vp10/encoder/bitstream.c
View file @
a0900fd0
...
...
@@ -58,14 +58,10 @@ static INLINE void write_uniform(vpx_writer *w, int n, int v) {
}
}
#if CONFIG_EXT_TX
static
struct
vp10_token
ext_tx_encodings
[
TX_TYPES
];
#endif // CONFIG_EXT_TX
void
vp10_encode_token_init
()
{
#if CONFIG_EXT_TX
vp10_tokens_from_tree
(
ext_tx_encodings
,
vp10_ext_tx_tree
);
#endif // CONFIG_EXT_TX
}
static
void
write_intra_mode
(
vpx_writer
*
w
,
PREDICTION_MODE
mode
,
...
...
@@ -161,7 +157,6 @@ static void update_switchable_interp_probs(VP10_COMMON *cm, vpx_writer *w,
counts
->
switchable_interp
[
j
],
SWITCHABLE_FILTERS
,
w
);
}
#if CONFIG_EXT_TX
static
void
update_ext_tx_probs
(
VP10_COMMON
*
cm
,
vpx_writer
*
w
)
{
const
int
savings_thresh
=
vp10_cost_one
(
GROUP_DIFF_UPDATE_PROB
)
-
vp10_cost_zero
(
GROUP_DIFF_UPDATE_PROB
);
...
...
@@ -204,7 +199,6 @@ static void update_ext_tx_probs(VP10_COMMON *cm, vpx_writer *w) {
}
}
}
#endif // CONFIG_EXT_TX
static
void
pack_mb_tokens
(
vpx_writer
*
w
,
TOKENEXTRA
**
tp
,
const
TOKENEXTRA
*
const
stop
,
...
...
@@ -443,7 +437,6 @@ static void pack_inter_mode_mvs(VP10_COMP *cpi, const MODE_INFO *mi,
}
}
}
#if CONFIG_EXT_TX
if
(
mbmi
->
tx_size
<
TX_32X32
&&
cm
->
base_qindex
>
0
&&
!
mbmi
->
skip
&&
!
segfeature_active
(
&
cm
->
seg
,
mbmi
->
segment_id
,
SEG_LVL_SKIP
))
{
...
...
@@ -463,7 +456,6 @@ static void pack_inter_mode_mvs(VP10_COMP *cpi, const MODE_INFO *mi,
if
(
!
mbmi
->
skip
)
assert
(
mbmi
->
tx_type
==
DCT_DCT
);
}
#endif // CONFIG_EXT_TX
}
static
void
write_mb_modes_kf
(
const
VP10_COMMON
*
cm
,
const
MACROBLOCKD
*
xd
,
...
...
@@ -508,7 +500,6 @@ static void write_mb_modes_kf(const VP10_COMMON *cm, const MACROBLOCKD *xd,
write_intra_mode
(
w
,
mbmi
->
uv_mode
,
cm
->
fc
->
uv_mode_prob
[
mbmi
->
mode
]);
#if CONFIG_EXT_TX
if
(
mbmi
->
tx_size
<
TX_32X32
&&
cm
->
base_qindex
>
0
&&
!
mbmi
->
skip
&&
!
segfeature_active
(
&
cm
->
seg
,
mbmi
->
segment_id
,
SEG_LVL_SKIP
))
{
...
...
@@ -518,7 +509,6 @@ static void write_mb_modes_kf(const VP10_COMMON *cm, const MACROBLOCKD *xd,
[
intra_mode_to_tx_type_context
[
mbmi
->
mode
]],
&
ext_tx_encodings
[
mbmi
->
tx_type
]);
}
#endif // CONFIG_EXT_TX
}
static
void
write_modes_b
(
VP10_COMP
*
cpi
,
const
TileInfo
*
const
tile
,
...
...
@@ -1487,9 +1477,7 @@ static size_t write_compressed_header(VP10_COMP *cpi, uint8_t *data) {
vp10_write_nmv_probs
(
cm
,
cm
->
allow_high_precision_mv
,
&
header_bc
,
&
counts
->
mv
);
#if CONFIG_EXT_TX
update_ext_tx_probs
(
cm
,
&
header_bc
);
#endif // CONFIG_EXT_TX
}
vpx_stop_encode
(
&
header_bc
);
...
...
vp10/encoder/encodeframe.c
View file @
a0900fd0
...
...
@@ -3024,7 +3024,6 @@ static void encode_superblock(VP10_COMP *cpi, ThreadData *td,
}
++
td
->
counts
->
tx
.
tx_totals
[
mbmi
->
tx_size
];
++
td
->
counts
->
tx
.
tx_totals
[
get_uv_tx_size
(
mbmi
,
&
xd
->
plane
[
1
])];
#if CONFIG_EXT_TX
if
(
mbmi
->
tx_size
<
TX_32X32
&&
cm
->
base_qindex
>
0
&&
!
mbmi
->
skip
&&
!
segfeature_active
(
&
cm
->
seg
,
mbmi
->
segment_id
,
SEG_LVL_SKIP
))
{
...
...
@@ -3036,6 +3035,5 @@ static void encode_superblock(VP10_COMP *cpi, ThreadData *td,
[
mbmi
->
tx_type
];
}
}
#endif // CONFIG_EXT_TX
}
}
vp10/encoder/encoder.h
View file @
a0900fd0
...
...
@@ -467,10 +467,8 @@ typedef struct VP10_COMP {
int
multi_arf_enabled
;
int
multi_arf_last_grp_enabled
;
#if CONFIG_EXT_TX
int
intra_tx_type_costs
[
EXT_TX_SIZES
][
TX_TYPES
][
TX_TYPES
];
int
inter_tx_type_costs
[
EXT_TX_SIZES
][
TX_TYPES
];
#endif // CONFIG_EXT_TX
#if CONFIG_VP9_TEMPORAL_DENOISING
VP9_DENOISER
denoiser
;
#endif
...
...
vp10/encoder/rd.c
View file @
a0900fd0
...
...
@@ -84,7 +84,6 @@ static void fill_mode_costs(VP10_COMP *cpi) {
vp10_cost_tokens
(
cpi
->
switchable_interp_costs
[
i
],
fc
->
switchable_interp_prob
[
i
],
vp10_switchable_interp_tree
);
#if CONFIG_EXT_TX
for
(
i
=
TX_4X4
;
i
<
EXT_TX_SIZES
;
++
i
)
{
for
(
j
=
0
;
j
<
TX_TYPES
;
++
j
)
vp10_cost_tokens
(
cpi
->
intra_tx_type_costs
[
i
][
j
],
...
...
@@ -96,7 +95,6 @@ static void fill_mode_costs(VP10_COMP *cpi) {
fc
->
inter_ext_tx_prob
[
i
],
vp10_ext_tx_tree
);
}
#endif // CONFIG_EXT_TX
}
static
void
fill_token_costs
(
vp10_coeff_cost
*
c
,
...
...
vp10/encoder/rdopt.c
View file @
a0900fd0
...
...
@@ -54,9 +54,7 @@
#define MIN_EARLY_TERM_INDEX 3
#define NEW_MV_DISCOUNT_FACTOR 8
#if CONFIG_EXT_TX
const
double
ext_tx_th
=
0
.
99
;
#endif // CONFIG_EXT_TX
typedef
struct
{
PREDICTION_MODE
mode
;
...
...
@@ -602,7 +600,6 @@ static void choose_largest_tx_size(VP10_COMP *cpi, MACROBLOCK *x,
MACROBLOCKD
*
const
xd
=
&
x
->
e_mbd
;
MB_MODE_INFO
*
const
mbmi
=
&
xd
->
mi
[
0
]
->
mbmi
;
#if CONFIG_EXT_TX
TX_TYPE
tx_type
,
best_tx_type
=
DCT_DCT
;
int
r
,
s
;
int64_t
d
,
psse
,
this_rd
,
best_rd
=
INT64_MAX
;
...
...
@@ -644,7 +641,8 @@ static void choose_largest_tx_size(VP10_COMP *cpi, MACROBLOCK *x,
txfm_rd_in_plane
(
x
,
rate
,
distortion
,
skip
,
sse
,
ref_best_rd
,
0
,
bs
,
mbmi
->
tx_size
,
cpi
->
sf
.
use_fast_coef_costing
);
if
(
mbmi
->
tx_size
<
TX_32X32
&&
!
xd
->
lossless
[
mbmi
->
segment_id
])
{
if
(
mbmi
->
tx_size
<
TX_32X32
&&
!
xd
->
lossless
[
mbmi
->
segment_id
]
&&
*
rate
!=
INT_MAX
)
{
if
(
is_inter
)
*
rate
+=
cpi
->
inter_tx_type_costs
[
mbmi
->
tx_size
][
mbmi
->
tx_type
];
else
...
...
@@ -652,13 +650,6 @@ static void choose_largest_tx_size(VP10_COMP *cpi, MACROBLOCK *x,
[
intra_mode_to_tx_type_context
[
mbmi
->
mode
]]
[
mbmi
->
tx_type
];
}
#else
mbmi
->
tx_size
=
VPXMIN
(
max_tx_size
,
largest_tx_size
);
txfm_rd_in_plane
(
x
,
rate
,
distortion
,
skip
,
sse
,
ref_best_rd
,
0
,
bs
,
mbmi
->
tx_size
,
cpi
->
sf
.
use_fast_coef_costing
);
#endif // CONFIG_EXT_TX
}
static
void
choose_smallest_tx_size
(
VP10_COMP
*
cpi
,
MACROBLOCK
*
x
,
...
...
@@ -697,9 +688,7 @@ static void choose_tx_size_from_rd(VP10_COMP *cpi, MACROBLOCK *x,
TX_SIZE
best_tx
=
max_tx_size
;
int
start_tx
,
end_tx
;
const
int
tx_select
=
cm
->
tx_mode
==
TX_MODE_SELECT
;
#if CONFIG_EXT_TX
TX_TYPE
tx_type
,
best_tx_type
=
DCT_DCT
;
#endif // CONFIG_EXT_TX
const
int
is_inter
=
is_inter_block
(
mbmi
);
const
vpx_prob
*
tx_probs
=
get_tx_probs2
(
max_tx_size
,
xd
,
&
cm
->
fc
->
tx_probs
);
...
...
@@ -722,9 +711,7 @@ static void choose_tx_size_from_rd(VP10_COMP *cpi, MACROBLOCK *x,
*
skip
=
0
;
*
psse
=
INT64_MAX
;
#if CONFIG_EXT_TX
for
(
tx_type
=
DCT_DCT
;
tx_type
<
TX_TYPES
;
++
tx_type
)
{
#endif // CONFIG_EXT_TX
last_rd
=
INT64_MAX
;
for
(
n
=
start_tx
;
n
>=
end_tx
;
--
n
)
{
int
r_tx_size
=
0
;
...
...
@@ -735,7 +722,6 @@ static void choose_tx_size_from_rd(VP10_COMP *cpi, MACROBLOCK *x,
r_tx_size
+=
vp10_cost_one
(
tx_probs
[
m
]);
}
#if CONFIG_EXT_TX
if
(
n
>=
TX_32X32
&&
tx_type
!=
DCT_DCT
)
{
continue
;
}
...
...
@@ -753,11 +739,6 @@ static void choose_tx_size_from_rd(VP10_COMP *cpi, MACROBLOCK *x,
[
intra_mode_to_tx_type_context
[
mbmi
->
mode
]]
[
mbmi
->
tx_type
];
}
#else // CONFIG_EXT_TX
txfm_rd_in_plane
(
x
,
&
r
,
&
d
,
&
s
,
&
sse
,
ref_best_rd
,
0
,
bs
,
n
,
cpi
->
sf
.
use_fast_coef_costing
);
#endif // CONFIG_EXT_TX
if
(
r
==
INT_MAX
)
continue
;
...
...
@@ -781,19 +762,13 @@ static void choose_tx_size_from_rd(VP10_COMP *cpi, MACROBLOCK *x,
// Early termination in transform size search.
if
(
cpi
->
sf
.
tx_size_search_breakout
&&
(
rd
==
INT64_MAX
||
#if CONFIG_EXT_TX
(
s
==
1
&&
tx_type
!=
DCT_DCT
&&
n
<
start_tx
)
||
#else
(
s
==
1
&&
n
<
start_tx
)
||
#endif
(
n
<
(
int
)
max_tx_size
&&
rd
>
last_rd
)))
break
;
last_rd
=
rd
;
if
(
rd
<
#if CONFIG_EXT_TX
(
is_inter
&&
best_tx_type
==
DCT_DCT
?
ext_tx_th
:
1
)
*
#endif // CONFIG_EXT_TX
best_rd
)
{
best_tx
=
n
;
best_rd
=
rd
;
...
...
@@ -801,24 +776,18 @@ static void choose_tx_size_from_rd(VP10_COMP *cpi, MACROBLOCK *x,
*
rate
=
r
;
*
skip
=
s
;
*
psse
=
sse
;
#if CONFIG_EXT_TX
best_tx_type
=
mbmi
->
tx_type
;
#endif // CONFIG_EXT_TX
}
}
#if CONFIG_EXT_TX
}
#endif // CONFIG_EXT_TX
mbmi
->
tx_size
=
best_tx
;
#if CONFIG_EXT_TX
mbmi
->
tx_type
=
best_tx_type
;
if
(
mbmi
->
tx_size
>=
TX_32X32
)
assert
(
mbmi
->
tx_type
==
DCT_DCT
);
txfm_rd_in_plane
(
x
,
&
r
,
&
d
,
&
s
,
&
sse
,
ref_best_rd
,
0
,
bs
,
best_tx
,
cpi
->
sf
.
use_fast_coef_costing
);
#endif // CONFIG_EXT_TX
}
static
void
super_block_yrd
(
VP10_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
*
rate
,
...
...
@@ -1171,9 +1140,7 @@ static int64_t rd_pick_intra_sby_mode(VP10_COMP *cpi, MACROBLOCK *x,
int
this_rate
,
this_rate_tokenonly
,
s
;
int64_t
this_distortion
,
this_rd
;
TX_SIZE
best_tx
=
TX_4X4
;
#if CONFIG_EXT_TX
TX_TYPE
best_tx_type
=
DCT_DCT
;
#endif // CONFIG_EXT_TX
int
*
bmode_costs
;
const
MODE_INFO
*
above_mi
=
xd
->
above_mi
;
const
MODE_INFO
*
left_mi
=
xd
->
left_mi
;
...
...
@@ -1200,9 +1167,7 @@ static int64_t rd_pick_intra_sby_mode(VP10_COMP *cpi, MACROBLOCK *x,
mode_selected
=
mode
;
best_rd
=
this_rd
;
best_tx
=
mic
->
mbmi
.
tx_size
;
#if CONFIG_EXT_TX
best_tx_type
=
mic
->
mbmi
.
tx_type
;
#endif // CONFIG_EXT_TX
*
rate
=
this_rate
;
*
rate_tokenonly
=
this_rate_tokenonly
;
*
distortion
=
this_distortion
;
...
...
@@ -1212,9 +1177,7 @@ static int64_t rd_pick_intra_sby_mode(VP10_COMP *cpi, MACROBLOCK *x,
mic
->
mbmi
.
mode
=
mode_selected
;
mic
->
mbmi
.
tx_size
=
best_tx
;
#if CONFIG_EXT_TX
mic
->
mbmi
.
tx_type
=
best_tx_type
;
#endif // CONFIG_EXT_TX
return
best_rd
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment