X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2Flibvpx%2Fsource%2Flibvpx%2Fvp9%2Fencoder%2Fvp9_firstpass.h;h=33a795f26572a3d2be63dd91c7a3c3580e272809;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=f7ba423b91fc69df06336d0dd95fb6faf13ae0ea;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h b/src/third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h index f7ba423..33a795f 100644 --- a/src/third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h +++ b/src/third_party/libvpx/source/libvpx/vp9/encoder/vp9_firstpass.h @@ -11,16 +11,25 @@ #ifndef VP9_ENCODER_VP9_FIRSTPASS_H_ #define VP9_ENCODER_VP9_FIRSTPASS_H_ +#include "vp9/encoder/vp9_lookahead.h" +#include "vp9/encoder/vp9_ratectrl.h" + #ifdef __cplusplus extern "C" { #endif +#if CONFIG_FP_MB_STATS +typedef struct { + uint8_t *mb_stats_start; + uint8_t *mb_stats_end; +} FIRSTPASS_MB_STATS; +#endif + 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; @@ -38,10 +47,27 @@ typedef struct { int64_t spatial_layer_id; } FIRSTPASS_STATS; -struct twopass_rc { +typedef enum { + KF_UPDATE = 0, + LF_UPDATE = 1, + GF_UPDATE = 2, + ARF_UPDATE = 3, + OVERLAY_UPDATE = 4, + FRAME_UPDATE_TYPES = 5 +} FRAME_UPDATE_TYPE; + +typedef struct { + unsigned char index; + RATE_FACTOR_LEVEL rf_level[(MAX_LAG_BUFFERS * 2) + 1]; + FRAME_UPDATE_TYPE update_type[(MAX_LAG_BUFFERS * 2) + 1]; + unsigned char arf_src_offset[(MAX_LAG_BUFFERS * 2) + 1]; + unsigned char arf_update_idx[(MAX_LAG_BUFFERS * 2) + 1]; + unsigned char arf_ref_idx[(MAX_LAG_BUFFERS * 2) + 1]; + int bit_allocation[(MAX_LAG_BUFFERS * 2) + 1]; +} GF_GROUP; + +typedef struct { unsigned int section_intra_rating; - unsigned int next_iiratio; - unsigned int this_iiratio; FIRSTPASS_STATS total_stats; FIRSTPASS_STATS this_frame_stats; const FIRSTPASS_STATS *stats_in; @@ -50,37 +76,32 @@ struct twopass_rc { 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 kf_bits; - // Remaining error from uncoded frames in a gf group. Two pass use only - int64_t gf_group_error_left; + +#if CONFIG_FP_MB_STATS + uint8_t *frame_mb_stats_buf; + uint8_t *this_frame_mb_stats; + FIRSTPASS_MB_STATS firstpass_mb_stats; +#endif // 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; int active_worst_quality; -}; + + GF_GROUP gf_group; +} TWO_PASS; struct VP9_COMP;