⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcodecsettings.cpp

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 CPP
📖 第 1 页 / 共 3 页
字号:
   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 + -