25 #ifndef INCLUDED_GetPin_h_GUID_5AABE0CF_8981_4785_0078_147205EEFABF
26 #define INCLUDED_GetPin_h_GUID_5AABE0CF_8981_4785_0078_147205EEFABF
29 #include "comutils/ComPtr.h"
38 inline comutils::Ptr<IPin>
GetPin(IBaseFilter &pFilter,
39 PIN_DIRECTION
const PinDir) {
40 auto pEnum = comutils::Ptr<IEnumPins>{};
41 pFilter.EnumPins(AttachPtr(pEnum));
42 auto pPin = comutils::Ptr<IPin>{};
43 while (pEnum->Next(1, AttachPtr(pPin),
nullptr) == S_OK) {
44 PIN_DIRECTION PinDirThis;
45 pPin->QueryDirection(&PinDirThis);
46 if (PinDir == PinDirThis) {
50 return comutils::Ptr<IPin>{};
53 template <
typename IfaceType>
54 inline comutils::Ptr<IfaceType>
55 GetPinInterface(ICaptureGraphBuilder2 &builder, IBaseFilter &src,
56 const GUID *pinCategory =
nullptr,
57 const GUID *mediaType =
nullptr) {
58 comutils::Ptr<IfaceType> ret;
59 builder.FindInterface(pinCategory, mediaType, &src, __uuidof(IfaceType),
64 template <
typename IfaceType>
65 inline comutils::Ptr<IfaceType>
66 GetVideoCapturePinInterface(ICaptureGraphBuilder2 &builder, IBaseFilter &src) {
67 return GetPinInterface<IfaceType>(builder, src, &PIN_CATEGORY_CAPTURE,
71 #endif // INCLUDED_GetPin_h_GUID_5AABE0CF_8981_4785_0078_147205EEFABF
comutils::Ptr< IPin > GetPin(IBaseFilter &pFilter, PIN_DIRECTION const PinDir)
Helper function to get a pin of a particular direction.