Merge "Moving twopass_rc and FIRSTPASS_STATS to vp9_firstpass.h."
This commit is contained in:
commit
9e41de4d61
@ -10,20 +10,84 @@
|
|||||||
|
|
||||||
#ifndef VP9_ENCODER_VP9_FIRSTPASS_H_
|
#ifndef VP9_ENCODER_VP9_FIRSTPASS_H_
|
||||||
#define VP9_ENCODER_VP9_FIRSTPASS_H_
|
#define VP9_ENCODER_VP9_FIRSTPASS_H_
|
||||||
#include "vp9/encoder/vp9_onyx_int.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void vp9_init_first_pass(VP9_COMP *cpi);
|
typedef struct {
|
||||||
void vp9_rc_get_first_pass_params(VP9_COMP *cpi);
|
double frame;
|
||||||
void vp9_first_pass(VP9_COMP *cpi);
|
double intra_error;
|
||||||
void vp9_end_first_pass(VP9_COMP *cpi);
|
double coded_error;
|
||||||
|
double sr_coded_error;
|
||||||
|
double ssim_weighted_pred_err;
|
||||||
|
double pcnt_inter;
|
||||||
|
double pcnt_motion;
|
||||||
|
double pcnt_second_ref;
|
||||||
|
double pcnt_neutral;
|
||||||
|
double MVr;
|
||||||
|
double mvr_abs;
|
||||||
|
double MVc;
|
||||||
|
double mvc_abs;
|
||||||
|
double MVrv;
|
||||||
|
double MVcv;
|
||||||
|
double mv_in_out_count;
|
||||||
|
double new_mv_count;
|
||||||
|
double duration;
|
||||||
|
double count;
|
||||||
|
} FIRSTPASS_STATS;
|
||||||
|
|
||||||
void vp9_init_second_pass(VP9_COMP *cpi);
|
struct twopass_rc {
|
||||||
void vp9_rc_get_second_pass_params(VP9_COMP *cpi);
|
unsigned int section_intra_rating;
|
||||||
void vp9_end_second_pass(VP9_COMP *cpi);
|
unsigned int next_iiratio;
|
||||||
|
unsigned int this_iiratio;
|
||||||
|
FIRSTPASS_STATS total_stats;
|
||||||
|
FIRSTPASS_STATS this_frame_stats;
|
||||||
|
FIRSTPASS_STATS *stats_in, *stats_in_end, *stats_in_start;
|
||||||
|
FIRSTPASS_STATS total_left_stats;
|
||||||
|
int first_pass_done;
|
||||||
|
int64_t bits_left;
|
||||||
|
int64_t clip_bits_total;
|
||||||
|
double avg_iiratio;
|
||||||
|
double modified_error_min;
|
||||||
|
double modified_error_max;
|
||||||
|
double modified_error_total;
|
||||||
|
double modified_error_left;
|
||||||
|
double kf_intra_err_min;
|
||||||
|
double gf_intra_err_min;
|
||||||
|
int static_scene_max_gf_interval;
|
||||||
|
int kf_bits;
|
||||||
|
// Remaining error from uncoded frames in a gf group. Two pass use only
|
||||||
|
int64_t gf_group_error_left;
|
||||||
|
|
||||||
|
// Projected total bits available for a key frame group of frames
|
||||||
|
int64_t kf_group_bits;
|
||||||
|
|
||||||
|
// Error score of frames still to be coded in kf group
|
||||||
|
int64_t kf_group_error_left;
|
||||||
|
|
||||||
|
// Projected Bits available for a group of frames including 1 GF or ARF
|
||||||
|
int64_t gf_group_bits;
|
||||||
|
// Bits for the golden frame or ARF - 2 pass only
|
||||||
|
int gf_bits;
|
||||||
|
int alt_extra_bits;
|
||||||
|
|
||||||
|
int sr_update_lag;
|
||||||
|
|
||||||
|
int kf_zeromotion_pct;
|
||||||
|
int gf_zeromotion_pct;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct VP9_COMP;
|
||||||
|
|
||||||
|
void vp9_init_first_pass(struct VP9_COMP *cpi);
|
||||||
|
void vp9_rc_get_first_pass_params(struct VP9_COMP *cpi);
|
||||||
|
void vp9_first_pass(struct VP9_COMP *cpi);
|
||||||
|
void vp9_end_first_pass(struct VP9_COMP *cpi);
|
||||||
|
|
||||||
|
void vp9_init_second_pass(struct VP9_COMP *cpi);
|
||||||
|
void vp9_rc_get_second_pass_params(struct VP9_COMP *cpi);
|
||||||
|
void vp9_end_second_pass(struct VP9_COMP *cpi);
|
||||||
|
|
||||||
// Post encode update of the rate control parameters for 2-pass
|
// Post encode update of the rate control parameters for 2-pass
|
||||||
void vp9_twopass_postencode_update(struct VP9_COMP *cpi,
|
void vp9_twopass_postencode_update(struct VP9_COMP *cpi,
|
||||||
|
@ -11,9 +11,12 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "./vpx_config.h"
|
#include "./vpx_config.h"
|
||||||
|
|
||||||
#include "vp9/common/vp9_common.h"
|
#include "vp9/common/vp9_common.h"
|
||||||
|
|
||||||
#include "vp9/encoder/vp9_extend.h"
|
#include "vp9/encoder/vp9_extend.h"
|
||||||
#include "vp9/encoder/vp9_lookahead.h"
|
#include "vp9/encoder/vp9_lookahead.h"
|
||||||
|
#include "vp9/encoder/vp9_onyx_int.h"
|
||||||
|
|
||||||
struct lookahead_ctx {
|
struct lookahead_ctx {
|
||||||
unsigned int max_sz; /* Absolute size of the queue */
|
unsigned int max_sz; /* Absolute size of the queue */
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "vp9/common/vp9_onyxc_int.h"
|
#include "vp9/common/vp9_onyxc_int.h"
|
||||||
|
|
||||||
#include "vp9/encoder/vp9_encodemb.h"
|
#include "vp9/encoder/vp9_encodemb.h"
|
||||||
|
#include "vp9/encoder/vp9_firstpass.h"
|
||||||
#include "vp9/encoder/vp9_lookahead.h"
|
#include "vp9/encoder/vp9_lookahead.h"
|
||||||
#include "vp9/encoder/vp9_mbgraph.h"
|
#include "vp9/encoder/vp9_mbgraph.h"
|
||||||
#include "vp9/encoder/vp9_mcomp.h"
|
#include "vp9/encoder/vp9_mcomp.h"
|
||||||
@ -79,28 +80,6 @@ typedef struct {
|
|||||||
FRAME_CONTEXT fc;
|
FRAME_CONTEXT fc;
|
||||||
} CODING_CONTEXT;
|
} CODING_CONTEXT;
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
double frame;
|
|
||||||
double intra_error;
|
|
||||||
double coded_error;
|
|
||||||
double sr_coded_error;
|
|
||||||
double ssim_weighted_pred_err;
|
|
||||||
double pcnt_inter;
|
|
||||||
double pcnt_motion;
|
|
||||||
double pcnt_second_ref;
|
|
||||||
double pcnt_neutral;
|
|
||||||
double MVr;
|
|
||||||
double mvr_abs;
|
|
||||||
double MVc;
|
|
||||||
double mvc_abs;
|
|
||||||
double MVrv;
|
|
||||||
double MVcv;
|
|
||||||
double mv_in_out_count;
|
|
||||||
double new_mv_count;
|
|
||||||
double duration;
|
|
||||||
double count;
|
|
||||||
} FIRSTPASS_STATS;
|
|
||||||
|
|
||||||
// This enumerator type needs to be kept aligned with the mode order in
|
// 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.
|
// const MODE_DEFINITION vp9_mode_order[MAX_MODES] used in the rd code.
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@ -587,46 +566,7 @@ typedef struct VP9_COMP {
|
|||||||
uint64_t time_pick_lpf;
|
uint64_t time_pick_lpf;
|
||||||
uint64_t time_encode_sb_row;
|
uint64_t time_encode_sb_row;
|
||||||
|
|
||||||
struct twopass_rc {
|
struct twopass_rc twopass;
|
||||||
unsigned int section_intra_rating;
|
|
||||||
unsigned int next_iiratio;
|
|
||||||
unsigned int this_iiratio;
|
|
||||||
FIRSTPASS_STATS total_stats;
|
|
||||||
FIRSTPASS_STATS this_frame_stats;
|
|
||||||
FIRSTPASS_STATS *stats_in, *stats_in_end, *stats_in_start;
|
|
||||||
FIRSTPASS_STATS total_left_stats;
|
|
||||||
int first_pass_done;
|
|
||||||
int64_t bits_left;
|
|
||||||
int64_t clip_bits_total;
|
|
||||||
double avg_iiratio;
|
|
||||||
double modified_error_min;
|
|
||||||
double modified_error_max;
|
|
||||||
double modified_error_total;
|
|
||||||
double modified_error_left;
|
|
||||||
double kf_intra_err_min;
|
|
||||||
double gf_intra_err_min;
|
|
||||||
int static_scene_max_gf_interval;
|
|
||||||
int kf_bits;
|
|
||||||
// Remaining error from uncoded frames in a gf group. Two pass use only
|
|
||||||
int64_t gf_group_error_left;
|
|
||||||
|
|
||||||
// Projected total bits available for a key frame group of frames
|
|
||||||
int64_t kf_group_bits;
|
|
||||||
|
|
||||||
// Error score of frames still to be coded in kf group
|
|
||||||
int64_t kf_group_error_left;
|
|
||||||
|
|
||||||
// Projected Bits available for a group of frames including 1 GF or ARF
|
|
||||||
int64_t gf_group_bits;
|
|
||||||
// Bits for the golden frame or ARF - 2 pass only
|
|
||||||
int gf_bits;
|
|
||||||
int alt_extra_bits;
|
|
||||||
|
|
||||||
int sr_update_lag;
|
|
||||||
|
|
||||||
int kf_zeromotion_pct;
|
|
||||||
int gf_zeromotion_pct;
|
|
||||||
} twopass;
|
|
||||||
|
|
||||||
YV12_BUFFER_CONFIG alt_ref_buffer;
|
YV12_BUFFER_CONFIG alt_ref_buffer;
|
||||||
YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS];
|
YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user