DirectShow 06.09.2015/* Benutzung: pinOut = GetPin(mpgStreamSplitter, PINDIR_OUTPUT, 2); if(pinOut==NULL) {return;} pinIn = GetPin(mpgVideoDecoder, PINDIR_INPUT, 1); if(pinOut==NULL) {return;} hr=graph->Connect(pinOut,pinIn); if(FAILED(hr)) {return;} */ IPin *GetPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir, int nr) { BOOL bFound = FALSE; IEnumPins *pEnum; IPin *pPin; HRESULT hr = pFilter->EnumPins(&pEnum); if (FAILED(hr)) { return NULL; } int i=0; while(pEnum->Next(1, &pPin, 0) == S_OK) { PIN_DIRECTION PinDirThis; pPin->QueryDirection(&PinDirThis); if (PinDir == PinDirThis) { i++; if(i==nr) { bFound = true; break; } } pPin->Release(); } pEnum->Release(); return (bFound ? pPin : NULL); }