diff --git a/sys/dshowdecwrapper/gstdshowaudiodec.cpp b/sys/dshowdecwrapper/gstdshowaudiodec.cpp index 96f7eae4c7..caebec537b 100644 --- a/sys/dshowdecwrapper/gstdshowaudiodec.cpp +++ b/sys/dshowdecwrapper/gstdshowaudiodec.cpp @@ -869,11 +869,11 @@ gst_dshowaudiodec_setup_graph (GstDshowAudioDec * adec, GstCaps *caps) GstCaps *outcaps = NULL; AM_MEDIA_TYPE *output_mediatype = NULL; AM_MEDIA_TYPE *input_mediatype = NULL; - CComPtr output_pin = NULL; - CComPtr input_pin = NULL; + IPinPtr output_pin = NULL; + IPinPtr input_pin = NULL; const AudioCodecEntry *codec_entry = klass->entry; - CComQIPtr srcfilter; - CComQIPtr sinkfilter; + IBaseFilterPtr srcfilter; + IBaseFilterPtr sinkfilter; GstAudioInfo audio_info; input_mediatype = dshowaudiodec_set_input_format (adec, caps); @@ -972,8 +972,8 @@ end: static gboolean gst_dshowaudiodec_get_filter_settings (GstDshowAudioDec * adec) { - CComPtr output_pin; - CComPtr enum_mediatypes; + IPinPtr output_pin; + IEnumMediaTypesPtr enum_mediatypes; HRESULT hres; ULONG fetched; BOOL ret = FALSE; @@ -1018,13 +1018,13 @@ gst_dshowaudiodec_create_graph_and_filters (GstDshowAudioDec * adec) HRESULT hres; GstDshowAudioDecClass *klass = (GstDshowAudioDecClass *) G_OBJECT_GET_CLASS (adec); - CComQIPtr srcfilter; - CComQIPtr sinkfilter; + IBaseFilterPtr srcfilter; + IBaseFilterPtr sinkfilter; GUID insubtype = GUID_MEDIASUBTYPE_FROM_FOURCC (klass->entry->format); GUID outsubtype = GUID_MEDIASUBTYPE_FROM_FOURCC (WAVE_FORMAT_PCM); /* create the filter graph manager object */ - hres = adec->filtergraph.CoCreateInstance ( + hres = adec->filtergraph.CreateInstance ( CLSID_FilterGraph, NULL, CLSCTX_INPROC); if (FAILED (hres)) { GST_ELEMENT_ERROR (adec, STREAM, FAILED, @@ -1112,7 +1112,7 @@ gst_dshowaudiodec_destroy_graph_and_filters (GstDshowAudioDec * adec) if (adec->fakesrc) { if (adec->filtergraph) { - CComQIPtr filter = adec->fakesrc; + IBaseFilterPtr filter = adec->fakesrc; adec->filtergraph->RemoveFilter(filter); } adec->fakesrc->Release(); @@ -1125,7 +1125,7 @@ gst_dshowaudiodec_destroy_graph_and_filters (GstDshowAudioDec * adec) } if (adec->fakesink) { if (adec->filtergraph) { - CComQIPtr filter = adec->fakesink; + IBaseFilterPtr filter = adec->fakesink; adec->filtergraph->RemoveFilter(filter); } @@ -1163,7 +1163,7 @@ dshow_adec_register (GstPlugin * plugin) hr = CoInitialize(0); for (i = 0; i < sizeof (audio_dec_codecs) / sizeof (AudioCodecEntry); i++) { GType type; - CComPtr filter; + IBaseFilterPtr filter; GUID insubtype = GUID_MEDIASUBTYPE_FROM_FOURCC (audio_dec_codecs[i].format); GUID outsubtype = GUID_MEDIASUBTYPE_FROM_FOURCC (WAVE_FORMAT_PCM); diff --git a/sys/dshowdecwrapper/gstdshowaudiodec.h b/sys/dshowdecwrapper/gstdshowaudiodec.h index 4a9cdbf863..7ab2830b9b 100644 --- a/sys/dshowdecwrapper/gstdshowaudiodec.h +++ b/sys/dshowdecwrapper/gstdshowaudiodec.h @@ -47,8 +47,6 @@ #ifndef __GST_DSHOWAUDIODEC_H__ #define __GST_DSHOWAUDIODEC_H__ -#include - #include #include "gstdshowutil.h" #include "gstdshowfakesrc.h" @@ -88,11 +86,11 @@ struct _GstDshowAudioDec FakeSrc *fakesrc; AudioFakeSink *fakesink; - CComPtr decfilter; + IBaseFilterPtr decfilter; /* graph manager interfaces */ - CComPtr mediafilter; - CComPtr filtergraph; + IMediaFilterPtr mediafilter; + IFilterGraphPtr filtergraph; /* true when dshow graph is setup */ gboolean setup; diff --git a/sys/dshowdecwrapper/gstdshowutil.cpp b/sys/dshowdecwrapper/gstdshowutil.cpp index b60f80382f..b2cce8ec56 100644 --- a/sys/dshowdecwrapper/gstdshowutil.cpp +++ b/sys/dshowdecwrapper/gstdshowutil.cpp @@ -19,18 +19,19 @@ * Boston, MA 02110-1301, USA. */ -#include #include #include #include "gstdshowutil.h" #include "gstdshowfakesrc.h" +_COM_SMARTPTR_TYPEDEF(IDMOWrapperFilter, __uuidof(IDMOWrapperFilter)); + IPin * gst_dshow_get_pin_from_filter (IBaseFilter *filter, PIN_DIRECTION pindir) { - CComPtr enumpins; - CComPtr pin; + IEnumPinsPtr enumpins; + IPinPtr pin; HRESULT hres; hres = filter->EnumPins (&enumpins); @@ -59,9 +60,9 @@ gst_dshow_find_filter(CLSID input_majortype, CLSID input_subtype, HRESULT hres; GUID inTypes[2]; GUID outTypes[2]; - CComPtr mapper; - CComPtr enum_moniker; - CComPtr moniker; + IFilterMapper2Ptr mapper; + IEnumMonikerPtr enum_moniker; + IMonikerPtr moniker; ULONG fetched; IBaseFilter *filter; @@ -73,7 +74,7 @@ gst_dshow_find_filter(CLSID input_majortype, CLSID input_subtype, /* If the filter is a DMO, we need to do this a bit differently */ if (preferred_filters->dmo_category) { - CComPtr wrapper; + IDMOWrapperFilterPtr wrapper; hres = CoCreateInstance (CLSID_DMOWrapperFilter, NULL, CLSCTX_INPROC, diff --git a/sys/dshowdecwrapper/gstdshowutil.h b/sys/dshowdecwrapper/gstdshowutil.h index 8e40d9a3bc..80cce56070 100644 --- a/sys/dshowdecwrapper/gstdshowutil.h +++ b/sys/dshowdecwrapper/gstdshowutil.h @@ -24,6 +24,8 @@ #define _GST_DSHOW_UTIL_H_ #include +#include +#include #include #include #include @@ -32,6 +34,16 @@ #include +_COM_SMARTPTR_TYPEDEF(IBaseFilter, __uuidof(IBaseFilter)); +_COM_SMARTPTR_TYPEDEF(IFilterGraph, __uuidof(IFilterGraph)); +_COM_SMARTPTR_TYPEDEF(IFilterMapper2, __uuidof(IFilterMapper2)); +_COM_SMARTPTR_TYPEDEF(IEnumMediaTypes, __uuidof(IEnumMediaTypes)); +_COM_SMARTPTR_TYPEDEF(IEnumMoniker, __uuidof(IEnumMoniker)); +_COM_SMARTPTR_TYPEDEF(IEnumPins, __uuidof(IEnumPins)); +_COM_SMARTPTR_TYPEDEF(IMediaFilter, __uuidof(IMediaFilter)); +_COM_SMARTPTR_TYPEDEF(IMoniker, __uuidof(IMoniker)); +_COM_SMARTPTR_TYPEDEF(IPin, __uuidof(IPin)); + typedef struct { const GUID *filter_guid; /* The filter GUID, or DMO GUID */ const GUID *dmo_category; /* If non-NULL, the filter is a DMO of this diff --git a/sys/dshowdecwrapper/gstdshowvideodec.cpp b/sys/dshowdecwrapper/gstdshowvideodec.cpp index 6259ac8b74..eac0f724c8 100644 --- a/sys/dshowdecwrapper/gstdshowvideodec.cpp +++ b/sys/dshowdecwrapper/gstdshowvideodec.cpp @@ -47,7 +47,6 @@ #include "config.h" #endif -#include #include #include @@ -593,8 +592,8 @@ gst_dshowvideodec_sink_setcaps (GstPad * pad, GstCaps * caps) GstCaps *caps_out = NULL; AM_MEDIA_TYPE output_mediatype, input_mediatype; VIDEOINFOHEADER *input_vheader = NULL, *output_vheader = NULL; - CComPtr output_pin; - CComPtr input_pin; + IPinPtr output_pin; + IPinPtr input_pin; IBaseFilter *srcfilter = NULL; IBaseFilter *sinkfilter = NULL; const GValue *fps, *par; @@ -968,8 +967,8 @@ gst_dshowvideodec_src_getcaps (GstPad * pad) vdec->srccaps = gst_caps_new_empty (); if (vdec->decfilter) { - CComPtr output_pin; - CComPtr enum_mediatypes; + IPinPtr output_pin; + IEnumMediaTypesPtr enum_mediatypes; HRESULT hres; ULONG fetched; @@ -1058,8 +1057,8 @@ static gboolean gst_dshowvideodec_get_filter_output_format (GstDshowVideoDec * vdec, const GUID subtype, VIDEOINFOHEADER ** format, guint * size) { - CComPtr output_pin; - CComPtr enum_mediatypes; + IPinPtr output_pin; + IEnumMediaTypesPtr enum_mediatypes; HRESULT hres; ULONG fetched; BOOL ret = FALSE; @@ -1304,7 +1303,7 @@ dshow_vdec_register (GstPlugin * plugin) for (i = 0; i < sizeof (video_dec_codecs) / sizeof (VideoCodecEntry); i++) { GType type; - CComPtr filter; + IBaseFilterPtr filter; guint rank = GST_RANK_MARGINAL; filter = gst_dshow_find_filter (