From 67dd6694a18687271878515028578601999619ba Mon Sep 17 00:00:00 2001 From: Julien Isorce Date: Mon, 10 Aug 2009 16:03:17 +0200 Subject: dshowsrcwrapper: add a helper function to check a media type --- sys/dshowsrcwrapper/gstdshowaudiosrc.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'sys/dshowsrcwrapper/gstdshowaudiosrc.cpp') diff --git a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp index a0e2d78c..85f4afb4 100755 --- a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp +++ b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp @@ -757,7 +757,6 @@ gst_dshowaudiosrc_getcaps_from_streamcaps (GstDshowAudioSrc * src, IPin * pin, { GstCaps *caps = NULL; HRESULT hres = S_OK; - RPC_STATUS rpcstatus; int icount = 0; int isize = 0; AUDIO_STREAM_CONFIG_CAPS ascc; @@ -785,11 +784,7 @@ gst_dshowaudiosrc_getcaps_from_streamcaps (GstDshowAudioSrc * src, IPin * pin, if (!caps) caps = gst_caps_new_empty (); - if ((UuidCompare (&pin_mediatype->mediatype->subtype, (UUID *) &MEDIASUBTYPE_PCM, - &rpcstatus) == 0 && rpcstatus == RPC_S_OK) - && (UuidCompare (&pin_mediatype->mediatype->formattype, - (UUID *) &FORMAT_WaveFormatEx, &rpcstatus) == 0 - && rpcstatus == RPC_S_OK)) { + if (gst_dshow_check_mediatype (pin_mediatype->mediatype, MEDIASUBTYPE_PCM, FORMAT_WaveFormatEx)) { WAVEFORMATEX *wavformat = (WAVEFORMATEX *) pin_mediatype->mediatype->pbFormat; mediacaps = -- cgit v1.2.1 From ae6935e6a39a09c0b66302831e87b8af8b76c014 Mon Sep 17 00:00:00 2001 From: Julien Isorce Date: Mon, 10 Aug 2009 16:17:41 +0200 Subject: dshowaudiosrc: handles device-name property --- sys/dshowsrcwrapper/gstdshowaudiosrc.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'sys/dshowsrcwrapper/gstdshowaudiosrc.cpp') diff --git a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp index 85f4afb4..f16f7478 100755 --- a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp +++ b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp @@ -368,6 +368,17 @@ gst_dshowaudiosrc_set_property (GObject * object, guint prop_id, } break; } + case PROP_DEVICE_NAME: + { + if (src->device_name) { + g_free (src->device_name); + src->device_name = NULL; + } + if (g_value_get_string (value)) { + src->device_name = g_strdup (g_value_get_string (value)); + } + break; + } default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; -- cgit v1.2.1 From 8c37eed49162a3006753de0253d66bab3fabbf9b Mon Sep 17 00:00:00 2001 From: Julien Isorce Date: Mon, 10 Aug 2009 16:35:36 +0200 Subject: dshowsrcwrapper: can list more than 1 device something like the following code now works: vector getVideoDeviceNames() { vector l_name; string property; GstElement* videodevicesrc = create_element("dshowvideosrc", "videodevicesrc"); GstPropertyProbe* probe = GST_PROPERTY_PROBE (videodevicesrc); GValueArray* va = gst_property_probe_get_values_name (probe, "device-name"); if (va) { for(size_t i=0; i < va->n_values; ++i) { GValue* v = g_value_array_get_nth(va, i); string name(g_value_get_string(v)); l_name.push_back(name); } } if (videodevicesrc) gst_object_unref(GST_OBJECT (videodevicesrc)); return l_name; } --- sys/dshowsrcwrapper/gstdshowaudiosrc.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'sys/dshowsrcwrapper/gstdshowaudiosrc.cpp') diff --git a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp index f16f7478..03dab12d 100755 --- a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp +++ b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp @@ -264,15 +264,12 @@ static GValueArray * gst_dshowaudiosrc_get_device_name_values (GstDshowAudioSrc * src) { GValueArray *array = g_value_array_new (0); - GValue value = { 0 }; ICreateDevEnum *devices_enum = NULL; IEnumMoniker *moniker_enum = NULL; IMoniker *moniker = NULL; HRESULT hres = S_FALSE; ULONG fetched; - g_value_init (&value, G_TYPE_STRING); - hres = CoCreateInstance (CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (LPVOID *) &devices_enum); if (hres != S_OK) { @@ -310,6 +307,8 @@ gst_dshowaudiosrc_get_device_name_values (GstDshowAudioSrc * src) g_utf16_to_utf8 ((const gunichar2 *) varFriendlyName.bstrVal, wcslen (varFriendlyName.bstrVal), NULL, NULL, NULL); + GValue value = { 0 }; + g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, friendly_name); g_value_array_append (array, &value); g_value_unset (&value); -- cgit v1.2.1 From 1691621fafbe699d414e79526d49665e7fcf2faa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 10 Aug 2009 22:16:37 +0100 Subject: Remove execute flags from source files --- sys/dshowsrcwrapper/gstdshowaudiosrc.cpp | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 sys/dshowsrcwrapper/gstdshowaudiosrc.cpp (limited to 'sys/dshowsrcwrapper/gstdshowaudiosrc.cpp') diff --git a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp old mode 100755 new mode 100644 -- cgit v1.2.1