Необходимо захватить звук и видео с тв-тюнера и вывести их. Вначале делаю так:
CoInitialize(nil);
// создаём объект для построения графа фильтров
if FAILED(CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC, IID_IGraphBuilder, pGraphBuilder)) then
begin
ShowMessage('Ошибка создания графа фильтров!');
Halt;
end;
// создаём объект для построения графа захвата
if FAILED(CoCreateInstance(CLSID_CaptureGraphBuilder2, nil, CLSCTX_INPROC, IID_ICaptureGraphBuilder2, pCaptureGraphBuilder)) then
begin
ShowMessage('Ошибка создания графа захвата!');
Halt;
end;
// задаём граф фильтров для использования в построении графа захвата
if FAILED(pCaptureGraphBuilder.SetFiltergraph(pGraphBuilder)) then
begin
ShowMessage('Невозможно задать граф фильтров для использования в построении графа захвата!');
Halt;
end;
граф представлен как дальше получить интерфейсы всех фильтров? если делаю так
var
FindCLSID: TFilCatNode;
.............................................................
function TfrmMain.GetCLSID(index : word) : TFilCatNode;
begin
FSysDev2 := TSysDevEnum.Create;
for i := 0 to FSysDev2.CountCategories - 1 do
begin
if FSysDev2.Categories[i].FriendlyName=NameCategoty[index] then
begin
FSysDev2.SelectIndexCategory(i);
for j:=0 to FSysDev2.CountFilters-1 do
if FSysDev2.Filters[j].FriendlyName=NameFilter[index] then
Result:=FSysDev2.Filters[j];
break;
end;
end;
end;
.....................................
FindCLSID:=GetDeviceID(1);
if Failed(CoCreateInstance(FindCLSID.CLSID, nil, CLSCTX_INPROC, IID_IAMTVTuner, pGotviewTvTuner)) then
begin
ShowMessage('Невозможно получить интерфейс Gotview Tv Tuner!');
Halt;
end;
то получаю все необходимые интерфейсы, но не у всех можно получить входные и выходные пины (например нельзя у Gotview Tv Audio и Gotview Crossbar)! может есть другой способ получения интерфейсов, чтобы можно было обратиться к пинам?!







