diff --git a/sys/dshowsrcwrapper/gstdshow.cpp b/sys/dshowsrcwrapper/gstdshow.cpp index f3afb731f1..e03cb4c1d9 100644 --- a/sys/dshowsrcwrapper/gstdshow.cpp +++ b/sys/dshowsrcwrapper/gstdshow.cpp @@ -22,10 +22,10 @@ #include "gstdshow.h" #include "gstdshowfakesink.h" -void +void gst_dshow_free_mediatype (AM_MEDIA_TYPE *pmt) { - if (pmt != NULL) { + if (pmt != NULL) { if (pmt->cbFormat != 0) { CoTaskMemFree((PVOID)pmt->pbFormat); pmt->cbFormat = 0; @@ -41,7 +41,7 @@ gst_dshow_free_mediatype (AM_MEDIA_TYPE *pmt) } } -void +void gst_dshow_free_pin_mediatype (gpointer pt) { GstCapturePinMediaType * pin_mediatype = (GstCapturePinMediaType *) pt; @@ -57,7 +57,7 @@ gst_dshow_free_pin_mediatype (gpointer pt) } } -GstCapturePinMediaType * +GstCapturePinMediaType * gst_dshow_new_pin_mediatype (IPin *pin, gint id, IAMStreamConfig * streamcaps) { GstCapturePinMediaType *pin_mediatype = g_new0 (GstCapturePinMediaType, 1); @@ -74,7 +74,7 @@ gst_dshow_new_pin_mediatype (IPin *pin, gint id, IAMStreamConfig * streamcaps) return pin_mediatype; } -void +void gst_dshow_free_pins_mediatypes (GList *pins_mediatypes) { guint i = 0; @@ -87,27 +87,27 @@ gst_dshow_free_pins_mediatypes (GList *pins_mediatypes) } gboolean -gst_dshow_check_mediatype (AM_MEDIA_TYPE *media_type, const GUID sub_type, +gst_dshow_check_mediatype (AM_MEDIA_TYPE *media_type, const GUID sub_type, const GUID format_type) { RPC_STATUS rpcstatus; - + g_return_val_if_fail (media_type != NULL, FALSE); - - return + + return UuidCompare (&media_type->subtype, (UUID *) &sub_type, &rpcstatus) == 0 && rpcstatus == RPC_S_OK && UuidCompare (&media_type->formattype, (UUID *) &format_type, &rpcstatus) == 0 && rpcstatus == RPC_S_OK; } -gboolean +gboolean gst_dshow_get_pin_from_filter (IBaseFilter *filter, PIN_DIRECTION pindir, IPin **pin) { gboolean ret = FALSE; IEnumPins *enumpins = NULL; IPin *pintmp = NULL; - HRESULT hres; + HRESULT hres; *pin = NULL; hres = filter->EnumPins (&enumpins); @@ -131,8 +131,8 @@ gst_dshow_get_pin_from_filter (IBaseFilter *filter, PIN_DIRECTION pindir, IPin * return ret; } -gboolean gst_dshow_find_filter(CLSID input_majortype, CLSID input_subtype, - CLSID output_majortype, CLSID output_subtype, +gboolean gst_dshow_find_filter(CLSID input_majortype, CLSID input_subtype, + CLSID output_majortype, CLSID output_subtype, gchar * prefered_filter_name, IBaseFilter **filter) { gboolean ret = FALSE; @@ -156,24 +156,24 @@ gboolean gst_dshow_find_filter(CLSID input_majortype, CLSID input_subtype, _strupr (prefered_filter_upper); } - hres = CoCreateInstance(CLSID_FilterMapper2, NULL, CLSCTX_INPROC, + hres = CoCreateInstance(CLSID_FilterMapper2, NULL, CLSCTX_INPROC, IID_IFilterMapper2, (void **) &mapper); if (FAILED(hres)) goto clean; - + memcpy(&arrayInTypes[0], &input_majortype, sizeof (CLSID)); memcpy(&arrayInTypes[1], &input_subtype, sizeof (CLSID)); memcpy(&arrayOutTypes[0], &output_majortype, sizeof (CLSID)); memcpy(&arrayOutTypes[1], &output_subtype, sizeof (CLSID)); - hres = mapper->EnumMatchingFilters (&enum_moniker, 0, FALSE, MERIT_DO_NOT_USE+1, - TRUE, 1, arrayInTypes, NULL, NULL, FALSE, + hres = mapper->EnumMatchingFilters (&enum_moniker, 0, FALSE, MERIT_DO_NOT_USE+1, + TRUE, 1, arrayInTypes, NULL, NULL, FALSE, TRUE, 1, arrayOutTypes, NULL, NULL); if (FAILED(hres)) goto clean; - + enum_moniker->Reset (); - + while(hres = enum_moniker->Next (1, &moniker, &fetched),hres == S_OK && !exit) { IBaseFilter *filter_temp = NULL; @@ -184,11 +184,11 @@ gboolean gst_dshow_find_filter(CLSID input_majortype, CLSID input_subtype, if(SUCCEEDED(hres) && property_bag) { VARIANT varFriendlyName; VariantInit (&varFriendlyName); - + hres = property_bag->Read (L"FriendlyName", &varFriendlyName, NULL); if(hres == S_OK && varFriendlyName.bstrVal) { - friendly_name = g_utf16_to_utf8((const gunichar2*)varFriendlyName.bstrVal, - wcslen(varFriendlyName.bstrVal), NULL, NULL, NULL); + friendly_name = g_utf16_to_utf8((const gunichar2*)varFriendlyName.bstrVal, + wcslen(varFriendlyName.bstrVal), NULL, NULL, NULL); if (friendly_name) _strupr (friendly_name); SysFreeString (varFriendlyName.bstrVal); @@ -196,7 +196,7 @@ gboolean gst_dshow_find_filter(CLSID input_majortype, CLSID input_subtype, property_bag->Release (); } - hres = moniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)&filter_temp); + hres = moniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)&filter_temp); if(SUCCEEDED(hres) && filter_temp) { ret = TRUE; if (filter) { @@ -211,8 +211,8 @@ gboolean gst_dshow_find_filter(CLSID input_majortype, CLSID input_subtype, exit = TRUE; } - /* if we just want to know if the formats are supported OR - if we don't care about what will be the filter used + /* if we just want to know if the formats are supported OR + if we don't care about what will be the filter used => we can stop enumeration */ if (!filter || !prefered_filter_upper) exit = TRUE; @@ -247,7 +247,7 @@ gst_dshow_getdevice_from_devicename (const GUID *device_category, gchar **devic HRESULT hres = S_FALSE; ULONG fetched; gboolean bfound = FALSE; - + hres = CoCreateInstance (CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void**)&devices_enum); if(hres != S_OK) { @@ -263,7 +263,7 @@ gst_dshow_getdevice_from_devicename (const GUID *device_category, gchar **devic } enum_moniker->Reset (); - + while(hres = enum_moniker->Next (1, &moniker, &fetched),hres == S_OK && !bfound) { IPropertyBag *property_bag = NULL; @@ -271,10 +271,10 @@ gst_dshow_getdevice_from_devicename (const GUID *device_category, gchar **devic if(SUCCEEDED(hres) && property_bag) { VARIANT varFriendlyName; VariantInit (&varFriendlyName); - + hres = property_bag->Read (L"FriendlyName", &varFriendlyName, NULL); if(hres == S_OK && varFriendlyName.bstrVal) { - gchar * friendly_name = g_utf16_to_utf8((const gunichar2*)varFriendlyName.bstrVal, + gchar * friendly_name = g_utf16_to_utf8((const gunichar2*)varFriendlyName.bstrVal, wcslen(varFriendlyName.bstrVal), NULL, NULL, NULL); if (!*device_name) { @@ -285,7 +285,7 @@ gst_dshow_getdevice_from_devicename (const GUID *device_category, gchar **devic WCHAR *wszDisplayName = NULL; hres = moniker->GetDisplayName (NULL, NULL, &wszDisplayName); if(hres == S_OK && wszDisplayName) { - ret = g_utf16_to_utf8((const gunichar2*)wszDisplayName, + ret = g_utf16_to_utf8((const gunichar2*)wszDisplayName, wcslen(wszDisplayName), NULL, NULL, NULL); CoTaskMemFree (wszDisplayName); } @@ -310,19 +310,19 @@ clean: return ret; } -gboolean +gboolean gst_dshow_show_propertypage (IBaseFilter *base_filter) { gboolean ret = FALSE; ISpecifyPropertyPages *pProp = NULL; HRESULT hres = base_filter->QueryInterface (IID_ISpecifyPropertyPages, (void **)&pProp); - if (SUCCEEDED(hres)) + if (SUCCEEDED(hres)) { /* Get the filter's name and IUnknown pointer.*/ FILTER_INFO FilterInfo; CAUUID caGUID; IUnknown *pFilterUnk = NULL; - hres = base_filter->QueryFilterInfo (&FilterInfo); + hres = base_filter->QueryFilterInfo (&FilterInfo); base_filter->QueryInterface (IID_IUnknown, (void **)&pFilterUnk); /* Show the page. */ @@ -338,13 +338,13 @@ gst_dshow_show_propertypage (IBaseFilter *base_filter) return ret; } -GstCaps *gst_dshow_new_video_caps (GstVideoFormat video_format, const gchar* name, +GstCaps *gst_dshow_new_video_caps (GstVideoFormat video_format, const gchar* name, GstCapturePinMediaType *pin_mediatype) { GstCaps *video_caps = NULL; GstStructure *video_structure = NULL; VIDEOINFOHEADER *video_info = (VIDEOINFOHEADER *) pin_mediatype->mediatype->pbFormat; - + pin_mediatype->defaultWidth = video_info->bmiHeader.biWidth; pin_mediatype->defaultHeight = video_info->bmiHeader.biHeight; pin_mediatype->defaultFPS = (gint) (10000000 / video_info->AvgTimePerFrame); @@ -365,12 +365,12 @@ GstCaps *gst_dshow_new_video_caps (GstVideoFormat video_format, const gchar* nam /* other video format */ if (!video_caps){ if (g_strcasecmp (name, "video/x-dv, systemstream=FALSE") == 0) { - video_caps = gst_caps_new_simple ("video/x-dv", + video_caps = gst_caps_new_simple ("video/x-dv", "systemstream", G_TYPE_BOOLEAN, FALSE, "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('d', 'v', 's', 'd'), NULL); } else if (g_strcasecmp (name, "video/x-dv, systemstream=TRUE") == 0) { - video_caps = gst_caps_new_simple ("video/x-dv", + video_caps = gst_caps_new_simple ("video/x-dv", "systemstream", G_TYPE_BOOLEAN, TRUE, NULL); return video_caps; } @@ -389,12 +389,12 @@ GstCaps *gst_dshow_new_video_caps (GstVideoFormat video_format, const gchar* nam /* For framerate we do not need a step (granularity) because */ /* "The IAMStreamConfig::SetFormat method will set the frame rate to the closest */ - /* value that the filter supports" as it said in the VIDEO_STREAM_CONFIG_CAPS dshwo doc */ - - gst_structure_set (video_structure, - "width", GST_TYPE_INT_RANGE, pin_mediatype->vscc.MinOutputSize.cx, pin_mediatype->vscc.MaxOutputSize.cx, + /* value that the filter supports" as it said in the VIDEO_STREAM_CONFIG_CAPS dshwo doc */ + + gst_structure_set (video_structure, + "width", GST_TYPE_INT_RANGE, pin_mediatype->vscc.MinOutputSize.cx, pin_mediatype->vscc.MaxOutputSize.cx, "height", GST_TYPE_INT_RANGE, pin_mediatype->vscc.MinOutputSize.cy, pin_mediatype->vscc.MaxOutputSize.cy, - "framerate", GST_TYPE_FRACTION_RANGE, + "framerate", GST_TYPE_FRACTION_RANGE, (gint) (10000000 / pin_mediatype->vscc.MaxFrameInterval), 1, (gint) (10000000 / pin_mediatype->vscc.MinFrameInterval), 1, NULL); diff --git a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp index 99163d639e..143f9514a1 100644 --- a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp +++ b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp @@ -1,7 +1,7 @@ /* GStreamer * Copyright (C) 2007 Sebastien Moutte * - * gstdshowaudiosrc.c: + * gstdshowaudiosrc.c: * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -172,7 +172,7 @@ gst_dshowaudiosrc_class_init (GstDshowAudioSrcClass * klass) g_object_class_install_property (gobject_class, PROP_DEVICE_NAME, g_param_spec_string ("device-name", "Device name", - "Human-readable name of the sound device", NULL, + "Human-readable name of the sound device", NULL, static_cast(G_PARAM_READWRITE))); GST_DEBUG_CATEGORY_INIT (dshowaudiosrc_debug, "dshowaudiosrc", 0, @@ -278,7 +278,7 @@ gst_dshowaudiosrc_get_device_name_values (GstDshowAudioSrc * src) goto clean; } - hres = devices_enum->CreateClassEnumerator(CLSID_AudioInputDeviceCategory, + hres = devices_enum->CreateClassEnumerator(CLSID_AudioInputDeviceCategory, &moniker_enum, 0); if (hres != S_OK || !moniker_enum) { GST_ERROR ("Can't get enumeration of audio devices (error=0x%x)", hres); @@ -292,7 +292,7 @@ gst_dshowaudiosrc_get_device_name_values (GstDshowAudioSrc * src) hres == S_OK) { IPropertyBag *property_bag = NULL; - hres = moniker->BindToStorage(NULL, NULL, IID_IPropertyBag, + hres = moniker->BindToStorage(NULL, NULL, IID_IPropertyBag, (LPVOID *) &property_bag); if (SUCCEEDED (hres) && property_bag) { VARIANT varFriendlyName; @@ -304,7 +304,7 @@ 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 }; + GValue value = { 0 }; g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, friendly_name); g_value_array_append (array, &value); @@ -364,16 +364,16 @@ 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; + 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); @@ -418,7 +418,7 @@ gst_dshowaudiosrc_get_caps (GstBaseSrc * basesrc) if (SUCCEEDED (hres)) { hres = MkParseDisplayName (lpbc, (LPCOLESTR) unidevice, &dwEaten, &audiom); if (SUCCEEDED (hres)) { - hres = audiom->BindToObject(lpbc, NULL, IID_IBaseFilter, + hres = audiom->BindToObject(lpbc, NULL, IID_IBaseFilter, (LPVOID *) &src->audio_cap_filter); audiom->Release(); } @@ -616,7 +616,7 @@ gst_dshowaudiosrc_prepare (GstAudioSrc * asrc, GstRingBufferSpec * spec) goto error; } - hres = src->filter_graph->ConnectDirect(pin_mediatype->capture_pin, + hres = src->filter_graph->ConnectDirect(pin_mediatype->capture_pin, input_pin, NULL); input_pin->Release(); diff --git a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp index 0984b2338f..1dac9b4e53 100644 --- a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp +++ b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp @@ -2,7 +2,7 @@ * Copyright (C) 2007 Sebastien Moutte * Copyright (C) 2009 Julien Isorce * - * gstdshowvideosrc.c: + * gstdshowvideosrc.c: * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -179,13 +179,13 @@ gst_dshowvideosrc_class_init (GstDshowVideoSrcClass * klass) g_object_class_install_property (gobject_class, PROP_DEVICE, g_param_spec_string ("device", "Device", - "Directshow device path (@..classID/name)", NULL, + "Directshow device path (@..classID/name)", NULL, static_cast(G_PARAM_READWRITE))); g_object_class_install_property (gobject_class, PROP_DEVICE_NAME, g_param_spec_string ("device-name", "Device name", - "Human-readable name of the sound device", NULL, + "Human-readable name of the sound device", NULL, static_cast(G_PARAM_READWRITE))); GST_DEBUG_CATEGORY_INIT (dshowvideosrc_debug, "dshowvideosrc", 0, @@ -361,7 +361,7 @@ gst_dshowvideosrc_get_device_name_values (GstDshowVideoSrc * src) goto clean; } - hres = devices_enum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, + hres = devices_enum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &moniker_enum, 0); if (hres != S_OK || !moniker_enum) { GST_ERROR ("Can't get enumeration of video devices (error=0x%x)", hres); @@ -388,7 +388,7 @@ gst_dshowvideosrc_get_device_name_values (GstDshowVideoSrc * src) g_utf16_to_utf8 ((const gunichar2 *) varFriendlyName.bstrVal, wcslen (varFriendlyName.bstrVal), NULL, NULL, NULL); - GValue value = { 0 }; + GValue value = { 0 }; g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, friendly_name); g_value_array_append (array, &value); @@ -502,7 +502,7 @@ gst_dshowvideosrc_get_caps (GstBaseSrc * basesrc) if (SUCCEEDED (hres)) { hres = MkParseDisplayName (lpbc, (LPCOLESTR) unidevice, &dwEaten, &videom); if (SUCCEEDED (hres)) { - hres = videom->BindToObject(lpbc, NULL, IID_IBaseFilter, + hres = videom->BindToObject(lpbc, NULL, IID_IBaseFilter, (LPVOID *) &src->video_cap_filter); videom->Release(); } @@ -622,7 +622,7 @@ gst_dshowvideosrc_start (GstBaseSrc * bsrc) goto error; } - hres = src->filter_graph->QueryInterface(IID_IMediaFilter, + hres = src->filter_graph->QueryInterface(IID_IMediaFilter, (LPVOID *) &src->media_filter); if (hres != S_OK || !src->media_filter) { GST_ERROR ("Can't get IMediacontrol interface from the graph manager (error=0x%x)", hres); @@ -732,7 +732,7 @@ gst_dshowvideosrc_set_caps (GstBaseSrc * bsrc, GstCaps * caps) goto error; } - hres = src->filter_graph->ConnectDirect(pin_mediatype->capture_pin, + hres = src->filter_graph->ConnectDirect(pin_mediatype->capture_pin, input_pin, pin_mediatype->mediatype); input_pin->Release(); @@ -880,12 +880,12 @@ gst_dshowvideosrc_getcaps_from_streamcaps (GstDshowVideoSrc * src, IPin * pin, caps = gst_caps_new_empty (); for (; i < icount; i++) { - - GstCapturePinMediaType *pin_mediatype = + + GstCapturePinMediaType *pin_mediatype = gst_dshow_new_pin_mediatype (pin, i, streamcaps); if (pin_mediatype) { - + GstCaps *mediacaps = NULL; if (gst_dshow_check_mediatype (pin_mediatype->mediatype, MEDIASUBTYPE_I420, FORMAT_VideoInfo)) { @@ -895,11 +895,11 @@ gst_dshowvideosrc_getcaps_from_streamcaps (GstDshowVideoSrc * src, IPin * pin, mediacaps = gst_dshow_new_video_caps (GST_VIDEO_FORMAT_BGR, NULL, pin_mediatype); } else if (gst_dshow_check_mediatype (pin_mediatype->mediatype, MEDIASUBTYPE_dvsd, FORMAT_VideoInfo)) { - mediacaps = gst_dshow_new_video_caps (GST_VIDEO_FORMAT_UNKNOWN, "video/x-dv, systemstream=FALSE", + mediacaps = gst_dshow_new_video_caps (GST_VIDEO_FORMAT_UNKNOWN, "video/x-dv, systemstream=FALSE", pin_mediatype); - } else if (gst_dshow_check_mediatype (pin_mediatype->mediatype, MEDIASUBTYPE_dvsd, FORMAT_DvInfo)) { - mediacaps = gst_dshow_new_video_caps (GST_VIDEO_FORMAT_UNKNOWN, "video/x-dv, systemstream=TRUE", + } else if (gst_dshow_check_mediatype (pin_mediatype->mediatype, MEDIASUBTYPE_dvsd, FORMAT_DvInfo)) { + mediacaps = gst_dshow_new_video_caps (GST_VIDEO_FORMAT_UNKNOWN, "video/x-dv, systemstream=TRUE", pin_mediatype); pin_mediatype->granularityWidth = 0; @@ -949,7 +949,7 @@ gst_dshowvideosrc_push_buffer (byte * buffer, long size, gpointer src_object, GST_BUFFER_DURATION (buf) = stop - start; if (src->is_rgb) { - /* FOR RGB directshow decoder will return bottom-up BITMAP + /* FOR RGB directshow decoder will return bottom-up BITMAP * There is probably a way to get top-bottom video frames from * the decoder... */