обработка и воспроизведение видео
От: vemind  
Дата: 08.11.06 09:27
Оценка:
Господа, подскажите пожалуйста начинающему Win-программеру, недавно возникла необходимость визуализировать разработки встроеных систем для масс, суть задачи следующая: необходимо получить приложение, которое получает на входе видео-файл(допустим .avi) и выводит его в первоначальном виде в своем окне, в этом же окне выходится копия этого видео с теми же параметрами, только подвергшееся обработке внутренним фильтром и они синхронно проигрываются, чтобы было видно какой из вариантов лучше. Фильтр уже готов, написан под RTOS на С++, но его портирование не составит труда, как лучше действовать в соответствии с современными тенденциями, что лучше использовать? просматривая разлиные топики пришел к выводу, что наилучший вариант — это directshow, но почему его тогда выкинули из directX за непригодность(или это только для игр?). В общем хочу получить подсказку, какими технологиями ользоваться и где смотреть? среда VS, язык С++ без альтернатив.
Re: обработка и воспроизведение видео
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 08.11.06 12:42
Оценка:
На данный момент, как я понимаю, лучший вариант действительно directshow.
Все необходимое для Вашей задачи есть в DirectX 9 SDK.
Re[2]: обработка и воспроизведение видео
От: vemind  
Дата: 08.11.06 15:34
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>На данный момент, как я понимаю, лучший вариант действительно directshow.

DM>Все необходимое для Вашей задачи есть в DirectX 9
Четстно сказать в directX sdk я не нашел того что искал, поставил directshow sdk, там убогий пример того что мне в принципе нужно имеется, с горем пополам как не очень опытный VS пользователь скомпилировал playwnd, но не могу разобраться куда мне вставить свой фильтр, его можно представить как функцию int filtr(&входной кадр, &выходной кадр), как я понимаю в граф DS мне его в таком состоянии не прикрутить, выхода у меня два, или писать фильтр и включать его в граф или перед выводом изображения вытащить кадр, обработать его и положить на вывод, второй по некоторым причинам гораздо предпочтительнее. я догадываюсь что средства воспроизведения существуют и в directX sdk, только ничего конкретного не нашел, в msdn тоже ничего конкретного на глаза не попадалось. подскажите где смотреть? или может быть вообще подход пересмотреть.
Re: обработка и воспроизведение видео
От: PVA  
Дата: 08.11.06 16:19
Оценка:
Здравствуйте, vemind,

не совсем понятно что вы имеете ввиду под RTOS и какого рода фильтр уже написан.
Для решения ващей задачи необходимо использовать какой-нибудь фильтр-демультиплексор и соответсвенно два рендерера.

Поиграйтесь c graphedt.exe из поставки мс сдк.
newbie
Re[3]: обработка и воспроизведение видео
От: Денис Федотов Россия  
Дата: 08.11.06 16:35
Оценка:
Здравствуйте, vemind, Вы писали:

V>Здравствуйте, D. Mon, Вы писали:


DM>>На данный момент, как я понимаю, лучший вариант действительно directshow.

DM>>Все необходимое для Вашей задачи есть в DirectX 9
V>Четстно сказать в directX sdk я не нашел того что искал, поставил directshow sdk, там убогий пример того что мне в принципе нужно имеется, с горем пополам как не очень опытный VS пользователь скомпилировал playwnd, но не могу разобраться куда мне вставить свой фильтр, его можно представить как функцию int filtr(&входной кадр, &выходной кадр), как я понимаю в граф DS мне его в таком состоянии не прикрутить, выхода у меня два, или писать фильтр и включать его в граф или перед выводом изображения вытащить кадр, обработать его и положить на вывод, второй по некоторым причинам гораздо предпочтительнее. я догадываюсь что средства воспроизведения существуют и в directX sdk, только ничего конкретного не нашел, в msdn тоже ничего конкретного на глаза не попадалось. подскажите где смотреть? или может быть вообще подход пересмотреть.

DirectShow это как раз то что тебе нужно. Для того, чтобы реализовать твою задачу ( насколько я ее понял ) тебе нужно:

1) Хоть немного почитать DirectShow SDK. Без базовах знаний тебе не обойтись.
2) Создать свой Transform Filter ( в DirectShow ), в котором реализовать твое преобразование изображения.
Ты как раз получишь функцию Transform( <указатель на кадр> ){ здесь делаешь с кадром все что угодно; }
3) Строишь граф ручками ( ну или почти ручками )
Смотришь: AddSourceFilter ( исходный файл), AddFilter ( твой фильтр и "Infinite Pin Tee Filter" ),
Render ( для того, что бы все это безобразие побыстрее отрендарить ), ну так по-мелочи кое-что.
4) Для развлетвления ( на 2 потока из 1-го ) используй "Infinite Pin Tee Filter"
( 1-ый без преобразования, 2-ой с преобразованием )
5) Наслаждаешься полученным эффектом

Как расположить видеоокна на своем приложение см. IVideoWindow

Удачи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.