Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(686)

Unified Diff: libvpx/source/libvpx/vp8/encoder/onyx_int.h

Issue 7624054: Revert r97185 "Update libvpx snapshot to v0.9.7-p1 (Cayuga)." (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « libvpx/source/libvpx/vp8/encoder/onyx_if.c ('k') | libvpx/source/libvpx/vp8/encoder/parms.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: libvpx/source/libvpx/vp8/encoder/onyx_int.h
diff --git a/libvpx/source/libvpx/vp8/encoder/onyx_int.h b/libvpx/source/libvpx/vp8/encoder/onyx_int.h
index 127fe5db7d83f0a2e863e0930e3479068e792087..0e53f6803a939555fc6cb0b189ebe8edb4867b0a 100644
--- a/libvpx/source/libvpx/vp8/encoder/onyx_int.h
+++ b/libvpx/source/libvpx/vp8/encoder/onyx_int.h
@@ -29,7 +29,6 @@
#include "mcomp.h"
#include "temporal_filter.h"
#include "vp8/common/findnearmv.h"
-#include "lookahead.h"
//#define SPEEDSTATS 1
#define MIN_GF_INTERVAL 4
@@ -47,8 +46,8 @@
#define MIN_THRESHMULT 32
#define MAX_THRESHMULT 512
-#define GF_ZEROMV_ZBIN_BOOST 12
-#define LF_ZEROMV_ZBIN_BOOST 6
+#define GF_ZEROMV_ZBIN_BOOST 24
+#define LF_ZEROMV_ZBIN_BOOST 12
#define MV_ZBIN_BOOST 4
#define ZBIN_OQ_MAX 192
@@ -180,6 +179,9 @@ typedef struct
int half_pixel_search;
int quarter_pixel_search;
int thresh_mult[MAX_MODES];
+ int full_freq[2];
+ int min_fs_radius;
+ int max_fs_radius;
int max_step_search_steps;
int first_step;
int optimize_coefficients;
@@ -215,6 +217,14 @@ typedef struct
void *ptr1;
} LPFTHREAD_DATA;
+typedef struct
+{
+ INT64 source_time_stamp;
+ INT64 source_end_time_stamp;
+
+ DECLARE_ALIGNED(16, YV12_BUFFER_CONFIG, source_buffer);
+ unsigned int source_frame_flags;
+} SOURCE_SAMPLE;
typedef struct VP8_ENCODER_RTCD
{
@@ -237,21 +247,21 @@ enum
BLOCK_MAX_SEGMENTS
};
-typedef struct VP8_COMP
+typedef struct
{
DECLARE_ALIGNED(16, short, Y1quant[QINDEX_RANGE][16]);
- DECLARE_ALIGNED(16, unsigned char, Y1quant_shift[QINDEX_RANGE][16]);
+ DECLARE_ALIGNED(16, short, Y1quant_shift[QINDEX_RANGE][16]);
DECLARE_ALIGNED(16, short, Y1zbin[QINDEX_RANGE][16]);
DECLARE_ALIGNED(16, short, Y1round[QINDEX_RANGE][16]);
DECLARE_ALIGNED(16, short, Y2quant[QINDEX_RANGE][16]);
- DECLARE_ALIGNED(16, unsigned char, Y2quant_shift[QINDEX_RANGE][16]);
+ DECLARE_ALIGNED(16, short, Y2quant_shift[QINDEX_RANGE][16]);
DECLARE_ALIGNED(16, short, Y2zbin[QINDEX_RANGE][16]);
DECLARE_ALIGNED(16, short, Y2round[QINDEX_RANGE][16]);
DECLARE_ALIGNED(16, short, UVquant[QINDEX_RANGE][16]);
- DECLARE_ALIGNED(16, unsigned char, UVquant_shift[QINDEX_RANGE][16]);
+ DECLARE_ALIGNED(16, short, UVquant_shift[QINDEX_RANGE][16]);
DECLARE_ALIGNED(16, short, UVzbin[QINDEX_RANGE][16]);
DECLARE_ALIGNED(16, short, UVround[QINDEX_RANGE][16]);
@@ -270,24 +280,29 @@ typedef struct VP8_COMP
VP8_CONFIG oxcf;
- struct lookahead_ctx *lookahead;
- struct lookahead_entry *source;
- struct lookahead_entry *alt_ref_source;
-
YV12_BUFFER_CONFIG *Source;
YV12_BUFFER_CONFIG *un_scaled_source;
+ INT64 source_time_stamp;
+ INT64 source_end_time_stamp;
+ unsigned int source_frame_flags;
YV12_BUFFER_CONFIG scaled_source;
+ int source_buffer_count; // number of src_buffers in use for lagged encoding
+ int source_encode_index; // index of buffer in src_buffer to encode
int source_alt_ref_pending; // frame in src_buffers has been identified to be encoded as an alt ref
int source_alt_ref_active; // an alt ref frame has been encoded and is usable
+ int last_alt_ref_sei; // index into src_buffers of frame used as alt reference
int is_src_frame_alt_ref; // source of frame to encode is an exact copy of an alt ref frame
+ int is_next_src_alt_ref; // source of next frame to encode is an exact copy of an alt ref frame
int gold_is_last; // golden frame same as last frame ( short circuit gold searches)
int alt_is_last; // Alt reference frame same as last ( short circuit altref search)
int gold_is_alt; // don't do both alt and gold search ( just do gold).
//int refresh_alt_ref_frame;
+ SOURCE_SAMPLE src_buffer[MAX_LAG_BUFFERS];
+
YV12_BUFFER_CONFIG last_frame_uf;
TOKENEXTRA *tok;
@@ -307,9 +322,17 @@ typedef struct VP8_COMP
unsigned int mode_chosen_counts[MAX_MODES];
unsigned int mbs_tested_so_far;
+ unsigned int check_freq[2];
+ unsigned int do_full[2];
+
int rd_thresh_mult[MAX_MODES];
int rd_baseline_thresh[MAX_MODES];
int rd_threshes[MAX_MODES];
+ int mvcostbase;
+ int mvcostmultiplier;
+ int subseqblockweight;
+ int errthresh;
+ unsigned int activity_avg;
int RDMULT;
int RDDIV ;
@@ -317,10 +340,20 @@ typedef struct VP8_COMP
CODING_CONTEXT coding_context;
// Rate targetting variables
- int64_t prediction_error;
- int64_t last_prediction_error;
- int64_t intra_error;
- int64_t last_intra_error;
+ long long prediction_error;
+ long long last_prediction_error;
+ long long intra_error;
+ long long last_intra_error;
+
+#if 0
+ // Experimental RD code
+ long long frame_distortion;
+ long long last_frame_distortion;
+#endif
+
+ int last_mb_distortion;
+
+ int frames_since_auto_filter;
int this_frame_target;
int projected_frame_size;
@@ -329,30 +362,53 @@ typedef struct VP8_COMP
double rate_correction_factor;
double key_frame_rate_correction_factor;
double gf_rate_correction_factor;
+ double est_max_qcorrection_factor;
int frames_till_gf_update_due; // Count down till next GF
int current_gf_interval; // GF interval chosen when we coded the last GF
int gf_overspend_bits; // Total bits overspent becasue of GF boost (cumulative)
+ int gf_group_bits; // Projected Bits available for a group of frames including 1 GF or ARF
+ int gf_bits; // Bits for the golden frame or ARF - 2 pass only
+ int mid_gf_extra_bits; // A few extra bits for the frame half way between two gfs.
+
+ // Projected total bits available for a key frame group of frames
+ long long kf_group_bits;
+
+ // Error score of frames still to be coded in kf group
+ long long kf_group_error_left;
+
+ // Bits for the key frame in a key frame group - 2 pass only
+ int kf_bits;
+
int non_gf_bitrate_adjustment; // Used in the few frames following a GF to recover the extra bits spent in that GF
+ int initial_gf_use; // percentage use of gf 2 frames after gf
+
+ int gf_group_error_left; // Remaining error from uncoded frames in a gf group. Two pass use only
int kf_overspend_bits; // Extra bits spent on key frames that need to be recovered on inter frames
int kf_bitrate_adjustment; // Current number of bit s to try and recover on each inter frame.
int max_gf_interval;
+ int static_scene_max_gf_interval;
int baseline_gf_interval;
+ int gf_decay_rate;
int active_arnr_frames; // <= cpi->oxcf.arnr_max_frames
- int64_t key_frame_count;
+ INT64 key_frame_count;
+ INT64 tot_key_frame_bits;
+ int prior_key_frame_size[KEY_FRAME_CONTEXT];
int prior_key_frame_distance[KEY_FRAME_CONTEXT];
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 that should be used for any frame
+ int last_key_frame_size;
+ int intra_frame_target;
int inter_frame_target;
double output_frame_rate;
- int64_t last_time_stamp_seen;
- int64_t last_end_time_stamp_seen;
- int64_t first_time_stamp_ever;
+ long long last_time_stamp_seen;
+ long long last_end_time_stamp_seen;
+ long long first_time_stamp_ever;
int ni_av_qi;
int ni_tot_qi;
@@ -363,7 +419,7 @@ typedef struct VP8_COMP
int zbin_mode_boost;
int zbin_mode_boost_enabled;
- int64_t total_byte_count;
+ INT64 total_byte_count;
int buffered_mode;
@@ -376,7 +432,7 @@ typedef struct VP8_COMP
int long_rolling_target_bits;
int long_rolling_actual_bits;
- int64_t total_actual_bits;
+ long long total_actual_bits;
int total_target_vs_actual; // debug stats
int worst_quality;
@@ -385,6 +441,8 @@ typedef struct VP8_COMP
int active_best_quality;
int cq_target_quality;
+ int maxq_max_limit;
+ int maxq_min_limit;
int drop_frames_allowed; // Are we permitted to drop frames?
int drop_frame; // Drop this frame?
@@ -398,18 +456,45 @@ typedef struct VP8_COMP
unsigned int MVcount [2] [MVvals]; /* (row,col) MV cts this frame */
- unsigned int coef_counts [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [MAX_ENTROPY_TOKENS]; /* for this frame */
- //DECLARE_ALIGNED(16, int, coef_counts_backup [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [MAX_ENTROPY_TOKENS]); //not used any more
+ unsigned int coef_counts [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [vp8_coef_tokens]; /* for this frame */
+ //DECLARE_ALIGNED(16, int, coef_counts_backup [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [vp8_coef_tokens]); //not used any more
//save vp8_tree_probs_from_distribution result for each frame to avoid repeat calculation
- vp8_prob frame_coef_probs [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [ENTROPY_NODES];
- unsigned int frame_branch_ct [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [ENTROPY_NODES][2];
+ vp8_prob frame_coef_probs [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [vp8_coef_tokens-1];
+ unsigned int frame_branch_ct [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [vp8_coef_tokens-1][2];
+
+ /* Second compressed data partition contains coefficient data. */
+ unsigned char *output_partition2;
+ size_t output_partition2size;
+
+ int frames_to_key;
int gfu_boost;
int kf_boost;
int last_boost;
+ double total_error_left;
+ double total_intra_error_left;
+ double total_coded_error_left;
+ double start_tot_err_left;
+ double min_error;
+ double kf_intra_err_min;
+ double gf_intra_err_min;
+
+ double modified_error_total;
+ double modified_error_used;
+ double modified_error_left;
+ double clip_bpe;
+ double observed_bpe;
+
+ double avg_iiratio;
int target_bandwidth;
+ long long bits_left;
+ long long clip_bits_total;
+ FIRSTPASS_STATS *total_stats;
+ FIRSTPASS_STATS *this_frame_stats;
+ FIRSTPASS_STATS *stats_in, *stats_in_end;
struct vpx_codec_pkt_list *output_pkt_list;
+ int first_pass_done;
#if 0
// Experimental code for lagged and one pass
@@ -430,9 +515,14 @@ typedef struct VP8_COMP
int interquantizer;
int auto_gold;
int auto_adjust_gold_quantizer;
+ int goldquantizer;
int goldfreq;
+ int auto_adjust_key_quantizer;
+ int keyquantizer;
int auto_worst_q;
+ int filter_type;
int cpu_used;
+ int chroma_boost;
int horiz_scale;
int vert_scale;
int pass;
@@ -450,11 +540,31 @@ typedef struct VP8_COMP
int this_frame_percent_intra;
int last_frame_percent_intra;
+ int last_key_frame_q;
+ int last_kffilt_lvl;
+
int ref_frame_flags;
SPEED_FEATURES sf;
int error_bins[1024];
+ int inter_lvl;
+ int intra_lvl;
+ int motion_lvl;
+ int motion_speed;
+ int motion_var;
+ unsigned int next_iiratio;
+ unsigned int this_iiratio;
+ int this_frame_modified_error;
+
+ double norm_intra_err_per_mb;
+ double norm_inter_err_per_mb;
+ double norm_iidiff_per_mb;
+
+ int last_best_mode_index; // Record of mode index chosen for previous macro block.
+ int last_auto_filt_val;
+ int last_auto_filt_q;
+
// Data used for real time conferencing mode to help determine if it would be good to update the gf
int inter_zz_count;
int gf_bad_count;
@@ -462,6 +572,10 @@ typedef struct VP8_COMP
int skip_true_count;
int skip_false_count;
+ int alt_qcount;
+
+ int ready_for_new_frame;
+
unsigned char *segmentation_map;
signed char segment_feature_data[MB_LVL_MAX][MAX_MB_SEGMENTS]; // Segment data (can be deltas or absolute values)
int segment_encode_breakout[MAX_MB_SEGMENTS]; // segment threashold for encode breakout
@@ -480,6 +594,7 @@ typedef struct VP8_COMP
// multithread data
int * mt_current_mb_col;
int mt_sync_range;
+ int processor_core_count;
int b_multi_threaded;
int encoding_thread_count;
@@ -498,13 +613,11 @@ typedef struct VP8_COMP
#endif
TOKENLIST *tplist;
- unsigned int partition_sz[MAX_PARTITIONS];
// end of multithread data
fractional_mv_step_fp *find_fractional_mv_step;
vp8_full_search_fn_t full_search_sad;
- vp8_refining_search_fn_t refining_search_sad;
vp8_diamond_search_fn_t diamond_search_sad;
vp8_variance_fn_ptr_t fn_ptr[BLOCK_MAX_SEGMENTS];
unsigned int time_receive_data;
@@ -512,60 +625,25 @@ typedef struct VP8_COMP
unsigned int time_pick_lpf;
unsigned int time_encode_mb_row;
+ unsigned int tempdata1;
+ unsigned int tempdata2;
+
int base_skip_false_prob[128];
+ unsigned int section_intra_rating;
+
+ double section_max_qfactor;
- struct twopass_rc
- {
- unsigned int section_intra_rating;
- double section_max_qfactor;
- 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;
- int first_pass_done;
- int64_t bits_left;
- int64_t clip_bits_total;
- double avg_iiratio;
- double modified_error_total;
- double modified_error_used;
- double modified_error_left;
- double total_error_left;
- double total_intra_error_left;
- double total_coded_error_left;
- double start_tot_err_left;
- double kf_intra_err_min;
- double gf_intra_err_min;
- int frames_to_key;
- int maxq_max_limit;
- int maxq_min_limit;
- int gf_decay_rate;
- int static_scene_max_gf_interval;
- int kf_bits;
- int gf_group_error_left; // Remaining error from uncoded frames in a gf group. Two pass use only
-
- // 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;
-
- int gf_group_bits; // Projected Bits available for a group of frames including 1 GF or ARF
- int gf_bits; // Bits for the golden frame or ARF - 2 pass only
- int mid_gf_extra_bits; // A few extra bits for the frame half way between two gfs.
- double est_max_qcorrection_factor;
- } twopass;
#if CONFIG_RUNTIME_CPU_DETECT
VP8_ENCODER_RTCD rtcd;
#endif
#if VP8_TEMPORAL_ALT_REF
- YV12_BUFFER_CONFIG alt_ref_buffer;
+ SOURCE_SAMPLE alt_ref_buffer;
YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS];
int fixed_divide[512];
#endif
-#if CONFIG_INTERNAL_STATS
+#if CONFIG_PSNR
int count;
double total_y;
double total_u;
@@ -592,18 +670,10 @@ typedef struct VP8_COMP
#endif
int b_calculate_psnr;
- // Per MB activity measurement
- unsigned int activity_avg;
- unsigned int * mb_activity_map;
- int * mb_norm_activity_map;
- // Record of which MBs still refer to last golden frame either
- // directly or through 0,0
- unsigned char *gf_active_flags;
+ unsigned char *gf_active_flags; // Record of which MBs still refer to last golden frame either directly or through 0,0
int gf_active_count;
- int output_partition;
-
//Store last frame's MV info for next frame MV prediction
int_mv *lfmv;
int *lf_ref_frame_sign_bias;
@@ -612,7 +682,6 @@ typedef struct VP8_COMP
#if CONFIG_REALTIME_ONLY
int force_next_frame_intra; /* force next frame to intra when kf_auto says so */
#endif
- int droppable;
} VP8_COMP;
void control_data_rate(VP8_COMP *cpi);
@@ -621,7 +690,7 @@ void vp8_encode_frame(VP8_COMP *cpi);
void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size);
-void vp8_activity_masking(VP8_COMP *cpi, MACROBLOCK *x);
+unsigned int vp8_activity_masking(VP8_COMP *cpi, MACROBLOCK *x);
int rd_cost_intra_mb(MACROBLOCKD *x);
« no previous file with comments | « libvpx/source/libvpx/vp8/encoder/onyx_if.c ('k') | libvpx/source/libvpx/vp8/encoder/parms.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698