diff options
author | Dave Robillard <dave@drobilla.net> | 2009-08-12 01:09:13 -0400 |
---|---|---|
committer | Dave Robillard <dave@drobilla.net> | 2009-08-12 01:09:13 -0400 |
commit | 41f47a3d610a99ac7e3ed85f6ef3f5c130487c36 (patch) | |
tree | 32e5a05cae35f825d43e8439ff6040e3d0c2e90d /sys/dshowsrcwrapper/gstdshowaudiosrc.cpp | |
parent | 882524e727a1c378be79f0425298243c24aa3adf (diff) | |
parent | e46ff7bda0f7996b456476dccb4a822688a690fb (diff) | |
download | gst-plugins-bad-41f47a3d610a99ac7e3ed85f6ef3f5c130487c36.tar.gz gst-plugins-bad-41f47a3d610a99ac7e3ed85f6ef3f5c130487c36.tar.bz2 gst-plugins-bad-41f47a3d610a99ac7e3ed85f6ef3f5c130487c36.zip |
Merge branch 'fdo' into lv2
Diffstat (limited to 'sys/dshowsrcwrapper/gstdshowaudiosrc.cpp')
-rw-r--r--[-rwxr-xr-x] | sys/dshowsrcwrapper/gstdshowaudiosrc.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp index a0e2d78c..03dab12d 100755..100644 --- 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); @@ -368,6 +367,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; @@ -757,7 +767,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 +794,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 = |