Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

DSPack подключение De-Interlace фильтра   Найти похожие ветки 

 
diman_1978 ©   (2007-01-22 19:32) [0]

с помощью пакета DSPack захватываю видеопоток и через SampleGrabber получаю изображения. Как только размер картинки по вертикали превышает 288 точек то появляется так назваемая "расческа", смещение одного полукадра относительно другого на 20 мс.
Знаю что это лечиться подключением фильтра дейнтерлейсинга, но не знаю как его подключить в DSPack. Может кто знает как это сделать?


 
Дмитрий Белькевич ©   (2007-01-23 02:09) [1]

DeInt: TFilCatNode;

---------

 FSysDev2 := TSysDevEnum.Create;
 for i := 0 to FSysDev2.CountCategories - 1 do
  if FSysDev2.Categories[i].FriendlyName = "DirectShow Filters" then
  begin
   FSysDev2.SelectIndexCategory(i);
   j := FSysDev2.FilterIndexOfFriendlyName("Deinterlace Filter");
   if j <> -1 then
    DeInt := FSysDev2.Filters[j];
   Break;
  end;

---------

 hr := CoCreateInstance(DeInt.CLSID, nil, CLSCTX_INPROC, IID_IBaseFilter, DeinterlaceFilter);

 if hr = s_ok then
  hr := (FilterGraph as IGraphBuilder).AddFilter(DeinterlaceFilter, "Deinterlace");
 if hr <> s_ok then
 begin
  MessageBox(0, PChar(rsDeinterlaceIniError), "", MB_OK);
  exit;
 end;

 (FilterGraph as ICaptureGraphBuilder2).RenderStream(@PIN_CATEGORY_CAPTURE,
  nil,
  Filter as IBaseFilter,
  SampleGrabber as IBaseFilter,
  DeinterlaceFilter);

 (FilterGraph as ICaptureGraphBuilder2).RenderStream(nil,
  nil,
  DeinterlaceFilter,
  nil,
  DSVideoWindowEx1 as IBaseFilter);

p.s. пробуй, почти неделя геморроя....


 
diman_1978 ©   (2007-01-23 10:39) [2]

Спасибо за код!
У меня правда тут возникла еще одна проблема
При поиске:
 j := FSysDev2.FilterIndexOfFriendlyName("Deinterlace Filter");
не находится фильтр с таким именем, я так понимаю что у меня его нет просто в системе или есть фильтры деинтерлейсинга но с другими дружественными именами?


 
diman_1978 ©   (2007-01-23 13:25) [3]

Действительно у меня не было фильтра с таким иминем, скачал фильтр Alparysoft Deinterlace Filter,
заменил:
j := FSysDev2.FilterIndexOfFriendlyName("Alparysoft Deinterlace Filter");

и дальше по коду приведенному Дмитрием Белькевичем.
Все заработало, расческа исчезла.
Дмитрию большое спасибо!!!



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
15-1192360733
Вопрошающий
2007-10-14 15:18
2007.11.18
Что вы знаете об узбекской культуре?


2-1193491921
malyar
2007-10-27 17:32
2007.11.18
вывод на печать pdf файла


2-1192253628
Tos-ka
2007-10-13 09:33
2007.11.18
Послать сообщение из своей программе в чужую


2-1193236815
Alex_C
2007-10-24 18:40
2007.11.18
Снять аттрибут занятости файла в NTFS


4-1178699936
buben
2007-05-09 12:38
2007.11.18
Как убрать крестик закрытия в чужом приложении?