static LONG WINAPI QT_GetPinCount(BaseFilter *iface) { QTSplitter *This = impl_from_BaseFilter(iface); int c = 1; if (This->pAudio_Pin) c++; if (This->pVideo_Pin) c++; return c; }
static IPin* WINAPI TransformFilter_GetPin(BaseFilter *iface, int pos) { TransformFilter *This = impl_from_BaseFilter(iface); if (pos >= This->npins || pos < 0) return NULL; IPin_AddRef(This->ppPins[pos]); return This->ppPins[pos]; }
static IPin* WINAPI BaseRenderer_GetPin(BaseFilter *iface, int pos) { BaseRenderer *This = impl_from_BaseFilter(iface); if (pos >= 1 || pos < 0) return NULL; IPin_AddRef(&This->pInputPin->pin.IPin_iface); return &This->pInputPin->pin.IPin_iface; }
static IPin* WINAPI VfwCapture_GetPin(BaseFilter *iface, int pos) { VfwCapture *This = impl_from_BaseFilter(iface); if (pos >= 1 || pos < 0) return NULL; IPin_AddRef(This->pOutputPin); return This->pOutputPin; }
/* FIXME: WRONG */ static IPin* WINAPI Parser_GetPin(BaseFilter *iface, int pos) { ParserImpl *This = impl_from_BaseFilter(iface); TRACE("Asking for pos %x\n", pos); /* Input pin also has a pin, hence the > and not >= */ if (pos > This->cStreams || pos < 0) return NULL; IPin_AddRef(This->ppPins[pos]); return This->ppPins[pos]; }
static IPin *WINAPI SampleGrabber_GetPin(BaseFilter *iface, int pos) { SG_Impl *This = impl_from_BaseFilter(iface); IPin *pin; if (pos == 0) pin = &This->pin_in.IPin_iface; else if (pos == 1) pin = &This->pin_out.IPin_iface; else return NULL; IPin_AddRef(pin); return pin; }
static IPin* WINAPI AVICompressor_GetPin(BaseFilter *iface, int pos) { AVICompressor *This = impl_from_BaseFilter(iface); IPin *ret; TRACE("(%p)->(%d)\n", This, pos); switch(pos) { case 0: ret = &This->in->pin.IPin_iface; break; case 1: ret = &This->out->pin.IPin_iface; break; default: TRACE("No pin %d\n", pos); return NULL; }; IPin_AddRef(ret); return ret; }
static IPin* WINAPI QT_GetPin(BaseFilter *iface, int pos) { QTSplitter *This = impl_from_BaseFilter(iface); TRACE("Asking for pos %x\n", pos); if (pos > 2 || pos < 0) return NULL; switch (pos) { case 0: IPin_AddRef(&This->pInputPin.pin.IPin_iface); return &This->pInputPin.pin.IPin_iface; case 1: if (This->pVideo_Pin) IPin_AddRef(&This->pVideo_Pin->pin.pin.IPin_iface); return &This->pVideo_Pin->pin.pin.IPin_iface; case 2: if (This->pAudio_Pin) IPin_AddRef(&This->pAudio_Pin->pin.pin.IPin_iface); return &This->pAudio_Pin->pin.pin.IPin_iface; default: return NULL; } }
static LONG WINAPI TransformFilter_GetPinCount(BaseFilter *iface) { TransformFilter *This = impl_from_BaseFilter(iface); return (This->npins+1); }
static LONG WINAPI Parser_GetPinCount(BaseFilter *iface) { ParserImpl *This = impl_from_BaseFilter(iface); return This->cStreams; }
static inline AVICompressor *impl_from_IBaseFilter(IBaseFilter *iface) { BaseFilter *filter = CONTAINING_RECORD(iface, BaseFilter, IBaseFilter_iface); return impl_from_BaseFilter(filter); }