📄 amr_reg.cpp
字号:
//-----------------------------------------------------------------------------
//
// AMR Demuxer
//
// Author : Igor Janos
//
//-----------------------------------------------------------------------------
#include "stdafx.h"
#pragma warning(disable: 4996)
//-----------------------------------------------------------------------------
//
// Registry Information
//
//-----------------------------------------------------------------------------
const AMOVIESETUP_MEDIATYPE sudPinTypes[] =
{
{
&MEDIATYPE_Stream,
&MEDIASUBTYPE_None
},
{
&MEDIATYPE_Stream,
&MEDIASUBTYPE_AMR
},
{
&MEDIATYPE_Audio,
&MEDIASUBTYPE_AMR
}
};
const AMOVIESETUP_PIN psudPins[] =
{
{
L"Input",
FALSE, // bRendered
FALSE, // bOutput
FALSE, // bZero
FALSE, // bMany
&CLSID_NULL, // clsConnectsToFilter
NULL, // strConnectsToPin
2, // nTypes
&sudPinTypes[0] // lpTypes
}
,
{
L"Output", // strName
FALSE, // bRendered
TRUE, // bOutput
FALSE, // bZero
TRUE, // bMany
&CLSID_NULL, // clsConnectsToFilter
NULL, // strConnectsToPin
1, // nTypes
&sudPinTypes[2] // lpTypes
}
};
const AMOVIESETUP_FILTER sudAMRDemuxer =
{
&CLSID_MonogramAMRDemux, // clsID
L"MONOGRAM AMR Splitter", // strName
MERIT_NORMAL, // dwMerit
2, // nPins
psudPins // lpPin
};
CFactoryTemplate g_Templates[]=
{
{
L"MONOGRAM AMR Splitter",
&CLSID_MonogramAMRDemux,
CAMRDemux::CreateInstance,
NULL,
&sudAMRDemuxer
},
{
L"MONOGRAM AMR Splitter",
&CLSID_MonogramAMRDemuxPage,
CAMRPropertyPage::CreateInstance
}
};
int g_cTemplates = sizeof(g_Templates)/sizeof(g_Templates[0]);
//-----------------------------------------------------------------------------
//
// DLL Entry Points
//
//-----------------------------------------------------------------------------
HRESULT Register_AMR_Types()
{
CRegKey r;
if (r.Create(HKEY_CLASSES_ROOT, _T("Media Type\\{E436EB83-524F-11CE-9F53-0020AF0BA770}\\{726D6173-0000-0010-8000-00AA00389B71}")) != ERROR_SUCCESS) {
return E_FAIL;
}
// write the string
r.SetStringValue(_T("0"), _T("0,6,,2321414D520A"));
r.SetStringValue(_T("Source Filter"), _T("{E436EBB5-524F-11CE-9F53-0020AF0BA770}")); // file source async
r.Close();
return NOERROR;
}
HRESULT Unregister_AMR_Types()
{
CRegKey r;
if (r.Create(HKEY_CLASSES_ROOT, _T("Media Type\\{E436EB83-524F-11CE-9F53-0020AF0BA770}")) == ERROR_SUCCESS) {
r.DeleteSubKey(_T("{726D6173-0000-0010-8000-00AA00389B71}"));
r.Close();
}
return NOERROR;
}
STDAPI DllRegisterServer()
{
HRESULT hr = Register_AMR_Types();
if (FAILED(hr)) return hr;
return AMovieDllRegisterServer2(TRUE);
}
STDAPI DllUnregisterServer()
{
Unregister_AMR_Types();
return AMovieDllRegisterServer2(FALSE);
}
extern "C" BOOL WINAPI _DllMainCRTStartup(HINSTANCE, ULONG, LPVOID);
extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID);
BOOL APIENTRY AMRFilterDllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
_DllMainCRTStartup((HINSTANCE)hModule, dwReason, lpReserved);
return DllEntryPoint((HINSTANCE)(hModule), dwReason, lpReserved);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -