summaryrefslogtreecommitdiffstats
path: root/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp
diff options
context:
space:
mode:
authorDave Robillard <dave@drobilla.net>2009-08-12 01:09:07 -0400
committerDave Robillard <dave@drobilla.net>2009-08-12 01:09:07 -0400
commite46ff7bda0f7996b456476dccb4a822688a690fb (patch)
tree72f36b99c236a9a042c82702f99351456762de78 /sys/dshowsrcwrapper/gstdshowaudiosrc.cpp
parentdd5afbf0c6557ad89994cbfd91e4117e8503b81a (diff)
parent7c7b82e7141b83e987be2142e7334d21407529fe (diff)
downloadgst-plugins-bad-e46ff7bda0f7996b456476dccb4a822688a690fb.tar.gz
gst-plugins-bad-e46ff7bda0f7996b456476dccb4a822688a690fb.tar.bz2
gst-plugins-bad-e46ff7bda0f7996b456476dccb4a822688a690fb.zip
Merge branch 'master' of git://anongit.freedesktop.org/gstreamer/gst-plugins-bad into fdo
Diffstat (limited to 'sys/dshowsrcwrapper/gstdshowaudiosrc.cpp')
-rw-r--r--[-rwxr-xr-x]sys/dshowsrcwrapper/gstdshowaudiosrc.cpp23
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 =