Форум: "Media";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
Внизперечисление пинов Найти похожие ветки
← →
DV (2007-06-25 15:07) [0]DirectShow фильтр "DV Splitter" имеет три пина (видно в графэдите). Но когда получаем из него интерфейс IEnumPins и в цикле вызываем Next(1,...) для перечисления всех пинов, то возвращается только один входной пин.
Двы выходных пина для видео и аудио просто отсутствуют как класс.
В чем косяк?
PS код не привожу, он в точности повторяет примеры SDK
← →
wicked © (2007-07-03 21:17) [1]а просишь какие пины?
там же вроде флажками задается, какие пины отдать в енумератор
← →
DV (2007-07-04 00:15) [2]Нифига туда не передается
Сначала запрашиваем енумератор
HRESULT EnumPins(
IEnumPins **ppEnum
);
Потом перечисляем все что есть
HRESULT Next(
ULONG cPins,
IPin **ppPins,
ULONG *pcFetched
);
Тип не задается нигде.
← →
WondeRu at work (2007-07-05 12:46) [3]Такое подойдет?
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-05 14:16) [4]Спасибо конечно, но портировать примеры sdk с си на паскаль я и сам пока еще умею.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c