Code simplification
Removal of the pickinter.c and .h files and calls to this code. Removal of some code relating to real time and one pass settings though there is more to be done in this regard. However, vp8_set_speed_features() now only supports modes 0 and 1 and speeds up to 3 so rd should always be set. Change-Id: I62c0c1b6154ab499785baef310536080e87bc4d8
This commit is contained in:
Родитель
8b71f3e059
Коммит
79d330d7d5
|
@ -186,17 +186,19 @@ void vp8_setup_version(VP8_COMMON *cm)
|
|||
cm->full_pixel = 0;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
cm->no_lpf = 1;
|
||||
cm->filter_type = NORMAL_LOOPFILTER;
|
||||
cm->use_bilinear_mc_filter = 1;
|
||||
cm->full_pixel = 0;
|
||||
break;
|
||||
case 3:
|
||||
cm->no_lpf = 1;
|
||||
cm->filter_type = SIMPLE_LOOPFILTER;
|
||||
cm->use_bilinear_mc_filter = 1;
|
||||
cm->full_pixel = 1;
|
||||
break;
|
||||
// Full pel only code deprecated in experimental code base
|
||||
//case 3:
|
||||
// cm->no_lpf = 1;
|
||||
// cm->filter_type = SIMPLE_LOOPFILTER;
|
||||
// cm->use_bilinear_mc_filter = 1;
|
||||
// cm->full_pixel = 1;
|
||||
// break;
|
||||
}
|
||||
}
|
||||
void vp8_create_common(VP8_COMMON *oci)
|
||||
|
|
|
@ -56,8 +56,6 @@ void vp8_arch_arm_encoder_init(VP8_COMP *cpi)
|
|||
cpi->rtcd.variance.mse16x16 = vp8_mse16x16_armv6;
|
||||
/*cpi->rtcd.variance.getmbss = vp8_get_mb_ss_c;*/
|
||||
|
||||
/*cpi->rtcd.variance.get4x4sse_cs = vp8_get4x4sse_cs_c;*/
|
||||
|
||||
cpi->rtcd.fdct.short4x4 = vp8_short_fdct4x4_armv6;
|
||||
cpi->rtcd.fdct.short8x4 = vp8_short_fdct8x4_armv6;
|
||||
cpi->rtcd.fdct.fast4x4 = vp8_short_fdct4x4_armv6;
|
||||
|
@ -103,8 +101,6 @@ void vp8_arch_arm_encoder_init(VP8_COMP *cpi)
|
|||
cpi->rtcd.variance.mse16x16 = vp8_mse16x16_neon;
|
||||
/*cpi->rtcd.variance.getmbss = vp8_get_mb_ss_c;*/
|
||||
|
||||
cpi->rtcd.variance.get4x4sse_cs = vp8_get4x4sse_cs_neon;
|
||||
|
||||
cpi->rtcd.fdct.short4x4 = vp8_short_fdct4x4_neon;
|
||||
cpi->rtcd.fdct.short8x4 = vp8_short_fdct8x4_neon;
|
||||
cpi->rtcd.fdct.fast4x4 = vp8_short_fdct4x4_neon;
|
||||
|
|
|
@ -83,7 +83,6 @@ extern prototype_variance(vp8_variance_halfpixvar16x16_hv_neon);
|
|||
|
||||
//extern prototype_getmbss(vp8_get_mb_ss_c);
|
||||
extern prototype_variance(vp8_mse16x16_neon);
|
||||
extern prototype_get16x16prederror(vp8_get4x4sse_cs_neon);
|
||||
|
||||
#if !CONFIG_RUNTIME_CPU_DETECT
|
||||
#undef vp8_variance_sad4x4
|
||||
|
@ -146,8 +145,6 @@ extern prototype_get16x16prederror(vp8_get4x4sse_cs_neon);
|
|||
#undef vp8_variance_mse16x16
|
||||
#define vp8_variance_mse16x16 vp8_mse16x16_neon
|
||||
|
||||
#undef vp8_variance_get4x4sse_cs
|
||||
#define vp8_variance_get4x4sse_cs vp8_get4x4sse_cs_neon
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
#include "encodeintra.h"
|
||||
#include "vp8/common/reconinter.h"
|
||||
#include "rdopt.h"
|
||||
#include "pickinter.h"
|
||||
#include "vp8/common/findnearmv.h"
|
||||
#include "vp8/common/reconintra.h"
|
||||
#include "vp8/common/seg_common.h"
|
||||
|
@ -1161,14 +1160,6 @@ static void encode_frame_internal(VP8_COMP *cpi)
|
|||
|
||||
totalrate = 0;
|
||||
|
||||
if (cpi->compressor_speed == 2)
|
||||
{
|
||||
if (cpi->oxcf.cpu_used < 0)
|
||||
cpi->Speed = -(cpi->oxcf.cpu_used);
|
||||
else
|
||||
vp8_auto_select_speed(cpi);
|
||||
}
|
||||
|
||||
// Functions setup for all frame types so we can use MC in AltRef
|
||||
if (cm->mcomp_filter_type == SIXTAP)
|
||||
{
|
||||
|
@ -1579,10 +1570,11 @@ int vp8cx_encode_intra_macro_block(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t)
|
|||
{
|
||||
int rate;
|
||||
|
||||
if (cpi->sf.RD && cpi->compressor_speed != 2)
|
||||
vp8_rd_pick_intra_mode(cpi, x, &rate);
|
||||
else
|
||||
vp8_pick_intra_mode(cpi, x, &rate);
|
||||
// Non rd path deprecated in test code base
|
||||
//if (cpi->sf.RD && cpi->compressor_speed != 2)
|
||||
vp8_rd_pick_intra_mode(cpi, x, &rate);
|
||||
//else
|
||||
// vp8_pick_intra_mode(cpi, x, &rate);
|
||||
|
||||
if(cpi->oxcf.tuning == VP8_TUNE_SSIM)
|
||||
{
|
||||
|
@ -1651,7 +1643,8 @@ int vp8cx_encode_inter_macroblock
|
|||
else
|
||||
x->encode_breakout = cpi->oxcf.encode_breakout;
|
||||
|
||||
if (cpi->sf.RD)
|
||||
//if (cpi->sf.RD)
|
||||
// For now this codebase is limited to a single rd encode path
|
||||
{
|
||||
int zbin_mode_boost_enabled = cpi->zbin_mode_boost_enabled;
|
||||
int single, dual, hybrid;
|
||||
|
@ -1715,9 +1708,10 @@ int vp8cx_encode_inter_macroblock
|
|||
cpi->zbin_mode_boost_enabled = zbin_mode_boost_enabled;
|
||||
|
||||
}
|
||||
else
|
||||
vp8_pick_inter_mode(cpi, x, recon_yoffset, recon_uvoffset, &rate,
|
||||
&distortion, &intra_error);
|
||||
//else
|
||||
// The non rd encode path has been deleted from this code base
|
||||
// to simplify development
|
||||
// vp8_pick_inter_mode
|
||||
|
||||
cpi->prediction_error += distortion;
|
||||
cpi->intra_error += intra_error;
|
||||
|
|
|
@ -1002,7 +1002,7 @@ static int estimate_max_q(VP8_COMP *cpi,
|
|||
|
||||
// Corrections for higher compression speed settings
|
||||
// (reduced compression expected)
|
||||
if ((cpi->compressor_speed == 3) || (cpi->compressor_speed == 1))
|
||||
if (cpi->compressor_speed == 1)
|
||||
{
|
||||
if (cpi->oxcf.cpu_used <= 5)
|
||||
speed_correction = 1.04 + (cpi->oxcf.cpu_used * 0.04);
|
||||
|
@ -1105,7 +1105,7 @@ static int estimate_cq( VP8_COMP *cpi,
|
|||
|
||||
// Corrections for higher compression speed settings
|
||||
// (reduced compression expected)
|
||||
if ((cpi->compressor_speed == 3) || (cpi->compressor_speed == 1))
|
||||
if (cpi->compressor_speed == 1)
|
||||
{
|
||||
if (cpi->oxcf.cpu_used <= 5)
|
||||
speed_correction = 1.04 + (cpi->oxcf.cpu_used * 0.04);
|
||||
|
@ -1173,7 +1173,7 @@ static int estimate_q(VP8_COMP *cpi, double section_err, int section_target_band
|
|||
target_norm_bits_per_mb = (section_target_bandwitdh < (1 << 20)) ? (512 * section_target_bandwitdh) / num_mbs : 512 * (section_target_bandwitdh / num_mbs);
|
||||
|
||||
// Corrections for higher compression speed settings (reduced compression expected)
|
||||
if ((cpi->compressor_speed == 3) || (cpi->compressor_speed == 1))
|
||||
if (cpi->compressor_speed == 1)
|
||||
{
|
||||
if (cpi->oxcf.cpu_used <= 5)
|
||||
speed_correction = 1.04 + (cpi->oxcf.cpu_used * 0.04);
|
||||
|
@ -1246,7 +1246,7 @@ static int estimate_kf_group_q(VP8_COMP *cpi, double section_err, int section_ta
|
|||
iiratio_correction_factor = 0.5;
|
||||
|
||||
// Corrections for higher compression speed settings (reduced compression expected)
|
||||
if ((cpi->compressor_speed == 3) || (cpi->compressor_speed == 1))
|
||||
if (cpi->compressor_speed == 1)
|
||||
{
|
||||
if (cpi->oxcf.cpu_used <= 5)
|
||||
speed_correction = 1.04 + (cpi->oxcf.cpu_used * 0.04);
|
||||
|
|
|
@ -69,8 +69,6 @@ void vp8_cmachine_specific_config(VP8_COMP *cpi)
|
|||
cpi->rtcd.variance.mse16x16 = vp8_mse16x16_c;
|
||||
cpi->rtcd.variance.getmbss = vp8_get_mb_ss_c;
|
||||
|
||||
cpi->rtcd.variance.get4x4sse_cs = vp8_get4x4sse_cs_c;
|
||||
|
||||
#if CONFIG_T8X8
|
||||
cpi->rtcd.fdct.short8x8 = vp8_short_fdct8x8_c;
|
||||
cpi->rtcd.fdct.haar_short2x2 = vp8_short_fhaar2x2_c;
|
||||
|
|
|
@ -792,6 +792,10 @@ void vp8_set_speed_features(VP8_COMP *cpi)
|
|||
VP8_COMMON *cm = &cpi->common;
|
||||
int last_improved_quant = sf->improved_quant;
|
||||
|
||||
// Only modes 0 and 1 supported for now in experimental code basae
|
||||
if ( Mode > 1 )
|
||||
Mode = 1;
|
||||
|
||||
// Initialise default mode frequency sampling variables
|
||||
for (i = 0; i < MAX_MODES; i ++)
|
||||
{
|
||||
|
@ -871,7 +875,6 @@ void vp8_set_speed_features(VP8_COMP *cpi)
|
|||
sf->max_step_search_steps = MAX_MVSEARCH_STEPS;
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
sf->thresh_mult[THR_NEARESTMV] = 0;
|
||||
sf->thresh_mult[THR_ZEROMV ] = 0;
|
||||
sf->thresh_mult[THR_DC ] = 0;
|
||||
|
@ -890,7 +893,6 @@ void vp8_set_speed_features(VP8_COMP *cpi)
|
|||
sf->thresh_mult[THR_NEARG ] = 1000;
|
||||
sf->thresh_mult[THR_NEARA ] = 1000;
|
||||
|
||||
#if 1
|
||||
sf->thresh_mult[THR_ZEROMV ] = 0;
|
||||
sf->thresh_mult[THR_ZEROG ] = 0;
|
||||
sf->thresh_mult[THR_ZEROA ] = 0;
|
||||
|
@ -901,13 +903,6 @@ void vp8_set_speed_features(VP8_COMP *cpi)
|
|||
sf->thresh_mult[THR_NEARG ] = 0;
|
||||
sf->thresh_mult[THR_NEARA ] = 0;
|
||||
|
||||
// sf->thresh_mult[THR_DC ] = 0;
|
||||
|
||||
// sf->thresh_mult[THR_V_PRED ] = 1000;
|
||||
// sf->thresh_mult[THR_H_PRED ] = 1000;
|
||||
// sf->thresh_mult[THR_B_PRED ] = 2000;
|
||||
// sf->thresh_mult[THR_TM ] = 1000;
|
||||
|
||||
sf->thresh_mult[THR_NEWMV ] = 1000;
|
||||
sf->thresh_mult[THR_NEWG ] = 1000;
|
||||
sf->thresh_mult[THR_NEWA ] = 1000;
|
||||
|
@ -929,15 +924,6 @@ void vp8_set_speed_features(VP8_COMP *cpi)
|
|||
sf->thresh_mult[THR_DUAL_NEWLG ] = 1000;
|
||||
sf->thresh_mult[THR_DUAL_NEWLA ] = 1000;
|
||||
sf->thresh_mult[THR_DUAL_NEWGA ] = 1000;
|
||||
#else
|
||||
sf->thresh_mult[THR_NEWMV ] = 1500;
|
||||
sf->thresh_mult[THR_NEWG ] = 1500;
|
||||
sf->thresh_mult[THR_NEWA ] = 1500;
|
||||
|
||||
sf->thresh_mult[THR_SPLITMV ] = 5000;
|
||||
sf->thresh_mult[THR_SPLITG ] = 10000;
|
||||
sf->thresh_mult[THR_SPLITA ] = 10000;
|
||||
#endif
|
||||
|
||||
if (Speed > 0)
|
||||
{
|
||||
|
@ -1063,453 +1049,7 @@ void vp8_set_speed_features(VP8_COMP *cpi)
|
|||
|
||||
}
|
||||
|
||||
if (Speed > 3)
|
||||
{
|
||||
sf->thresh_mult[THR_SPLITA ] = INT_MAX;
|
||||
sf->thresh_mult[THR_SPLITG ] = INT_MAX;
|
||||
sf->thresh_mult[THR_SPLITMV ] = INT_MAX;
|
||||
|
||||
cpi->mode_check_freq[THR_V_PRED] = 0;
|
||||
cpi->mode_check_freq[THR_H_PRED] = 0;
|
||||
cpi->mode_check_freq[THR_B_PRED] = 0;
|
||||
cpi->mode_check_freq[THR_I8X8_PRED] = 0;
|
||||
cpi->mode_check_freq[THR_NEARG] = 0;
|
||||
cpi->mode_check_freq[THR_NEWG] = 0;
|
||||
cpi->mode_check_freq[THR_NEARA] = 0;
|
||||
cpi->mode_check_freq[THR_NEWA] = 0;
|
||||
|
||||
sf->auto_filter = 1;
|
||||
sf->recode_loop = 0; // recode loop off
|
||||
sf->RD = 0; // Turn rd off
|
||||
|
||||
}
|
||||
|
||||
if (Speed > 4)
|
||||
{
|
||||
sf->auto_filter = 0; // Faster selection of loop filter
|
||||
|
||||
cpi->mode_check_freq[THR_V_PRED] = 2;
|
||||
cpi->mode_check_freq[THR_H_PRED] = 2;
|
||||
cpi->mode_check_freq[THR_B_PRED] = 2;
|
||||
cpi->mode_check_freq[THR_I8X8_PRED]=2;
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_GOLD_FLAG)
|
||||
{
|
||||
cpi->mode_check_freq[THR_NEARG] = 2;
|
||||
cpi->mode_check_freq[THR_NEWG] = 4;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_ALT_FLAG)
|
||||
{
|
||||
cpi->mode_check_freq[THR_NEARA] = 2;
|
||||
cpi->mode_check_freq[THR_NEWA] = 4;
|
||||
}
|
||||
|
||||
cpi->mode_check_freq[THR_DUAL_NEARLG ] = 2;
|
||||
cpi->mode_check_freq[THR_DUAL_NEARLA ] = 2;
|
||||
cpi->mode_check_freq[THR_DUAL_NEARGA ] = 2;
|
||||
cpi->mode_check_freq[THR_DUAL_NEWLG ] = 4;
|
||||
cpi->mode_check_freq[THR_DUAL_NEWLA ] = 4;
|
||||
cpi->mode_check_freq[THR_DUAL_NEWGA ] = 4;
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_GOLD_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEARESTG ] = 2000;
|
||||
sf->thresh_mult[THR_ZEROG ] = 2000;
|
||||
sf->thresh_mult[THR_NEARG ] = 2000;
|
||||
sf->thresh_mult[THR_NEWG ] = 4000;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_ALT_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEARESTA ] = 2000;
|
||||
sf->thresh_mult[THR_ZEROA ] = 2000;
|
||||
sf->thresh_mult[THR_NEARA ] = 2000;
|
||||
sf->thresh_mult[THR_NEWA ] = 4000;
|
||||
}
|
||||
|
||||
sf->thresh_mult[THR_DUAL_NEWLG ] = 4000;
|
||||
sf->thresh_mult[THR_DUAL_NEWLA ] = 4000;
|
||||
sf->thresh_mult[THR_DUAL_NEWGA ] = 4000;
|
||||
}
|
||||
|
||||
break;
|
||||
case 2:
|
||||
sf->optimize_coefficients = 0;
|
||||
sf->recode_loop = 0;
|
||||
sf->auto_filter = 1;
|
||||
sf->iterative_sub_pixel = 1;
|
||||
sf->thresh_mult[THR_NEARESTMV] = 0;
|
||||
sf->thresh_mult[THR_ZEROMV ] = 0;
|
||||
sf->thresh_mult[THR_DC ] = 0;
|
||||
sf->thresh_mult[THR_TM ] = 0;
|
||||
sf->thresh_mult[THR_NEARMV ] = 0;
|
||||
sf->thresh_mult[THR_V_PRED ] = 1000;
|
||||
sf->thresh_mult[THR_H_PRED ] = 1000;
|
||||
sf->thresh_mult[THR_B_PRED ] = 2500;
|
||||
sf->thresh_mult[THR_I8X8_PRED] = 2500;
|
||||
sf->thresh_mult[THR_NEARESTG ] = 1000;
|
||||
sf->thresh_mult[THR_ZEROG ] = 1000;
|
||||
sf->thresh_mult[THR_NEARG ] = 1000;
|
||||
sf->thresh_mult[THR_NEARESTA ] = 1000;
|
||||
sf->thresh_mult[THR_ZEROA ] = 1000;
|
||||
sf->thresh_mult[THR_NEARA ] = 1000;
|
||||
sf->thresh_mult[THR_NEWMV ] = 2000;
|
||||
sf->thresh_mult[THR_NEWG ] = 2000;
|
||||
sf->thresh_mult[THR_NEWA ] = 2000;
|
||||
sf->thresh_mult[THR_SPLITMV ] = 5000;
|
||||
sf->thresh_mult[THR_SPLITG ] = 10000;
|
||||
sf->thresh_mult[THR_SPLITA ] = 10000;
|
||||
sf->search_method = NSTEP;
|
||||
|
||||
sf->thresh_mult[THR_DUAL_ZEROLG ] = 1000;
|
||||
sf->thresh_mult[THR_DUAL_NEARESTLG] = 1000;
|
||||
sf->thresh_mult[THR_DUAL_NEARLG ] = 1000;
|
||||
sf->thresh_mult[THR_DUAL_ZEROLA ] = 1000;
|
||||
sf->thresh_mult[THR_DUAL_NEARESTLA] = 1000;
|
||||
sf->thresh_mult[THR_DUAL_NEARLA ] = 1000;
|
||||
sf->thresh_mult[THR_DUAL_ZEROGA ] = 1000;
|
||||
sf->thresh_mult[THR_DUAL_NEARESTGA] = 1000;
|
||||
sf->thresh_mult[THR_DUAL_NEARGA ] = 1000;
|
||||
|
||||
sf->thresh_mult[THR_DUAL_NEWLG ] = 2000;
|
||||
sf->thresh_mult[THR_DUAL_NEWLA ] = 2000;
|
||||
sf->thresh_mult[THR_DUAL_NEWGA ] = 2000;
|
||||
|
||||
if (Speed > 0)
|
||||
{
|
||||
cpi->mode_check_freq[THR_SPLITG] = 4;
|
||||
cpi->mode_check_freq[THR_SPLITA] = 4;
|
||||
cpi->mode_check_freq[THR_SPLITMV] = 2;
|
||||
|
||||
sf->thresh_mult[THR_DC ] = 0;
|
||||
sf->thresh_mult[THR_TM ] = 1000;
|
||||
sf->thresh_mult[THR_V_PRED ] = 2000;
|
||||
sf->thresh_mult[THR_H_PRED ] = 2000;
|
||||
sf->thresh_mult[THR_B_PRED ] = 5000;
|
||||
sf->thresh_mult[THR_I8X8_PRED] = 5000;
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_LAST_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEARESTMV] = 0;
|
||||
sf->thresh_mult[THR_ZEROMV ] = 0;
|
||||
sf->thresh_mult[THR_NEARMV ] = 0;
|
||||
sf->thresh_mult[THR_NEWMV ] = 2000;
|
||||
sf->thresh_mult[THR_SPLITMV ] = 10000;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_GOLD_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEARESTG ] = 1000;
|
||||
sf->thresh_mult[THR_ZEROG ] = 1000;
|
||||
sf->thresh_mult[THR_NEARG ] = 1000;
|
||||
sf->thresh_mult[THR_NEWG ] = 2000;
|
||||
sf->thresh_mult[THR_SPLITG ] = 20000;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_ALT_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEARESTA ] = 1000;
|
||||
sf->thresh_mult[THR_ZEROA ] = 1000;
|
||||
sf->thresh_mult[THR_NEARA ] = 1000;
|
||||
sf->thresh_mult[THR_NEWA ] = 2000;
|
||||
sf->thresh_mult[THR_SPLITA ] = 20000;
|
||||
}
|
||||
|
||||
sf->improved_quant = 0;
|
||||
sf->improved_dct = 0;
|
||||
|
||||
sf->use_fastquant_for_pick = 1;
|
||||
sf->no_skip_block4x4_search = 0;
|
||||
sf->first_step = 1;
|
||||
}
|
||||
|
||||
if (Speed > 1)
|
||||
{
|
||||
cpi->mode_check_freq[THR_SPLITMV] = 7;
|
||||
cpi->mode_check_freq[THR_SPLITG] = 15;
|
||||
cpi->mode_check_freq[THR_SPLITA] = 15;
|
||||
|
||||
sf->thresh_mult[THR_TM ] = 2000;
|
||||
sf->thresh_mult[THR_V_PRED ] = 2000;
|
||||
sf->thresh_mult[THR_H_PRED ] = 2000;
|
||||
sf->thresh_mult[THR_B_PRED ] = 5000;
|
||||
sf->thresh_mult[THR_I8X8_PRED] = 5000;
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_LAST_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEWMV ] = 2000;
|
||||
sf->thresh_mult[THR_SPLITMV ] = 25000;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_GOLD_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEARESTG ] = 2000;
|
||||
sf->thresh_mult[THR_ZEROG ] = 2000;
|
||||
sf->thresh_mult[THR_NEARG ] = 2000;
|
||||
sf->thresh_mult[THR_NEWG ] = 2500;
|
||||
sf->thresh_mult[THR_SPLITG ] = 50000;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_ALT_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEARESTA ] = 2000;
|
||||
sf->thresh_mult[THR_ZEROA ] = 2000;
|
||||
sf->thresh_mult[THR_NEARA ] = 2000;
|
||||
sf->thresh_mult[THR_NEWA ] = 2500;
|
||||
sf->thresh_mult[THR_SPLITA ] = 50000;
|
||||
}
|
||||
|
||||
sf->thresh_mult[THR_DUAL_ZEROLG ] = 2000;
|
||||
sf->thresh_mult[THR_DUAL_NEARESTLG] = 2000;
|
||||
sf->thresh_mult[THR_DUAL_NEARLG ] = 2000;
|
||||
sf->thresh_mult[THR_DUAL_ZEROLA ] = 2000;
|
||||
sf->thresh_mult[THR_DUAL_NEARESTLA] = 2000;
|
||||
sf->thresh_mult[THR_DUAL_NEARLA ] = 2000;
|
||||
sf->thresh_mult[THR_DUAL_ZEROGA ] = 2000;
|
||||
sf->thresh_mult[THR_DUAL_NEARESTGA] = 2000;
|
||||
sf->thresh_mult[THR_DUAL_NEARGA ] = 2000;
|
||||
|
||||
sf->thresh_mult[THR_DUAL_NEWLG ] = 2500;
|
||||
sf->thresh_mult[THR_DUAL_NEWLA ] = 2500;
|
||||
sf->thresh_mult[THR_DUAL_NEWGA ] = 2500;
|
||||
}
|
||||
|
||||
if (Speed > 2)
|
||||
{
|
||||
sf->auto_filter = 0; // Faster selection of loop filter
|
||||
|
||||
cpi->mode_check_freq[THR_V_PRED] = 2;
|
||||
cpi->mode_check_freq[THR_H_PRED] = 2;
|
||||
cpi->mode_check_freq[THR_B_PRED] = 2;
|
||||
cpi->mode_check_freq[THR_I8X8_PRED]=2;
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_GOLD_FLAG)
|
||||
{
|
||||
cpi->mode_check_freq[THR_NEARG] = 2;
|
||||
cpi->mode_check_freq[THR_NEWG] = 4;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_ALT_FLAG)
|
||||
{
|
||||
cpi->mode_check_freq[THR_NEARA] = 2;
|
||||
cpi->mode_check_freq[THR_NEWA] = 4;
|
||||
}
|
||||
|
||||
cpi->mode_check_freq[THR_DUAL_NEARLG ] = 2;
|
||||
cpi->mode_check_freq[THR_DUAL_NEARLA ] = 2;
|
||||
cpi->mode_check_freq[THR_DUAL_NEARGA ] = 2;
|
||||
cpi->mode_check_freq[THR_DUAL_NEWLG ] = 4;
|
||||
cpi->mode_check_freq[THR_DUAL_NEWLA ] = 4;
|
||||
cpi->mode_check_freq[THR_DUAL_NEWGA ] = 4;
|
||||
|
||||
sf->thresh_mult[THR_SPLITMV ] = INT_MAX;
|
||||
sf->thresh_mult[THR_SPLITG ] = INT_MAX;
|
||||
sf->thresh_mult[THR_SPLITA ] = INT_MAX;
|
||||
|
||||
}
|
||||
|
||||
if (Speed > 3)
|
||||
{
|
||||
sf->RD = 0;
|
||||
|
||||
sf->auto_filter = 1;
|
||||
}
|
||||
|
||||
if (Speed > 4)
|
||||
{
|
||||
sf->auto_filter = 0; // Faster selection of loop filter
|
||||
|
||||
sf->search_method = HEX;
|
||||
//sf->search_method = DIAMOND;
|
||||
|
||||
sf->iterative_sub_pixel = 0;
|
||||
|
||||
cpi->mode_check_freq[THR_V_PRED] = 4;
|
||||
cpi->mode_check_freq[THR_H_PRED] = 4;
|
||||
cpi->mode_check_freq[THR_B_PRED] = 4;
|
||||
cpi->mode_check_freq[THR_I8X8_PRED]=4;
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_GOLD_FLAG)
|
||||
{
|
||||
cpi->mode_check_freq[THR_NEARG] = 2;
|
||||
cpi->mode_check_freq[THR_NEWG] = 4;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_ALT_FLAG)
|
||||
{
|
||||
cpi->mode_check_freq[THR_NEARA] = 2;
|
||||
cpi->mode_check_freq[THR_NEWA] = 4;
|
||||
}
|
||||
|
||||
sf->thresh_mult[THR_TM ] = 2000;
|
||||
sf->thresh_mult[THR_B_PRED ] = 5000;
|
||||
sf->thresh_mult[THR_I8X8_PRED] = 5000;
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_GOLD_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEARESTG ] = 2000;
|
||||
sf->thresh_mult[THR_ZEROG ] = 2000;
|
||||
sf->thresh_mult[THR_NEARG ] = 2000;
|
||||
sf->thresh_mult[THR_NEWG ] = 4000;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_ALT_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEARESTA ] = 2000;
|
||||
sf->thresh_mult[THR_ZEROA ] = 2000;
|
||||
sf->thresh_mult[THR_NEARA ] = 2000;
|
||||
sf->thresh_mult[THR_NEWA ] = 4000;
|
||||
}
|
||||
|
||||
sf->thresh_mult[THR_DUAL_NEWLG ] = 4000;
|
||||
sf->thresh_mult[THR_DUAL_NEWLA ] = 4000;
|
||||
sf->thresh_mult[THR_DUAL_NEWGA ] = 4000;
|
||||
}
|
||||
|
||||
if (Speed > 5)
|
||||
{
|
||||
// Disable split MB intra prediction mode
|
||||
sf->thresh_mult[THR_B_PRED] = INT_MAX;
|
||||
sf->thresh_mult[THR_I8X8_PRED] = INT_MAX;
|
||||
}
|
||||
|
||||
if (Speed > 6)
|
||||
{
|
||||
unsigned int i, sum = 0;
|
||||
unsigned int total_mbs = cm->MBs;
|
||||
int thresh;
|
||||
int total_skip;
|
||||
|
||||
int min = 2000;
|
||||
|
||||
if (cpi->oxcf.encode_breakout > 2000)
|
||||
min = cpi->oxcf.encode_breakout;
|
||||
|
||||
min >>= 7;
|
||||
|
||||
for (i = 0; i < min; i++)
|
||||
{
|
||||
sum += cpi->error_bins[i];
|
||||
}
|
||||
|
||||
total_skip = sum;
|
||||
sum = 0;
|
||||
|
||||
// i starts from 2 to make sure thresh started from 2048
|
||||
for (; i < 1024; i++)
|
||||
{
|
||||
sum += cpi->error_bins[i];
|
||||
|
||||
if (10 * sum >= (unsigned int)(cpi->Speed - 6)*(total_mbs - total_skip))
|
||||
break;
|
||||
}
|
||||
|
||||
i--;
|
||||
thresh = (i << 7);
|
||||
|
||||
if (thresh < 2000)
|
||||
thresh = 2000;
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_LAST_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEWMV] = thresh;
|
||||
sf->thresh_mult[THR_NEARESTMV ] = thresh >> 1;
|
||||
sf->thresh_mult[THR_NEARMV ] = thresh >> 1;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_GOLD_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEWG] = thresh << 1;
|
||||
sf->thresh_mult[THR_NEARESTG ] = thresh;
|
||||
sf->thresh_mult[THR_NEARG ] = thresh;
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_ALT_FLAG)
|
||||
{
|
||||
sf->thresh_mult[THR_NEWA] = thresh << 1;
|
||||
sf->thresh_mult[THR_NEARESTA ] = thresh;
|
||||
sf->thresh_mult[THR_NEARA ] = thresh;
|
||||
}
|
||||
|
||||
sf->thresh_mult[THR_DUAL_ZEROLG ] = thresh;
|
||||
sf->thresh_mult[THR_DUAL_NEARESTLG] = thresh;
|
||||
sf->thresh_mult[THR_DUAL_NEARLG ] = thresh;
|
||||
sf->thresh_mult[THR_DUAL_ZEROLA ] = thresh;
|
||||
sf->thresh_mult[THR_DUAL_NEARESTLA] = thresh;
|
||||
sf->thresh_mult[THR_DUAL_NEARLA ] = thresh;
|
||||
sf->thresh_mult[THR_DUAL_ZEROGA ] = thresh;
|
||||
sf->thresh_mult[THR_DUAL_NEARESTGA] = thresh;
|
||||
sf->thresh_mult[THR_DUAL_NEARGA ] = thresh;
|
||||
|
||||
sf->thresh_mult[THR_DUAL_NEWLG ] = thresh << 1;
|
||||
sf->thresh_mult[THR_DUAL_NEWLA ] = thresh << 1;
|
||||
sf->thresh_mult[THR_DUAL_NEWGA ] = thresh << 1;
|
||||
|
||||
// Disable other intra prediction modes
|
||||
sf->thresh_mult[THR_TM] = INT_MAX;
|
||||
sf->thresh_mult[THR_V_PRED] = INT_MAX;
|
||||
sf->thresh_mult[THR_H_PRED] = INT_MAX;
|
||||
|
||||
sf->improved_mv_pred = 0;
|
||||
}
|
||||
|
||||
if (Speed > 8)
|
||||
{
|
||||
sf->quarter_pixel_search = 0;
|
||||
}
|
||||
|
||||
if (Speed > 9)
|
||||
{
|
||||
int Tmp = cpi->Speed - 8;
|
||||
|
||||
if (Tmp > 4)
|
||||
Tmp = 4;
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_GOLD_FLAG)
|
||||
{
|
||||
cpi->mode_check_freq[THR_ZEROG] = 1 << (Tmp - 1);
|
||||
cpi->mode_check_freq[THR_NEARESTG] = 1 << (Tmp - 1);
|
||||
cpi->mode_check_freq[THR_NEARG] = 1 << Tmp;
|
||||
cpi->mode_check_freq[THR_NEWG] = 1 << (Tmp + 1);
|
||||
}
|
||||
|
||||
if (cpi->ref_frame_flags & VP8_ALT_FLAG)
|
||||
{
|
||||
cpi->mode_check_freq[THR_ZEROA] = 1 << (Tmp - 1);
|
||||
cpi->mode_check_freq[THR_NEARESTA] = 1 << (Tmp - 1);
|
||||
cpi->mode_check_freq[THR_NEARA] = 1 << Tmp;
|
||||
cpi->mode_check_freq[THR_NEWA] = 1 << (Tmp + 1);
|
||||
}
|
||||
|
||||
cpi->mode_check_freq[THR_DUAL_ZEROLG ] = 1 << (Tmp - 1);
|
||||
cpi->mode_check_freq[THR_DUAL_NEARESTLG] = 1 << (Tmp - 1);
|
||||
cpi->mode_check_freq[THR_DUAL_NEARLG ] = 1 << Tmp;
|
||||
cpi->mode_check_freq[THR_DUAL_ZEROLA ] = 1 << (Tmp - 1);
|
||||
cpi->mode_check_freq[THR_DUAL_NEARESTLA] = 1 << (Tmp - 1);
|
||||
cpi->mode_check_freq[THR_DUAL_NEARLA ] = 1 << Tmp;
|
||||
cpi->mode_check_freq[THR_DUAL_ZEROGA ] = 1 << (Tmp - 1);
|
||||
cpi->mode_check_freq[THR_DUAL_NEARESTGA] = 1 << (Tmp - 1);
|
||||
cpi->mode_check_freq[THR_DUAL_NEARGA ] = 1 << Tmp;
|
||||
|
||||
cpi->mode_check_freq[THR_DUAL_NEWLG ] = 1 << (Tmp + 1);
|
||||
cpi->mode_check_freq[THR_DUAL_NEWLA ] = 1 << (Tmp + 1);
|
||||
cpi->mode_check_freq[THR_DUAL_NEWGA ] = 1 << (Tmp + 1);
|
||||
|
||||
cpi->mode_check_freq[THR_NEWMV] = 1 << (Tmp - 1);
|
||||
}
|
||||
|
||||
cm->filter_type = NORMAL_LOOPFILTER;
|
||||
|
||||
if (Speed >= 14)
|
||||
cm->filter_type = SIMPLE_LOOPFILTER;
|
||||
|
||||
if (Speed >= 15)
|
||||
{
|
||||
sf->half_pixel_search = 0; // This has a big hit on quality. Last resort
|
||||
}
|
||||
|
||||
vpx_memset(cpi->error_bins, 0, sizeof(cpi->error_bins));
|
||||
|
||||
}; /* switch */
|
||||
|
||||
|
@ -1646,19 +1186,12 @@ void vp8_set_speed_features(VP8_COMP *cpi)
|
|||
{
|
||||
cpi->find_fractional_mv_step = vp8_find_best_half_pixel_step;
|
||||
}
|
||||
else
|
||||
{
|
||||
cpi->find_fractional_mv_step = vp8_skip_fractional_mv_step;
|
||||
}
|
||||
|
||||
if (cpi->sf.optimize_coefficients == 1 && cpi->pass!=1)
|
||||
cpi->mb.optimize = 1;
|
||||
else
|
||||
cpi->mb.optimize = 0;
|
||||
|
||||
if (cpi->common.full_pixel)
|
||||
cpi->find_fractional_mv_step = vp8_skip_fractional_mv_step;
|
||||
|
||||
#ifdef SPEEDSTATS
|
||||
frames_at_speed[cpi->Speed]++;
|
||||
#endif
|
||||
|
@ -1930,44 +1463,12 @@ void vp8_change_config(VP8_PTR ptr, VP8_CONFIG *oxcf)
|
|||
|
||||
switch (cpi->oxcf.Mode)
|
||||
{
|
||||
|
||||
case MODE_REALTIME:
|
||||
cpi->pass = 0;
|
||||
cpi->compressor_speed = 2;
|
||||
|
||||
if (cpi->oxcf.cpu_used < -16)
|
||||
{
|
||||
cpi->oxcf.cpu_used = -16;
|
||||
}
|
||||
|
||||
if (cpi->oxcf.cpu_used > 16)
|
||||
cpi->oxcf.cpu_used = 16;
|
||||
|
||||
break;
|
||||
|
||||
case MODE_GOODQUALITY:
|
||||
cpi->pass = 0;
|
||||
cpi->compressor_speed = 1;
|
||||
|
||||
if (cpi->oxcf.cpu_used < -5)
|
||||
{
|
||||
cpi->oxcf.cpu_used = -5;
|
||||
}
|
||||
|
||||
if (cpi->oxcf.cpu_used > 5)
|
||||
cpi->oxcf.cpu_used = 5;
|
||||
|
||||
break;
|
||||
|
||||
case MODE_BESTQUALITY:
|
||||
cpi->pass = 0;
|
||||
cpi->compressor_speed = 0;
|
||||
break;
|
||||
|
||||
// Real time and one pass deprecated in test code base
|
||||
case MODE_FIRSTPASS:
|
||||
cpi->pass = 1;
|
||||
cpi->compressor_speed = 1;
|
||||
break;
|
||||
|
||||
case MODE_SECONDPASS:
|
||||
cpi->pass = 2;
|
||||
cpi->compressor_speed = 1;
|
||||
|
@ -1981,6 +1482,7 @@ void vp8_change_config(VP8_PTR ptr, VP8_CONFIG *oxcf)
|
|||
cpi->oxcf.cpu_used = 5;
|
||||
|
||||
break;
|
||||
|
||||
case MODE_SECONDPASS_BEST:
|
||||
cpi->pass = 2;
|
||||
cpi->compressor_speed = 0;
|
||||
|
@ -2453,13 +1955,6 @@ VP8_PTR vp8_create_compressor(VP8_CONFIG *oxcf)
|
|||
vp8_init_second_pass(cpi);
|
||||
}
|
||||
|
||||
if (cpi->compressor_speed == 2)
|
||||
{
|
||||
cpi->cpu_freq = 0; //vp8_get_processor_freq();
|
||||
cpi->avg_encode_time = 0;
|
||||
cpi->avg_pick_mode_time = 0;
|
||||
}
|
||||
|
||||
vp8_set_speed_features(cpi);
|
||||
|
||||
// Set starting values of RD threshold multipliers (128 = *1)
|
||||
|
@ -2632,25 +2127,6 @@ void vp8_remove_compressor(VP8_PTR *ptr)
|
|||
#endif
|
||||
|
||||
|
||||
#ifdef SPEEDSTATS
|
||||
|
||||
if (cpi->compressor_speed == 2)
|
||||
{
|
||||
int i;
|
||||
FILE *f = fopen("cxspeed.stt", "a");
|
||||
cnt_pm /= cpi->common.MBs;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
fprintf(f, "%5d", frames_at_speed[i]);
|
||||
|
||||
fprintf(f, "\n");
|
||||
//fprintf(f, "%10d PM %10d %10d %10d EF %10d %10d %10d\n", cpi->Speed, cpi->avg_pick_mode_time, (tot_pm/cnt_pm), cnt_pm, cpi->avg_encode_time, 0, 0);
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef MODE_STATS
|
||||
{
|
||||
extern int count_mb_seg[4];
|
||||
|
@ -3311,50 +2787,6 @@ static int decide_key_frame(VP8_COMP *cpi)
|
|||
// Clear down mmx registers
|
||||
vp8_clear_system_state(); //__asm emms;
|
||||
|
||||
if ((cpi->compressor_speed == 2) && (cpi->Speed >= 5) && (cpi->sf.RD == 0))
|
||||
{
|
||||
double change = 1.0 * abs((int)(cpi->intra_error - cpi->last_intra_error)) / (1 + cpi->last_intra_error);
|
||||
double change2 = 1.0 * abs((int)(cpi->prediction_error - cpi->last_prediction_error)) / (1 + cpi->last_prediction_error);
|
||||
double minerror = cm->MBs * 256;
|
||||
|
||||
#if 0
|
||||
|
||||
if (10 * cpi->intra_error / (1 + cpi->prediction_error) < 15
|
||||
&& cpi->prediction_error > minerror
|
||||
&& (change > .25 || change2 > .25))
|
||||
{
|
||||
FILE *f = fopen("intra_inter.stt", "a");
|
||||
|
||||
if (cpi->prediction_error <= 0)
|
||||
cpi->prediction_error = 1;
|
||||
|
||||
fprintf(f, "%d %d %d %d %14.4f\n",
|
||||
cm->current_video_frame,
|
||||
(int) cpi->prediction_error,
|
||||
(int) cpi->intra_error,
|
||||
(int)((10 * cpi->intra_error) / cpi->prediction_error),
|
||||
change);
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
cpi->last_intra_error = cpi->intra_error;
|
||||
cpi->last_prediction_error = cpi->prediction_error;
|
||||
|
||||
if (10 * cpi->intra_error / (1 + cpi->prediction_error) < 15
|
||||
&& cpi->prediction_error > minerror
|
||||
&& (change > .25 || change2 > .25))
|
||||
{
|
||||
/*(change > 1.4 || change < .75)&& cpi->this_frame_percent_intra > cpi->last_frame_percent_intra + 3*/
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
|
||||
// If the following are true we might as well code a key frame
|
||||
if (((cpi->this_frame_percent_intra == 100) &&
|
||||
(cpi->this_frame_percent_intra > (cpi->last_frame_percent_intra + 2))) ||
|
||||
|
@ -3759,18 +3191,6 @@ static void encode_frame_to_data_rate
|
|||
// Clear down mmx registers to allow floating point in what follows
|
||||
vp8_clear_system_state();
|
||||
|
||||
if (cpi->compressor_speed == 2)
|
||||
{
|
||||
if(cpi->oxcf.auto_key && cm->frame_type != KEY_FRAME)
|
||||
{
|
||||
if(cpi->force_next_frame_intra)
|
||||
{
|
||||
cm->frame_type = KEY_FRAME; /* delayed intra frame */
|
||||
}
|
||||
}
|
||||
cpi->force_next_frame_intra = 0;
|
||||
}
|
||||
|
||||
// For an alt ref frame in 2 pass we skip the call to the second pass function that sets the target bandwidth
|
||||
if (cpi->pass == 2)
|
||||
{
|
||||
|
@ -4345,13 +3765,7 @@ static void encode_frame_to_data_rate
|
|||
{
|
||||
int key_frame_decision = decide_key_frame(cpi);
|
||||
|
||||
if (cpi->compressor_speed == 2)
|
||||
{
|
||||
/* we don't do re-encoding in realtime mode
|
||||
* if key frame is decided than we force it on next frame */
|
||||
cpi->force_next_frame_intra = key_frame_decision;
|
||||
}
|
||||
else if (key_frame_decision)
|
||||
if (key_frame_decision)
|
||||
{
|
||||
// Reset all our sizing numbers and recode
|
||||
cm->frame_type = KEY_FRAME;
|
||||
|
@ -5374,13 +4788,6 @@ int vp8_get_compressed_data(VP8_PTR ptr, unsigned int *frame_flags, unsigned lon
|
|||
cpi->last_end_time_stamp_seen = cpi->source->ts_end;
|
||||
}
|
||||
|
||||
if (cpi->compressor_speed == 2)
|
||||
{
|
||||
check_gf_quality(cpi);
|
||||
vpx_usec_timer_start(&tsctimer);
|
||||
vpx_usec_timer_start(&ticktimer);
|
||||
}
|
||||
|
||||
// start with a 0 size frame
|
||||
*size = 0;
|
||||
|
||||
|
@ -5430,39 +4837,6 @@ int vp8_get_compressed_data(VP8_PTR ptr, unsigned int *frame_flags, unsigned lon
|
|||
else
|
||||
encode_frame_to_data_rate(cpi, size, dest, frame_flags);
|
||||
|
||||
if (cpi->compressor_speed == 2)
|
||||
{
|
||||
unsigned int duration, duration2;
|
||||
vpx_usec_timer_mark(&tsctimer);
|
||||
vpx_usec_timer_mark(&ticktimer);
|
||||
|
||||
duration = vpx_usec_timer_elapsed(&ticktimer);
|
||||
duration2 = (unsigned int)((double)duration / 2);
|
||||
|
||||
if (cm->frame_type != KEY_FRAME)
|
||||
{
|
||||
if (cpi->avg_encode_time == 0)
|
||||
cpi->avg_encode_time = duration;
|
||||
else
|
||||
cpi->avg_encode_time = (7 * cpi->avg_encode_time + duration) >> 3;
|
||||
}
|
||||
|
||||
if (duration2)
|
||||
{
|
||||
//if(*frame_flags!=1)
|
||||
{
|
||||
|
||||
if (cpi->avg_pick_mode_time == 0)
|
||||
cpi->avg_pick_mode_time = duration2;
|
||||
else
|
||||
cpi->avg_pick_mode_time = (7 * cpi->avg_pick_mode_time + duration2) >> 3;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(cm->refresh_entropy_probs)
|
||||
{
|
||||
if(cm->refresh_alt_ref_frame)
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -1,19 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __INC_PICKINTER_H
|
||||
#define __INC_PICKINTER_H
|
||||
#include "vpx_ports/config.h"
|
||||
#include "vp8/common/onyxc_int.h"
|
||||
|
||||
extern void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int recon_uvoffset, int *returnrate, int *returndistortion, int *returnintra);
|
||||
extern void vp8_pick_intra_mode(VP8_COMP *cpi, MACROBLOCK *x, int *rate);
|
||||
#endif
|
|
@ -48,8 +48,6 @@ void (*vp8_subtract_mby)(short *diff, unsigned char *src, unsigned char *pred, i
|
|||
void (*vp8_subtract_mbuv)(short *diff, unsigned char *usrc, unsigned char *vsrc, unsigned char *pred, int stride);
|
||||
void (*vp8_fast_quantize_b)(BLOCK *b, BLOCKD *d);
|
||||
|
||||
unsigned int (*vp8_get4x4sse_cs)(unsigned char *src_ptr, int source_stride, unsigned char *ref_ptr, int recon_stride);
|
||||
|
||||
// c imports
|
||||
extern int block_error_c(short *coeff, short *dqcoeff);
|
||||
extern int vp8_mbblock_error_c(MACROBLOCK *mb, int dc);
|
||||
|
@ -85,7 +83,6 @@ extern sub_pixel_variance_function sub_pixel_variance16x8_c;
|
|||
extern sub_pixel_variance_function sub_pixel_variance16x16_c;
|
||||
|
||||
extern unsigned int vp8_get_mb_ss_c(short *);
|
||||
extern unsigned int vp8_get4x4sse_cs_c(unsigned char *src_ptr, int source_stride, unsigned char *ref_ptr, int recon_stride);
|
||||
|
||||
// ppc
|
||||
extern int vp8_block_error_ppc(short *coeff, short *dqcoeff);
|
||||
|
@ -143,7 +140,6 @@ void vp8_cmachine_specific_config(void)
|
|||
vp8_sub_pixel_variance16x16 = vp8_sub_pixel_variance16x16_ppc;
|
||||
|
||||
vp8_get_mb_ss = vp8_get_mb_ss_c;
|
||||
vp8_get4x4sse_cs = vp8_get4x4sse_cs_c;
|
||||
|
||||
vp8_sad16x16 = vp8_sad16x16_ppc;
|
||||
vp8_sad16x8 = vp8_sad16x8_ppc;
|
||||
|
|
|
@ -471,13 +471,6 @@ static void calc_gf_params(VP8_COMP *cpi)
|
|||
#endif
|
||||
}
|
||||
|
||||
// golden frame boost without recode loop often goes awry. be safe by keeping numbers down.
|
||||
if (!cpi->sf.recode_loop)
|
||||
{
|
||||
if (cpi->compressor_speed == 2)
|
||||
Boost = Boost / 2;
|
||||
}
|
||||
|
||||
// Apply an upper limit based on Q for 1 pass encodes
|
||||
// TODO.
|
||||
// This is a temporay measure oas one pass not really supported yet in
|
||||
|
|
|
@ -315,11 +315,6 @@ extern prototype_getmbss(vp8_variance_getmbss);
|
|||
#endif
|
||||
extern prototype_variance(vp8_variance_mse16x16);
|
||||
|
||||
#ifndef vp8_variance_get4x4sse_cs
|
||||
#define vp8_variance_get4x4sse_cs vp8_get4x4sse_cs_c
|
||||
#endif
|
||||
extern prototype_get16x16prederror(vp8_variance_get4x4sse_cs);
|
||||
|
||||
#ifndef vp8_ssimpf_8x8
|
||||
#define vp8_ssimpf_8x8 vp8_ssim_parms_8x8_c
|
||||
#endif
|
||||
|
@ -373,8 +368,6 @@ typedef struct
|
|||
vp8_getmbss_fn_t getmbss;
|
||||
vp8_variance_fn_t mse16x16;
|
||||
|
||||
vp8_get16x16prederror_fn_t get4x4sse_cs;
|
||||
|
||||
vp8_sad_multi_fn_t sad16x16x3;
|
||||
vp8_sad_multi_fn_t sad16x8x3;
|
||||
vp8_sad_multi_fn_t sad8x16x3;
|
||||
|
|
|
@ -42,7 +42,6 @@ extern prototype_subpixvariance(vp8_sub_pixel_mse16x16_mmx);
|
|||
extern prototype_getmbss(vp8_get_mb_ss_mmx);
|
||||
extern prototype_variance(vp8_mse16x16_mmx);
|
||||
extern prototype_variance2(vp8_get8x8var_mmx);
|
||||
extern prototype_get16x16prederror(vp8_get4x4sse_cs_mmx);
|
||||
|
||||
#if !CONFIG_RUNTIME_CPU_DETECT
|
||||
#undef vp8_variance_sad4x4
|
||||
|
@ -108,9 +107,6 @@ extern prototype_get16x16prederror(vp8_get4x4sse_cs_mmx);
|
|||
#undef vp8_variance_mse16x16
|
||||
#define vp8_variance_mse16x16 vp8_mse16x16_mmx
|
||||
|
||||
#undef vp8_variance_get4x4sse_cs
|
||||
#define vp8_variance_get4x4sse_cs vp8_get4x4sse_cs_mmx
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
|
@ -152,8 +152,6 @@ void vp8_arch_x86_encoder_init(VP8_COMP *cpi)
|
|||
cpi->rtcd.variance.mse16x16 = vp8_mse16x16_mmx;
|
||||
cpi->rtcd.variance.getmbss = vp8_get_mb_ss_mmx;
|
||||
|
||||
cpi->rtcd.variance.get4x4sse_cs = vp8_get4x4sse_cs_mmx;
|
||||
|
||||
cpi->rtcd.fdct.short4x4 = vp8_short_fdct4x4_mmx;
|
||||
cpi->rtcd.fdct.short8x4 = vp8_short_fdct8x4_mmx;
|
||||
cpi->rtcd.fdct.fast4x4 = vp8_short_fdct4x4_mmx;
|
||||
|
@ -201,8 +199,6 @@ void vp8_arch_x86_encoder_init(VP8_COMP *cpi)
|
|||
cpi->rtcd.variance.mse16x16 = vp8_mse16x16_wmt;
|
||||
cpi->rtcd.variance.getmbss = vp8_get_mb_ss_sse2;
|
||||
|
||||
/* cpi->rtcd.variance.get4x4sse_cs not implemented for wmt */;
|
||||
|
||||
cpi->rtcd.fdct.short4x4 = vp8_short_fdct4x4_sse2;
|
||||
cpi->rtcd.fdct.short8x4 = vp8_short_fdct8x4_sse2;
|
||||
cpi->rtcd.fdct.fast4x4 = vp8_short_fdct4x4_sse2;
|
||||
|
|
|
@ -57,7 +57,6 @@ VP8_CX_SRCS-yes += encoder/lookahead.h
|
|||
VP8_CX_SRCS-yes += encoder/mcomp.h
|
||||
VP8_CX_SRCS-yes += encoder/modecosts.h
|
||||
VP8_CX_SRCS-yes += encoder/onyx_int.h
|
||||
VP8_CX_SRCS-yes += encoder/pickinter.h
|
||||
VP8_CX_SRCS-yes += encoder/psnr.h
|
||||
VP8_CX_SRCS-yes += encoder/quantize.h
|
||||
VP8_CX_SRCS-yes += encoder/ratectrl.h
|
||||
|
@ -68,7 +67,6 @@ VP8_CX_SRCS-yes += encoder/variance.h
|
|||
VP8_CX_SRCS-yes += encoder/mcomp.c
|
||||
VP8_CX_SRCS-yes += encoder/modecosts.c
|
||||
VP8_CX_SRCS-yes += encoder/onyx_if.c
|
||||
VP8_CX_SRCS-yes += encoder/pickinter.c
|
||||
VP8_CX_SRCS-yes += encoder/picklpf.c
|
||||
VP8_CX_SRCS-yes += encoder/psnr.c
|
||||
VP8_CX_SRCS-yes += encoder/quantize.c
|
||||
|
|
Загрузка…
Ссылка в новой задаче