📄 tcodecsettings.cpp
字号:
IDFF_enc_alt_curve_low_dist ,&TcoSettings::alt_curve_low_dist ,0,5000,_l(""),1,
_l("alt_curve_low_dist"),90,
IDFF_enc_alt_curve_use_auto ,&TcoSettings::alt_curve_use_auto ,0,0,_l(""),1,
_l("alt_curve_use_auto"),1,
IDFF_enc_alt_curve_auto_str ,&TcoSettings::alt_curve_auto_str ,0,100,_l(""),1,
_l("alt_curve_auto_str"),30,
IDFF_enc_alt_curve_min_rel_qual ,&TcoSettings::alt_curve_min_rel_qual ,0,100,_l(""),1,
_l("alt_curve_min_rel_qual"),50,
IDFF_enc_alt_curve_use_auto_bonus_bias ,&TcoSettings::alt_curve_use_auto_bonus_bias ,0,0,_l(""),1,
_l("alt_curve_use_auto_bonus_bias"),1,
IDFF_enc_alt_curve_bonus_bias ,&TcoSettings::alt_curve_bonus_bias ,0,5000,_l(""),1,
_l("alt_curve_bonus_bias"),50,
IDFF_enc_xvid_lum_masking ,&TcoSettings::xvid_lum_masking ,0,0,_l(""),1,
_l("xvid_lum_masking"),0,
IDFF_enc_xvid_chromaopt ,&TcoSettings::xvid_chromaopt ,0,0,_l(""),1,
_l("xvid_chromaopt"),0,
IDFF_enc_isElimLum ,&TcoSettings::isElimLum ,0,0,_l(""),1,
_l("isElimLum"),0,
IDFF_enc_elimLumThres ,&TcoSettings::elimLumThres ,-1000,1000,_l(""),1,
_l("elimLumThres"),-4,
IDFF_enc_isElimChrom ,&TcoSettings::isElimChrom ,0,0,_l(""),1,
_l("isElimChrom"),0,
IDFF_enc_elimChromThres ,&TcoSettings::elimChromThres ,-1000,1000,_l(""),1,
_l("elimChromThres"),7,
IDFF_enc_is_lavc_nr ,&TcoSettings::is_lavc_nr ,0,0,_l(""),1,
_l("is_lavc_nr"),0,
IDFF_enc_lavc_nr ,&TcoSettings::lavc_nr ,0,10000,_l(""),1,
_l("lavc_nr"),100,
IDFF_enc_is_ff_lumi_masking ,&TcoSettings::is_ff_lumi_masking ,0,0,_l(""),1,
_l("is_ff_lumi_masking"),0,
IDFF_enc_ff_lumi_masking1000 ,&TcoSettings::ff_lumi_masking1000 ,0,1000,_l(""),1,
_l("ff_lumi_masking1000"),70,
IDFF_enc_is_ff_temporal_cplx_masking ,&TcoSettings::is_ff_temporal_cplx_masking ,0,0,_l(""),1,
_l("is_ff_temporal_cplx_masking"),0,
IDFF_enc_ff_temporal_cplx_masking1000,&TcoSettings::ff_temporal_cplx_masking1000,0,1000,_l(""),1,
_l("ff_temporal_cplx_masking1000"),0,
IDFF_enc_is_ff_spatial_cplx_masking ,&TcoSettings::is_ff_spatial_cplx_masking ,0,0,_l(""),1,
_l("is_ff_spatial_cplx_masking"),0,
IDFF_enc_ff_spatial_cplx_masking1000 ,&TcoSettings::ff_spatial_cplx_masking1000 ,0,1000,_l(""),1,
_l("ff_spatial_cplx_masking1000"),0,
IDFF_enc_is_ff_p_masking ,&TcoSettings::is_ff_p_masking ,0,0,_l(""),1,
_l("is_ff_p_masking"),0,
IDFF_enc_ff_p_masking1000 ,&TcoSettings::ff_p_masking1000 ,0,1000,_l(""),1,
_l("ff_p_masking1000"),0,
IDFF_enc_is_ff_dark_masking ,&TcoSettings::is_ff_dark_masking ,0,0,_l(""),1,
_l("is_ff_dark_masking"),0,
IDFF_enc_ff_dark_masking1000 ,&TcoSettings::ff_dark_masking1000 ,0,1000,_l(""),1,
_l("ff_dark_masking1000"),100,
IDFF_enc_is_ff_border_masking ,&TcoSettings::is_ff_border_masking ,0,0,_l(""),1,
_l("is_ff_border_masking"),0,
IDFF_enc_ff_border_masking1000 ,&TcoSettings::ff_border_masking1000 ,0,1000,_l(""),1,
_l("ff_border_masking1000"),0,
IDFF_enc_ff_naq ,&TcoSettings::ff_naq ,0,0,_l(""),1,
_l("ff_naq"),1,
IDFF_enc_isSkalMasking ,&TcoSettings::isSkalMasking ,0,0,_l(""),1,
_l("isSkalMasking"),0,
IDFF_enc_skalMaskingAmp ,&TcoSettings::skalMaskingAmp ,0,4000,_l(""),1,
_l("skalMaskingAmp"),800,
IDFF_enc_theo_hq ,&TcoSettings::theo_hq ,0,0,_l(""),1,
_l("theo_hq"),0,
IDFF_enc_theo_sharpness ,&TcoSettings::theo_sharpness ,0,2,_l(""),1,
_l("theo_sharpness"),1,
IDFF_enc_theo_noisesensitivity,&TcoSettings::theo_noisesensitivity,0,6,_l(""),1,
_l("theo_noisesensitivity"),1,
IDFF_enc_raw_fourcc,(TintVal)&TcoSettings::raw_fourcc,0,0,_l(""),1,
_l("raw_fourcc"),FOURCC_RGB2,
IDFF_enc_x264_max_ref_frames ,&TcoSettings::x264_max_ref_frames , 1, 16,_l(""),1,
_l("x264_max_ref_frames"),1,
IDFF_enc_x264_cabac ,&TcoSettings::x264_cabac , 0, 0,_l(""),1,
_l("x264_cabac"),1,
IDFF_enc_x264_interlaced ,&TcoSettings::x264_interlaced , 0, 0,_l(""),1,
_l("x264_interlaced"),0,
IDFF_enc_x264_me_inter ,&TcoSettings::x264_me_inter , 1, 1,_l(""),1,
_l("x264_me_inter2"),X264_ANALYSE_I4x4|X264_ANALYSE_I8x8|X264_ANALYSE_PSUB16x16|X264_ANALYSE_BSUB16x16,
IDFF_enc_x264_me_intra ,&TcoSettings::x264_me_intra , 1, 1,_l(""),1,
_l("x264_me_intra2"),X264_ANALYSE_I4x4|X264_ANALYSE_I8x8,
IDFF_enc_x264_me_subpelrefine ,&TcoSettings::x264_me_subpelrefine , 1, 6,_l(""),1,
_l("x264_me_subpelrefine"),5,
IDFF_enc_x264_mv_range ,&TcoSettings::x264_mv_range , 1,1024,_l(""),1,
_l("x264_mv_range"),512,
IDFF_enc_x264_me_method ,&TcoSettings::x264_me_method , 0, 3,_l(""),1,
_l("x264_me_method"),X264_ME_HEX,
IDFF_enc_x264_me_range ,&TcoSettings::x264_me_range , 4,1024,_l(""),1,
_l("x264_me_range"),16,
IDFF_enc_x264_i_direct_mv_pred ,&TcoSettings::x264_i_direct_mv_pred , 0, 3,_l(""),1,
_l("x264_i_direct_mv_pred"),X264_DIRECT_PRED_SPATIAL,
IDFF_enc_x264_i_deblocking_filter_alphac0,&TcoSettings::x264_i_deblocking_filter_alphac0,-6, 6,_l(""),1,
_l("x264_i_deblocking_filter_alphac0"),0,
IDFF_enc_x264_i_deblocking_filter_beta ,&TcoSettings::x264_i_deblocking_filter_beta ,-6, 6,_l(""),1,
_l("x264_i_deblocking_filter_beta"),0,
IDFF_enc_x264_b_bframe_pyramid ,&TcoSettings::x264_b_bframe_pyramid , 0, 0,_l(""),1,
_l("x264_b_bframe_pyramid"),0,
IDFF_enc_x264_b_aud ,&TcoSettings::x264_b_aud , 0, 0,_l(""),1,
_l("x264_b_aud"),0,
IDFF_enc_x264_mixed_ref ,&TcoSettings::x264_mixed_ref , 0, 0,_l(""),1,
_l("x264_mixed_ref"),0,
IDFF_enc_x264_b_dct_decimate ,&TcoSettings::x264_b_dct_decimate , 0, 0,_l(""),1,
_l("x264_b_dct_decimate"),1,
IDFF_enc_x264_is_aq ,&TcoSettings::x264_is_aq , 0, 0,_l(""),1,
_l("x264_is_aq"),0,
IDFF_enc_x264_aq_strength100 ,&TcoSettings::x264_aq_strength100 , 1, 100,_l(""),1,
_l("x264_aq_strength100"),30,
IDFF_enc_x264_f_aq_sensitivity ,&TcoSettings::x264_f_aq_sensitivity , 1, 30,_l(""),1,
_l("x264_f_aq_sensitivity"),15,
0,
};
addOptions(iopts);
static const TstrOption sopts[]=
{
IDFF_enc_ff1_stats_flnm,(TstrVal)&TcoSettings::ff1_stats_flnm,MAX_PATH,_l(""),1,
_l("ff1_stats_flnm"),_l("\\video.ffstats"),
IDFF_enc_storeExtFlnm ,(TstrVal)&TcoSettings::storeExtFlnm ,MAX_PATH,_l(""),1,
_l("storeExtFlnm"),_l(""),
IDFF_enc_stats1flnm,(TstrVal)&TcoSettings::stats1flnm,MAX_PATH,_l(""),1,
_l("stats1flnm"),_l("\\video.stats"),
IDFF_enc_stats2flnm,(TstrVal)&TcoSettings::stats2flnm,MAX_PATH,_l(""),1,
_l("stats2flnm"),_l("\\videogk.stats"),
0
};
addOptions(sopts);
setOnChange(IDFF_enc_forceIncsp,this,&TcoSettings::onIncspChange);
setOnChange(IDFF_enc_incsp,this,&TcoSettings::onIncspChange);
static const TcreateParamList1 listAspectMode(aspectModes);setParamList(IDFF_enc_aspectMode,&listAspectMode);
static const TcreateParamList1 listHuffYUVcaps(huffYUVcsps);setParamList(IDFF_enc_huffyuv_csp,&listHuffYUVcaps);
static const TcreateParamList1 listHuffYUVpreds(huffYUVpreds);setParamList(IDFF_enc_huffyuv_pred,&listHuffYUVpreds);
static const TcreateParamList1 listFFV1coders(ffv1coders);setParamList(IDFF_enc_ffv1_coder,&listFFV1coders);
static const TcreateParamList1 listFFV1contexts(ffv1contexts);setParamList(IDFF_enc_ffv1_context,&listFFV1contexts);
static const TcreateParamList2<TcspFcc> listFFV1csp(ffv1csps,&TcspFcc::name);setParamList(IDFF_enc_ffv1_csp,&listFFV1csp);
static const TcreateParamList1 listMuxer(Tmuxer::muxers);setParamList(IDFF_enc_muxer,&listMuxer);
static const TcreateParamList1 listX264meMethod(x264_me_methods);setParamList(IDFF_enc_x264_me_method,&listX264meMethod);
}
void TcoSettings::saveReg(void)
{
TregOpRegWrite t(HKEY_CURRENT_USER,FFDSHOW_REG_PARENT _l("\\") FFDSHOWENC);
reg_op(t);
}
void TcoSettings::loadReg(void)
{
TregOpRegRead t(HKEY_CURRENT_USER,FFDSHOW_REG_PARENT _l("\\") FFDSHOWENC);
reg_op(t);
fillIncsps();
}
int TcoSettings::isInCredits(int frame) const
{
if (isCreditsStart && frame>=creditsStartBegin && frame<=creditsStartEnd)
return CREDITS_POS::START;
else if (isCreditsEnd && frame>=creditsEndBegin && frame<=creditsEndEnd)
return CREDITS_POS::END;
else
return CREDITS_POS::NONE;
}
int TcoSettings::getQuantType(int quant) const
{
switch (quant_type)
{
case QUANT::MOD:
return quant<4?QUANT::MPEG:QUANT::H263;
case QUANT::MOD_NEW:
return quant<4?QUANT::H263:QUANT::MPEG;
default:
return quant_type;
}
}
const DVprofile* TcoSettings::getDVprofile(unsigned int dx,unsigned int dy,PixelFormat lavc_pix_fmt) const
{
if (dv_profile==DV_PROFILE_AUTO)
{
AVCodecContext avctx;
avctx.width=dx;
avctx.height=dy;
avctx.pix_fmt=lavc_pix_fmt;
return dv_codec_profile(&avctx);
}
else
{
const DVprofile *profile=dv_profiles+dv_profile;
return (profile->width==(int)dx && profile->height==(int)dy && profile->pix_fmt==lavc_pix_fmt)?profile:NULL;
}
}
std::vector<const DVprofile*> TcoSettings::getDVprofile(unsigned int dx,unsigned int dy) const
{
std::vector<const DVprofile*> profiles;
if (dv_profile==DV_PROFILE_AUTO)
{
for (int i=0; i<countof(dv_profiles);i++)
if ((int)dx==dv_profiles[i].width && (int)dy==dv_profiles[i].height)
profiles.push_back(dv_profiles+i);
}
else
{
const DVprofile *profile=dv_profiles+dv_profile;
if (profile->width==(int)dx && profile->height==(int)dy)
profiles.push_back(profile);
}
return profiles;
}
void TcoSettings::onIncspChange(int,int)
{
fillIncsps();
}
void TcoSettings::fillIncsps(void)
{
incsps.clear();
if (forceIncsp)
if (incspFourcc<10)
{
for (int i=0;i<FF_CSPS_NUM;i++)
if (csp_inFOURCCmask(1<<i,incspFourcc))
incsps.push_back(cspInfos+i);
}
else
incsps.push_back(csp_getInfoFcc(incspFourcc));
}
Rational TcoSettings::sar(unsigned int dx,unsigned int dy) const
{
switch (aspectMode)
{
case ASPECT_SAR:
return Rational(sarX1000,sarY1000);
default:
case ASPECT_DAR:
{
Trect r(0,0,dx,dy);
r.setDar(Rational(darX1000,darY1000));
return r.sar;
}
}
}
Rational TcoSettings::dar(unsigned int dx,unsigned int dy) const
{
switch (aspectMode)
{
case ASPECT_SAR:
return Trect(0,0,dx,dy,sarX1000,sarY1000).dar();
default:
case ASPECT_DAR:
return Rational(darX1000,darY1000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -