Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Фильтры в DirectShow? [D6, WinXP]


Noby ©   (2006-03-17 13:51:00) 

Как можно выяснить, какими фильтрами воспроизводиться видео и управлять ими?


Анонимщики   (2006-03-21 12:48:00) [1]

Для собственно воспроизведения используются следующие четыре майкрософтовских фильтра видеовоспроизведения: Video Renderer (старый, но используется по умолчанию на не-XP платформах), Video Mixing Renderer 7(для Windows XP (и используется на этой платформе по умолчанию), внутренне использует DirectDraw 7, понимет видеопорты), Video Mixing Render 9 (прочие платформы, использует Direct3D 9, но видеопортов не понимает, по умолчанию не используется для обеспечения обратной совместимости) и, наконец, Overlay Mixer, который понимает видеопорты, но не имеет собственного оконного менеджера, поэтому к нему нужно цеплять еще какой-то из фильтров воспроизведения, менеджером которого он воспользуется. Overlay Mixer есть смісл использовать с VMR-9.
Как ими управлять, лучше всего написано в MSDN.


WondeRu   (2006-03-20 08:36:00) [2]

необходимо перечислить все фильтры в графе :)

в DSPack у меня это выглядело так:

procedure TVideoCapture.UpdateFilterList(var ASList: TStringList);
var
 i : Integer;
 AFilterInfo : TFilterInfo;
 FiltG: IFilterGraph;
begin
 FFilterGraph.QueryInterface(IID_IFilterGraph, FiltG);
 FFilterList.Assign(FiltG);

 if not Assigned(ASList) then Exit;

 ASList.Clear;

 FFilterList.Update;
 for i := 0 to FFilterList.Count - 1 do
   begin
     FFilterList.Items[i].QueryFilterInfo(AFilterInfo);
     ASList.Add(AFilterInfo.achName);
   end;
 FiltG := nil;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо