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 + -
显示快捷键?