Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
external
libvpx
Commits
f370db0c
Commit
f370db0c
authored
Apr 09, 2013
by
Dmitry Kovalev
Browse files
Adding setup_quantization function.
Change-Id: I8fe25a905717a3cd2da5f87ba0403357536183cf
parent
2a6e09d8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
21 deletions
+18
-21
vp9/decoder/vp9_decodframe.c
vp9/decoder/vp9_decodframe.c
+18
-21
No files found.
vp9/decoder/vp9_decodframe.c
View file @
f370db0c
...
...
@@ -118,11 +118,10 @@ void vp9_init_de_quantizer(VP9D_COMP *pbi) {
static
int
get_qindex
(
MACROBLOCKD
*
mb
,
int
segment_id
,
int
base_qindex
)
{
// Set the Q baseline allowing for any segment level adjustment
if
(
vp9_segfeature_active
(
mb
,
segment_id
,
SEG_LVL_ALT_Q
))
{
if
(
mb
->
mb_segment_abs_delta
==
SEGMENT_ABSDATA
)
return
vp9_get_segdata
(
mb
,
segment_id
,
SEG_LVL_ALT_Q
);
// Abs Value
else
return
clamp
(
base_qindex
+
vp9_get_segdata
(
mb
,
segment_id
,
SEG_LVL_ALT_Q
),
0
,
MAXQ
);
// Delta Value
const
int
data
=
vp9_get_segdata
(
mb
,
segment_id
,
SEG_LVL_ALT_Q
);
return
mb
->
mb_segment_abs_delta
==
SEGMENT_ABSDATA
?
data
:
// Abs value
clamp
(
base_qindex
+
data
,
0
,
MAXQ
);
// Delta value
}
else
{
return
base_qindex
;
}
...
...
@@ -1317,6 +1316,19 @@ static void setup_loopfilter(VP9_COMMON *pc, MACROBLOCKD *xd, vp9_reader *r) {
}
}
static
void
setup_quantization
(
VP9D_COMP
*
pbi
,
vp9_reader
*
r
)
{
// Read the default quantizers
VP9_COMMON
*
const
pc
=
&
pbi
->
common
;
pc
->
base_qindex
=
vp9_read_literal
(
r
,
QINDEX_BITS
);
if
(
get_delta_q
(
r
,
&
pc
->
y1dc_delta_q
)
|
get_delta_q
(
r
,
&
pc
->
uvdc_delta_q
)
|
get_delta_q
(
r
,
&
pc
->
uvac_delta_q
))
vp9_init_de_quantizer
(
pbi
);
mb_init_dequantizer
(
pbi
,
&
pbi
->
mb
);
// MB level dequantizer setup
}
static
const
uint8_t
*
read_frame_size
(
VP9_COMMON
*
const
pc
,
const
uint8_t
*
data
,
const
uint8_t
*
data_end
,
int
*
width
,
int
*
height
)
{
...
...
@@ -1619,22 +1631,7 @@ int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) {
// Dummy read for now
vp9_read_literal
(
&
header_bc
,
2
);
// Read the default quantizers.
{
int
q_update
=
0
;
pc
->
base_qindex
=
vp9_read_literal
(
&
header_bc
,
QINDEX_BITS
);
// AC 1st order Q = default
q_update
=
get_delta_q
(
&
header_bc
,
&
pc
->
y1dc_delta_q
)
|
get_delta_q
(
&
header_bc
,
&
pc
->
uvdc_delta_q
)
|
get_delta_q
(
&
header_bc
,
&
pc
->
uvac_delta_q
);
if
(
q_update
)
vp9_init_de_quantizer
(
pbi
);
// MB level dequantizer setup
mb_init_dequantizer
(
pbi
,
&
pbi
->
mb
);
}
setup_quantization
(
pbi
,
&
header_bc
);
// Determine if the golden frame or ARF buffer should be updated and how.
// For all non key frames the GF and ARF refresh flags and sign bias
...
...
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