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
921a32a3
Commit
921a32a3
authored
Apr 08, 2011
by
John Koleszar
Committed by
Code Review
Apr 08, 2011
Browse files
Merge "Error accumulator stats bug."
parents
aec5487c
de4e9e3b
Changes
5
Hide whitespace changes
Inline
Side-by-side
vp8/encoder/encodeframe.c
View file @
921a32a3
...
...
@@ -1147,7 +1147,7 @@ static void sum_intra_stats(VP8_COMP *cpi, MACROBLOCK *x)
}
int
vp8cx_encode_intra_macro_block
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
TOKENEXTRA
**
t
)
{
int
Error4x4
,
Error16x16
,
error_uv
;
int
Error4x4
,
Error16x16
;
int
rate4x4
,
rate16x16
,
rateuv
;
int
dist4x4
,
dist16x16
,
distuv
;
int
rate
=
0
;
...
...
@@ -1160,7 +1160,7 @@ int vp8cx_encode_intra_macro_block(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t)
#if !(CONFIG_REALTIME_ONLY)
if
(
cpi
->
sf
.
RD
&&
cpi
->
compressor_speed
!=
2
)
{
error_uv
=
vp8_rd_pick_intra_mbuv_mode
(
cpi
,
x
,
&
rateuv
,
&
rateuv_tokenonly
,
&
distuv
);
vp8_rd_pick_intra_mbuv_mode
(
cpi
,
x
,
&
rateuv
,
&
rateuv_tokenonly
,
&
distuv
);
rate
+=
rateuv
;
Error16x16
=
vp8_rd_pick_intra16x16mby_mode
(
cpi
,
x
,
&
rate16x16
,
&
rate16x16_tokenonly
,
&
dist16x16
);
...
...
@@ -1231,7 +1231,6 @@ int vp8cx_encode_inter_macroblock
)
{
MACROBLOCKD
*
const
xd
=
&
x
->
e_mbd
;
int
inter_error
;
int
intra_error
=
0
;
int
rate
;
int
distortion
;
...
...
@@ -1258,7 +1257,7 @@ int vp8cx_encode_inter_macroblock
* do not recalculate */
cpi
->
zbin_mode_boost_enabled
=
0
;
}
inter_error
=
vp8_rd_pick_inter_mode
(
cpi
,
x
,
recon_yoffset
,
recon_uvoffset
,
&
rate
,
&
distortion
,
&
intra_error
);
vp8_rd_pick_inter_mode
(
cpi
,
x
,
recon_yoffset
,
recon_uvoffset
,
&
rate
,
&
distortion
,
&
intra_error
);
/* switch back to the regular quantizer for the encode */
if
(
cpi
->
sf
.
improved_quant
)
...
...
@@ -1272,10 +1271,9 @@ int vp8cx_encode_inter_macroblock
}
else
#endif
inter_error
=
vp8_pick_inter_mode
(
cpi
,
x
,
recon_yoffset
,
recon_uvoffset
,
&
rate
,
&
distortion
,
&
intra_error
);
vp8_pick_inter_mode
(
cpi
,
x
,
recon_yoffset
,
recon_uvoffset
,
&
rate
,
&
distortion
,
&
intra_error
);
cpi
->
prediction_error
+=
inter_error
;
cpi
->
prediction_error
+=
distortion
;
cpi
->
intra_error
+=
intra_error
;
#if 0
...
...
vp8/encoder/pickinter.c
View file @
921a32a3
...
...
@@ -263,7 +263,7 @@ int vp8_pick_intra4x4mby_modes(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *mb, int
return
error
;
}
int
vp8_pick_intra_mbuv_mode
(
MACROBLOCK
*
mb
)
void
vp8_pick_intra_mbuv_mode
(
MACROBLOCK
*
mb
)
{
MACROBLOCKD
*
x
=
&
mb
->
e_mbd
;
...
...
@@ -408,11 +408,10 @@ int vp8_pick_intra_mbuv_mode(MACROBLOCK *mb)
mb
->
e_mbd
.
mode_info_context
->
mbmi
.
uv_mode
=
best_mode
;
return
best_error
;
}
int
vp8_pick_inter_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
recon_yoffset
,
int
recon_uvoffset
,
int
*
returnrate
,
int
*
returndistortion
,
int
*
returnintra
)
void
vp8_pick_inter_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
recon_yoffset
,
int
recon_uvoffset
,
int
*
returnrate
,
int
*
returndistortion
,
int
*
returnintra
)
{
BLOCK
*
b
=
&
x
->
block
[
0
];
BLOCKD
*
d
=
&
x
->
e_mbd
.
block
[
0
];
...
...
@@ -504,7 +503,7 @@ int vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int rec
cpi
->
mbs_tested_so_far
++
;
// Count of the number of MBs tested so far this frame
*
returnintra
=
best_intra_rd
;
*
returnintra
=
INT_MAX
;
x
->
skip
=
0
;
ref_frame_cost
[
INTRA_FRAME
]
=
vp8_cost_zero
(
cpi
->
prob_intra_coded
);
...
...
@@ -649,7 +648,7 @@ int vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int rec
if
(
this_rd
<
best_intra_rd
)
{
best_intra_rd
=
this_rd
;
*
returnintra
=
best_intra_rd
;
*
returnintra
=
distortion2
;
}
}
...
...
@@ -673,9 +672,8 @@ int vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int rec
if
(
this_rd
<
best_intra_rd
)
{
best_intra_rd
=
this_rd
;
*
returnintra
=
best_intra_rd
;
*
returnintra
=
distortion2
;
}
break
;
case
NEWMV
:
...
...
@@ -934,8 +932,6 @@ int vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int rec
}
x
->
e_mbd
.
mode_info_context
->
mbmi
.
mv
.
as_int
=
0
;
return
best_rd
;
}
...
...
@@ -955,6 +951,4 @@ int vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int rec
}
x
->
e_mbd
.
mode_info_context
->
mbmi
.
mv
.
as_mv
=
x
->
e_mbd
.
block
[
15
].
bmi
.
mv
.
as_mv
;
return
best_rd
;
}
vp8/encoder/pickinter.h
View file @
921a32a3
...
...
@@ -16,6 +16,6 @@
#define RD_ESTIMATE(RM,DM,R,D) ( ((128+(R)*(RM)) >> 8) + (DM)*(D) )
extern
int
vp8_pick_intra4x4mby_modes
(
const
VP8_ENCODER_RTCD
*
,
MACROBLOCK
*
mb
,
int
*
Rate
,
int
*
Distortion
);
extern
int
vp8_pick_intra_mbuv_mode
(
MACROBLOCK
*
mb
);
extern
int
vp8_pick_inter_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
recon_yoffset
,
int
recon_uvoffset
,
int
*
returnrate
,
int
*
returndistortion
,
int
*
returnintra
);
extern
void
vp8_pick_intra_mbuv_mode
(
MACROBLOCK
*
mb
);
extern
void
vp8_pick_inter_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
recon_yoffset
,
int
recon_uvoffset
,
int
*
returnrate
,
int
*
returndistortion
,
int
*
returnintra
);
#endif
vp8/encoder/rdopt.c
View file @
921a32a3
...
...
@@ -803,7 +803,7 @@ static int vp8_rd_inter_uv(VP8_COMP *cpi, MACROBLOCK *x, int *rate, int *distort
return
RDCOST
(
x
->
rdmult
,
x
->
rddiv
,
*
rate
,
*
distortion
);
}
int
vp8_rd_pick_intra_mbuv_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
*
rate
,
int
*
rate_tokenonly
,
int
*
distortion
)
void
vp8_rd_pick_intra_mbuv_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
*
rate
,
int
*
rate_tokenonly
,
int
*
distortion
)
{
MB_PREDICTION_MODE
mode
;
MB_PREDICTION_MODE
UNINITIALIZED_IS_SAFE
(
mode_selected
);
...
...
@@ -846,7 +846,6 @@ int vp8_rd_pick_intra_mbuv_mode(VP8_COMP *cpi, MACROBLOCK *x, int *rate, int *ra
*
distortion
=
d
;
x
->
e_mbd
.
mode_info_context
->
mbmi
.
uv_mode
=
mode_selected
;
return
best_rd
;
}
#endif
...
...
@@ -1722,7 +1721,7 @@ void vp8_cal_sad(VP8_COMP *cpi, MACROBLOCKD *xd, MACROBLOCK *x, int recon_yoffse
}
#if !(CONFIG_REALTIME_ONLY)
int
vp8_rd_pick_inter_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
recon_yoffset
,
int
recon_uvoffset
,
int
*
returnrate
,
int
*
returndistortion
,
int
*
returnintra
)
void
vp8_rd_pick_inter_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
recon_yoffset
,
int
recon_uvoffset
,
int
*
returnrate
,
int
*
returndistortion
,
int
*
returnintra
)
{
BLOCK
*
b
=
&
x
->
block
[
0
];
BLOCKD
*
d
=
&
x
->
e_mbd
.
block
[
0
];
...
...
@@ -1741,7 +1740,8 @@ int vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
int
mdcounts
[
4
];
int
rate
;
int
distortion
;
int
best_rd
=
INT_MAX
;
// 1 << 30;
int
best_rd
=
INT_MAX
;
int
best_intra_rd
=
INT_MAX
;
int
ref_frame_cost
[
MAX_REF_FRAMES
];
int
rate2
,
distortion2
;
int
uv_intra_rate
,
uv_intra_distortion
,
uv_intra_rate_tokenonly
;
...
...
@@ -2358,9 +2358,12 @@ int vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
//all_rates[mode_index] = rate2;
//all_dist[mode_index] = distortion2;
if
((
x
->
e_mbd
.
mode_info_context
->
mbmi
.
ref_frame
==
INTRA_FRAME
)
&&
(
this_rd
<
*
returnintra
))
// Keep record of best intra distortion
if
((
x
->
e_mbd
.
mode_info_context
->
mbmi
.
ref_frame
==
INTRA_FRAME
)
&&
(
this_rd
<
best_intra_rd
)
)
{
*
returnintra
=
this_rd
;
best_intra_rd
=
this_rd
;
*
returnintra
=
distortion2
;
}
// Did this mode help.. i.i is it the new best mode
...
...
@@ -2476,8 +2479,6 @@ int vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
}
x
->
e_mbd
.
mode_info_context
->
mbmi
.
mv
.
as_int
=
0
;
return
best_rd
;
}
...
...
@@ -2500,7 +2501,5 @@ int vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
}
x
->
e_mbd
.
mode_info_context
->
mbmi
.
mv
.
as_mv
=
x
->
e_mbd
.
block
[
15
].
bmi
.
mv
.
as_mv
;
return
best_rd
;
}
#endif
vp8/encoder/rdopt.h
View file @
921a32a3
...
...
@@ -11,11 +11,11 @@
#ifndef __INC_RDOPT_H
#define __INC_RDOPT_H
void
vp8_initialize_rd_consts
(
VP8_COMP
*
cpi
,
int
Qvalue
);
int
vp8_rd_pick_intra4x4mby_modes
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
mb
,
int
*
rate
,
int
*
rate_to
,
int
*
distortion
,
int
best_rd
);
int
vp8_rd_pick_intra16x16mby_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
*
returnrate
,
int
*
rate_to
,
int
*
returndistortion
);
int
vp8_rd_pick_intra_mbuv_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
*
rate
,
int
*
rate_to
,
int
*
distortion
);
extern
int
vp8_rd_pick_inter_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
recon_yoffset
,
int
recon_uvoffset
,
int
*
returnrate
,
int
*
returndistortion
,
int
*
returnintra
);
extern
void
vp8_initialize_rd_consts
(
VP8_COMP
*
cpi
,
int
Qvalue
);
extern
int
vp8_rd_pick_intra4x4mby_modes
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
mb
,
int
*
rate
,
int
*
rate_to
,
int
*
distortion
,
int
best_rd
);
extern
int
vp8_rd_pick_intra16x16mby_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
*
returnrate
,
int
*
rate_to
,
int
*
returndistortion
);
extern
void
vp8_rd_pick_intra_mbuv_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
*
rate
,
int
*
rate_to
,
int
*
distortion
);
extern
void
vp8_rd_pick_inter_mode
(
VP8_COMP
*
cpi
,
MACROBLOCK
*
x
,
int
recon_yoffset
,
int
recon_uvoffset
,
int
*
returnrate
,
int
*
returndistortion
,
int
*
returnintra
);
extern
void
vp8_mv_pred
(
...
...
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