![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перечисление пинов [D7, WinXP]
DV © (2007-06-25 15:07:00)DirectShow фильтр "DV Splitter" имеет три пина (видно в графэдите). Но когда получаем из него интерфейс IEnumPins и в цикле вызываем Next(1,...) для перечисления всех пинов, то возвращается только один входной пин.
Двы выходных пина для видео и аудио просто отсутствуют как класс.
В чем косяк?
PS код не привожу, он в точности повторяет примеры SDK
DV (2007-07-05 14:16:00) [1]Спасибо конечно, но портировать примеры sdk с си на паскаль я и сам пока еще умею.
WondeRu at work (2007-07-05 12:46:00) [2]Такое подойдет?
function GetPin(pFilter: IBaseFilter; pinDir: PIN_DIRECTION; Index: Integer = 0): IPin;
var
bFound: Boolean;
pEnum : IEnumPins;
pPin : IPin;
PinDirThis: PIN_DIRECTION;
Count : Integer;
begin
Result := nil;
bFound := false;
pFilter.EnumPins(pEnum);
Count := 0;
while (pEnum.Next(1, pPin, nil) = S_OK) do
begin
pPin.QueryDirection(PinDirThis);
if (pinDir = PinDirThis) then
begin
if Count = Index then
begin
bFound := true;
break;
end;
Inc(Count);
end;
end;
pEnum.Reset;
if bFound then Result := pPin;
end;
DV (2007-07-04 00:15:00) [3]Нифига туда не передается
Сначала запрашиваем енумератор
HRESULT EnumPins(
IEnumPins **ppEnum
);
Потом перечисляем все что есть
HRESULT Next(
ULONG cPins,
IPin **ppPins,
ULONG *pcFetched
);
Тип не задается нигде.
wicked (2007-07-03 21:17:00) [4]а просишь какие пины?
там же вроде флажками задается, какие пины отдать в енумератор