Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
A
aom-rav1e
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Xiph.Org
aom-rav1e
Commits
afc8f434
Commit
afc8f434
authored
11 years ago
by
Dmitry Kovalev
Committed by
Gerrit Code Review
11 years ago
Browse files
Options
Downloads
Plain Diff
Merge "Moving RATE_CONTROL struct to vp9_ratectrl.h."
parents
0ac4e139
45d99257
Loading
Loading
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
vp9/encoder/vp9_onyx_int.h
+13
-71
13 additions, 71 deletions
vp9/encoder/vp9_onyx_int.h
vp9/encoder/vp9_ratectrl.h
+78
-17
78 additions, 17 deletions
vp9/encoder/vp9_ratectrl.h
with
91 additions
and
88 deletions
vp9/encoder/vp9_onyx_int.h
+
13
−
71
View file @
afc8f434
...
...
@@ -8,25 +8,28 @@
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef VP9_ENCODER_VP9_ONYX_INT_H_
#define VP9_ENCODER_VP9_ONYX_INT_H_
#include
<stdio.h>
#include
"./vpx_config.h"
#include
"vpx_ports/mem.h"
#include
"vpx/internal/vpx_codec_internal.h"
#include
"vp9/common/vp9_entropy.h"
#include
"vp9/common/vp9_entropymode.h"
#include
"vp9/common/vp9_onyx.h"
#include
"vp9/encoder/vp9_treewriter.h"
#include
"vp9/encoder/vp9_tokenize.h"
#include
"vp9/common/vp9_onyxc_int.h"
#include
"vp9/encoder/vp9_variance.h"
#include
"vp9/encoder/vp9_encodemb.h"
#include
"vp9/encoder/vp9_quantize.h"
#include
"vp9/common/vp9_entropy.h"
#include
"vp9/common/vp9_entropymode.h"
#include
"vpx_ports/mem.h"
#include
"vpx/internal/vpx_codec_internal.h"
#include
"vp9/encoder/vp9_mcomp.h"
#include
"vp9/encoder/vp9_lookahead.h"
#include
"vp9/encoder/vp9_mcomp.h"
#include
"vp9/encoder/vp9_quantize.h"
#include
"vp9/encoder/vp9_ratectrl.h"
#include
"vp9/encoder/vp9_tokenize.h"
#include
"vp9/encoder/vp9_treewriter.h"
#include
"vp9/encoder/vp9_variance.h"
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -410,67 +413,6 @@ typedef struct {
int
use_fast_coef_updates
;
// 0: 2-loop, 1: 1-loop, 2: 1-loop reduced
}
SPEED_FEATURES
;
typedef
struct
{
// Rate targetting variables
int
this_frame_target
;
int
projected_frame_size
;
int
sb64_target_rate
;
int
last_q
[
3
];
// Separate values for Intra/Inter/ARF-GF
int
last_boosted_qindex
;
// Last boosted GF/KF/ARF q
int
gfu_boost
;
int
last_boost
;
int
kf_boost
;
double
rate_correction_factor
;
double
key_frame_rate_correction_factor
;
double
gf_rate_correction_factor
;
unsigned
int
frames_since_golden
;
unsigned
int
frames_till_gf_update_due
;
// Count down till next GF
unsigned
int
max_gf_interval
;
unsigned
int
baseline_gf_interval
;
unsigned
int
frames_to_key
;
unsigned
int
frames_since_key
;
unsigned
int
this_key_frame_forced
;
unsigned
int
next_key_frame_forced
;
unsigned
int
source_alt_ref_pending
;
unsigned
int
source_alt_ref_active
;
unsigned
int
is_src_frame_alt_ref
;
int
per_frame_bandwidth
;
// Current section per frame bandwidth target
int
av_per_frame_bandwidth
;
// Average frame size target for clip
int
min_frame_bandwidth
;
// Minimum allocation used for any frame
int
max_frame_bandwidth
;
// Maximum burst rate allowed for a frame.
int
ni_av_qi
;
int
ni_tot_qi
;
int
ni_frames
;
int
avg_frame_qindex
[
3
];
// 0 - KEY, 1 - INTER, 2 - ARF/GF
double
tot_q
;
double
avg_q
;
int
buffer_level
;
int
bits_off_target
;
int
decimation_factor
;
int
decimation_count
;
int
rolling_target_bits
;
int
rolling_actual_bits
;
int
long_rolling_target_bits
;
int
long_rolling_actual_bits
;
int64_t
total_actual_bits
;
int
total_target_vs_actual
;
// debug stats
int
worst_quality
;
int
active_worst_quality
;
int
best_quality
;
// int active_best_quality;
}
RATE_CONTROL
;
typedef
struct
VP9_COMP
{
DECLARE_ALIGNED
(
16
,
int16_t
,
y_quant
[
QINDEX_RANGE
][
8
]);
DECLARE_ALIGNED
(
16
,
int16_t
,
y_quant_shift
[
QINDEX_RANGE
][
8
]);
...
...
This diff is collapsed.
Click to expand it.
vp9/encoder/vp9_ratectrl.h
+
78
−
17
View file @
afc8f434
...
...
@@ -12,66 +12,127 @@
#ifndef VP9_ENCODER_VP9_RATECTRL_H_
#define VP9_ENCODER_VP9_RATECTRL_H_
#include
"vp9/encoder/vp9_onyx_int.h"
#ifdef __cplusplus
extern
"C"
{
#endif
#define FRAME_OVERHEAD_BITS 200
void
vp9_save_coding_context
(
VP9_COMP
*
cpi
);
void
vp9_restore_coding_context
(
VP9_COMP
*
cpi
);
void
vp9_setup_key_frame
(
VP9_COMP
*
cpi
);
void
vp9_setup_inter_frame
(
VP9_COMP
*
cpi
);
typedef
struct
{
// Rate targetting variables
int
this_frame_target
;
int
projected_frame_size
;
int
sb64_target_rate
;
int
last_q
[
3
];
// Separate values for Intra/Inter/ARF-GF
int
last_boosted_qindex
;
// Last boosted GF/KF/ARF q
int
gfu_boost
;
int
last_boost
;
int
kf_boost
;
double
rate_correction_factor
;
double
key_frame_rate_correction_factor
;
double
gf_rate_correction_factor
;
unsigned
int
frames_since_golden
;
unsigned
int
frames_till_gf_update_due
;
// Count down till next GF
unsigned
int
max_gf_interval
;
unsigned
int
baseline_gf_interval
;
unsigned
int
frames_to_key
;
unsigned
int
frames_since_key
;
unsigned
int
this_key_frame_forced
;
unsigned
int
next_key_frame_forced
;
unsigned
int
source_alt_ref_pending
;
unsigned
int
source_alt_ref_active
;
unsigned
int
is_src_frame_alt_ref
;
int
per_frame_bandwidth
;
// Current section per frame bandwidth target
int
av_per_frame_bandwidth
;
// Average frame size target for clip
int
min_frame_bandwidth
;
// Minimum allocation used for any frame
int
max_frame_bandwidth
;
// Maximum burst rate allowed for a frame.
int
ni_av_qi
;
int
ni_tot_qi
;
int
ni_frames
;
int
avg_frame_qindex
[
3
];
// 0 - KEY, 1 - INTER, 2 - ARF/GF
double
tot_q
;
double
avg_q
;
int
buffer_level
;
int
bits_off_target
;
int
decimation_factor
;
int
decimation_count
;
int
rolling_target_bits
;
int
rolling_actual_bits
;
int
long_rolling_target_bits
;
int
long_rolling_actual_bits
;
int64_t
total_actual_bits
;
int
total_target_vs_actual
;
// debug stats
int
worst_quality
;
int
active_worst_quality
;
int
best_quality
;
// int active_best_quality;
}
RATE_CONTROL
;
struct
VP9_COMP
;
void
vp9_save_coding_context
(
struct
VP9_COMP
*
cpi
);
void
vp9_restore_coding_context
(
struct
VP9_COMP
*
cpi
);
void
vp9_setup_key_frame
(
struct
VP9_COMP
*
cpi
);
void
vp9_setup_inter_frame
(
struct
VP9_COMP
*
cpi
);
double
vp9_convert_qindex_to_q
(
int
qindex
);
// Updates rate correction factors
void
vp9_rc_update_rate_correction_factors
(
VP9_COMP
*
cpi
,
int
damp_var
);
void
vp9_rc_update_rate_correction_factors
(
struct
VP9_COMP
*
cpi
,
int
damp_var
);
// initialize luts for minq
void
vp9_rc_init_minq_luts
(
void
);
// return of 0 means drop frame
// Changes only rc.this_frame_target and rc.sb64_rate_target
int
vp9_rc_pick_frame_size_target
(
VP9_COMP
*
cpi
);
int
vp9_rc_pick_frame_size_target
(
struct
VP9_COMP
*
cpi
);
void
vp9_rc_compute_frame_size_bounds
(
const
VP9_COMP
*
cpi
,
void
vp9_rc_compute_frame_size_bounds
(
const
struct
VP9_COMP
*
cpi
,
int
this_frame_target
,
int
*
frame_under_shoot_limit
,
int
*
frame_over_shoot_limit
);
// Picks q and q bounds given the target for bits
int
vp9_rc_pick_q_and_adjust_q_bounds
(
const
VP9_COMP
*
cpi
,
int
vp9_rc_pick_q_and_adjust_q_bounds
(
const
struct
VP9_COMP
*
cpi
,
int
*
bottom_index
,
int
*
top_index
);
// Estimates q to achieve a target bits per frame
int
vp9_rc_regulate_q
(
const
VP9_COMP
*
cpi
,
int
target_bits_per_frame
,
int
vp9_rc_regulate_q
(
const
struct
VP9_COMP
*
cpi
,
int
target_bits_per_frame
,
int
active_best_quality
,
int
active_worst_quality
);
// Post encode update of the rate control parameters based
// on bytes used
void
vp9_rc_postencode_update
(
VP9_COMP
*
cpi
,
void
vp9_rc_postencode_update
(
struct
VP9_COMP
*
cpi
,
uint64_t
bytes_used
);
// for dropped frames
void
vp9_rc_postencode_update_drop_frame
(
VP9_COMP
*
cpi
);
void
vp9_rc_postencode_update_drop_frame
(
struct
VP9_COMP
*
cpi
);
// estimates bits per mb for a given qindex and correction factor
int
vp9_rc_bits_per_mb
(
FRAME_TYPE
frame_type
,
int
qindex
,
double
correction_factor
);
// Post encode update of the rate control parameters for 2-pass
void
vp9_twopass_postencode_update
(
VP9_COMP
*
cpi
,
void
vp9_twopass_postencode_update
(
struct
VP9_COMP
*
cpi
,
uint64_t
bytes_used
);
// Decide if we should drop this frame: For 1-pass CBR.
int
vp9_drop_frame
(
VP9_COMP
*
cpi
);
int
vp9_drop_frame
(
struct
VP9_COMP
*
cpi
);
// Update the buffer level.
void
vp9_update_buffer_level
(
VP9_COMP
*
cpi
,
int
encoded_frame_size
);
void
vp9_update_buffer_level
(
struct
VP9_COMP
*
cpi
,
int
encoded_frame_size
);
#ifdef __cplusplus
}
// extern "C"
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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