tffdecoder_reg.cpp.svn-base
来自「ffshow源码」· SVN-BASE 代码 · 共 626 行 · 第 1/2 页
SVN-BASE
626 行
{ { L"Output", // String pin name FALSE, // Is it rendered TRUE, // Is it an output FALSE, // Allowed none FALSE, // Allowed many &CLSID_NULL, // Connects to filter NULL, // Connects to pin sizeof(outputMediaTypes) / sizeof(AMOVIESETUP_MEDIATYPE), // Number of types outputMediaTypes // The pin details }, { L"Input", // String pin name FALSE, // Is it rendered FALSE, // Is it an output FALSE, // Allowed none FALSE, // Allowed many &CLSID_NULL, // Connects to filter NULL, // Connects to pin sizeof(inputMediaTypes) / sizeof(AMOVIESETUP_MEDIATYPE), // Number of types inputMediaTypes // The pin details }};const AMOVIESETUP_PIN TffdshowDecAudioRaw::pins[]={ { L"Output", // String pin name FALSE, // Is it rendered TRUE, // Is it an output FALSE, // Allowed none FALSE, // Allowed many &CLSID_NULL, // Connects to filter NULL, // Connects to pin sizeof(outputMediaTypes) / sizeof(AMOVIESETUP_MEDIATYPE), // Number of types outputMediaTypes // The pin details }, { L"Input", // String pin name FALSE, // Is it rendered FALSE, // Is it an output FALSE, // Allowed none FALSE, // Allowed many &CLSID_NULL, // Connects to filter NULL, // Connects to pin sizeof(inputMediaTypes) / sizeof(AMOVIESETUP_MEDIATYPE), // Number of types inputMediaTypes // The pin details }};const AMOVIESETUP_PIN TffdshowEnc::pins[]={ { L"Input", // String pin name FALSE, // Is it rendered FALSE, // Is it an output FALSE, // Allowed none FALSE, // Allowed many &CLSID_NULL, // Connects to filter NULL, // Connects to pin sizeof(inputMediaTypes) / sizeof(AMOVIESETUP_MEDIATYPE), // Number of types inputMediaTypes // The pin details }, { L"Output", // String pin name FALSE, // Is it rendered TRUE, // Is it an output FALSE, // Allowed none FALSE, // Allowed many &CLSID_NULL, // Connects to filter NULL, // Connects to pin sizeof(outputMediaTypes) / sizeof(AMOVIESETUP_MEDIATYPE), // Number of types outputMediaTypes // The pin details }};const DWORD TffdshowDecVideo::defaultMerit=0xff800001; // a hack to be always the firstconst AMOVIESETUP_FILTER TffdshowDecVideo::filter={ &CLSID_FFDSHOW, // Filter CLSID FFDSHOW_NAME_L, // Filter name defaultMerit, sizeof(pins)/sizeof(AMOVIESETUP_PIN), // Number of pins pins // Pin details};const DWORD TffdshowDecVideoRaw::defaultMerit=MERIT_DO_NOT_USE;const AMOVIESETUP_FILTER TffdshowDecVideoRaw::filter={ &CLSID_FFDSHOWRAW, // Filter CLSID FFDSHOWRAW_NAME_L, // Filter name defaultMerit, sizeof(pins)/sizeof(AMOVIESETUP_PIN), // Number of pins pins // Pin details};const DWORD TffdshowDecAudio::defaultMerit=0x40000000-1; // One less than ac3filterconst AMOVIESETUP_FILTER TffdshowDecAudio::filter={ &CLSID_FFDSHOWAUDIO, // Filter CLSID FFDSHOWAUDIO_NAME_L, // Filter name defaultMerit, sizeof(pins)/sizeof(AMOVIESETUP_PIN), // Number of pins pins // Pin details};const DWORD TffdshowDecAudioRaw::defaultMerit=MERIT_DO_NOT_USE;const AMOVIESETUP_FILTER TffdshowDecAudioRaw::filter={ &CLSID_FFDSHOWAUDIORAW, // Filter CLSID FFDSHOWAUDIORAW_NAME_L, // Filter name defaultMerit, sizeof(pins)/sizeof(AMOVIESETUP_PIN), // Number of pins pins // Pin details};const DWORD TffdshowEnc::defaultMerit=MERIT_SW_COMPRESSOR;// List of class IDs and creator functions for the class factory. This// provides the link between the OLE entry point in the DLL and an object// being created. The class factory will call the static CreateInstanceCFactoryTemplate g_Templates[] ={ { FFDSHOW_NAME_L, &CLSID_FFDSHOW, TffdshowDecVideo::CreateInstance, NULL, &TffdshowDecVideo::filter }, { FFDSHOWRAW_NAME_L, &CLSID_FFDSHOWRAW, TffdshowDecVideoRaw::CreateInstance, NULL, &TffdshowDecVideoRaw::filter }, { FFDSHOW_NAME_L L" conf", &CLSID_TFFDSHOWPAGE, TffdshowPageDecVideo::CreateInstance }, { FFDSHOWRAW_NAME_L L" conf", &CLSID_TFFDSHOWPAGERAW, TffdshowPageDecVideoRaw::CreateInstance }, { FFDSHOWRAW_NAME_L L" conf", &CLSID_TFFDSHOWPAGEVFW, TffdshowPageDecVideoVFW::CreateInstance }, { FFDSHOW_NAME_L L" ffproc", &CLSID_TFFPROC, TffProcVideo::CreateInstance }, { FFDSHOWRAW_NAME_L L" ffproc" L" conf", &CLSID_TFFDSHOWPAGEPROC, TffdshowPageDecVideoProc::CreateInstance }, { FFDSHOWAUDIO_NAME_L, &CLSID_FFDSHOWAUDIO, TffdshowDecAudio::CreateInstance, NULL, &TffdshowDecAudio::filter }, { FFDSHOWAUDIORAW_NAME_L, &CLSID_FFDSHOWAUDIORAW, TffdshowDecAudioRaw::CreateInstance, NULL, &TffdshowDecAudioRaw::filter }, { FFDSHOWAUDIO_NAME_L L" conf", &CLSID_TFFDSHOWAUDIOPAGE, TffdshowPageDecAudio::CreateInstance }, { FFDSHOWAUDIORAW_NAME_L L" conf", &CLSID_TFFDSHOWAUDIORAWPAGE, TffdshowPageDecAudioRaw::CreateInstance }, { FFDSHOWAUDIO_NAME_L L" ffproc", &CLSID_TFFPROCAUDIO, TffProcAudio::CreateInstance }, { FFDSHOWENC_DESC_L, &CLSID_FFDSHOWENC, TffdshowEncDshow::CreateInstance, //NULL, //&TffdshowEnc::filter }, { FFDSHOWENC_DESC_L L" vfw", &CLSID_FFDSHOWENCVFW, TffdshowEncVFW::CreateInstance, //NULL, //&TffdshowEnc::filter }, { FFDSHOWENC_DESC_L L" conf", &CLSID_TFFDSHOWENCPAGE, TffdshowPageEnc::CreateInstance }, { FFDSHOWENC_DESC_L L" conf", &CLSID_TFFDSHOWENCPAGEVFW, TffdshowPageEncVFW::CreateInstance }, { FFDSHOWVFW_DESC_L, &CLSID_FFVFW, Tffvfw::CreateInstance }, { FFDSHOWACM_DESC_L L" creator", &CLSID_FFACM2CREATOR, TacmCreator::CreateInstance }, { FFCOLORSPACECONVERT_NAME_L, &CLSID_FFCOLORSPACECONVERT, TffColorspaceConvert::CreateInstance }, // This is actually not an OLE object, just a DwString initialization stub to prevent a sEmptyRep memory leak { L"DwString::GlobalInitialization", &CLSID_DWSTRINGA, DwString<char>::CreateInstance, DwString<char>::GlobalInitialization, NULL }, { L"DwString::GlobalInitializationW", &CLSID_DWSTRINGW, DwString<wchar_t>::CreateInstance, DwString<wchar_t>::GlobalInitialization, NULL }};int g_cTemplates=sizeof(g_Templates)/sizeof(CFactoryTemplate);static void remove00000000(void){ HKEY hKey=NULL; RegOpenKeyEx(HKEY_CLASSES_ROOT,_l("\\CLSID\\{00000000-0000-0000-0000-000000000000}\\InprocServer32"),0,KEY_READ,&hKey); if (hKey) { char_t dll[MAX_PATH]; DWORD size=MAX_PATH; LONG res=RegQueryValueEx(hKey,_l(""),0,0,(unsigned char*)dll,&size); RegCloseKey(hKey); if (res==ERROR_SUCCESS && stristr(dll,_l("ffdshow.ax"))) SHDeleteKey(HKEY_CLASSES_ROOT,_l("\\CLSID\\{00000000-0000-0000-0000-000000000000}")); }}STDAPI DllRegisterServer(){ remove00000000(); DWORD merit_ffdshowDecVideo=TffdshowDecVideo::defaultMerit;getFilterMerit(CLSID_FFDSHOW,&merit_ffdshowDecVideo); DWORD merit_ffdshowDecAudio=TffdshowDecAudio::defaultMerit;getFilterMerit(CLSID_FFDSHOWAUDIO,&merit_ffdshowDecAudio); HRESULT hr=AMovieDllRegisterServer2(TRUE); if (FAILED(hr)) return hr; setFilterMerit(CLSID_FFDSHOW,merit_ffdshowDecVideo); setFilterMerit(CLSID_FFDSHOWAUDIO,merit_ffdshowDecAudio); //encoder IFilterMapper2 *pFM2=NULL; if (SUCCEEDED(CoCreateInstance(CLSID_FilterMapper2,NULL,CLSCTX_INPROC_SERVER,IID_IFilterMapper2,(void **)&pFM2))) { REGFILTER2 rf2FilterReg; rf2FilterReg.dwVersion=1; rf2FilterReg.dwMerit=TffdshowEnc::defaultMerit; rf2FilterReg.cPins=2; rf2FilterReg.rgPins=TffdshowEnc::pins; hr=pFM2->RegisterFilter(CLSID_FFDSHOWENC, FFDSHOWENC_DESC_L, NULL, &CLSID_VideoCompressorCategory, FFDSHOWENC_DESC_L, &rf2FilterReg ); pFM2->Release(); } return hr;}STDAPI DllUnregisterServer(){ HRESULT hr=AMovieDllRegisterServer2(FALSE); if (FAILED(hr))return hr; IFilterMapper2 *pFM2=NULL; hr=CoCreateInstance(CLSID_FilterMapper2,NULL,CLSCTX_INPROC_SERVER,IID_IFilterMapper2,(void **)&pFM2); if (FAILED(hr)) return hr; hr=pFM2->UnregisterFilter(&CLSID_VideoCompressorCategory,FFDSHOWENC_DESC_L,CLSID_FFDSHOWENC); pFM2->Release(); return hr;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?