tmixersettings.cpp.svn-base
来自「ffshow源码」· SVN-BASE 代码 · 共 237 行
SVN-BASE
237 行
/* * Copyright (c) 2003-2006 Milan Cutka * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */#include "stdafx.h"#include "TmixerSettings.h"#include "TaudioFilterMixer.h"#include "TaudioFilterHeadphone.h"#include "Cmixer.h"#include "TffdshowPageDec.h"const TmixerSettings::TchConfig TmixerSettings::chConfigs[]={ 0,_l("1/0 - mono"), 0, 1, 0 , TsampleFormat::DOLBY_NO, 1,_l("2/0 - stereo"), 1, 2, 0 , TsampleFormat::DOLBY_NO, 2,_l("3/0 - 3 front"), 2, 3, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER , TsampleFormat::DOLBY_NO, 3,_l("2/1 - surround"), 3, 3, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_BACK_CENTER , TsampleFormat::DOLBY_NO, 4,_l("3/1 - surround"), 4, 4, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER|SPEAKER_BACK_CENTER , TsampleFormat::DOLBY_NO, 5,_l("2/2 - quadro"), 5, 4, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_BACK_LEFT|SPEAKER_BACK_RIGHT , TsampleFormat::DOLBY_NO, 6,_l("3/2 - 5 channels"), 6, 5, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER|SPEAKER_BACK_LEFT|SPEAKER_BACK_RIGHT , TsampleFormat::DOLBY_NO, 7,_l("1/0+LFE 1.1 mono"), 0, 2, SPEAKER_FRONT_CENTER |SPEAKER_LOW_FREQUENCY , TsampleFormat::DOLBY_NO, 8,_l("2/0+LFE 2.1 stereo"), 1, 3, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT |SPEAKER_LOW_FREQUENCY , TsampleFormat::DOLBY_NO, 9,_l("3/0+LFE 3.1 front"), 2, 4, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER |SPEAKER_LOW_FREQUENCY , TsampleFormat::DOLBY_NO, 10,_l("2/1+LFE 3.1 surround"), 3, 4, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_BACK_CENTER |SPEAKER_LOW_FREQUENCY , TsampleFormat::DOLBY_NO, 11,_l("3/1+LFE 4.1 surround"), 4, 5, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER|SPEAKER_BACK_CENTER |SPEAKER_LOW_FREQUENCY , TsampleFormat::DOLBY_NO, 12,_l("2/2+LFE 4.1 quadro"), 5, 5, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_BACK_LEFT|SPEAKER_BACK_RIGHT |SPEAKER_LOW_FREQUENCY , TsampleFormat::DOLBY_NO, 13,_l("3/2+LFE 5.1 channels"), 6, 6, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER|SPEAKER_BACK_LEFT|SPEAKER_BACK_RIGHT|SPEAKER_LOW_FREQUENCY , TsampleFormat::DOLBY_NO, 14,_l("Dolby Surround/ProLogic"), 14, 2, 0,TsampleFormat::DOLBY_SURROUND , 15,_l("Dolby ProLogic II"), 15, 2, 0,TsampleFormat::DOLBY_PROLOGICII, 16,_l("same as input"), -1, 0, 0, TsampleFormat::DOLBY_NO, 17,_l("headphone virtual spatialization"), -1, 2, 0, TsampleFormat::DOLBY_NO, 18,_l("Head-related transfer function (HRTF)"),-1, 2, 0, TsampleFormat::DOLBY_NO, 19,_l("Dolby Surround/ProLogic+LFE"), 14, 3, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_LOW_FREQUENCY,TsampleFormat::DOLBY_SURROUND , 20,_l("Dolby ProLogic II+LFE"), 15, 3, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_LOW_FREQUENCY,TsampleFormat::DOLBY_PROLOGICII, NULL};const TfilterIDFF TmixerSettings::idffs={ /*name*/ _l("Mixer"), /*id*/ IDFF_filterMixer, /*is*/ IDFF_isMixer, /*order*/ IDFF_orderMixer, /*show*/ IDFF_showMixer, /*full*/ 0, /*half*/ 0, /*dlgId*/ IDD_MIXER,};TmixerSettings::TmixerSettings(TintStrColl *Icoll,TfilterIDFFs *filters):TfilterSettingsAudio(sizeof(*this),Icoll,filters,&idffs){ static const TintOptionT<TmixerSettings> iopts[]= { IDFF_isMixer ,&TmixerSettings::is ,0,0,_l(""),1, _l("isMixer"),0, IDFF_showMixer ,&TmixerSettings::show ,0,0,_l(""),1, _l("showMixer"),1, IDFF_orderMixer ,&TmixerSettings::order ,1,1,_l(""),1, _l("orderMixer"),0, IDFF_mixerOut ,&TmixerSettings::out ,0,20,_l(""),1, _l("mixerOut"),14, IDFF_normalizeMatrix ,&TmixerSettings::normalizeMatrix,0,0,_l(""),1, _l("mixerNormalizeMatrix"),1, IDFF_mixerExpandStereo,&TmixerSettings::expandStereo ,0,0,_l(""),1, _l("mixerExpandStereo"),1, IDFF_mixerVoiceControl,&TmixerSettings::voiceControl ,0,0,_l(""),1, _l("mixerVoiceControl"),1, IDFF_customMatrix ,&TmixerSettings::customMatrix ,0,0,_l(""),1, _l("mixerCustomMatrix"),0, IDFF_mixerMatrix00 ,&TmixerSettings::matrix00 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix00"),100000, IDFF_mixerMatrix01 ,&TmixerSettings::matrix01 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix02"),0, IDFF_mixerMatrix02 ,&TmixerSettings::matrix02 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix01"),0, IDFF_mixerMatrix03 ,&TmixerSettings::matrix03 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix05"),0, IDFF_mixerMatrix04 ,&TmixerSettings::matrix04 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix03"),0, IDFF_mixerMatrix05 ,&TmixerSettings::matrix05 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix04"),0, IDFF_mixerMatrix10 ,&TmixerSettings::matrix10 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix20"),0, IDFF_mixerMatrix11 ,&TmixerSettings::matrix11 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix22"),100000, IDFF_mixerMatrix12 ,&TmixerSettings::matrix12 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix21"),0, IDFF_mixerMatrix13 ,&TmixerSettings::matrix13 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix25"),0, IDFF_mixerMatrix14 ,&TmixerSettings::matrix14 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix23"),0, IDFF_mixerMatrix15 ,&TmixerSettings::matrix15 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix24"),0, IDFF_mixerMatrix20 ,&TmixerSettings::matrix20 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix10"),0, IDFF_mixerMatrix21 ,&TmixerSettings::matrix21 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix12"),0, IDFF_mixerMatrix22 ,&TmixerSettings::matrix22 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix11"),100000, IDFF_mixerMatrix23 ,&TmixerSettings::matrix23 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix15"),0, IDFF_mixerMatrix24 ,&TmixerSettings::matrix24 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix13"),0, IDFF_mixerMatrix25 ,&TmixerSettings::matrix25 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix14"),0, IDFF_mixerMatrix30 ,&TmixerSettings::matrix30 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix50"),0, IDFF_mixerMatrix31 ,&TmixerSettings::matrix31 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix52"),0, IDFF_mixerMatrix32 ,&TmixerSettings::matrix32 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix51"),0, IDFF_mixerMatrix33 ,&TmixerSettings::matrix33 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix55"),100000, IDFF_mixerMatrix34 ,&TmixerSettings::matrix34 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix53"),0, IDFF_mixerMatrix35 ,&TmixerSettings::matrix35 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix54"),0, IDFF_mixerMatrix40 ,&TmixerSettings::matrix40 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix30"),0, IDFF_mixerMatrix41 ,&TmixerSettings::matrix41 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix32"),0, IDFF_mixerMatrix42 ,&TmixerSettings::matrix42 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix31"),0, IDFF_mixerMatrix43 ,&TmixerSettings::matrix43 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix35"),0, IDFF_mixerMatrix44 ,&TmixerSettings::matrix44 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix33"),100000, IDFF_mixerMatrix45 ,&TmixerSettings::matrix45 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix34"),0, IDFF_mixerMatrix50 ,&TmixerSettings::matrix50 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix40"),0, IDFF_mixerMatrix51 ,&TmixerSettings::matrix51 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix42"),0, IDFF_mixerMatrix52 ,&TmixerSettings::matrix52 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix41"),0, IDFF_mixerMatrix53 ,&TmixerSettings::matrix53 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix45"),0, IDFF_mixerMatrix54 ,&TmixerSettings::matrix54 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix43"),0, IDFF_mixerMatrix55 ,&TmixerSettings::matrix55 ,-4*100000,4*100000,_l(""),1, _l("mixerMatrix44"),100000, IDFF_mixerClev ,&TmixerSettings::clev ,0,3200,_l(""),1, _l("mixerClev"),100, IDFF_mixerSlev ,&TmixerSettings::slev ,0,3200,_l(""),1, _l("mixerSlev"),100, IDFF_mixerLFElev ,&TmixerSettings::lfelev ,0,3200,_l(""),1, _l("mixerLFElev"),100, IDFF_headphone_dim ,&TmixerSettings::headphone_dim ,0,100,_l(""),1, _l("headphone_dim"),10, 0 }; addOptions(iopts); static const TcreateParamList2<TchConfig> listMixerOut(chConfigs,&TchConfig::name);setParamList(IDFF_mixerOut,&listMixerOut);}void TmixerSettings::createFilters(size_t filtersorder,Tfilters *filters,TfilterQueue &queue) const{ idffOnChange(idffs,filters,queue.temporary); if (is && show) { if (!queue.temporary) setOnChange(IDFF_mixerOut,filters,&Tfilters::onQueueChange); switch (out) { case 17:queueFilter<TaudioFilterHeadphone>(filtersorder,filters,queue);break; case 18:queueFilter<TaudioFilterHeadphone2>(filtersorder,filters,queue);break; default:queueFilter<TaudioFilterMixer>(filtersorder,filters,queue);break; } } }void TmixerSettings::createPages(TffdshowPageDec *parent) const{ parent->addFilterPage<TmixerPage>(&idffs);}const int* TmixerSettings::getResets(unsigned int pageId){ static const int idResets[]={ IDFF_mixerOut, IDFF_normalizeMatrix, IDFF_mixerExpandStereo,IDFF_mixerVoiceControl, IDFF_mixerClev,IDFF_mixerSlev,IDFF_mixerLFElev, IDFF_customMatrix, IDFF_mixerMatrix00,IDFF_mixerMatrix01,IDFF_mixerMatrix02,IDFF_mixerMatrix03,IDFF_mixerMatrix04,IDFF_mixerMatrix05,IDFF_mixerMatrix10,IDFF_mixerMatrix11,IDFF_mixerMatrix12,IDFF_mixerMatrix13,IDFF_mixerMatrix14,IDFF_mixerMatrix15,IDFF_mixerMatrix20,IDFF_mixerMatrix21,IDFF_mixerMatrix22,IDFF_mixerMatrix23,IDFF_mixerMatrix24,IDFF_mixerMatrix25,IDFF_mixerMatrix30,IDFF_mixerMatrix31,IDFF_mixerMatrix32,IDFF_mixerMatrix33,IDFF_mixerMatrix34,IDFF_mixerMatrix35,IDFF_mixerMatrix40,IDFF_mixerMatrix41,IDFF_mixerMatrix42,IDFF_mixerMatrix43,IDFF_mixerMatrix44,IDFF_mixerMatrix45,IDFF_mixerMatrix50,IDFF_mixerMatrix51,IDFF_mixerMatrix52,IDFF_mixerMatrix53,IDFF_mixerMatrix54,IDFF_mixerMatrix55, IDFF_headphone_dim, 0}; return idResets;}bool TmixerSettings::getTip(unsigned int pageId,char_t *tipS,size_t len){ tsnprintf(tipS,len,_l("%s%s%s%s%s"),chConfigs[out].name,(out!=17 && out!=18 && customMatrix)?_l("\ncustom matrix"):_l(""),(out!=17 && normalizeMatrix)?_l("\nnormalize matrix"):_l(""),(out!=17 && expandStereo && !customMatrix)?_l("\nexpand stereo"):_l(""),(out!=17 && voiceControl && !customMatrix)?_l("\nvoice control"):_l("")); return true;}void TmixerSettings::setFormatOut(TsampleFormat &fmt) const{ if (out!=16) fmt.setChannels(chConfigs[out].nchannels,chConfigs[out].channelmask);} void TmixerSettings::setFormatOut(TsampleFormat &outfmt,const TsampleFormat &infmt) const{ outfmt.setChannels(out==16?infmt.nchannels:chConfigs[out].nchannels,out==16?infmt.channelmask:chConfigs[out].channelmask); outfmt.dolby=out==16?infmt.dolby:chConfigs[out].dolby;}//===============================/* for (int i=0;i<6;i++) for (int j=0;j<6;j++) { char pomS[40]; static const int o[6]={0,2,1,5,3,4}; sprintf(pomS,"mixerMatrix%i%i",o[i],o[j]); t._REG_OP_N(pomS,matrix[i][j],i==j?100000:0); }*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?