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
c8bed9d4
Commit
c8bed9d4
authored
Apr 29, 2013
by
Jingning Han
Committed by
Gerrit Code Review
Apr 29, 2013
Browse files
Merge "Immigrate tokenize_mb into tokenize_sb" into experimental
parents
f5ad7748
3ac3c469
Changes
3
Hide whitespace changes
Inline
Side-by-side
vp9/encoder/vp9_encodeframe.c
View file @
c8bed9d4
...
...
@@ -2167,8 +2167,7 @@ static void encode_macroblock(VP9_COMP *cpi, TOKENEXTRA **t,
}
#endif
vp9_tokenize_mb
(
cpi
,
xd
,
t
,
!
output_enabled
);
vp9_tokenize_sb
(
cpi
,
xd
,
t
,
!
output_enabled
,
BLOCK_SIZE_MB16X16
);
}
else
{
// FIXME(rbultje): not tile-aware (mi - 1)
int
mb_skip_context
=
...
...
vp9/encoder/vp9_tokenize.c
View file @
c8bed9d4
...
...
@@ -390,10 +390,7 @@ void vp9_tokenize_sb(VP9_COMP *cpi,
const
int
segment_id
=
mbmi
->
segment_id
;
const
int
skip_inc
=
!
vp9_segfeature_active
(
xd
,
segment_id
,
SEG_LVL_SKIP
);
const
TX_SIZE
txfm_size
=
mbmi
->
txfm_size
;
const
TX_SIZE
uv_txfm_size
=
(
bsize
<
BLOCK_SIZE_SB32X32
&&
txfm_size
==
TX_16X16
)
?
TX_8X8
:
(
bsize
<
BLOCK_SIZE_SB64X64
&&
txfm_size
==
TX_32X32
)
?
TX_16X16
:
txfm_size
;
TX_SIZE
uv_txfm_size
=
get_uv_tx_size
(
xd
);
int
b
;
const
int
n_y
=
(
1
<<
(
bwl
+
bhl
)),
n_uv
=
(
n_y
*
3
)
>>
1
;
...
...
@@ -446,9 +443,15 @@ void vp9_tokenize_sb(VP9_COMP *cpi,
for
(
b
=
0
;
b
<
n_y
;
b
+=
4
)
tokenize_b
(
cpi
,
xd
,
b
,
t
,
PLANE_TYPE_Y_WITH_DC
,
TX_8X8
,
n_y
,
dry_run
);
for
(;
b
<
n_uv
;
b
+=
4
)
tokenize_b
(
cpi
,
xd
,
b
,
t
,
PLANE_TYPE_UV
,
TX_8X8
,
n_y
,
dry_run
);
if
(
uv_txfm_size
==
TX_8X8
)
{
for
(;
b
<
n_uv
;
b
+=
4
)
tokenize_b
(
cpi
,
xd
,
b
,
t
,
PLANE_TYPE_UV
,
TX_8X8
,
n_y
,
dry_run
);
}
else
{
for
(;
b
<
n_uv
;
++
b
)
tokenize_b
(
cpi
,
xd
,
b
,
t
,
PLANE_TYPE_UV
,
TX_4X4
,
n_y
,
dry_run
);
}
break
;
case
TX_4X4
:
for
(
b
=
0
;
b
<
n_y
;
b
++
)
...
...
@@ -465,71 +468,6 @@ void vp9_tokenize_sb(VP9_COMP *cpi,
*
t
=
t_backup
;
}
void
vp9_tokenize_mb
(
VP9_COMP
*
cpi
,
MACROBLOCKD
*
xd
,
TOKENEXTRA
**
t
,
int
dry_run
)
{
int
b
;
int
tx_size
=
xd
->
mode_info_context
->
mbmi
.
txfm_size
;
int
mb_skip_context
=
vp9_get_pred_context
(
&
cpi
->
common
,
xd
,
PRED_MBSKIP
);
TOKENEXTRA
*
t_backup
=
*
t
;
// If the MB is going to be skipped because of a segment level flag
// exclude this from the skip count stats used to calculate the
// transmitted skip probability;
int
skip_inc
;
int
segment_id
=
xd
->
mode_info_context
->
mbmi
.
segment_id
;
if
(
!
vp9_segfeature_active
(
xd
,
segment_id
,
SEG_LVL_SKIP
))
{
skip_inc
=
1
;
}
else
skip_inc
=
0
;
xd
->
mode_info_context
->
mbmi
.
mb_skip_coeff
=
vp9_sb_is_skippable
(
xd
,
BLOCK_SIZE_MB16X16
);
if
(
xd
->
mode_info_context
->
mbmi
.
mb_skip_coeff
)
{
if
(
!
dry_run
)
cpi
->
skip_true_count
[
mb_skip_context
]
+=
skip_inc
;
vp9_reset_sb_tokens_context
(
xd
,
BLOCK_SIZE_MB16X16
);
if
(
dry_run
)
*
t
=
t_backup
;
return
;
}
if
(
!
dry_run
)
cpi
->
skip_false_count
[
mb_skip_context
]
+=
skip_inc
;
if
(
tx_size
==
TX_16X16
)
{
tokenize_b
(
cpi
,
xd
,
0
,
t
,
PLANE_TYPE_Y_WITH_DC
,
TX_16X16
,
16
,
dry_run
);
for
(
b
=
16
;
b
<
24
;
b
+=
4
)
{
tokenize_b
(
cpi
,
xd
,
b
,
t
,
PLANE_TYPE_UV
,
TX_8X8
,
16
,
dry_run
);
}
}
else
if
(
tx_size
==
TX_8X8
)
{
for
(
b
=
0
;
b
<
16
;
b
+=
4
)
{
tokenize_b
(
cpi
,
xd
,
b
,
t
,
PLANE_TYPE_Y_WITH_DC
,
TX_8X8
,
16
,
dry_run
);
}
if
(
xd
->
mode_info_context
->
mbmi
.
mode
==
I8X8_PRED
||
xd
->
mode_info_context
->
mbmi
.
mode
==
SPLITMV
)
{
for
(
b
=
16
;
b
<
24
;
b
++
)
{
tokenize_b
(
cpi
,
xd
,
b
,
t
,
PLANE_TYPE_UV
,
TX_4X4
,
16
,
dry_run
);
}
}
else
{
for
(
b
=
16
;
b
<
24
;
b
+=
4
)
{
tokenize_b
(
cpi
,
xd
,
b
,
t
,
PLANE_TYPE_UV
,
TX_8X8
,
16
,
dry_run
);
}
}
}
else
{
for
(
b
=
0
;
b
<
16
;
b
++
)
tokenize_b
(
cpi
,
xd
,
b
,
t
,
PLANE_TYPE_Y_WITH_DC
,
TX_4X4
,
16
,
dry_run
);
for
(
b
=
16
;
b
<
24
;
b
++
)
tokenize_b
(
cpi
,
xd
,
b
,
t
,
PLANE_TYPE_UV
,
TX_4X4
,
16
,
dry_run
);
}
if
(
dry_run
)
*
t
=
t_backup
;
}
#ifdef ENTROPY_STATS
void
init_context_counters
(
void
)
{
FILE
*
f
=
fopen
(
"context.bin"
,
"rb"
);
...
...
vp9/encoder/vp9_tokenize.h
View file @
c8bed9d4
...
...
@@ -39,8 +39,6 @@ int vp9_sby_is_skippable(MACROBLOCKD *xd, BLOCK_SIZE_TYPE bsize);
int
vp9_sbuv_is_skippable
(
MACROBLOCKD
*
xd
,
BLOCK_SIZE_TYPE
bsize
);
struct
VP9_COMP
;
void
vp9_tokenize_mb
(
struct
VP9_COMP
*
cpi
,
MACROBLOCKD
*
xd
,
TOKENEXTRA
**
t
,
int
dry_run
);
void
vp9_tokenize_sb
(
struct
VP9_COMP
*
cpi
,
MACROBLOCKD
*
xd
,
TOKENEXTRA
**
t
,
int
dry_run
,
BLOCK_SIZE_TYPE
bsize
);
...
...
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