📄 tglobalsettings.cpp
字号:
_l("dtsinwav"),1,
IDFF_vorbisgain ,&TglobalSettingsDecAudio::vorbisgain ,0,0 ,_l(""),0,
_l("vorbisgain"),0,
IDFF_ac3SPDIF ,&TglobalSettingsDecAudio::ac3SPDIF ,0,0 ,_l(""),0,
_l("ac3SPDIF"),0,
0
};
addOptions(iopts);
static const TstrOption sopts[]=
{
IDFF_winamp2dir,(TstrVal)&TglobalSettingsDecAudio::winamp2dir,MAX_PATH,_l(""),0,
_l("winamp2dir"),NULL,
0
};
addOptions(sopts);
}
int TglobalSettingsDecAudio::getDefault(int id)
{
switch (id)
{
case IDFF_multipleInstances:return filtermode&IDFF_FILTERMODE_AUDIORAW?0:1;
default:return TglobalSettingsDec::getDefault(id);
}
}
void TglobalSettingsDecAudio::getDefaultStr(int id,char_t *buf,size_t buflen)
{
if (id==IDFF_winamp2dir)
{
TregOpRegRead wt(HKEY_CURRENT_USER,_l("Software\\Winamp"));
wt._REG_OP_S(0,NULL,buf,buflen,_l(""));
}
else
TglobalSettingsDec::getDefaultStr(id,buf,buflen);
}
void TglobalSettingsDecAudio::reg_op_codec(TregOp &t,TregOp *t2)
{
_reg_op_codec(IDFF_wma7 ,t,t2,_l("wma1") ,wma1 ,0);
_reg_op_codec(IDFF_wma8 ,t,t2,_l("wma2") ,wma2 ,0);
_reg_op_codec(IDFF_mp2 ,t,t2,_l("mp2") ,mp2 ,0);
_reg_op_codec(IDFF_mp3 ,t,t2,_l("mp3") ,mp3 ,0);
_reg_op_codec(IDFF_ac3 ,t,t2,_l("ac3") ,ac3 ,IDFF_MOVIE_LIBA52);
_reg_op_codec(IDFF_dts ,t,t2,_l("dts") ,dts ,IDFF_MOVIE_LIBDTS);
_reg_op_codec(IDFF_aac ,t,t2,_l("aac") ,aac ,0);
_reg_op_codec(IDFF_amr ,t,t2,_l("amr") ,amr ,0);
_reg_op_codec(IDFF_iadpcm ,t,t2,_l("iadpcm") ,iadpcm ,IDFF_MOVIE_LAVC);
_reg_op_codec(IDFF_msadpcm ,t,t2,_l("msadpcm") ,msadpcm ,0);
_reg_op_codec(IDFF_otherAdpcm,t,t2,_l("otherAdpcm"),otherAdpcm,0);
_reg_op_codec(IDFF_law ,t,t2,_l("law") ,law ,0);
_reg_op_codec(IDFF_gsm ,t,t2,_l("gsm") ,gsm ,0);
_reg_op_codec(IDFF_lpcm ,t,t2,_l("lpcm") ,lpcm ,0);
_reg_op_codec(IDFF_flac ,t,t2,_l("flac") ,flac ,0);
_reg_op_codec(IDFF_tta ,t,t2,_l("tta") ,tta ,0);
_reg_op_codec(IDFF_qdm2 ,t,t2,_l("qdm2") ,qdm2 ,0);
_reg_op_codec(IDFF_mace ,t,t2,_l("mace") ,mace ,0);
_reg_op_codec(IDFF_truespeech,t,t2,_l("truespeech"),truespeech,0);
_reg_op_codec(IDFF_vorbis ,t,t2,_l("vorbis") ,vorbis ,0);
_reg_op_codec(IDFF_ra ,t,t2,_l("ra") ,ra ,0);
_reg_op_codec(IDFF_imc ,t,t2,_l("imc") ,imc ,0);
_reg_op_codec(IDFF_atrac3 ,t,t2,_l("atrac3") ,atrac3 ,0);
_reg_op_codec(IDFF_avisA ,t,t2,_l("avis") ,avis ,IDFF_MOVIE_AVIS);
_reg_op_codec(IDFF_rawa ,t,t2,filtermode&IDFF_FILTERMODE_AUDIORAW?_l("raw_rawa"):_l("rawa"),rawa,filtermode&IDFF_FILTERMODE_AUDIORAW?IDFF_MOVIE_RAW:0);
}
void TglobalSettingsDecAudio::load(void)
{
TglobalSettingsDec::load();
if (ac3==IDFF_MOVIE_MPLAYER || ac3==IDFF_MOVIE_LAVC) ac3=IDFF_MOVIE_LIBA52;
fixMissing(wma1 ,IDFF_MOVIE_LAVC);
fixMissing(wma2 ,IDFF_MOVIE_LAVC);
fixMissing(amr ,IDFF_MOVIE_LAVC);
fixMissing(ac3 ,IDFF_MOVIE_LIBA52);
fixMissing(dts ,IDFF_MOVIE_LIBDTS);
fixMissing(mp2 ,IDFF_MOVIE_MPLAYER,IDFF_MOVIE_LIBMAD,IDFF_MOVIE_AUDX);
fixMissing(mp3 ,IDFF_MOVIE_MPLAYER,IDFF_MOVIE_LIBMAD,IDFF_MOVIE_AUDX);
fixMissing(aac ,IDFF_MOVIE_LIBFAAD,IDFF_MOVIE_REALAAC);
fixMissing(avis ,IDFF_MOVIE_AVIS);
fixMissing(iadpcm ,IDFF_MOVIE_LAVC);
fixMissing(msadpcm ,IDFF_MOVIE_LAVC);
fixMissing(otherAdpcm,IDFF_MOVIE_LAVC);
fixMissing(law ,IDFF_MOVIE_LAVC);
fixMissing(gsm ,IDFF_MOVIE_LAVC);
fixMissing(flac ,IDFF_MOVIE_LAVC);
fixMissing(tta ,IDFF_MOVIE_LAVC);
fixMissing(qdm2 ,IDFF_MOVIE_LAVC);
fixMissing(mace ,IDFF_MOVIE_LAVC);
fixMissing(truespeech,IDFF_MOVIE_LAVC);
fixMissing(vorbis ,IDFF_MOVIE_LAVC,IDFF_MOVIE_TREMOR);
fixMissing(ra ,IDFF_MOVIE_LAVC);
fixMissing(imc ,IDFF_MOVIE_LAVC);
fixMissing(atrac3 ,IDFF_MOVIE_LAVC);
}
#define FF_WAVE_FORMAT1_CODEC(format,decoder,codec) \
case WAVE_FORMAT_##format: \
codecId=(decoder)?codec:CODEC_ID_NONE; \
break;
#define FF_WAVE_FORMAT_CODEC(format,decoder,codecs) \
case WAVE_FORMAT_##format: \
codecId=codecs[decoder]; \
break;
#define AUDIO_FOURCCS \
FF_WAVE_FORMAT1_OP(WMA7 ,wma1 & rawmask,CODEC_ID_WMAV1) \
FF_WAVE_FORMAT1_OP(WMA8 ,wma2 & rawmask,CODEC_ID_WMAV2) \
FF_WAVE_FORMAT_OP (MPEGLAYER3,mp3 & rawmask,c_mp123) \
FF_WAVE_FORMAT_OP (MPEG ,mp2 & rawmask,c_mp123) \
FF_WAVE_FORMAT_OP (AC3_W ,ac3 & rawmask,c_ac3) \
FF_WAVE_FORMAT_OP (DTS_W ,dts & rawmask,c_dts) \
FF_WAVE_FORMAT_OP (AAC1 ,aac & rawmask,c_aac) \
FF_WAVE_FORMAT_OP (AAC2 ,aac & rawmask,c_aac) \
FF_WAVE_FORMAT_OP (AAC3 ,aac & rawmask,c_aac) \
FF_WAVE_FORMAT_OP (AAC4 ,aac & rawmask,c_aac) \
FF_WAVE_FORMAT1_OP(AMR ,amr & rawmask,CODEC_ID_AMR_NB) \
FF_WAVE_FORMAT1_OP(SAMR ,amr & rawmask,CODEC_ID_AMR_NB) \
FF_WAVE_FORMAT1_OP(IMA_DK3,iadpcm & rawmask,CODEC_ID_ADPCM_IMA_DK3) \
FF_WAVE_FORMAT1_OP(IMA_WAV,iadpcm & rawmask,CODEC_ID_ADPCM_IMA_WAV) \
FF_WAVE_FORMAT1_OP(IMA_DK4,iadpcm & rawmask,CODEC_ID_ADPCM_IMA_DK4) \
FF_WAVE_FORMAT1_OP(IMA4 ,iadpcm & rawmask,CODEC_ID_ADPCM_IMA_QT) \
FF_WAVE_FORMAT1_OP(ADPCM ,msadpcm& rawmask,CODEC_ID_ADPCM_MS) \
FF_WAVE_FORMAT1_OP(CREATIVE_ADPCM,otherAdpcm& rawmask,CODEC_ID_ADPCM_CT) \
FF_WAVE_FORMAT1_OP(YAMAHA_ADPCM ,otherAdpcm& rawmask,CODEC_ID_ADPCM_YAMAHA) \
FF_WAVE_FORMAT1_OP(G726 ,otherAdpcm& rawmask,CODEC_ID_ADPCM_G726) \
FF_WAVE_FORMAT1_OP(ALAW ,law & rawmask,CODEC_ID_PCM_ALAW) \
FF_WAVE_FORMAT1_OP(MULAW ,law & rawmask,CODEC_ID_PCM_MULAW) \
/*FF_WAVE_FORMAT1_OP(QT_ULAW,law & rawmask,CODEC_ID_PCM_MULAW)*/ \
FF_WAVE_FORMAT1_OP(GSM610 ,gsm & rawmask,CODEC_ID_GSM_MS) \
/*FF_WAVE_FORMAT1_OP(QT_GSM ,gsm & rawmask,CODEC_ID_GSM_MS)*/ \
FF_WAVE_FORMAT1_OP(FLAC ,flac & rawmask,CODEC_ID_FLAC) \
FF_WAVE_FORMAT1_OP(TTA ,tta & rawmask,CODEC_ID_TTA) \
FF_WAVE_FORMAT1_OP(QDM2 ,qdm2 & rawmask,CODEC_ID_QDM2) \
FF_WAVE_FORMAT1_OP(MAC3 ,mace & rawmask,CODEC_ID_MACE3) \
FF_WAVE_FORMAT1_OP(MAC6 ,mace & rawmask,CODEC_ID_MACE6) \
FF_WAVE_FORMAT1_OP(DSPGROUP_TRUESPEECH,truespeech & rawmask,CODEC_ID_TRUESPEECH) \
/*FF_WAVE_FORMAT1_OP(COOK ,1 & rawmask,CODEC_ID_COOK)*/ \
FF_WAVE_FORMAT1_OP(14_4 ,ra & rawmask,CODEC_ID_RA_144) \
FF_WAVE_FORMAT1_OP(28_8 ,ra & rawmask,CODEC_ID_RA_288) \
FF_WAVE_FORMAT1_OP(IMC ,imc & rawmask,CODEC_ID_IMC) \
FF_WAVE_FORMAT1_OP(ATRAC3 ,atrac3 & rawmask,CODEC_ID_ATRAC3) \
FF_WAVE_FORMAT_OP (VORBIS ,vorbis & rawmask,c_vorbis) \
FF_WAVE_FORMAT_OP (FFVORBIS,vorbis & rawmask,c_vorbis) \
/*FF_WAVE_FORMAT1_OP(VORBIS1 ,vorbis& rawmask,CODEC_ID_TREMOR)*/ \
/*FF_WAVE_FORMAT1_OP(VORBIS2 ,vorbis& rawmask,CODEC_ID_TREMOR)*/ \
/*FF_WAVE_FORMAT1_OP(VORBIS3 ,vorbis& rawmask,CODEC_ID_TREMOR)*/ \
/*FF_WAVE_FORMAT1_OP(VORBIS1P,vorbis& rawmask,CODEC_ID_TREMOR)*/ \
/*FF_WAVE_FORMAT1_OP(VORBIS2P,vorbis& rawmask,CODEC_ID_TREMOR)*/ \
/*FF_WAVE_FORMAT1_OP(VORBIS3P,vorbis& rawmask,CODEC_ID_TREMOR)*/ \
FF_WAVE_FORMAT1_OP(LPCM ,lpcm & rawmask,CODEC_ID_LPCM) \
FF_WAVE_FORMAT1_OP(AVIS ,avis & rawmask,CODEC_ID_AVISYNTH) \
FF_WAVE_FORMAT1_OP(PCM8 ,rawa==IDFF_MOVIE_RAW || rawa==(TsampleFormat::SF_ALLINT<<8) || rawa==(TsampleFormat::SF_PCM8 <<8),CODEC_ID_PCM) \
FF_WAVE_FORMAT1_OP(PCM16 ,rawa==IDFF_MOVIE_RAW || rawa==(TsampleFormat::SF_ALLINT<<8) || rawa==(TsampleFormat::SF_PCM16<<8),CODEC_ID_PCM) \
FF_WAVE_FORMAT1_OP(PCM24 ,rawa==IDFF_MOVIE_RAW || rawa==(TsampleFormat::SF_ALLINT<<8) || rawa==(TsampleFormat::SF_PCM24<<8),CODEC_ID_PCM) \
FF_WAVE_FORMAT1_OP(PCM32 ,rawa==IDFF_MOVIE_RAW || rawa==(TsampleFormat::SF_ALLINT<<8) || rawa==(TsampleFormat::SF_PCM32<<8),CODEC_ID_PCM) \
FF_WAVE_FORMAT1_OP(FLOAT32,rawa==IDFF_MOVIE_RAW || rawa==(TsampleFormat::SF_FLOAT32<<8) || rawa==(TsampleFormat::SF_ALLFLOAT<<8),CODEC_ID_PCM) \
FF_WAVE_FORMAT1_OP(FLOAT64,rawa==IDFF_MOVIE_RAW || rawa==(TsampleFormat::SF_FLOAT64<<8) || rawa==(TsampleFormat::SF_ALLFLOAT<<8),CODEC_ID_PCM)
const char_t *TglobalSettingsDecAudio::wave_formats[]=
{
#undef FF_WAVE_FORMAT_OP
#undef FF_WAVE_FORMAT1_OP
#define FF_WAVE_FORMAT_OP FF_FOURCC_LIST
#define FF_WAVE_FORMAT1_OP FF_FOURCC_LIST
AUDIO_FOURCCS
NULL
};
const char_t** TglobalSettingsDecAudio::getFOURCClist(void) const
{
return wave_formats;
}
const CodecID TglobalSettingsDecAudio::c_mp123[IDFF_MOVIE_MAX+1]=
{
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_MP3LIB,
CODEC_ID_LIBMAD,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_AUDX
};
const CodecID TglobalSettingsDecAudio::c_ac3[IDFF_MOVIE_MAX+1]=
{
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_LIBA52,
CODEC_ID_SPDIF_AC3
};
const CodecID TglobalSettingsDecAudio::c_dts[IDFF_MOVIE_MAX+1]=
{
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_SPDIF_DTS,
CODEC_ID_LIBDTS
};
const CodecID TglobalSettingsDecAudio::c_aac[IDFF_MOVIE_MAX+1]=
{
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_LIBFAAD,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_REALAAC
};
const CodecID TglobalSettingsDecAudio::c_vorbis[IDFF_MOVIE_MAX+1]=
{
CODEC_ID_NONE,
CODEC_ID_VORBIS,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_NONE,
CODEC_ID_TREMOR
};
void TglobalSettingsDecAudio::getCodecsList(Tstrptrs &codecs) const
{
std::vector<CodecID> ids;
#undef FF_WAVE_FORMAT_OP
#undef FF_WAVE_FORMAT1_OP
#define FF_WAVE_FORMAT_OP(format,decoder,codecs) for (int j=0;j<=IDFF_MOVIE_MAX;j++) if (codecs[j]!=CODEC_ID_NONE) ids.push_back(codecs[j]);
#define FF_WAVE_FORMAT1_OP(format,decoder,codec) ids.push_back(codec);
AUDIO_FOURCCS
cleanupCodecsList(ids,codecs);
}
CodecID TglobalSettingsDecAudio::getCodecId(DWORD fourCC,FOURCC*) const
{
CodecID codecId=CODEC_ID_NONE;
int rawmask=filtermode&IDFF_FILTERMODE_AUDIORAW?0:0xffff;
switch(fourCC)
{
#undef FF_WAVE_FORMAT_OP
#undef FF_WAVE_FORMAT1_OP
#define FF_WAVE_FORMAT_OP FF_WAVE_FORMAT_CODEC
#define FF_WAVE_FORMAT1_OP FF_WAVE_FORMAT1_CODEC
AUDIO_FOURCCS
default:return CODEC_ID_NONE;
}
return codecId;
}
//==================================== TglobalSettingsEnc ====================================
TglobalSettingsEnc::TglobalSettingsEnc(const Tconfig *Iconfig,int Imode,TintStrColl *Icoll):TglobalSettingsBase(Iconfig,Imode,FFDSHOWENC,Icoll)
{
static const TintOptionT<TglobalSettingsEnc> iopts[]=
{
IDFF_enc_psnr ,&TglobalSettingsEnc::psnr ,0,0,_l(""),0,
_l("psnr"),0,
IDFF_isDyInterlaced ,&TglobalSettingsEnc::isDyInterlaced ,0,0,_l(""),0,
_l("isDyInterlaced"),0,
IDFF_dyInterlaced ,&TglobalSettingsEnc::dyInterlaced ,0,4096,_l(""),0,
_l("dyInterlaced"),288,
0
};
addOptions(iopts);
}
int TglobalSettingsEnc::getDefault(int id)
{
switch (id)
{
case IDFF_trayIcon:return 0;
case IDFF_multipleInstances:return 0;
default:return TglobalSettingsBase::getDefault(id);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -