File gst-plugins-bad-0.10.23-winks-fix.patch of Package mingw32-gst-0_10-plugins-bad
--- configure.ac git
+++ configure.ac fixed
@@ -553,15 +553,11 @@
#include <windows.h>
#include <strmif.h>
#include <uuids.h>
-
-int main () {
+]], [[
IGraphBuilder *pGraph = NULL;
HRESULT hr = CoInitialize(NULL);
hr = CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
&IID_IGraphBuilder, (void **)&pGraph);
-
- return 0;
-}
]])],
[HAVE_DIRECTSHOW="yes"],
[HAVE_DIRECTSHOW="no"])
--- sys/winks/ksvideohelpers.c git
+++ sys/winks/ksvideohelpers.c fixed
@@ -501,6 +501,7 @@
if (IsEqualGUID (&range->MajorFormat, &KSDATAFORMAT_TYPE_VIDEO)) {
KsVideoMediaType *entry;
gpointer src_vscc, src_format;
+ guint src_width, src_height;
GstStructure *media_structure;
entry = g_new0 (KsVideoMediaType, 1);
@@ -514,6 +515,8 @@
src_vscc = &vr->ConfigCaps;
src_format = &vr->VideoInfoHeader;
+ src_width = vr->VideoInfoHeader.bmiHeader.biWidth;
+ src_height = vr->VideoInfoHeader.bmiHeader.biHeight;
entry->format_size = sizeof (vr->VideoInfoHeader);
entry->sample_size = vr->VideoInfoHeader.bmiHeader.biSizeImage;
@@ -522,6 +525,8 @@
src_vscc = &vr->ConfigCaps;
src_format = &vr->VideoInfoHeader;
+ src_width = vr->VideoInfoHeader.bmiHeader.biWidth;
+ src_height = vr->VideoInfoHeader.bmiHeader.biHeight;
entry->format_size = sizeof (vr->VideoInfoHeader);
entry->sample_size = vr->VideoInfoHeader.bmiHeader.biSizeImage;
@@ -532,6 +537,8 @@
src_vscc = &vr->ConfigCaps;
src_format = &vr->VideoInfoHeader;
+ src_width = vr->VideoInfoHeader.hdr.bmiHeader.biWidth;
+ src_height = vr->VideoInfoHeader.hdr.bmiHeader.biHeight;
entry->format_size = sizeof (vr->VideoInfoHeader);
entry->sample_size =
@@ -543,6 +550,8 @@
src_vscc = &vr->ConfigCaps;
src_format = &vr->VideoInfoHeader;
+ src_width = vr->VideoInfoHeader.hdr.bmiHeader.biWidth;
+ src_height = vr->VideoInfoHeader.hdr.bmiHeader.biHeight;
entry->format_size = sizeof (vr->VideoInfoHeader);
entry->sample_size =
@@ -560,9 +569,19 @@
}
if (entry != NULL) {
+ KS_VIDEO_STREAM_CONFIG_CAPS *dst_vscc =
+ (KS_VIDEO_STREAM_CONFIG_CAPS*)&entry->vscc;
+
g_assert (entry->sample_size != 0);
- memcpy ((gpointer) & entry->vscc, src_vscc, sizeof (entry->vscc));
+ memcpy (dst_vscc, src_vscc, sizeof (entry->vscc));
+
+ /* see FIXME at ks_video_fixate_media_type */
+ GST_FIXME("output size ranges not supported");
+ dst_vscc->MinOutputSize.cx = dst_vscc->MaxOutputSize.cx =
+ src_width;
+ dst_vscc->MinOutputSize.cy = dst_vscc->MaxOutputSize.cy =
+ src_height;
entry->format = g_malloc (entry->format_size);
memcpy (entry->format, src_format, entry->format_size);
@@ -670,8 +689,10 @@
vih = (KS_VIDEOINFOHEADER *) format;
/* FIXME: Need to figure out how to properly handle ranges */
- if (bih->biWidth != width || bih->biHeight != height)
+ if (bih->biWidth != width || bih->biHeight != height) {
+ GST_FIXME("Invalid media size (ranges are not supported)");
return FALSE;
+ }
/* Framerate, clamped because of fraction conversion rounding errors */
vih->AvgTimePerFrame =
--- sys/winks/Makefile.am git
+++ sys/winks/Makefile.am fixed
@@ -13,5 +13,5 @@
libgstwinks_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(DIRECTX_LDFLAGS)
libgstwinks_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS= gstksclock.h
+noinst_HEADERS= gstksclock.h gstksvideodevice.h gstksvideosrc.h ksvideohelpers.h