Merge branch 'master' into 0.11

This commit is contained in:
Wim Taymans 2011-03-04 13:29:28 +01:00
commit 357fcbc306
36 changed files with 5346 additions and 95 deletions

2
common

@ -1 +1 @@
Subproject commit 1de7f6ab2d4bc1af69f06079cf0f4e2cbbfdc178
Subproject commit 6aec6b9716c184c60c4bc6a5916a2471cfa8c8cd

View file

@ -41,6 +41,8 @@ dnl we override it here if we need to for the release candidate of new series
GST_MAJORMINOR=0.11
AC_SUBST(GST_MAJORMINOR)
AG_GST_LIBTOOL_PREPARE
dnl FIXME: this macro doesn't actually work;
dnl the generated libtool script has no support for the listed tags.
dnl So this needs to be fixed first if we want to use this
@ -304,6 +306,7 @@ AG_GST_CHECK_PLUGIN(dtmf)
AG_GST_CHECK_PLUGIN(dvbsuboverlay)
AG_GST_CHECK_PLUGIN(dvdspu)
AG_GST_CHECK_PLUGIN(festival)
AG_GST_CHECK_PLUGIN(fieldanalysis)
AG_GST_CHECK_PLUGIN(freeze)
AG_GST_CHECK_PLUGIN(frei0r)
AG_GST_CHECK_PLUGIN(gaudieffects)
@ -636,6 +639,13 @@ AG_GST_CHECK_FEATURE(CELT, [celt], celt, [
dnl to prevent an error
true
])
PKG_CHECK_MODULES(CELT_0_11, celt >= 0.11.0, [
AC_DEFINE([HAVE_CELT_0_11], 1, [Define if libcelt 0.11 is installed])
], [
dnl to prevent an error
true
])
AC_SUBST(CELT_CFLAGS)
AC_SUBST(CELT_LIBS)
])
@ -651,6 +661,23 @@ AG_GST_CHECK_FEATURE(COG, [Cog plugin], cog, [
AC_SUBST(COG_LIBS)
])
dnl *** Curl ***
translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true)
AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [
PKG_CHECK_MODULES(CURL, libcurl >= 7.21.0, [
HAVE_CURL="yes"
AC_CHECK_HEADERS([unistd.h sys/socket.h sys/types.h netinet/in.h netinet/ip.h netinet/tcp.h fcntl.h],
[ ], [HAVE_CURL="no"])
AC_MSG_CHECKING([for socket support needed by curlsink])
AC_MSG_RESULT($HAVE_CURL)
], [
HAVE_CURL="no"
AC_MSG_RESULT(no)
])
AC_SUBST(CURL_CFLAGS)
AC_SUBST(CURL_LIBS)
])
dnl *** dc1394 ***
translit(dnm, m, l) AM_CONDITIONAL(USE_DC1394, true)
AG_GST_CHECK_FEATURE(DC1394, [libdc1394], dc1394, [
@ -1590,6 +1617,7 @@ AM_CONDITIONAL(USE_BZ2, false)
AM_CONDITIONAL(USE_CDAUDIO, false)
AM_CONDITIONAL(USE_CELT, false)
AM_CONDITIONAL(USE_COG, false)
AM_CONDITIONAL(USE_CURL, false)
AM_CONDITIONAL(USE_DC1394, false)
AM_CONDITIONAL(USE_DIRECTFB, false)
AM_CONDITIONAL(USE_DIRAC, false)
@ -1701,7 +1729,7 @@ AC_SUBST(GST_LIB_LDFLAGS)
dnl this really should only contain flags, not libs - they get added before
dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc\$\$' $GST_ALL_LDFLAGS"
GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc.*' $GST_ALL_LDFLAGS"
AC_SUBST(GST_PLUGIN_LDFLAGS)
dnl *** output files ***
@ -1733,6 +1761,7 @@ gst/dtmf/Makefile
gst/dvbsuboverlay/Makefile
gst/dvdspu/Makefile
gst/festival/Makefile
gst/fieldanalysis/Makefile
gst/freeze/Makefile
gst/frei0r/Makefile
gst/gaudieffects/Makefile
@ -1826,6 +1855,7 @@ ext/bz2/Makefile
ext/cdaudio/Makefile
ext/celt/Makefile
ext/cog/Makefile
ext/curl/Makefile
ext/dc1394/Makefile
ext/dirac/Makefile
ext/directfb/Makefile

View file

@ -94,6 +94,7 @@ EXTRA_HFILES = \
$(top_srcdir)/ext/amrwbenc/gstamrwbenc.h \
$(top_srcdir)/ext/celt/gstceltdec.h \
$(top_srcdir)/ext/celt/gstceltenc.h \
$(top_srcdir)/ext/curl/gstcurlsink.h \
$(top_srcdir)/ext/dc1394/gstdc1394.h \
$(top_srcdir)/ext/directfb/dfbvideosink.h \
$(top_srcdir)/ext/dts/gstdtsdec.h \

View file

@ -33,6 +33,7 @@
<xi:include href="xml/element-chromium.xml" />
<xi:include href="xml/element-circle.xml" />
<xi:include href="xml/element-coloreffects.xml" />
<xi:include href="xml/element-curlsink.xml" />
<xi:include href="xml/element-cvdilate.xml" />
<xi:include href="xml/element-cverode.xml" />
<xi:include href="xml/element-cvequalizehist.xml" />
@ -147,6 +148,7 @@
<xi:include href="xml/plugin-cdxaparse.xml" />
<xi:include href="xml/plugin-celt.xml" />
<xi:include href="xml/plugin-coloreffects.xml" />
<xi:include href="xml/plugin-curl.xml" />
<xi:include href="xml/plugin-dataurisrc.xml" />
<xi:include href="xml/plugin-dccp.xml" />
<xi:include href="xml/plugin-debugutilsbad.xml" />

View file

@ -244,6 +244,20 @@ GST_TYPE_COLOR_EFFECTS
gst_color_effects_get_type
</SECTION>
<SECTION>
<FILE>element-curlsink</FILE>
<TITLE>curlsink</TITLE>
GstCurlSink
<SUBSECTION Standard>
GstCurlSinkClass
GST_CURL_SINK
GST_CURL_SINK_CLASS
GST_IS_CURL_SINK
GST_IS_CURL_SINK_CLASS
GST_TYPE_CURL_SINK
gst_curl_sink_get_type
</SECTION>
<SECTION>
<FILE>element-cvdilate</FILE>
<TITLE>cvdilate</TITLE>

View file

@ -1675,7 +1675,7 @@
<FLAGS>rw</FLAGS>
<NICK>trans-mode</NICK>
<BLURB>Transmission Mode (DVB-T).</BLURB>
<DEFAULT>8k</DEFAULT>
<DEFAULT>8K</DEFAULT>
</ARG>
<ARG>
@ -17955,7 +17955,7 @@
<FLAGS>rw</FLAGS>
<NICK>trans-mode</NICK>
<BLURB>Transmission Mode (DVB-T).</BLURB>
<DEFAULT>8k</DEFAULT>
<DEFAULT>8K</DEFAULT>
</ARG>
<ARG>
@ -18322,7 +18322,7 @@
<NAME>GstH264Parse::split-packetized</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<FLAGS>rwx</FLAGS>
<NICK>Split packetized</NICK>
<BLURB>Split NAL units of packetized streams.</BLURB>
<DEFAULT>FALSE</DEFAULT>
@ -18352,7 +18352,7 @@
<NAME>GstH264Parse::config-interval</NAME>
<TYPE>guint</TYPE>
<RANGE><= 3600</RANGE>
<FLAGS>rw</FLAGS>
<FLAGS>rwx</FLAGS>
<NICK>SPS PPS Send Interval</NICK>
<BLURB>Send SPS and PPS Insertion Interval in seconds (sprop parameter sets will be multiplexed in the data stream when detected.) (0 = disabled).</BLURB>
<DEFAULT>0</DEFAULT>
@ -26510,7 +26510,7 @@
<FLAGS>rw</FLAGS>
<NICK>physics</NICK>
<BLURB>water density: from 1 to 4.</BLURB>
<DEFAULT>4.63015e-299</DEFAULT>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@ -26550,7 +26550,7 @@
<FLAGS>rw</FLAGS>
<NICK>splash</NICK>
<BLURB>make a big splash in the center.</BLURB>
<DEFAULT>7.7486e-304</DEFAULT>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@ -26560,7 +26560,7 @@
<FLAGS>rw</FLAGS>
<NICK>splash</NICK>
<BLURB>make a big splash in the center.</BLURB>
<DEFAULT>4.62957e-299</DEFAULT>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@ -26590,7 +26590,7 @@
<FLAGS>rw</FLAGS>
<NICK>ratiox</NICK>
<BLURB>x-ratio.</BLURB>
<DEFAULT>2.31928e-310</DEFAULT>
<DEFAULT>3.81574e-236</DEFAULT>
</ARG>
<ARG>
@ -26600,7 +26600,7 @@
<FLAGS>rw</FLAGS>
<NICK>ratioy</NICK>
<BLURB>y-ratio.</BLURB>
<DEFAULT>2.31928e-310</DEFAULT>
<DEFAULT>2.58656e-231</DEFAULT>
</ARG>
<ARG>
@ -26610,7 +26610,7 @@
<FLAGS>rw</FLAGS>
<NICK>DelayTime</NICK>
<BLURB>the delay time.</BLURB>
<DEFAULT>0</DEFAULT>
<DEFAULT>-6.17189e+303</DEFAULT>
</ARG>
<ARG>
@ -26640,7 +26640,7 @@
<FLAGS>rw</FLAGS>
<NICK>Color</NICK>
<BLURB>the color of the image.</BLURB>
<DEFAULT>0</DEFAULT>
<DEFAULT>7.05334e-30</DEFAULT>
</ARG>
<ARG>
@ -26650,7 +26650,7 @@
<FLAGS>rw</FLAGS>
<NICK>Color</NICK>
<BLURB>the color of the image.</BLURB>
<DEFAULT>0</DEFAULT>
<DEFAULT>7.05334e-30</DEFAULT>
</ARG>
<ARG>
@ -26990,7 +26990,7 @@
<FLAGS>rw</FLAGS>
<NICK>lredscale</NICK>
<BLURB>multiplier for downscaling non-edge brightness.</BLURB>
<DEFAULT>0</DEFAULT>
<DEFAULT>8.20251e-304</DEFAULT>
</ARG>
<ARG>
@ -27000,7 +27000,7 @@
<FLAGS>rw</FLAGS>
<NICK>lthresh</NICK>
<BLURB>threshold for edge lightening.</BLURB>
<DEFAULT>6.9235e+228</DEFAULT>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@ -27010,7 +27010,7 @@
<FLAGS>rw</FLAGS>
<NICK>lupscale</NICK>
<BLURB>multiplier for upscaling edge brightness.</BLURB>
<DEFAULT>0</DEFAULT>
<DEFAULT>7.74861e-304</DEFAULT>
</ARG>
<ARG>
@ -27180,7 +27180,7 @@
<FLAGS>rw</FLAGS>
<NICK>blend</NICK>
<BLURB>blend factor.</BLURB>
<DEFAULT>-6.17056e+303</DEFAULT>
<DEFAULT>8.20251e-304</DEFAULT>
</ARG>
<ARG>
@ -27190,7 +27190,7 @@
<FLAGS>rw</FLAGS>
<NICK>fader</NICK>
<BLURB>the fader position.</BLURB>
<DEFAULT>7.7486e-304</DEFAULT>
<DEFAULT>-5.83035e+303</DEFAULT>
</ARG>
<ARG>
@ -27370,7 +27370,7 @@
<FLAGS>rw</FLAGS>
<NICK>HSync</NICK>
<BLURB>the hsync offset.</BLURB>
<DEFAULT>2.38039e-316</DEFAULT>
<DEFAULT>1.86264e-09</DEFAULT>
</ARG>
<ARG>
@ -45499,7 +45499,7 @@
<RANGE>[0,1000000000]</RANGE>
<FLAGS>rw</FLAGS>
<NICK>Bit rate</NICK>
<BLURB>Bit rate.</BLURB>
<BLURB>Bit rate (in bits/sec).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
@ -47036,7 +47036,7 @@
<ARG>
<NAME>GstRsvgOverlay::x</NAME>
<TYPE>gint</TYPE>
<RANGE>>= 0</RANGE>
<RANGE>>= -2147483647</RANGE>
<FLAGS>rw</FLAGS>
<NICK>x offset</NICK>
<BLURB>Specify an x offset.</BLURB>
@ -47046,10 +47046,280 @@
<ARG>
<NAME>GstRsvgOverlay::y</NAME>
<TYPE>gint</TYPE>
<RANGE>>= 0</RANGE>
<RANGE>>= -2147483647</RANGE>
<FLAGS>rw</FLAGS>
<NICK>y offset</NICK>
<BLURB>Specify a y offset.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRsvgOverlay::height</NAME>
<TYPE>gint</TYPE>
<RANGE>>= -2147483647</RANGE>
<FLAGS>rw</FLAGS>
<NICK>height</NICK>
<BLURB>Specify a height in pixels.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRsvgOverlay::height-relative</NAME>
<TYPE>gfloat</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>relative height</NICK>
<BLURB>Specify a height relative to the display size.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRsvgOverlay::width</NAME>
<TYPE>gint</TYPE>
<RANGE>>= -2147483647</RANGE>
<FLAGS>rw</FLAGS>
<NICK>width</NICK>
<BLURB>Specify a width in pixels.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRsvgOverlay::width-relative</NAME>
<TYPE>gfloat</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>relative width</NICK>
<BLURB>Specify a width relative to the display size.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRsvgOverlay::x-relative</NAME>
<TYPE>gfloat</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>x relative offset</NICK>
<BLURB>Specify an x offset relative to the display size.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRsvgOverlay::y-relative</NAME>
<TYPE>gfloat</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>y relative offset</NICK>
<BLURB>Specify a y offset relative to the display size.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstLegacyH264Parse::access-unit</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Access Units</NICK>
<BLURB>Output Acess Units rather than NALUs.</BLURB>
<DEFAULT>FALSE</DEFAULT>
</ARG>
<ARG>
<NAME>GstLegacyH264Parse::config-interval</NAME>
<TYPE>guint</TYPE>
<RANGE><= 3600</RANGE>
<FLAGS>rw</FLAGS>
<NICK>SPS PPS Send Interval</NICK>
<BLURB>Send SPS and PPS Insertion Interval in seconds (sprop parameter sets will be multiplexed in the data stream when detected.) (0 = disabled).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstLegacyH264Parse::output-format</NAME>
<TYPE>GstH264ParseFormat</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Output Format</NICK>
<BLURB>Output Format of stream (bytestream or otherwise).</BLURB>
<DEFAULT>Input Format</DEFAULT>
</ARG>
<ARG>
<NAME>GstLegacyH264Parse::split-packetized</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Split packetized</NICK>
<BLURB>Split NAL units of packetized streams.</BLURB>
<DEFAULT>FALSE</DEFAULT>
</ARG>
<ARG>
<NAME>GstCsp::dither</NAME>
<TYPE>GstColorspaceDitherMethod</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Dither</NICK>
<BLURB>Apply dithering while converting.</BLURB>
<DEFAULT>No dithering (default)</DEFAULT>
</ARG>
<ARG>
<NAME>MpegTSParse2::program-numbers</NAME>
<TYPE>gchar*</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Program Numbers</NICK>
<BLURB>Colon separated list of programs.</BLURB>
<DEFAULT>""</DEFAULT>
</ARG>
<ARG>
<NAME>GstTSDemux::emit-stats</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Emit statistics</NICK>
<BLURB>Emit messages for every pcr/opcr/pts/dts.</BLURB>
<DEFAULT>FALSE</DEFAULT>
</ARG>
<ARG>
<NAME>GstTSDemux::program-number</NAME>
<TYPE>gint</TYPE>
<RANGE>>= G_MAXULONG</RANGE>
<FLAGS>rw</FLAGS>
<NICK>Program number</NICK>
<BLURB>Program Number to demux for (-1 to ignore).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::accept-self-signed</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Accept self-signed certificates</NICK>
<BLURB>Accept self-signed SSL/TLS certificates.</BLURB>
<DEFAULT>FALSE</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::content-type</NAME>
<TYPE>gchar*</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Content type</NICK>
<BLURB>The mime type of the body of the request.</BLURB>
<DEFAULT>NULL</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::file-name</NAME>
<TYPE>gchar*</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Base file name</NICK>
<BLURB>The base file name for the uploaded images.</BLURB>
<DEFAULT>NULL</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::location</NAME>
<TYPE>gchar*</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Location</NICK>
<BLURB>URI location to write to.</BLURB>
<DEFAULT>NULL</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::passwd</NAME>
<TYPE>gchar*</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>User password</NICK>
<BLURB>User password to use for server authentication.</BLURB>
<DEFAULT>NULL</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::proxy</NAME>
<TYPE>gchar*</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Proxy</NICK>
<BLURB>HTTP proxy server URI.</BLURB>
<DEFAULT>NULL</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::proxy-passwd</NAME>
<TYPE>gchar*</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Proxy user password</NICK>
<BLURB>Proxy user password to use for proxy authentication.</BLURB>
<DEFAULT>NULL</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::proxy-port</NAME>
<TYPE>gint</TYPE>
<RANGE>>= 0</RANGE>
<FLAGS>rw</FLAGS>
<NICK>Proxy port</NICK>
<BLURB>HTTP proxy server port.</BLURB>
<DEFAULT>3128</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::proxy-user</NAME>
<TYPE>gchar*</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Proxy user name</NICK>
<BLURB>Proxy user name to use for proxy authentication.</BLURB>
<DEFAULT>NULL</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::qos-dscp</NAME>
<TYPE>gint</TYPE>
<RANGE>[0,63]</RANGE>
<FLAGS>rw</FLAGS>
<NICK>QoS diff srv code point</NICK>
<BLURB>Quality of Service, differentiated services code point (0 default).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::timeout</NAME>
<TYPE>gint</TYPE>
<RANGE>>= 0</RANGE>
<FLAGS>rw</FLAGS>
<NICK>Timeout</NICK>
<BLURB>Number of seconds waiting to write before timeout.</BLURB>
<DEFAULT>30</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::use-content-length</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Use content length header</NICK>
<BLURB>Use the Content-Length HTTP header instead of Transfer-Encoding header.</BLURB>
<DEFAULT>FALSE</DEFAULT>
</ARG>
<ARG>
<NAME>GstCurlSink::user</NAME>
<TYPE>gchar*</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>User name</NICK>
<BLURB>User name to use for server authentication.</BLURB>
<DEFAULT>NULL</DEFAULT>
</ARG>

View file

@ -14,17 +14,22 @@ GObject
GstAsfMux
GstAsfParse
GstAssRender
GstAudioBaseParseBad
GstBaseParseBad
GstAacParse
GstAc3Parse
GstAmrParse
GstDcaParse
GstDiracParse
GstFlacParse
GstH263Parse
GstH264Parse
GstMpegAudioParse
GstBaseRTPDepayload
GstRtpDTMFDepay
GstRtpVP8Depay
GstBaseRTPPayload
GstRtpAsfPay
GstRtpVP8Pay
GstBaseSink
GstBaseAudioSink
GstAudioSink
@ -32,6 +37,7 @@ GObject
GstNasSink
GstSDLAudioSink
GstChecksumSink
GstCurlSink
GstDCCPClientSink
GstDCCPServerSink
GstFBDEVSink
@ -52,6 +58,7 @@ GObject
GstMMS
GstMythtvSrc
GstNeonhttpSrc
GstRTMPSrc
GstRfbSrc
GstShmSrc
GstVCDSrc
@ -181,8 +188,6 @@ GObject
GstDiracEnc
GstSchroEnc
GstVP8Enc
GstBaseVideoParse
GstSchroParse
GstBin
DvbBaseBin
GstAutoConvert
@ -216,7 +221,6 @@ GObject
GstGPPMux
GstGSMDec
GstGSMEnc
GstH264Parse
GstISMLMux
GstId3BaseMux
GstId3Mux
@ -231,6 +235,7 @@ GObject
GstKateParse
GstKateTag
GstKateTiger
GstLegacyH264Parse
GstLiveAdder
GstMJ2Mux
GstMP4Mux
@ -436,6 +441,9 @@ GObject
Gstpyramidsegment
Gsttextwrite
MpegPsMux
MpegTSBase
GstTSDemux
MpegTSParse2
MpegTSParse
MpegTsMux
MpegVideoParse

View file

@ -14,13 +14,14 @@ GstAutoConvert GstChildProxy
GstAutoVideoConvert GstChildProxy
GstSDPDemux GstChildProxy
GstFPSDisplaySink GstChildProxy
GstMpeg2enc GstPreset
GstSDLVideoSink GstImplementsInterface GstXOverlay GstNavigation
GstDfbVideoSink GstImplementsInterface GstNavigation GstColorBalance
VdpSink GstImplementsInterface GstNavigation GstXOverlay
GstApExSink GstImplementsInterface GstMixer
GstMpeg2enc GstPreset
GstCeltEnc GstTagSetter GstPreset
GstCDAudio GstURIHandler
GstRTMPSrc GstURIHandler
GstMythtvSrc GstURIHandler
GstMMS GstURIHandler
GstNeonhttpSrc GstURIHandler

View file

@ -20,13 +20,13 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc){ I420, NV12, NV21, YV12, YUY2, Y42B, Y444, YUV9, YVU9, Y41B, Y800, Y8 , GREY, Y16 , UYVY, YVYU, IYU1, v308, AYUV, v210, A420 }; video/x-raw-rgb, bpp=(int)24, depth=(int)24, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)24, depth=(int)24, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, alpha_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, alpha_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, alpha_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, alpha_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, endianness=(int)1234, red_mask=(int)63488, green_mask=(int)2016, blue_mask=(int)31, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, endianness=(int)1234, red_mask=(int)31, green_mask=(int)2016, blue_mask=(int)63488, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)15, endianness=(int)1234, red_mask=(int)31744, green_mask=(int)992, blue_mask=(int)31, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)15, endianness=(int)1234, red_mask=(int)31, green_mask=(int)992, blue_mask=(int)31744, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)8, depth=(int)8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)8, depth=(int)8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)16, depth=(int)16, endianness=(int)4321, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)16, depth=(int)16, endianness=(int)1234, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
<details>video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc){ I420, NV12, NV21, YV12, YUY2, Y42B, Y444, YUV9, YVU9, Y41B, Y800, Y8 , GREY, Y16 , UYVY, YVYU, IYU1, v308, AYUV, v210, v216, A420, AY64 }; video/x-raw-rgb, bpp=(int)24, depth=(int)24, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)24, depth=(int)24, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, alpha_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, alpha_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, alpha_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, alpha_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, endianness=(int)1234, red_mask=(int)63488, green_mask=(int)2016, blue_mask=(int)31, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, endianness=(int)1234, red_mask=(int)31, green_mask=(int)2016, blue_mask=(int)63488, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)15, endianness=(int)1234, red_mask=(int)31744, green_mask=(int)992, blue_mask=(int)31, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)15, endianness=(int)1234, red_mask=(int)31, green_mask=(int)992, blue_mask=(int)31744, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)8, depth=(int)8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)8, depth=(int)8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)16, depth=(int)16, endianness=(int)4321, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)16, depth=(int)16, endianness=(int)1234, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)30, endianness=(int)4321, red_mask=(int)1072693248, green_mask=(int)1047552, blue_mask=(int)1023, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)64, depth=(int)64, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, alpha_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc){ I420, NV12, NV21, YV12, YUY2, Y42B, Y444, YUV9, YVU9, Y41B, Y800, Y8 , GREY, Y16 , UYVY, YVYU, IYU1, v308, AYUV, v210, A420 }; video/x-raw-rgb, bpp=(int)24, depth=(int)24, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)24, depth=(int)24, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, alpha_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, alpha_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, alpha_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, alpha_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, endianness=(int)1234, red_mask=(int)63488, green_mask=(int)2016, blue_mask=(int)31, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, endianness=(int)1234, red_mask=(int)31, green_mask=(int)2016, blue_mask=(int)63488, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)15, endianness=(int)1234, red_mask=(int)31744, green_mask=(int)992, blue_mask=(int)31, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)15, endianness=(int)1234, red_mask=(int)31, green_mask=(int)992, blue_mask=(int)31744, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)8, depth=(int)8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)8, depth=(int)8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)16, depth=(int)16, endianness=(int)4321, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)16, depth=(int)16, endianness=(int)1234, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
<details>video/x-raw-yuv, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(fourcc){ I420, NV12, NV21, YV12, YUY2, Y42B, Y444, YUV9, YVU9, Y41B, Y800, Y8 , GREY, Y16 , UYVY, YVYU, IYU1, v308, AYUV, v210, v216, A420, AY64 }; video/x-raw-rgb, bpp=(int)24, depth=(int)24, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)24, depth=(int)24, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)-16777216, green_mask=(int)16711680, blue_mask=(int)65280, alpha_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, alpha_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, alpha_mask=(int)255, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)16711680, alpha_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, endianness=(int)1234, red_mask=(int)63488, green_mask=(int)2016, blue_mask=(int)31, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, endianness=(int)1234, red_mask=(int)31, green_mask=(int)2016, blue_mask=(int)63488, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)15, endianness=(int)1234, red_mask=(int)31744, green_mask=(int)992, blue_mask=(int)31, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)15, endianness=(int)1234, red_mask=(int)31, green_mask=(int)992, blue_mask=(int)31744, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)8, depth=(int)8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)8, depth=(int)8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)16, depth=(int)16, endianness=(int)4321, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-gray, bpp=(int)16, depth=(int)16, endianness=(int)1234, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)32, depth=(int)30, endianness=(int)4321, red_mask=(int)1072693248, green_mask=(int)1047552, blue_mask=(int)1023, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)64, depth=(int)64, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, alpha_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
</pads>
</element>

View file

@ -0,0 +1,28 @@
<plugin>
<name>curl</name>
<description>libcurl-based elements</description>
<filename>../../ext/curl/.libs/libgstcurl.so</filename>
<basename>libgstcurl.so</basename>
<version>0.10.21.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins git</package>
<origin>Unknown package origin</origin>
<elements>
<element>
<name>curlsink</name>
<longname>Curl sink</longname>
<class>Sink/Network</class>
<description>Upload data over the network to a server using libcurl</description>
<author>Patricia Muscalu &lt;patricia@axis.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>ANY</details>
</caps>
</pads>
</element>
</elements>
</plugin>

View file

@ -10,7 +10,7 @@
<origin>Unknown package origin</origin>
<elements>
<element>
<name>h264parse</name>
<name>legacyh264parse</name>
<longname>H264Parse</longname>
<class>Codec/Parser/Video</class>
<description>Parses raw h264 stream</description>

View file

@ -0,0 +1,79 @@
<plugin>
<name>mpegtsdemux</name>
<description>MPEG TS demuxer</description>
<filename>../../gst/mpegtsdemux/.libs/libgstmpegtsdemux.so</filename>
<basename>libgstmpegtsdemux.so</basename>
<version>0.10.21.1</version>
<license>unknown</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins git</package>
<origin>Unknown package origin</origin>
<elements>
<element>
<name>tsdemux</name>
<longname>MPEG transport stream demuxer</longname>
<class>Codec/Demuxer</class>
<description>Demuxes MPEG2 transport streams</description>
<author>Zaheer Abbas Merali &lt;zaheerabbas at merali dot org&gt;; Edward Hervey &lt;edward.hervey@collabora.co.uk&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>video/mpegts, systemstream=(boolean)true</details>
</caps>
<caps>
<name>audio_%04x</name>
<direction>source</direction>
<presence>sometimes</presence>
<details>audio/mpeg, mpegversion=(int){ 1, 4 }; audio/x-lpcm, width=(int){ 16, 20, 24 }, rate=(int){ 48000, 96000 }, channels=(int)[ 1, 8 ], dynamic_range=(int)[ 0, 255 ], emphasis=(boolean){ false, true }, mute=(boolean){ false, true }; audio/x-ac3; audio/x-eac3; audio/x-dts; audio/x-private-ts-lpcm</details>
</caps>
<caps>
<name>private_%04x</name>
<direction>source</direction>
<presence>sometimes</presence>
<details>ANY</details>
</caps>
<caps>
<name>subpicture_%04x</name>
<direction>source</direction>
<presence>sometimes</presence>
<details>subpicture/x-pgs; video/x-dvd-subpicture</details>
</caps>
<caps>
<name>video_%04x</name>
<direction>source</direction>
<presence>sometimes</presence>
<details>video/mpeg, mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false; video/x-h264; video/x-dirac; video/x-wmv, wmvversion=(int)3, format=(fourcc)WVC1</details>
</caps>
</pads>
</element>
<element>
<name>tsparse</name>
<longname>MPEG transport stream parser</longname>
<class>Codec/Parser</class>
<description>Parses MPEG2 transport streams</description>
<author>Alessandro Decina &lt;alessandro@nnva.org&gt;, Zaheer Abbas Merali &lt;zaheerabbas at merali dot org&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>video/mpegts, systemstream=(boolean)true</details>
</caps>
<caps>
<name>program_%d</name>
<direction>source</direction>
<presence>sometimes</presence>
<details>video/mpegts, systemstream=(boolean)true</details>
</caps>
<caps>
<name>src%d</name>
<direction>source</direction>
<presence>request</presence>
<details>video/mpegts, systemstream=(boolean)true</details>
</caps>
</pads>
</element>
</elements>
</plugin>

View file

@ -0,0 +1,28 @@
<plugin>
<name>rtmpsrc</name>
<description>RTMP source</description>
<filename>../../ext/rtmp/.libs/libgstrtmp.so</filename>
<basename>libgstrtmp.so</basename>
<version>0.10.21.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins git</package>
<origin>Unknown package origin</origin>
<elements>
<element>
<name>rtmpsrc</name>
<longname>RTMP Source</longname>
<class>Source/File</class>
<description>Read RTMP streams</description>
<author>Bastien Nocera &lt;hadess@hadess.net&gt;, Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</author>
<pads>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>ANY</details>
</caps>
</pads>
</element>
</elements>
</plugin>

View file

@ -0,0 +1,55 @@
<plugin>
<name>rtpvp8</name>
<description>rtpvp8</description>
<filename>../../gst/rtpvp8/.libs/libgstrtpvp8.so</filename>
<basename>libgstrtpvp8.so</basename>
<version>0.10.21.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins git</package>
<origin>Unknown package origin</origin>
<elements>
<element>
<name>rtpvp8depay</name>
<longname>RTP VP8 depayloader</longname>
<class>Codec/Depayloader/Network/RTP</class>
<description>Extracts VP8 video from RTP packets)</description>
<author>Sjoerd Simons &lt;sjoerd@luon.net&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>application/x-rtp, payload=(int)[ 96, 127 ], clock-rate=(int)90000, media=(string)video, encoding-name=(string)VP8-DRAFT-0-3-2</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-vp8</details>
</caps>
</pads>
</element>
<element>
<name>rtpvp8pay</name>
<longname>RTP VP8 payloader</longname>
<class>Codec/Payloader/Network/RTP</class>
<description>Puts VP8 video in RTP packets)</description>
<author>Sjoerd Simons &lt;sjoerd@luon.net&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>video/x-vp8</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>application/x-rtp, payload=(int)[ 96, 127 ], clock-rate=(int)90000, encoding-name=(string)VP8-DRAFT-0-3-2</details>
</caps>
</pads>
</element>
</elements>
</plugin>

View file

@ -51,26 +51,5 @@
</caps>
</pads>
</element>
<element>
<name>schroparse</name>
<longname>Dirac Parser</longname>
<class>Codec/Parser/Video</class>
<description>Parse Dirac streams</description>
<author>David Schleef &lt;ds@schleef.org&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>video/x-dirac</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-dirac; video/x-qt-part; video/x-avi-part; video/x-mp4-part</details>
</caps>
</pads>
</element>
</elements>
</plugin>

View file

@ -0,0 +1,76 @@
<plugin>
<name>videoparsersbad</name>
<description>videoparsers</description>
<filename>../../gst/videoparsers/.libs/libgstvideoparsersbad.so</filename>
<basename>libgstvideoparsersbad.so</basename>
<version>0.10.21.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins git</package>
<origin>Unknown package origin</origin>
<elements>
<element>
<name>diracparse</name>
<longname>FIXME</longname>
<class>Generic</class>
<description>FIXME</description>
<author>David Schleef &lt;ds@schleef.org&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>application/unknown</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>application/unknown</details>
</caps>
</pads>
</element>
<element>
<name>h263parse</name>
<longname>H.263 parser</longname>
<class>Codec/Parser/Video</class>
<description>Parses H.263 streams</description>
<author>Arun Raghavan &lt;arun.raghavan@collabora.co.uk&gt;,Edward Hervey &lt;edward.hervey@collabora.co.uk&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>video/x-h263, variant=(string)itu, parsed=(boolean)false</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-h263, variant=(string)itu, parsed=(boolean)true</details>
</caps>
</pads>
</element>
<element>
<name>h264parse</name>
<longname>H.264 parser</longname>
<class>Codec/Parser/Video</class>
<description>Parses H.264 streams</description>
<author>Mark Nauwelaerts &lt;mark.nauwelaerts@collabora.co.uk&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>video/x-h264, parsed=(boolean)false</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-h264, parsed=(boolean)true</details>
</caps>
</pads>
</element>
</elements>
</plugin>

View file

@ -64,6 +64,12 @@ else
COG_DIR=
endif
if USE_CURL
CURL_DIR=curl
else
CURL_DIR=
endif
if USE_DC1394
DC1394_DIR=dc1394
else
@ -379,6 +385,7 @@ SUBDIRS=\
$(CDAUDIO_DIR) \
$(CELT_DIR) \
$(COG_DIR) \
$(CURL_DIR) \
$(DC1394_DIR) \
$(DIRAC_DIR) \
$(DIRECTFB_DIR) \

View file

@ -510,10 +510,15 @@ celt_dec_chain_parse_header (GstCeltDec * dec, GstBuffer * buf)
goto mode_init_failed;
/* initialize the decoder */
#ifdef HAVE_CELT_0_11
dec->state =
celt_decoder_create_custom (dec->mode, dec->header.nb_channels, &error);
#else
#ifdef HAVE_CELT_0_7
dec->state = celt_decoder_create (dec->mode, dec->header.nb_channels, &error);
#else
dec->state = celt_decoder_create (dec->mode);
#endif
#endif
if (!dec->state)
goto init_failed;

View file

@ -629,10 +629,14 @@ gst_celt_enc_setup (GstCeltEnc * enc)
if (!enc->mode)
goto mode_initialization_failed;
#ifdef HAVE_CELT_0_11
celt_header_init (&enc->header, enc->mode, enc->frame_size, enc->channels);
#else
#ifdef HAVE_CELT_0_7
celt_header_init (&enc->header, enc->mode, enc->channels);
#else
celt_header_init (&enc->header, enc->mode);
#endif
#endif
enc->header.nb_channels = enc->channels;
@ -642,10 +646,14 @@ gst_celt_enc_setup (GstCeltEnc * enc)
celt_mode_info (enc->mode, CELT_GET_FRAME_SIZE, &enc->frame_size);
#endif
#ifdef HAVE_CELT_0_11
enc->state = celt_encoder_create_custom (enc->mode, enc->channels, &error);
#else
#ifdef HAVE_CELT_0_7
enc->state = celt_encoder_create (enc->mode, enc->channels, &error);
#else
enc->state = celt_encoder_create (enc->mode);
#endif
#endif
if (!enc->state)
goto encoder_creation_failed;

15
ext/curl/Makefile.am Normal file
View file

@ -0,0 +1,15 @@
plugin_LTLIBRARIES = libgstcurl.la
libgstcurl_la_SOURCES = gstcurl.c gstcurlsink.c
libgstcurl_la_CFLAGS = \
$(GST_BASE_CFLAGS) \
$(GST_CFLAGS) \
$(CURL_CFLAGS)
libgstcurl_la_LIBADD = \
$(GST_BASE_LIBS) \
$(GST_LIBS) \
$(CURL_LIBS)
libgstcurl_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstcurl_la_LIBTOOLFLAGS = --tag=disable-static
noinst_HEADERS = gstcurlsink.h

40
ext/curl/gstcurl.c Normal file
View file

@ -0,0 +1,40 @@
/* GStreamer
* Copyright (C) 2011 Axis Communications <dev-gstreamer@axis.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "gstcurlsink.h"
static gboolean
plugin_init (GstPlugin * plugin)
{
if (!gst_element_register (plugin, "curlsink", GST_RANK_NONE,
GST_TYPE_CURL_SINK))
return FALSE;
return TRUE;
}
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"curl",
"libcurl-based elements",
plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)

1268
ext/curl/gstcurlsink.c Normal file

File diff suppressed because it is too large Load diff

100
ext/curl/gstcurlsink.h Normal file
View file

@ -0,0 +1,100 @@
/* GStreamer
* Copyright (C) 2011 Axis Communications <dev-gstreamer@axis.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef __GST_CURL_SINK__
#define __GST_CURL_SINK__
#include <gst/gst.h>
#include <gst/base/gstbasesink.h>
#include <curl/curl.h>
G_BEGIN_DECLS
#define GST_TYPE_CURL_SINK \
(gst_curl_sink_get_type())
#define GST_CURL_SINK(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_CURL_SINK, GstCurlSink))
#define GST_CURL_SINK_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_CURL_SINK, GstCurlSinkClass))
#define GST_IS_CURL_SINK(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_CURL_SINK))
#define GST_IS_CURL_SINK_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_CURL_SINK))
typedef struct _GstCurlSink GstCurlSink;
typedef struct _GstCurlSinkClass GstCurlSinkClass;
typedef struct _TransferBuffer TransferBuffer;
typedef struct _TransferCondition TransferCondition;
struct _TransferBuffer {
guint8 *ptr;
size_t len;
size_t offset;
};
struct _TransferCondition {
GCond *cond;
gboolean data_sent;
gboolean data_available;
};
struct _GstCurlSink
{
GstBaseSink parent;
/*< private >*/
CURLM *multi_handle;
CURL *curl;
struct curl_slist *header_list;
GstPollFD fd;
GstPoll *fdset;
GThread *transfer_thread;
GstFlowReturn flow_ret;
TransferBuffer *transfer_buf;
TransferCondition *transfer_cond;
gint num_buffers_per_packet;
gint timeout;
gchar *url;
gchar *user;
gchar *passwd;
gchar *proxy;
guint proxy_port;
gchar *proxy_user;
gchar *proxy_passwd;
gchar *file_name;
guint qos_dscp;
gboolean accept_self_signed;
gboolean use_content_length;
gboolean transfer_thread_close;
gboolean new_file;
gchar *content_type;
gboolean proxy_headers_set;
};
struct _GstCurlSinkClass
{
GstBaseSinkClass parent_class;
};
GType gst_curl_sink_get_type (void);
G_END_DECLS
#endif

View file

@ -256,12 +256,13 @@ refuse_caps:
}
}
static gboolean
static GstFlowReturn
gst_jasper_dec_negotiate (GstJasperDec * dec, jas_image_t * image)
{
GstFlowReturn flow_ret = GST_FLOW_OK;
gint width, height, channels;
gint i, j;
gboolean negotiate = FALSE, ret = TRUE;
gboolean negotiate = FALSE;
jas_clrspc_t clrspc;
GstCaps *allowed_caps, *caps;
@ -316,7 +317,7 @@ gst_jasper_dec_negotiate (GstJasperDec * dec, jas_image_t * image)
goto done;
/* clear and refresh to new state */
ret = FALSE;
flow_ret = GST_FLOW_NOT_NEGOTIATED;
dec->format = GST_VIDEO_FORMAT_UNKNOWN;
dec->width = width;
dec->height = height;
@ -419,24 +420,30 @@ gst_jasper_dec_negotiate (GstJasperDec * dec, jas_image_t * image)
GST_DEBUG_OBJECT (dec, "Set format to %d, size to %dx%d", dec->format,
dec->width, dec->height);
ret = gst_pad_set_caps (dec->srcpad, caps);
if (!gst_pad_set_caps (dec->srcpad, caps))
flow_ret = GST_FLOW_NOT_NEGOTIATED;
else
flow_ret = GST_FLOW_OK;
gst_caps_unref (caps);
}
done:
return ret;
return flow_ret;
/* ERRORS */
fail_image:
{
GST_DEBUG_OBJECT (dec, "Failed to process decoded image.");
ret = FALSE;
flow_ret = GST_FLOW_NOT_NEGOTIATED;
goto done;
}
not_supported:
{
GST_DEBUG_OBJECT (dec, "Decoded image has unsupported colour space.");
ret = FALSE;
GST_ELEMENT_ERROR (dec, STREAM, DECODE, (NULL), ("Unsupported colorspace"));
flow_ret = GST_FLOW_ERROR;
goto done;
}
}
@ -460,7 +467,8 @@ gst_jasper_dec_get_picture (GstJasperDec * dec, guint8 * data,
if (!(image = jas_image_decode (stream, dec->fmt, (char *) "")))
goto fail_decode;
if (!gst_jasper_dec_negotiate (dec, image))
ret = gst_jasper_dec_negotiate (dec, image);
if (ret != GST_FLOW_OK)
goto fail_negotiate;
ret = gst_pad_alloc_buffer_and_set_caps (dec->srcpad,
@ -548,7 +556,6 @@ no_buffer:
fail_negotiate:
{
GST_DEBUG_OBJECT (dec, "Failed to determine output caps.");
ret = GST_FLOW_NOT_NEGOTIATED;
goto done;
}
}

View file

@ -65,6 +65,8 @@ GST_STATIC_PAD_TEMPLATE ("sink",
GST_DEBUG_CATEGORY_STATIC (fps_display_sink_debug);
#define GST_CAT_DEFAULT fps_display_sink_debug
#define DEFAULT_SYNC TRUE
enum
{
/* FILL ME */
@ -114,7 +116,7 @@ fps_display_sink_class_init (GstFPSDisplaySinkClass * klass)
g_object_class_install_property (gobject_klass, ARG_SYNC,
g_param_spec_boolean ("sync",
"Sync", "Sync on the clock (if the internally used sink doesn't "
"have this property it will be ignored", TRUE,
"have this property it will be ignored", DEFAULT_SYNC,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
g_object_class_install_property (gobject_klass, ARG_TEXT_OVERLAY,
@ -310,7 +312,7 @@ static void
fps_display_sink_init (GstFPSDisplaySink * self,
GstFPSDisplaySinkClass * g_class)
{
self->sync = FALSE;
self->sync = DEFAULT_SYNC;
self->signal_measurements = DEFAULT_SIGNAL_FPS_MEASUREMENTS;
self->use_text_overlay = TRUE;
self->fps_update_interval = GST_MSECOND * DEFAULT_FPS_UPDATE_INTERVAL_MS;

View file

@ -0,0 +1,26 @@
plugin_LTLIBRARIES = libgstfieldanalysis.la
ORC_SOURCE=gstfieldanalysisorc
include $(top_srcdir)/common/orc.mak
libgstfieldanalysis_la_SOURCES = gstfieldanalysis.c gstfieldanalysis.h
nodist_libgstfieldanalysis_la_SOURCES = $(ORC_NODIST_SOURCES)
libgstfieldanalysis_la_CFLAGS = \
$(GST_PLUGINS_BAD_CFLAGS) \
$(GST_PLUGINS_BASE_CFLAGS) \
$(GST_BASE_CFLAGS) \
$(GST_CFLAGS) \
$(ORC_CFLAGS)
libgstfieldanalysis_la_LIBADD = \
$(top_builddir)/gst-libs/gst/video/libgstbasevideo-@GST_MAJORMINOR@.la \
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-@GST_MAJORMINOR@ \
$(GST_BASE_LIBS) \
$(GST_LIBS) \
$(ORC_LIBS)
libgstfieldanalysis_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstfieldanalysis_la_LIBTOOLFLAGS = --tag=disable-static
noinst_HEADERS = gstfieldanalysis.h

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,144 @@
/*
* GStreamer
* Copyright (C) 2010 Robert Swain <robert.swain@collabora.co.uk>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
* Alternatively, the contents of this file may be used under the
* GNU Lesser General Public License Version 2.1 (the "LGPL"), in
* which case the following provisions apply instead of the ones
* mentioned above:
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef __GST_FIELDANALYSIS_H__
#define __GST_FIELDANALYSIS_H__
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_FIELDANALYSIS \
(gst_field_analysis_get_type())
#define GST_FIELDANALYSIS(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FIELDANALYSIS,GstFieldAnalysis))
#define GST_FIELDANALYSIS_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FIELDANALYSIS,GstFieldAnalysisClass))
#define GST_IS_FIELDANALYSIS(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FIELDANALYSIS))
#define GST_IS_FIELDANALYSIS_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FIELDANALYSIS))
typedef struct _GstFieldAnalysis GstFieldAnalysis;
typedef struct _GstFieldAnalysisClass GstFieldAnalysisClass;
typedef struct _FieldAnalysisFields FieldAnalysisFields;
typedef struct _FieldAnalysis FieldAnalysis;
typedef enum
{
FIELD_ANALYSIS_PROGRESSIVE,
FIELD_ANALYSIS_INTERLACED,
FIELD_ANALYSIS_TELECINE_PROGRESSIVE,
FIELD_ANALYSIS_TELECINE_MIXED
} FieldAnalysisConclusion;
enum FieldParity
{
TOP_FIELD,
BOTTOM_FIELD,
BOTH_FIELDS
};
struct _FieldAnalysisFields
{
GstBuffer *buf;
gboolean parity;
};
struct _FieldAnalysis
{
/* frame, top, bottom, top with prev bottom, bottom with prev top */
gfloat f, t, b, t_b, b_t;
FieldAnalysisConclusion conclusion;
/* -1 - unknown; 0 - holding none; 1 - top field; 2 - bottom field; 3 - both */
gint holding;
gboolean gap;
};
typedef enum
{
METHOD_32DETECT,
METHOD_IS_COMBED,
METHOD_5_TAP
} FieldAnalysisCombMethod;
struct _GstFieldAnalysis
{
GstElement element;
GstPad *sinkpad, *srcpad;
GQueue *frames;
gint width, height;
gint data_offset;
gint line_stride; /* step size in bytes from the 0th sample of one line to the next */
gint sample_incr; /* step size in bytes from one sample to the next */
FieldAnalysis results[2];
gfloat (*same_field) (GstFieldAnalysis *, FieldAnalysisFields *);
gfloat (*same_frame) (GstFieldAnalysis *, FieldAnalysisFields *);
guint64 (*block_score_for_row) (GstFieldAnalysis *, guint8 *, guint8 *);
gboolean is_telecine;
gboolean first_buffer; /* indicates the first buffer for which a buffer will be output
* after a discont or flushing seek */
guint8 *comb_mask;
guint *block_scores;
gboolean flushing; /* indicates whether we are flushing or not */
/* properties */
guint32 noise_floor; /* threshold for the result of a metric to be valid */
gfloat field_thresh; /* threshold used for the same parity field metric */
gfloat frame_thresh; /* threshold used for the opposite parity field metric */
gint64 spatial_thresh; /* threshold used spatial comb detection */
guint64 block_width, block_height; /* width/height of window used for comb clusted detection */
guint64 block_thresh;
guint64 ignored_lines;
};
struct _GstFieldAnalysisClass
{
GstElementClass parent_class;
};
GType gst_field_analysis_get_type (void);
G_END_DECLS
#endif /* __GST_FIELDANALYSIS_H__ */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,72 @@
/* autogenerated from gstfieldanalysisorc.orc */
#ifndef _GSTFIELDANALYSISORC_H_
#define _GSTFIELDANALYSISORC_H_
#include <glib.h>
#ifdef __cplusplus
extern "C" {
#endif
void gst_fieldanalysis_orc_init (void);
#ifndef _ORC_INTEGER_TYPEDEFS_
#define _ORC_INTEGER_TYPEDEFS_
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
#include <stdint.h>
typedef int8_t orc_int8;
typedef int16_t orc_int16;
typedef int32_t orc_int32;
typedef int64_t orc_int64;
typedef uint8_t orc_uint8;
typedef uint16_t orc_uint16;
typedef uint32_t orc_uint32;
typedef uint64_t orc_uint64;
#define ORC_UINT64_C(x) UINT64_C(x)
#elif defined(_MSC_VER)
typedef signed __int8 orc_int8;
typedef signed __int16 orc_int16;
typedef signed __int32 orc_int32;
typedef signed __int64 orc_int64;
typedef unsigned __int8 orc_uint8;
typedef unsigned __int16 orc_uint16;
typedef unsigned __int32 orc_uint32;
typedef unsigned __int64 orc_uint64;
#define ORC_UINT64_C(x) (x##Ui64)
#else
#include <limits.h>
typedef signed char orc_int8;
typedef short orc_int16;
typedef int orc_int32;
typedef unsigned char orc_uint8;
typedef unsigned short orc_uint16;
typedef unsigned int orc_uint32;
#if INT_MAX == LONG_MAX
typedef long long orc_int64;
typedef unsigned long long orc_uint64;
#define ORC_UINT64_C(x) (x##ULL)
#else
typedef long orc_int64;
typedef unsigned long orc_uint64;
#define ORC_UINT64_C(x) (x##UL)
#endif
#endif
typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;
typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;
typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64;
#endif
void orc_same_parity_sad_planar_yuv (guint32 * a1, const orc_uint8 * s1, const orc_uint8 * s2, int p2, int n);
void orc_same_parity_ssd_planar_yuv (guint32 * a1, const orc_uint8 * s1, const orc_uint8 * s2, int p2, int n);
void orc_same_parity_3_tap_planar_yuv (guint32 * a1, const orc_uint8 * s1, const orc_uint8 * s2, const orc_uint8 * s3, const orc_uint8 * s4, const orc_uint8 * s5, const orc_uint8 * s6, int p2, int n);
void orc_opposite_parity_5_tap_planar_yuv (guint32 * a1, const orc_uint8 * s1, const orc_uint8 * s2, const orc_uint8 * s3, const orc_uint8 * s4, const orc_uint8 * s5, int p2, int n);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -0,0 +1,119 @@
.init gst_fieldanalysis_orc_init
.function orc_same_parity_sad_planar_yuv
.accumulator 4 a1 guint32
.source 1 s1
.source 1 s2
# noise threshold
.param 4 nt
.temp 2 t1
.temp 2 t2
.temp 4 t3
.temp 4 t4
convubw t1, s1
convubw t2, s2
subw t1, t1, t2
absw t1, t1
convuwl t3, t1
cmpgtsl t4, t3, nt
andl t3, t3, t4
accl a1, t3
.function orc_same_parity_ssd_planar_yuv
.accumulator 4 a1 guint32
.source 1 s1
.source 1 s2
# noise threshold
.param 4 nt
.temp 2 t1
.temp 2 t2
.temp 4 t3
.temp 4 t4
convubw t1, s1
convubw t2, s2
subw t1, t1, t2
mulswl t3, t1, t1
cmpgtsl t4, t3, nt
andl t3, t3, t4
accl a1, t3
.function orc_same_parity_3_tap_planar_yuv
.accumulator 4 a1 guint32
.source 1 s1
.source 1 s2
.source 1 s3
.source 1 s4
.source 1 s5
.source 1 s6
# noise threshold
.param 4 nt
.temp 2 t1
.temp 2 t2
.temp 2 t3
.temp 2 t4
.temp 2 t5
.temp 2 t6
.temp 4 t7
.temp 4 t8
convubw t1, s1
convubw t2, s2
convubw t3, s3
convubw t4, s4
convubw t5, s5
convubw t6, s6
shlw t2, t2, 2
shlw t5, t5, 2
addw t1, t1, t2
addw t1, t1, t3
addw t4, t4, t5
addw t4, t4, t6
subw t1, t1, t4
absw t1, t1
convuwl t7, t1
cmpgtsl t8, t7, nt
andl t7, t7, t8
accl a1, t7
.function orc_opposite_parity_5_tap_planar_yuv
.accumulator 4 a1 guint32
.source 1 s1
.source 1 s2
.source 1 s3
.source 1 s4
.source 1 s5
# noise threshold
.param 4 nt
.temp 2 t1
.temp 2 t2
.temp 2 t3
.temp 2 t4
.temp 2 t5
.temp 4 t6
.temp 4 t7
convubw t1, s1
convubw t2, s2
convubw t3, s3
convubw t4, s4
convubw t5, s5
shlw t3, t3, 2
mullw t2, t2, 3
mullw t4, t4, 3
subw t1, t1, t2
addw t1, t1, t3
subw t1, t1, t4
addw t1, t1, t5
absw t1, t1
convuwl t6, t1
cmpgtsl t7, t6, nt
andl t6, t6, t7
accl a1, t6

View file

@ -127,7 +127,7 @@ gst_rtp_vp8_pay_parse_frame (GstRtpVP8Pay * self, GstBuffer * buffer)
gboolean keyframe;
guint32 header_size;
guint8 version;
guint8 tmp8;
guint8 tmp8 = 0;
guint8 *data;
guint8 partitions;

View file

@ -272,7 +272,7 @@ gst_dirac_parse_check_valid_frame (GstBaseParse * parse,
drain = GST_BASE_PARSE_FRAME_DRAIN (frame);
if (!sync && !drain) {
guint32 next_sync_word;
guint32 next_sync_word = 0;
next_header = GST_READ_UINT32_BE (GST_BUFFER_DATA (frame->buffer) + 5);
GST_LOG ("next header %d", next_header);

View file

@ -179,7 +179,8 @@ out:
}
static void
gst_h263_parse_set_src_caps (GstH263Parse * h263parse, H263Params * params)
gst_h263_parse_set_src_caps (GstH263Parse * h263parse,
const H263Params * params)
{
GstStructure *st;
GstCaps *caps, *sink_caps;
@ -283,7 +284,7 @@ gst_h263_parse_check_valid_frame (GstBaseParse * parse,
/* If this is the first frame, parse and set srcpad caps */
if (h263parse->state == PARSING) {
H263Params *params = NULL;
H263Params params = { 0, };
GstFlowReturn res;
res = gst_h263_parse_get_params (&params, buffer, FALSE, &h263parse->state);
@ -293,11 +294,8 @@ gst_h263_parse_check_valid_frame (GstBaseParse * parse,
GST_BASE_PARSE_FORMAT_PASSTHROUGH, TRUE);
} else {
/* Set srcpad caps since we now have sufficient information to do so */
gst_h263_parse_set_src_caps (h263parse, params);
gst_h263_parse_set_src_caps (h263parse, &params);
}
if (params)
g_free (params);
}
*skipsize = psc_pos;
@ -325,7 +323,7 @@ gst_h263_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
GstH263Parse *h263parse;
GstBuffer *buffer;
GstFlowReturn res;
H263Params *params = NULL;
H263Params params = { 0, };
h263parse = GST_H263_PARSE (parse);
buffer = frame->buffer;
@ -348,12 +346,12 @@ gst_h263_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
gst_buffer_set_caps (buffer,
GST_PAD_CAPS (GST_BASE_PARSE_SRC_PAD (GST_BASE_PARSE (h263parse))));
if (gst_h263_parse_is_delta_unit (params))
if (gst_h263_parse_is_delta_unit (&params))
GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
else
GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
out:
g_free (params);
return res;
}

View file

@ -31,7 +31,7 @@ GST_DEBUG_CATEGORY_EXTERN (h263_parse_debug);
#define GST_CAT_DEFAULT h263_parse_debug
gboolean
gst_h263_parse_is_delta_unit (H263Params * params)
gst_h263_parse_is_delta_unit (const H263Params * params)
{
return (params->type == PICTURE_I);
}
@ -40,7 +40,7 @@ gst_h263_parse_is_delta_unit (H263Params * params)
* extract a subset of the data (for now, it quits once we have the picture
* type. */
GstFlowReturn
gst_h263_parse_get_params (H263Params ** params_p, GstBuffer * buffer,
gst_h263_parse_get_params (H263Params * params, GstBuffer * buffer,
gboolean fast, H263ParseState * state)
{
static const guint8 partable[6][2] = {
@ -72,16 +72,12 @@ gst_h263_parse_get_params (H263Params ** params_p, GstBuffer * buffer,
"Extended PType"
};
H263Params *params;
GstBitReader br;
guint8 tr;
guint32 psc, temp32;
guint32 psc = 0, temp32;
guint8 temp8, pquant;
gboolean hasplusptype;
*params_p = g_new0 (H263Params, 1);
params = *params_p;
/* FIXME: we can optimise a little by checking the value of available
* instead of calling using the bit reader's get_bits_* functions. */
gst_bit_reader_init_from_buffer (&br, buffer);
@ -185,7 +181,7 @@ gst_h263_parse_get_params (H263Params ** params_p, GstBuffer * buffer,
if (hasplusptype) {
guint8 ufep;
guint8 cpm;
guint32 opptype, mpptype;
guint32 opptype = 0, mpptype = 0;
/* 5.1.4 PLUSPTYPE */
@ -268,7 +264,7 @@ gst_h263_parse_get_params (H263Params ** params_p, GstBuffer * buffer,
}
if (ufep == 1) {
guint32 cpfmt;
guint32 cpfmt = 0;
/* 5.1.5 CPFMT : Custom Picture Format (23 bits) */
if (!gst_bit_reader_get_bits_uint32 (&br, &cpfmt, 23))
@ -282,7 +278,7 @@ gst_h263_parse_get_params (H263Params ** params_p, GstBuffer * buffer,
params->height = (cpfmt & 0x1f) * 4;
if (temp8 == 0xf) {
guint32 epar;
guint32 epar = 0;
/* 5.1.6 EPAR : Extended Pixel Aspect Ratio (16bits) */
if (!gst_bit_reader_get_bits_uint32 (&br, &epar, 16))
goto more;
@ -455,7 +451,7 @@ beach:
}
gint
gst_h263_parse_get_profile (H263Params * params)
gst_h263_parse_get_profile (const H263Params * params)
{
gboolean c, d, d1, d21, d22, e, f, f2, g, h, i, j, k, k0, k1, k2, l, m, n, o,
p, q, r, s, t, u, v, w;
@ -577,7 +573,7 @@ gst_h263_parse_get_profile (H263Params * params)
(gst_value_compare (&(f1), &(f2)) == GST_VALUE_EQUAL))
gint
gst_h263_parse_get_level (H263Params * params, gint profile,
gst_h263_parse_get_level (const H263Params * params, gint profile,
guint bitrate, gint fps_num, gint fps_denom)
{
GValue fps15 = { 0, };
@ -659,7 +655,8 @@ gst_h263_parse_get_level (H263Params * params, gint profile,
}
void
gst_h263_parse_get_framerate (H263Params * params, gint * num, gint * denom)
gst_h263_parse_get_framerate (const H263Params * params, gint * num,
gint * denom)
{
*num = params->pcfnum;
*denom = params->pcfdenom;

View file

@ -131,14 +131,24 @@ struct _H263Params
gint32 pcfnum, pcfdenom;
};
gboolean gst_h263_parse_is_delta_unit (H263Params * params);
GstFlowReturn gst_h263_parse_get_params (H263Params ** params_p,
GstBuffer * buffer, gboolean fast, H263ParseState * state);
void gst_h263_parse_get_framerate (H263Params * params,
gint * num, gint * denom);
gint gst_h263_parse_get_profile (H263Params * params);
gint gst_h263_parse_get_level (H263Params * params, gint profile,
guint bitrate, gint fps_num, gint fps_denom);
gboolean gst_h263_parse_is_delta_unit (const H263Params * params);
GstFlowReturn gst_h263_parse_get_params (H263Params * params_p,
GstBuffer * buffer,
gboolean fast,
H263ParseState * state);
void gst_h263_parse_get_framerate (const H263Params * params,
gint * num,
gint * denom);
gint gst_h263_parse_get_profile (const H263Params * params);
gint gst_h263_parse_get_level (const H263Params * params,
gint profile,
guint bitrate,
gint fps_num,
gint fps_denom);
G_END_DECLS
#endif