| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Wanderer Новенький
Зарегистрирован: 23.04.2007 Сообщения: 4
|
Добавлено: Пн Апр 23, 2007 12:36 am Заголовок сообщения: Windows Media Player Rendering Plug-ins |
|
|
Создал на основе темплейта, поставляемого с Windows Media Player 10 SDK проект, при регистрации оного указываю
| Код: | DMO_PARTIAL_MEDIATYPE mt = { 0 };
mt.type = MEDIATYPE_Video;
mt.subtype = WMMEDIASUBTYPE_WMV2;
|
регистрирую, и пытаюсь воспроизвести поставляемый с сдк seattle.wmv.
Плеер плагином пользоваться даже и не думает, в чем может быть загвоздка?
П.С.: проверял для WMP9 и WMP11. |
|
| Вернуться к началу |
|
 |
Валентин Вовк Участник
Зарегистрирован: 30.10.2006 Сообщения: 21
|
Добавлено: Вт Апр 24, 2007 9:25 pm Заголовок сообщения: |
|
|
Интересно, не видел никогда таких шаблонов никогда.
Если не секрет, что получается на выходе?
Могу только предположить, что это *.ax или *.dll; но нужно будет зарегистрировать через regsvr32. Возможно, это DMO? Или ошибаюсь? |
|
| Вернуться к началу |
|
 |
Wanderer Новенький
Зарегистрирован: 23.04.2007 Сообщения: 4
|
Добавлено: Ср Апр 25, 2007 10:30 am Заголовок сообщения: |
|
|
речь идет о http://www.windowsfordevices.com/products/PD3786260177.html
после установки sdk кроме прочих прелестей имеем студийные темплейты, для 6й студии и для 2003(выше не проверял, но наверное тоже есть)
На выходе получается таки dll, которая таки содержит
STDAPI DllRegisterServer(void) и про regsvr32 както сразу догадался,
теплейт даже предусматривает постбилдстеп такой. Насчет DMO - таки да это DMO.
| Цитата: | | Windows Media Player rendering plug-ins decode (if necessary) and render custom data contained in a Windows Media format stream. Rendering plug-ins are DirectX Media Objects (DMO) that connect to the Player through COM interfaces. |
Собственно регистрация выглядит вот так:
| Код: | CComPtr<IWMPMediaPluginRegistrar> spRegistrar;
HRESULT hr;
// Create the registration object
hr = spRegistrar.CoCreateInstance(CLSID_WMPMediaPluginRegistrar, NULL, CLSCTX_INPROC_SERVER);
if ( FAILED( hr ) )
{
return hr;
}
// Load friendly name and description strings
CComBSTR bstrFriendlyName;
CComBSTR bstrDescription;
bstrFriendlyName.LoadString(IDS_FRIENDLYNAME);
bstrDescription.LoadString(IDS_DESCRIPTION);
// Describe the type of data handled by the plug-in
DMO_PARTIAL_MEDIATYPE mt = { 0 };
mt.type = MEDIATYPE_WMPPLUGIN1;
mt.subtype = MEDIASUBTYPE_NULL;
//;
// Register the plug-in with WMP
hr = spRegistrar->WMPRegisterPlayerPlugin(
bstrFriendlyName, // friendly name (for menus, etc)
bstrDescription, // description (for Tools->Options->Plug-ins)
NULL, // path to app that uninstalls the plug-in
1, // DirectShow priority for this plug-in
WMP_PLUGINTYPE_RENDERING, // Plug-in type
CLSID_Wmpplugin1,// Class ID of plug-in
1, // No. media types supported by plug-in
&mt); // Array of media types supported by plug-in
if ( FAILED( hr ) )
{
return hr;
}
// registers object
return _Module.RegisterServer(); |
Причем для проигрывания файла поставляемого вместе с сдк (rendering.asf) необходимо указать
DEFINE_GUID(MEDIATYPE_WMPPLUGIN1, 0xc1ccdf59, 0x6924, 0x4b96, 0x82, 0x47, 0xdb, 0xb0, 0xea, 0xe5, 0xb6, 0x7);
Это совсем не секрет, информация доступна из справочного материала сдк.
Если придебажится к медиаплееру после вышеописанных магических действий и поставить брекпоинт в конструкторе плагина, например, можно наблюдать, что он (конструктор) таки вызывается.
Если же совершить магические действия описанные в первом посте этой темы - то конструктор наоборот не вызывается - из чего я зделал вывод, что плеер плагином пользоваться отказывается. Вопрос остается открытым - почему?(( |
|
| Вернуться к началу |
|
 |
|
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|
|
|