Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
aom-rav1e
Commits
aeacaac5
Commit
aeacaac5
authored
Jun 20, 2014
by
Alex Converse
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Switch active map implementation to segment based.
Change-Id: Ibb841a1fa4d08d164cf5461246ec290f582b1f80
parent
e8a4edf4
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
19 additions
and
126 deletions
+19
-126
vp9/encoder/vp9_block.h
vp9/encoder/vp9_block.h
+0
-2
vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_encodeframe.c
+0
-68
vp9/encoder/vp9_encoder.c
vp9/encoder/vp9_encoder.c
+12
-12
vp9/encoder/vp9_encoder.h
vp9/encoder/vp9_encoder.h
+0
-3
vp9/encoder/vp9_pickmode.c
vp9/encoder/vp9_pickmode.c
+1
-3
vp9/encoder/vp9_rdopt.c
vp9/encoder/vp9_rdopt.c
+6
-38
No files found.
vp9/encoder/vp9_block.h
View file @
aeacaac5
...
@@ -93,8 +93,6 @@ struct macroblock {
...
@@ -93,8 +93,6 @@ struct macroblock {
int
encode_breakout
;
int
encode_breakout
;
int
in_active_map
;
// note that token_costs is the cost when eob node is skipped
// note that token_costs is the cost when eob node is skipped
vp9_coeff_cost
token_costs
[
TX_SIZES
];
vp9_coeff_cost
token_costs
[
TX_SIZES
];
...
...
vp9/encoder/vp9_encodeframe.c
View file @
aeacaac5
...
@@ -139,42 +139,6 @@ static INLINE void set_modeinfo_offsets(VP9_COMMON *const cm,
...
@@ -139,42 +139,6 @@ static INLINE void set_modeinfo_offsets(VP9_COMMON *const cm,
xd
->
mi
[
0
]
=
cm
->
mi
+
idx_str
;
xd
->
mi
[
0
]
=
cm
->
mi
+
idx_str
;
}
}
static
int
is_block_in_mb_map
(
const
VP9_COMP
*
cpi
,
int
mi_row
,
int
mi_col
,
BLOCK_SIZE
bsize
)
{
const
VP9_COMMON
*
const
cm
=
&
cpi
->
common
;
const
int
mb_rows
=
cm
->
mb_rows
;
const
int
mb_cols
=
cm
->
mb_cols
;
const
int
mb_row
=
mi_row
>>
1
;
const
int
mb_col
=
mi_col
>>
1
;
const
int
mb_width
=
num_8x8_blocks_wide_lookup
[
bsize
]
>>
1
;
const
int
mb_height
=
num_8x8_blocks_high_lookup
[
bsize
]
>>
1
;
int
r
,
c
;
if
(
bsize
<=
BLOCK_16X16
)
{
return
cpi
->
active_map
[
mb_row
*
mb_cols
+
mb_col
];
}
for
(
r
=
0
;
r
<
mb_height
;
++
r
)
{
for
(
c
=
0
;
c
<
mb_width
;
++
c
)
{
int
row
=
mb_row
+
r
;
int
col
=
mb_col
+
c
;
if
(
row
>=
mb_rows
||
col
>=
mb_cols
)
continue
;
if
(
cpi
->
active_map
[
row
*
mb_cols
+
col
])
return
1
;
}
}
return
0
;
}
static
int
check_active_map
(
const
VP9_COMP
*
cpi
,
const
MACROBLOCK
*
x
,
int
mi_row
,
int
mi_col
,
BLOCK_SIZE
bsize
)
{
if
(
cpi
->
active_map_enabled
&&
!
x
->
e_mbd
.
lossless
)
{
return
is_block_in_mb_map
(
cpi
,
mi_row
,
mi_col
,
bsize
);
}
else
{
return
1
;
}
}
static
void
set_offsets
(
VP9_COMP
*
cpi
,
const
TileInfo
*
const
tile
,
static
void
set_offsets
(
VP9_COMP
*
cpi
,
const
TileInfo
*
const
tile
,
int
mi_row
,
int
mi_col
,
BLOCK_SIZE
bsize
)
{
int
mi_row
,
int
mi_col
,
BLOCK_SIZE
bsize
)
{
MACROBLOCK
*
const
x
=
&
cpi
->
mb
;
MACROBLOCK
*
const
x
=
&
cpi
->
mb
;
...
@@ -187,9 +151,6 @@ static void set_offsets(VP9_COMP *cpi, const TileInfo *const tile,
...
@@ -187,9 +151,6 @@ static void set_offsets(VP9_COMP *cpi, const TileInfo *const tile,
set_skip_context
(
xd
,
mi_row
,
mi_col
);
set_skip_context
(
xd
,
mi_row
,
mi_col
);
// Activity map pointer
x
->
in_active_map
=
check_active_map
(
cpi
,
x
,
mi_row
,
mi_col
,
bsize
);
set_modeinfo_offsets
(
cm
,
xd
,
mi_row
,
mi_col
);
set_modeinfo_offsets
(
cm
,
xd
,
mi_row
,
mi_col
);
mbmi
=
&
xd
->
mi
[
0
]
->
mbmi
;
mbmi
=
&
xd
->
mi
[
0
]
->
mbmi
;
...
@@ -1513,20 +1474,8 @@ static void rd_use_partition(VP9_COMP *cpi,
...
@@ -1513,20 +1474,8 @@ static void rd_use_partition(VP9_COMP *cpi,
if
(
bsize
==
BLOCK_16X16
)
{
if
(
bsize
==
BLOCK_16X16
)
{
set_offsets
(
cpi
,
tile
,
mi_row
,
mi_col
,
bsize
);
set_offsets
(
cpi
,
tile
,
mi_row
,
mi_col
,
bsize
);
x
->
mb_energy
=
vp9_block_energy
(
cpi
,
x
,
bsize
);
x
->
mb_energy
=
vp9_block_energy
(
cpi
,
x
,
bsize
);
}
else
{
x
->
in_active_map
=
check_active_map
(
cpi
,
x
,
mi_row
,
mi_col
,
bsize
);
}
}
if
(
!
x
->
in_active_map
)
{
do_partition_search
=
0
;
if
(
mi_row
+
(
mi_step
>>
1
)
<
cm
->
mi_rows
&&
mi_col
+
(
mi_step
>>
1
)
<
cm
->
mi_cols
)
{
pc_tree
->
partitioning
=
PARTITION_NONE
;
bs_type
=
mi_8x8
[
0
]
->
mbmi
.
sb_type
=
bsize
;
subsize
=
bsize
;
partition
=
PARTITION_NONE
;
}
}
if
(
do_partition_search
&&
if
(
do_partition_search
&&
cpi
->
sf
.
partition_search_type
==
SEARCH_PARTITION
&&
cpi
->
sf
.
partition_search_type
==
SEARCH_PARTITION
&&
cpi
->
sf
.
adjust_partitioning_from_last_frame
)
{
cpi
->
sf
.
adjust_partitioning_from_last_frame
)
{
...
@@ -1989,8 +1938,6 @@ static void rd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
...
@@ -1989,8 +1938,6 @@ static void rd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
if
(
bsize
==
BLOCK_16X16
)
{
if
(
bsize
==
BLOCK_16X16
)
{
set_offsets
(
cpi
,
tile
,
mi_row
,
mi_col
,
bsize
);
set_offsets
(
cpi
,
tile
,
mi_row
,
mi_col
,
bsize
);
x
->
mb_energy
=
vp9_block_energy
(
cpi
,
x
,
bsize
);
x
->
mb_energy
=
vp9_block_energy
(
cpi
,
x
,
bsize
);
}
else
{
x
->
in_active_map
=
check_active_map
(
cpi
,
x
,
mi_row
,
mi_col
,
bsize
);
}
}
// Determine partition types in search according to the speed features.
// Determine partition types in search according to the speed features.
// The threshold set here has to be of square block size.
// The threshold set here has to be of square block size.
...
@@ -2023,8 +1970,6 @@ static void rd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
...
@@ -2023,8 +1970,6 @@ static void rd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
}
}
}
}
if
(
!
x
->
in_active_map
&&
(
partition_horz_allowed
||
partition_vert_allowed
))
do_split
=
0
;
// PARTITION_NONE
// PARTITION_NONE
if
(
partition_none_allowed
)
{
if
(
partition_none_allowed
)
{
rd_pick_sb_modes
(
cpi
,
tile
,
mi_row
,
mi_col
,
&
this_rate
,
&
this_dist
,
bsize
,
rd_pick_sb_modes
(
cpi
,
tile
,
mi_row
,
mi_col
,
&
this_rate
,
&
this_dist
,
bsize
,
...
@@ -2058,10 +2003,6 @@ static void rd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
...
@@ -2058,10 +2003,6 @@ static void rd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
}
}
}
}
}
}
if
(
!
x
->
in_active_map
)
{
do_split
=
0
;
do_rect
=
0
;
}
restore_context
(
cpi
,
mi_row
,
mi_col
,
a
,
l
,
sa
,
sl
,
bsize
);
restore_context
(
cpi
,
mi_row
,
mi_col
,
a
,
l
,
sa
,
sl
,
bsize
);
}
}
...
@@ -2591,8 +2532,6 @@ static void nonrd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
...
@@ -2591,8 +2532,6 @@ static void nonrd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
assert
(
num_8x8_blocks_wide_lookup
[
bsize
]
==
assert
(
num_8x8_blocks_wide_lookup
[
bsize
]
==
num_8x8_blocks_high_lookup
[
bsize
]);
num_8x8_blocks_high_lookup
[
bsize
]);
x
->
in_active_map
=
check_active_map
(
cpi
,
x
,
mi_row
,
mi_col
,
bsize
);
// Determine partition types in search according to the speed features.
// Determine partition types in search according to the speed features.
// The threshold set here has to be of square block size.
// The threshold set here has to be of square block size.
if
(
cpi
->
sf
.
auto_min_max_partition_size
)
{
if
(
cpi
->
sf
.
auto_min_max_partition_size
)
{
...
@@ -2611,9 +2550,6 @@ static void nonrd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
...
@@ -2611,9 +2550,6 @@ static void nonrd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
partition_vert_allowed
&=
force_vert_split
;
partition_vert_allowed
&=
force_vert_split
;
}
}
if
(
!
x
->
in_active_map
&&
(
partition_horz_allowed
||
partition_vert_allowed
))
do_split
=
0
;
// PARTITION_NONE
// PARTITION_NONE
if
(
partition_none_allowed
)
{
if
(
partition_none_allowed
)
{
nonrd_pick_sb_modes
(
cpi
,
tile
,
mi_row
,
mi_col
,
nonrd_pick_sb_modes
(
cpi
,
tile
,
mi_row
,
mi_col
,
...
@@ -2649,10 +2585,6 @@ static void nonrd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
...
@@ -2649,10 +2585,6 @@ static void nonrd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
}
}
}
}
}
}
if
(
!
x
->
in_active_map
)
{
do_split
=
0
;
do_rect
=
0
;
}
}
}
// store estimated motion vector
// store estimated motion vector
...
...
vp9/encoder/vp9_encoder.c
View file @
aeacaac5
...
@@ -176,9 +176,6 @@ static void dealloc_compressor_data(VP9_COMP *cpi) {
...
@@ -176,9 +176,6 @@ static void dealloc_compressor_data(VP9_COMP *cpi) {
vp9_cyclic_refresh_free
(
cpi
->
cyclic_refresh
);
vp9_cyclic_refresh_free
(
cpi
->
cyclic_refresh
);
cpi
->
cyclic_refresh
=
NULL
;
cpi
->
cyclic_refresh
=
NULL
;
vpx_free
(
cpi
->
active_map
);
cpi
->
active_map
=
NULL
;
vp9_free_frame_buffers
(
cm
);
vp9_free_frame_buffers
(
cm
);
vp9_free_frame_buffer
(
&
cpi
->
last_frame_uf
);
vp9_free_frame_buffer
(
&
cpi
->
last_frame_uf
);
...
@@ -790,10 +787,6 @@ VP9_COMP *vp9_create_compressor(VP9EncoderConfig *oxcf) {
...
@@ -790,10 +787,6 @@ VP9_COMP *vp9_create_compressor(VP9EncoderConfig *oxcf) {
CHECK_MEM_ERROR
(
cm
,
cpi
->
coding_context
.
last_frame_seg_map_copy
,
CHECK_MEM_ERROR
(
cm
,
cpi
->
coding_context
.
last_frame_seg_map_copy
,
vpx_calloc
(
cm
->
mi_rows
*
cm
->
mi_cols
,
1
));
vpx_calloc
(
cm
->
mi_rows
*
cm
->
mi_cols
,
1
));
CHECK_MEM_ERROR
(
cm
,
cpi
->
active_map
,
vpx_calloc
(
cm
->
MBs
,
1
));
vpx_memset
(
cpi
->
active_map
,
1
,
cm
->
MBs
);
cpi
->
active_map_enabled
=
0
;
for
(
i
=
0
;
i
<
(
sizeof
(
cpi
->
mbgraph_stats
)
/
for
(
i
=
0
;
i
<
(
sizeof
(
cpi
->
mbgraph_stats
)
/
sizeof
(
cpi
->
mbgraph_stats
[
0
]));
i
++
)
{
sizeof
(
cpi
->
mbgraph_stats
[
0
]));
i
++
)
{
CHECK_MEM_ERROR
(
cm
,
cpi
->
mbgraph_stats
[
i
].
mb_stats
,
CHECK_MEM_ERROR
(
cm
,
cpi
->
mbgraph_stats
[
i
].
mb_stats
,
...
@@ -2795,16 +2788,23 @@ int vp9_get_preview_raw_frame(VP9_COMP *cpi, YV12_BUFFER_CONFIG *dest,
...
@@ -2795,16 +2788,23 @@ int vp9_get_preview_raw_frame(VP9_COMP *cpi, YV12_BUFFER_CONFIG *dest,
int
vp9_set_active_map
(
VP9_COMP
*
cpi
,
unsigned
char
*
map
,
int
rows
,
int
cols
)
{
int
vp9_set_active_map
(
VP9_COMP
*
cpi
,
unsigned
char
*
map
,
int
rows
,
int
cols
)
{
if
(
rows
==
cpi
->
common
.
mb_rows
&&
cols
==
cpi
->
common
.
mb_cols
)
{
if
(
rows
==
cpi
->
common
.
mb_rows
&&
cols
==
cpi
->
common
.
mb_cols
)
{
const
int
mi_rows
=
cpi
->
common
.
mi_rows
;
const
int
mi_cols
=
cpi
->
common
.
mi_cols
;
if
(
map
)
{
if
(
map
)
{
vpx_memcpy
(
cpi
->
active_map
,
map
,
rows
*
cols
);
int
r
,
c
;
cpi
->
active_map_enabled
=
1
;
for
(
r
=
0
;
r
<
mi_rows
;
r
++
)
{
for
(
c
=
0
;
c
<
mi_cols
;
c
++
)
{
cpi
->
segmentation_map
[
r
*
mi_cols
+
c
]
=
!
map
[(
r
>>
1
)
*
cols
+
(
c
>>
1
)];
}
}
vp9_enable_segfeature
(
&
cpi
->
common
.
seg
,
1
,
SEG_LVL_SKIP
);
vp9_enable_segmentation
(
&
cpi
->
common
.
seg
);
}
else
{
}
else
{
cpi
->
active_map_enabled
=
0
;
vp9_disable_segmentation
(
&
cpi
->
common
.
seg
)
;
}
}
return
0
;
return
0
;
}
else
{
}
else
{
// cpi->active_map_enabled = 0;
return
-
1
;
return
-
1
;
}
}
}
}
...
...
vp9/encoder/vp9_encoder.h
View file @
aeacaac5
...
@@ -347,9 +347,6 @@ typedef struct VP9_COMP {
...
@@ -347,9 +347,6 @@ typedef struct VP9_COMP {
unsigned
char
*
complexity_map
;
unsigned
char
*
complexity_map
;
unsigned
char
*
active_map
;
unsigned
int
active_map_enabled
;
CYCLIC_REFRESH
*
cyclic_refresh
;
CYCLIC_REFRESH
*
cyclic_refresh
;
fractional_mv_step_fp
*
find_fractional_mv_step
;
fractional_mv_step_fp
*
find_fractional_mv_step
;
...
...
vp9/encoder/vp9_pickmode.c
View file @
aeacaac5
...
@@ -370,9 +370,7 @@ int64_t vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
...
@@ -370,9 +370,7 @@ int64_t vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
// Skipping checking: test to see if this block can be reconstructed by
// Skipping checking: test to see if this block can be reconstructed by
// prediction only.
// prediction only.
if
(
!
x
->
in_active_map
)
{
if
(
cpi
->
allow_encode_breakout
&&
x
->
encode_breakout
)
{
x
->
skip
=
1
;
}
else
if
(
cpi
->
allow_encode_breakout
&&
x
->
encode_breakout
)
{
const
BLOCK_SIZE
uv_size
=
get_plane_block_size
(
bsize
,
&
xd
->
plane
[
1
]);
const
BLOCK_SIZE
uv_size
=
get_plane_block_size
(
bsize
,
&
xd
->
plane
[
1
]);
unsigned
int
var
=
var_y
,
sse
=
sse_y
;
unsigned
int
var
=
var_y
,
sse
=
sse_y
;
// Skipping threshold for ac.
// Skipping threshold for ac.
...
...
vp9/encoder/vp9_rdopt.c
View file @
aeacaac5
...
@@ -2791,12 +2791,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
...
@@ -2791,12 +2791,7 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
*
rate2
+=
vp9_get_switchable_rate
(
cpi
);
*
rate2
+=
vp9_get_switchable_rate
(
cpi
);
if
(
!
is_comp_pred
)
{
if
(
!
is_comp_pred
)
{
if
(
!
x
->
in_active_map
)
{
if
(
cpi
->
allow_encode_breakout
&&
x
->
encode_breakout
)
{
if
(
psse
)
*
psse
=
0
;
*
distortion
=
0
;
x
->
skip
=
1
;
}
else
if
(
cpi
->
allow_encode_breakout
&&
x
->
encode_breakout
)
{
const
BLOCK_SIZE
y_size
=
get_plane_block_size
(
bsize
,
&
xd
->
plane
[
0
]);
const
BLOCK_SIZE
y_size
=
get_plane_block_size
(
bsize
,
&
xd
->
plane
[
0
]);
const
BLOCK_SIZE
uv_size
=
get_plane_block_size
(
bsize
,
&
xd
->
plane
[
1
]);
const
BLOCK_SIZE
uv_size
=
get_plane_block_size
(
bsize
,
&
xd
->
plane
[
1
]);
unsigned
int
var
,
sse
;
unsigned
int
var
,
sse
;
...
@@ -3143,21 +3138,6 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
...
@@ -3143,21 +3138,6 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
mode_skip_mask
|=
all_intra_modes
;
mode_skip_mask
|=
all_intra_modes
;
}
}
if
(
!
x
->
in_active_map
)
{
int
mode_index
;
assert
(
cpi
->
ref_frame_flags
&
VP9_LAST_FLAG
);
if
(
frame_mv
[
NEARESTMV
][
LAST_FRAME
].
as_int
==
0
)
mode_index
=
THR_NEARESTMV
;
else
if
(
frame_mv
[
NEARMV
][
LAST_FRAME
].
as_int
==
0
)
mode_index
=
THR_NEARMV
;
else
mode_index
=
THR_ZEROMV
;
mode_skip_mask
=
~
(
1
<<
mode_index
);
mode_skip_start
=
MAX_MODES
;
inter_mode_mask
=
(
1
<<
NEARESTMV
)
|
(
1
<<
NEARMV
)
|
(
1
<<
ZEROMV
)
|
(
1
<<
NEWMV
);
}
for
(
mode_index
=
0
;
mode_index
<
MAX_MODES
;
++
mode_index
)
{
for
(
mode_index
=
0
;
mode_index
<
MAX_MODES
;
++
mode_index
)
{
int
mode_excluded
=
0
;
int
mode_excluded
=
0
;
int64_t
this_rd
=
INT64_MAX
;
int64_t
this_rd
=
INT64_MAX
;
...
@@ -3247,16 +3227,14 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
...
@@ -3247,16 +3227,14 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
}
}
}
}
}
else
{
}
else
{
if
(
x
->
in_active_map
)
{
const
MV_REFERENCE_FRAME
ref_frames
[
2
]
=
{
ref_frame
,
second_ref_frame
};
const
MV_REFERENCE_FRAME
ref_frames
[
2
]
=
{
ref_frame
,
second_ref_frame
};
if
(
!
check_best_zero_mv
(
cpi
,
mbmi
->
mode_context
,
frame_mv
,
if
(
!
check_best_zero_mv
(
cpi
,
mbmi
->
mode_context
,
frame_mv
,
inter_mode_mask
,
this_mode
,
ref_frames
))
inter_mode_mask
,
this_mode
,
ref_frames
))
continue
;
continue
;
}
}
}
mbmi
->
mode
=
this_mode
;
mbmi
->
mode
=
this_mode
;
mbmi
->
uv_mode
=
x
->
in_active_map
?
DC_PRED
:
this_mode
;
mbmi
->
uv_mode
=
DC_PRED
;
mbmi
->
ref_frame
[
0
]
=
ref_frame
;
mbmi
->
ref_frame
[
0
]
=
ref_frame
;
mbmi
->
ref_frame
[
1
]
=
second_ref_frame
;
mbmi
->
ref_frame
[
1
]
=
second_ref_frame
;
// Evaluate all sub-pel filters irrespective of whether we can use
// Evaluate all sub-pel filters irrespective of whether we can use
...
@@ -3565,16 +3543,6 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
...
@@ -3565,16 +3543,6 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
vp9_zero
(
best_tx_diff
);
vp9_zero
(
best_tx_diff
);
}
}
if
(
!
x
->
in_active_map
)
{
assert
(
mbmi
->
ref_frame
[
0
]
==
LAST_FRAME
);
assert
(
mbmi
->
ref_frame
[
1
]
==
NONE
);
assert
(
mbmi
->
mode
==
NEARESTMV
||
mbmi
->
mode
==
NEARMV
||
mbmi
->
mode
==
ZEROMV
);
assert
(
frame_mv
[
mbmi
->
mode
][
LAST_FRAME
].
as_int
==
0
);
assert
(
mbmi
->
mode
==
mbmi
->
uv_mode
);
}
set_ref_ptrs
(
cm
,
xd
,
mbmi
->
ref_frame
[
0
],
mbmi
->
ref_frame
[
1
]);
set_ref_ptrs
(
cm
,
xd
,
mbmi
->
ref_frame
[
0
],
mbmi
->
ref_frame
[
1
]);
store_coding_context
(
x
,
ctx
,
best_mode_index
,
store_coding_context
(
x
,
ctx
,
best_mode_index
,
best_pred_diff
,
best_tx_diff
,
best_filter_diff
);
best_pred_diff
,
best_tx_diff
,
best_filter_diff
);
...
...
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