Add bindings for Windows specific plugins

This commit is contained in:
Andoni Morales Alastruey 2010-02-13 12:35:50 +01:00 committed by Sebastian Dröge
parent f774273d46
commit 7509d26528
7 changed files with 450 additions and 1 deletions

View file

@ -1,4 +1,4 @@
SUBDIRS = . glue coreplugins baseplugins
SUBDIRS = . glue coreplugins baseplugins goodplugins badplugins
TARGET = $(ASSEMBLY)
noinst_DATA = $(TARGET)

View file

@ -0,0 +1,31 @@
ELEMENTS = dshowvideosink dshowvideosrc dshowaudiosrc
NAMESPACE = Gst.BadPlugins
INSPECT_FILES = $(patsubst %,$(srcdir)/inspect/%.raw,$(ELEMENTS))
METADATA_FILES = $(srcdir)/decodebin2.metadata $(srcdir)/playbin2.metadata
CS_FILES = $(patsubst %,$(builddir)/generated/%.cs,$(ELEMENTS))
XML_FILES = $(patsubst %,$(builddir)/%.xml,$(ELEMENTS))
EXTRA_DIST = $(METADATA_FILES) $(INSPECT_FILES)
CLEANFILES = $(XML_FILES) $(CS_FILES)
MAINTAINERCLEANFILES = Makefile.in
plugins-update: $(patsubst $(srcdir)/inspect/%.raw, inspect-%, $(INSPECT_FILES))
inspect-%:
$(top_builddir)/elementgen/gsts-xmlinspect $(patsubst inspect-%,%,$@) > inspect/$(patsubst inspect-%,%,$@).raw
all: $(XML_FILES) $(CS_FILES)
touch generated
generated/%.cs: $(top_builddir)/elementgen/element-gen.exe $(top_builddir)/gstreamer-sharp/gstreamer-api.xml $(builddir)/%.xml
@mkdir -p generated
$(MONO) $(top_builddir)/elementgen/element-gen.exe --namespace=$(NAMESPACE) \
--api=$(top_builddir)/gstreamer-sharp/gstreamer-api.xml --input=$(patsubst generated/%.cs,$(builddir)/%.xml,$@) --customfile=$(patsubst generated/%.cs,$(srcdir)/%.custom,$@) --interfacesdir=$(top_srcdir)/elementgen/interfaces > $@
%.xml: $(top_builddir)/parser/gst-gapi-fixup.exe $(srcdir)/inspect/%.raw $(srcdir)/%.metadata
cp $(patsubst %.xml,$(srcdir)/inspect/%.raw,$@) $(builddir)/$@
chmod +w $(builddir)/$@
$(MONO) $(top_builddir)/parser/gst-gapi-fixup.exe --api=$(builddir)/$@ --metadata=$(patsubst %.xml,$(srcdir)/%.metadata,$@)
%.xml: $(top_builddir)/parser/gst-gapi-fixup.exe $(srcdir)/inspect/%.raw
cp $(patsubst %.xml,$(srcdir)/inspect/%.raw,$@) $(builddir)/$@

View file

@ -0,0 +1,142 @@
<element>
<name>dshowaudiosrc</name>
<details>
<long-name>Directshow audio capture source</long-name>
<class>Source/Audio</class>
<description>Receive data from a directshow audio capture graph</description>
<authors>Sebastien Moutte &lt;sebastien@moutte.net&gt;</authors>
</details>
<object name="GstDshowAudioSrc">
<object name="GstAudioSrc">
<object name="GstBaseAudioSrc">
<object name="GstPushSrc">
<object name="GstBaseSrc">
<object name="GstElement">
<object name="GstObject">
<object name="GObject">
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
<interfaces>
<interface name="GstPropertyProbe" />
<interface name="GstImplementsInterface" />
<interface name="GstMixer" />
</interfaces>
<pad-templates>
<pad-template>
<name>src</name>
<direction>src</direction>
<presence>always</presence>
<caps>audio/x-raw-int, endianness=(int){ 1234 }, signed=(boolean){ true, false }, width=(int)16, depth=(int)16, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2 ]; audio/x-raw-int, signed=(boolean){ true, false }, width=(int)8, depth=(int)8, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2 ]</caps>
</pad-template>
</pad-templates>
<element-flags>
</element-flags>
<element-implementation>
<state-change function="gst_dshowaudiosrc_change_state"/>
<save function="gst_element_save_thyself"/>
<load function="gst_element_restore_thyself"/>
</element-implementation>
<clocking-interaction>
</clocking-interaction>
<pads>
<pad>
<name>src</name>
<direction>src</direction>
<template>src</template>
<implementation>
<get-range-based function="gst_base_src_pad_get_range"/>
<event-function function="gst_base_src_event_handler"/>
<query-function function="gst_base_src_query"/>
<query-type-func function="gst_pad_get_query_types_default">
</query-type-func>
<intlink-function function="gst_pad_get_internal_links_default"/>
</implementation>
</pad>
</pads>
<element-properties>
<element-property>
<name>buffer-time</name>
<type>gint64</type>
<nick>Buffer Time</nick>
<blurb>Size of audio buffer in microseconds</blurb>
<flags>RW</flags>
<range min="1" max="9223372036854775807"/>
<default>200000</default>
</element-property>
<element-property>
<name>latency-time</name>
<type>gint64</type>
<nick>Latency Time</nick>
<blurb>Audio latency in microseconds</blurb>
<flags>RW</flags>
<range min="1" max="9223372036854775807"/>
<default>10000</default>
</element-property>
<element-property>
<name>actual-buffer-time</name>
<type>gint64</type>
<nick>Actual Buffer Time</nick>
<blurb>Actual configured size of audio buffer in microseconds</blurb>
<flags>R</flags>
<range min="-1" max="9223372036854775807"/>
<default>-1</default>
</element-property>
<element-property>
<name>actual-latency-time</name>
<type>gint64</type>
<nick>Actual Latency Time</nick>
<blurb>Actual configured audio latency in microseconds</blurb>
<flags>R</flags>
<range min="-1" max="9223372036854775807"/>
<default>-1</default>
</element-property>
<element-property>
<name>provide-clock</name>
<type>gboolean</type>
<nick>Provide Clock</nick>
<blurb>Provide a clock to be used as the global pipeline clock</blurb>
<flags>RW</flags>
<default>TRUE</default>
</element-property>
<element-property>
<name>slave-method</name>
<type>GstBaseAudioSrcSlaveMethod</type>
<nick>Slave Method</nick>
<blurb>Algorithm to use to match the rate of the masterclock</blurb>
<flags>RW</flags>
<default>2</default>
<enum-values>
<value value="0" nick="resample"/>
<value value="1" nick="re-timestamp"/>
<value value="2" nick="skew"/>
<value value="3" nick="none"/>
</enum-values>
</element-property>
<element-property>
<name>device</name>
<type>gchararray</type>
<nick>Device</nick>
<blurb>Directshow device reference (classID/name)</blurb>
<flags>RW</flags>
<default>NULL</default>
</element-property>
<element-property>
<name>device-name</name>
<type>gchararray</type>
<nick>Device name</nick>
<blurb>Human-readable name of the sound device</blurb>
<flags>RW</flags>
<default>NULL</default>
</element-property>
</element-properties>
<element-signals>
</element-signals>
<element-actions>
</element-actions>
</element>

View file

@ -0,0 +1,86 @@
<element>
<name>dshowvideosink</name>
<details>
<long-name>DirectShow video sink</long-name>
<class>Sink/Video</class>
<description>Display data using a DirectShow video renderer</description>
<authors>Pioneers of the Inevitable &lt;songbird@songbirdnest.com&gt;</authors>
</details>
<object name="GstDshowVideoSink">
<object name="GstBaseSink">
<object name="GstElement">
<object name="GstObject">
<object name="GObject">
</object>
</object>
</object>
</object>
</object>
<interfaces>
<interface name="GstImplementsInterface" />
<interface name="GstXOverlay" />
</interfaces>
<pad-templates>
<pad-template>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<caps>video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc){ YUY2, UYVY, YUVY, YV12 }</caps>
</pad-template>
</pad-templates>
<element-flags>
</element-flags>
<element-implementation>
<state-change function="gst_dshowvideosink_change_state"/>
<save function="gst_element_save_thyself"/>
<load function="gst_element_restore_thyself"/>
</element-implementation>
<clocking-interaction>
</clocking-interaction>
<pads>
<pad>
<name>sink</name>
<direction>sink</direction>
<template>sink</template>
<implementation>
<chain-based function="gst_base_sink_chain"/>
<event-function function="gst_base_sink_event"/>
<query-function function="gst_pad_query_default"/>
<query-type-func function="gst_pad_get_query_types_default">
</query-type-func>
<intlink-function function="gst_pad_get_internal_links_default"/>
<bufferalloc-function function="gst_base_sink_pad_buffer_alloc"/>
</implementation>
</pad>
</pads>
<element-properties>
<element-property>
<name>force-aspect-ratio</name>
<type>gboolean</type>
<nick>Force aspect ratio</nick>
<blurb>When enabled, scaling will respect original aspect ratio</blurb>
<flags>RW</flags>
<default>FALSE</default>
</element-property>
<element-property>
<name>fullscreen</name>
<type>gboolean</type>
<nick>Full screen mode</nick>
<blurb>Use full-screen mode (not available when using XOverlay)</blurb>
<flags>RW</flags>
<default>FALSE</default>
</element-property>
<element-property>
<name>renderer</name>
<type>gchararray</type>
<nick>Renderer</nick>
<blurb>Force usage of specific DirectShow renderer (VMR9 or VMR)</blurb>
<flags>RW</flags>
<default>NULL</default>
</element-property>
</element-properties>
<element-signals>
</element-signals>
<element-actions>
</element-actions>
</element>

View file

@ -0,0 +1,78 @@
<element>
<name>dshowvideosrc</name>
<details>
<long-name>DirectShow video capture source</long-name>
<class>Source/Video</class>
<description>Receive data from a directshow video capture graph</description>
<authors>Sebastien Moutte &lt;sebastien@moutte.net&gt;</authors>
</details>
<object name="GstDshowVideoSrc">
<object name="GstPushSrc">
<object name="GstBaseSrc">
<object name="GstElement">
<object name="GstObject">
<object name="GObject">
</object>
</object>
</object>
</object>
</object>
</object>
<interfaces>
<interface name="GstPropertyProbe" />
</interfaces>
<pad-templates>
<pad-template>
<name>src</name>
<direction>src</direction>
<presence>always</presence>
<caps>video/x-raw-rgb, bpp=(int)24, depth=(int)24, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)I420; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)UYVY; video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)YUY2; video/x-dv, systemstream=(boolean)false, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc)dvsd; video/x-dv, systemstream=(boolean)true</caps>
</pad-template>
</pad-templates>
<element-flags>
</element-flags>
<element-implementation>
<state-change function="gst_dshowvideosrc_change_state"/>
<save function="gst_element_save_thyself"/>
<load function="gst_element_restore_thyself"/>
</element-implementation>
<clocking-interaction>
</clocking-interaction>
<pads>
<pad>
<name>src</name>
<direction>src</direction>
<template>src</template>
<implementation>
<get-range-based function="gst_base_src_pad_get_range"/>
<event-function function="gst_base_src_event_handler"/>
<query-function function="gst_base_src_query"/>
<query-type-func function="gst_pad_get_query_types_default">
</query-type-func>
<intlink-function function="gst_pad_get_internal_links_default"/>
</implementation>
</pad>
</pads>
<element-properties>
<element-property>
<name>device</name>
<type>gchararray</type>
<nick>Device</nick>
<blurb>Directshow device path (@..classID/name)</blurb>
<flags>RW</flags>
<default>NULL</default>
</element-property>
<element-property>
<name>device-name</name>
<type>gchararray</type>
<nick>Device name</nick>
<blurb>Human-readable name of the video device</blurb>
<flags>RW</flags>
<default>NULL</default>
</element-property>
</element-properties>
<element-signals>
</element-signals>
<element-actions>
</element-actions>
</element>

View file

@ -0,0 +1,31 @@
ELEMENTS = directdrawsink
NAMESPACE = Gst.GoodPlugins
INSPECT_FILES = $(patsubst %,$(srcdir)/inspect/%.raw,$(ELEMENTS))
METADATA_FILES = $(srcdir)/decodebin2.metadata $(srcdir)/playbin2.metadata
CS_FILES = $(patsubst %,$(builddir)/generated/%.cs,$(ELEMENTS))
XML_FILES = $(patsubst %,$(builddir)/%.xml,$(ELEMENTS))
EXTRA_DIST = $(METADATA_FILES) $(INSPECT_FILES)
CLEANFILES = $(XML_FILES) $(CS_FILES)
MAINTAINERCLEANFILES = Makefile.in
plugins-update: $(patsubst $(srcdir)/inspect/%.raw, inspect-%, $(INSPECT_FILES))
inspect-%:
$(top_builddir)/elementgen/gsts-xmlinspect $(patsubst inspect-%,%,$@) > inspect/$(patsubst inspect-%,%,$@).raw
all: $(XML_FILES) $(CS_FILES)
touch generated
generated/%.cs: $(top_builddir)/elementgen/element-gen.exe $(top_builddir)/gstreamer-sharp/gstreamer-api.xml $(builddir)/%.xml
@mkdir -p generated
$(MONO) $(top_builddir)/elementgen/element-gen.exe --namespace=$(NAMESPACE) \
--api=$(top_builddir)/gstreamer-sharp/gstreamer-api.xml --input=$(patsubst generated/%.cs,$(builddir)/%.xml,$@) --customfile=$(patsubst generated/%.cs,$(srcdir)/%.custom,$@) --interfacesdir=$(top_srcdir)/elementgen/interfaces > $@
%.xml: $(top_builddir)/parser/gst-gapi-fixup.exe $(srcdir)/inspect/%.raw $(srcdir)/%.metadata
cp $(patsubst %.xml,$(srcdir)/inspect/%.raw,$@) $(builddir)/$@
chmod +w $(builddir)/$@
$(MONO) $(top_builddir)/parser/gst-gapi-fixup.exe --api=$(builddir)/$@ --metadata=$(patsubst %.xml,$(srcdir)/%.metadata,$@)
%.xml: $(top_builddir)/parser/gst-gapi-fixup.exe $(srcdir)/inspect/%.raw
cp $(patsubst %.xml,$(srcdir)/inspect/%.raw,$@) $(builddir)/$@

View file

@ -0,0 +1,81 @@
<element>
<name>directdrawsink</name>
<details>
<long-name>Direct Draw Video Sink</long-name>
<class>Sink/Video</class>
<description>Output to a video card via Direct Draw</description>
<authors>Sebastien Moutte &lt;sebastien@moutte.net&gt;</authors>
</details>
<object name="GstDirectDrawSink">
<object name="GstVideoSink">
<object name="GstBaseSink">
<object name="GstElement">
<object name="GstObject">
<object name="GObject">
</object>
</object>
</object>
</object>
</object>
</object>
<interfaces>
<interface name="GstImplementsInterface" />
<interface name="GstXOverlay" />
<interface name="GstNavigation" />
</interfaces>
<pad-templates>
<pad-template>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<caps>video/x-raw-rgb, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]</caps>
</pad-template>
</pad-templates>
<element-flags>
</element-flags>
<element-implementation>
<state-change function="gst_directdraw_sink_change_state"/>
<save function="gst_element_save_thyself"/>
<load function="gst_element_restore_thyself"/>
</element-implementation>
<clocking-interaction>
</clocking-interaction>
<pads>
<pad>
<name>sink</name>
<direction>sink</direction>
<template>sink</template>
<implementation>
<chain-based function="gst_base_sink_chain"/>
<event-function function="gst_base_sink_event"/>
<query-function function="gst_pad_query_default"/>
<query-type-func function="gst_pad_get_query_types_default">
</query-type-func>
<intlink-function function="gst_pad_get_internal_links_default"/>
<bufferalloc-function function="gst_base_sink_pad_buffer_alloc"/>
</implementation>
</pad>
</pads>
<element-properties>
<element-property>
<name>show-preroll-frame</name>
<type>gboolean</type>
<nick>Show preroll frame</nick>
<blurb>Whether to render video frames during preroll</blurb>
<flags>RW</flags>
<default>TRUE</default>
</element-property>
<element-property>
<name>force-aspect-ratio</name>
<type>gboolean</type>
<nick>Force aspect ratio</nick>
<blurb>When enabled, scaling will respect original aspect ratio</blurb>
<flags>RW</flags>
<default>FALSE</default>
</element-property>
</element-properties>
<element-signals>
</element-signals>
<element-actions>
</element-actions>
</element>