Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
aom-rav1e
Commits
35d4524b
Commit
35d4524b
authored
Aug 23, 2016
by
Yue Chen
Committed by
Gerrit Code Review
Aug 23, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge "Make rectangular txfm in EXT_TX work with VAR_TX" into nextgenv2
parents
f1906e96
e57b1a5e
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
138 additions
and
44 deletions
+138
-44
vp10/common/common_data.h
vp10/common/common_data.h
+30
-0
vp10/common/loopfilter.c
vp10/common/loopfilter.c
+11
-0
vp10/common/onyxc_int.h
vp10/common/onyxc_int.h
+6
-0
vp10/decoder/decodeframe.c
vp10/decoder/decodeframe.c
+33
-18
vp10/decoder/decodemv.c
vp10/decoder/decodemv.c
+3
-4
vp10/encoder/bitstream.c
vp10/encoder/bitstream.c
+10
-6
vp10/encoder/encodeframe.c
vp10/encoder/encodeframe.c
+19
-6
vp10/encoder/encodemb.c
vp10/encoder/encodemb.c
+17
-5
vp10/encoder/firstpass.c
vp10/encoder/firstpass.c
+1
-1
vp10/encoder/rdopt.c
vp10/encoder/rdopt.c
+8
-4
No files found.
vp10/common/common_data.h
View file @
35d4524b
...
...
@@ -368,6 +368,36 @@ static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES] = {
#endif // CONFIG_EXT_TX
/* clang-format on */
static
const
TX_SIZE
txsize_horz_map
[
TX_SIZES_ALL
]
=
{
TX_4X4
,
// TX_4X4
TX_8X8
,
// TX_8X8
TX_16X16
,
// TX_16X16
TX_32X32
,
// TX_32X32
#if CONFIG_EXT_TX
TX_4X4
,
// TX_4X8
TX_8X8
,
// TX_8X4
TX_8X8
,
// TX_8X16
TX_16X16
,
// TX_16X8
TX_16X16
,
// TX_16X32
TX_32X32
// TX_32X16
#endif // CONFIG_EXT_TX
};
static
const
TX_SIZE
txsize_vert_map
[
TX_SIZES_ALL
]
=
{
TX_4X4
,
// TX_4X4
TX_8X8
,
// TX_8X8
TX_16X16
,
// TX_16X16
TX_32X32
,
// TX_32X32
#if CONFIG_EXT_TX
TX_8X8
,
// TX_4X8
TX_4X4
,
// TX_8X4
TX_16X16
,
// TX_8X16
TX_8X8
,
// TX_16X8
TX_32X32
,
// TX_16X32
TX_16X16
// TX_32X16
#endif // CONFIG_EXT_TX
};
static
const
BLOCK_SIZE
txsize_to_bsize
[
TX_SIZES_ALL
]
=
{
BLOCK_4X4
,
// TX_4X4
BLOCK_8X8
,
// TX_8X8
...
...
vp10/common/loopfilter.c
View file @
35d4524b
...
...
@@ -1252,12 +1252,23 @@ void vp10_filter_block_plane_non420(VP10_COMMON *cm,
sb_type
,
ss_x
,
ss_y
)
:
mbmi
->
inter_tx_size
[
blk_row
][
blk_col
];
#if CONFIG_EXT_TX && CONFIG_RECT_TX
tx_size_r
=
VPXMIN
(
txsize_horz_map
[
tx_size
],
cm
->
above_txfm_context
[
mi_col
+
c
]);
tx_size_c
=
VPXMIN
(
txsize_vert_map
[
tx_size
],
cm
->
left_txfm_context
[(
mi_row
+
r
)
&
MAX_MIB_MASK
]);
cm
->
above_txfm_context
[
mi_col
+
c
]
=
txsize_horz_map
[
tx_size
];
cm
->
left_txfm_context
[(
mi_row
+
r
)
&
MAX_MIB_MASK
]
=
txsize_vert_map
[
tx_size
];
#else
tx_size_r
=
VPXMIN
(
tx_size
,
cm
->
above_txfm_context
[
mi_col
+
c
]);
tx_size_c
=
VPXMIN
(
tx_size
,
cm
->
left_txfm_context
[(
mi_row
+
r
)
&
MAX_MIB_MASK
]);
cm
->
above_txfm_context
[
mi_col
+
c
]
=
tx_size
;
cm
->
left_txfm_context
[(
mi_row
+
r
)
&
MAX_MIB_MASK
]
=
tx_size
;
#endif
#endif
// Build masks based on the transform size of each block
...
...
vp10/common/onyxc_int.h
View file @
35d4524b
...
...
@@ -661,6 +661,12 @@ static INLINE void set_txfm_ctx(TXFM_CONTEXT *txfm_ctx, TX_SIZE tx_size,
for
(
i
=
0
;
i
<
len
;
++
i
)
txfm_ctx
[
i
]
=
tx_size
;
}
static
INLINE
void
set_txfm_ctxs
(
TX_SIZE
tx_size
,
int
n8_w
,
int
n8_h
,
const
MACROBLOCKD
*
xd
)
{
set_txfm_ctx
(
xd
->
above_txfm_context
,
txsize_horz_map
[
tx_size
],
n8_w
);
set_txfm_ctx
(
xd
->
left_txfm_context
,
txsize_vert_map
[
tx_size
],
n8_h
);
}
static
INLINE
void
txfm_partition_update
(
TXFM_CONTEXT
*
above_ctx
,
TXFM_CONTEXT
*
left_ctx
,
TX_SIZE
tx_size
)
{
...
...
vp10/decoder/decodeframe.c
View file @
35d4524b
...
...
@@ -324,11 +324,7 @@ static void decode_reconstruct_tx(MACROBLOCKD *const xd, vp10_reader *r,
if
(
blk_row
>=
max_blocks_high
||
blk_col
>=
max_blocks_wide
)
return
;
if
(
tx_size
==
plane_tx_size
#if CONFIG_EXT_TX && CONFIG_RECT_TX
||
plane_tx_size
>=
TX_SIZES
#endif // CONFIG_EXT_TX && CONFIG_RECT_TX
)
{
if
(
tx_size
==
plane_tx_size
)
{
PLANE_TYPE
plane_type
=
(
plane
==
0
)
?
PLANE_TYPE_Y
:
PLANE_TYPE_UV
;
TX_TYPE
tx_type
=
get_tx_type
(
plane_type
,
xd
,
block
,
plane_tx_size
);
const
scan_order
*
sc
=
get_scan
(
plane_tx_size
,
tx_type
,
1
);
...
...
@@ -361,7 +357,7 @@ static void decode_reconstruct_tx(MACROBLOCKD *const xd, vp10_reader *r,
}
#endif // CONFIG_VAR_TX
#if !CONFIG_VAR_TX || CONFIG_SUPERTX
#if !CONFIG_VAR_TX || CONFIG_SUPERTX
|| (CONFIG_EXT_TX && CONFIG_RECT_TX)
static
int
reconstruct_inter_block
(
MACROBLOCKD
*
const
xd
,
#if CONFIG_ANS
struct
AnsDecoder
*
const
r
,
...
...
@@ -533,8 +529,7 @@ static void set_param_topblock(VP10_COMMON *const cm, MACROBLOCKD *const xd,
xd
->
above_txfm_context
=
cm
->
above_txfm_context
+
mi_col
;
xd
->
left_txfm_context
=
xd
->
left_txfm_context_buffer
+
(
mi_row
&
MAX_MIB_MASK
);
set_txfm_ctx
(
xd
->
left_txfm_context
,
xd
->
mi
[
0
]
->
mbmi
.
tx_size
,
bh
);
set_txfm_ctx
(
xd
->
above_txfm_context
,
xd
->
mi
[
0
]
->
mbmi
.
tx_size
,
bw
);
set_txfm_ctxs
(
xd
->
mi
[
0
]
->
mbmi
.
tx_size
,
bw
,
bh
,
xd
);
#endif
}
...
...
@@ -1324,24 +1319,44 @@ static void decode_block(VP10Decoder *const pbi, MACROBLOCKD *const xd,
// TODO(jingning): This can be simplified for decoder performance.
const
BLOCK_SIZE
plane_bsize
=
get_plane_block_size
(
VPXMAX
(
bsize
,
BLOCK_8X8
),
pd
);
#if CONFIG_EXT_TX && CONFIG_RECT_TX
const
TX_SIZE
max_tx_size
=
plane
?
max_txsize_lookup
[
plane_bsize
]
:
max_txsize_rect_lookup
[
plane_bsize
];
#else
const
TX_SIZE
max_tx_size
=
max_txsize_lookup
[
plane_bsize
];
#endif // CONFIG_EXT_TX && CONFIG_RECT_TX
int
bw
=
num_4x4_blocks_wide_txsize_lookup
[
max_tx_size
];
int
bh
=
num_4x4_blocks_high_txsize_lookup
[
max_tx_size
];
const
int
step
=
num_4x4_blocks_txsize_lookup
[
max_tx_size
];
int
block
=
0
;
#if CONFIG_EXT_TX && CONFIG_RECT_TX
const
TX_SIZE
tx_size
=
plane
?
dec_get_uv_tx_size
(
mbmi
,
pd
->
n4_wl
,
pd
->
n4_hl
)
:
mbmi
->
tx_size
;
for
(
row
=
0
;
row
<
num_4x4_h
;
row
+=
bh
)
{
for
(
col
=
0
;
col
<
num_4x4_w
;
col
+=
bw
)
{
decode_reconstruct_tx
(
xd
,
r
,
mbmi
,
plane
,
plane_bsize
,
block
,
row
,
col
,
max_tx_size
,
&
eobtotal
);
block
+=
step
;
if
(
tx_size
>=
TX_SIZES
)
{
// rect txsize is used
const
int
stepr
=
num_4x4_blocks_high_txsize_lookup
[
tx_size
];
const
int
stepc
=
num_4x4_blocks_wide_txsize_lookup
[
tx_size
];
const
int
max_blocks_wide
=
num_4x4_w
+
(
xd
->
mb_to_right_edge
>=
0
?
0
:
xd
->
mb_to_right_edge
>>
(
5
+
pd
->
subsampling_x
));
const
int
max_blocks_high
=
num_4x4_h
+
(
xd
->
mb_to_bottom_edge
>=
0
?
0
:
xd
->
mb_to_bottom_edge
>>
(
5
+
pd
->
subsampling_y
));
for
(
row
=
0
;
row
<
max_blocks_high
;
row
+=
stepr
)
for
(
col
=
0
;
col
<
max_blocks_wide
;
col
+=
stepc
)
eobtotal
+=
reconstruct_inter_block
(
xd
,
r
,
mbmi
->
segment_id
,
plane
,
row
,
col
,
tx_size
);
}
else
{
#endif
for
(
row
=
0
;
row
<
num_4x4_h
;
row
+=
bh
)
{
for
(
col
=
0
;
col
<
num_4x4_w
;
col
+=
bw
)
{
decode_reconstruct_tx
(
xd
,
r
,
mbmi
,
plane
,
plane_bsize
,
block
,
row
,
col
,
max_tx_size
,
&
eobtotal
);
block
+=
step
;
}
}
#if CONFIG_EXT_TX && CONFIG_RECT_TX
}
#endif
#else
const
TX_SIZE
tx_size
=
plane
?
dec_get_uv_tx_size
(
mbmi
,
pd
->
n4_wl
,
pd
->
n4_hl
)
...
...
vp10/decoder/decodemv.c
View file @
35d4524b
...
...
@@ -315,12 +315,12 @@ static TX_SIZE read_tx_size_inter(VP10_COMMON *cm, MACROBLOCKD *xd,
return
tx_size
;
}
}
else
{
#if CONFIG_EXT_TX && CONFIG_RECT_TX
&& !CONFIG_VAR_TX
#if CONFIG_EXT_TX && CONFIG_RECT_TX
assert
(
IMPLIES
(
tx_mode
==
ONLY_4X4
,
bsize
==
BLOCK_4X4
));
return
max_txsize_rect_lookup
[
bsize
];
#else
return
TX_4X4
;
#endif
// CONFIG_EXT_TX && CONFIG_RECT_TX && !CONFIG_VAR_TX
#endif
}
}
...
...
@@ -1642,8 +1642,7 @@ static void read_inter_frame_mode_info(VP10Decoder *const pbi,
mbmi
->
inter_tx_size
[
idy
>>
1
][
idx
>>
1
]
=
mbmi
->
tx_size
;
}
set_txfm_ctx
(
xd
->
left_txfm_context
,
mbmi
->
tx_size
,
xd
->
n8_h
);
set_txfm_ctx
(
xd
->
above_txfm_context
,
mbmi
->
tx_size
,
xd
->
n8_w
);
set_txfm_ctxs
(
mbmi
->
tx_size
,
xd
->
n8_w
,
xd
->
n8_h
,
xd
);
}
#else
if
(
inter_block
)
...
...
vp10/encoder/bitstream.c
View file @
35d4524b
...
...
@@ -1118,14 +1118,11 @@ static void pack_inter_mode_mvs(VP10_COMP *cpi, const MODE_INFO *mi,
for
(
idx
=
0
;
idx
<
width
;
idx
+=
bs
)
write_tx_size_vartx
(
cm
,
xd
,
mbmi
,
max_tx_size
,
idy
,
idx
,
w
);
}
else
{
set_txfm_ctx
(
xd
->
left_txfm_context
,
mbmi
->
tx_size
,
xd
->
n8_h
);
set_txfm_ctx
(
xd
->
above_txfm_context
,
mbmi
->
tx_size
,
xd
->
n8_w
);
set_txfm_ctxs
(
mbmi
->
tx_size
,
xd
->
n8_w
,
xd
->
n8_h
,
xd
);
write_selected_tx_size
(
cm
,
xd
,
w
);
}
}
else
{
set_txfm_ctx
(
xd
->
left_txfm_context
,
mbmi
->
tx_size
,
xd
->
n8_h
);
set_txfm_ctx
(
xd
->
above_txfm_context
,
mbmi
->
tx_size
,
xd
->
n8_w
);
set_txfm_ctxs
(
mbmi
->
tx_size
,
xd
->
n8_w
,
xd
->
n8_h
,
xd
);
#else
write_selected_tx_size
(
cm
,
xd
,
w
);
#endif
...
...
@@ -1640,8 +1637,14 @@ static void write_modes_b(VP10_COMP *cpi, const TileInfo *const tile,
const
int
num_4x4_w
=
num_4x4_blocks_wide_lookup
[
plane_bsize
];
const
int
num_4x4_h
=
num_4x4_blocks_high_lookup
[
plane_bsize
];
int
row
,
col
;
#if CONFIG_EXT_TX && CONFIG_RECT_TX
TX_SIZE
tx_size
=
plane
?
get_uv_tx_size
(
mbmi
,
&
xd
->
plane
[
plane
])
:
mbmi
->
tx_size
;
if
(
is_inter_block
(
mbmi
)
&&
tx_size
<
TX_SIZES
)
{
#else
if
(
is_inter_block
(
mbmi
))
{
#endif
const
TX_SIZE
max_tx_size
=
max_txsize_lookup
[
plane_bsize
];
const
BLOCK_SIZE
txb_size
=
txsize_to_bsize
[
max_tx_size
];
int
bw
=
num_4x4_blocks_wide_lookup
[
txb_size
];
...
...
@@ -1659,8 +1662,9 @@ static void write_modes_b(VP10_COMP *cpi, const TileInfo *const tile,
:
m
->
mbmi
.
tx_size
;
BLOCK_SIZE
txb_size
=
txsize_to_bsize
[
tx
];
int
bw
=
num_4x4_blocks_wide_lookup
[
txb_size
];
int
bh
=
num_4x4_blocks_high_lookup
[
txb_size
];
for
(
row
=
0
;
row
<
num_4x4_h
;
row
+=
b
w
)
for
(
row
=
0
;
row
<
num_4x4_h
;
row
+=
b
h
)
for
(
col
=
0
;
col
<
num_4x4_w
;
col
+=
bw
)
pack_mb_tokens
(
w
,
tok
,
tok_end
,
cm
->
bit_depth
,
tx
);
}
...
...
vp10/encoder/encodeframe.c
View file @
35d4524b
...
...
@@ -2229,8 +2229,7 @@ static void encode_sb(VP10_COMP *cpi, ThreadData *td,
update_partition_context
(
xd
,
mi_row
,
mi_col
,
subsize
,
bsize
);
#endif
#if CONFIG_VAR_TX
set_txfm_ctx
(
xd
->
left_txfm_context
,
supertx_size
,
xd
->
n8_h
);
set_txfm_ctx
(
xd
->
above_txfm_context
,
supertx_size
,
mi_height
);
set_txfm_ctxs
(
supertx_size
,
mi_width
,
mi_height
,
xd
);
#endif // CONFIG_VAR_TX
return
;
}
else
{
...
...
@@ -5027,8 +5026,13 @@ static void encode_superblock(VP10_COMP *cpi, ThreadData *td, TOKENEXTRA **t,
vp10_encode_sb
(
x
,
VPXMAX
(
bsize
,
BLOCK_8X8
));
#if CONFIG_VAR_TX
vp10_tokenize_sb_inter
(
cpi
,
td
,
t
,
!
output_enabled
,
mi_row
,
mi_col
,
VPXMAX
(
bsize
,
BLOCK_8X8
));
#if CONFIG_EXT_TX && CONFIG_RECT_TX
if
(
mbmi
->
tx_size
>=
TX_SIZES
)
vp10_tokenize_sb
(
cpi
,
td
,
t
,
!
output_enabled
,
VPXMAX
(
bsize
,
BLOCK_8X8
));
else
#endif
vp10_tokenize_sb_inter
(
cpi
,
td
,
t
,
!
output_enabled
,
mi_row
,
mi_col
,
VPXMAX
(
bsize
,
BLOCK_8X8
));
#else
vp10_tokenize_sb
(
cpi
,
td
,
t
,
!
output_enabled
,
VPXMAX
(
bsize
,
BLOCK_8X8
));
#endif
...
...
@@ -5108,13 +5112,22 @@ static void encode_superblock(VP10_COMP *cpi, ThreadData *td, TOKENEXTRA **t,
TX_SIZE
tx_size
;
// The new intra coding scheme requires no change of transform size
if
(
is_inter_block
(
mbmi
))
#if CONFIG_EXT_TX && CONFIG_RECT_TX
{
tx_size
=
VPXMIN
(
tx_mode_to_biggest_tx_size
[
cm
->
tx_mode
],
max_txsize_lookup
[
bsize
]);
if
(
txsize_sqr_map
[
max_txsize_rect_lookup
[
bsize
]]
<=
tx_size
)
tx_size
=
max_txsize_rect_lookup
[
bsize
];
if
(
xd
->
lossless
[
mbmi
->
segment_id
])
tx_size
=
TX_4X4
;
}
#else
tx_size
=
VPXMIN
(
tx_mode_to_biggest_tx_size
[
cm
->
tx_mode
],
max_txsize_lookup
[
bsize
]);
#endif
else
tx_size
=
(
bsize
>=
BLOCK_8X8
)
?
mbmi
->
tx_size
:
TX_4X4
;
mbmi
->
tx_size
=
tx_size
;
set_txfm_ctx
(
xd
->
left_txfm_context
,
tx_size
,
xd
->
n8_h
);
set_txfm_ctx
(
xd
->
above_txfm_context
,
tx_size
,
xd
->
n8_w
);
set_txfm_ctxs
(
tx_size
,
xd
->
n8_w
,
xd
->
n8_h
,
xd
);
}
#endif
}
...
...
vp10/encoder/encodemb.c
View file @
35d4524b
...
...
@@ -980,6 +980,9 @@ void vp10_encode_sb(MACROBLOCK *x, BLOCK_SIZE bsize) {
int
idx
,
idy
;
int
block
=
0
;
int
step
=
num_4x4_blocks_txsize_lookup
[
max_tx_size
];
#if CONFIG_EXT_TX && CONFIG_RECT_TX
const
TX_SIZE
tx_size
=
plane
?
get_uv_tx_size
(
mbmi
,
pd
)
:
mbmi
->
tx_size
;
#endif
vp10_get_entropy_contexts
(
bsize
,
TX_4X4
,
pd
,
ctx
.
ta
[
plane
],
ctx
.
tl
[
plane
]);
#else
const
struct
macroblockd_plane
*
const
pd
=
&
xd
->
plane
[
plane
];
...
...
@@ -991,13 +994,22 @@ void vp10_encode_sb(MACROBLOCK *x, BLOCK_SIZE bsize) {
arg
.
tl
=
ctx
.
tl
[
plane
];
#if CONFIG_VAR_TX
for
(
idy
=
0
;
idy
<
mi_height
;
idy
+=
bh
)
{
for
(
idx
=
0
;
idx
<
mi_width
;
idx
+=
bh
)
{
encode_block_inter
(
plane
,
block
,
idy
,
idx
,
plane_bsize
,
max_tx_size
,
&
arg
);
block
+=
step
;
#if CONFIG_EXT_TX && CONFIG_RECT_TX
if
(
tx_size
>=
TX_SIZES
)
{
vp10_foreach_transformed_block_in_plane
(
xd
,
bsize
,
plane
,
encode_block
,
&
arg
);
}
else
{
#endif
for
(
idy
=
0
;
idy
<
mi_height
;
idy
+=
bh
)
{
for
(
idx
=
0
;
idx
<
mi_width
;
idx
+=
bh
)
{
encode_block_inter
(
plane
,
block
,
idy
,
idx
,
plane_bsize
,
max_tx_size
,
&
arg
);
block
+=
step
;
}
}
#if CONFIG_EXT_TX && CONFIG_RECT_TX
}
#endif
#else
vp10_foreach_transformed_block_in_plane
(
xd
,
bsize
,
plane
,
encode_block
,
&
arg
);
...
...
vp10/encoder/firstpass.c
View file @
35d4524b
...
...
@@ -2584,7 +2584,7 @@ static void configure_buffer_updates(VP10_COMP *cpi) {
cpi
->
rc
.
is_bwd_ref_frame
=
1
;
cpi
->
bwd_fb_idx
=
cpi
->
alt_fb_idx
;
cpi
->
alt_fb_idx
=
cpi
->
arf_map
[
0
];
;
cpi
->
alt_fb_idx
=
cpi
->
arf_map
[
0
];
cpi
->
arf_map
[
0
]
=
tmp
;
}
else
{
cpi
->
rc
.
is_bwd_ref_frame
=
0
;
...
...
vp10/encoder/rdopt.c
View file @
35d4524b
...
...
@@ -4219,13 +4219,13 @@ static int64_t encode_inter_mb_segment(VP10_COMP *cpi, MACROBLOCK *x,
const int num_4x4_w = num_4x4_blocks_wide_txsize_lookup[tx_size];
const int num_4x4_h = num_4x4_blocks_high_txsize_lookup[tx_size];
#if CONFIG_EXT_TX && CONFIG_RECT_TX
&& !CONFIG_VAR_TX
#if CONFIG_EXT_TX && CONFIG_RECT_TX
assert(IMPLIES(xd->lossless[mi->mbmi.segment_id], tx_size == TX_4X4));
assert(IMPLIES(!xd->lossless[mi->mbmi.segment_id],
tx_size == max_txsize_rect_lookup[mi->mbmi.sb_type]));
#else
assert(tx_size == TX_4X4);
#endif
// CONFIG_EXT_TX && CONFIG_RECT_TX && !CONFIG_VAR_TX
#endif
assert(tx_type == DCT_DCT);
vp10_build_inter_predictor_sub8x8(xd, 0, i, ir, ic, mi_row, mi_col);
...
...
@@ -4745,12 +4745,12 @@ static int64_t rd_pick_best_sub8x8_mode(
const int has_second_rf = has_second_ref(mbmi);
const int inter_mode_mask = cpi->sf.inter_mode_mask[bsize];
MB_MODE_INFO_EXT *const mbmi_ext = x->mbmi_ext;
#if CONFIG_EXT_TX && CONFIG_RECT_TX
&& !CONFIG_VAR_TX
#if CONFIG_EXT_TX && CONFIG_RECT_TX
mbmi->tx_size =
xd->lossless[mbmi->segment_id] ? TX_4X4 : max_txsize_rect_lookup[bsize];
#else
mbmi->tx_size = TX_4X4;
#endif
// CONFIG_EXT_TX && CONFIG_RECT_TX && !CONFIG_VAR_TX
#endif
vp10_zero(*bsi);
...
...
@@ -10511,6 +10511,10 @@ void vp10_rd_pick_inter_mode_sub8x8(struct VP10_COMP *cpi,
// macroblock modes
*mbmi = best_mbmode;
#if CONFIG_VAR_TX && CONFIG_EXT_TX && CONFIG_RECT_TX
mbmi->inter_tx_size[0][0] = mbmi->tx_size;
#endif
x->skip |= best_skip2;
if (!is_inter_block(&best_mbmode)) {
for (i = 0; i < 4; i++) xd->mi[0]->bmi[i].as_mode = best_bmodes[i].as_mode;
...
...
Write
Preview
Markdown
is supported
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