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

📄 tglobalsettings.cpp

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