2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
11 #ifndef VP9_ENCODER_VP9_FIRSTPASS_H_
12 #define VP9_ENCODER_VP9_FIRSTPASS_H_
22 double sr_coded_error;
23 double ssim_weighted_pred_err;
26 double pcnt_second_ref;
34 double mv_in_out_count;
41 unsigned int section_intra_rating;
42 unsigned int next_iiratio;
43 unsigned int this_iiratio;
44 FIRSTPASS_STATS total_stats;
45 FIRSTPASS_STATS this_frame_stats;
46 FIRSTPASS_STATS *stats_in, *stats_in_end, *stats_in_start;
47 FIRSTPASS_STATS total_left_stats;
50 int64_t clip_bits_total;
52 double modified_error_min;
53 double modified_error_max;
54 double modified_error_total;
55 double modified_error_left;
56 double kf_intra_err_min;
57 double gf_intra_err_min;
58 int static_scene_max_gf_interval;
60 // Remaining error from uncoded frames in a gf group. Two pass use only
61 int64_t gf_group_error_left;
63 // Projected total bits available for a key frame group of frames
64 int64_t kf_group_bits;
66 // Error score of frames still to be coded in kf group
67 int64_t kf_group_error_left;
69 // Projected Bits available for a group of frames including 1 GF or ARF
70 int64_t gf_group_bits;
71 // Bits for the golden frame or ARF - 2 pass only
77 int kf_zeromotion_pct;
78 int gf_zeromotion_pct;
80 int active_worst_quality;
85 void vp9_init_first_pass(struct VP9_COMP *cpi);
86 void vp9_rc_get_first_pass_params(struct VP9_COMP *cpi);
87 void vp9_first_pass(struct VP9_COMP *cpi);
88 void vp9_end_first_pass(struct VP9_COMP *cpi);
90 void vp9_init_second_pass(struct VP9_COMP *cpi);
91 void vp9_rc_get_second_pass_params(struct VP9_COMP *cpi);
92 void vp9_end_second_pass(struct VP9_COMP *cpi);
93 int vp9_twopass_worst_quality(struct VP9_COMP *cpi, FIRSTPASS_STATS *fpstats,
94 int section_target_bandwitdh);
96 // Post encode update of the rate control parameters for 2-pass
97 void vp9_twopass_postencode_update(struct VP9_COMP *cpi,
103 #endif // VP9_ENCODER_VP9_FIRSTPASS_H_