![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтры в 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;