Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
BC
public
external
libvpx
Commits
bf46feb3
Commit
bf46feb3
authored
10 years ago
by
Dmitry Kovalev
Committed by
Gerrit Code Review
10 years ago
Browse files
Options
Download
Plain Diff
Merge "Moving RD-opt related code from vp9_encoder.h to vp9_rdopt.h."
parents
bed7cf2e
3f8508eb
v1.14.0-linphone
1.4.X
feature/update_to_v1.9.0-linphone
feature/uwp_nuget
frame_parallel
highbitdepth
indianrunnerduck
javanwhistlingduck
khakicampbell
linphone
linphone-android
linphone-old
longtailedduck
m49-2623
m52-2743
m54-2840
m56-2924
m66-3359
m68-3440
mandarinduck
nextgen
nextgenv2
sandbox/Jingning/experimental
sandbox/Jingning/vpx
sandbox/aconverse@google.com/ansbench
sandbox/hkuang/frame_parallel
sandbox/hkuang@google.com/decode
sandbox/jimbankoski@google.com/proposed-aom
sandbox/jingning@google.com/decoder_test_suite
sandbox/jingning@google.com/experimental
sandbox/jzern@google.com/test
sandbox/wangch@google.com/vp9
sandbox/yaowu@google.com/mergeaom
v1.12.0-linphone
v1.6.1_linphone
v1.7.0-linphone
v1.9.0-linphone
v1.9.0
v1.9.0-rc1
v1.8.2
v1.8.1
v1.8.0
v1.7.0
v1.6.1
v1.6.0
v1.5.0
v1.4.0
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
vp9/encoder/vp9_encoder.h
+1
-79
vp9/encoder/vp9_encoder.h
vp9/encoder/vp9_rdopt.h
+99
-12
vp9/encoder/vp9_rdopt.h
with
100 additions
and
91 deletions
vp9/encoder/vp9_encoder.h
+
1
−
79
View file @
bf46feb3
...
...
@@ -32,6 +32,7 @@
#include
"vp9/encoder/vp9_mcomp.h"
#include
"vp9/encoder/vp9_quantize.h"
#include
"vp9/encoder/vp9_ratectrl.h"
#include
"vp9/encoder/vp9_rdopt.h"
#include
"vp9/encoder/vp9_speed_features.h"
#include
"vp9/encoder/vp9_svc_layercontext.h"
#include
"vp9/encoder/vp9_tokenize.h"
...
...
@@ -46,9 +47,6 @@ extern "C" {
#define DEFAULT_GF_INTERVAL 10
#define MAX_MODES 30
#define MAX_REFS 6
typedef
struct
{
int
nmvjointcost
[
MV_JOINTS
];
int
nmvcosts
[
2
][
MV_VALS
];
...
...
@@ -66,56 +64,6 @@ typedef struct {
FRAME_CONTEXT
fc
;
}
CODING_CONTEXT
;
// This enumerator type needs to be kept aligned with the mode order in
// const MODE_DEFINITION vp9_mode_order[MAX_MODES] used in the rd code.
typedef
enum
{
THR_NEARESTMV
,
THR_NEARESTA
,
THR_NEARESTG
,
THR_DC
,
THR_NEWMV
,
THR_NEWA
,
THR_NEWG
,
THR_NEARMV
,
THR_NEARA
,
THR_COMP_NEARESTLA
,
THR_COMP_NEARESTGA
,
THR_TM
,
THR_COMP_NEARLA
,
THR_COMP_NEWLA
,
THR_NEARG
,
THR_COMP_NEARGA
,
THR_COMP_NEWGA
,
THR_ZEROMV
,
THR_ZEROG
,
THR_ZEROA
,
THR_COMP_ZEROLA
,
THR_COMP_ZEROGA
,
THR_H_PRED
,
THR_V_PRED
,
THR_D135_PRED
,
THR_D207_PRED
,
THR_D153_PRED
,
THR_D63_PRED
,
THR_D117_PRED
,
THR_D45_PRED
,
}
THR_MODES
;
typedef
enum
{
THR_LAST
,
THR_GOLD
,
THR_ALTR
,
THR_COMP_LA
,
THR_COMP_GA
,
THR_INTRA
,
}
THR_MODES_SUB8X8
;
typedef
enum
{
// encode_breakout is disabled.
...
...
@@ -293,32 +241,6 @@ static INLINE int is_best_mode(MODE mode) {
return
mode
==
ONE_PASS_BEST
||
mode
==
TWO_PASS_SECOND_BEST
;
}
typedef
struct
RD_OPT
{
// Thresh_mult is used to set a threshold for the rd score. A higher value
// means that we will accept the best mode so far more often. This number
// is used in combination with the current block size, and thresh_freq_fact
// to pick a threshold.
int
thresh_mult
[
MAX_MODES
];
int
thresh_mult_sub8x8
[
MAX_REFS
];
int
threshes
[
MAX_SEGMENTS
][
BLOCK_SIZES
][
MAX_MODES
];
int
thresh_freq_fact
[
BLOCK_SIZES
][
MAX_MODES
];
int64_t
comp_pred_diff
[
REFERENCE_MODES
];
int64_t
prediction_type_threshes
[
MAX_REF_FRAMES
][
REFERENCE_MODES
];
int64_t
tx_select_diff
[
TX_MODES
];
// FIXME(rbultje) can this overflow?
int
tx_select_threshes
[
MAX_REF_FRAMES
][
TX_MODES
];
int64_t
filter_diff
[
SWITCHABLE_FILTER_CONTEXTS
];
int64_t
filter_threshes
[
MAX_REF_FRAMES
][
SWITCHABLE_FILTER_CONTEXTS
];
int64_t
filter_cache
[
SWITCHABLE_FILTER_CONTEXTS
];
int64_t
mask_filter
;
int
RDMULT
;
int
RDDIV
;
}
RD_OPT
;
typedef
struct
VP9_COMP
{
QUANTS
quants
;
MACROBLOCK
mb
;
...
...
This diff is collapsed.
Click to expand it.
vp9/encoder/vp9_rdopt.h
+
99
−
12
View file @
bf46feb3
...
...
@@ -13,7 +13,10 @@
#include
<limits.h>
#include
"vp9/encoder/vp9_encoder.h"
#include
"vp9/common/vp9_blockd.h"
#include
"vp9/encoder/vp9_block.h"
#include
"vp9/encoder/vp9_context_tree.h"
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -30,21 +33,104 @@ extern "C" {
#define INVALID_MV 0x80008000
#define MAX_MODES 30
#define MAX_REFS 6
// This enumerator type needs to be kept aligned with the mode order in
// const MODE_DEFINITION vp9_mode_order[MAX_MODES] used in the rd code.
typedef
enum
{
THR_NEARESTMV
,
THR_NEARESTA
,
THR_NEARESTG
,
THR_DC
,
THR_NEWMV
,
THR_NEWA
,
THR_NEWG
,
THR_NEARMV
,
THR_NEARA
,
THR_COMP_NEARESTLA
,
THR_COMP_NEARESTGA
,
THR_TM
,
THR_COMP_NEARLA
,
THR_COMP_NEWLA
,
THR_NEARG
,
THR_COMP_NEARGA
,
THR_COMP_NEWGA
,
THR_ZEROMV
,
THR_ZEROG
,
THR_ZEROA
,
THR_COMP_ZEROLA
,
THR_COMP_ZEROGA
,
THR_H_PRED
,
THR_V_PRED
,
THR_D135_PRED
,
THR_D207_PRED
,
THR_D153_PRED
,
THR_D63_PRED
,
THR_D117_PRED
,
THR_D45_PRED
,
}
THR_MODES
;
typedef
enum
{
THR_LAST
,
THR_GOLD
,
THR_ALTR
,
THR_COMP_LA
,
THR_COMP_GA
,
THR_INTRA
,
}
THR_MODES_SUB8X8
;
typedef
struct
RD_OPT
{
// Thresh_mult is used to set a threshold for the rd score. A higher value
// means that we will accept the best mode so far more often. This number
// is used in combination with the current block size, and thresh_freq_fact
// to pick a threshold.
int
thresh_mult
[
MAX_MODES
];
int
thresh_mult_sub8x8
[
MAX_REFS
];
int
threshes
[
MAX_SEGMENTS
][
BLOCK_SIZES
][
MAX_MODES
];
int
thresh_freq_fact
[
BLOCK_SIZES
][
MAX_MODES
];
int64_t
comp_pred_diff
[
REFERENCE_MODES
];
int64_t
prediction_type_threshes
[
MAX_REF_FRAMES
][
REFERENCE_MODES
];
int64_t
tx_select_diff
[
TX_MODES
];
// FIXME(rbultje) can this overflow?
int
tx_select_threshes
[
MAX_REF_FRAMES
][
TX_MODES
];
int64_t
filter_diff
[
SWITCHABLE_FILTER_CONTEXTS
];
int64_t
filter_threshes
[
MAX_REF_FRAMES
][
SWITCHABLE_FILTER_CONTEXTS
];
int64_t
filter_cache
[
SWITCHABLE_FILTER_CONTEXTS
];
int64_t
mask_filter
;
int
RDMULT
;
int
RDDIV
;
}
RD_OPT
;
struct
TileInfo
;
struct
VP9_COMP
;
struct
macroblock
;
int
vp9_compute_rd_mult
(
const
VP9_COMP
*
cpi
,
int
qindex
);
int
vp9_compute_rd_mult
(
const
struct
VP9_COMP
*
cpi
,
int
qindex
);
void
vp9_initialize_rd_consts
(
VP9_COMP
*
cpi
);
void
vp9_initialize_rd_consts
(
struct
VP9_COMP
*
cpi
);
void
vp9_initialize_me_consts
(
VP9_COMP
*
cpi
,
int
qindex
);
void
vp9_initialize_me_consts
(
struct
VP9_COMP
*
cpi
,
int
qindex
);
void
vp9_model_rd_from_var_lapndz
(
unsigned
int
var
,
unsigned
int
n
,
unsigned
int
qstep
,
int
*
rate
,
int64_t
*
dist
);
int
vp9_get_switchable_rate
(
const
VP9_COMP
*
cpi
);
int
vp9_get_switchable_rate
(
const
struct
VP9_COMP
*
cpi
);
void
vp9_setup_buffer_inter
(
VP9_COMP
*
cpi
,
MACROBLOCK
*
x
,
void
vp9_setup_buffer_inter
(
struct
VP9_COMP
*
cpi
,
struct
macroblock
*
x
,
const
TileInfo
*
const
tile
,
MV_REFERENCE_FRAME
ref_frame
,
BLOCK_SIZE
block_size
,
...
...
@@ -53,14 +139,14 @@ void vp9_setup_buffer_inter(VP9_COMP *cpi, MACROBLOCK *x,
int_mv
frame_near_mv
[
MAX_REF_FRAMES
],
struct
buf_2d
yv12_mb
[
4
][
MAX_MB_PLANE
]);
const
YV12_BUFFER_CONFIG
*
vp9_get_scaled_ref_frame
(
const
VP9_COMP
*
cpi
,
const
YV12_BUFFER_CONFIG
*
vp9_get_scaled_ref_frame
(
const
struct
VP9_COMP
*
cpi
,
int
ref_frame
);
void
vp9_rd_pick_intra_mode_sb
(
VP9_COMP
*
cpi
,
MACROBLOCK
*
x
,
void
vp9_rd_pick_intra_mode_sb
(
struct
VP9_COMP
*
cpi
,
struct
macroblock
*
x
,
int
*
r
,
int64_t
*
d
,
BLOCK_SIZE
bsize
,
PICK_MODE_CONTEXT
*
ctx
,
int64_t
best_rd
);
int64_t
vp9_rd_pick_inter_mode_sb
(
VP9_COMP
*
cpi
,
MACROBLOCK
*
x
,
int64_t
vp9_rd_pick_inter_mode_sb
(
struct
VP9_COMP
*
cpi
,
struct
macroblock
*
x
,
const
struct
TileInfo
*
const
tile
,
int
mi_row
,
int
mi_col
,
int
*
returnrate
,
...
...
@@ -69,7 +155,8 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
PICK_MODE_CONTEXT
*
ctx
,
int64_t
best_rd_so_far
);
int64_t
vp9_rd_pick_inter_mode_sub8x8
(
VP9_COMP
*
cpi
,
MACROBLOCK
*
x
,
int64_t
vp9_rd_pick_inter_mode_sub8x8
(
struct
VP9_COMP
*
cpi
,
struct
macroblock
*
x
,
const
struct
TileInfo
*
const
tile
,
int
mi_row
,
int
mi_col
,
int
*
returnrate
,
...
...
@@ -85,9 +172,9 @@ void vp9_get_entropy_contexts(BLOCK_SIZE bsize, TX_SIZE tx_size,
ENTROPY_CONTEXT
t_above
[
16
],
ENTROPY_CONTEXT
t_left
[
16
]);
void
vp9_set_rd_speed_thresholds
(
VP9_COMP
*
cpi
);
void
vp9_set_rd_speed_thresholds
(
struct
VP9_COMP
*
cpi
);
void
vp9_set_rd_speed_thresholds_sub8x8
(
VP9_COMP
*
cpi
);
void
vp9_set_rd_speed_thresholds_sub8x8
(
struct
VP9_COMP
*
cpi
);
static
INLINE
int
rd_less_than_thresh
(
int64_t
best_rd
,
int
thresh
,
int
thresh_fact
)
{
...
...
This diff is collapsed.
Click to expand it.
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets