![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: нет Всего: 11 |
Ничего не понимаю в этом DirectShow! Первоначально думал, что всё просто и логично, но в конце концов начинает казаться, что в системе царит полнейший хаос и неразбериха.
В общем, вывод телевизионной картинки и звука я освоил. Теперь пытаюсь создать приложение, которое выводит на экран субтитры CC. Создаю программно граф из фильтров, сохраняю его в файл, а потом смотрю, что получается в программе GraphEdt. Иногда пытаюсь что-то подредактировать, чтобы понять происходящее. В мануале написано http://msdn.microsoft.com/en-us/library/dd...28VS.85%29.aspx что CC Decoder надо подключить к выходу VBI устройства захвата через фильтр непонятного назначения Tee/Sink-to-Sink. Возникают следующие вопросы: 1) Как найти нужный фильтр в списке? По русски есть два фильтра "Преобразователь Tee/Sink-to-sink" в группах "Устройства расщепления WDM потока" и "Преобразователи связи WDM потока". Это один и тот же фильтр или два разных с одним названием? В мануале написано, что фильтр "appears in the "WDM Streaming Tee/Splitter Devices" filter category (AM_KSCATEGORY_SPLITTER)". Видимо, правильный перевод "расщепление", но как в этом убедиться? 2) Как идентифицировать фильтр, который уже присутствует на графе? Программно я кладу фильтр из категории AM_KSCATEGORY_SPLITTER. Как определить его в списке фильтров GraphEdt? 3) У меня не получается соединить вручную фильтры из GraphEdt, почему? 4) Программно попытка соединить фильтры оказывается успешной (ошибок не возникает). Но если я открываю сохранённый файл, то там фильтры Tee и CC оказываются разъединены. Причём, если я открываю файл в какой-то другой момент, то фильтры могут быть и соединены, причём у фильтра Tee образуется второй выход, который и соединяется с CC Decoder. В общем, либо я чего-то крупно не понимаю, либо мелкософты откровенно наваяли чего ни попадя. Второе нежелательно, ибо как тогда жить? |
|||
|
||||
| AndreySol |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Для однозначной идентификации фильтров используется GUID - глобальный уникальный идентификатор. Если Вы в окне добавления фильтров GraphEdit'а щелкните название нужного фильтра, то внизу в окошке "Filter Moniker" вы увидите два GUID'а, взятые в скобки и разделенные слешем - первый это GUID категории фильтра, а второй - это GUID самого фильтра. Вот пример как добавить фильтр в граф, используя его GUID:
с аргументами ф-ции я думаю и так все понятно |
||||
|
|||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: нет Всего: 11 |
А если я открыл граф, созданный и записанный в другой программе? На графе уже есть фильтры. Как посмотреть ИХ гуиды и т.п.?
|
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Ну проще всего, открыть там-же в GraphEdit'е окно добавления фильтра в граф и поискать там требуемые фильтры по названиям.
|
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: нет Всего: 11 |
Невозможно! При добавлении фильтра на граф я могу дать ему произвольное название, которое может не совпадать с названием в каталоге. Я уж не говорю о том, что идентифицировать по названиям объекты, у которых нет названий, некорректно. |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Ну тогда никак
|
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |