aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2012-05-21 15:50:23 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-05-21 15:50:23 +0200
commit7e661868b3514b328c029916f3ff1903d6609385 (patch)
tree5bc97cc60ceaedcc35504e67c063827d6d23b8b4
parentb28313f8d15c35cc3b5ef6f975d24dcaef9736cf (diff)
Imported Upstream version 0.11.91upstream/0.11.91
-rw-r--r--ChangeLog1033
-rw-r--r--Makefile.in21
-rw-r--r--NEWS7
-rw-r--r--RELEASE26
-rw-r--r--aclocal.m429
-rwxr-xr-xautogen.sh10
-rw-r--r--common/Makefile.in8
-rw-r--r--common/gst-autogen.sh32
-rw-r--r--common/m4/Makefile.in8
-rw-r--r--common/m4/as-libtool.m43
-rw-r--r--common/release.mak6
-rw-r--r--config.h.in6
-rwxr-xr-xconfigure1490
-rw-r--r--configure.ac80
-rw-r--r--docs/Makefile.in8
-rw-r--r--docs/libs/Makefile.in8
-rw-r--r--docs/libs/html/compiling.html2
-rw-r--r--docs/libs/html/gst-plugins-bad-libs-GstSurfaceConverter.html4
-rw-r--r--docs/libs/html/gst-plugins-bad-libs-GstVideoContextInterface.html12
-rw-r--r--docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html2
-rw-r--r--docs/libs/html/gst-plugins-bad-libs.devhelp210
-rw-r--r--docs/libs/html/index.html2
-rw-r--r--docs/plugins/Makefile.am8
-rw-r--r--docs/plugins/Makefile.in16
-rw-r--r--docs/plugins/gst-plugins-bad-plugins-docs.sgml2
-rw-r--r--docs/plugins/gst-plugins-bad-plugins-sections.txt27
-rw-r--r--docs/plugins/html/ch01.html7
-rw-r--r--docs/plugins/html/ch02.html9
-rw-r--r--docs/plugins/html/ch03.html2
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-aiffmux.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-aiffparse.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-assrender.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-bulge.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-burn.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-camerabin.html1110
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-camerabin2.html552
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-celtdec.html8
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-celtenc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-chromium.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-circle.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-curlsink.html132
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-cverode.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dccpclientsink.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dccpclientsrc.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dccpserversink.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dccpserversrc.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dfbvideosink.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-diffuse.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dilate.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-directdrawsink.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dodge.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dtmfsrc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-exclusion.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-faac.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-faad.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-faceblur.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-facedetect.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-festival.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-fisheye.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-freeze.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html53
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-ivfparse.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-katedec.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-kateenc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-kateparse.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-katetag.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-legacyresample.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-liveadder.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-marble.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-mimdec.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-mimenc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-mirror.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-modplug.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-mplex.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-mxfdemux.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-mxfmux.html8
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-mythtvsrc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-nuvdemux.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-pinch.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html8
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html74
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin2.html84
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-cdaudio.html8
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-cdxaparse.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-celt.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-dccp.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-dfbvideosink.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-dirac.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-directdraw.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-dtmf.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-fbdevsink.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-filter.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-freeze.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-frei0r.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-ivfparse.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-kate.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-ladspa.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-legacyresample.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-liveadder.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-lv2.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg4videoparse.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegdemux2.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-musepack.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-musicbrainz.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-mve.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-mxf.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-nas.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-nsf.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-nuvdemux.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-real.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-rsvg.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-rtpmux.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-scaletempo.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-sdl.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-sndfile.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-spcdec.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-stereo.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-swfdec.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-timidity.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-tta.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-vcdsrc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-videosignal.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-vmnc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-vp8.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-wildmidi.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-xvid.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-rsvgdec.html5
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-rsvgoverlay.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-rtpdtmfmux.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-rtpdtmfsrc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-rtpmux.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-scaletempo.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-sdlaudiosink.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-sdlvideosink.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-shmsink.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-solarize.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-spacescope.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-speed.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-sphere.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-square.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-stereo.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-stretch.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-synaescope.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-templatematch.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-tiger.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-timidity.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-trm.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-tunnel.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-twirl.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-videoanalyse.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-videodetect.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-videomark.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-videoparse.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-vp8dec.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-vp8enc.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-waterripple.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-wavescope.html6
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-wildmidi.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins-zbar.html4
-rw-r--r--docs/plugins/html/gst-plugins-bad-plugins.devhelp2630
-rw-r--r--docs/plugins/html/index.html13
-rw-r--r--docs/plugins/html/index.sgml129
-rw-r--r--docs/plugins/inspect/plugin-camerabin.xml22
-rw-r--r--docs/plugins/inspect/plugin-camerabin2.xml64
-rw-r--r--ext/Makefile.am8
-rw-r--r--ext/Makefile.in12
-rw-r--r--ext/apexsink/Makefile.in10
-rw-r--r--ext/assrender/Makefile.in10
-rw-r--r--ext/bz2/Makefile.in10
-rw-r--r--ext/cdaudio/Makefile.in10
-rw-r--r--ext/celt/Makefile.in10
-rw-r--r--ext/chromaprint/Makefile.in10
-rw-r--r--ext/cog/Makefile.in10
-rw-r--r--ext/curl/Makefile.am16
-rw-r--r--ext/curl/Makefile.in90
-rw-r--r--ext/curl/gstcurl.c23
-rw-r--r--ext/curl/gstcurlbasesink.c (renamed from ext/curl/gstcurlsink.c)937
-rw-r--r--ext/curl/gstcurlbasesink.h116
-rw-r--r--ext/curl/gstcurlfilesink.c233
-rw-r--r--ext/curl/gstcurlfilesink.h58
-rw-r--r--ext/curl/gstcurlftpsink.c262
-rw-r--r--ext/curl/gstcurlftpsink.h60
-rw-r--r--ext/curl/gstcurlhttpsink.c476
-rw-r--r--ext/curl/gstcurlhttpsink.h69
-rw-r--r--ext/curl/gstcurlsink.h100
-rw-r--r--ext/curl/gstcurlsmtpsink.c928
-rw-r--r--ext/curl/gstcurlsmtpsink.h87
-rw-r--r--ext/curl/gstcurltlssink.c279
-rw-r--r--ext/curl/gstcurltlssink.h66
-rw-r--r--ext/dc1394/Makefile.in10
-rw-r--r--ext/dirac/Makefile.in10
-rw-r--r--ext/directfb/Makefile.in10
-rw-r--r--ext/divx/Makefile.in10
-rw-r--r--ext/dts/Makefile.in10
-rw-r--r--ext/faac/Makefile.am15
-rw-r--r--ext/faac/Makefile.in25
-rw-r--r--ext/faad/Makefile.in10
-rw-r--r--ext/flite/Makefile.in10
-rw-r--r--ext/gme/Makefile.in10
-rw-r--r--ext/gsettings/Makefile.in10
-rw-r--r--ext/gsm/Makefile.in10
-rw-r--r--ext/jp2k/Makefile.in10
-rw-r--r--ext/kate/Makefile.in10
-rw-r--r--ext/ladspa/Makefile.in10
-rw-r--r--ext/libmms/Makefile.in10
-rw-r--r--ext/libmms/gstmms.c2
-rw-r--r--ext/lv2/Makefile.in10
-rw-r--r--ext/mimic/Makefile.in10
-rw-r--r--ext/modplug/Makefile.in10
-rw-r--r--ext/mpeg2enc/Makefile.in10
-rw-r--r--ext/mplex/Makefile.in10
-rw-r--r--ext/musepack/Makefile.in10
-rw-r--r--ext/musicbrainz/Makefile.in10
-rw-r--r--ext/mythtv/Makefile.in10
-rw-r--r--ext/nas/Makefile.in10
-rw-r--r--ext/nas/nassink.c315
-rw-r--r--ext/neon/Makefile.in10
-rw-r--r--ext/ofa/Makefile.in10
-rw-r--r--ext/openal/Makefile.in10
-rw-r--r--ext/opencv/Makefile.in10
-rw-r--r--ext/opus/Makefile.in10
-rw-r--r--ext/opus/gstopusheader.c24
-rw-r--r--ext/resindvd/Makefile.in10
-rw-r--r--ext/rsvg/Makefile.in10
-rw-r--r--ext/rsvg/gstrsvg.c2
-rw-r--r--ext/rsvg/gstrsvgdec.c28
-rw-r--r--ext/rsvg/gstrsvgdec.h1
-rw-r--r--ext/rtmp/Makefile.am2
-rw-r--r--ext/rtmp/Makefile.in14
-rw-r--r--ext/schroedinger/Makefile.in10
-rw-r--r--ext/sdl/Makefile.in10
-rw-r--r--ext/sndfile/Makefile.in10
-rw-r--r--ext/sndio/Makefile.am11
-rw-r--r--ext/sndio/Makefile.in (renamed from tests/examples/camerabin/Makefile.in)272
-rw-r--r--ext/sndio/gstsndio.c53
-rw-r--r--ext/sndio/sndiosink.c532
-rw-r--r--ext/sndio/sndiosink.h67
-rw-r--r--ext/sndio/sndiosrc.c531
-rw-r--r--ext/sndio/sndiosrc.h67
-rw-r--r--ext/soundtouch/Makefile.in10
-rw-r--r--ext/spandsp/Makefile.in10
-rw-r--r--ext/spc/Makefile.in10
-rw-r--r--ext/swfdec/Makefile.in10
-rw-r--r--ext/teletextdec/Makefile.in10
-rw-r--r--ext/timidity/Makefile.in10
-rw-r--r--ext/voaacenc/Makefile.in10
-rw-r--r--ext/voaacenc/gstvoaacenc.c2
-rw-r--r--ext/voamrwbenc/Makefile.in12
-rw-r--r--ext/vp8/Makefile.in12
-rw-r--r--ext/wayland/Makefile.in10
-rw-r--r--ext/xvid/Makefile.in10
-rw-r--r--ext/zbar/Makefile.in10
-rw-r--r--gst-libs/Makefile.in8
-rw-r--r--gst-libs/gst/Makefile.in8
-rw-r--r--gst-libs/gst/basecamerabinsrc/Makefile.in12
-rw-r--r--gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c64
-rw-r--r--gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c4
-rw-r--r--gst-libs/gst/codecparsers/Makefile.in12
-rw-r--r--gst-libs/gst/codecparsers/gstmpeg4parser.c2
-rw-r--r--gst-libs/gst/codecparsers/gstmpegvideoparser.c10
-rw-r--r--gst-libs/gst/interfaces/Makefile.in14
-rw-r--r--gst-libs/gst/signalprocessor/Makefile.in12
-rw-r--r--gst-libs/gst/video/Makefile.in12
-rw-r--r--gst-libs/gst/video/gstbasevideodecoder.c7
-rw-r--r--gst-libs/gst/video/gstbasevideoencoder.c4
-rw-r--r--gst-libs/gst/video/gstsurfaceconverter.c2
-rw-r--r--gst-libs/gst/video/gstsurfacemeta.c2
-rw-r--r--gst-libs/gst/video/gstsurfacemeta.h2
-rw-r--r--gst-libs/gst/video/videocontext.c1
-rw-r--r--gst-plugins-bad.doap10
-rw-r--r--gst-plugins-bad.spec4
-rw-r--r--gst-plugins-bad.spec.in2
-rw-r--r--gst/Makefile.in8
-rw-r--r--gst/adpcmdec/Makefile.in10
-rw-r--r--gst/adpcmenc/Makefile.in10
-rw-r--r--gst/aiff/Makefile.in10
-rw-r--r--gst/asfmux/Makefile.in10
-rw-r--r--gst/asfmux/gstasfmux.c316
-rw-r--r--gst/asfmux/gstasfmux.h7
-rw-r--r--gst/asfmux/gstasfobjects.c68
-rw-r--r--gst/asfmux/gstasfobjects.h6
-rw-r--r--gst/asfmux/gstasfparse.c127
-rw-r--r--gst/asfmux/gstrtpasfpay.c145
-rw-r--r--gst/asfmux/gstrtpasfpay.h6
-rw-r--r--gst/audiovisualizers/Makefile.in10
-rw-r--r--gst/autoconvert/Makefile.in10
-rw-r--r--gst/bayer/Makefile.in10
-rw-r--r--gst/camerabin/Makefile.am63
-rw-r--r--gst/camerabin/Makefile.in1090
-rw-r--r--gst/camerabin/TODO31
-rw-r--r--gst/camerabin/camerabindebug.h30
-rw-r--r--gst/camerabin/camerabingeneral.c263
-rw-r--r--gst/camerabin/camerabingeneral.h36
-rw-r--r--gst/camerabin/camerabinimage.c777
-rw-r--r--gst/camerabin/camerabinimage.h96
-rw-r--r--gst/camerabin/camerabinpreview.c364
-rw-r--r--gst/camerabin/camerabinpreview.h57
-rw-r--r--gst/camerabin/camerabinvideo.c846
-rw-r--r--gst/camerabin/camerabinvideo.h139
-rw-r--r--gst/camerabin/gstcamerabin-enum.c62
-rw-r--r--gst/camerabin/gstcamerabin-enum.h112
-rw-r--r--gst/camerabin/gstcamerabin-marshal.list8
-rw-r--r--gst/camerabin/gstcamerabin.c4350
-rw-r--r--gst/camerabin/gstcamerabin.h236
-rw-r--r--gst/camerabin/gstcamerabincolorbalance.c81
-rw-r--r--gst/camerabin/gstcamerabincolorbalance.h28
-rw-r--r--gst/camerabin/gstinputselector.c1499
-rw-r--r--gst/camerabin/gstinputselector.h84
-rw-r--r--gst/camerabin2/Makefile.am2
-rw-r--r--gst/camerabin2/Makefile.in12
-rw-r--r--gst/camerabin2/gstcamerabin2.c114
-rw-r--r--gst/camerabin2/gstcamerabin2.h4
-rw-r--r--gst/camerabin2/gstplugin.c2
-rw-r--r--gst/camerabin2/gstviewfinderbin.c4
-rw-r--r--gst/camerabin2/gstwrappercamerabinsrc.c144
-rw-r--r--gst/cdxaparse/Makefile.in10
-rw-r--r--gst/coloreffects/Makefile.in10
-rw-r--r--gst/coloreffects/gstchromahold.c138
-rw-r--r--gst/coloreffects/gstchromahold.h3
-rw-r--r--gst/coloreffects/gstcoloreffects.c149
-rw-r--r--gst/coloreffects/gstcoloreffects.h3
-rw-r--r--gst/dataurisrc/Makefile.in10
-rw-r--r--gst/dccp/Makefile.am2
-rw-r--r--gst/dccp/Makefile.in15
-rw-r--r--gst/debugutils/Makefile.am2
-rw-r--r--gst/debugutils/Makefile.in12
-rw-r--r--gst/debugutils/gstcompare.c28
-rw-r--r--gst/debugutils/gstcompare.h2
-rw-r--r--gst/dtmf/Makefile.in10
-rw-r--r--gst/dvbsuboverlay/Makefile.in10
-rw-r--r--gst/dvbsuboverlay/dvb-sub.c54
-rw-r--r--gst/dvdspu/Makefile.in10
-rw-r--r--gst/faceoverlay/Makefile.in10
-rw-r--r--gst/festival/Makefile.am6
-rw-r--r--gst/festival/Makefile.in12
-rw-r--r--gst/fieldanalysis/Makefile.am2
-rw-r--r--gst/fieldanalysis/Makefile.in16
-rw-r--r--gst/freeverb/Makefile.in10
-rw-r--r--gst/freeze/Makefile.in10
-rw-r--r--gst/frei0r/Makefile.in10
-rw-r--r--gst/frei0r/gstfrei0rmixer.c38
-rw-r--r--gst/frei0r/gstfrei0rmixer.h4
-rw-r--r--gst/gaudieffects/Makefile.in10
-rw-r--r--gst/gaudieffects/gstburn.c109
-rw-r--r--gst/gaudieffects/gstburn.h5
-rw-r--r--gst/gaudieffects/gstchromium.c111
-rw-r--r--gst/gaudieffects/gstchromium.h3
-rw-r--r--gst/gaudieffects/gstdilate.c111
-rw-r--r--gst/gaudieffects/gstdilate.h6
-rw-r--r--gst/gaudieffects/gstdodge.c117
-rw-r--r--gst/gaudieffects/gstdodge.h7
-rw-r--r--gst/gaudieffects/gstexclusion.c106
-rw-r--r--gst/gaudieffects/gstexclusion.h7
-rw-r--r--gst/gaudieffects/gstgaussblur.c269
-rw-r--r--gst/gaudieffects/gstgaussblur.h63
-rw-r--r--gst/gaudieffects/gstsolarize.c108
-rw-r--r--gst/gaudieffects/gstsolarize.h7
-rw-r--r--gst/geometrictransform/Makefile.am1
-rw-r--r--gst/geometrictransform/Makefile.in11
-rw-r--r--gst/geometrictransform/gstbulge.c28
-rw-r--r--gst/geometrictransform/gstcircle.c28
-rw-r--r--gst/geometrictransform/gstdiffuse.c26
-rw-r--r--gst/geometrictransform/gstfisheye.c27
-rw-r--r--gst/geometrictransform/gstgeometrictransform.c120
-rw-r--r--gst/geometrictransform/gstkaleidoscope.c27
-rw-r--r--gst/geometrictransform/gstmarble.c28
-rw-r--r--gst/geometrictransform/gstmirror.c26
-rw-r--r--gst/geometrictransform/gstpinch.c28
-rw-r--r--gst/geometrictransform/gstrotate.c28
-rw-r--r--gst/geometrictransform/gstsphere.c28
-rw-r--r--gst/geometrictransform/gstsquare.c27
-rw-r--r--gst/geometrictransform/gststretch.c28
-rw-r--r--gst/geometrictransform/gsttunnel.c26
-rw-r--r--gst/geometrictransform/gsttwirl.c28
-rw-r--r--gst/geometrictransform/gstwaterripple.c27
-rw-r--r--gst/hdvparse/Makefile.in10
-rw-r--r--gst/hls/Makefile.in10
-rw-r--r--gst/hls/gstfragment.c124
-rw-r--r--gst/hls/gstfragment.h5
-rw-r--r--gst/hls/gsthlsdemux.c484
-rw-r--r--gst/hls/gsthlsdemux.h15
-rw-r--r--gst/hls/gsturidownloader.c54
-rw-r--r--gst/hls/m3u8.c27
-rw-r--r--gst/hls/m3u8.h2
-rw-r--r--gst/id3tag/Makefile.in10
-rw-r--r--gst/inter/Makefile.in10
-rw-r--r--gst/interlace/Makefile.in10
-rw-r--r--gst/ivfparse/Makefile.in10
-rw-r--r--gst/jp2kdecimator/Makefile.in10
-rw-r--r--gst/jpegformat/Makefile.in10
-rw-r--r--gst/jpegformat/gstjpegparse.c7
-rw-r--r--gst/legacyresample/Makefile.in10
-rw-r--r--gst/librfb/Makefile.am2
-rw-r--r--gst/librfb/Makefile.in14
-rw-r--r--gst/librfb/gstrfbsrc.c24
-rw-r--r--gst/liveadder/Makefile.in10
-rw-r--r--gst/mpegdemux/Makefile.in10
-rw-r--r--gst/mpegpsmux/Makefile.in10
-rw-r--r--gst/mpegpsmux/mpegpsmux.c30
-rw-r--r--gst/mpegpsmux/mpegpsmux.h6
-rw-r--r--gst/mpegtsdemux/Makefile.in10
-rw-r--r--gst/mpegtsdemux/mpegtsbase.c275
-rw-r--r--gst/mpegtsdemux/mpegtsbase.h1
-rw-r--r--gst/mpegtsdemux/mpegtspacketizer.c249
-rw-r--r--gst/mpegtsdemux/mpegtspacketizer.h4
-rw-r--r--gst/mpegtsdemux/mpegtsparse.c64
-rw-r--r--gst/mpegtsdemux/tsdemux.c304
-rw-r--r--gst/mpegtsmux/Makefile.in10
-rw-r--r--gst/mpegtsmux/mpegtsmux.c48
-rw-r--r--gst/mpegtsmux/mpegtsmux.h6
-rw-r--r--gst/mpegtsmux/tsmux/Makefile.in8
-rw-r--r--gst/mve/Makefile.in10
-rw-r--r--gst/mxf/Makefile.in10
-rw-r--r--gst/mxf/mxfmux.c28
-rw-r--r--gst/mxf/mxfmux.h6
-rw-r--r--gst/nsf/Makefile.in10
-rw-r--r--gst/nuvdemux/Makefile.in10
-rw-r--r--gst/patchdetect/Makefile.in10
-rw-r--r--gst/pcapparse/Makefile.am9
-rw-r--r--gst/pcapparse/Makefile.in14
-rw-r--r--gst/pnm/Makefile.in10
-rw-r--r--gst/rawparse/Makefile.in10
-rw-r--r--gst/real/Makefile.in10
-rw-r--r--gst/removesilence/Makefile.in10
-rw-r--r--gst/rtpmux/Makefile.in10
-rw-r--r--gst/rtpvp8/Makefile.in10
-rw-r--r--gst/scaletempo/Makefile.in10
-rw-r--r--gst/sdi/Makefile.in10
-rw-r--r--gst/sdp/Makefile.am3
-rw-r--r--gst/sdp/Makefile.in13
-rw-r--r--gst/segmentclip/Makefile.in10
-rw-r--r--gst/siren/Makefile.in10
-rw-r--r--gst/smooth/Makefile.in10
-rw-r--r--gst/speed/Makefile.in10
-rw-r--r--gst/stereo/Makefile.in10
-rw-r--r--gst/subenc/Makefile.in10
-rw-r--r--gst/tta/Makefile.in10
-rw-r--r--gst/videofilters/Makefile.in10
-rw-r--r--gst/videomeasure/Makefile.in10
-rw-r--r--gst/videomeasure/gstvideomeasure_ssim.c42
-rw-r--r--gst/videomeasure/gstvideomeasure_ssim.h4
-rw-r--r--gst/videoparsers/Makefile.in10
-rw-r--r--gst/videoparsers/gstmpegvideoparse.c36
-rw-r--r--gst/videosignal/Makefile.in10
-rw-r--r--gst/vmnc/Makefile.in10
-rw-r--r--gst/y4m/Makefile.in10
-rw-r--r--gst/y4m/gsty4mdec.c7
-rw-r--r--m4/Makefile.in8
-rw-r--r--pkgconfig/Makefile.in10
-rw-r--r--po/af.gmobin783 -> 783 bytes
-rw-r--r--po/af.po2
-rw-r--r--po/az.gmobin845 -> 845 bytes
-rw-r--r--po/az.po2
-rw-r--r--po/bg.gmobin2556 -> 2556 bytes
-rw-r--r--po/bg.po2
-rw-r--r--po/ca.gmobin2091 -> 2091 bytes
-rw-r--r--po/ca.po2
-rw-r--r--po/cs.gmobin1729 -> 1729 bytes
-rw-r--r--po/cs.po2
-rw-r--r--po/da.gmobin1886 -> 1886 bytes
-rw-r--r--po/da.po2
-rw-r--r--po/de.gmobin2118 -> 2118 bytes
-rw-r--r--po/de.po2
-rw-r--r--po/el.gmobin2022 -> 2022 bytes
-rw-r--r--po/el.po2
-rw-r--r--po/en_GB.gmobin777 -> 777 bytes
-rw-r--r--po/en_GB.po2
-rw-r--r--po/eo.gmobin1705 -> 1705 bytes
-rw-r--r--po/eo.po2
-rw-r--r--po/es.gmobin2040 -> 2040 bytes
-rw-r--r--po/es.po2
-rw-r--r--po/eu.gmobin1704 -> 1704 bytes
-rw-r--r--po/eu.po2
-rw-r--r--po/fi.gmobin1647 -> 1647 bytes
-rw-r--r--po/fi.po2
-rw-r--r--po/fr.gmobin2055 -> 2055 bytes
-rw-r--r--po/fr.po2
-rw-r--r--po/gl.gmobin2151 -> 2151 bytes
-rw-r--r--po/gl.po2
-rw-r--r--po/gst-plugins-bad-1.0.pot4
-rw-r--r--po/hu.gmobin1710 -> 1710 bytes
-rw-r--r--po/hu.po2
-rw-r--r--po/id.gmobin1914 -> 1914 bytes
-rw-r--r--po/id.po2
-rw-r--r--po/it.gmobin1657 -> 1657 bytes
-rw-r--r--po/it.po2
-rw-r--r--po/ja.gmobin2381 -> 2381 bytes
-rw-r--r--po/ja.po2
-rw-r--r--po/ky.gmobin970 -> 970 bytes
-rw-r--r--po/ky.po2
-rw-r--r--po/lt.gmobin1383 -> 1383 bytes
-rw-r--r--po/lt.po2
-rw-r--r--po/lv.gmobin2109 -> 2109 bytes
-rw-r--r--po/lv.po2
-rw-r--r--po/mt.gmobin1624 -> 1624 bytes
-rw-r--r--po/mt.po2
-rw-r--r--po/nb.gmobin1201 -> 1201 bytes
-rw-r--r--po/nb.po2
-rw-r--r--po/nl.gmobin2032 -> 2032 bytes
-rw-r--r--po/nl.po2
-rw-r--r--po/or.gmobin955 -> 955 bytes
-rw-r--r--po/or.po2
-rw-r--r--po/pl.gmobin2045 -> 2045 bytes
-rw-r--r--po/pl.po2
-rw-r--r--po/pt_BR.gmobin1749 -> 1749 bytes
-rw-r--r--po/pt_BR.po2
-rw-r--r--po/ro.gmobin1853 -> 1853 bytes
-rw-r--r--po/ro.po2
-rw-r--r--po/ru.gmobin2509 -> 2509 bytes
-rw-r--r--po/ru.po2
-rw-r--r--po/sk.gmobin1775 -> 1775 bytes
-rw-r--r--po/sk.po2
-rw-r--r--po/sl.gmobin2100 -> 2100 bytes
-rw-r--r--po/sl.po2
-rw-r--r--po/sq.gmobin1259 -> 1259 bytes
-rw-r--r--po/sq.po2
-rw-r--r--po/sr.gmobin2619 -> 2619 bytes
-rw-r--r--po/sr.po2
-rw-r--r--po/sv.gmobin1588 -> 1588 bytes
-rw-r--r--po/sv.po2
-rw-r--r--po/tr.gmobin1833 -> 1833 bytes
-rw-r--r--po/tr.po2
-rw-r--r--po/uk.gmobin2626 -> 2626 bytes
-rw-r--r--po/uk.po2
-rw-r--r--po/vi.gmobin1787 -> 1787 bytes
-rw-r--r--po/vi.po2
-rw-r--r--po/zh_CN.gmobin1539 -> 1539 bytes
-rw-r--r--po/zh_CN.po2
-rw-r--r--sys/Makefile.in8
-rw-r--r--sys/acmenc/Makefile.in10
-rw-r--r--sys/acmmp3dec/Makefile.in10
-rw-r--r--sys/applemedia/Makefile.am1
-rw-r--r--sys/applemedia/Makefile.in11
-rw-r--r--sys/applemedia/corevideobuffer.c3
-rw-r--r--sys/avc/Makefile.in10
-rw-r--r--sys/d3dvideosink/Makefile.in10
-rw-r--r--sys/d3dvideosink/d3dvideosink.c69
-rw-r--r--sys/decklink/Makefile.in10
-rw-r--r--sys/decklink/gstdecklinksrc.cpp2
-rw-r--r--sys/directdraw/Makefile.in10
-rw-r--r--sys/directsound/Makefile.in10
-rw-r--r--sys/dshowdecwrapper/Makefile.in10
-rw-r--r--sys/dshowsrcwrapper/Makefile.in8
-rw-r--r--sys/dshowvideosink/Makefile.in8
-rw-r--r--sys/dshowvideosink/dshowvideosink.cpp18
-rw-r--r--sys/dvb/Makefile.in10
-rw-r--r--sys/dvb/gstdvbsrc.c40
-rw-r--r--sys/fbdev/Makefile.in10
-rw-r--r--sys/linsys/Makefile.in10
-rw-r--r--sys/osxvideo/Makefile.in10
-rw-r--r--sys/pvr2d/Makefile.in10
-rw-r--r--sys/pvr2d/gstpvrbufferpool.c5
-rw-r--r--sys/qtwrapper/Makefile.in10
-rw-r--r--sys/shm/Makefile.in10
-rw-r--r--sys/shm/shmpipe.c31
-rw-r--r--sys/vcd/Makefile.in10
-rw-r--r--sys/vdpau/Makefile.in10
-rw-r--r--sys/vdpau/basevideodecoder/Makefile.in8
-rw-r--r--sys/vdpau/gstvdp/Makefile.in12
-rw-r--r--sys/vdpau/gstvdpsink.c5
-rw-r--r--sys/wasapi/Makefile.in8
-rw-r--r--sys/wininet/Makefile.in10
-rw-r--r--sys/winks/Makefile.in8
-rw-r--r--sys/winks/kshelpers.c2
-rw-r--r--sys/winks/ksvideohelpers.c4
-rw-r--r--sys/winscreencap/Makefile.in10
-rw-r--r--tests/Makefile.in8
-rw-r--r--tests/check/Makefile.am25
-rw-r--r--tests/check/Makefile.in199
-rw-r--r--tests/check/elements/camerabin.c1666
-rw-r--r--tests/check/elements/camerabin2.c1585
-rw-r--r--tests/check/elements/curlfilesink.c510
-rw-r--r--tests/check/elements/curlftpsink.c119
-rw-r--r--tests/check/elements/curlhttpsink.c136
-rw-r--r--tests/check/elements/curlsmtpsink.c208
-rw-r--r--tests/check/elements/mpegtsmux.c11
-rw-r--r--tests/examples/Makefile.am4
-rw-r--r--tests/examples/Makefile.in12
-rw-r--r--tests/examples/camerabin/Makefile.am56
-rw-r--r--tests/examples/camerabin/gst-camera-perf.c1030
-rw-r--r--tests/examples/camerabin/gst-camera.c1705
-rw-r--r--tests/examples/camerabin/gst-camera.h102
-rw-r--r--tests/examples/camerabin/gst-camera.ui424
-rw-r--r--tests/examples/camerabin/gst-camerabin-test.c845
-rw-r--r--tests/examples/camerabin2/Makefile.am2
-rw-r--r--tests/examples/camerabin2/Makefile.in10
-rw-r--r--tests/examples/camerabin2/gst-camera2.c6
-rw-r--r--tests/examples/camerabin2/gst-camerabin2-test.c24
-rw-r--r--tests/examples/directfb/Makefile.in8
-rw-r--r--tests/examples/mxf/Makefile.in8
-rw-r--r--tests/examples/opencv/Makefile.in8
-rw-r--r--tests/examples/scaletempo/Makefile.am2
-rw-r--r--tests/examples/scaletempo/Makefile.in10
-rw-r--r--tests/files/Makefile.in8
-rw-r--r--tests/icles/Makefile.in8
-rw-r--r--tools/Makefile.in8
-rw-r--r--win32/common/config.h2
663 files changed, 13536 insertions, 24608 deletions
diff --git a/ChangeLog b/ChangeLog
index fedfe244..234e2f40 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,1038 @@
+=== release 0.11.91 ===
+
+2012-05-13 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * configure.ac:
+ releasing 0.11.91, "Be he alive, or be he dead"
+
+2012-05-13 15:56:17 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * common:
+ Automatic update of common submodule
+ From dc70203 to 3429ba6
+
+2012-05-13 15:24:52 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * ext/curl/gstcurlhttpsink.c:
+ curl: Fix equality comparison with extraneous parantheses compiler warning
+ gstcurlhttpsink.c:411:27: error: equality comparison with extraneous parentheses
+
+2012-05-12 12:08:42 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * tests/check/elements/.gitignore:
+ check: make git ignore new unit test binaries
+
+2012-04-25 19:46:53 +0200 Sebastian Rasmussen <sebrn@axis.com>
+
+ * docs/plugins/Makefile.am:
+ * ext/curl/Makefile.am:
+ * ext/curl/gstcurl.c:
+ * ext/curl/gstcurlsmtpsink.c:
+ * ext/curl/gstcurlsmtpsink.h:
+ * tests/check/Makefile.am:
+ * tests/check/elements/curlsmtpsink.c:
+ curl: new curlsmtpsink element
+ https://bugzilla.gnome.org/show_bug.cgi?id=653741
+
+2012-01-23 09:45:24 +0100 Patricia Muscalu <patricia@axis.com>
+
+ * ext/curl/Makefile.am:
+ * ext/curl/gstcurl.c:
+ * ext/curl/gstcurlftpsink.c:
+ * ext/curl/gstcurlftpsink.h:
+ * tests/check/Makefile.am:
+ * tests/check/elements/curlftpsink.c:
+ curl: new curlftpsink element
+ http://bugzilla.gnome.org/show_bug.cgi?id=653741
+
+2012-01-23 09:28:10 +0100 Patricia Muscalu <patricia@axis.com>
+
+ * ext/curl/Makefile.am:
+ * ext/curl/gstcurl.c:
+ * ext/curl/gstcurlfilesink.c:
+ * ext/curl/gstcurlfilesink.h:
+ * tests/check/Makefile.am:
+ * tests/check/elements/curlfilesink.c:
+ curl: new curlfilesink element
+ https://bugzilla.gnome.org/show_bug.cgi?id=653741
+
+2012-01-23 09:00:47 +0100 Patricia Muscalu <patricia@axis.com>
+
+ * configure.ac:
+ * docs/plugins/Makefile.am:
+ * ext/curl/Makefile.am:
+ * ext/curl/gstcurl.c:
+ * ext/curl/gstcurlbasesink.c:
+ * ext/curl/gstcurlbasesink.h:
+ * ext/curl/gstcurlhttpsink.c:
+ * ext/curl/gstcurlhttpsink.h:
+ * ext/curl/gstcurlsink.c:
+ * ext/curl/gstcurlsink.h:
+ * ext/curl/gstcurltlssink.c:
+ * ext/curl/gstcurltlssink.h:
+ * tests/check/Makefile.am:
+ * tests/check/elements/curlhttpsink.c:
+ curl: refactor curlsink, rename to curlhttpsink
+ Split into base, tls and http classes.
+ https://bugzilla.gnome.org/show_bug.cgi?id=653741
+
+2012-05-10 21:15:42 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstburn.c:
+ * gst/gaudieffects/gstchromium.c:
+ * gst/gaudieffects/gstdilate.c:
+ * gst/gaudieffects/gstdodge.c:
+ * gst/gaudieffects/gstexclusion.c:
+ * gst/gaudieffects/gstgaussblur.c:
+ * gst/gaudieffects/gstsolarize.c:
+ gaudieffects: consistency in templates name
+
+2012-05-10 10:11:18 -0400 Thibault Saunier <thibault.saunier@collabora.com>
+
+ * gst/hls/gsthlsdemux.c:
+ * gst/hls/gsthlsdemux.h:
+ hlsdemux: Add a connection-speed property
+ Conflicts:
+ gst/hls/gsthlsdemux.c
+
+2012-05-10 10:10:14 -0400 Thibault Saunier <thibault.saunier@collabora.com>
+
+ * gst/hls/gsthlsdemux.c:
+ * gst/hls/m3u8.c:
+ * gst/hls/m3u8.h:
+ hls: Add a way to get best playlist for a specific bitrate in M3U8Client
+ Make use of it in hlsdemux
+
+2012-05-08 13:27:15 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+ * gst/hls/gsthlsdemux.c:
+ hlsdemux: Add failover protection.
+ Multiple streams with same bandwidth get retried
+
+2012-05-08 13:04:35 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+ * gst/hls/gsthlsdemux.c:
+ * gst/hls/gsthlsdemux.h:
+ hlsdemux: Calculate the real bitrate and switch to the correct variant
+ We now calculate the actual bitrate using the download speed/size and
+ then switch directly to the variant that matches our bandwidth the
+ most.
+ It will also be able to handle any use case where some of the
+ variants are not available, and would skip them and go to the next
+ possible variant.
+ Conflicts:
+ gst/hls/gsthlsdemux.c
+
+2012-05-08 11:34:47 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+ * gst/hls/gsthlsdemux.c:
+ hlsdemux: Do not reset the sequence number in a live stream for a normal playlist update.
+ Only for stream switching
+
+2012-05-08 11:33:50 -0400 Thibault Saunier <thibault.saunier@collabora.com>
+
+ * gst/hls/gsthlsdemux.c:
+ hlsdemux: If we update the playlist, make sure the sequence number is never more than 3 fragments before the end
+
+2012-05-08 11:13:26 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+ * gst/hls/gsthlsdemux.c:
+ hlsdemux: In a live stream, do not start from 3 fragments before the end.
+
+2012-05-08 11:09:28 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+ * gst/hls/gsthlsdemux.c:
+ * gst/hls/gsthlsdemux.h:
+ hlsdemux: No need to store position since it's the buffer's timestamp
+ This also will fix the issue of having the current position different
+ from the actual position of the first buffer in the queue in case
+ the caching caused a resync of the sequence number.
+ Conflicts:
+ gst/hls/gsthlsdemux.c
+
+2011-09-15 20:47:54 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+ * gst/hls/gsthlsdemux.c:
+ hlsdemux: Fallback to previous playlist when switching if the new playlist can't be fetched
+
+2012-05-10 13:46:27 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstgaussblur.c:
+ * gst/gaudieffects/gstgaussblur.h:
+ gaudieffects: consistency fixes in gstgaussblur
+
+2012-05-10 10:47:27 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstgaussblur.c:
+ * gst/gaudieffects/gstgaussblur.h:
+ gaudieffects: port gaussianblur to GstVideoFilter
+
+2012-05-09 17:21:30 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstsolarize.c:
+ * gst/gaudieffects/gstsolarize.h:
+ gaudieffects: port solarize to GstVideoFilter
+
+2012-05-09 17:06:20 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstexclusion.c:
+ * gst/gaudieffects/gstexclusion.h:
+ gaudieffects: port exclusion to GstVideoFilter
+
+2012-05-09 16:55:17 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstdodge.c:
+ * gst/gaudieffects/gstdodge.h:
+ gaudieffects: port dodge to GstVideoFilter
+
+2012-05-09 16:30:40 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstdilate.c:
+ * gst/gaudieffects/gstdilate.h:
+ gaudieffects: port dilate to GstVideoFilter
+
+2012-05-09 16:10:18 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstburn.c:
+ * gst/gaudieffects/gstburn.h:
+ gaudieffects: port burn to GstVideoFilter
+
+2012-05-09 15:44:02 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstchromium.c:
+ * gst/gaudieffects/gstchromium.h:
+ gaudieffects: port chromium to GstVideoFilter
+
+2012-05-09 14:28:09 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstgaussblur.c:
+ gaudieffects: use GST_DEBUG_FUNCPTR in blur
+
+2012-05-09 13:35:46 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * configure.ac:
+ gaudieffects: port to 0.11
+
+2012-05-09 09:49:10 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstgaussblur.c:
+ * gst/gaudieffects/gstgaussblur.h:
+ gaudieffects: port gaussblur to 0.11
+
+2012-05-08 18:09:20 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstsolarize.c:
+ * gst/gaudieffects/gstsolarize.h:
+ gaudieffects: port solarize to 0.11
+
+2012-05-08 18:09:09 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstexclusion.c:
+ * gst/gaudieffects/gstexclusion.h:
+ gaudieffects: port exclusion to 0.11
+
+2012-05-08 17:38:22 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstdodge.c:
+ * gst/gaudieffects/gstdodge.h:
+ gaudieffects: port dodge to 0.11
+
+2012-05-08 17:17:16 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstdilate.c:
+ * gst/gaudieffects/gstdilate.h:
+ gaudieffects: port dilate to 0.11
+
+2012-05-08 16:50:06 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstgaussblur.c:
+ * gst/gaudieffects/gstgaussblur.h:
+ gaudieffects: add header to gaussblur
+
+2012-05-08 16:39:02 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstchromium.c:
+ * gst/gaudieffects/gstchromium.h:
+ gaudieffects: port chromium to 0.11
+
+2012-05-08 16:38:48 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstburn.c:
+ * gst/gaudieffects/gstburn.h:
+ gaudieffects: port burn to 0.11
+
+2012-05-08 14:17:06 +0100 Luis de Bethencourt <luis@debethencourt.com>
+
+ * gst/gaudieffects/gstburn.c:
+ * gst/gaudieffects/gstchromium.c:
+ * gst/gaudieffects/gstdilate.c:
+ * gst/gaudieffects/gstdodge.c:
+ * gst/gaudieffects/gstexclusion.c:
+ * gst/gaudieffects/gstgaussblur.c:
+ * gst/gaudieffects/gstsolarize.c:
+ controller: port to new controller location and api
+
+2012-05-08 17:58:58 +0200 Andoni Morales Alastruey <ylatuya@gmail.com>
+
+ * sys/d3dvideosink/d3dvideosink.c:
+ d3dvideosink: fix deadlock when the device is lost
+
+2012-05-08 18:10:30 +0200 Andoni Morales Alastruey <ylatuya@gmail.com>
+
+ * sys/d3dvideosink/d3dvideosink.c:
+ d3dvideosink: remove trailing ';' from locks defines to make gst-indent happy
+
+2012-05-07 13:13:34 -0700 Aleix Conchillo Flaque <aleix@oblong.com>
+
+ * sys/shm/shmpipe.c:
+ shmsink: fix memory corruption when a client disconnects (fixes #675640)
+ Also, add a check to make sure a client isn't dumped twice
+
+2012-05-07 23:57:08 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * gst/librfb/gstrfbsrc.c:
+ rfbsrc: call WSAStartup/Cleanup on win32
+ If we link against libwinsock2, we should probably call
+ Startup/Cleanup as well.
+ https://bugzilla.gnome.org/show_bug.cgi?id=675415
+
+2012-05-03 23:42:13 +0200 Marc-André Lureau <marcandre.lureau@gmail.com>
+
+ * gst/librfb/Makefile.am:
+ rfbsrc: fix librfb linking on win32
+ libtool: link: i686-w64-mingw32-gcc -shared .libs/libgstrfbsrc.dll.def
+ .libs/libgstrfbsrc_la-gstrfbsrc.o -Wl,--whole-archive ./.libs/librfb.a
+ -Wl,--no-whole-archive -L/usr/i686-w64-mingw32/sys-root/mingw/lib
+ -lgstbase-0.10 -lgstreamer-0.10 -lxml2 -lgobject-2.0 -lgthread-2.0
+ -lgmodule-2.0 -lglib-2.0 -lintl -mms-bitfields -mms-bitfields -O2 -o
+ .libs/libgstrfbsrc.dll -Wl,--enable-auto-image-base -Xlinker
+ --out-implib -Xlinker .libs/libgstrfbsrc.dll.a
+ Creating library file: .libs/libgstrfbsrc.dll.a
+ ./.libs/librfb.a(librfb_la-rfbdecoder.o): In function
+ `rfb_decoder_read':
+ /home/elmarco/pkg/rhel/mingw-gstreamer-plugins-bad-free/gst-plugins-bad-0.10.23/build_win32/gst/librfb/../../../gst/librfb/rfbdecoder.c:164:
+ undefined reference to `_imp__recv@16'
+ ./.libs/librfb.a(librfb_la-rfbdecoder.o): In function
+ `rfb_decoder_connect_tcp':
+ /home/elmarco/pkg/rhel/mingw-gstreamer-plugins-bad-free/gst-plugins-bad-0.10.23/build_win32/gst/librfb/../../../gst/librfb/rfbdecoder.c:112:
+ undefined reference to `_imp__socket@12'
+ /home/elmarco/pkg/rhel/mingw-gstreamer-plugins-bad-free/gst-plugins-bad-0.10.23/build_win32/gst/librfb/../../../gst/librfb/rfbdecoder.c:119:
+ undefined reference to `_imp__htons@4'
+ /home/elmarco/pkg/rhel/mingw-gstreamer-plugins-bad-free/gst-plugins-bad-0.10.23/build_win32/gst/librfb/../../../gst/librfb/rfbdecoder.c:123:
+ undefined reference to `_imp__inet_addr@4'
+ /home/elmarco/pkg/rhel/mingw-gstreamer-plugins-bad-free/gst-plugins-bad-0.10.23/build_win32/gst/librfb/../../../gst/librfb/rfbdecoder.c:125:
+ undefined reference to `_imp__connect@12'
+ It needs -lws2_32 which is already in $(WINSOCK2_LIBS)
+ https://bugzilla.gnome.org/show_bug.cgi?id=675415
+
+2012-05-02 08:03:46 -0700 Andoni Morales Alastruey <ylatuya@gmail.com>
+
+ * sys/dshowvideosink/dshowvideosink.cpp:
+ dshowvideosink: add missing casts to LPCSTR
+
+2012-05-03 23:51:14 +0200 Andoni Morales Alastruey <ylatuya@gmail.com>
+
+ * sys/dshowvideosink/dshowvideosink.cpp:
+ dshowvideosink: lower rank of the DirectShow video sink plugin
+ d3dvideosink should have a higher rank as it works better.
+
+2012-05-02 07:56:00 -0700 Andoni Morales Alastruey <ylatuya@gmail.com>
+
+ * sys/dshowvideosink/dshowvideosink.cpp:
+ dshowvideosink: Fix compilation on x64 platforms
+
+2012-05-05 20:01:46 +0300 Raimo Järvi <raimo.jarvi@gmail.com>
+
+ * gst/asfmux/gstasfmux.c:
+ * gst/asfmux/gstasfobjects.c:
+ * gst/asfmux/gstrtpasfpay.c:
+ * gst/camerabin2/gstwrappercamerabinsrc.c:
+ * gst/hls/gsturidownloader.c:
+ * gst/mpegtsdemux/tsdemux.c:
+ Fix printf format compiler warnings on mingw-w64
+ https://bugzilla.gnome.org/show_bug.cgi?id=675520
+
+2012-05-05 18:20:33 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ * ext/rtmp/Makefile.am:
+ * gst/dccp/Makefile.am:
+ * gst/festival/Makefile.am:
+ * gst/pcapparse/Makefile.am:
+ * gst/sdp/Makefile.am:
+ Add WINSOCK2_LIBS, remove WIN32_LIBS, fix rtmp build on Windows some more
+ One way of passing -lws2_32 to plugins should be enough..
+
+2012-04-17 11:44:18 +0400 Руслан Ижбулатов <lrn1986@gmail.com>
+
+ * configure.ac:
+ rtmp: link to winsock library on Windows
+ https://bugzilla.gnome.org/show_bug.cgi?id=674243
+
+2012-05-04 14:01:13 +0400 Руслан Ижбулатов <lrn1986@gmail.com>
+
+ * configure.ac:
+ configure: mark unported Windows plugins as such
+ https://bugzilla.gnome.org/show_bug.cgi?id=675440
+
+2012-05-04 17:09:58 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/camerabin2/gstwrappercamerabinsrc.c:
+ camerabin: remove unnecessary code
+
+2012-05-04 17:10:17 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/camerabin2/gstwrappercamerabinsrc.c:
+ camerabin: improve image capture debug
+
+2012-05-04 17:05:38 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/camerabin2/gstcamerabin2.c:
+ camerabin: always force image-profile to have variable framerate
+ image-encodebin can't use videorate as it always store one buffer
+ to be able to do its timestamps/duration math. As image captures
+ only push one buffer at a time, this videorate behavior breaks
+ camerabin usage.
+
+2012-05-03 19:11:57 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+ * gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c:
+ * gst/camerabin2/gstwrappercamerabinsrc.c:
+ basecamerabin: Do not set the pad templates in the base class.
+ It is best to let the subclass define the pad templates, this would
+ allow the subclass to decide which caps the pads should have.
+
+2012-05-01 17:55:02 +0300 Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+ * gst-libs/gst/video/videocontext.c:
+ videocontext: Remove the explicit unrefing of pad object getting from iterator.
+
+2012-05-02 15:35:05 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/camerabin2/gstwrappercamerabinsrc.c:
+ wrappercamerabinsrc: avoid assertion by using null caps as any
+ NULL caps aren't valid caps, use a reference to 'any' caps
+
+2012-05-02 15:24:26 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/camerabin2/gstcamerabin2.c:
+ camerabin: Fix get/set_property for encoding profiles
+ Encoding profiles are objects, not boxed types
+
+2012-05-02 09:43:33 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c:
+ basecamerasrc: null caps are not valid in 1.0
+ Use any caps for the preview-caps property, as NULL caps are
+ not valid caps in 1.0 anymore
+
+2012-05-01 15:29:37 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/camerabin2/camerabin2-src.txt:
+ * gst/camerabin2/gstcamerabin2.c:
+ camerabin: remove custom renegotiate event
+ In 1.0 there is a core reconfigure event, camerabin doesn't need
+ its custom renegotiate event anymore
+
+2012-05-01 15:08:47 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/camerabin2/gstcamerabin2.c:
+ camerabin: Use plain video encoding profile for images
+ Do not use jpeg as a container format for image captures, use
+ the plain video encoding format. It was used as a container in
+ 0.10 to force the addition of tags to the image.
+
+2012-05-01 14:31:58 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/camerabin2/gstwrappercamerabinsrc.c:
+ wrappercamerabinsrc: change output-selector negotiation mode
+ In 0.10 camerabin2 controlled the negotiation strictly and the output-selector
+ wouldn't forward setcaps calls. In 0.11 the renegotiation events are already in
+ core and we can allow the pipeline to handle it without much control from camerabin
+ part (I hope), so this patch makes output-selector forward caps negotiation events
+ to the active pad.
+
+2012-05-01 14:31:20 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/camerabin2/gstwrappercamerabinsrc.c:
+ wrappercamerabinsrc: removing renegotiate handlers
+ gstreamer 1.0 already has the reconfigure event, remove the
+ custom event handling from wrappercamerabinsrc
+
+2012-05-01 13:28:33 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/camerabin2/gstwrappercamerabinsrc.c:
+ wrappercamerabinsrc: prevent caps renegotiation loop
+ Only set the zoom capsfilter caps when the new caps are different,
+ preventing a caps renegotiation loop.
+
+2012-05-01 13:15:25 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * tests/examples/camerabin2/gst-camera2.c:
+ camerabin: example: Update prepare-window-handle message
+ Message name changed from prepare-xwindow-id to prepare-window-handle
+
+2012-05-01 13:00:16 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * tests/examples/camerabin2/gst-camera2.c:
+ * tests/examples/camerabin2/gst-camerabin2-test.c:
+ camerabin: examples: Renaming camerabin2 to camerabin
+
+2012-05-01 10:26:27 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c:
+ basecamerabinsrc: updating property to new name
+ enable-last-buffer is now enable-last-sample
+
+2012-05-01 10:18:52 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c:
+ * gst/camerabin2/gstviewfinderbin.c:
+ * gst/camerabin2/gstwrappercamerabinsrc.c:
+ camerabin: Replacing ffmpegcolorspace with videoconvert
+
+2012-04-30 12:36:46 +0200 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * gst/mpegtsdemux/mpegtsbase.c:
+ tsbase: unref bad packets too
+ Conflicts:
+ gst/mpegtsdemux/mpegtsbase.c
+
+2012-04-30 12:28:42 +0200 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * gst/mpegtsdemux/tsdemux.c:
+ tsdemux: reset the state of the stream when flushing
+ We need to reset the stream on a flush or else old packets could be added to the
+ list and leak.
+
+2012-04-30 11:05:20 +0200 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * gst/mpegtsdemux/mpegtsbase.c:
+ mpegtsbase: don't push events upstream in pull mode
+ In pull mode, don't push the seek event upstream.
+
+2012-04-26 22:49:07 -0400 Wind Yuan <feng.yuan@intel.com>
+
+ * gst-libs/gst/codecparsers/gstmpeg4parser.c:
+ codecparser: mpeg4 type error
+
+2012-05-01 09:41:18 +0200 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * gst/mpegtsdemux/mpegtspacketizer.c:
+ mpegts: don't poke into private adapter fields
+
+2012-04-30 18:05:09 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * tests/check/elements/camerabin.c:
+ tests: update camerabin(2) unit test for rename
+
+2012-04-30 17:56:16 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * gst/camerabin2/gstcamerabin2.c:
+ * gst/camerabin2/gstcamerabin2.h:
+ * gst/camerabin2/gstplugin.c:
+ camerabin2: rename to "camerabin"
+ But leave source code intact for now, for easier patch merging.
+
+2012-04-30 17:44:34 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ * docs/plugins/Makefile.am:
+ * docs/plugins/gst-plugins-bad-plugins-docs.sgml:
+ * docs/plugins/gst-plugins-bad-plugins-sections.txt:
+ * docs/plugins/inspect/plugin-camerabin.xml:
+ * docs/plugins/inspect/plugin-camerabin2.xml:
+ * gst/camerabin/.gitignore:
+ * gst/camerabin/Makefile.am:
+ * gst/camerabin/TODO:
+ * gst/camerabin/camerabindebug.h:
+ * gst/camerabin/camerabingeneral.c:
+ * gst/camerabin/camerabingeneral.h:
+ * gst/camerabin/camerabinimage.c:
+ * gst/camerabin/camerabinimage.h:
+ * gst/camerabin/camerabinpreview.c:
+ * gst/camerabin/camerabinpreview.h:
+ * gst/camerabin/camerabinvideo.c:
+ * gst/camerabin/camerabinvideo.h:
+ * gst/camerabin/gstcamerabin-enum.c:
+ * gst/camerabin/gstcamerabin-enum.h:
+ * gst/camerabin/gstcamerabin-marshal.list:
+ * gst/camerabin/gstcamerabin.c:
+ * gst/camerabin/gstcamerabin.h:
+ * gst/camerabin/gstcamerabincolorbalance.c:
+ * gst/camerabin/gstcamerabincolorbalance.h:
+ * gst/camerabin/gstinputselector.c:
+ * gst/camerabin/gstinputselector.h:
+ * tests/check/Makefile.am:
+ * tests/check/elements/camerabin.c:
+ * tests/check/elements/camerabin2.c:
+ * tests/examples/Makefile.am:
+ * tests/examples/camerabin/.gitignore:
+ * tests/examples/camerabin/Makefile.am:
+ * tests/examples/camerabin/gst-camera-perf.c:
+ * tests/examples/camerabin/gst-camera-perf.ui:
+ * tests/examples/camerabin/gst-camera.c:
+ * tests/examples/camerabin/gst-camera.h:
+ * tests/examples/camerabin/gst-camera.ui:
+ * tests/examples/camerabin/gst-camerabin-test.c:
+ Remove old camerabin
+
+2012-04-25 13:31:36 +0200 Gil Pedersen <git@gpost.dk>
+
+ * gst/hls/gsthlsdemux.c:
+ hlsdemux: start paused task on new data
+
+2012-04-21 11:36:09 +0530 Arun Raghavan <arun.raghavan@collabora.co.uk>
+
+ * Android.mk:
+ * ext/faac/Makefile.am:
+ android: Add support for the faac plugin
+
+2012-04-16 10:07:51 -0400 Reynaldo H. Verdejo Pinochet <reynaldo@collabora.com>
+
+ * Android.mk:
+ Reenable faad plugin for the Android NDK builds
+
+2012-04-25 11:50:15 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * configure.ac:
+ * ext/rsvg/gstrsvg.c:
+ * ext/rsvg/gstrsvgdec.c:
+ * ext/rsvg/gstrsvgdec.h:
+ rsvg: Stop using deprecated API when compiling with RSVG 2.35.0 or newer
+
+2012-03-29 15:57:58 +0200 Edward Hervey <edward.hervey@collabora.co.uk>
+
+ * sys/decklink/gstdecklinksrc.cpp:
+ decklink: Fix unitialized variable
+
+2012-04-04 11:51:28 +0200 Edward Hervey <edward.hervey@collabora.co.uk>
+
+ * ext/opus/gstopusheader.c:
+ opus: Handle GstByteWriter return values
+
+2012-04-25 10:27:00 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * configure.ac:
+ configure: sndio plugin is not ported yet
+
+2012-04-25 10:25:51 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * ext/sndio/gstsndio.c:
+ sndio: Fix i18n initialization
+
+2012-04-11 21:05:26 -0400 Jacob Meuser <jakemsr@sdf.lonestar.org>
+
+ * configure.ac:
+ * ext/Makefile.am:
+ * ext/sndio/Makefile.am:
+ * ext/sndio/gstsndio.c:
+ * ext/sndio/sndiosink.c:
+ * ext/sndio/sndiosink.h:
+ * ext/sndio/sndiosrc.c:
+ * ext/sndio/sndiosrc.h:
+ sndio: add sndio plugin for OpenBSD
+
+2012-04-24 17:00:57 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+ * configure.ac:
+ * gst/coloreffects/gstchromahold.c:
+ * gst/coloreffects/gstchromahold.h:
+ * gst/coloreffects/gstcoloreffects.c:
+ * gst/coloreffects/gstcoloreffects.h:
+ coloreffects: port to 0.11
+
+2012-04-24 15:20:16 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * gst/dvbsuboverlay/dvb-sub.c:
+ dvb-sub: Use unchecked byte reader functions
+
+2012-04-24 14:57:11 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * ext/libmms/gstmms.c:
+ mms: Use correct enum type
+
+2012-04-24 11:02:26 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * sys/vdpau/gstvdpsink.c:
+ vdpau: Switch from deprecated XKeycodeToKeysym() to XkbKeycodeToKeysym()
+ Conflicts:
+ sys/vdpau/gstvdpsink.c
+
+2012-04-23 17:11:38 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+ * gst/asfmux/gstasfmux.c:
+ asfmux: use some more boilerplate
+
+2012-04-23 16:55:18 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+ * configure.ac:
+ * gst/asfmux/gstasfmux.c:
+ * gst/asfmux/gstasfmux.h:
+ * gst/asfmux/gstasfobjects.c:
+ * gst/asfmux/gstasfobjects.h:
+ * gst/asfmux/gstasfparse.c:
+ * gst/asfmux/gstrtpasfpay.c:
+ * gst/asfmux/gstrtpasfpay.h:
+ asfmux: port to 0.11
+
+2012-04-12 14:17:14 +0200 Gil Pedersen <git@gpost.dk>
+
+ * configure.ac:
+ * gst-plugins-bad.spec.in:
+ * gst/hls/gstfragment.c:
+ * gst/hls/gstfragment.h:
+ * gst/hls/gsthlsdemux.c:
+ * gst/hls/gsthlsdemux.h:
+ * gst/hls/gsturidownloader.c:
+ hlsdemux: port to 0.11
+
+2012-04-20 15:05:36 +0200 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: pass the reason for failed read as GstFlowReturn
+ Make the _read_device function return a GstFlowReturn so that we can propagate
+ this to the caller. This allows us to differentiate between poll errors and
+ flushing state.
+ Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674219
+
+2012-04-17 11:44:00 +0400 Руслан Ижбулатов <lrn1986@gmail.com>
+
+ * ext/voaacenc/gstvoaacenc.c:
+ Fix format (type is explicitly unsigned long)
+ Fixes #674244
+
+2012-04-20 12:09:08 +0200 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * ext/nas/nassink.c:
+ nas: Rework nassink a little
+ Based on patch from <ole.hellqvist at spray.se>
+ Create and destroy flow in prepare/unprepare
+ Remove some duplicate code from close and prepare that is now in unprepare.
+ Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674130
+
+2012-04-18 12:02:52 +0300 Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+ * gst-libs/gst/video/gstsurfaceconverter.c:
+ * gst-libs/gst/video/gstsurfacemeta.c:
+ * gst-libs/gst/video/gstsurfacemeta.h:
+ Doc fixes (gstsurfaceconverter, gstsurfacemeta).
+
+2012-04-20 11:23:56 +0200 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * gst/mpegtsdemux/Makefile.am:
+ mpegtsdemux: we ignore warnings differently
+ We suppress the warnings in the .c file instead.
+
+2012-04-19 14:20:52 +0200 Gil Pedersen <git@gpost.dk>
+
+ * configure.ac:
+ * gst/mpegtsdemux/Makefile.am:
+ * gst/mpegtsdemux/mpegtsbase.c:
+ * gst/mpegtsdemux/mpegtspacketizer.c:
+ * gst/mpegtsdemux/mpegtspacketizer.h:
+ * gst/mpegtsdemux/mpegtsparse.c:
+ * gst/mpegtsdemux/tsdemux.c:
+ mpegtsdemux: port to 0.11
+ Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674397
+
+2012-04-20 10:50:19 +0200 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * gst/mpegtsdemux/mpegtsbase.h:
+ mpegtsbase: clarify event ownership
+
+2012-04-19 13:59:37 +0200 Gil Pedersen <git@gpost.dk>
+
+ * gst/mpegtsdemux/mpegtsbase.c:
+ * gst/mpegtsdemux/mpegtsparse.c:
+ * gst/mpegtsdemux/tsdemux.c:
+ mpegtsdemux: fix memory leaks
+ Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674393
+
+2012-04-20 11:12:49 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * gst/fieldanalysis/Makefile.am:
+ fieldanalysis: Does not need to link to libgstbasevideo at all
+ Conflicts:
+ gst/fieldanalysis/Makefile.am
+
+2012-04-19 14:24:45 +0200 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * sys/applemedia/corevideobuffer.c:
+ * sys/pvr2d/gstpvrbufferpool.c:
+ fix for video api update
+
+2012-04-19 12:29:56 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * gst-libs/gst/video/gstbasevideodecoder.c:
+ * gst-libs/gst/video/gstbasevideoencoder.c:
+ * gst/y4m/gsty4mdec.c:
+ * sys/applemedia/corevideobuffer.c:
+ * sys/pvr2d/gstpvrbufferpool.c:
+ video: Update for libgstvideo API changes
+
+2012-04-17 22:46:12 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+ * gst/jpegformat/gstjpegparse.c:
+ jpegparse: Do not set the duration to the input buffer's duration unless valid This causes a bug where the first buffer has ts = 0, dur=X, the second buffer has ts=X (because of ts += duration), dur=-1, then the following buffers will start having a non valid timestamp. The real duration is only calculated during the caps negociation when there is a framerate available and the buffer's duration is invalid.
+
+2012-04-17 15:44:07 +0200 Julian Scheel <julian@jusst.de>
+
+ * gst/mpegtsdemux/tsdemux.c:
+ tsdemux: Set currentlist to NULL after free.
+ This prevents double free of currentlist is some circumstances.
+
+2012-04-17 18:56:50 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+ * gst/jpegformat/gstjpegparse.c:
+ jpegparse: Fix duration in buffers. It's frames per second, not seconds per frame
+
+2012-04-17 15:22:59 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+ * gst/asfmux/gstasfmux.c:
+ * gst/asfmux/gstasfmux.h:
+ * gst/asfmux/gstasfobjects.h:
+ * gst/debugutils/gstcompare.c:
+ * gst/debugutils/gstcompare.h:
+ * gst/frei0r/gstfrei0rmixer.c:
+ * gst/frei0r/gstfrei0rmixer.h:
+ * gst/mpegpsmux/mpegpsmux.c:
+ * gst/mpegpsmux/mpegpsmux.h:
+ * gst/mpegtsmux/mpegtsmux.c:
+ * gst/mpegtsmux/mpegtsmux.h:
+ * gst/mxf/mxfmux.c:
+ * gst/mxf/mxfmux.h:
+ * gst/videomeasure/gstvideomeasure_ssim.c:
+ * gst/videomeasure/gstvideomeasure_ssim.h:
+ * sys/winks/kshelpers.c:
+ * sys/winks/ksvideohelpers.c:
+ collectpads2: rename to collectpads
+
+2012-04-16 11:00:44 +0200 Matej Knopp <matej.knopp@gmail.com>
+
+ * sys/applemedia/Makefile.am:
+ applemedia: do not link gstinterfaces
+
+2012-04-16 09:09:25 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * common:
+ Automatic update of common submodule
+ From 6db25be to dc70203
+
+2012-04-13 00:13:39 +0200 Alessandro Decina <alessandro.decina@collabora.co.uk>
+
+ * gst/mpegtsmux/mpegtsmux.c:
+ mpegtsmux: fix pad iterator leak
+
+2012-04-13 00:14:27 +0200 Alessandro Decina <alessandro.decina@collabora.co.uk>
+
+ * gst/mpegtsmux/mpegtsmux.c:
+ * tests/check/elements/mpegtsmux.c:
+ mpegtsmux: don't leak force key unit events
+
+2012-04-14 21:09:25 +0200 Matej Knopp <matej.knopp@gmail.com>
+
+ * gst-libs/gst/codecparsers/gstmpegvideoparser.c:
+ mpegvideoparse: Do not ignore start code at the end of buffer
+
+2012-04-14 21:02:06 +0200 Matej Knopp <matej.knopp@gmail.com>
+
+ * gst/videoparsers/gstmpegvideoparse.c:
+ mpegvideoparse: Parser fails to split some frames
+
+2012-04-14 20:53:47 +0200 Matej Knopp <matej.knopp@gmail.com>
+
+ * gst/videoparsers/gstmpegvideoparse.c:
+ mpegvideoparse: Fix FPS and frame duration for telecine files
+
+2012-04-14 20:46:24 +0200 Matej Knopp <matej.knopp@gmail.com>
+
+ * gst/videoparsers/gstmpegvideoparse.c:
+ mpegvideoparse: Do not update codec-data when only quantiser matrix changes
+
+2012-04-14 15:29:15 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * gst/geometrictransform/Makefile.am:
+ geometrictransform: don't link against libgstinterfaces which was removed
+ The GstNavigation interface is now in libgstvideo.
+
+2012-04-13 22:04:38 +0200 Matej Knopp <matej.knopp@gmail.com>
+
+ * gst/videoparsers/gstmpegvideoparse.c:
+ fix crash
+ last_sc is not reset every time a frame is being output, which can cause
+ last_sc > buf_size in subsequent frame.
+ Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674073
+
+2012-04-13 15:12:12 +0200 Matej Knopp <matej.knopp@gmail.com>
+
+ * gst-libs/gst/video/gstbasevideodecoder.c:
+ Set sync_poinr = 1 for keyframe
+
+2012-04-13 14:07:05 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * gst/geometrictransform/gstgeometrictransform.c:
+ geometrictransform: use 1.0 videofilter baseclass functions
+ Port to the new functions of the videofilter class
+
+2012-04-13 10:16:38 -0300 Thiago Santos <thiago.sousa.santos@collabora.com>
+
+ * configure.ac:
+ * gst/geometrictransform/gstbulge.c:
+ * gst/geometrictransform/gstcircle.c:
+ * gst/geometrictransform/gstdiffuse.c:
+ * gst/geometrictransform/gstfisheye.c:
+ * gst/geometrictransform/gstgeometrictransform.c:
+ * gst/geometrictransform/gstkaleidoscope.c:
+ * gst/geometrictransform/gstmarble.c:
+ * gst/geometrictransform/gstmirror.c:
+ * gst/geometrictransform/gstpinch.c:
+ * gst/geometrictransform/gstrotate.c:
+ * gst/geometrictransform/gstsphere.c:
+ * gst/geometrictransform/gstsquare.c:
+ * gst/geometrictransform/gststretch.c:
+ * gst/geometrictransform/gsttunnel.c:
+ * gst/geometrictransform/gsttwirl.c:
+ * gst/geometrictransform/gstwaterripple.c:
+ geometrictransform: port to 1.0
+ Straightforward port of geometrictransform plugin
+
+2012-04-13 13:44:46 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * autogen.sh:
+ * configure.ac:
+ configure: Modernize autotools setup a bit
+ Also we now only create tar.bz2 and tar.xz tarballs.
+
+2012-04-13 13:37:21 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * common:
+ Automatic update of common submodule
+ From 464fe15 to 6db25be
+
+2012-04-13 13:10:13 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * gst/camerabin2/Makefile.am:
+ * gst/debugutils/Makefile.am:
+ * gst/sdp/Makefile.am:
+ * tests/check/Makefile.am:
+ * tests/examples/camerabin/Makefile.am:
+ * tests/examples/camerabin2/Makefile.am:
+ * tests/examples/scaletempo/Makefile.am:
+ * win32/common/config.h:
+ Update for the removal of the interfaces library and the tuner/mixer interfaces
+
+2012-04-12 18:25:09 -0400 Reynaldo H. Verdejo Pinochet <reynaldo@collabora.com>
+
+ * Android.mk:
+ Sync Android.mk entries to the new major version
+ Change naming on the pkgconfig files to reflect
+ the 0.10 -> 1.0 bump.
+
+2012-04-12 11:19:27 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * configure.ac:
+ Back to development
+
=== release 0.11.90 ===
-2012-04-12 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+2012-04-12 10:50:10 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
* configure.ac:
- releasing 0.11.90, "Where the good and the bad and the worst and the best have gone to their eternal rest"
+ * docs/plugins/gst-plugins-bad-plugins.args:
+ * docs/plugins/gst-plugins-bad-plugins.hierarchy:
+ * docs/plugins/gst-plugins-bad-plugins.interfaces:
+ * docs/plugins/gst-plugins-bad-plugins.prerequisites:
+ * docs/plugins/inspect/plugin-adpcmdec.xml:
+ * docs/plugins/inspect/plugin-adpcmenc.xml:
+ * docs/plugins/inspect/plugin-assrender.xml:
+ * docs/plugins/inspect/plugin-audiovisualizers.xml:
+ * docs/plugins/inspect/plugin-autoconvert.xml:
+ * docs/plugins/inspect/plugin-bayer.xml:
+ * docs/plugins/inspect/plugin-bz2.xml:
+ * docs/plugins/inspect/plugin-camerabin2.xml:
+ * docs/plugins/inspect/plugin-celt.xml:
+ * docs/plugins/inspect/plugin-dataurisrc.xml:
+ * docs/plugins/inspect/plugin-debugutilsbad.xml:
+ * docs/plugins/inspect/plugin-dtmf.xml:
+ * docs/plugins/inspect/plugin-dtsdec.xml:
+ * docs/plugins/inspect/plugin-dvbsuboverlay.xml:
+ * docs/plugins/inspect/plugin-dvdspu.xml:
+ * docs/plugins/inspect/plugin-faac.xml:
+ * docs/plugins/inspect/plugin-faad.xml:
+ * docs/plugins/inspect/plugin-flite.xml:
+ * docs/plugins/inspect/plugin-gmedec.xml:
+ * docs/plugins/inspect/plugin-gsm.xml:
+ * docs/plugins/inspect/plugin-mms.xml:
+ * docs/plugins/inspect/plugin-modplug.xml:
+ * docs/plugins/inspect/plugin-mpegdemux2.xml:
+ * docs/plugins/inspect/plugin-pcapparse.xml:
+ * docs/plugins/inspect/plugin-rawparse.xml:
+ * docs/plugins/inspect/plugin-removesilence.xml:
+ * docs/plugins/inspect/plugin-rtmp.xml:
+ * docs/plugins/inspect/plugin-rtpmux.xml:
+ * docs/plugins/inspect/plugin-rtpvp8.xml:
+ * docs/plugins/inspect/plugin-scaletempo.xml:
+ * docs/plugins/inspect/plugin-schro.xml:
+ * docs/plugins/inspect/plugin-sdp.xml:
+ * docs/plugins/inspect/plugin-segmentclip.xml:
+ * docs/plugins/inspect/plugin-shm.xml:
+ * docs/plugins/inspect/plugin-smooth.xml:
+ * docs/plugins/inspect/plugin-videoparsersbad.xml:
+ * docs/plugins/inspect/plugin-voaacenc.xml:
+ * docs/plugins/inspect/plugin-vp8.xml:
+ * docs/plugins/inspect/plugin-y4mdec.xml:
+ * docs/plugins/inspect/plugin-zbar.xml:
+ * gst-plugins-bad.doap:
+ * gst/bayer/gstbayerorc-dist.c:
+ * win32/common/config.h:
+ Release 0.11.90
+
+2012-04-12 10:47:35 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * po/af.po:
+ * po/az.po:
+ * po/bg.po:
+ * po/ca.po:
+ * po/cs.po:
+ * po/da.po:
+ * po/de.po:
+ * po/el.po:
+ * po/en_GB.po:
+ * po/eo.po:
+ * po/es.po:
+ * po/eu.po:
+ * po/fi.po:
+ * po/fr.po:
+ * po/gl.po:
+ * po/hu.po:
+ * po/id.po:
+ * po/it.po:
+ * po/ja.po:
+ * po/ky.po:
+ * po/lt.po:
+ * po/lv.po:
+ * po/mt.po:
+ * po/nb.po:
+ * po/nl.po:
+ * po/or.po:
+ * po/pl.po:
+ * po/pt_BR.po:
+ * po/ro.po:
+ * po/ru.po:
+ * po/sk.po:
+ * po/sl.po:
+ * po/sq.po:
+ * po/sr.po:
+ * po/sv.po:
+ * po/tr.po:
+ * po/uk.po:
+ * po/vi.po:
+ * po/zh_CN.po:
+ Update .po files
2012-04-11 21:47:52 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
diff --git a/Makefile.in b/Makefile.in
index dc1abe21..d3af32cd 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -178,8 +178,8 @@ am__relativize = \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
GZIP_ENV = --best
+DIST_ARCHIVES = $(distdir).tar.xz
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -469,6 +469,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -485,6 +487,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -517,10 +520,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -622,9 +624,6 @@ EXTRA_DIST = \
DISTCLEANFILES = _stdint.h
-# make bz2 as well
-AUTOMAKE_OPTIONS = dist-bzip2
-
# cruft: plugins that have been merged or moved or renamed
CRUFT_FILES = \
$(top_builddir)/common/shave \
@@ -955,6 +954,7 @@ distdir: $(DISTFILES)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
+
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__remove_distdir)
@@ -966,7 +966,6 @@ dist-lzip: distdir
dist-lzma: distdir
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
$(am__remove_distdir)
-
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__remove_distdir)
@@ -985,8 +984,7 @@ dist-zip: distdir
$(am__remove_distdir)
dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
@@ -1262,8 +1260,7 @@ check-nonportable-print-format:
dist-hook: check-exports win32-check-crlf
release: dist
- $(MAKE) $(PACKAGE)-$(VERSION).tar.gz.md5
- $(MAKE) $(PACKAGE)-$(VERSION).tar.bz2.md5
+ $(MAKE) $(PACKAGE)-$(VERSION).tar.xz.md5
# generate md5 sum files
%.md5: %
diff --git a/NEWS b/NEWS
index e666c2de..04b69a77 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,9 @@
-This is GStreamer Bad Plug-ins 0.11.90 "Where the good and the bad and the worst and the best have gone to their eternal rest"
+This is GStreamer Bad Plug-ins 0.11.91 "Be he alive, or be he dead"
+
+New in 0.11.91:
+
+ * Ported asfmux, camerabin, coloreffects, gaudieffects, geometrictransform, hls plugins
+ * Lots of bugfixes and other improvements
New in 0.11.90:
diff --git a/RELEASE b/RELEASE
index 4af6af07..a100f2f8 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,5 +1,5 @@
-Release notes for GStreamer Bad Plug-ins 0.11.90 "Where the good and the bad and the worst and the best have gone to their eternal rest"
+Release notes for GStreamer Bad Plug-ins 0.11.91 "Be he alive, or be he dead"
@@ -58,7 +58,8 @@ contains a set of well-supported plug-ins, but might pose problems for
Features of this release
- * Lots of bugfixes, cleanup and other improvements
+ * Ported asfmux, camerabin, coloreffects, gaudieffects, geometrictransform, hls plugins
+ * Lots of bugfixes and other improvements
There were no bugs fixed in this release
@@ -89,14 +90,29 @@ Applications
Contributors to this release
+ * Aleix Conchillo Flaque
* Alessandro Decina
* Andoni Morales Alastruey
+ * Arun Raghavan
* Edward Hervey
+ * Gil Pedersen
+ * Jacob Meuser
+ * Julian Scheel
+ * Luis de Bethencourt
+ * Marc-André Lureau
* Mark Nauwelaerts
- * Olivier Crête
+ * Matej Knopp
+ * Patricia Muscalu
+ * Raimo Järvi
+ * Reynaldo H. Verdejo Pinochet
* Sebastian Dröge
- * Stefan Sauer
+ * Sebastian Rasmussen
+ * Sreerenj Balachandran
+ * Thiago Santos
* Thibault Saunier
+ * Tim-Philipp Müller
* Wim Taymans
- * uraeus
+ * Wind Yuan
+ * Youness Alaoui
+ * Руслан Ижбулатов
  \ No newline at end of file
diff --git a/aclocal.m4 b/aclocal.m4
index 6d97402f..bda00e8f 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.11.4 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.5 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
@@ -14,8 +14,8 @@
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])])
@@ -38,7 +38,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11.4], [],
+m4_if([$1], [1.11.5], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -54,7 +54,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.4])dnl
+[AM_AUTOMAKE_VERSION([1.11.5])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -845,6 +845,25 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
diff --git a/autogen.sh b/autogen.sh
index a7f26dfe..a444588f 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -39,14 +39,14 @@ autogen_options $@
printf "+ check for build tools"
if test ! -z "$NOCHECK"; then echo " skipped"; else echo; fi
-version_check "autoconf" "$AUTOCONF autoconf autoconf270 autoconf269 autoconf268 autoconf267 autoconf266 autoconf265 autoconf264 autoconf263 autoconf262 autoconf261 autoconf260" \
- "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 60 || DIE=1
-version_check "automake" "$AUTOMAKE automake automake-1.11 automake-1.10" \
- "ftp://ftp.gnu.org/pub/gnu/automake/" 1 10 || DIE=1
+version_check "autoconf" "$AUTOCONF autoconf autoconf270 autoconf269 autoconf268 autoconf267 autoconf266 autoconf265 autoconf264 autoconf263 autoconf262" \
+ "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 62 || DIE=1
+version_check "automake" "$AUTOMAKE automake automake-1.11" \
+ "ftp://ftp.gnu.org/pub/gnu/automake/" 1 11 || DIE=1
version_check "autopoint" "autopoint" \
"ftp://ftp.gnu.org/pub/gnu/gettext/" 0 17 || DIE=1
version_check "libtoolize" "$LIBTOOLIZE libtoolize glibtoolize" \
- "ftp://ftp.gnu.org/pub/gnu/libtool/" 1 5 0 || DIE=1
+ "ftp://ftp.gnu.org/pub/gnu/libtool/" 2 2 6 || DIE=1
version_check "pkg-config" "" \
"http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
diff --git a/common/Makefile.in b/common/Makefile.in
index cf46fb6b..a30ad0f8 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -433,6 +433,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -449,6 +451,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -481,10 +484,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/common/gst-autogen.sh b/common/gst-autogen.sh
index f05e0213..e54dbcfa 100644
--- a/common/gst-autogen.sh
+++ b/common/gst-autogen.sh
@@ -216,38 +216,6 @@ autoheader_check ()
}
-autoconf_2_52d_check ()
-{
- # autoconf 2.52d has a weird issue involving a yes:no error
- # so don't allow it's use
- test -z "$NOCHECK" && {
- ac_version=`$autoconf --version|head -n 1|sed 's/^[a-zA-Z\.\ ()]*//;s/ .*$//'`
- if test "$ac_version" = "2.52d"; then
- echo "autoconf 2.52d has an issue with our current build."
- echo "We don't know who's to blame however. So until we do, get a"
- echo "regular version. RPM's of a working version are on the gstreamer site."
- exit 1
- fi
- }
- return 0
-}
-libtool_2_2_gettext_check ()
-{
- # libtool 2.2 needs autopoint 0.17 or higher
- version_compare LIBTOOLIZE 2 2 0
- if test $? -eq 0
- then
- version_compare AUTOPOINT 0 17 0
- if test $? -ne 0
- then
- echo "libtool 2.2 requires autopoint 0.17 or higher"
- return 1
- fi
- fi
- return 0
-}
-
-
die_check ()
{
# call with $DIE
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index d896c799..120dac2b 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -393,6 +393,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -409,6 +411,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -441,10 +444,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/common/m4/as-libtool.m4 b/common/m4/as-libtool.m4
index 25de9d13..3b16095a 100644
--- a/common/m4/as-libtool.m4
+++ b/common/m4/as-libtool.m4
@@ -41,5 +41,6 @@ AC_DEFUN([AS_LIBTOOL],
fi
AC_SUBST([$1]_LT_LDFLAGS)
- AC_LIBTOOL_DLOPEN
+ LT_PREREQ([2.2.6])
+ LT_INIT([dlopen win32-dll disable-static])
])
diff --git a/common/release.mak b/common/release.mak
index 4a9b7d56..7fbf4ca1 100644
--- a/common/release.mak
+++ b/common/release.mak
@@ -1,12 +1,8 @@
# include this snippet to add a common release: target by using
# include $(top_srcdir)/common/release.mak
-# make bz2 as well
-AUTOMAKE_OPTIONS = dist-bzip2
-
release: dist
- $(MAKE) $(PACKAGE)-$(VERSION).tar.gz.md5
- $(MAKE) $(PACKAGE)-$(VERSION).tar.bz2.md5
+ $(MAKE) $(PACKAGE)-$(VERSION).tar.xz.md5
# generate md5 sum files
%.md5: %
diff --git a/config.h.in b/config.h.in
index 971c8acc..17793d77 100644
--- a/config.h.in
+++ b/config.h.in
@@ -391,6 +391,9 @@
/* Define to enable rsvg decoder (used by rsvg). */
#undef HAVE_RSVG
+/* Have RSVG 2.35.0 or newer */
+#undef HAVE_RSVG_2_35_0
+
/* Define to enable rtmp library (used by rtmp). */
#undef HAVE_RTMP
@@ -406,6 +409,9 @@
/* Define to enable sndfile plug-in (used by sfsrc sfsink). */
#undef HAVE_SNDFILE
+/* Define to enable sndio audio (used by sndio). */
+#undef HAVE_SNDIO
+
/* Define to enable soundtouch plug-in (used by soundtouch). */
#undef HAVE_SOUNDTOUCH
diff --git a/configure b/configure
index 54513b0b..3762b9cc 100755
--- a/configure
+++ b/configure
@@ -1,13 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for GStreamer Bad Plug-ins 0.11.90.
+# Generated by GNU Autoconf 2.69 for GStreamer Bad Plug-ins 0.11.91.
#
# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
#
#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -136,6 +134,31 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -169,7 +192,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -222,21 +246,25 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- # Preserve -v and -x to the replacement shell.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
- esac
- exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
if test x$as_have_required = xno; then :
@@ -340,6 +368,14 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -461,6 +497,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -495,16 +535,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -516,28 +556,8 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -571,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GStreamer Bad Plug-ins'
PACKAGE_TARNAME='gst-plugins-bad'
-PACKAGE_VERSION='0.11.90'
-PACKAGE_STRING='GStreamer Bad Plug-ins 0.11.90'
+PACKAGE_VERSION='0.11.91'
+PACKAGE_STRING='GStreamer Bad Plug-ins 0.11.91'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
PACKAGE_URL=''
@@ -629,6 +649,9 @@ GST_OPTION_CXXFLAGS
GST_OPTION_CFLAGS
DEPRECATED_CFLAGS
PROFILE_CFLAGS
+USE_SNDIO_FALSE
+USE_SNDIO_TRUE
+SNDIO_LIBS
USE_GSETTINGS_FALSE
USE_GSETTINGS_TRUE
GSETTINGS_RULES
@@ -710,6 +733,8 @@ TIMIDITY_LIBS
TIMIDITY_CFLAGS
USE_RSVG_FALSE
USE_RSVG_TRUE
+RSVG_2_35_0_LIBS
+RSVG_2_35_0_CFLAGS
RSVG_LIBS
RSVG_CFLAGS
USE_PVR_FALSE
@@ -936,11 +961,8 @@ HAVE_DIRECTSOUND
DIRECTSOUND_LIBS
DIRECTX_LDFLAGS
DIRECTX_CFLAGS
-XDG_LIBS
DCCP_LIBS
-HAVE_WINSOCK2_H_FALSE
-HAVE_WINSOCK2_H_TRUE
-WIN32_LIBS
+WINSOCK2_LIBS
USE_PLUGIN_Y4M_FALSE
USE_PLUGIN_Y4M_TRUE
USE_PLUGIN_VMNC_FALSE
@@ -1061,8 +1083,6 @@ USE_PLUGIN_CDXAPARSE_FALSE
USE_PLUGIN_CDXAPARSE_TRUE
USE_PLUGIN_CAMERABIN2_FALSE
USE_PLUGIN_CAMERABIN2_TRUE
-USE_PLUGIN_CAMERABIN_FALSE
-USE_PLUGIN_CAMERABIN_TRUE
USE_PLUGIN_BAYER_FALSE
USE_PLUGIN_BAYER_TRUE
USE_PLUGIN_AUTOCONVERT_FALSE
@@ -1393,8 +1413,8 @@ ac_user_opts='
enable_option_checking
enable_maintainer_mode
enable_silent_rules
-enable_shared
enable_static
+enable_shared
with_pic
enable_fast_install
enable_dependency_tracking
@@ -1439,7 +1459,6 @@ enable_asfmux
enable_audiovisualizers
enable_autoconvert
enable_bayer
-enable_camerabin
enable_camerabin2
enable_cdxaparse
enable_coloreffects
@@ -1580,6 +1599,7 @@ enable_rtmp
enable_spandsp
enable_gsettings
enable_schemas_compile
+enable_sndio
'
ac_precious_vars='build_alias
host_alias
@@ -1700,6 +1720,8 @@ PVR_CFLAGS
PVR_LIBS
RSVG_CFLAGS
RSVG_LIBS
+RSVG_2_35_0_CFLAGS
+RSVG_2_35_0_LIBS
TIMIDITY_CFLAGS
TIMIDITY_LIBS
TELETEXTDEC_CFLAGS
@@ -2177,8 +2199,6 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -2264,7 +2284,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GStreamer Bad Plug-ins 0.11.90 to adapt to many kinds of systems.
+\`configure' configures GStreamer Bad Plug-ins 0.11.91 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -2338,7 +2358,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 0.11.90:";;
+ short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 0.11.91:";;
esac
cat <<\_ACEOF
@@ -2346,12 +2366,12 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-maintainer-mode enable make rules and dependencies not useful
+ --disable-maintainer-mode disable make rules and dependencies not useful
(and sometimes confusing) to the casual installer
--enable-silent-rules less verbose build output (undo: `make V=1')
--disable-silent-rules verbose build output (undo: `make V=0')
+ --enable-static[=PKGS] build static libraries [default=no]
--enable-shared[=PKGS] build shared libraries [default=yes]
- --enable-static[=PKGS] build static libraries [default=yes]
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--disable-dependency-tracking speeds up one-time build
@@ -2383,7 +2403,6 @@ Optional Features:
disable dependency-less audiovisualizers plugin
--disable-autoconvert disable dependency-less autoconvert plugin
--disable-bayer disable dependency-less bayer plugin
- --disable-camerabin disable dependency-less camerabin plugin
--disable-camerabin2 disable dependency-less camerabin2 plugin
--disable-cdxaparse disable dependency-less cdxaparse plugin
--disable-coloreffects disable dependency-less coloreffects plugin
@@ -2523,6 +2542,7 @@ Optional Features:
--disable-gsettings disable GSettings plugin: gsettings
--disable-schemas-compile
Disable regeneration of gschemas.compiled on install
+ --disable-sndio disable sndio audio: sndio
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -2743,6 +2763,10 @@ Some influential environment variables:
PVR_LIBS linker flags for PVR, overriding pkg-config
RSVG_CFLAGS C compiler flags for RSVG, overriding pkg-config
RSVG_LIBS linker flags for RSVG, overriding pkg-config
+ RSVG_2_35_0_CFLAGS
+ C compiler flags for RSVG_2_35_0, overriding pkg-config
+ RSVG_2_35_0_LIBS
+ linker flags for RSVG_2_35_0, overriding pkg-config
TIMIDITY_CFLAGS
C compiler flags for TIMIDITY, overriding pkg-config
TIMIDITY_LIBS
@@ -2847,10 +2871,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GStreamer Bad Plug-ins configure 0.11.90
-generated by GNU Autoconf 2.68
+GStreamer Bad Plug-ins configure 0.11.91
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -2926,7 +2950,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -3270,7 +3294,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -3451,7 +3475,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -3467,7 +3492,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -3493,7 +3519,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -3509,7 +3536,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -3543,7 +3571,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -3777,8 +3806,8 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GStreamer Bad Plug-ins $as_me 0.11.90, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+It was created by GStreamer Bad Plug-ins $as_me 0.11.91, which was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4202,7 +4231,7 @@ case $as_dir/ in #((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
@@ -4371,7 +4400,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4411,7 +4440,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4462,7 +4491,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
'mkdir (GNU coreutils) '* | \
'mkdir (coreutils) '* | \
@@ -4515,7 +4544,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4601,7 +4630,7 @@ fi
# Define the identity of the package.
PACKAGE='gst-plugins-bad'
- VERSION='0.11.90'
+ VERSION='0.11.91'
cat >>confdefs.h <<_ACEOF
@@ -4635,17 +4664,98 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5
+$as_echo_n "checking how to create a ustar tar archive... " >&6; }
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar plaintar pax cpio none'
+_am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ { echo "$as_me:$LINENO: $_am_tar --version" >&5
+ ($_am_tar --version) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && break
+ done
+ am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x ustar -w "$$tardir"'
+ am__tar_='pax -L -x ustar -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
+ am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
+ am__untar='cpio -i -H ustar -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_ustar}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+ (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+ ($am__untar <conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+if ${am_cv_prog_tar_ustar+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ am_cv_prog_tar_ustar=$_am_tool
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5
+$as_echo "$am_cv_prog_tar_ustar" >&6; }
- PACKAGE_VERSION_MAJOR=$(echo 0.11.90 | cut -d'.' -f1)
- PACKAGE_VERSION_MINOR=$(echo 0.11.90 | cut -d'.' -f2)
- PACKAGE_VERSION_MICRO=$(echo 0.11.90 | cut -d'.' -f3)
+
+ PACKAGE_VERSION_MAJOR=$(echo 0.11.91 | cut -d'.' -f1)
+ PACKAGE_VERSION_MINOR=$(echo 0.11.91 | cut -d'.' -f2)
+ PACKAGE_VERSION_MICRO=$(echo 0.11.91 | cut -d'.' -f3)
@@ -4656,7 +4766,7 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
$as_echo_n "checking nano version... " >&6; }
- NANO=$(echo 0.11.90 | cut -d'.' -f4)
+ NANO=$(echo 0.11.91 | cut -d'.' -f4)
if test x"$NANO" = x || test "x$NANO" = "x0" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -4691,7 +4801,7 @@ $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles
if test "${enable_maintainer_mode+set}" = set; then :
enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
else
- USE_MAINTAINER_MODE=no
+ USE_MAINTAINER_MODE=yes
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
@@ -4829,29 +4939,6 @@ _ACEOF
- GST_CURRENT=0
- GST_REVISION=0
- GST_AGE=0
- GST_LIBVERSION=0:0:0
-
-
-
-
-
- GST_LT_LDFLAGS="$GST_LT_LDFLAGS -version-info $GST_LIBVERSION"
- if test ! -z ""
- then
- GST_LT_LDFLAGS="$GST_LT_LDFLAGS -release "
- fi
-
-
- enable_dlopen=yes
-
-
-
-
-
-
case $host_os in
cygwin* | mingw*)
lt_cv_deplibs_check_method=pass_all
@@ -4859,310 +4946,6 @@ _ACEOF
esac
-
-enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AS"; then
- ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AS="${ac_tool_prefix}as"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AS"; then
- ac_ct_AS=$AS
- # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_AS"; then
- ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_AS="as"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_AS" = x; then
- AS="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- AS=$ac_ct_AS
- fi
-else
- AS="$ac_cv_prog_AS"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DLLTOOL"; then
- ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
- ac_ct_DLLTOOL=$DLLTOOL
- # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_DLLTOOL"; then
- ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_DLLTOOL="dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_DLLTOOL" = x; then
- DLLTOOL="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- DLLTOOL=$ac_ct_DLLTOOL
- fi
-else
- DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$OBJDUMP"; then
- ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
- ac_ct_OBJDUMP=$OBJDUMP
- # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_OBJDUMP"; then
- ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_OBJDUMP" = x; then
- OBJDUMP="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- OBJDUMP=$ac_ct_OBJDUMP
- fi
-else
- OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
- ;;
-esac
-
-test -z "$AS" && AS=as
-
-
-
-
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
case `pwd` in
*\ * | *\ *)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
@@ -5342,7 +5125,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5382,7 +5165,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5435,7 +5218,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5476,7 +5259,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -5534,7 +5317,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5578,7 +5361,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6024,8 +5807,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -6260,7 +6042,7 @@ do
for ac_prog in sed gsed; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+ as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
case `"$ac_path_SED" --version 2>&1` in
@@ -6336,7 +6118,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -6402,7 +6184,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -6469,7 +6251,7 @@ do
for ac_prog in fgrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+ as_fn_executable_p "$ac_path_FGREP" || continue
# Check for GNU ac_path_FGREP and select it if it is found.
# Check for GNU $ac_path_FGREP
case `"$ac_path_FGREP" --version 2>&1` in
@@ -6725,7 +6507,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6769,7 +6551,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7193,7 +6975,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7233,7 +7015,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OBJDUMP="objdump"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7536,7 +7318,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7576,7 +7358,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DLLTOOL="dlltool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7677,7 +7459,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7721,7 +7503,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AR="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7846,7 +7628,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7886,7 +7668,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7945,7 +7727,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7985,7 +7767,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8634,7 +8416,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8674,7 +8456,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8754,7 +8536,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8794,7 +8576,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8846,7 +8628,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8886,7 +8668,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_NMEDIT="nmedit"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8938,7 +8720,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8978,7 +8760,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_LIPO="lipo"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9030,7 +8812,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9070,7 +8852,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL="otool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9122,7 +8904,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9162,7 +8944,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL64="otool64"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9642,36 +9424,350 @@ fi
done
+ GST_CURRENT=0
+ GST_REVISION=0
+ GST_AGE=0
+ GST_LIBVERSION=0:0:0
+
+
+
+
+
+ GST_LT_LDFLAGS="$GST_LT_LDFLAGS -version-info $GST_LIBVERSION"
+ if test ! -z ""
+ then
+ GST_LT_LDFLAGS="$GST_LT_LDFLAGS -release "
+ fi
+
+
+
+
# Set options
+enable_dlopen=yes
+enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AS"; then
+ ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AS="${ac_tool_prefix}as"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+fi
+if test -z "$ac_cv_prog_AS"; then
+ ac_ct_AS=$AS
+ # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AS"; then
+ ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AS="as"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
- # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
- enableval=$enable_shared; p=${PACKAGE-default}
+ if test "x$ac_ct_AS" = x; then
+ AS="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AS=$ac_ct_AS
+ fi
+else
+ AS="$ac_cv_prog_AS"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+ ;;
+esac
+
+test -z "$AS" && AS=as
+
+
+
+
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+# Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+ enableval=$enable_static; p=${PACKAGE-default}
case $enableval in
- yes) enable_shared=yes ;;
- no) enable_shared=no ;;
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
*)
- enable_shared=no
+ enable_static=no
# Look at the argument we got. We use all the common list separators.
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
for pkg in $enableval; do
IFS="$lt_save_ifs"
if test "X$pkg" = "X$p"; then
- enable_shared=yes
+ enable_static=yes
fi
done
IFS="$lt_save_ifs"
;;
esac
else
- enable_shared=yes
+ enable_static=no
fi
@@ -9682,27 +9778,30 @@ fi
- # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
- enableval=$enable_static; p=${PACKAGE-default}
+
+
+
+ # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; p=${PACKAGE-default}
case $enableval in
- yes) enable_static=yes ;;
- no) enable_static=no ;;
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
*)
- enable_static=no
+ enable_shared=no
# Look at the argument we got. We use all the common list separators.
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
for pkg in $enableval; do
IFS="$lt_save_ifs"
if test "X$pkg" = "X$p"; then
- enable_static=yes
+ enable_shared=yes
fi
done
IFS="$lt_save_ifs"
;;
esac
else
- enable_static=yes
+ enable_shared=yes
fi
@@ -9714,6 +9813,7 @@ fi
+
# Check whether --with-pic was given.
if test "${with_pic+set}" = set; then :
withval=$with_pic; lt_p=${PACKAGE-default}
@@ -13662,6 +13762,7 @@ CC="$lt_save_CC"
+
GST_REQ=0.11.90
GSTPB_REQ=0.11.90
@@ -13836,7 +13937,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -15745,7 +15846,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -15788,7 +15889,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -17193,7 +17294,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -17233,7 +17334,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -17286,7 +17387,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -17327,7 +17428,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -17385,7 +17486,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -17429,7 +17530,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -17625,8 +17726,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -17989,7 +18089,7 @@ main ()
return 0;
}
_ACEOF
-for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
do
CC="$ac_save_CC $ac_arg"
if ac_fn_c_try_compile "$LINENO"; then :
@@ -18029,8 +18129,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -18161,7 +18260,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -18205,7 +18304,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -21748,7 +21847,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_HAVE_CXX="yes"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -21791,7 +21890,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_OBJC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -21835,7 +21934,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OBJC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22357,7 +22456,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_VALGRIND_PATH="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22443,7 +22542,7 @@ do
for ac_prog in sed gsed; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+ as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
case `"$ac_path_SED" --version 2>&1` in
@@ -22518,7 +22617,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22600,7 +22699,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -26722,21 +26821,22 @@ _ACEOF
-GST_PLUGINS_NONPORTED=" aiff asfmux \
- camerabin cdxaparse coloreffects \
+GST_PLUGINS_NONPORTED=" aiff \
+ cdxaparse \
dccp faceoverlay festival \
- fieldanalysis freeverb freeze frei0r gaudieffects geometrictransform \
- hdvparse hls id3tag inter interlace ivfparse jpegformat jp2kdecimator \
+ fieldanalysis freeverb freeze frei0r \
+ hdvparse id3tag inter interlace ivfparse jpegformat jp2kdecimator \
kate liveadder legacyresample librfb mpegtsmux \
mpegpsmux mve mxf mythtv nsf nuvdemux \
patchdetect pnm real \
sdi siren speed subenc stereo tta videofilters \
videomeasure videosignal vmnc \
decklink fbdev linsys vcd \
- apexsink cdaudio cog curl dc1394 dirac directfb resindvd \
+ apexsink cdaudio cog dc1394 dirac directfb resindvd \
gsettings jp2k ladspa mimic \
musepack musicbrainz nas neon ofa openal opencv rsvg sdl sndfile soundtouch spandsp spc timidity \
- wildmidi xvid lv2 teletextdec dvb mpegtsdemux"
+ directsound direct3d directdraw direct3d9 acm wininet \
+ wildmidi xvid lv2 teletextdec dvb sndio"
@@ -27041,49 +27141,6 @@ fi
- GST_PLUGINS_ALL="$GST_PLUGINS_ALL camerabin"
-
-
-
- # Check whether --enable-camerabin was given.
-if test "${enable_camerabin+set}" = set; then :
- enableval=$enable_camerabin;
- case "${enableval}" in
- yes) gst_use_camerabin=yes ;;
- no) gst_use_camerabin=no ;;
- *) as_fn_error $? "bad value ${enableval} for --enable-camerabin" "$LINENO" 5 ;;
- esac
-
-else
- gst_use_camerabin=yes
-fi
-
- if test x$gst_use_camerabin = xno; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin camerabin" >&5
-$as_echo "$as_me: disabling dependency-less plugin camerabin" >&6;}
- WITHOUT_PLUGINS="$WITHOUT_PLUGINS camerabin"
- fi
-
-
- if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " camerabin " > /dev/null; then
- GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED camerabin"
- fi
- if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " camerabin " > /dev/null; then
- GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ camerabin / /'`
- fi
- if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " camerabin " > /dev/null; then
- GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ camerabin / /'`
- fi
- if echo " $GST_PLUGINS_SELECTED " | grep -i " camerabin " > /dev/null; then
- USE_PLUGIN_CAMERABIN_TRUE=
- USE_PLUGIN_CAMERABIN_FALSE='#'
-else
- USE_PLUGIN_CAMERABIN_TRUE='#'
- USE_PLUGIN_CAMERABIN_FALSE=
-fi
-
-
-
GST_PLUGINS_ALL="$GST_PLUGINS_ALL camerabin2"
@@ -29707,32 +29764,14 @@ done
if test "x$HAVE_WINSOCK2_H" = "xyes"; then
- WIN32_LIBS="-lws2_32"
-
-fi
-
- if test "x$HAVE_WINSOCK2_H" = "xyes"; then
- HAVE_WINSOCK2_H_TRUE=
- HAVE_WINSOCK2_H_FALSE='#'
-else
- HAVE_WINSOCK2_H_TRUE='#'
- HAVE_WINSOCK2_H_FALSE=
-fi
-
-
-if test "x$HAVE_WINSOCK2_H" = "xyes"; then
- DCCP_LIBS="$DCCP_LIBS -lws2_32"
- XDG_LIBS="$XDG_LIBS -lws2_32"
-
+ WINSOCK2_LIBS="-lws2_32"
fi
if test "x$HAVE_PTHREAD_H" = "xyes"; then
DCCP_LIBS="$DCCP_LIBS -lpthread"
-fi
-
-if test "x$HAVE_PTHREAD_H" != "xyes"; then
+else
GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ dccp / /'`
if false; then
@@ -39533,7 +39572,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -39577,7 +39616,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -40440,7 +40479,85 @@ else
RSVG_LIBS=$pkg_cv_RSVG_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- HAVE_RSVG="yes"
+
+ HAVE_RSVG="yes"
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSVG_2_35_0" >&5
+$as_echo_n "checking for RSVG_2_35_0... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$RSVG_2_35_0_CFLAGS"; then
+ pkg_cv_RSVG_2_35_0_CFLAGS="$RSVG_2_35_0_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.35.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.35.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_RSVG_2_35_0_CFLAGS=`$PKG_CONFIG --cflags "librsvg-2.0 >= 2.35.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$RSVG_2_35_0_LIBS"; then
+ pkg_cv_RSVG_2_35_0_LIBS="$RSVG_2_35_0_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.35.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.35.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_RSVG_2_35_0_LIBS=`$PKG_CONFIG --libs "librsvg-2.0 >= 2.35.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ RSVG_2_35_0_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "librsvg-2.0 >= 2.35.0"`
+ else
+ RSVG_2_35_0_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "librsvg-2.0 >= 2.35.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$RSVG_2_35_0_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ HAVE_RSVG_2_35_0="no"
+elif test $pkg_failed = untried; then
+ HAVE_RSVG_2_35_0="no"
+else
+ RSVG_2_35_0_CFLAGS=$pkg_cv_RSVG_2_35_0_CFLAGS
+ RSVG_2_35_0_LIBS=$pkg_cv_RSVG_2_35_0_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ HAVE_RSVG_2_35_0="yes"
+fi
+ if test "x$HAVE_RSVG_2_35_0" = "xyes"; then
+
+$as_echo "#define HAVE_RSVG_2_35_0 1" >>confdefs.h
+
+ fi
+
fi
@@ -41170,7 +41287,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -46462,7 +46579,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -46505,7 +46622,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -46579,7 +46696,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GLIB_COMPILE_SCHEMAS="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -46698,6 +46815,150 @@ fi
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: sndio audio ***" >&5
+$as_echo "$as_me: *** checking feature: sndio audio ***" >&6;}
+if test "xsndio" != "x"
+then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: sndio ***" >&5
+$as_echo "$as_me: *** for plug-ins: sndio ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_SNDIO" = "xno"; then
+ NOUSE="yes"
+fi
+# Check whether --enable-sndio was given.
+if test "${enable_sndio+set}" = set; then :
+ enableval=$enable_sndio; case "${enableval}" in
+ yes) USE_SNDIO=yes;;
+ no) USE_SNDIO=no;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-sndio" "$LINENO" 5 ;;
+ esac
+else
+ USE_SNDIO=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+ USE_SNDIO="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** sndio pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** sndio pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " SNDIO " > /dev/null; then
+ USE_SNDIO="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** sndio not ported" >&5
+$as_echo "$as_me: WARNING: *** sndio not ported" >&2;}
+fi
+
+
+if test x$USE_SNDIO = xyes; then
+
+ gst_check_save_LIBS=$LIBS
+ gst_check_save_LDFLAGS=$LDFLAGS
+ gst_check_save_CFLAGS=$CFLAGS
+ gst_check_save_CPPFLAGS=$CPPFLAGS
+ gst_check_save_CXXFLAGS=$CXXFLAGS
+
+ HAVE_SNDIO=no
+
+ ac_fn_c_check_header_mongrel "$LINENO" "sndio.h" "ac_cv_header_sndio_h" "$ac_includes_default"
+if test "x$ac_cv_header_sndio_h" = xyes; then :
+ HAVE_SNDIO="yes"
+else
+ HAVE_SNDIO="no"
+fi
+
+
+ if test "x$HAVE_SNDIO" = "xyes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sio_open in -lsndio" >&5
+$as_echo_n "checking for sio_open in -lsndio... " >&6; }
+if ${ac_cv_lib_sndio_sio_open+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsndio $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sio_open ();
+int
+main ()
+{
+return sio_open ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_sndio_sio_open=yes
+else
+ ac_cv_lib_sndio_sio_open=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sndio_sio_open" >&5
+$as_echo "$ac_cv_lib_sndio_sio_open" >&6; }
+if test "x$ac_cv_lib_sndio_sio_open" = xyes; then :
+ HAVE_SNDIO="yes"
+else
+ HAVE_SNDIO="no"
+fi
+
+ if test "x$HAVE_SNDIO" = "xyes"; then
+ SNDIO_LIBS=-lsndio
+
+ fi
+ fi
+
+
+ LIBS=$gst_check_save_LIBS
+ LDFLAGS=$gst_check_save_LDFLAGS
+ CFLAGS=$gst_check_save_CFLAGS
+ CPPFLAGS=$gst_check_save_CPPFLAGS
+ CXXFLAGS=$gst_check_save_CXXFLAGS
+
+ if test x$HAVE_SNDIO = xno; then
+ USE_SNDIO=no
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: sndio" >&5
+$as_echo "$as_me: *** These plugins will be built: sndio" >&6;}
+ fi
+fi
+if test x$USE_SNDIO = xyes; then
+ :
+ if test "xsndio" != "x"; then
+ GST_PLUGINS_YES="\tsndio\n$GST_PLUGINS_YES"
+ fi
+
+$as_echo "#define HAVE_SNDIO /**/" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: sndio" >&5
+$as_echo "$as_me: *** These plugins will not be built: sndio" >&6;}
+ if test "xsndio" != "x"; then
+ GST_PLUGINS_NO="\tsndio\n$GST_PLUGINS_NO"
+ fi
+ :
+fi
+ if test x$USE_SNDIO = xyes; then
+ USE_SNDIO_TRUE=
+ USE_SNDIO_FALSE='#'
+else
+ USE_SNDIO_TRUE='#'
+ USE_SNDIO_FALSE=
+fi
+
+
+
else
@@ -47229,6 +47490,14 @@ else
USE_TELETEXTDEC_FALSE=
fi
+ if false; then
+ USE_SNDIO_TRUE=
+ USE_SNDIO_FALSE='#'
+else
+ USE_SNDIO_TRUE='#'
+ USE_SNDIO_FALSE=
+fi
+
fi
@@ -47272,7 +47541,7 @@ GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^_*gst_plugin_
-ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-plugins-bad.spec gst/Makefile gst/adpcmdec/Makefile gst/adpcmenc/Makefile gst/aiff/Makefile gst/asfmux/Makefile gst/audiovisualizers/Makefile gst/autoconvert/Makefile gst/bayer/Makefile gst/camerabin/Makefile gst/camerabin2/Makefile gst/cdxaparse/Makefile gst/coloreffects/Makefile gst/dataurisrc/Makefile gst/dccp/Makefile gst/debugutils/Makefile gst/dtmf/Makefile gst/dvbsuboverlay/Makefile gst/dvdspu/Makefile gst/faceoverlay/Makefile gst/festival/Makefile gst/fieldanalysis/Makefile gst/freeze/Makefile gst/freeverb/Makefile gst/frei0r/Makefile gst/gaudieffects/Makefile gst/geometrictransform/Makefile gst/hdvparse/Makefile gst/hls/Makefile gst/id3tag/Makefile gst/inter/Makefile gst/interlace/Makefile gst/ivfparse/Makefile gst/jp2kdecimator/Makefile gst/jpegformat/Makefile gst/legacyresample/Makefile gst/librfb/Makefile gst/liveadder/Makefile gst/mpegdemux/Makefile gst/mpegtsdemux/Makefile gst/mpegtsmux/Makefile gst/mpegtsmux/tsmux/Makefile gst/mpegpsmux/Makefile gst/mve/Makefile gst/mxf/Makefile gst/nsf/Makefile gst/nuvdemux/Makefile gst/patchdetect/Makefile gst/pcapparse/Makefile gst/pnm/Makefile gst/rawparse/Makefile gst/real/Makefile gst/removesilence/Makefile gst/rtpmux/Makefile gst/rtpvp8/Makefile gst/scaletempo/Makefile gst/sdi/Makefile gst/sdp/Makefile gst/segmentclip/Makefile gst/siren/Makefile gst/smooth/Makefile gst/speed/Makefile gst/subenc/Makefile gst/stereo/Makefile gst/tta/Makefile gst/videofilters/Makefile gst/videomeasure/Makefile gst/videoparsers/Makefile gst/videosignal/Makefile gst/vmnc/Makefile gst/y4m/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst-libs/gst/basecamerabinsrc/Makefile gst-libs/gst/interfaces/Makefile gst-libs/gst/signalprocessor/Makefile gst-libs/gst/codecparsers/Makefile gst-libs/gst/video/Makefile sys/Makefile sys/dshowdecwrapper/Makefile sys/acmenc/Makefile sys/acmmp3dec/Makefile sys/applemedia/Makefile sys/avc/Makefile sys/d3dvideosink/Makefile sys/decklink/Makefile sys/directdraw/Makefile sys/directsound/Makefile sys/dshowsrcwrapper/Makefile sys/dshowvideosink/Makefile sys/dvb/Makefile sys/fbdev/Makefile sys/linsys/Makefile sys/osxvideo/Makefile sys/qtwrapper/Makefile sys/shm/Makefile sys/vcd/Makefile sys/vdpau/Makefile sys/vdpau/gstvdp/Makefile sys/vdpau/basevideodecoder/Makefile sys/pvr2d/Makefile sys/wasapi/Makefile sys/wininet/Makefile sys/winks/Makefile sys/winscreencap/Makefile tests/Makefile tests/check/Makefile tests/files/Makefile tests/examples/Makefile tests/examples/camerabin/Makefile tests/examples/camerabin2/Makefile tests/examples/directfb/Makefile tests/examples/mxf/Makefile tests/examples/scaletempo/Makefile tests/examples/opencv/Makefile tests/icles/Makefile ext/voamrwbenc/Makefile ext/voaacenc/Makefile ext/assrender/Makefile ext/apexsink/Makefile ext/bz2/Makefile ext/cdaudio/Makefile ext/celt/Makefile ext/chromaprint/Makefile ext/cog/Makefile ext/curl/Makefile ext/dc1394/Makefile ext/dirac/Makefile ext/directfb/Makefile ext/wayland/Makefile ext/divx/Makefile ext/dts/Makefile ext/faac/Makefile ext/faad/Makefile ext/flite/Makefile ext/gsm/Makefile ext/jp2k/Makefile ext/kate/Makefile ext/ladspa/Makefile ext/lv2/Makefile ext/libmms/Makefile ext/Makefile ext/modplug/Makefile ext/mpeg2enc/Makefile ext/mimic/Makefile ext/mplex/Makefile ext/musepack/Makefile ext/musicbrainz/Makefile ext/mythtv/Makefile ext/nas/Makefile ext/neon/Makefile ext/ofa/Makefile ext/openal/Makefile ext/opencv/Makefile ext/opus/Makefile ext/rsvg/Makefile ext/resindvd/Makefile ext/rtmp/Makefile ext/schroedinger/Makefile ext/sdl/Makefile ext/sndfile/Makefile ext/soundtouch/Makefile ext/spandsp/Makefile ext/teletextdec/Makefile ext/gme/Makefile ext/gsettings/Makefile ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml ext/spc/Makefile ext/swfdec/Makefile ext/timidity/Makefile ext/vp8/Makefile ext/xvid/Makefile ext/zbar/Makefile po/Makefile.in docs/Makefile docs/plugins/Makefile docs/libs/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-bad.pc pkgconfig/gstreamer-plugins-bad-uninstalled.pc pkgconfig/gstreamer-codecparsers.pc pkgconfig/gstreamer-codecparsers-uninstalled.pc pkgconfig/gstreamer-basevideo.pc pkgconfig/gstreamer-basevideo-uninstalled.pc tools/Makefile m4/Makefile win32/common/config.h"
+ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-plugins-bad.spec gst/Makefile gst/adpcmdec/Makefile gst/adpcmenc/Makefile gst/aiff/Makefile gst/asfmux/Makefile gst/audiovisualizers/Makefile gst/autoconvert/Makefile gst/bayer/Makefile gst/camerabin2/Makefile gst/cdxaparse/Makefile gst/coloreffects/Makefile gst/dataurisrc/Makefile gst/dccp/Makefile gst/debugutils/Makefile gst/dtmf/Makefile gst/dvbsuboverlay/Makefile gst/dvdspu/Makefile gst/faceoverlay/Makefile gst/festival/Makefile gst/fieldanalysis/Makefile gst/freeze/Makefile gst/freeverb/Makefile gst/frei0r/Makefile gst/gaudieffects/Makefile gst/geometrictransform/Makefile gst/hdvparse/Makefile gst/hls/Makefile gst/id3tag/Makefile gst/inter/Makefile gst/interlace/Makefile gst/ivfparse/Makefile gst/jp2kdecimator/Makefile gst/jpegformat/Makefile gst/legacyresample/Makefile gst/librfb/Makefile gst/liveadder/Makefile gst/mpegdemux/Makefile gst/mpegtsdemux/Makefile gst/mpegtsmux/Makefile gst/mpegtsmux/tsmux/Makefile gst/mpegpsmux/Makefile gst/mve/Makefile gst/mxf/Makefile gst/nsf/Makefile gst/nuvdemux/Makefile gst/patchdetect/Makefile gst/pcapparse/Makefile gst/pnm/Makefile gst/rawparse/Makefile gst/real/Makefile gst/removesilence/Makefile gst/rtpmux/Makefile gst/rtpvp8/Makefile gst/scaletempo/Makefile gst/sdi/Makefile gst/sdp/Makefile gst/segmentclip/Makefile gst/siren/Makefile gst/smooth/Makefile gst/speed/Makefile gst/subenc/Makefile gst/stereo/Makefile gst/tta/Makefile gst/videofilters/Makefile gst/videomeasure/Makefile gst/videoparsers/Makefile gst/videosignal/Makefile gst/vmnc/Makefile gst/y4m/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst-libs/gst/basecamerabinsrc/Makefile gst-libs/gst/interfaces/Makefile gst-libs/gst/signalprocessor/Makefile gst-libs/gst/codecparsers/Makefile gst-libs/gst/video/Makefile sys/Makefile sys/dshowdecwrapper/Makefile sys/acmenc/Makefile sys/acmmp3dec/Makefile sys/applemedia/Makefile sys/avc/Makefile sys/d3dvideosink/Makefile sys/decklink/Makefile sys/directdraw/Makefile sys/directsound/Makefile sys/dshowsrcwrapper/Makefile sys/dshowvideosink/Makefile sys/dvb/Makefile sys/fbdev/Makefile sys/linsys/Makefile sys/osxvideo/Makefile sys/qtwrapper/Makefile sys/shm/Makefile sys/vcd/Makefile sys/vdpau/Makefile sys/vdpau/gstvdp/Makefile sys/vdpau/basevideodecoder/Makefile sys/pvr2d/Makefile sys/wasapi/Makefile sys/wininet/Makefile sys/winks/Makefile sys/winscreencap/Makefile tests/Makefile tests/check/Makefile tests/files/Makefile tests/examples/Makefile tests/examples/camerabin2/Makefile tests/examples/directfb/Makefile tests/examples/mxf/Makefile tests/examples/scaletempo/Makefile tests/examples/opencv/Makefile tests/icles/Makefile ext/voamrwbenc/Makefile ext/voaacenc/Makefile ext/assrender/Makefile ext/apexsink/Makefile ext/bz2/Makefile ext/cdaudio/Makefile ext/celt/Makefile ext/chromaprint/Makefile ext/cog/Makefile ext/curl/Makefile ext/dc1394/Makefile ext/dirac/Makefile ext/directfb/Makefile ext/wayland/Makefile ext/divx/Makefile ext/dts/Makefile ext/faac/Makefile ext/faad/Makefile ext/flite/Makefile ext/gsm/Makefile ext/jp2k/Makefile ext/kate/Makefile ext/ladspa/Makefile ext/lv2/Makefile ext/libmms/Makefile ext/Makefile ext/modplug/Makefile ext/mpeg2enc/Makefile ext/mimic/Makefile ext/mplex/Makefile ext/musepack/Makefile ext/musicbrainz/Makefile ext/mythtv/Makefile ext/nas/Makefile ext/neon/Makefile ext/ofa/Makefile ext/openal/Makefile ext/opencv/Makefile ext/opus/Makefile ext/rsvg/Makefile ext/resindvd/Makefile ext/rtmp/Makefile ext/schroedinger/Makefile ext/sdl/Makefile ext/sndfile/Makefile ext/soundtouch/Makefile ext/spandsp/Makefile ext/sndio/Makefile ext/teletextdec/Makefile ext/gme/Makefile ext/gsettings/Makefile ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml ext/spc/Makefile ext/swfdec/Makefile ext/timidity/Makefile ext/vp8/Makefile ext/xvid/Makefile ext/zbar/Makefile po/Makefile.in docs/Makefile docs/plugins/Makefile docs/libs/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-bad.pc pkgconfig/gstreamer-plugins-bad-uninstalled.pc pkgconfig/gstreamer-codecparsers.pc pkgconfig/gstreamer-codecparsers-uninstalled.pc pkgconfig/gstreamer-basevideo.pc pkgconfig/gstreamer-basevideo-uninstalled.pc tools/Makefile m4/Makefile win32/common/config.h"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -47577,10 +47846,6 @@ if test -z "${USE_PLUGIN_BAYER_TRUE}" && test -z "${USE_PLUGIN_BAYER_FALSE}"; th
as_fn_error $? "conditional \"USE_PLUGIN_BAYER\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${USE_PLUGIN_CAMERABIN_TRUE}" && test -z "${USE_PLUGIN_CAMERABIN_FALSE}"; then
- as_fn_error $? "conditional \"USE_PLUGIN_CAMERABIN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${USE_PLUGIN_CAMERABIN2_TRUE}" && test -z "${USE_PLUGIN_CAMERABIN2_FALSE}"; then
as_fn_error $? "conditional \"USE_PLUGIN_CAMERABIN2\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -47825,10 +48090,6 @@ if test -z "${USE_PLUGIN_REAL_TRUE}" && test -z "${USE_PLUGIN_REAL_FALSE}"; then
as_fn_error $? "conditional \"USE_PLUGIN_REAL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${HAVE_WINSOCK2_H_TRUE}" && test -z "${HAVE_WINSOCK2_H_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_WINSOCK2_H\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${USE_PLUGIN_DCCP_TRUE}" && test -z "${USE_PLUGIN_DCCP_FALSE}"; then
as_fn_error $? "conditional \"USE_PLUGIN_DCCP\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -48153,6 +48414,10 @@ if test -z "${USE_GSETTINGS_TRUE}" && test -z "${USE_GSETTINGS_FALSE}"; then
as_fn_error $? "conditional \"USE_GSETTINGS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${USE_SNDIO_TRUE}" && test -z "${USE_SNDIO_FALSE}"; then
+ as_fn_error $? "conditional \"USE_SNDIO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${USE_ASSRENDER_TRUE}" && test -z "${USE_ASSRENDER_FALSE}"; then
as_fn_error $? "conditional \"USE_ASSRENDER\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -48417,6 +48682,10 @@ if test -z "${USE_TELETEXTDEC_TRUE}" && test -z "${USE_TELETEXTDEC_FALSE}"; then
as_fn_error $? "conditional \"USE_TELETEXTDEC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${USE_SNDIO_TRUE}" && test -z "${USE_SNDIO_FALSE}"; then
+ as_fn_error $? "conditional \"USE_SNDIO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
@@ -48715,16 +48984,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -48784,28 +49053,16 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -48826,8 +49083,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GStreamer Bad Plug-ins $as_me 0.11.90, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+This file was extended by GStreamer Bad Plug-ins $as_me 0.11.91, which was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -48892,11 +49149,11 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-GStreamer Bad Plug-ins config.status 0.11.90
-configured by $0, generated by GNU Autoconf 2.68,
+GStreamer Bad Plug-ins config.status 0.11.91
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -48987,7 +49244,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
@@ -49021,13 +49278,13 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
sed_quote_subst='$sed_quote_subst'
double_quote_subst='$double_quote_subst'
delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
@@ -49440,7 +49697,6 @@ do
"gst/audiovisualizers/Makefile") CONFIG_FILES="$CONFIG_FILES gst/audiovisualizers/Makefile" ;;
"gst/autoconvert/Makefile") CONFIG_FILES="$CONFIG_FILES gst/autoconvert/Makefile" ;;
"gst/bayer/Makefile") CONFIG_FILES="$CONFIG_FILES gst/bayer/Makefile" ;;
- "gst/camerabin/Makefile") CONFIG_FILES="$CONFIG_FILES gst/camerabin/Makefile" ;;
"gst/camerabin2/Makefile") CONFIG_FILES="$CONFIG_FILES gst/camerabin2/Makefile" ;;
"gst/cdxaparse/Makefile") CONFIG_FILES="$CONFIG_FILES gst/cdxaparse/Makefile" ;;
"gst/coloreffects/Makefile") CONFIG_FILES="$CONFIG_FILES gst/coloreffects/Makefile" ;;
@@ -49540,7 +49796,6 @@ do
"tests/check/Makefile") CONFIG_FILES="$CONFIG_FILES tests/check/Makefile" ;;
"tests/files/Makefile") CONFIG_FILES="$CONFIG_FILES tests/files/Makefile" ;;
"tests/examples/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/Makefile" ;;
- "tests/examples/camerabin/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/camerabin/Makefile" ;;
"tests/examples/camerabin2/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/camerabin2/Makefile" ;;
"tests/examples/directfb/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/directfb/Makefile" ;;
"tests/examples/mxf/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/mxf/Makefile" ;;
@@ -49594,6 +49849,7 @@ do
"ext/sndfile/Makefile") CONFIG_FILES="$CONFIG_FILES ext/sndfile/Makefile" ;;
"ext/soundtouch/Makefile") CONFIG_FILES="$CONFIG_FILES ext/soundtouch/Makefile" ;;
"ext/spandsp/Makefile") CONFIG_FILES="$CONFIG_FILES ext/spandsp/Makefile" ;;
+ "ext/sndio/Makefile") CONFIG_FILES="$CONFIG_FILES ext/sndio/Makefile" ;;
"ext/teletextdec/Makefile") CONFIG_FILES="$CONFIG_FILES ext/teletextdec/Makefile" ;;
"ext/gme/Makefile") CONFIG_FILES="$CONFIG_FILES ext/gme/Makefile" ;;
"ext/gsettings/Makefile") CONFIG_FILES="$CONFIG_FILES ext/gsettings/Makefile" ;;
@@ -50363,6 +50619,10 @@ available_tags="CXX "
# ### BEGIN LIBTOOL CONFIG
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
# Assembler program.
AS=$lt_AS
@@ -50372,16 +50632,12 @@ DLLTOOL=$lt_DLLTOOL
# Object dumper program.
OBJDUMP=$lt_OBJDUMP
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
# Whether or not to build shared libraries.
build_libtool_libs=$enable_shared
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
# What type of objects to build.
pic_mode=$pic_mode
diff --git a/configure.ac b/configure.ac
index 170a521e..10488634 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,16 +1,16 @@
-AC_PREREQ(2.60)
+AC_PREREQ(2.62)
dnl initialize autoconf
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, cvs and prerelease does Werror too
-AC_INIT(GStreamer Bad Plug-ins, 0.11.90,
+AC_INIT(GStreamer Bad Plug-ins, 0.11.91,
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
gst-plugins-bad)
AG_GST_INIT
dnl initialize automake
-AM_INIT_AUTOMAKE([-Wno-portability 1.10])
+AM_INIT_AUTOMAKE([-Wno-portability 1.11 no-dist-gzip dist-xz tar-ustar])
dnl define PACKAGE_VERSION_* variables
AS_VERSION
@@ -25,7 +25,7 @@ dnl define the output header for config
AM_CONFIG_HEADER([config.h])
dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
-AM_MAINTAINER_MODE
+AM_MAINTAINER_MODE([enable])
dnl sets host_* variables
AC_CANONICAL_HOST
@@ -42,6 +42,8 @@ AC_SUBST(GST_API_VERSION)
AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION",
[GStreamer API Version])
+AG_GST_LIBTOOL_PREPARE
+
dnl CURRENT, REVISION, AGE
dnl - library source changed -> increment REVISION
dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
@@ -50,16 +52,6 @@ dnl - interfaces removed -> AGE = 0
dnl sets GST_LT_LDFLAGS
AS_LIBTOOL(GST, 0, 0, 0)
-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
-dnl AS_LIBTOOL_TAGS([CXX])
-
-AC_LIBTOOL_WIN32_DLL
-AM_PROG_LIBTOOL
-
dnl *** required versions of GStreamer stuff ***
GST_REQ=0.11.90
GSTPB_REQ=0.11.90
@@ -141,7 +133,7 @@ AG_GST_PLUGIN_DOCS([1.3],[2.1])
dnl *** checks for libraries ***
dnl check for libm, for sin() etc.
-AC_CHECK_LIBM
+LT_LIB_M
AC_SUBST(LIBM)
AC_FUNC_MMAP
@@ -155,7 +147,6 @@ if test "x$HAVE_UNISTD_H" != "xyes"; then
GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/festival//`
fi
-dnl used by camerabin
AC_CHECK_HEADERS([sys/time.h])
dnl used by ext/dts
@@ -308,21 +299,22 @@ AG_GST_DEFAULT_ELEMENTS
dnl *** plug-ins to include ***
dnl Non ported plugins (non-dependant, then dependant)
dnl Make sure you have a space before and after all plugins
-GST_PLUGINS_NONPORTED=" aiff asfmux \
- camerabin cdxaparse coloreffects \
+GST_PLUGINS_NONPORTED=" aiff \
+ cdxaparse \
dccp faceoverlay festival \
- fieldanalysis freeverb freeze frei0r gaudieffects geometrictransform \
- hdvparse hls id3tag inter interlace ivfparse jpegformat jp2kdecimator \
+ fieldanalysis freeverb freeze frei0r \
+ hdvparse id3tag inter interlace ivfparse jpegformat jp2kdecimator \
kate liveadder legacyresample librfb mpegtsmux \
mpegpsmux mve mxf mythtv nsf nuvdemux \
patchdetect pnm real \
sdi siren speed subenc stereo tta videofilters \
videomeasure videosignal vmnc \
decklink fbdev linsys vcd \
- apexsink cdaudio cog curl dc1394 dirac directfb resindvd \
+ apexsink cdaudio cog dc1394 dirac directfb resindvd \
gsettings jp2k ladspa mimic \
musepack musicbrainz nas neon ofa openal opencv rsvg sdl sndfile soundtouch spandsp spc timidity \
- wildmidi xvid lv2 teletextdec dvb mpegtsdemux"
+ directsound direct3d directdraw direct3d9 acm wininet \
+ wildmidi xvid lv2 teletextdec dvb sndio"
AC_SUBST(GST_PLUGINS_NONPORTED)
dnl these are all the gst plug-ins, compilable without additional libs
@@ -333,7 +325,6 @@ AG_GST_CHECK_PLUGIN(asfmux)
AG_GST_CHECK_PLUGIN(audiovisualizers)
AG_GST_CHECK_PLUGIN(autoconvert)
AG_GST_CHECK_PLUGIN(bayer)
-AG_GST_CHECK_PLUGIN(camerabin)
AG_GST_CHECK_PLUGIN(camerabin2)
AG_GST_CHECK_PLUGIN(cdxaparse)
AG_GST_CHECK_PLUGIN(coloreffects)
@@ -410,26 +401,14 @@ AC_CHECK_HEADERS([sys/socket.h], HAVE_SYS_SOCKET_H=yes)
AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
if test "x$HAVE_WINSOCK2_H" = "xyes"; then
- WIN32_LIBS="-lws2_32"
- AC_SUBST(WIN32_LIBS)
-fi
-
-dnl needed for festival
-AM_CONDITIONAL(HAVE_WINSOCK2_H, test "x$HAVE_WINSOCK2_H" = "xyes")
-
-if test "x$HAVE_WINSOCK2_H" = "xyes"; then
- DCCP_LIBS="$DCCP_LIBS -lws2_32"
- XDG_LIBS="$XDG_LIBS -lws2_32"
- AC_SUBST(DCCP_LIBS)
- AC_SUBST(XDG_LIBS)
+ WINSOCK2_LIBS="-lws2_32"
+ AC_SUBST(WINSOCK2_LIBS)
fi
if test "x$HAVE_PTHREAD_H" = "xyes"; then
DCCP_LIBS="$DCCP_LIBS -lpthread"
AC_SUBST(DCCP_LIBS)
-fi
-
-if test "x$HAVE_PTHREAD_H" != "xyes"; then
+else
AG_GST_DISABLE_PLUGIN(dccp)
fi
@@ -1503,7 +1482,13 @@ AG_GST_CHECK_FEATURE(PVR, [pvrvideosink], pvr, [
dnl *** rsvg ***
translit(dnm, m, l) AM_CONDITIONAL(USE_RSVG, true)
AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
- PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.14 cairo, HAVE_RSVG="yes", [
+ PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.14 cairo, [
+ HAVE_RSVG="yes"
+ PKG_CHECK_MODULES(RSVG_2_35_0, librsvg-2.0 >= 2.35.0, HAVE_RSVG_2_35_0="yes", HAVE_RSVG_2_35_0="no")
+ if test "x$HAVE_RSVG_2_35_0" = "xyes"; then
+ AC_DEFINE(HAVE_RSVG_2_35_0, [1], [Have RSVG 2.35.0 or newer])
+ fi
+ ], [
HAVE_RSVG="no"
])
AC_SUBST(RSVG_CFLAGS)
@@ -1847,6 +1832,19 @@ AG_GST_CHECK_FEATURE(GSETTINGS, [GSettings plugin], gsettings, [
fi
])
+dnl *** sndio ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_SNDIO, true)
+AG_GST_CHECK_FEATURE(SNDIO, [sndio audio], sndio, [
+ AC_CHECK_HEADER(sndio.h, HAVE_SNDIO="yes", HAVE_SNDIO="no")
+ if test "x$HAVE_SNDIO" = "xyes"; then
+ AC_CHECK_LIB(sndio, sio_open, HAVE_SNDIO="yes", HAVE_SNDIO="no")
+ if test "x$HAVE_SNDIO" = "xyes"; then
+ SNDIO_LIBS=-lsndio
+ AC_SUBST(SNDIO_LIBS)
+ fi
+ fi
+])
+
else
dnl not building plugins with external dependencies,
@@ -1918,6 +1916,7 @@ AM_CONDITIONAL(USE_ZBAR, false)
AM_CONDITIONAL(USE_VP8, false)
AM_CONDITIONAL(USE_RTMP, false)
AM_CONDITIONAL(USE_TELETEXTDEC, false)
+AM_CONDITIONAL(USE_SNDIO, false)
fi dnl of EXT plugins
@@ -2001,7 +2000,6 @@ gst/asfmux/Makefile
gst/audiovisualizers/Makefile
gst/autoconvert/Makefile
gst/bayer/Makefile
-gst/camerabin/Makefile
gst/camerabin2/Makefile
gst/cdxaparse/Makefile
gst/coloreffects/Makefile
@@ -2101,7 +2099,6 @@ tests/Makefile
tests/check/Makefile
tests/files/Makefile
tests/examples/Makefile
-tests/examples/camerabin/Makefile
tests/examples/camerabin2/Makefile
tests/examples/directfb/Makefile
tests/examples/mxf/Makefile
@@ -2155,6 +2152,7 @@ ext/sdl/Makefile
ext/sndfile/Makefile
ext/soundtouch/Makefile
ext/spandsp/Makefile
+ext/sndio/Makefile
ext/teletextdec/Makefile
ext/gme/Makefile
ext/gsettings/Makefile
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 2e4c6b74..ad305b13 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -433,6 +433,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -449,6 +451,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -481,10 +484,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/docs/libs/Makefile.in b/docs/libs/Makefile.in
index 04dab981..420f34fd 100644
--- a/docs/libs/Makefile.in
+++ b/docs/libs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -414,6 +414,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -430,6 +432,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -462,10 +465,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/docs/libs/html/compiling.html b/docs/libs/html/compiling.html
index 6a512f1c..44a690d0 100644
--- a/docs/libs/html/compiling.html
+++ b/docs/libs/html/compiling.html
@@ -31,7 +31,7 @@ How to compile against the bad plugins libraries
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp7761760"></a><h2>Compiling against the bad plugins libraries</h2>
+<a name="idp8164240"></a><h2>Compiling against the bad plugins libraries</h2>
<p>
To compile against these libraries, you need to tell the compiler where to
find the header files and libraries. This is done with the
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstSurfaceConverter.html b/docs/libs/html/gst-plugins-bad-libs-GstSurfaceConverter.html
index 0abfd480..248ac9f3 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstSurfaceConverter.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstSurfaceConverter.html
@@ -54,7 +54,7 @@ uploads. The context must be discarded when the pipeline goes to
</p>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Note</h3>
- The GstVideoContext interface is unstable API and may change in future.
+ The GstSurfaceConverter interface is unstable API and may change in future.
One can define GST_USE_UNSTABLE_API to acknowledge and avoid this warning.
</div>
<p>
@@ -62,7 +62,7 @@ uploads. The context must be discarded when the pipeline goes to
<p>
</p>
<div class="refsect2">
-<a name="idp10080112"></a><h3>Example uploading to GL texture</h3>
+<a name="idp5621824"></a><h3>Example uploading to GL texture</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstVideoContextInterface.html b/docs/libs/html/gst-plugins-bad-libs-GstVideoContextInterface.html
index cbe2f5b4..4e671efe 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstVideoContextInterface.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstVideoContextInterface.html
@@ -101,7 +101,7 @@ application.
<p>
</p>
<div class="refsect2">
-<a name="idp12629136"></a><h3>For Element</h3>
+<a name="idp13033088"></a><h3>For Element</h3>
<p>
This interface shall be implement by group of elements that need to share
a specific video context (like VDPAU, LibVA, OpenGL elements) or by video
@@ -153,7 +153,7 @@ application.
<p>
</p>
<div class="refsect2">
-<a name="idp12641392"></a><h3>For Application</h3>
+<a name="idp13045344"></a><h3>For Application</h3>
<p>
In the case there is no neighboor element with video context to share,
the element will first turn toward the application, by sending a
@@ -177,7 +177,7 @@ application.
<p>
</p>
<div class="refsect2">
-<a name="idp12645888"></a><h3>Example using ClutterVideoGstVideoSink</h3>
+<a name="idp13049840"></a><h3>Example using ClutterVideoGstVideoSink</h3>
<p>
This example is for user of ClutterGstVideoSink element, the
ClutterGstPlayer object transparently handle this.
@@ -245,16 +245,16 @@ application.
GstVideoContext <span class="gtkdoc opt">*</span>context<span class="gtkdoc opt">;</span>
<span class="gtkdoc kwb">const</span> gchar <span class="gtkdoc opt">**</span>types<span class="gtkdoc opt">;</span>
- <span class="keyword">if</span> <span class="gtkdoc opt">(</span><span class="function"><a href="../gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-GstVideoContextInterface.html#gst-video-context-message-parse-prepare">gst_video_context_message_parse_prepare</a></span> <span class="gtkdoc opt">(</span>message<span class="gtkdoc opt">, &amp;</span>types<span class="gtkdoc opt">, &amp;</span>context<span class="gtkdoc opt">)) {</span>
+ <span class="keyword">if</span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-GstVideoContextInterface.html#gst-video-context-message-parse-prepare">gst_video_context_message_parse_prepare</a></span> <span class="gtkdoc opt">(</span>message<span class="gtkdoc opt">, &amp;</span>types<span class="gtkdoc opt">, &amp;</span>context<span class="gtkdoc opt">)) {</span>
gint i<span class="gtkdoc opt">;</span>
<span class="keyword">for</span> <span class="gtkdoc opt">(</span>i <span class="gtkdoc opt">=</span> <span class="number">0</span><span class="gtkdoc opt">;</span> types<span class="gtkdoc opt">[</span>i<span class="gtkdoc opt">];</span> i<span class="gtkdoc opt">++) {</span>
<span class="keyword">if</span> <span class="gtkdoc opt">(!</span><span class="function">strcmp</span><span class="gtkdoc opt">(</span>types<span class="gtkdoc opt">[</span>i<span class="gtkdoc opt">],</span> <span class="string">&quot;x11-display&quot;</span><span class="gtkdoc opt">)) {</span>
- <span class="function"><a href="../gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-GstVideoContextInterface.html#gst-video-context-set-context-pointer">gst_video_context_set_context_pointer</a></span> <span class="gtkdoc opt">(</span>context<span class="gtkdoc opt">,</span> <span class="string">&quot;x11-display&quot;</span><span class="gtkdoc opt">,</span> display<span class="gtkdoc opt">);</span>
+ <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-GstVideoContextInterface.html#gst-video-context-set-context-pointer">gst_video_context_set_context_pointer</a></span> <span class="gtkdoc opt">(</span>context<span class="gtkdoc opt">,</span> <span class="string">&quot;x11-display&quot;</span><span class="gtkdoc opt">,</span> display<span class="gtkdoc opt">);</span>
<span class="gtkdoc opt">}</span>
<span class="keyword">else if</span> <span class="gtkdoc opt">(!</span><span class="function">strcmp</span><span class="gtkdoc opt">(</span>types<span class="gtkdoc opt">[</span>i<span class="gtkdoc opt">],</span> <span class="string">&quot;x11-display-name&quot;</span><span class="gtkdoc opt">)) {</span>
- <span class="function"><a href="../gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-GstVideoContextInterface.html#gst-video-context-set-context-string">gst_video_context_set_context_string</a></span> <span class="gtkdoc opt">(</span>context<span class="gtkdoc opt">,</span> <span class="string">&quot;x11-display-name&quot;</span><span class="gtkdoc opt">,</span>
+ <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-GstVideoContextInterface.html#gst-video-context-set-context-string">gst_video_context_set_context_string</a></span> <span class="gtkdoc opt">(</span>context<span class="gtkdoc opt">,</span> <span class="string">&quot;x11-display-name&quot;</span><span class="gtkdoc opt">,</span>
<span class="function">DisplayString</span> <span class="gtkdoc opt">(</span>display<span class="gtkdoc opt">));</span>
<span class="gtkdoc opt">}</span> <span class="keyword">else</span> <span class="gtkdoc opt">{</span>
<span class="keyword">continue</span><span class="gtkdoc opt">;</span>
diff --git a/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html b/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
index 0001d9a7..6daaf84f 100644
--- a/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
@@ -92,7 +92,7 @@ struct <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.h
<p>
</p>
<div class="refsect2">
-<a name="idp9468480"></a><p>
+<a name="idp9868576"></a><p>
Provides useful functions for mpeg videos bitstream parsing.
</p>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs.devhelp2 b/docs/libs/html/gst-plugins-bad-libs.devhelp2
index 35ce2464..bca71376 100644
--- a/docs/libs/html/gst-plugins-bad-libs.devhelp2
+++ b/docs/libs/html/gst-plugins-bad-libs.devhelp2
@@ -63,7 +63,7 @@
<keyword type="function" name="gst_h264_nal_parser_free ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-nal-parser-free"/>
<keyword type="function" name="gst_h264_parse_sps ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-parse-sps"/>
<keyword type="function" name="gst_h264_parse_pps ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-parse-pps"/>
- <keyword type="" name="" link="gst-plugins-bad-libs-mpegvideoparser.html#idp9468480"/>
+ <keyword type="" name="" link="gst-plugins-bad-libs-mpegvideoparser.html#idp9868576"/>
<keyword type="enum" name="enum GstMpegVideoPacketTypeCode" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPacketTypeCode"/>
<keyword type="enum" name="enum GstMpegVideoPacketExtensionCode" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPacketExtensionCode"/>
<keyword type="enum" name="enum GstMpegVideoLevel" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoLevel"/>
@@ -199,9 +199,9 @@
<keyword type="function" name="gst_base_video_rawvideo_convert ()" link="gst-plugins-bad-libs-gstbasevideoutils.html#gst-base-video-rawvideo-convert"/>
<keyword type="function" name="gst_base_video_encoded_video_convert ()" link="gst-plugins-bad-libs-gstbasevideoutils.html#gst-base-video-encoded-video-convert"/>
<keyword type="function" name="gst_video_state_get_timestamp ()" link="gst-plugins-bad-libs-gstbasevideoutils.html#gst-video-state-get-timestamp"/>
- <keyword type="" name="For Element" link="gst-plugins-bad-libs-GstVideoContextInterface.html#idp12629136"/>
- <keyword type="" name="For Application" link="gst-plugins-bad-libs-GstVideoContextInterface.html#idp12641392"/>
- <keyword type="" name="Example using ClutterVideoGstVideoSink" link="gst-plugins-bad-libs-GstVideoContextInterface.html#idp12645888"/>
+ <keyword type="" name="For Element" link="gst-plugins-bad-libs-GstVideoContextInterface.html#idp13033088"/>
+ <keyword type="" name="For Application" link="gst-plugins-bad-libs-GstVideoContextInterface.html#idp13045344"/>
+ <keyword type="" name="Example using ClutterVideoGstVideoSink" link="gst-plugins-bad-libs-GstVideoContextInterface.html#idp13049840"/>
<keyword type="macro" name="GST_IS_VIDEO_CONTEXT()" link="gst-plugins-bad-libs-GstVideoContextInterface.html#GST-IS-VIDEO-CONTEXT:CAPS"/>
<keyword type="struct" name="GstVideoContext" link="gst-plugins-bad-libs-GstVideoContextInterface.html#GstVideoContext"/>
<keyword type="struct" name="struct GstVideoContextInterface" link="gst-plugins-bad-libs-GstVideoContextInterface.html#GstVideoContextInterface"/>
@@ -220,7 +220,7 @@
<keyword type="function" name="gst_video_context_query_set_string ()" link="gst-plugins-bad-libs-GstVideoContextInterface.html#gst-video-context-query-set-string"/>
<keyword type="function" name="gst_video_context_query_set_pointer ()" link="gst-plugins-bad-libs-GstVideoContextInterface.html#gst-video-context-query-set-pointer"/>
<keyword type="function" name="gst_video_context_query_set_object ()" link="gst-plugins-bad-libs-GstVideoContextInterface.html#gst-video-context-query-set-object"/>
- <keyword type="" name="Example uploading to GL texture" link="gst-plugins-bad-libs-GstSurfaceConverter.html#idp10080112"/>
+ <keyword type="" name="Example uploading to GL texture" link="gst-plugins-bad-libs-GstSurfaceConverter.html#idp5621824"/>
<keyword type="struct" name="GstSurfaceConverter" link="gst-plugins-bad-libs-GstSurfaceConverter.html#GstSurfaceConverter"/>
<keyword type="struct" name="struct GstSurfaceConverterInterface" link="gst-plugins-bad-libs-GstSurfaceConverter.html#GstSurfaceConverterInterface"/>
<keyword type="function" name="gst_surface_converter_get_type ()" link="gst-plugins-bad-libs-GstSurfaceConverter.html#gst-surface-converter-get-type"/>
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index 77abbbbf..cb553931 100644
--- a/docs/libs/html/index.html
+++ b/docs/libs/html/index.html
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Bad Plugins 1.0 Library Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for GStreamer Bad Library 1.0 (0.11.89.1)
+ for GStreamer Bad Library 1.0 (0.11.90.1)
<a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/</a>.
</p></div>
</div>
diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am
index 0dbff8d7..5a0978c8 100644
--- a/docs/plugins/Makefile.am
+++ b/docs/plugins/Makefile.am
@@ -65,7 +65,12 @@ EXTRA_HFILES = \
$(top_srcdir)/ext/assrender/gstassrender.h \
$(top_srcdir)/ext/celt/gstceltdec.h \
$(top_srcdir)/ext/celt/gstceltenc.h \
- $(top_srcdir)/ext/curl/gstcurlsink.h \
+ $(top_srcdir)/ext/curl/gstcurlbasesink.h \
+ $(top_srcdir)/ext/curl/gstcurlfilesink.h \
+ $(top_srcdir)/ext/curl/gstcurlftpsink.h \
+ $(top_srcdir)/ext/curl/gstcurlhttpsink.h \
+ $(top_srcdir)/ext/curl/gstcurlsmtpsink.h \
+ $(top_srcdir)/ext/curl/gstcurltlssink.h \
$(top_srcdir)/ext/dc1394/gstdc1394.h \
$(top_srcdir)/ext/directfb/dfbvideosink.h \
$(top_srcdir)/ext/dts/gstdtsdec.h \
@@ -115,7 +120,6 @@ EXTRA_HFILES = \
$(top_srcdir)/gst/audiovisualizers/gstspectrascope.h \
$(top_srcdir)/gst/audiovisualizers/gstsynaescope.h \
$(top_srcdir)/gst/audiovisualizers/gstwavescope.h \
- $(top_srcdir)/gst/camerabin/gstcamerabin.h \
$(top_srcdir)/gst/camerabin2/gstcamerabin2.h \
$(top_srcdir)/gst/coloreffects/gstcoloreffects.h \
$(top_srcdir)/gst/dataurisrc/gstdataurisrc.h \
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index 11890a9f..3216345f 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -452,6 +452,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -468,6 +470,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -500,10 +503,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -646,7 +648,12 @@ EXTRA_HFILES = \
$(top_srcdir)/ext/assrender/gstassrender.h \
$(top_srcdir)/ext/celt/gstceltdec.h \
$(top_srcdir)/ext/celt/gstceltenc.h \
- $(top_srcdir)/ext/curl/gstcurlsink.h \
+ $(top_srcdir)/ext/curl/gstcurlbasesink.h \
+ $(top_srcdir)/ext/curl/gstcurlfilesink.h \
+ $(top_srcdir)/ext/curl/gstcurlftpsink.h \
+ $(top_srcdir)/ext/curl/gstcurlhttpsink.h \
+ $(top_srcdir)/ext/curl/gstcurlsmtpsink.h \
+ $(top_srcdir)/ext/curl/gstcurltlssink.h \
$(top_srcdir)/ext/dc1394/gstdc1394.h \
$(top_srcdir)/ext/directfb/dfbvideosink.h \
$(top_srcdir)/ext/dts/gstdtsdec.h \
@@ -696,7 +703,6 @@ EXTRA_HFILES = \
$(top_srcdir)/gst/audiovisualizers/gstspectrascope.h \
$(top_srcdir)/gst/audiovisualizers/gstsynaescope.h \
$(top_srcdir)/gst/audiovisualizers/gstwavescope.h \
- $(top_srcdir)/gst/camerabin/gstcamerabin.h \
$(top_srcdir)/gst/camerabin2/gstcamerabin2.h \
$(top_srcdir)/gst/coloreffects/gstcoloreffects.h \
$(top_srcdir)/gst/dataurisrc/gstdataurisrc.h \
diff --git a/docs/plugins/gst-plugins-bad-plugins-docs.sgml b/docs/plugins/gst-plugins-bad-plugins-docs.sgml
index 606c8eac..16d8d7c2 100644
--- a/docs/plugins/gst-plugins-bad-plugins-docs.sgml
+++ b/docs/plugins/gst-plugins-bad-plugins-docs.sgml
@@ -24,7 +24,6 @@
<xi:include href="xml/element-bulge.xml" />
<xi:include href="xml/element-burn.xml" />
<xi:include href="xml/element-camerabin.xml" />
- <xi:include href="xml/element-camerabin2.xml" />
<xi:include href="xml/element-celtdec.xml" />
<xi:include href="xml/element-celtenc.xml" />
<xi:include href="xml/element-chromium.xml" />
@@ -142,7 +141,6 @@
<xi:include href="xml/plugin-bayer.xml" />
<xi:include href="xml/plugin-bz2.xml" />
<xi:include href="xml/plugin-camerabin.xml" />
- <xi:include href="xml/plugin-camerabin2.xml" />
<xi:include href="xml/plugin-cdaudio.xml" />
<xi:include href="xml/plugin-cdxaparse.xml" />
<xi:include href="xml/plugin-celt.xml" />
diff --git a/docs/plugins/gst-plugins-bad-plugins-sections.txt b/docs/plugins/gst-plugins-bad-plugins-sections.txt
index b01e1985..575c440f 100644
--- a/docs/plugins/gst-plugins-bad-plugins-sections.txt
+++ b/docs/plugins/gst-plugins-bad-plugins-sections.txt
@@ -104,29 +104,14 @@ gst_burn_plugin_init
<FILE>element-camerabin</FILE>
<TITLE>camerabin</TITLE>
GstCameraBin
-GstCameraBinMode
<SUBSECTION Standard>
GstCameraBinClass
-GST_CAMERABIN
-GST_IS_CAMERABIN
-GST_TYPE_CAMERABIN
-GST_CAMERABIN_CLASS
-GST_IS_CAMERABIN_CLASS
-gst_camerabin_get_type
-</SECTION>
-
-<SECTION>
-<FILE>element-camerabin2</FILE>
-<TITLE>camerabin2</TITLE>
-GstCameraBin2
-<SUBSECTION Standard>
-GstCameraBin2Class
-GST_CAMERA_BIN2
-GST_IS_CAMERA_BIN2
-GST_TYPE_CAMERA_BIN2
-GST_CAMERA_BIN2_CLASS
-GST_IS_CAMERA_BIN2_CLASS
-gst_camera_bin2_get_type
+GST_CAMERA_BIN
+GST_IS_CAMERA_BIN
+GST_TYPE_CAMERA_BIN
+GST_CAMERA_BIN_CLASS
+GST_IS_CAMERA_BIN_CLASS
+gst_camera_bin_get_type
</SECTION>
<SECTION>
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
index 8a67f4de..2410527e 100644
--- a/docs/plugins/html/ch01.html
+++ b/docs/plugins/html/ch01.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idp178800"></a>gst-plugins-bad Elements</h2></div></div></div>
+<a name="idp3767280"></a>gst-plugins-bad Elements</h2></div></div></div>
<div class="toc"><dl>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-aiffparse.html">aiffparse</a></span><span class="refpurpose"> — Parse a .aiff file into raw audio</span>
@@ -42,10 +42,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-burn.html">burn</a></span><span class="refpurpose"> — Burn adjusts the colors in the video signal.</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-camerabin.html">camerabin</a></span><span class="refpurpose"> — Handle lot of features present in DSC</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-camerabin2.html">camerabin2</a></span><span class="refpurpose"> — CameraBin2</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-camerabin.html">camerabin</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-celtdec.html">celtdec</a></span><span class="refpurpose"> — decode celt streams to audio</span>
diff --git a/docs/plugins/html/ch02.html b/docs/plugins/html/ch02.html
index b354a363..f5aa9955 100644
--- a/docs/plugins/html/ch02.html
+++ b/docs/plugins/html/ch02.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idp4784272"></a>gst-plugins-bad Plugins</h2></div></div></div>
+<a name="idp4783808"></a>gst-plugins-bad Plugins</h2></div></div></div>
<div class="toc"><dl>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-aiff.html">aiff</a></span><span class="refpurpose"> — <a name="plugin-aiff"></a>Create and parse Audio Interchange File Format (AIFF) files</span>
@@ -45,12 +45,6 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-bz2.html">bz2</a></span><span class="refpurpose"> — <a name="plugin-bz2"></a>Compress or decompress streams</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-camerabin.html">camerabin</a></span><span class="refpurpose"> — <a name="plugin-camerabin"></a>High level api for DC (Digital Camera) application</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-camerabin2.html">camerabin2</a></span><span class="refpurpose"> — <a name="plugin-camerabin2"></a>camerabin2</span>
-</dt>
-<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-cdaudio.html">cdaudio</a></span><span class="refpurpose"> — <a name="plugin-cdaudio"></a>Play CD audio through the CD Drive</span>
</dt>
<dt>
@@ -282,6 +276,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-zbar.html">zbar</a></span><span class="refpurpose"> — <a name="plugin-zbar"></a>zbar barcode scanner</span>
</dt>
</dl></div>
+<span style="color: red">&lt;xi:include&gt;&lt;/xi:include&gt;</span>
</div>
<div class="footer">
<hr>
diff --git a/docs/plugins/html/ch03.html b/docs/plugins/html/ch03.html
index 68c5a3ae..7ecd1c7a 100644
--- a/docs/plugins/html/ch03.html
+++ b/docs/plugins/html/ch03.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idp4827696"></a>gst-plugins-bad Interfaces</h2></div></div></div>
+<a name="idp4826736"></a>gst-plugins-bad Interfaces</h2></div></div></div>
<div class="toc"><dl><dt>
<span class="refentrytitle"><a href="GstPhotography.html">GstPhotography</a></span><span class="refpurpose"></span>
</dt></dl></div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-aiffmux.html b/docs/plugins/html/gst-plugins-bad-plugins-aiffmux.html
index cb1a082d..621f48cc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-aiffmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-aiffmux.html
@@ -48,7 +48,7 @@ Format an audio stream into the Audio Interchange File Format
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp6955296"></a><h3>Element Information</h3>
+<a name="idp5724016"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -71,7 +71,7 @@ Format an audio stream into the Audio Interchange File Format
</div>
<hr>
<div class="refsect2">
-<a name="idp8343296"></a><h3>Element Pads</h3>
+<a name="idp8342064"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-aiffparse.html b/docs/plugins/html/gst-plugins-bad-plugins-aiffparse.html
index 250b6f65..c383e9ef 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-aiffparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-aiffparse.html
@@ -45,7 +45,7 @@
<p>
</p>
<div class="refsect2">
-<a name="idp4841792"></a><h3>Example launch line</h3>
+<a name="idp4840960"></a><h3>Example launch line</h3>
<p>
Parse a .aiff file into raw or compressed audio.
</p>
@@ -76,7 +76,7 @@ Stream data from a network url.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5886560"></a><h3>Element Information</h3>
+<a name="idp4838272"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -99,7 +99,7 @@ Stream data from a network url.
</div>
<hr>
<div class="refsect2">
-<a name="idp6962496"></a><h3>Element Pads</h3>
+<a name="idp6891296"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-assrender.html b/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
index 7c495bcb..79a9d892 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
@@ -66,7 +66,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp8474096"></a><h3>Element Information</h3>
+<a name="idp7638032"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -89,7 +89,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp6253008"></a><h3>Element Pads</h3>
+<a name="idp6367808"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html b/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html
index 1d652029..00d90e46 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html
@@ -87,7 +87,7 @@ elements.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7973744"></a><h3>Element Information</h3>
+<a name="idp5909056"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -110,7 +110,7 @@ elements.
</div>
<hr>
<div class="refsect2">
-<a name="idp7234816"></a><h3>Element Pads</h3>
+<a name="idp7478704"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-bulge.html b/docs/plugins/html/gst-plugins-bad-plugins-bulge.html
index 97834bae..ace35a86 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-bulge.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-bulge.html
@@ -53,7 +53,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5563952"></a><h3>Element Information</h3>
+<a name="idp7086400"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -76,7 +76,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp5554928"></a><h3>Element Pads</h3>
+<a name="idp7079040"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-burn.html b/docs/plugins/html/gst-plugins-bad-plugins-burn.html
index e274b9a0..104740fc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-burn.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-burn.html
@@ -57,7 +57,7 @@ Burn adjusts the colors of a video stream in realtime.
<p>
</p>
<div class="refsect2">
-<a name="idp9543296"></a><h3>Example launch line</h3>
+<a name="idp7488768"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -75,7 +75,7 @@ Burn adjusts the colors of a video stream in realtime.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7427984"></a><h3>Element Information</h3>
+<a name="idp7393776"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -98,7 +98,7 @@ Burn adjusts the colors of a video stream in realtime.
</div>
<hr>
<div class="refsect2">
-<a name="idp9401328"></a><h3>Element Pads</h3>
+<a name="idp9047200"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html b/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html
index 2a21a3b8..6215fb39 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
<link rel="prev" href="gst-plugins-bad-plugins-burn.html" title="burn">
-<link rel="next" href="gst-plugins-bad-plugins-camerabin2.html" title="camerabin2">
+<link rel="next" href="gst-plugins-bad-plugins-celtdec.html" title="celtdec">
<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -18,18 +18,12 @@
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GStreamer Bad Plugins 1.0 Plugins Reference Manual</th>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-camerabin2.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-celtdec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#gst-plugins-bad-plugins-camerabin.synopsis" class="shortcut">Top</a>
 | 
<a href="#gst-plugins-bad-plugins-camerabin.description" class="shortcut">Description</a>
-  | 
- <a href="#gst-plugins-bad-plugins-camerabin.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
-  | 
- <a href="#gst-plugins-bad-plugins-camerabin.properties" class="shortcut">Properties</a>
-  | 
- <a href="#gst-plugins-bad-plugins-camerabin.signals" class="shortcut">Signals</a>
</td></tr>
</table>
<div class="refentry">
@@ -37,1117 +31,21 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-camerabin.top_of_page"></a>camerabin</span></h2>
-<p>camerabin — Handle lot of features present in DSC</p>
+<p>camerabin</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<a name="gst-plugins-bad-plugins-camerabin.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis">struct <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin">GstCameraBin</a>;
-enum <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBinMode" title="enum GstCameraBinMode">GstCameraBinMode</a>;
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
-<p>
-GstCameraBin implements
- <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstChildProxy.html">GstChildProxy</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstImplementsInterface.html">GstImplementsInterface</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance">GstColorBalance</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstTagSetter.html">GstTagSetter</a>.</p>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin.properties"></a><h2>Properties</h2>
-<pre class="synopsis">
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audioenc" title='The "audioenc" property'>audioenc</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audiosrc" title='The "audiosrc" property'>audiosrc</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--filename" title='The "filename" property'>filename</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--filter-caps" title='The "filter-caps" property'>filter-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--imageenc" title='The "imageenc" property'>imageenc</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--imagepp" title='The "imagepp" property'>imagepp</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--inputcaps" title='The "inputcaps" property'>inputcaps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--mode" title='The "mode" property'>mode</a>" <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBinMode" title="enum GstCameraBinMode"><span class="type">GstCameraBinMode</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--mute" title='The "mute" property'>mute</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--vfsink" title='The "vfsink" property'>vfsink</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videoenc" title='The "videoenc" property'>videoenc</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videomux" title='The "videomux" property'>videomux</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videopp" title='The "videopp" property'>videopp</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videosrc" title='The "videosrc" property'>videosrc</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--zoom" title='The "zoom" property'>zoom</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--preview-caps" title='The "preview-caps" property'>preview-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audio-encoder" title='The "audio-encoder" property'>audio-encoder</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audio-source" title='The "audio-source" property'>audio-source</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-encoder" title='The "image-encoder" property'>image-encoder</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-post-processing" title='The "image-post-processing" property'>image-post-processing</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-encoder" title='The "video-encoder" property'>video-encoder</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-muxer" title='The "video-muxer" property'>video-muxer</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-post-processing" title='The "video-post-processing" property'>video-post-processing</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source" title='The "video-source" property'>video-source</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source-caps" title='The "video-source-caps" property'>video-source-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--viewfinder-sink" title='The "viewfinder-sink" property'>viewfinder-sink</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--flags" title='The "flags" property'>flags</a>" <span class="type">GstCameraBinFlags</span> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--block-after-capture" title='The "block-after-capture" property'>block-after-capture</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-capture-height" title='The "image-capture-height" property'>image-capture-height</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-capture-width" title='The "image-capture-width" property'>image-capture-width</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-capture-framerate" title='The "video-capture-framerate" property'>video-capture-framerate</a>" <span class="type">GstFraction</span> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-capture-height" title='The "video-capture-height" property'>video-capture-height</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-capture-width" title='The "video-capture-width" property'>video-capture-width</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source-filter" title='The "video-source-filter" property'>video-source-filter</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--viewfinder-filter" title='The "viewfinder-filter" property'>viewfinder-filter</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--idle" title='The "idle" property'>idle</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--preview-source-filter" title='The "preview-source-filter" property'>preview-source-filter</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--ready-for-capture" title='The "ready-for-capture" property'>ready-for-capture</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-formatter" title='The "image-formatter" property'>image-formatter</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin.signals"></a><h2>Signals</h2>
-<pre class="synopsis">
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-img-done" title='The "img-done" signal'>img-done</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-image-res" title='The "user-image-res" signal'>user-image-res</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-pause" title='The "user-pause" signal'>user-pause</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-res-fps" title='The "user-res-fps" signal'>user-res-fps</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-start" title='The "user-start" signal'>user-start</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-stop" title='The "user-stop" signal'>user-stop</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-pause" title='The "capture-pause" signal'>capture-pause</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-start" title='The "capture-start" signal'>capture-start</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-stop" title='The "capture-stop" signal'>capture-stop</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-image-done" title='The "image-done" signal'>image-done</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-set-image-resolution" title='The "set-image-resolution" signal'>set-image-resolution</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-set-video-resolution-fps" title='The "set-video-resolution-fps" signal'>set-video-resolution-fps</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
-</pre>
+<pre class="synopsis"></pre>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-camerabin.description"></a><h2>Description</h2>
<p>
-GstCameraBin is a high-level camera object that encapsulates the gstreamer
-internals and provides a task based API for the application. It consists of
-three main data paths: view-finder, image capture and video capture.
-</p>
-<p>
-</p>
-<div class="informalfigure"><div class="mediaobject">
-<img src="camerabin.png" alt="CameraBin structure"><div class="caption"><p>Structural decomposition of CameraBin object.</p></div>
-</div></div>
-<p>
-</p>
-<p>
-</p>
-<div class="refsect2">
-<a name="idp9780688"></a><h3>Example launch line</h3>
-<div class="informalexample">
- <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td class="listing_lines" align="right"><pre>1</pre></td>
- <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch <span class="gtkdoc opt">-</span>v <span class="gtkdoc opt">-</span>m camerabin</pre></td>
- </tr>
- </tbody>
- </table>
-</div>
-
-</div>
-<p>
-</p>
-<hr>
-<div class="refsect2">
-<a name="idp9782448"></a><h3>Image capture</h3>
-<p>
-Image capture is selected by switching <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--mode" title='The "mode" property'><span class="type">"mode"</span></a> to <a class="link" href="gst-plugins-bad-plugins-camerabin.html#MODE-IMAGE:CAPS"><code class="literal">MODE_IMAGE</code></a>.
-Taking still images is initiated with the <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-start" title='The "capture-start" signal'><span class="type">"capture-start"</span></a> action
-signal. Once the image has been captured, "image-captured" gst message is
-posted to the bus and capturing another image is possible. If application
-has set <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--preview-caps" title='The "preview-caps" property'><span class="type">"preview-caps"</span></a> property, then a "preview-image" gst
-message is posted to bus containing preview image formatted according to
-specified caps. Eventually when image has been saved
-<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-image-done" title='The "image-done" signal'><span class="type">"image-done"</span></a> signal is emitted.
-</p>
-<p>
-Available resolutions can be taken from the <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source-caps" title='The "video-source-caps" property'><span class="type">"video-source-caps"</span></a>
-property. Image capture resolution can be set with
-<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-set-image-resolution" title='The "set-image-resolution" signal'><span class="type">"set-image-resolution"</span></a> action signal.
-</p>
-<p>
-Some video source elements implement the <a class="link" href="GstPhotography.html" title="GstPhotography"><span class="type">GstPhotography</span></a> interface, which contains
-functions and properties for setting photography parameters. One can use
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBin.html#gst-bin-iterate-all-by-interface"><code class="function">gst_bin_iterate_all_by_interface()</code></a> to get a reference to it.
-</p>
-<p>
-</p>
-</div>
-<p>
-</p>
-<hr>
-<div class="refsect2">
-<a name="idp9793632"></a><h3>Video capture</h3>
-<p>
-Video capture is selected by switching <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--mode" title='The "mode" property'><span class="type">"mode"</span></a> to <a class="link" href="gst-plugins-bad-plugins-camerabin.html#MODE-VIDEO:CAPS"><code class="literal">MODE_VIDEO</code></a>.
-The capture is started with the <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-start" title='The "capture-start" signal'><span class="type">"capture-start"</span></a> action signal
-too. In addition to image capture one can use <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-pause" title='The "capture-pause" signal'><span class="type">"capture-pause"</span></a> to
-pause recording and <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-stop" title='The "capture-stop" signal'><span class="type">"capture-stop"</span></a> to end recording.
-</p>
-<p>
-Available resolutions and fps can be taken from the
-<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source-caps" title='The "video-source-caps" property'><span class="type">"video-source-caps"</span></a> property.
-<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-set-video-resolution-fps" title='The "set-video-resolution-fps" signal'><span class="type">"set-video-resolution-fps"</span></a> action signal can be used to set
-frame rate and resolution for the video recording and view finder as well.
-</p>
-</div>
-<p>
-</p>
-<hr>
-<div class="refsect2">
-<a name="idp9801760"></a><h3>States</h3>
-<p>
-Elements within GstCameraBin are created and destroyed when switching
-between NULL and READY states. Therefore element properties should be set
-in NULL state. User set elements are not unreffed until GstCameraBin is
-unreffed or replaced by a new user set element. Initially only elements
-needed for view finder mode are created to speed up startup. Image bin and
-video bin elements are created when setting the mode or starting capture.
-GstCameraBin must be in the PLAYING state before <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-start" title='The "capture-start" signal'><span class="type">"capture-start"</span></a>
-is called.
-</p>
-</div>
-<p>
-</p>
-<hr>
-<div class="refsect2">
-<a name="idp9804432"></a><h3>Video and image previews</h3>
-<p>
-GstCameraBin contains <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--preview-caps" title='The "preview-caps" property'><span class="type">"preview-caps"</span></a> property, which is used to
-determine whether the application wants a preview image of the captured
-picture or video. When set, a GstMessage named "preview-image" will be sent.
-This message will contain a GstBuffer holding the preview image, converted
-to a format defined by those preview caps. The ownership of the preview
-image is kept in GstCameraBin, so application should ref the preview buffer
-object if it needs to use it elsewhere than in message handler.
-</p>
-<p>
-Defining preview caps is done by selecting the capturing <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--mode" title='The "mode" property'><span class="type">"mode"</span></a>
-first and then setting the property. Camerabin remembers caps separately for
-both modes, so it is not necessary to set the caps again after changing the
-mode.
-</p>
-</div>
-<p>
-</p>
-<hr>
-<div class="refsect2">
-<a name="idp9808512"></a><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
-<h3 class="title">Note</h3>
-<p>
-Since the muxers tested so far have problems with discontinous buffers, QoS
-has been disabled, and then in order to record video, you MUST ensure that
-there is enough CPU to encode the video. Thus choose smart resolution and
-frames per second values. It is also highly recommended to avoid color
-conversions; make sure all the elements involved work with the same
-colorspace (i.e. rgb or yuv i420 or whatelse).
-</p>
-</div>
-</div>
-<p>
-</p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<div class="refsect2">
-<a name="idp9811184"></a><h3>Element Information</h3>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term">plugin</span></p></td>
-<td>
- <a class="link" href="gst-plugins-bad-plugins-plugin-camerabin.html#plugin-camerabin">camerabin</a>
- </td>
-</tr>
-<tr>
-<td><p><span class="term">author</span></p></td>
-<td>Nokia Corporation &lt;multimedia@maemo.org&gt;, Edgard Lima &lt;edgard.lima@indt.org.br&gt;</td>
-</tr>
-<tr>
-<td><p><span class="term">class</span></p></td>
-<td>Generic/Bin/Camera</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="idp9818592"></a><h3>Element Pads</h3>
-</div>
-</div>
-<p>
</p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-camerabin.details"></a><h2>Details</h2>
-<div class="refsect2">
-<a name="GstCameraBin"></a><h3>struct GstCameraBin</h3>
-<pre class="programlisting">struct GstCameraBin {
- GstPipeline parent;
-
- /* private */
- GString *filename;
- gint mode; /* MODE_IMAGE or MODE_VIDEO */
- GstCameraBinFlags flags;
- gboolean stop_requested; /* TRUE if capturing stop needed */
- gboolean paused; /* TRUE if capturing paused */
-
- /*
- * Those 2 booleans work together.
- *
- * 'block_viewfinder_prop' is the property, 'block_viewfinder_trigger'
- * is the flag that actually makes the viewfinder block after capture.
- * We need both to avoid blocking the viewfinder if the application resets
- * the flag after issuing the 'capture-start', but before the actual
- * blocking happens. This causes the viewfinder to block even though
- * the application resetted the flag to keep it running already.
- *
- * Here's how this should work:
- * When a capture is started, the property is checked, if it is TRUE, the
- * trigger is set to TRUE. The blocking will only happen if
- * the trigger is TRUE after image capture finishes, ff the property
- * is reset before the blocking happens, the trigger goes to
- * FALSE and no blocking happens.
- */
- gboolean block_viewfinder_prop; /* TRUE if viewfinder blocks after capture */
- gboolean block_viewfinder_trigger;
-
- /* Resolution of the buffers configured to camerabin */
- gint width;
- gint height;
- /* Frames per second configured to camerabin */
- gint fps_n;
- gint fps_d;
-
- /* app configured resolution/framerate */
- gint app_width;
- gint app_height;
- gint app_fps_n;
- gint app_fps_d;
-
- gboolean video_capture_caps_update;
-
- /* Image capture resolution */
- gint image_capture_width;
- gint image_capture_height;
-
- /* Image tags are collected here first before sending to imgbin */
- GstTagList *event_tags;
-
- /* Caps applied to capsfilters when taking still image */
- GstCaps *image_capture_caps;
- gboolean image_capture_caps_update;
-
- /* Caps applied to capsfilters when in view finder mode */
- GstCaps *view_finder_caps;
-
- /* Caps that videosrc supports */
- GstCaps *allowed_caps;
-
- /* Caps used to create preview image */
- GstCaps *preview_caps;
-
- /* Caps used to create video preview image */
- GstCaps *video_preview_caps;
-
- /* The digital zoom (from 1.0 to 10.0) */
- gfloat zoom;
-
- /* concurrency control */
- GMutex *capture_mutex;
- GCond *cond;
- GCond *idle_cond;
- gboolean capturing;
- gboolean eos_handled;
- /* everytime a new capture is started this is incremented, when it is
- * finished/fails it is decremented. Used to know if camerabin is idle */
- gint processing_counter;
-
- /* pad names for output and input selectors */
- GstPad *pad_src_view;
- GstPad *pad_view_src;
- GstPad *pad_src_img;
- GstPad *pad_src_vid;
- GstPad *pad_view_vid;
- GstPad *pad_src_queue;
-
- GstElement *img_queue; /* queue for decoupling capture from
- image-postprocessing and saving */
- GstElement *imgbin; /* bin that holds image capturing elements */
- GstElement *vidbin; /* bin that holds video capturing elements */
- GstElement *active_bin; /* image or video bin that is currently in use */
- /* pipeline for creating preview images */
- GstCameraBinPreviewPipelineData *preview_pipeline;
- /* pipeline for creating video preview image */
- GstCameraBinPreviewPipelineData *video_preview_pipeline;
-
- GstBuffer *video_preview_buffer; /* buffer for storing video preview */
-
- /* source elements */
- GstElement *src_vid_src;
- GstElement *src_filter;
- GstElement *src_zoom_crop;
- GstElement *src_zoom_scale;
- GstElement *src_zoom_filter;
- GstElement *src_out_sel;
-
- /* view finder elements */
- GstElement *view_in_sel;
- GstElement *aspect_filter;
- GstElement *view_scale;
- GstElement *view_sink;
-
- /* Application configurable elements */
- GstElement *app_vid_src;
- GstElement *app_vf_sink;
- GstElement *app_video_filter;
- GstElement *app_viewfinder_filter;
- GstElement *app_preview_source_filter;
- GstElement *app_video_preview_source_filter;
-
- /* Night mode handling */
- gboolean night_mode;
- gint pre_night_fps_n;
- gint pre_night_fps_d;
-
- /* Buffer probe id for captured image handling */
- gulong image_captured_id;
-
- /* Optional base crop for frames. Used to crop frames e.g.
- due to wrong aspect ratio, before the crop related to zooming. */
- gint base_crop_top;
- gint base_crop_bottom;
- gint base_crop_left;
- gint base_crop_right;
-};
-</pre>
-<p>
-The opaque <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> structure.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBinMode"></a><h3>enum GstCameraBinMode</h3>
-<pre class="programlisting">typedef enum {
- MODE_IMAGE = 0,
- MODE_VIDEO
-} GstCameraBinMode;
-</pre>
-<p>
-Capture mode to use.
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><a name="MODE-IMAGE:CAPS"></a><span class="term"><code class="literal">MODE_IMAGE</code></span></p></td>
-<td>image capture
-</td>
-</tr>
-<tr>
-<td><p><a name="MODE-VIDEO:CAPS"></a><span class="term"><code class="literal">MODE_VIDEO</code></span></p></td>
-<td>video capture
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="GstCameraBin--audioenc"></a><h3>The <code class="literal">"audioenc"</code> property</h3>
-<pre class="programlisting"> "audioenc" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>Audio encoder GStreamer element (default is vorbisenc).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--audiosrc"></a><h3>The <code class="literal">"audiosrc"</code> property</h3>
-<pre class="programlisting"> "audiosrc" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>Audio source GStreamer element (default is pulsesrc).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--filename"></a><h3>The <code class="literal">"filename"</code> property</h3>
-<pre class="programlisting"> "filename" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre>
-<p>
-Set filename for the still image capturing or video capturing.
-</p>
-<p>Default value: ""</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--filter-caps"></a><h3>The <code class="literal">"filter-caps"</code> property</h3>
-<pre class="programlisting"> "filter-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write</pre>
-<p>
-Caps applied to capsfilter element after videosrc [ ! ffmpegcsp ].
-You can use this e.g. to make sure video color format matches with
-encoders and other elements configured to camerabin and/or change
-resolution and frame rate.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--imageenc"></a><h3>The <code class="literal">"imageenc"</code> property</h3>
-<pre class="programlisting"> "imageenc" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>Image encoder GStreamer element (default is jpegenc).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--imagepp"></a><h3>The <code class="literal">"imagepp"</code> property</h3>
-<pre class="programlisting"> "imagepp" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>Image Post-Processing GStreamer element (default is NULL).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--inputcaps"></a><h3>The <code class="literal">"inputcaps"</code> property</h3>
-<pre class="programlisting"> "inputcaps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read</pre>
-<p>The allowed modes of the video source operation.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--mode"></a><h3>The <code class="literal">"mode"</code> property</h3>
-<pre class="programlisting"> "mode" <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBinMode" title="enum GstCameraBinMode"><span class="type">GstCameraBinMode</span></a> : Read / Write</pre>
-<p>
-Set the mode of operation: still image capturing or video recording.
-Setting the mode will create and destroy image bin or video bin elements
-according to the mode. You can set this property at any time, changing
-the mode will stop ongoing capture.
-</p>
-<p>Default value: Still image capture (default)</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--mute"></a><h3>The <code class="literal">"mute"</code> property</h3>
-<pre class="programlisting"> "mute" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre>
-<p>
-Mute audio in video recording mode.
-Set this property only when <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in READY, PAUSED or PLAYING.
-</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--vfsink"></a><h3>The <code class="literal">"vfsink"</code> property</h3>
-<pre class="programlisting"> "vfsink" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>View finder sink GStreamer element (default is autovideosink).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--videoenc"></a><h3>The <code class="literal">"videoenc"</code> property</h3>
-<pre class="programlisting"> "videoenc" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>Video encoder GStreamer element (default is theoraenc).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--videomux"></a><h3>The <code class="literal">"videomux"</code> property</h3>
-<pre class="programlisting"> "videomux" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>Video muxer GStreamer element (default is oggmux).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--videopp"></a><h3>The <code class="literal">"videopp"</code> property</h3>
-<pre class="programlisting"> "videopp" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>Video post processing GStreamer element (default is NULL).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--videosrc"></a><h3>The <code class="literal">"videosrc"</code> property</h3>
-<pre class="programlisting"> "videosrc" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>Video source GStreamer element (default is v4l2src).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--zoom"></a><h3>The <code class="literal">"zoom"</code> property</h3>
-<pre class="programlisting"> "zoom" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> : Read / Write</pre>
-<p>
-Set up the zoom applied to the frames.
-Set this property only when <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in READY, PAUSED or PLAYING.
-</p>
-<p>Allowed values: [1,10]</p>
-<p>Default value: 1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--preview-caps"></a><h3>The <code class="literal">"preview-caps"</code> property</h3>
-<pre class="programlisting"> "preview-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write</pre>
-<p>
-If application wants to receive a preview image, it needs to
-set this property to depict the desired image format caps. When
-this property is not set (NULL), message containing the preview
-image is not sent.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--audio-encoder"></a><h3>The <code class="literal">"audio-encoder"</code> property</h3>
-<pre class="programlisting"> "audio-encoder" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up an audio encoder element.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--audio-source"></a><h3>The <code class="literal">"audio-source"</code> property</h3>
-<pre class="programlisting"> "audio-source" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up an audio source element.
-By default "autoaudiosrc" or DEFAULT_AUDIOSRC will be used.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--image-encoder"></a><h3>The <code class="literal">"image-encoder"</code> property</h3>
-<pre class="programlisting"> "image-encoder" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up an image encoder (for example, jpegenc or pngenc) element.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--image-post-processing"></a><h3>The <code class="literal">"image-post-processing"</code> property</h3>
-<pre class="programlisting"> "image-post-processing" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up an element to do image post processing.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--video-encoder"></a><h3>The <code class="literal">"video-encoder"</code> property</h3>
-<pre class="programlisting"> "video-encoder" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up a video encoder element.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--video-muxer"></a><h3>The <code class="literal">"video-muxer"</code> property</h3>
-<pre class="programlisting"> "video-muxer" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up a video muxer element.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--video-post-processing"></a><h3>The <code class="literal">"video-post-processing"</code> property</h3>
-<pre class="programlisting"> "video-post-processing" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up an element to do video post processing.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--video-source"></a><h3>The <code class="literal">"video-source"</code> property</h3>
-<pre class="programlisting"> "video-source" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up a video source element.
-By default "autovideosrc" or DEFAULT_VIDEOSRC will be used.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--video-source-caps"></a><h3>The <code class="literal">"video-source-caps"</code> property</h3>
-<pre class="programlisting"> "video-source-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read</pre>
-<p>
-The allowed modes of operation of the video source. Have in mind that it
-doesn't mean <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> can operate in all those modes,
-it depends also on the other elements in the pipeline. Remember to
-gst_caps_unref after using it.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--viewfinder-sink"></a><h3>The <code class="literal">"viewfinder-sink"</code> property</h3>
-<pre class="programlisting"> "viewfinder-sink" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up a sink element to render frames in view finder.
-By default "autovideosink" or DEFAULT_VIDEOSINK will be used.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--flags"></a><h3>The <code class="literal">"flags"</code> property</h3>
-<pre class="programlisting"> "flags" <span class="type">GstCameraBinFlags</span> : Read / Write</pre>
-<p>
-Control the behaviour of camerabin.
-</p>
-<p>Default value: Enable source crop and scale|Enable scale for viewfinder|Enable audio conversion for video capture|Enable colorspace conversion for still image|Enable colorspace conversion for video capture</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--block-after-capture"></a><h3>The <code class="literal">"block-after-capture"</code> property</h3>
-<pre class="programlisting"> "block-after-capture" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre>
-<p>
-Block viewfinder after capture.
-If it is TRUE when 'capture-start' is issued, camerabin will prepare to
-block and freeze the viewfinder after capturing. Setting it to FALSE will
-abort the blocking if it hasn't happened yet, or will enable again the
-viewfinder if it is already blocked. Note that setting this property
-to TRUE after 'capture-start' will only work for the next capture. This
-makes possible for applications to set the property to FALSE to abort
-the current blocking and already set it back to TRUE again to block at
-the next capture.
-</p>
-<p>
-This is useful if application wants to display the preview image
-and running the viewfinder at the same time would be just a waste of
-CPU cycles.
-</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--image-capture-height"></a><h3>The <code class="literal">"image-capture-height"</code> property</h3>
-<pre class="programlisting"> "image-capture-height" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre>
-<p>
-The height to be used when capturing still images. If 0, the
-viewfinder's height will be used.
-</p>
-<p>Allowed values: [0,32767]</p>
-<p>Default value: 600</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--image-capture-width"></a><h3>The <code class="literal">"image-capture-width"</code> property</h3>
-<pre class="programlisting"> "image-capture-width" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre>
-<p>
-The width to be used when capturing still images. If 0, the
-viewfinder's width will be used.
-</p>
-<p>Allowed values: [0,32767]</p>
-<p>Default value: 800</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--video-capture-framerate"></a><h3>The <code class="literal">"video-capture-framerate"</code> property</h3>
-<pre class="programlisting"> "video-capture-framerate" <span class="type">GstFraction</span> : Read / Write</pre>
-<p>
-The framerate to be used when capturing video.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--video-capture-height"></a><h3>The <code class="literal">"video-capture-height"</code> property</h3>
-<pre class="programlisting"> "video-capture-height" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre>
-<p>
-The height to be used when capturing video.
-</p>
-<p>Allowed values: [0,32767]</p>
-<p>Default value: 600</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--video-capture-width"></a><h3>The <code class="literal">"video-capture-width"</code> property</h3>
-<pre class="programlisting"> "video-capture-width" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre>
-<p>
-The width to be used when capturing video.
-</p>
-<p>Allowed values: [0,32767]</p>
-<p>Default value: 800</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--video-source-filter"></a><h3>The <code class="literal">"video-source-filter"</code> property</h3>
-<pre class="programlisting"> "video-source-filter" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up optional video filter element, all frames from video source
-will be processed by this element. e.g. An application might add
-image enhancers/parameter adjustment filters here to improve captured
-image/video results, or add analyzers to give feedback on capture
-the application.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--viewfinder-filter"></a><h3>The <code class="literal">"viewfinder-filter"</code> property</h3>
-<pre class="programlisting"> "viewfinder-filter" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>viewfinder filter GStreamer element.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--idle"></a><h3>The <code class="literal">"idle"</code> property</h3>
-<pre class="programlisting"> "idle" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read</pre>
-<p>
-When TRUE no capturing/encoding/saving is running and it is safe to set
-camerabin to NULL to release resources without losing data.
-</p>
-<p>
-In case of errors, this property is made unreliable. Set the pipeline
-back to READY or NULL to make it reliable again.
-</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--preview-source-filter"></a><h3>The <code class="literal">"preview-source-filter"</code> property</h3>
-<pre class="programlisting"> "preview-source-filter" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>Optional preview source filter GStreamer element.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--ready-for-capture"></a><h3>The <code class="literal">"ready-for-capture"</code> property</h3>
-<pre class="programlisting"> "ready-for-capture" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read</pre>
-<p>
-When TRUE new capture can be prepared. If FALSE capturing is ongoing
-and starting a new capture immediately is not possible.
-</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin--image-formatter"></a><h3>The <code class="literal">"image-formatter"</code> property</h3>
-<pre class="programlisting"> "image-formatter" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>
-Set up an image formatter (for example, jifmux) element.
-This property can only be set while <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> is in NULL state.
-The ownership of the element will be taken by <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a>.
-</p>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin.signal-details"></a><h2>Signal Details</h2>
-<div class="refsect2">
-<a name="GstCameraBin-img-done"></a><h3>The <code class="literal">"img-done"</code> signal</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *gstcamerabin,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg1,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
-<p>
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gstcamerabin</code></em> :</span></p></td>
-<td>the object which received the signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-user-image-res"></a><h3>The <code class="literal">"user-image-res"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *gstcamerabin,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> arg1,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> arg2,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gstcamerabin</code></em> :</span></p></td>
-<td>the object which received the signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-user-pause"></a><h3>The <code class="literal">"user-pause"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *gstcamerabin,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gstcamerabin</code></em> :</span></p></td>
-<td>the object which received the signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-user-res-fps"></a><h3>The <code class="literal">"user-res-fps"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *gstcamerabin,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> arg1,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> arg2,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> arg3,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> arg4,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gstcamerabin</code></em> :</span></p></td>
-<td>the object which received the signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-user-start"></a><h3>The <code class="literal">"user-start"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *gstcamerabin,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gstcamerabin</code></em> :</span></p></td>
-<td>the object which received the signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-user-stop"></a><h3>The <code class="literal">"user-stop"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *gstcamerabin,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gstcamerabin</code></em> :</span></p></td>
-<td>the object which received the signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-capture-pause"></a><h3>The <code class="literal">"capture-pause"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *camera,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-Pauses video recording or resumes paused video recording.
-If in image mode or not recording, does nothing.
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>camera</code></em> :</span></p></td>
-<td>the camera bin element</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-capture-start"></a><h3>The <code class="literal">"capture-start"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *camera,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-Starts image capture or video recording depending on the Mode.
-If there is a capture already going on, does nothing.
-Resumes video recording if it has been paused.
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>camera</code></em> :</span></p></td>
-<td>the camera bin element</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-capture-stop"></a><h3>The <code class="literal">"capture-stop"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *camera,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-Stops still image preview, continuous image capture and video
-recording and returns to the view finder mode.
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>camera</code></em> :</span></p></td>
-<td>the camera bin element</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-image-done"></a><h3>The <code class="literal">"image-done"</code> signal</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *camera,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *filename,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
-<p>
-Signal emitted when the file has just been saved.
-</p>
-<p>
-Don't call any <a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> method from this signal, if you do so there
-will be a deadlock.
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>camera</code></em> :</span></p></td>
-<td>the camera bin element</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>filename</code></em> :</span></p></td>
-<td>the name of the file just saved</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-set-image-resolution"></a><h3>The <code class="literal">"set-image-resolution"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *camera,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> width,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> height,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-Changes the resolution used for still image capture.
-Does not affect view finder mode and video recording.
-</p>
-<p>
-This actually sets the 'image-capture-width' and 'image-capture-height'
-properties.
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>camera</code></em> :</span></p></td>
-<td>the camera bin element</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>width</code></em> :</span></p></td>
-<td>number of horizontal pixels</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>height</code></em> :</span></p></td>
-<td>number of vertical pixels</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin-set-video-resolution-fps"></a><h3>The <code class="literal">"set-video-resolution-fps"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin.html#GstCameraBin" title="struct GstCameraBin"><span class="type">GstCameraBin</span></a> *camera,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> width,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> height,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> fps_n,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> fps_d,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-Changes the frame resolution and frames per second of the video source.
-The application must be aware of the resolutions supported by the camera.
-Supported resolutions and frame rates can be get using input-caps property.
-</p>
-<p>
-Setting <em class="parameter"><code>fps_n</code></em> or <em class="parameter"><code>fps_d</code></em> to 0 configures maximum framerate for the
-given resolution, unless in night mode when minimum is configured.
-</p>
-<p>
-This is the same as setting the 'video-capture-width',
-'video-capture-height' and 'video-capture-framerate' properties, but it
-already updates the caps to force use this resolution and framerate.
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>camera</code></em> :</span></p></td>
-<td>the camera bin element</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>width</code></em> :</span></p></td>
-<td>number of horizontal pixels</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>height</code></em> :</span></p></td>
-<td>number of vertical pixels</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>fps_n</code></em> :</span></p></td>
-<td>frames per second numerator</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>fps_d</code></em> :</span></p></td>
-<td>frames per second denominator</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-camerabin2.html b/docs/plugins/html/gst-plugins-bad-plugins-camerabin2.html
deleted file mode 100644
index 6e03fe59..00000000
--- a/docs/plugins/html/gst-plugins-bad-plugins-camerabin2.html
+++ /dev/null
@@ -1,552 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>camerabin2</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
-<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-camerabin.html" title="camerabin">
-<link rel="next" href="gst-plugins-bad-plugins-celtdec.html" title="celtdec">
-<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="gst-plugins-bad-plugins-camerabin.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">GStreamer Bad Plugins 1.0 Plugins Reference Manual</th>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-celtdec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#gst-plugins-bad-plugins-camerabin2.synopsis" class="shortcut">Top</a>
-  | 
- <a href="#gst-plugins-bad-plugins-camerabin2.description" class="shortcut">Description</a>
-  | 
- <a href="#gst-plugins-bad-plugins-camerabin2.object-hierarchy" class="shortcut">Object Hierarchy</a>
-  | 
- <a href="#gst-plugins-bad-plugins-camerabin2.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
-  | 
- <a href="#gst-plugins-bad-plugins-camerabin2.properties" class="shortcut">Properties</a>
-  | 
- <a href="#gst-plugins-bad-plugins-camerabin2.signals" class="shortcut">Signals</a>
-</td></tr>
-</table>
-<div class="refentry">
-<a name="gst-plugins-bad-plugins-camerabin2"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-camerabin2.top_of_page"></a>camerabin2</span></h2>
-<p>camerabin2 — CameraBin2</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv">
-<a name="gst-plugins-bad-plugins-camerabin2.synopsis"></a><h2>Synopsis</h2>
-<a name="GstCameraBin2"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2-struct" title="struct GstCameraBin2">GstCameraBin2</a>;
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin2.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="synopsis">
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
- +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
- +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
- +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
- +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBin.html">GstBin</a>
- +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPipeline.html">GstPipeline</a>
- +----GstCameraBin2
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin2.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
-<p>
-GstCameraBin2 implements
- <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstChildProxy.html">GstChildProxy</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstTagSetter.html">GstTagSetter</a>.</p>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin2.properties"></a><h2>Properties</h2>
-<pre class="synopsis">
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-capture-caps" title='The "audio-capture-caps" property'>audio-capture-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-capture-supported-caps" title='The "audio-capture-supported-caps" property'>audio-capture-supported-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-src" title='The "audio-src" property'>audio-src</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--camera-src" title='The "camera-src" property'>camera-src</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--idle" title='The "idle" property'>idle</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-caps" title='The "image-capture-caps" property'>image-capture-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-encoder" title='The "image-capture-encoder" property'>image-capture-encoder</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-muxer" title='The "image-capture-muxer" property'>image-capture-muxer</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-supported-caps" title='The "image-capture-supported-caps" property'>image-capture-supported-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-filter" title='The "image-filter" property'>image-filter</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--location" title='The "location" property'>location</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--max-zoom" title='The "max-zoom" property'>max-zoom</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> : Read
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--mode" title='The "mode" property'>mode</a>" <span class="type">GstCameraBin2Mode</span> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--mute" title='The "mute" property'>mute</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--post-previews" title='The "post-previews" property'>post-previews</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--preview-caps" title='The "preview-caps" property'>preview-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--preview-filter" title='The "preview-filter" property'>preview-filter</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-capture-caps" title='The "video-capture-caps" property'>video-capture-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-capture-supported-caps" title='The "video-capture-supported-caps" property'>video-capture-supported-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-filter" title='The "video-filter" property'>video-filter</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-profile" title='The "video-profile" property'>video-profile</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-caps" title='The "viewfinder-caps" property'>viewfinder-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-filter" title='The "viewfinder-filter" property'>viewfinder-filter</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-sink" title='The "viewfinder-sink" property'>viewfinder-sink</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-supported-caps" title='The "viewfinder-supported-caps" property'>viewfinder-supported-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--zoom" title='The "zoom" property'>zoom</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-profile" title='The "image-profile" property'>image-profile</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-source" title='The "audio-source" property'>audio-source</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--camera-source" title='The "camera-source" property'>camera-source</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-filter" title='The "audio-filter" property'>audio-filter</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--flags" title='The "flags" property'>flags</a>" <span class="type">GstCamFlags</span> : Read / Write
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin2.signals"></a><h2>Signals</h2>
-<pre class="synopsis">
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2-start-capture" title='The "start-capture" signal'>start-capture</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
- "<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2-stop-capture" title='The "stop-capture" signal'>stop-capture</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a>
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin2.description"></a><h2>Description</h2>
-<p>
-CameraBin2 is a high-level camera object that encapsulates gstreamer
-elements, providing an API for controlling a digital camera.
-</p>
-<p>
-</p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
-<h3 class="title">Note</h3>
-Note that camerabin2 is still UNSTABLE and under
-development.
-</div>
-<p>
-</p>
-<p>
-CameraBin2 has the following main features:
-</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
-Record videos
-</li>
-<li class="listitem">
-Capture pictures
-</li>
-<li class="listitem">
-Display a viewfinder
-</li>
-<li class="listitem">
-Post preview images for each capture (video and image)
-</li>
-</ul></div>
-<p>
-</p>
-<p>
-</p>
-<div class="refsect2">
-<a name="idp10096736"></a><h3>Usage</h3>
-<p>
-Camerabin2 can be created using <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html#gst-element-factory-make"><code class="function">gst_element_factory_make()</code></a> just like
-any other element. Video or image capture mode can be selected using
-the <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--mode" title='The "mode" property'><span class="type">"mode"</span></a> property and the file to save the capture is
-selected using <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--location" title='The "location" property'><span class="type">"location"</span></a> property.
-</p>
-<p>
-After creating camerabin2, applications might want to do some
-customization (there's a section about this below), then select
-the desired mode and start capturing.
-</p>
-<p>
-In image capture mode, just send a <span class="type">"start-capture"</span> and a
-picture will be captured. When the picture is stored on the selected
-location, a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GST-MESSAGE-ELEMENT:CAPS"><code class="literal">GST_MESSAGE_ELEMENT</code></a> named 'image-done' will be posted on
-the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html"><span class="type">GstBus</span></a>.
-</p>
-<p>
-In video capture mode, send a <span class="type">"start-capture"</span> to start
-recording, then send a <span class="type">"stop-capture"</span> to stop recording.
-Note that both signals are asynchronous, so, calling
-<span class="type">"stop-capture"</span> doesn't guarantee that the video has been
-properly finished yet. Applications should wait for the 'video-done'
-message to be posted on the bus.
-</p>
-<p>
-In both modes, if <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--post-previews" title='The "post-previews" property'><span class="type">"post-previews"</span></a> is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a>
-will be post to the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html"><span class="type">GstBus</span></a> in a field named 'buffer', in a
-'preview-image' message of type <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GST-MESSAGE-ELEMENT:CAPS"><code class="literal">GST_MESSAGE_ELEMENT</code></a>.
-</p>
-</div>
-<p>
-</p>
-<p>
-</p>
-<div class="refsect2">
-<a name="idp10113840"></a><h3>Customization</h3>
-<p>
-Camerabin2 provides various customization properties, allowing the user
-to set custom filters, selecting the viewfinder sink and formats to
-use to encode the captured images/videos.
-</p>
-<p>
-<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a>s are used to tell camerabin2 which formats it
-should encode the captures to, those should be set to
-<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-profile" title='The "image-profile" property'><span class="type">"image-profile"</span></a> and <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-profile" title='The "video-profile" property'><span class="type">"video-profile"</span></a>. Default is
-jpeg for images, and ogg (theora and vorbis) for video. If a profile without
-an audio stream is set for video, audio will be disabled on recordings.
-</p>
-<p>
-<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--preview-caps" title='The "preview-caps" property'><span class="type">"preview-caps"</span></a> can be used to select which format preview
-images should be posted on the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html"><span class="type">GstBus</span></a>. It has to be a raw video format.
-</p>
-<p>
-Camerabin2 has a <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--camera-source" title='The "camera-source" property'><span class="type">"camera-source"</span></a> property so applications can
-set their source that will provide buffers for the viewfinder and for
-captures. This camera source is a special type of source that has 3 pads.
-To use a 'regular' source with a single pad you should use
-<span class="type">GstWrapperCameraBinSource</span>, it will adapt your source and provide 3 pads.
-</p>
-<p>
-Applications can also select the desired viewfinder sink using
-<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-sink" title='The "viewfinder-sink" property'><span class="type">"viewfinder-sink"</span></a>, it is also possible to select the audio
-source using <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-source" title='The "audio-source" property'><span class="type">"audio-source"</span></a>.
-</p>
-<p>
-The viewfinder resolution can be configured using
-<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-caps" title='The "viewfinder-caps" property'><span class="type">"viewfinder-caps"</span></a>, these <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> should be a subset of
-<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-supported-caps" title='The "viewfinder-supported-caps" property'><span class="type">"viewfinder-supported-caps"</span></a>.
-</p>
-<p>
-To select the desired resolution for captures, camerabin2 provides
-<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-caps" title='The "image-capture-caps" property'><span class="type">"image-capture-caps"</span></a> and <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-capture-caps" title='The "video-capture-caps" property'><span class="type">"video-capture-caps"</span></a>,
-these caps must be a subset of what the source can produce. The allowed
-caps can be probed using <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-supported-caps" title='The "image-capture-supported-caps" property'><span class="type">"image-capture-supported-caps"</span></a> and
-<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-capture-supported-caps" title='The "video-capture-supported-caps" property'><span class="type">"video-capture-supported-caps"</span></a>. In an analogous way, there
-are <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-capture-caps" title='The "audio-capture-caps" property'><span class="type">"audio-capture-caps"</span></a> and
-<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-capture-supported-caps" title='The "audio-capture-supported-caps" property'><span class="type">"audio-capture-supported-caps"</span></a>.
-</p>
-<p>
-Camerabin2 also allows applications to insert custom <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElements</span></a> on any
-of its branches: video capture, image capture, viewfinder and preview.
-Check <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-filter" title='The "video-filter" property'><span class="type">"video-filter"</span></a>, <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-filter" title='The "image-filter" property'><span class="type">"image-filter"</span></a>,
-<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-filter" title='The "viewfinder-filter" property'><span class="type">"viewfinder-filter"</span></a> and <a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--preview-filter" title='The "preview-filter" property'><span class="type">"preview-filter"</span></a>.
-</p>
-</div>
-<p>
-</p>
-<p>
-</p>
-<div class="refsect2">
-<a name="idp10139248"></a><h3>Example launch line</h3>
-<p>
-Unfortunatelly, camerabin2 can't be really used from gst-launch, as you need
-to send signals to control it. The following pipeline might be able
-to show the viewfinder using all the default elements.
-</p>
-<div class="informalexample">
- <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td class="listing_lines" align="right"><pre>1</pre></td>
- <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch <span class="gtkdoc opt">-</span>v <span class="gtkdoc opt">-</span>m camerabin2</pre></td>
- </tr>
- </tbody>
- </table>
-</div>
-
-<p>
-</p>
-</div>
-<p>
-</p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<div class="refsect2">
-<a name="idp10142576"></a><h3>Element Information</h3>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term">plugin</span></p></td>
-<td>
- <a class="link" href="gst-plugins-bad-plugins-plugin-camerabin2.html#plugin-camerabin2">camerabin2</a>
- </td>
-</tr>
-<tr>
-<td><p><span class="term">author</span></p></td>
-<td>Thiago Santos &lt;thiago.sousa.santos@collabora.co.uk&gt;</td>
-</tr>
-<tr>
-<td><p><span class="term">class</span></p></td>
-<td>Generic/Bin/Camera</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="idp10149984"></a><h3>Element Pads</h3>
-</div>
-</div>
-<p>
-</p>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin2.details"></a><h2>Details</h2>
-<div class="refsect2">
-<a name="GstCameraBin2-struct"></a><h3>struct GstCameraBin2</h3>
-<pre class="programlisting">struct GstCameraBin2;</pre>
-<p>
-</p>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin2.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="GstCameraBin2--audio-capture-caps"></a><h3>The <code class="literal">"audio-capture-caps"</code> property</h3>
-<pre class="programlisting"> "audio-capture-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write</pre>
-<p>Format to capture audio for video recording represented as GstCaps.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--audio-capture-supported-caps"></a><h3>The <code class="literal">"audio-capture-supported-caps"</code> property</h3>
-<pre class="programlisting"> "audio-capture-supported-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read</pre>
-<p>Formats supported for capturing audio represented as GstCaps.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--audio-src"></a><h3>The <code class="literal">"audio-src"</code> property</h3>
-<pre class="programlisting"> "audio-src" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The audio source element to be used on video recordings. It is only taken into use on the next null to ready transition.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--camera-src"></a><h3>The <code class="literal">"camera-src"</code> property</h3>
-<pre class="programlisting"> "camera-src" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The camera source element to be used. It is only taken into use on the next null to ready transition.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--idle"></a><h3>The <code class="literal">"idle"</code> property</h3>
-<pre class="programlisting"> "idle" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read</pre>
-<p>If camerabin2 is idle (not doing captures).</p>
-<p>Default value: TRUE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--image-capture-caps"></a><h3>The <code class="literal">"image-capture-caps"</code> property</h3>
-<pre class="programlisting"> "image-capture-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write</pre>
-<p>Caps for image capture.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--image-capture-encoder"></a><h3>The <code class="literal">"image-capture-encoder"</code> property</h3>
-<pre class="programlisting"> "image-capture-encoder" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The image encoder element to be used on image captures.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--image-capture-muxer"></a><h3>The <code class="literal">"image-capture-muxer"</code> property</h3>
-<pre class="programlisting"> "image-capture-muxer" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The image encoder element to be used on image captures.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--image-capture-supported-caps"></a><h3>The <code class="literal">"image-capture-supported-caps"</code> property</h3>
-<pre class="programlisting"> "image-capture-supported-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read</pre>
-<p>Formats supported for capturing images represented as GstCaps.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--image-filter"></a><h3>The <code class="literal">"image-filter"</code> property</h3>
-<pre class="programlisting"> "image-filter" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The element that will process captured image frames. (Should be set on NULL state).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--location"></a><h3>The <code class="literal">"location"</code> property</h3>
-<pre class="programlisting"> "location" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre>
-<p>Location to save the captured files. A %d might be used on thefilename as a placeholder for a numeric index of the capture.Default is cap_%d.</p>
-<p>Default value: "cap_%d"</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--max-zoom"></a><h3>The <code class="literal">"max-zoom"</code> property</h3>
-<pre class="programlisting"> "max-zoom" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> : Read</pre>
-<p>Digital zoom factor (e.g. 1.5 means 1.5x).</p>
-<p>Allowed values: &gt;= 1</p>
-<p>Default value: 10</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--mode"></a><h3>The <code class="literal">"mode"</code> property</h3>
-<pre class="programlisting"> "mode" <span class="type">GstCameraBin2Mode</span> : Read / Write</pre>
-<p>
-Set the mode of operation: still image capturing or video recording.
-</p>
-<p>Default value: Still image capture (default)</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--mute"></a><h3>The <code class="literal">"mute"</code> property</h3>
-<pre class="programlisting"> "mute" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre>
-<p>If the audio recording should be muted. Note that this still saves audio data to the resulting file, but they are silent. Use a video-profile without audio to disable audio completely.</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--post-previews"></a><h3>The <code class="literal">"post-previews"</code> property</h3>
-<pre class="programlisting"> "post-previews" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre>
-<p>If capture preview images should be posted to the bus.</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--preview-caps"></a><h3>The <code class="literal">"preview-caps"</code> property</h3>
-<pre class="programlisting"> "preview-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write</pre>
-<p>The caps of the preview image to be posted.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--preview-filter"></a><h3>The <code class="literal">"preview-filter"</code> property</h3>
-<pre class="programlisting"> "preview-filter" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The element that will process preview buffers. (Should be set on NULL state).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--video-capture-caps"></a><h3>The <code class="literal">"video-capture-caps"</code> property</h3>
-<pre class="programlisting"> "video-capture-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write</pre>
-<p>Caps for video capture.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--video-capture-supported-caps"></a><h3>The <code class="literal">"video-capture-supported-caps"</code> property</h3>
-<pre class="programlisting"> "video-capture-supported-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read</pre>
-<p>Formats supported for capturing videos represented as GstCaps.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--video-filter"></a><h3>The <code class="literal">"video-filter"</code> property</h3>
-<pre class="programlisting"> "video-filter" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The element that will process captured video frames. (Should be set on NULL state).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--video-profile"></a><h3>The <code class="literal">"video-profile"</code> property</h3>
-<pre class="programlisting"> "video-profile" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a>* : Read / Write</pre>
-<p>The GstEncodingProfile to use for video recording. Audio is enabled when this profile supports audio.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--viewfinder-caps"></a><h3>The <code class="literal">"viewfinder-caps"</code> property</h3>
-<pre class="programlisting"> "viewfinder-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write</pre>
-<p>Restricts the caps that can be used on the viewfinder.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--viewfinder-filter"></a><h3>The <code class="literal">"viewfinder-filter"</code> property</h3>
-<pre class="programlisting"> "viewfinder-filter" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The element that will process frames going to the viewfinder. (Should be set on NULL state).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--viewfinder-sink"></a><h3>The <code class="literal">"viewfinder-sink"</code> property</h3>
-<pre class="programlisting"> "viewfinder-sink" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The video sink of the viewfinder. It is only taken into use on the next null to ready transition.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--viewfinder-supported-caps"></a><h3>The <code class="literal">"viewfinder-supported-caps"</code> property</h3>
-<pre class="programlisting"> "viewfinder-supported-caps" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read</pre>
-<p>The caps that the camera source can produce on the viewfinder pad.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--zoom"></a><h3>The <code class="literal">"zoom"</code> property</h3>
-<pre class="programlisting"> "zoom" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> : Read / Write</pre>
-<p>Digital zoom factor (e.g. 1.5 means 1.5x).</p>
-<p>Allowed values: [1,10]</p>
-<p>Default value: 1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--image-profile"></a><h3>The <code class="literal">"image-profile"</code> property</h3>
-<pre class="programlisting"> "image-profile" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile"><span class="type">GstEncodingProfile</span></a>* : Read / Write</pre>
-<p>The GstEncodingProfile to use for image captures.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--audio-source"></a><h3>The <code class="literal">"audio-source"</code> property</h3>
-<pre class="programlisting"> "audio-source" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The audio source element to be used on video recordings. It is only taken into use on the next null to ready transition.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--camera-source"></a><h3>The <code class="literal">"camera-source"</code> property</h3>
-<pre class="programlisting"> "camera-source" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The camera source element to be used. It is only taken into use on the next null to ready transition.</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--audio-filter"></a><h3>The <code class="literal">"audio-filter"</code> property</h3>
-<pre class="programlisting"> "audio-filter" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>* : Read / Write</pre>
-<p>The element that will process captured audio buffers when recording. (Should be set on NULL state).</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2--flags"></a><h3>The <code class="literal">"flags"</code> property</h3>
-<pre class="programlisting"> "flags" <span class="type">GstCamFlags</span> : Read / Write</pre>
-<p>Flags to control behaviour.</p>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-camerabin2.signal-details"></a><h2>Signal Details</h2>
-<div class="refsect2">
-<a name="GstCameraBin2-start-capture"></a><h3>The <code class="literal">"start-capture"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2"><span class="type">GstCameraBin2</span></a> *gstcamerabin2,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gstcamerabin2</code></em> :</span></p></td>
-<td>the object which received the signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCameraBin2-stop-capture"></a><h3>The <code class="literal">"stop-capture"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2"><span class="type">GstCameraBin2</span></a> *gstcamerabin2,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre>
-<p>
-</p>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>gstcamerabin2</code></em> :</span></p></td>
-<td>the object which received the signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.18</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-celtdec.html b/docs/plugins/html/gst-plugins-bad-plugins-celtdec.html
index cb531044..ce4c92ae 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-celtdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-celtdec.html
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-camerabin2.html" title="camerabin2">
+<link rel="prev" href="gst-plugins-bad-plugins-camerabin.html" title="camerabin">
<link rel="next" href="gst-plugins-bad-plugins-celtenc.html" title="celtenc">
<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
@@ -14,7 +14,7 @@
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
-<td><a accesskey="p" href="gst-plugins-bad-plugins-camerabin2.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-camerabin.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GStreamer Bad Plugins 1.0 Plugins Reference Manual</th>
@@ -58,7 +58,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp6205440"></a><h3>Element Information</h3>
+<a name="idp7626160"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -81,7 +81,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp7559488"></a><h3>Element Pads</h3>
+<a name="idp6139488"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-celtenc.html b/docs/plugins/html/gst-plugins-bad-plugins-celtenc.html
index b1d8dfd9..10ef09d9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-celtenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-celtenc.html
@@ -80,7 +80,7 @@ GstCeltEnc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp8208304"></a><h3>Element Information</h3>
+<a name="idp8105504"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -103,7 +103,7 @@ GstCeltEnc implements
</div>
<hr>
<div class="refsect2">
-<a name="idp8215712"></a><h3>Element Pads</h3>
+<a name="idp8112912"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-chromium.html b/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
index 6ccd8d7a..ccefe866 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
@@ -58,7 +58,7 @@ Chromium breaks the colors of a video stream in realtime.
<p>
</p>
<div class="refsect2">
-<a name="idp10425344"></a><h3>Example launch line</h3>
+<a name="idp9550528"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -76,7 +76,7 @@ Chromium breaks the colors of a video stream in realtime.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5488144"></a><h3>Element Information</h3>
+<a name="idp6238816"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -99,7 +99,7 @@ Chromium breaks the colors of a video stream in realtime.
</div>
<hr>
<div class="refsect2">
-<a name="idp7977072"></a><h3>Element Pads</h3>
+<a name="idp5281568"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-circle.html b/docs/plugins/html/gst-plugins-bad-plugins-circle.html
index 6aaf7bbe..3454ec50 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-circle.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-circle.html
@@ -55,7 +55,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp8426640"></a><h3>Element Information</h3>
+<a name="idp9947280"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -78,7 +78,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp8419792"></a><h3>Element Pads</h3>
+<a name="idp9940432"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html b/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
index f2211a2d..38502ee1 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
@@ -56,7 +56,7 @@ Map colors of the video input to a lookup table
<p>
</p>
<div class="refsect2">
-<a name="idp5743808"></a><h3>Example launch line</h3>
+<a name="idp10057920"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -76,7 +76,7 @@ Map colors of the video input to a lookup table
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5739776"></a><h3>Element Information</h3>
+<a name="idp10053888"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -99,7 +99,7 @@ Map colors of the video input to a lookup table
</div>
<hr>
<div class="refsect2">
-<a name="idp5734320"></a><h3>Element Pads</h3>
+<a name="idp10048464"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-curlsink.html b/docs/plugins/html/gst-plugins-bad-plugins-curlsink.html
index d63d005c..09046351 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-curlsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-curlsink.html
@@ -24,8 +24,6 @@
<a href="#gst-plugins-bad-plugins-curlsink.synopsis" class="shortcut">Top</a>
 | 
<a href="#gst-plugins-bad-plugins-curlsink.description" class="shortcut">Description</a>
-  | 
- <a href="#gst-plugins-bad-plugins-curlsink.properties" class="shortcut">Properties</a>
</td></tr>
</table>
<div class="refentry">
@@ -39,33 +37,14 @@
</tr></table></div>
<div class="refsynopsisdiv">
<a name="gst-plugins-bad-plugins-curlsink.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis">struct <a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink" title="struct GstCurlSink">GstCurlSink</a>;
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-curlsink.properties"></a><h2>Properties</h2>
-<pre class="synopsis">
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--accept-self-signed" title='The "accept-self-signed" property'>accept-self-signed</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--content-type" title='The "content-type" property'>content-type</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--file-name" title='The "file-name" property'>file-name</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--location" title='The "location" property'>location</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--passwd" title='The "passwd" property'>passwd</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy" title='The "proxy" property'>proxy</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy-passwd" title='The "proxy-passwd" property'>proxy-passwd</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy-port" title='The "proxy-port" property'>proxy-port</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy-user" title='The "proxy-user" property'>proxy-user</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--qos-dscp" title='The "qos-dscp" property'>qos-dscp</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--timeout" title='The "timeout" property'>timeout</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--use-content-length" title='The "use-content-length" property'>use-content-length</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write
- "<a class="link" href="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--user" title='The "user" property'>user</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
-</pre>
+<pre class="synopsis"></pre>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-curlsink.description"></a><h2>Description</h2>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5765824"></a><h3>Element Information</h3>
+<a name="idp7790640"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -88,7 +67,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp11061920"></a><h3>Element Pads</h3>
+<a name="idp4834592"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -117,111 +96,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-curlsink.details"></a><h2>Details</h2>
-<div class="refsect2">
-<a name="GstCurlSink"></a><h3>struct GstCurlSink</h3>
-<pre class="programlisting">struct GstCurlSink {
- GstBaseSink parent;
-};
-</pre>
-<p>
-</p>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-curlsink.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="GstCurlSink--accept-self-signed"></a><h3>The <code class="literal">"accept-self-signed"</code> property</h3>
-<pre class="programlisting"> "accept-self-signed" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre>
-<p>Accept self-signed SSL/TLS certificates.</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--content-type"></a><h3>The <code class="literal">"content-type"</code> property</h3>
-<pre class="programlisting"> "content-type" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre>
-<p>The mime type of the body of the request.</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--file-name"></a><h3>The <code class="literal">"file-name"</code> property</h3>
-<pre class="programlisting"> "file-name" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre>
-<p>The base file name for the uploaded images.</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--location"></a><h3>The <code class="literal">"location"</code> property</h3>
-<pre class="programlisting"> "location" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre>
-<p>URI location to write to.</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--passwd"></a><h3>The <code class="literal">"passwd"</code> property</h3>
-<pre class="programlisting"> "passwd" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre>
-<p>User password to use for server authentication.</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--proxy"></a><h3>The <code class="literal">"proxy"</code> property</h3>
-<pre class="programlisting"> "proxy" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre>
-<p>HTTP proxy server URI.</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--proxy-passwd"></a><h3>The <code class="literal">"proxy-passwd"</code> property</h3>
-<pre class="programlisting"> "proxy-passwd" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre>
-<p>Proxy user password to use for proxy authentication.</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--proxy-port"></a><h3>The <code class="literal">"proxy-port"</code> property</h3>
-<pre class="programlisting"> "proxy-port" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre>
-<p>HTTP proxy server port.</p>
-<p>Allowed values: &gt;= 0</p>
-<p>Default value: 3128</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--proxy-user"></a><h3>The <code class="literal">"proxy-user"</code> property</h3>
-<pre class="programlisting"> "proxy-user" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre>
-<p>Proxy user name to use for proxy authentication.</p>
-<p>Default value: NULL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--qos-dscp"></a><h3>The <code class="literal">"qos-dscp"</code> property</h3>
-<pre class="programlisting"> "qos-dscp" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre>
-<p>Quality of Service, differentiated services code point (0 default).</p>
-<p>Allowed values: [0,63]</p>
-<p>Default value: 0</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--timeout"></a><h3>The <code class="literal">"timeout"</code> property</h3>
-<pre class="programlisting"> "timeout" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre>
-<p>Number of seconds waiting to write before timeout.</p>
-<p>Allowed values: &gt;= 0</p>
-<p>Default value: 30</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--use-content-length"></a><h3>The <code class="literal">"use-content-length"</code> property</h3>
-<pre class="programlisting"> "use-content-length" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre>
-<p>Use the Content-Length HTTP header instead of Transfer-Encoding header.</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstCurlSink--user"></a><h3>The <code class="literal">"user"</code> property</h3>
-<pre class="programlisting"> "user" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre>
-<p>User name to use for server authentication.</p>
-<p>Default value: NULL</p>
-</div>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html b/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
index ee4eb6d1..9637fa54 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp6334768"></a><h3>Element Information</h3>
+<a name="idp10222064"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp5429984"></a><h3>Element Pads</h3>
+<a name="idp7769760"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html b/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
index ddc07715..09e02177 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp8727344"></a><h3>Element Information</h3>
+<a name="idp7616816"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp8264416"></a><h3>Element Pads</h3>
+<a name="idp7646496"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cverode.html b/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
index e550bf6d..8662c334 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp11010960"></a><h3>Element Information</h3>
+<a name="idp10278128"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp5084064"></a><h3>Element Pads</h3>
+<a name="idp7360272"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html b/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
index be451ebb..b2ee8090 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
@@ -53,7 +53,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp6075568"></a><h3>Element Information</h3>
+<a name="idp9376416"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -76,7 +76,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp7544864"></a><h3>Element Pads</h3>
+<a name="idp6179248"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html b/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
index 77f5020d..d762c120 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
@@ -57,7 +57,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp4908992"></a><h3>Element Information</h3>
+<a name="idp5211696"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -80,7 +80,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp6067376"></a><h3>Element Pads</h3>
+<a name="idp6429568"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html b/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
index 81c96b6c..b64e6484 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
@@ -55,7 +55,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7497152"></a><h3>Element Information</h3>
+<a name="idp9736224"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -78,7 +78,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp6597072"></a><h3>Element Pads</h3>
+<a name="idp5096304"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html
index a3ea51ed..5bccafc3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html
@@ -77,7 +77,7 @@ dataurisrc handles data: URIs, see <a class="ulink" href="http://tools.ietf.org/
<p>
</p>
<div class="refsect2">
-<a name="idp11737152"></a><h3>Example launch line</h3>
+<a name="idp5308336"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -95,7 +95,7 @@ dataurisrc handles data: URIs, see <a class="ulink" href="http://tools.ietf.org/
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp11740144"></a><h3>Element Information</h3>
+<a name="idp10303632"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -118,7 +118,7 @@ dataurisrc handles data: URIs, see <a class="ulink" href="http://tools.ietf.org/
</div>
<hr>
<div class="refsect2">
-<a name="idp11257536"></a><h3>Element Pads</h3>
+<a name="idp10466336"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dccpclientsink.html b/docs/plugins/html/gst-plugins-bad-plugins-dccpclientsink.html
index 68ae373b..c63081c8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dccpclientsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dccpclientsink.html
@@ -71,7 +71,7 @@ TCP and UDP.
<p>
</p>
<div class="refsect2">
-<a name="idp11295040"></a><h3>Example pipeline</h3>
+<a name="idp6700336"></a><h3>Example pipeline</h3>
<p>
</p>
<div class="informalexample">
@@ -111,7 +111,7 @@ Run the server pipeline first than the client pipeline.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp11299664"></a><h3>Element Information</h3>
+<a name="idp6704960"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -134,7 +134,7 @@ Run the server pipeline first than the client pipeline.
</div>
<hr>
<div class="refsect2">
-<a name="idp11307072"></a><h3>Element Pads</h3>
+<a name="idp6712368"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dccpclientsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dccpclientsrc.html
index 87f0e239..104b4b5a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dccpclientsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dccpclientsrc.html
@@ -72,7 +72,7 @@ TCP and UDP.
<p>
</p>
<div class="refsect2">
-<a name="idp11329728"></a><h3>Example pipeline</h3>
+<a name="idp10957024"></a><h3>Example pipeline</h3>
<p>
</p>
<div class="informalexample">
@@ -113,7 +113,7 @@ to connect to the same server (see wait-connections property at dccpserversink).
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp11334320"></a><h3>Element Information</h3>
+<a name="idp10961664"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -136,7 +136,7 @@ to connect to the same server (see wait-connections property at dccpserversink).
</div>
<hr>
<div class="refsect2">
-<a name="idp11660352"></a><h3>Element Pads</h3>
+<a name="idp10827728"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dccpserversink.html b/docs/plugins/html/gst-plugins-bad-plugins-dccpserversink.html
index e5a250ad..bfd6f1ae 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dccpserversink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dccpserversink.html
@@ -71,7 +71,7 @@ TCP and UDP.
<p>
</p>
<div class="refsect2">
-<a name="idp11603296"></a><h3>Example pipeline</h3>
+<a name="idp6659888"></a><h3>Example pipeline</h3>
<p>
</p>
<div class="informalexample">
@@ -112,7 +112,7 @@ to connect to the same server (see wait-connections property at dccpserversink).
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp11607936"></a><h3>Element Information</h3>
+<a name="idp6664528"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -135,7 +135,7 @@ to connect to the same server (see wait-connections property at dccpserversink).
</div>
<hr>
<div class="refsect2">
-<a name="idp11615344"></a><h3>Element Pads</h3>
+<a name="idp6671936"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dccpserversrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dccpserversrc.html
index e0c15a98..9390b6f0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dccpserversrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dccpserversrc.html
@@ -72,7 +72,7 @@ TCP and UDP.
<p>
</p>
<div class="refsect2">
-<a name="idp11449104"></a><h3>Example pipeline</h3>
+<a name="idp10808592"></a><h3>Example pipeline</h3>
<p>
</p>
<div class="informalexample">
@@ -112,7 +112,7 @@ Run the server pipeline first than the client pipeline.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp11453728"></a><h3>Element Information</h3>
+<a name="idp10813216"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -135,7 +135,7 @@ Run the server pipeline first than the client pipeline.
</div>
<hr>
<div class="refsect2">
-<a name="idp11890448"></a><h3>Element Pads</h3>
+<a name="idp11006336"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dfbvideosink.html b/docs/plugins/html/gst-plugins-bad-plugins-dfbvideosink.html
index 7065816a..8b66899a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dfbvideosink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dfbvideosink.html
@@ -67,7 +67,7 @@ GstDfbVideoSink implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp11728512"></a><h3>Element Information</h3>
+<a name="idp11275024"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -90,7 +90,7 @@ GstDfbVideoSink implements
</div>
<hr>
<div class="refsect2">
-<a name="idp11625072"></a><h3>Element Pads</h3>
+<a name="idp11282480"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html b/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html
index 213078b5..b519700f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html
@@ -53,7 +53,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp11971696"></a><h3>Element Information</h3>
+<a name="idp8834240"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -76,7 +76,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp11038096"></a><h3>Element Pads</h3>
+<a name="idp8825216"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dilate.html b/docs/plugins/html/gst-plugins-bad-plugins-dilate.html
index 1bf3e868..e38f7793 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dilate.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dilate.html
@@ -57,7 +57,7 @@ Dilate adjusts the colors of a video stream in realtime.
<p>
</p>
<div class="refsect2">
-<a name="idp11863232"></a><h3>Example launch line</h3>
+<a name="idp8901760"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -75,7 +75,7 @@ Dilate adjusts the colors of a video stream in realtime.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp6867872"></a><h3>Element Information</h3>
+<a name="idp9480896"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -98,7 +98,7 @@ Dilate adjusts the colors of a video stream in realtime.
</div>
<hr>
<div class="refsect2">
-<a name="idp8847328"></a><h3>Element Pads</h3>
+<a name="idp8138368"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-directdrawsink.html b/docs/plugins/html/gst-plugins-bad-plugins-directdrawsink.html
index b44508a9..41fd63d3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-directdrawsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-directdrawsink.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5177952"></a><h3>Element Information</h3>
+<a name="idp8202768"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp11233056"></a><h3>Element Pads</h3>
+<a name="idp6642768"></a><h3>Element Pads</h3>
</div>
</div>
<p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dodge.html b/docs/plugins/html/gst-plugins-bad-plugins-dodge.html
index 70008858..dbc7dd05 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dodge.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dodge.html
@@ -56,7 +56,7 @@ Dodge saturates the colors of a video stream in realtime.
<p>
</p>
<div class="refsect2">
-<a name="idp12250064"></a><h3>Example launch line</h3>
+<a name="idp10083888"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -74,7 +74,7 @@ Dodge saturates the colors of a video stream in realtime.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7441536"></a><h3>Element Information</h3>
+<a name="idp5626272"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -97,7 +97,7 @@ Dodge saturates the colors of a video stream in realtime.
</div>
<hr>
<div class="refsect2">
-<a name="idp8664432"></a><h3>Element Pads</h3>
+<a name="idp6046144"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html b/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
index 2a2e7018..223e1ab5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
@@ -85,7 +85,7 @@ the following fields:
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp6395744"></a><h3>Element Information</h3>
+<a name="idp9797696"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -108,7 +108,7 @@ the following fields:
</div>
<hr>
<div class="refsect2">
-<a name="idp12057264"></a><h3>Element Pads</h3>
+<a name="idp6247888"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dtmfsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dtmfsrc.html
index c9b95b15..cc09fef0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dtmfsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dtmfsrc.html
@@ -161,7 +161,7 @@ READY state, then a "dtmf-event-dropped" message is posted on the
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp12329808"></a><h3>Element Information</h3>
+<a name="idp11442544"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -184,7 +184,7 @@ READY state, then a "dtmf-event-dropped" message is posted on the
</div>
<hr>
<div class="refsect2">
-<a name="idp12337216"></a><h3>Element Pads</h3>
+<a name="idp11449952"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html b/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
index be89d41d..8a8a84d3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
@@ -66,7 +66,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp9458400"></a><h3>Element Information</h3>
+<a name="idp9210480"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -89,7 +89,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp6090768"></a><h3>Element Pads</h3>
+<a name="idp8006336"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
index e0f31784..c47ce273 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
@@ -75,7 +75,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp12705936"></a><h3>Element Information</h3>
+<a name="idp11798240"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -98,7 +98,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp12713456"></a><h3>Element Pads</h3>
+<a name="idp11805760"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html b/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html
index 9c427a76..1d0a8061 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html
@@ -60,7 +60,7 @@ DVD sub picture overlay element.
<p>
</p>
<div class="refsect2">
-<a name="idp12533344"></a><h3>Example launch line</h3>
+<a name="idp11102656"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -78,7 +78,7 @@ DVD sub picture overlay element.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp12310528"></a><h3>Element Information</h3>
+<a name="idp11100448"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -101,7 +101,7 @@ DVD sub picture overlay element.
</div>
<hr>
<div class="refsect2">
-<a name="idp7064176"></a><h3>Element Pads</h3>
+<a name="idp6584528"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html b/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
index 3baf09a2..eec310bc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
@@ -44,7 +44,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp12316672"></a><h3>Element Information</h3>
+<a name="idp10394560"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -67,7 +67,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp6367024"></a><h3>Element Pads</h3>
+<a name="idp5912208"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html b/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html
index ab53a565..06463b0c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html
@@ -57,7 +57,7 @@ Exclusion saturates the colors of a video stream in realtime.
<p>
</p>
<div class="refsect2">
-<a name="idp12362240"></a><h3>Example launch line</h3>
+<a name="idp10698448"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -75,7 +75,7 @@ Exclusion saturates the colors of a video stream in realtime.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp9327248"></a><h3>Element Information</h3>
+<a name="idp7604400"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -98,7 +98,7 @@ Exclusion saturates the colors of a video stream in realtime.
</div>
<hr>
<div class="refsect2">
-<a name="idp5943904"></a><h3>Element Pads</h3>
+<a name="idp8591568"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faac.html b/docs/plugins/html/gst-plugins-bad-plugins-faac.html
index 8a0494a4..7890e674 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faac.html
@@ -81,7 +81,7 @@ GstFaac implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp12610752"></a><h3>Element Information</h3>
+<a name="idp11376992"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -104,7 +104,7 @@ GstFaac implements
</div>
<hr>
<div class="refsect2">
-<a name="idp12942304"></a><h3>Element Pads</h3>
+<a name="idp11403824"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faad.html b/docs/plugins/html/gst-plugins-bad-plugins-faad.html
index a51298a2..2a1f0b59 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faad.html
@@ -58,7 +58,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7341888"></a><h3>Element Information</h3>
+<a name="idp9286432"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -81,7 +81,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp4859936"></a><h3>Element Pads</h3>
+<a name="idp9706656"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html b/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
index 1d0ed07b..7710d73e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
@@ -44,7 +44,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp12875824"></a><h3>Element Information</h3>
+<a name="idp10791232"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -67,7 +67,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp6817408"></a><h3>Element Pads</h3>
+<a name="idp6744576"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html b/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
index a5681982..ebd7e09b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
@@ -44,7 +44,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp12913488"></a><h3>Element Information</h3>
+<a name="idp11553504"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -67,7 +67,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp8512240"></a><h3>Element Pads</h3>
+<a name="idp7019488"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-festival.html b/docs/plugins/html/gst-plugins-bad-plugins-festival.html
index fdb59237..b5bd228e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-festival.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-festival.html
@@ -53,7 +53,7 @@ in server mode, started as </p>
<p>
</p>
<div class="refsect2">
-<a name="idp12691152"></a><h3>Example pipeline</h3>
+<a name="idp11490080"></a><h3>Example pipeline</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -71,7 +71,7 @@ in server mode, started as </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5497376"></a><h3>Element Information</h3>
+<a name="idp8069680"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -94,7 +94,7 @@ in server mode, started as </p>
</div>
<hr>
<div class="refsect2">
-<a name="idp11598768"></a><h3>Element Pads</h3>
+<a name="idp8346800"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html b/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html
index 3a452fe7..f5bdb3aa 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp13114000"></a><h3>Element Information</h3>
+<a name="idp12026368"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp13180704"></a><h3>Element Pads</h3>
+<a name="idp12017472"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html b/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html
index aa6f7faa..601d592d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html
@@ -95,7 +95,7 @@ Can display the current and average framerate as a testoverlay or on stdout.
<p>
</p>
<div class="refsect2">
-<a name="idp13445936"></a><h3>Example launch lines</h3>
+<a name="idp12424480"></a><h3>Example launch lines</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -119,7 +119,7 @@ gst<span class="gtkdoc opt">-</span>launch playbin2 uri<span class="gtkdoc opt">
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp13448912"></a><h3>Element Information</h3>
+<a name="idp12427456"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -142,7 +142,7 @@ gst<span class="gtkdoc opt">-</span>launch playbin2 uri<span class="gtkdoc opt">
</div>
<hr>
<div class="refsect2">
-<a name="idp13456320"></a><h3>Element Pads</h3>
+<a name="idp12434864"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-freeze.html b/docs/plugins/html/gst-plugins-bad-plugins-freeze.html
index 7d7eb525..7f8ed536 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-freeze.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-freeze.html
@@ -56,7 +56,7 @@ Makes a stream from buffers of data.
<p>
</p>
<div class="refsect2">
-<a name="idp13028016"></a><h3>Example launch line</h3>
+<a name="idp5633376"></a><h3>Example launch line</h3>
<p>
</p>
<div class="informalexample">
@@ -78,7 +78,7 @@ Makes a stream from buffers of data.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp9427760"></a><h3>Element Information</h3>
+<a name="idp10149296"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -101,7 +101,7 @@ Makes a stream from buffers of data.
</div>
<hr>
<div class="refsect2">
-<a name="idp6426848"></a><h3>Element Pads</h3>
+<a name="idp5639168"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html b/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
index 0311f262..ac6e80e6 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
@@ -24,8 +24,6 @@
<a href="#gst-plugins-bad-plugins-gaussianblur.synopsis" class="shortcut">Top</a>
 | 
<a href="#gst-plugins-bad-plugins-gaussianblur.description" class="shortcut">Description</a>
-  | 
- <a href="#gst-plugins-bad-plugins-gaussianblur.properties" class="shortcut">Properties</a>
</td></tr>
</table>
<div class="refentry">
@@ -39,21 +37,35 @@
</tr></table></div>
<div class="refsynopsisdiv">
<a name="gst-plugins-bad-plugins-gaussianblur.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis">typedef <a class="link" href="gst-plugins-bad-plugins-gaussianblur.html#GaussBlur" title="GaussBlur">GaussBlur</a>;
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-gaussianblur.properties"></a><h2>Properties</h2>
-<pre class="synopsis">
- "<a class="link" href="gst-plugins-bad-plugins-gaussianblur.html#GaussBlur--sigma" title='The "sigma" property'>sigma</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write
-</pre>
+<pre class="synopsis"></pre>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-gaussianblur.description"></a><h2>Description</h2>
+<p>
+Gaussianblur blurs the video stream in realtime.
+</p>
+<p>
+</p>
+<div class="refsect2">
+<a name="idp6637280"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> gaussianblur <span class="gtkdoc opt">!</span> ffmpegcolorspace <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ This pipeline shows the effect of gaussianblur on a test stream
+</div>
+<p>
+</p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idm19200"></a><h3>Element Information</h3>
+<a name="idp9083328"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -76,7 +88,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp9980272"></a><h3>Element Pads</h3>
+<a name="idp10762240"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -126,23 +138,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-gaussianblur.details"></a><h2>Details</h2>
-<div class="refsect2">
-<a name="GaussBlur"></a><h3>GaussBlur</h3>
-<pre class="programlisting">typedef struct GaussBlur GaussBlur;
-</pre>
-<p>
-</p>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-gaussianblur.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="GaussBlur--sigma"></a><h3>The <code class="literal">"sigma"</code> property</h3>
-<pre class="programlisting"> "sigma" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write</pre>
-<p>Sigma value for gaussian blur (negative for sharpen).</p>
-<p>Allowed values: [-20,20]</p>
-<p>Default value: 1.2</p>
-</div>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-ivfparse.html b/docs/plugins/html/gst-plugins-bad-plugins-ivfparse.html
index 12673a4a..694e5585 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-ivfparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-ivfparse.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5445344"></a><h3>Element Information</h3>
+<a name="idp12162784"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp7273936"></a><h3>Element Pads</h3>
+<a name="idp6714560"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html b/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
index 651e5dad..5fe1cc1d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
@@ -59,7 +59,7 @@ among others. Jpegparse can also extract metadata (e.g. xmp).
<p>
</p>
<div class="refsect2">
-<a name="idp10400096"></a><h3>Example launch line</h3>
+<a name="idp8265280"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -79,7 +79,7 @@ HTTP and stores it in a matroska file.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5887840"></a><h3>Element Information</h3>
+<a name="idp5713936"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -102,7 +102,7 @@ HTTP and stores it in a matroska file.
</div>
<hr>
<div class="refsect2">
-<a name="idp13366976"></a><h3>Element Pads</h3>
+<a name="idp12294048"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html b/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html
index e967cdbf..c7f55f5a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html
@@ -55,7 +55,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp13593792"></a><h3>Element Information</h3>
+<a name="idp12565872"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -78,7 +78,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp13586944"></a><h3>Element Pads</h3>
+<a name="idp12558128"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-katedec.html b/docs/plugins/html/gst-plugins-bad-plugins-katedec.html
index 70f8b87a..2d7f942d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-katedec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-katedec.html
@@ -57,7 +57,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp8260720"></a><h3>Element Information</h3>
+<a name="idp7971456"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -80,7 +80,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp5044400"></a><h3>Element Pads</h3>
+<a name="idp5429616"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-kateenc.html b/docs/plugins/html/gst-plugins-bad-plugins-kateenc.html
index 6f88a412..203eec25 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-kateenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-kateenc.html
@@ -69,7 +69,7 @@ GstKateEnc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp9007184"></a><h3>Element Information</h3>
+<a name="idp10290896"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -92,7 +92,7 @@ GstKateEnc implements
</div>
<hr>
<div class="refsect2">
-<a name="idp13672288"></a><h3>Element Pads</h3>
+<a name="idp12277344"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-kateparse.html b/docs/plugins/html/gst-plugins-bad-plugins-kateparse.html
index 7aaa03b4..f560b209 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-kateparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-kateparse.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp13899120"></a><h3>Element Information</h3>
+<a name="idp12145360"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp6905792"></a><h3>Element Pads</h3>
+<a name="idp6015792"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-katetag.html b/docs/plugins/html/gst-plugins-bad-plugins-katetag.html
index f1f6f040..27301527 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-katetag.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-katetag.html
@@ -64,7 +64,7 @@ GstKateTag implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp10307056"></a><h3>Element Information</h3>
+<a name="idp8746688"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -87,7 +87,7 @@ GstKateTag implements
</div>
<hr>
<div class="refsect2">
-<a name="idp9145872"></a><h3>Element Pads</h3>
+<a name="idp5261472"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-legacyresample.html b/docs/plugins/html/gst-plugins-bad-plugins-legacyresample.html
index 9fce69e7..8e541e16 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-legacyresample.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-legacyresample.html
@@ -57,7 +57,7 @@ a configurable windowing function to enhance quality.
<p>
</p>
<div class="refsect2">
-<a name="idp14124688"></a><h3>Example launch line</h3>
+<a name="idp12598064"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -79,7 +79,7 @@ Last reviewed on 2006-03-02 (0.10.4)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14122384"></a><h3>Element Information</h3>
+<a name="idp12595760"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -102,7 +102,7 @@ Last reviewed on 2006-03-02 (0.10.4)
</div>
<hr>
<div class="refsect2">
-<a name="idp10356208"></a><h3>Element Pads</h3>
+<a name="idp8200784"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html b/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html
index 228c5e94..ff0d2c8d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html
@@ -64,7 +64,7 @@ Last reviewed on 2008-02-10 (0.10.11)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14170032"></a><h3>Element Information</h3>
+<a name="idp12896464"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -87,7 +87,7 @@ Last reviewed on 2008-02-10 (0.10.11)
</div>
<hr>
<div class="refsect2">
-<a name="idp7561136"></a><h3>Element Pads</h3>
+<a name="idp6602208"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-marble.html b/docs/plugins/html/gst-plugins-bad-plugins-marble.html
index 6dceb979..42e802f2 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-marble.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-marble.html
@@ -56,7 +56,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14267072"></a><h3>Element Information</h3>
+<a name="idp13267968"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -79,7 +79,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp14261232"></a><h3>Element Pads</h3>
+<a name="idp13220848"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html b/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
index 245534d5..e8770b0f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14174864"></a><h3>Element Information</h3>
+<a name="idp13187936"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp6620816"></a><h3>Element Pads</h3>
+<a name="idp7947808"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html b/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
index 4813a45f..d7414454 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
@@ -53,7 +53,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp13427552"></a><h3>Element Information</h3>
+<a name="idp13113008"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -76,7 +76,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp5539104"></a><h3>Element Pads</h3>
+<a name="idp6938768"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mirror.html b/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
index cf0270ee..39d10c2e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
@@ -53,7 +53,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14531456"></a><h3>Element Information</h3>
+<a name="idp13226784"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -76,7 +76,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp14522432"></a><h3>Element Pads</h3>
+<a name="idp13106624"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-modplug.html b/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
index 96b2264b..8c3170e0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
@@ -76,7 +76,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14424352"></a><h3>Element Information</h3>
+<a name="idp13335440"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -99,7 +99,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp14431808"></a><h3>Element Pads</h3>
+<a name="idp13609216"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html b/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
index 7583fc0a..b91d86be 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
@@ -94,7 +94,7 @@ GstMpeg2enc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp15025840"></a><h3>Element Information</h3>
+<a name="idp13982464"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -118,7 +118,7 @@ Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;</td>
</div>
<hr>
<div class="refsect2">
-<a name="idp15033248"></a><h3>Element Pads</h3>
+<a name="idp13989872"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mplex.html b/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
index a33ae2b6..92768d52 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
@@ -59,7 +59,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14588816"></a><h3>Element Information</h3>
+<a name="idp13754672"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -84,7 +84,7 @@ Mark Nauwelaerts &lt;mnauw@users.sourceforge.net&gt;</td>
</div>
<hr>
<div class="refsect2">
-<a name="idp10970832"></a><h3>Element Pads</h3>
+<a name="idp12700352"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mxfdemux.html b/docs/plugins/html/gst-plugins-bad-plugins-mxfdemux.html
index 0bc42624..15ae0537 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mxfdemux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mxfdemux.html
@@ -58,7 +58,7 @@ mxfdemux demuxes an MXF file into the different contained streams.
<p>
</p>
<div class="refsect2">
-<a name="idp7425280"></a><h3>Example launch line</h3>
+<a name="idp6294608"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -76,7 +76,7 @@ mxfdemux demuxes an MXF file into the different contained streams.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7152432"></a><h3>Element Information</h3>
+<a name="idp4853168"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -99,7 +99,7 @@ mxfdemux demuxes an MXF file into the different contained streams.
</div>
<hr>
<div class="refsect2">
-<a name="idp15396000"></a><h3>Element Pads</h3>
+<a name="idp14341856"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mxfmux.html b/docs/plugins/html/gst-plugins-bad-plugins-mxfmux.html
index ccca59ec..b49cfb0c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mxfmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mxfmux.html
@@ -48,7 +48,7 @@ mxfmux muxes different streams into an MXF file.
<p>
</p>
<div class="refsect2">
-<a name="idp14917824"></a><h3>Example launch line</h3>
+<a name="idp14394112"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -66,7 +66,7 @@ mxfmux muxes different streams into an MXF file.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14915328"></a><h3>Element Information</h3>
+<a name="idp14391616"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -89,7 +89,7 @@ mxfmux muxes different streams into an MXF file.
</div>
<hr>
<div class="refsect2">
-<a name="idp14909248"></a><h3>Element Pads</h3>
+<a name="idp13878592"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -368,7 +368,7 @@ mxfmux muxes different streams into an MXF file.
GstElement element;
GstPad *srcpad;
- GstCollectPads2 *collect;
+ GstCollectPads *collect;
} GstMXFMux;
</pre>
<p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mythtvsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-mythtvsrc.html
index c018aef8..0413f3b4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mythtvsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mythtvsrc.html
@@ -67,7 +67,7 @@ GstMythtvSrc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14759584"></a><h3>Element Information</h3>
+<a name="idp13585072"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -90,7 +90,7 @@ GstMythtvSrc implements
</div>
<hr>
<div class="refsect2">
-<a name="idp14766992"></a><h3>Element Pads</h3>
+<a name="idp13592480"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-nuvdemux.html b/docs/plugins/html/gst-plugins-bad-plugins-nuvdemux.html
index 23965f05..0a84ff25 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-nuvdemux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-nuvdemux.html
@@ -52,7 +52,7 @@ This element currently only supports pull-based scheduling.
<p>
</p>
<div class="refsect2">
-<a name="idp15270672"></a><h3>Example launch line</h3>
+<a name="idp14203808"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -73,7 +73,7 @@ right decoder elements/plugins installed.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14651376"></a><h3>Element Information</h3>
+<a name="idp13570480"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -96,7 +96,7 @@ right decoder elements/plugins installed.
</div>
<hr>
<div class="refsect2">
-<a name="idp15477344"></a><h3>Element Pads</h3>
+<a name="idp13908848"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html b/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
index f2c6b819..252c5f1b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
@@ -62,7 +62,7 @@ struct <a class="link" href="gst-plugins-bad-plugins-opencvtextover
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp20939920"></a><h3>Element Information</h3>
+<a name="idp15268176"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -85,7 +85,7 @@ struct <a class="link" href="gst-plugins-bad-plugins-opencvtextover
</div>
<hr>
<div class="refsect2">
-<a name="idp22290016"></a><h3>Element Pads</h3>
+<a name="idp21128416"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html b/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html
index e29b89d1..803694c3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html
@@ -76,7 +76,7 @@ should be included.
<p>
</p>
<div class="refsect2">
-<a name="idp15607264"></a><h3>Example pipelines</h3>
+<a name="idp14422352"></a><h3>Example pipelines</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -97,7 +97,7 @@ depayload and decode them.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp15610096"></a><h3>Element Information</h3>
+<a name="idp14496336"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -120,7 +120,7 @@ depayload and decode them.
</div>
<hr>
<div class="refsect2">
-<a name="idp15442128"></a><h3>Element Pads</h3>
+<a name="idp14503744"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pinch.html b/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
index c761693c..7a067744 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
@@ -53,7 +53,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp15730944"></a><h3>Element Information</h3>
+<a name="idp14473088"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -76,7 +76,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp15721920"></a><h3>Element Pads</h3>
+<a name="idp14222880"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
index 9334b55c..762d3c1e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp18421184"></a><h2>Plugin Information</h2>
+<a name="idp20830976"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20726000"></a><h2>Elements</h2>
+<a name="idp19927344"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
index a041ee2b..6fdc40ca 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp23271824"></a><h2>Plugin Information</h2>
+<a name="idp18440848"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp16991600"></a><h2>Elements</h2>
+<a name="idp17810848"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
index 2263e645..eb66475b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17443744"></a><h2>Plugin Information</h2>
+<a name="idp17449664"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18954432"></a><h2>Elements</h2>
+<a name="idp15333456"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
index 96435ce4..36d3cc36 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19364800"></a><h2>Plugin Information</h2>
+<a name="idp22835104"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20980896"></a><h2>Elements</h2>
+<a name="idp19919920"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
index 4e2d9a1d..c5e9bc72 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp18277808"></a><h2>Plugin Information</h2>
+<a name="idp19056448"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18354592"></a><h2>Elements</h2>
+<a name="idp19917568"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
index ab0d36f5..f27bbaad 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
<link rel="prev" href="gst-plugins-bad-plugins-plugin-bayer.html" title="bayer">
-<link rel="next" href="gst-plugins-bad-plugins-plugin-camerabin.html" title="camerabin">
+<link rel="next" href="gst-plugins-bad-plugins-plugin-cdaudio.html" title="cdaudio">
<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -17,7 +17,7 @@
<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GStreamer Bad Plugins 1.0 Plugins Reference Manual</th>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-camerabin.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-cdaudio.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="gst-plugins-bad-plugins-plugin-bz2"></a><div class="titlepage"></div>
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp23807760"></a><h2>Plugin Information</h2>
+<a name="idp16624368"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20969824"></a><h2>Elements</h2>
+<a name="idp18434832"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
deleted file mode 100644
index 137d001c..00000000
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>camerabin</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
-<link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
-<link rel="prev" href="gst-plugins-bad-plugins-plugin-bz2.html" title="bz2">
-<link rel="next" href="gst-plugins-bad-plugins-plugin-camerabin2.html" title="camerabin2">
-<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-bz2.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">GStreamer Bad Plugins 1.0 Plugins Reference Manual</th>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-camerabin2.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-plugins-plugin-camerabin"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle">camerabin</span></h2>
-<p>camerabin — <a name="plugin-camerabin"></a>High level api for DC (Digital Camera) application</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="idp17114880"></a><h2>Plugin Information</h2>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term">filename</span></p></td>
-<td>libgstcamerabin.so</td>
-</tr>
-<tr>
-<td><p><span class="term">version</span></p></td>
-<td>0.10.23.1</td>
-</tr>
-<tr>
-<td><p><span class="term">run-time license</span></p></td>
-<td>LGPL</td>
-</tr>
-<tr>
-<td><p><span class="term">package</span></p></td>
-<td>GStreamer Bad Plug-ins git</td>
-</tr>
-<tr>
-<td><p><span class="term">origin</span></p></td>
-<td>Unknown package origin</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="idp20525840"></a><h2>Elements</h2>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody><tr>
-<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-camerabin.html" title="camerabin">camerabin</a></span></p></td>
-<td>Handle lot of features present in DSC</td>
-</tr></tbody>
-</table></div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.18</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin2.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin2.html
deleted file mode 100644
index 09328fa9..00000000
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin2.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>camerabin2</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
-<link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
-<link rel="prev" href="gst-plugins-bad-plugins-plugin-camerabin.html" title="camerabin">
-<link rel="next" href="gst-plugins-bad-plugins-plugin-cdaudio.html" title="cdaudio">
-<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-camerabin.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">GStreamer Bad Plugins 1.0 Plugins Reference Manual</th>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-cdaudio.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-plugins-plugin-camerabin2"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle">camerabin2</span></h2>
-<p>camerabin2 — <a name="plugin-camerabin2"></a>camerabin2</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="idp17169168"></a><h2>Plugin Information</h2>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term">filename</span></p></td>
-<td>libgstcamerabin2.so</td>
-</tr>
-<tr>
-<td><p><span class="term">version</span></p></td>
-<td>0.11.90</td>
-</tr>
-<tr>
-<td><p><span class="term">run-time license</span></p></td>
-<td>LGPL</td>
-</tr>
-<tr>
-<td><p><span class="term">package</span></p></td>
-<td>GStreamer Bad Plug-ins source release</td>
-</tr>
-<tr>
-<td><p><span class="term">origin</span></p></td>
-<td>Unknown package origin</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="idp16304896"></a><h2>Elements</h2>
-<div class="variablelist"><table border="0">
-<col align="left" valign="top">
-<tbody>
-<tr>
-<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-camerabin2.html" title="camerabin2">camerabin2</a></span></p></td>
-<td>CameraBin2</td>
-</tr>
-<tr>
-<td><p><span class="term">viewfinderbin</span></p></td>
-<td>Viewfinder Bin used in camerabin2</td>
-</tr>
-<tr>
-<td><p><span class="term">wrappercamerabinsrc</span></p></td>
-<td>Wrapper camera src element for camerabin2</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.18</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-cdaudio.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-cdaudio.html
index bd0d911f..b18a5bfb 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-cdaudio.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-cdaudio.html
@@ -6,14 +6,14 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
-<link rel="prev" href="gst-plugins-bad-plugins-plugin-camerabin2.html" title="camerabin2">
+<link rel="prev" href="gst-plugins-bad-plugins-plugin-bz2.html" title="bz2">
<link rel="next" href="gst-plugins-bad-plugins-plugin-cdxaparse.html" title="cdxaparse">
<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-camerabin2.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-bz2.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GStreamer Bad Plugins 1.0 Plugins Reference Manual</th>
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19804864"></a><h2>Plugin Information</h2>
+<a name="idp20110448"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20391824"></a><h2>Elements</h2>
+<a name="idp17795808"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-cdxaparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-cdxaparse.html
index 54dfde34..b4874962 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-cdxaparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-cdxaparse.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19059248"></a><h2>Plugin Information</h2>
+<a name="idp21248512"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp21235984"></a><h2>Elements</h2>
+<a name="idp15752512"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-celt.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-celt.html
index ba2cc8dc..c82fa6f9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-celt.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-celt.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19926448"></a><h2>Plugin Information</h2>
+<a name="idp21460272"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp21133072"></a><h2>Elements</h2>
+<a name="idp23194464"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
index ea3e2bc2..b75cbafd 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp16346176"></a><h2>Plugin Information</h2>
+<a name="idp19443424"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20579424"></a><h2>Elements</h2>
+<a name="idp22868288"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
index 8593163b..085892c5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp24257616"></a><h2>Plugin Information</h2>
+<a name="idp23237088"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp22837392"></a><h2>Elements</h2>
+<a name="idp17089472"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
index c41cc76b..57db0fde 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19392416"></a><h2>Plugin Information</h2>
+<a name="idp23220688"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18281616"></a><h2>Elements</h2>
+<a name="idp20130752"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dccp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dccp.html
index dcf73b0a..fbdbaa47 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dccp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dccp.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp23958176"></a><h2>Plugin Information</h2>
+<a name="idp23184560"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20009168"></a><h2>Elements</h2>
+<a name="idp15416544"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
index 872fcf78..de2847c1 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp24290720"></a><h2>Plugin Information</h2>
+<a name="idp21434800"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp17427296"></a><h2>Elements</h2>
+<a name="idp20129680"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dfbvideosink.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dfbvideosink.html
index 12a52f37..1b52d82d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dfbvideosink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dfbvideosink.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp20612944"></a><h2>Plugin Information</h2>
+<a name="idp19096352"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18817840"></a><h2>Elements</h2>
+<a name="idp18390672"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dirac.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dirac.html
index 9b823ac9..1dbf7c52 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dirac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dirac.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp20977728"></a><h2>Plugin Information</h2>
+<a name="idp15462288"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20501344"></a><h2>Elements</h2>
+<a name="idp22706256"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-directdraw.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-directdraw.html
index 69ba8d2a..ae83438b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-directdraw.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-directdraw.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp21763472"></a><h2>Plugin Information</h2>
+<a name="idp23315808"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19101984"></a><h2>Elements</h2>
+<a name="idp17771200"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtmf.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtmf.html
index 2fd8d386..2d482342 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtmf.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtmf.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17551712"></a><h2>Plugin Information</h2>
+<a name="idp17973088"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19058848"></a><h2>Elements</h2>
+<a name="idp15404320"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
index 766cb40e..64f4cabf 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp16376048"></a><h2>Plugin Information</h2>
+<a name="idp23322800"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18693424"></a><h2>Elements</h2>
+<a name="idp19424064"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
index 2650ba53..6c4d3313 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp23977616"></a><h2>Plugin Information</h2>
+<a name="idp16711664"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp21763744"></a><h2>Elements</h2>
+<a name="idp16447472"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
index 978229f0..1a5c071d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp20655712"></a><h2>Plugin Information</h2>
+<a name="idp20307664"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19629952"></a><h2>Elements</h2>
+<a name="idp20458496"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
index 640521b9..11789157 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19681392"></a><h2>Plugin Information</h2>
+<a name="idp19793552"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp24336592"></a><h2>Elements</h2>
+<a name="idp18415696"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
index 9122a68d..711301cc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp24370976"></a><h2>Plugin Information</h2>
+<a name="idp16977872"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp22433328"></a><h2>Elements</h2>
+<a name="idp23754672"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-fbdevsink.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-fbdevsink.html
index 44377eb7..7277deea 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-fbdevsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-fbdevsink.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp24537536"></a><h2>Plugin Information</h2>
+<a name="idp18931072"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp17834976"></a><h2>Elements</h2>
+<a name="idp19225472"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
index 7c8eab6e..6d63e827 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19867840"></a><h2>Plugin Information</h2>
+<a name="idp16517376"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18236432"></a><h2>Elements</h2>
+<a name="idp23339440"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-filter.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-filter.html
index d1c51f6b..5aca6c26 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-filter.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-filter.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp21449008"></a><h2>Plugin Information</h2>
+<a name="idp17937728"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20917440"></a><h2>Elements</h2>
+<a name="idp17437104"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-freeze.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-freeze.html
index 3c20db0d..a88d85a8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-freeze.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-freeze.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17693584"></a><h2>Plugin Information</h2>
+<a name="idp18143744"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp21449424"></a><h2>Elements</h2>
+<a name="idp21391760"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-frei0r.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-frei0r.html
index d92ac0bb..c297b69a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-frei0r.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-frei0r.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17838304"></a><h2>Plugin Information</h2>
+<a name="idp16745536"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19647328"></a><h2>Elements</h2>
+<a name="idp16193328"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
index b25ca16a..6b0bc664 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp24608672"></a><h2>Plugin Information</h2>
+<a name="idp23412832"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19690848"></a><h2>Elements</h2>
+<a name="idp15451552"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
index cb052e4c..d768cc48 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19430304"></a><h2>Plugin Information</h2>
+<a name="idp23714096"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp17917248"></a><h2>Elements</h2>
+<a name="idp19102144"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
index 1c4be44d..c45e071b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp24655120"></a><h2>Plugin Information</h2>
+<a name="idp23688752"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20749552"></a><h2>Elements</h2>
+<a name="idp20360240"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ivfparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ivfparse.html
index 3847db54..0b23f49e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ivfparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ivfparse.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp21411168"></a><h2>Plugin Information</h2>
+<a name="idp15318592"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp17144224"></a><h2>Elements</h2>
+<a name="idp21258160"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
index 1be0a9e2..4e6bd4a3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp24726592"></a><h2>Plugin Information</h2>
+<a name="idp18738768"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18956832"></a><h2>Elements</h2>
+<a name="idp20821248"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-kate.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-kate.html
index cc8b2e78..1fc8098e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-kate.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-kate.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17643472"></a><h2>Plugin Information</h2>
+<a name="idp19591920"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp24642160"></a><h2>Elements</h2>
+<a name="idp23548288"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ladspa.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ladspa.html
index 29596253..283370e5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ladspa.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ladspa.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp21548976"></a><h2>Plugin Information</h2>
+<a name="idp19561008"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20647792"></a><h2>Elements</h2>
+<a name="idp19921056"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-legacyresample.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-legacyresample.html
index 4903e613..283233ab 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-legacyresample.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-legacyresample.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp18698656"></a><h2>Plugin Information</h2>
+<a name="idp17783216"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp17072080"></a><h2>Elements</h2>
+<a name="idp15321984"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-liveadder.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-liveadder.html
index c09b0e68..8e292b1a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-liveadder.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-liveadder.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19588896"></a><h2>Plugin Information</h2>
+<a name="idp19505072"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20286368"></a><h2>Elements</h2>
+<a name="idp17108816"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-lv2.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-lv2.html
index c54dfc16..63c086f9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-lv2.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-lv2.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp22337344"></a><h2>Plugin Information</h2>
+<a name="idp21931008"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp16319904"></a><h2>Elements</h2>
+<a name="idp21368848"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
index d89984b2..fed8b788 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp20917952"></a><h2>Plugin Information</h2>
+<a name="idp19255072"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp25333232"></a><h2>Elements</h2>
+<a name="idp18692896"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
index 0ea451a7..43325ac9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp24954752"></a><h2>Plugin Information</h2>
+<a name="idp18592160"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18194368"></a><h2>Elements</h2>
+<a name="idp18220528"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
index 2cabb1c8..12b10b84 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp18003360"></a><h2>Plugin Information</h2>
+<a name="idp23910752"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19114416"></a><h2>Elements</h2>
+<a name="idp24018448"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
index abc73141..83a89b4c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp25329952"></a><h2>Plugin Information</h2>
+<a name="idp23662496"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp22277408"></a><h2>Elements</h2>
+<a name="idp23996352"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg4videoparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg4videoparse.html
index a7c5f872..393d26fa 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg4videoparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg4videoparse.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17242000"></a><h2>Plugin Information</h2>
+<a name="idp24235872"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp25320400"></a><h2>Elements</h2>
+<a name="idp18998240"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegdemux2.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegdemux2.html
index 6252d974..b0e6f3aa 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegdemux2.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegdemux2.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp22071408"></a><h2>Plugin Information</h2>
+<a name="idp17464528"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20328032"></a><h2>Elements</h2>
+<a name="idp17205728"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
index 8c5f3c4c..3731a8d5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17596304"></a><h2>Plugin Information</h2>
+<a name="idp18603760"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp24898176"></a><h2>Elements</h2>
+<a name="idp19432048"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
index b0eb8a39..c5ad2929 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp23618272"></a><h2>Plugin Information</h2>
+<a name="idp17213072"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20672720"></a><h2>Elements</h2>
+<a name="idp16528864"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
index a97c4ec7..d8b2fec8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp21773152"></a><h2>Plugin Information</h2>
+<a name="idp24249200"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20752832"></a><h2>Elements</h2>
+<a name="idp20516512"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-musepack.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-musepack.html
index 3382f7bd..11d78d11 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-musepack.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-musepack.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17075296"></a><h2>Plugin Information</h2>
+<a name="idp21812064"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp17685008"></a><h2>Elements</h2>
+<a name="idp23901056"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-musicbrainz.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-musicbrainz.html
index 865af464..c462b90e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-musicbrainz.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-musicbrainz.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp18698304"></a><h2>Plugin Information</h2>
+<a name="idp18287168"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp25271984"></a><h2>Elements</h2>
+<a name="idp16911968"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mve.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mve.html
index 3dbf9ded..50d2baa3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mve.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mve.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp16938080"></a><h2>Plugin Information</h2>
+<a name="idp18335856"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20181232"></a><h2>Elements</h2>
+<a name="idp23443632"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mxf.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mxf.html
index 2e0d6918..1ae9b709 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mxf.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mxf.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19432096"></a><h2>Plugin Information</h2>
+<a name="idp19829344"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp25545664"></a><h2>Elements</h2>
+<a name="idp20016448"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-nas.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-nas.html
index 7189b013..7242c276 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-nas.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-nas.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp25052912"></a><h2>Plugin Information</h2>
+<a name="idp24475632"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18898112"></a><h2>Elements</h2>
+<a name="idp17816736"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
index dbe475e6..c8b1c84a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19627776"></a><h2>Plugin Information</h2>
+<a name="idp17785360"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18401824"></a><h2>Elements</h2>
+<a name="idp16753744"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-nsf.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-nsf.html
index ce514fdf..252b7368 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-nsf.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-nsf.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp22288800"></a><h2>Plugin Information</h2>
+<a name="idp16552016"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp22483184"></a><h2>Elements</h2>
+<a name="idp23510000"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-nuvdemux.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-nuvdemux.html
index 5e38325c..913e9e5d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-nuvdemux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-nuvdemux.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp21531984"></a><h2>Plugin Information</h2>
+<a name="idp16178816"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18033728"></a><h2>Elements</h2>
+<a name="idp21372464"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
index 726d6774..066ecebe 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp18103200"></a><h2>Plugin Information</h2>
+<a name="idp22955360"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp25448832"></a><h2>Elements</h2>
+<a name="idp17920992"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
index 3fa03287..05d955bc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp25593744"></a><h2>Plugin Information</h2>
+<a name="idp23529360"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19633840"></a><h2>Elements</h2>
+<a name="idp24519312"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
index 5fb8e3d1..d9c64a01 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp18275360"></a><h2>Plugin Information</h2>
+<a name="idp18944640"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp17656144"></a><h2>Elements</h2>
+<a name="idp22713312"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-real.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-real.html
index d0ee08ae..f529d142 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-real.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-real.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp23766464"></a><h2>Plugin Information</h2>
+<a name="idp16220496"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20303136"></a><h2>Elements</h2>
+<a name="idp25050368"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
index 3f06c36a..20db003f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17645472"></a><h2>Plugin Information</h2>
+<a name="idp19451056"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19014816"></a><h2>Elements</h2>
+<a name="idp18567904"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rsvg.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rsvg.html
index 411fefb5..42b3010f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rsvg.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rsvg.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17291328"></a><h2>Plugin Information</h2>
+<a name="idp16437312"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19077184"></a><h2>Elements</h2>
+<a name="idp16529280"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
index c9b5d6ba..f42429af 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp16361408"></a><h2>Plugin Information</h2>
+<a name="idp21414784"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp17726480"></a><h2>Elements</h2>
+<a name="idp24273664"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtpmux.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtpmux.html
index febc732d..196d1f6e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtpmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtpmux.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp25744432"></a><h2>Plugin Information</h2>
+<a name="idp18993664"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19262656"></a><h2>Elements</h2>
+<a name="idp19392656"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-scaletempo.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-scaletempo.html
index d88eea4b..d07ee1a0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-scaletempo.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-scaletempo.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp22845616"></a><h2>Plugin Information</h2>
+<a name="idp24516320"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19165664"></a><h2>Elements</h2>
+<a name="idp23751728"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdl.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdl.html
index cda92a33..096cffd0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdl.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17709552"></a><h2>Plugin Information</h2>
+<a name="idp20049088"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19337632"></a><h2>Elements</h2>
+<a name="idp19777792"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
index 424375c4..9a28cd96 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17309440"></a><h2>Plugin Information</h2>
+<a name="idp17775104"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp23611840"></a><h2>Elements</h2>
+<a name="idp15622848"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
index 4ffca8f4..3f7beaaf 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp21719472"></a><h2>Plugin Information</h2>
+<a name="idp23261488"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp17386512"></a><h2>Elements</h2>
+<a name="idp24011392"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sndfile.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sndfile.html
index aa14d9ad..ac851c34 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sndfile.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sndfile.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp25674592"></a><h2>Plugin Information</h2>
+<a name="idp21415872"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp16427856"></a><h2>Elements</h2>
+<a name="idp17826704"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
index 93275041..89f53a92 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp25736096"></a><h2>Plugin Information</h2>
+<a name="idp24376464"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp16832848"></a><h2>Elements</h2>
+<a name="idp18694000"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-spcdec.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-spcdec.html
index 1bd073f5..d0f51db7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-spcdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-spcdec.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp25402752"></a><h2>Plugin Information</h2>
+<a name="idp18478576"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp18512720"></a><h2>Elements</h2>
+<a name="idp24695920"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
index 7ae5de81..30fb3adf 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp21773984"></a><h2>Plugin Information</h2>
+<a name="idp20107264"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20009456"></a><h2>Elements</h2>
+<a name="idp16715008"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-stereo.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-stereo.html
index 3d84bdaa..1e438d2a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-stereo.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-stereo.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp18903648"></a><h2>Plugin Information</h2>
+<a name="idp24008368"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp26238464"></a><h2>Elements</h2>
+<a name="idp25298000"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-swfdec.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-swfdec.html
index d5ce9c35..478af024 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-swfdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-swfdec.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp21533632"></a><h2>Plugin Information</h2>
+<a name="idp19858608"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp25523408"></a><h2>Elements</h2>
+<a name="idp24600880"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-timidity.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-timidity.html
index b248fae3..cacfdc62 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-timidity.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-timidity.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19379632"></a><h2>Plugin Information</h2>
+<a name="idp18974432"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp25661984"></a><h2>Elements</h2>
+<a name="idp16972224"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-tta.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-tta.html
index 264e6d97..99825780 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-tta.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-tta.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp19562096"></a><h2>Plugin Information</h2>
+<a name="idp24645808"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp25073792"></a><h2>Elements</h2>
+<a name="idp17755984"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-vcdsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-vcdsrc.html
index 7db5bcfb..817d2015 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-vcdsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-vcdsrc.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp25661120"></a><h2>Plugin Information</h2>
+<a name="idp17367968"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp23961712"></a><h2>Elements</h2>
+<a name="idp18943712"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-videosignal.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-videosignal.html
index 619c8871..f582d1ff 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-videosignal.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-videosignal.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp18102368"></a><h2>Plugin Information</h2>
+<a name="idp18696816"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19156944"></a><h2>Elements</h2>
+<a name="idp25294592"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-vmnc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-vmnc.html
index 771c2c26..1c6bd4b3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-vmnc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-vmnc.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17930320"></a><h2>Plugin Information</h2>
+<a name="idp18695568"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp20216288"></a><h2>Elements</h2>
+<a name="idp24488512"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
index dd1b3f7c..e143c415 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp17152384"></a><h2>Plugin Information</h2>
+<a name="idp16725072"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp22283392"></a><h2>Elements</h2>
+<a name="idp16092288"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
index 23a02ff3..b41d497a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp21692560"></a><h2>Plugin Information</h2>
+<a name="idp21846608"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp25844032"></a><h2>Elements</h2>
+<a name="idp24922832"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-vp8.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-vp8.html
index 4ec2ae3e..0620870a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-vp8.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-vp8.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp25631200"></a><h2>Plugin Information</h2>
+<a name="idp20449152"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp19752080"></a><h2>Elements</h2>
+<a name="idp17798704"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-wildmidi.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-wildmidi.html
index c5d026ae..64d557ce 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-wildmidi.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-wildmidi.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp16857024"></a><h2>Plugin Information</h2>
+<a name="idp23942304"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp22890720"></a><h2>Elements</h2>
+<a name="idp19988992"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-xvid.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-xvid.html
index f618dd1d..4e02e598 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-xvid.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-xvid.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp20582576"></a><h2>Plugin Information</h2>
+<a name="idp16256480"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp26213040"></a><h2>Elements</h2>
+<a name="idp24299392"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
index efa0b716..862dfb90 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp26192048"></a><h2>Plugin Information</h2>
+<a name="idp15750144"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp21102784"></a><h2>Elements</h2>
+<a name="idp18460528"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html b/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html
index f6c42d87..614614e2 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp15596448"></a><h3>Element Information</h3>
+<a name="idp14404464"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp8376944"></a><h3>Element Pads</h3>
+<a name="idp8047744"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rsvgdec.html b/docs/plugins/html/gst-plugins-bad-plugins-rsvgdec.html
index 2900459a..5beef724 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rsvgdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rsvgdec.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp15505408"></a><h3>Element Information</h3>
+<a name="idp14719824"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp7704624"></a><h3>Element Pads</h3>
+<a name="idp9783008"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -133,7 +133,6 @@
gint width, height;
GList *pending_events;
- GstTagList *pending_tags;
gint fps_n, fps_d;
GstClockTime first_timestamp;
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rsvgoverlay.html b/docs/plugins/html/gst-plugins-bad-plugins-rsvgoverlay.html
index 827ae786..42a62920 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rsvgoverlay.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rsvgoverlay.html
@@ -63,7 +63,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7604672"></a><h3>Element Information</h3>
+<a name="idp7110432"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -86,7 +86,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp6414160"></a><h3>Element Pads</h3>
+<a name="idm25200"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
index 18273c0c..ecd231ad 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
@@ -74,7 +74,7 @@ GstRTMPSink implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp15782864"></a><h3>Element Information</h3>
+<a name="idp14699568"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -97,7 +97,7 @@ GstRTMPSink implements
</div>
<hr>
<div class="refsect2">
-<a name="idp15790320"></a><h3>Element Pads</h3>
+<a name="idp14858960"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
index d6d2b0d9..28aa3f1d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
@@ -75,7 +75,7 @@ GstRTMPSrc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp14286480"></a><h3>Element Information</h3>
+<a name="idp14615152"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -98,7 +98,7 @@ GstRTMPSrc implements
</div>
<hr>
<div class="refsect2">
-<a name="idp15966256"></a><h3>Element Pads</h3>
+<a name="idp14622560"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtpdtmfmux.html b/docs/plugins/html/gst-plugins-bad-plugins-rtpdtmfmux.html
index f17073a9..2bee367c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtpdtmfmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtpdtmfmux.html
@@ -78,7 +78,7 @@ DTMF signal can replace the recorded audio while the tone is being sent.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp17143936"></a><h3>Element Information</h3>
+<a name="idp19519216"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -101,7 +101,7 @@ DTMF signal can replace the recorded audio while the tone is being sent.
</div>
<hr>
<div class="refsect2">
-<a name="idp20449792"></a><h3>Element Pads</h3>
+<a name="idp16386048"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtpdtmfsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-rtpdtmfsrc.html
index 729189f5..d67c1674 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtpdtmfsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtpdtmfsrc.html
@@ -169,7 +169,7 @@ READY state, then a "dtmf-event-dropped" message is posted on the
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp18595504"></a><h3>Element Information</h3>
+<a name="idp17553552"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -192,7 +192,7 @@ READY state, then a "dtmf-event-dropped" message is posted on the
</div>
<hr>
<div class="refsect2">
-<a name="idp18602960"></a><h3>Element Pads</h3>
+<a name="idp17561008"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtpmux.html b/docs/plugins/html/gst-plugins-bad-plugins-rtpmux.html
index 40a1d9bd..a24e6915 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtpmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtpmux.html
@@ -73,7 +73,7 @@ muxes into a single stream with a single SSRC.
<p>
</p>
<div class="refsect2">
-<a name="idp19908752"></a><h3>Example pipelines</h3>
+<a name="idp18080528"></a><h3>Example pipelines</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -107,7 +107,7 @@ Last reviewed on 2010-09-30 (0.10.21)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp17382832"></a><h3>Element Information</h3>
+<a name="idp16340960"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -130,7 +130,7 @@ Last reviewed on 2010-09-30 (0.10.21)
</div>
<hr>
<div class="refsect2">
-<a name="idp16291344"></a><h3>Element Pads</h3>
+<a name="idp19805424"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-scaletempo.html b/docs/plugins/html/gst-plugins-bad-plugins-scaletempo.html
index e03bfb98..42e3c00a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-scaletempo.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-scaletempo.html
@@ -77,7 +77,7 @@ Use Sceletempo to apply playback rates without the chipmunk effect.
<p>
</p>
<div class="refsect2">
-<a name="idp16340752"></a><h3>Example pipelines</h3>
+<a name="idp18114816"></a><h3>Example pipelines</h3>
<p>
</p>
<div class="informalexample">
@@ -135,7 +135,7 @@ the algoritm looks.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp19961152"></a><h3>Element Information</h3>
+<a name="idp16152016"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -158,7 +158,7 @@ the algoritm looks.
</div>
<hr>
<div class="refsect2">
-<a name="idp17947072"></a><h3>Element Pads</h3>
+<a name="idp17878848"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-sdlaudiosink.html b/docs/plugins/html/gst-plugins-bad-plugins-sdlaudiosink.html
index d8bfeff9..6be444ea 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-sdlaudiosink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-sdlaudiosink.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp19820224"></a><h3>Element Information</h3>
+<a name="idp19076048"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp18961760"></a><h3>Element Pads</h3>
+<a name="idp19687296"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-sdlvideosink.html b/docs/plugins/html/gst-plugins-bad-plugins-sdlvideosink.html
index d17fc8ae..a133e5a4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-sdlvideosink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-sdlvideosink.html
@@ -61,7 +61,7 @@ GstSDLVideoSink implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp20977200"></a><h3>Element Information</h3>
+<a name="idp17824800"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -84,7 +84,7 @@ GstSDLVideoSink implements
</div>
<hr>
<div class="refsect2">
-<a name="idp19235584"></a><h3>Element Pads</h3>
+<a name="idp16512096"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html b/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
index 7ebb2098..df436b39 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
@@ -93,7 +93,7 @@ PLAYING state.
<p>
</p>
<div class="refsect2">
-<a name="idp21516208"></a><h3>Example launch line</h3>
+<a name="idp20489952"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -115,7 +115,7 @@ Last reviewed on 2007-10-01 (0.10.6)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp21519456"></a><h3>Element Information</h3>
+<a name="idp20493200"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -138,7 +138,7 @@ Last reviewed on 2007-10-01 (0.10.6)
</div>
<hr>
<div class="refsect2">
-<a name="idp18930496"></a><h3>Element Pads</h3>
+<a name="idp17133968"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html b/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
index 794a424a..71425682 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
@@ -79,7 +79,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp16445296"></a><h3>Element Information</h3>
+<a name="idp15767376"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -102,7 +102,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp21262336"></a><h3>Element Pads</h3>
+<a name="idp20223600"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
index f8b0eb4d..02d3962d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
@@ -68,7 +68,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp17854464"></a><h3>Element Information</h3>
+<a name="idp16848992"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -91,7 +91,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp20137360"></a><h3>Element Pads</h3>
+<a name="idp19182224"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-solarize.html b/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
index 4a677880..b44b42e7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
@@ -59,7 +59,7 @@ Solarize does a smart inverse in a video stream in realtime.
<p>
</p>
<div class="refsect2">
-<a name="idp21085488"></a><h3>Example launch line</h3>
+<a name="idp15847296"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -77,7 +77,7 @@ Solarize does a smart inverse in a video stream in realtime.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp17159008"></a><h3>Element Information</h3>
+<a name="idp15960112"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -100,7 +100,7 @@ Solarize does a smart inverse in a video stream in realtime.
</div>
<hr>
<div class="refsect2">
-<a name="idp19294400"></a><h3>Element Pads</h3>
+<a name="idp18130496"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html b/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
index 6bc8d1c1..65a5bc5d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
@@ -70,7 +70,7 @@ right channel to x and y coordinates.
<p>
</p>
<div class="refsect2">
-<a name="idp17603200"></a><h3>Example launch line</h3>
+<a name="idp18761584"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -88,7 +88,7 @@ right channel to x and y coordinates.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp18779280"></a><h3>Element Information</h3>
+<a name="idp16733360"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -111,7 +111,7 @@ right channel to x and y coordinates.
</div>
<hr>
<div class="refsect2">
-<a name="idp16402272"></a><h3>Element Pads</h3>
+<a name="idp16649968"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html b/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
index 0fa929fd..92fda645 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
@@ -62,7 +62,7 @@ frequency spectrum as a series of bars.
<p>
</p>
<div class="refsect2">
-<a name="idp17288992"></a><h3>Example launch line</h3>
+<a name="idp15303456"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -80,7 +80,7 @@ frequency spectrum as a series of bars.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp21082944"></a><h3>Element Information</h3>
+<a name="idp15685136"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -103,7 +103,7 @@ frequency spectrum as a series of bars.
</div>
<hr>
<div class="refsect2">
-<a name="idp20752512"></a><h3>Element Pads</h3>
+<a name="idp17028416"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-speed.html b/docs/plugins/html/gst-plugins-bad-plugins-speed.html
index bc16f378..40bc3aee 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-speed.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-speed.html
@@ -62,7 +62,7 @@ requires a fairly up-to-date gst-plugins-base, as of February 2007).
<p>
</p>
<div class="refsect2">
-<a name="idp20900928"></a><h3>Example launch line</h3>
+<a name="idp18967200"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -83,7 +83,7 @@ Last reviewed on 2007-02-26 (0.10.4.1)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp18802032"></a><h3>Element Information</h3>
+<a name="idp16069824"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -106,7 +106,7 @@ Last reviewed on 2007-02-26 (0.10.4.1)
</div>
<hr>
<div class="refsect2">
-<a name="idp16735040"></a><h3>Element Pads</h3>
+<a name="idp15777856"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-sphere.html b/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
index f8031e82..c44d2098 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
@@ -53,7 +53,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp22002816"></a><h3>Element Information</h3>
+<a name="idp20960528"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -76,7 +76,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp21993792"></a><h3>Element Pads</h3>
+<a name="idp20951504"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-square.html b/docs/plugins/html/gst-plugins-bad-plugins-square.html
index 592da5cd..63e288a7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-square.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-square.html
@@ -55,7 +55,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp22137152"></a><h3>Element Information</h3>
+<a name="idp21100304"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -78,7 +78,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp22130304"></a><h3>Element Pads</h3>
+<a name="idp21093456"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-stereo.html b/docs/plugins/html/gst-plugins-bad-plugins-stereo.html
index c2f52768..1820c3b8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-stereo.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-stereo.html
@@ -57,7 +57,7 @@ Create a wide stereo effect.
<p>
</p>
<div class="refsect2">
-<a name="idp18513344"></a><h3>Example pipelines</h3>
+<a name="idp16004432"></a><h3>Example pipelines</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -75,7 +75,7 @@ Create a wide stereo effect.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp20500992"></a><h3>Element Information</h3>
+<a name="idp15628304"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -98,7 +98,7 @@ Create a wide stereo effect.
</div>
<hr>
<div class="refsect2">
-<a name="idp16328016"></a><h3>Element Pads</h3>
+<a name="idp19631504"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-stretch.html b/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
index 2507de20..a535fb9d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
@@ -53,7 +53,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp22265456"></a><h3>Element Information</h3>
+<a name="idp21228800"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -76,7 +76,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp22256432"></a><h3>Element Pads</h3>
+<a name="idp21219776"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html b/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
index c732b529..9e771e32 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
@@ -62,7 +62,7 @@ out-of phase properties of audio and draws this as clouds of stars.
<p>
</p>
<div class="refsect2">
-<a name="idp20597136"></a><h3>Example launch line</h3>
+<a name="idp18723472"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -80,7 +80,7 @@ out-of phase properties of audio and draws this as clouds of stars.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp19580240"></a><h3>Element Information</h3>
+<a name="idp18742624"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -103,7 +103,7 @@ out-of phase properties of audio and draws this as clouds of stars.
</div>
<hr>
<div class="refsect2">
-<a name="idp20616576"></a><h3>Element Pads</h3>
+<a name="idp15455824"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html b/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
index a8686521..ee83f060 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
@@ -56,7 +56,7 @@ struct <a class="link" href="gst-plugins-bad-plugins-templatematch.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp20393328"></a><h3>Element Information</h3>
+<a name="idp16721792"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -79,7 +79,7 @@ struct <a class="link" href="gst-plugins-bad-plugins-templatematch.
</div>
<hr>
<div class="refsect2">
-<a name="idp20256432"></a><h3>Element Pads</h3>
+<a name="idp21060736"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-tiger.html b/docs/plugins/html/gst-plugins-bad-plugins-tiger.html
index 64f3033f..b0032950 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-tiger.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-tiger.html
@@ -68,7 +68,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp17874992"></a><h3>Element Information</h3>
+<a name="idp17215808"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -91,7 +91,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp18819376"></a><h3>Element Pads</h3>
+<a name="idp18524160"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-timidity.html b/docs/plugins/html/gst-plugins-bad-plugins-timidity.html
index 088b810e..8d109c19 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-timidity.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-timidity.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp21521424"></a><h3>Element Information</h3>
+<a name="idp19017920"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp20969440"></a><h3>Element Pads</h3>
+<a name="idp15356288"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-trm.html b/docs/plugins/html/gst-plugins-bad-plugins-trm.html
index 652f45dd..38a63bcf 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-trm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-trm.html
@@ -54,7 +54,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp19595968"></a><h3>Element Information</h3>
+<a name="idp21124736"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -77,7 +77,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp21148496"></a><h3>Element Pads</h3>
+<a name="idp17328896"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html b/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
index 654b7705..7524d30d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
@@ -45,7 +45,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp22863568"></a><h3>Element Information</h3>
+<a name="idp21825488"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -68,7 +68,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp22854672"></a><h3>Element Pads</h3>
+<a name="idp21816592"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-twirl.html b/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
index 492b2b42..909425e2 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
@@ -53,7 +53,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp22826064"></a><h3>Element Information</h3>
+<a name="idp21789328"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -76,7 +76,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp22817040"></a><h3>Element Pads</h3>
+<a name="idp21780304"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-videoanalyse.html b/docs/plugins/html/gst-plugins-bad-plugins-videoanalyse.html
index f10b4c2e..adb64c85 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-videoanalyse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-videoanalyse.html
@@ -95,7 +95,7 @@ The message's structure contains these fields:
<p>
</p>
<div class="refsect2">
-<a name="idp19723696"></a><h3>Example launch line</h3>
+<a name="idp21722016"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -116,7 +116,7 @@ Last reviewed on 2007-05-30 (0.10.5)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp19726768"></a><h3>Element Information</h3>
+<a name="idp21725088"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -139,7 +139,7 @@ Last reviewed on 2007-05-30 (0.10.5)
</div>
<hr>
<div class="refsect2">
-<a name="idp19734224"></a><h3>Element Pads</h3>
+<a name="idp21732544"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-videodetect.html b/docs/plugins/html/gst-plugins-bad-plugins-videodetect.html
index 979d6acf..685e686b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-videodetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-videodetect.html
@@ -124,7 +124,7 @@ The message's structure contains these fields:
<p>
</p>
<div class="refsect2">
-<a name="idp23138592"></a><h3>Example launch line</h3>
+<a name="idp22105888"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -145,7 +145,7 @@ Last reviewed on 2007-05-30 (0.10.5)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp23141696"></a><h3>Element Information</h3>
+<a name="idp22108992"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -168,7 +168,7 @@ Last reviewed on 2007-05-30 (0.10.5)
</div>
<hr>
<div class="refsect2">
-<a name="idp23149152"></a><h3>Element Pads</h3>
+<a name="idp22116448"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-videomark.html b/docs/plugins/html/gst-plugins-bad-plugins-videomark.html
index a5b9ec8f..9f1c9792 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-videomark.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-videomark.html
@@ -77,7 +77,7 @@ mostly used together with the <a class="link" href="gst-plugins-bad-plugins-vide
<p>
</p>
<div class="refsect2">
-<a name="idp18147808"></a><h3>Example launch line</h3>
+<a name="idp16402784"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -98,7 +98,7 @@ Last reviewed on 2007-06-01 (0.10.6)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp18150880"></a><h3>Element Information</h3>
+<a name="idp16405856"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -121,7 +121,7 @@ Last reviewed on 2007-06-01 (0.10.6)
</div>
<hr>
<div class="refsect2">
-<a name="idp23340928"></a><h3>Element Pads</h3>
+<a name="idp22209904"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html b/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
index e9566ac5..7bf1b7aa 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
@@ -82,7 +82,7 @@ Converts a byte stream into video frames.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp18168672"></a><h3>Element Information</h3>
+<a name="idp16250752"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -105,7 +105,7 @@ Converts a byte stream into video frames.
</div>
<hr>
<div class="refsect2">
-<a name="idp23424048"></a><h3>Element Pads</h3>
+<a name="idp22309152"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html b/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
index 899d462d..063963ed 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
@@ -74,7 +74,7 @@ GstVoAacEnc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp20608016"></a><h3>Element Information</h3>
+<a name="idp19435984"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -97,7 +97,7 @@ GstVoAacEnc implements
</div>
<hr>
<div class="refsect2">
-<a name="idp23298848"></a><h3>Element Pads</h3>
+<a name="idp22480736"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html b/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
index 35f38b87..b47a8527 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
@@ -44,7 +44,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp21402352"></a><h3>Element Information</h3>
+<a name="idp17224560"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -67,7 +67,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp19892288"></a><h3>Element Pads</h3>
+<a name="idp17198976"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-vp8dec.html b/docs/plugins/html/gst-plugins-bad-plugins-vp8dec.html
index 647907f9..a6a206df 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-vp8dec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-vp8dec.html
@@ -70,7 +70,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp16857936"></a><h3>Element Information</h3>
+<a name="idp17533040"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -93,7 +93,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp23551472"></a><h3>Element Pads</h3>
+<a name="idp21908384"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-vp8enc.html b/docs/plugins/html/gst-plugins-bad-plugins-vp8enc.html
index d6c55d38..33749612 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-vp8enc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-vp8enc.html
@@ -97,7 +97,7 @@ GstVP8Enc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp24043680"></a><h3>Element Information</h3>
+<a name="idp23012560"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -120,7 +120,7 @@ GstVP8Enc implements
</div>
<hr>
<div class="refsect2">
-<a name="idp24051136"></a><h3>Element Pads</h3>
+<a name="idp23020016"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html b/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
index 67c5a346..800e7268 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
@@ -55,7 +55,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp22984736"></a><h3>Element Information</h3>
+<a name="idp22540640"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -78,7 +78,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp22977888"></a><h3>Element Pads</h3>
+<a name="idp22533792"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html b/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
index fac9f945..90b1a65b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
@@ -70,7 +70,7 @@ like on an oscilloscope.
<p>
</p>
<div class="refsect2">
-<a name="idp20632544"></a><h3>Example launch line</h3>
+<a name="idp20833904"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -88,7 +88,7 @@ like on an oscilloscope.
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp16745264"></a><h3>Element Information</h3>
+<a name="idp19551168"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -111,7 +111,7 @@ like on an oscilloscope.
</div>
<hr>
<div class="refsect2">
-<a name="idp23841568"></a><h3>Element Pads</h3>
+<a name="idp16267184"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-wildmidi.html b/docs/plugins/html/gst-plugins-bad-plugins-wildmidi.html
index 6405ea49..5fe42c2d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-wildmidi.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-wildmidi.html
@@ -54,7 +54,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp20710032"></a><h3>Element Information</h3>
+<a name="idp19757632"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -77,7 +77,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp20932176"></a><h3>Element Pads</h3>
+<a name="idp15457472"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-zbar.html b/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
index 21cdb5a3..31c4c96b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
@@ -68,7 +68,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp20881008"></a><h3>Element Information</h3>
+<a name="idp17279056"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -91,7 +91,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp23249872"></a><h3>Element Pads</h3>
+<a name="idp22767248"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins.devhelp2 b/docs/plugins/html/gst-plugins-bad-plugins.devhelp2
index 5e2f5413..1393777c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins.devhelp2
+++ b/docs/plugins/html/gst-plugins-bad-plugins.devhelp2
@@ -10,7 +10,6 @@
<sub name="bulge" link="gst-plugins-bad-plugins-bulge.html"/>
<sub name="burn" link="gst-plugins-bad-plugins-burn.html"/>
<sub name="camerabin" link="gst-plugins-bad-plugins-camerabin.html"/>
- <sub name="camerabin2" link="gst-plugins-bad-plugins-camerabin2.html"/>
<sub name="celtdec" link="gst-plugins-bad-plugins-celtdec.html"/>
<sub name="celtenc" link="gst-plugins-bad-plugins-celtenc.html"/>
<sub name="chromium" link="gst-plugins-bad-plugins-chromium.html"/>
@@ -124,8 +123,6 @@
<sub name="assrender" link="gst-plugins-bad-plugins-plugin-assrender.html"/>
<sub name="bayer" link="gst-plugins-bad-plugins-plugin-bayer.html"/>
<sub name="bz2" link="gst-plugins-bad-plugins-plugin-bz2.html"/>
- <sub name="camerabin" link="gst-plugins-bad-plugins-plugin-camerabin.html"/>
- <sub name="camerabin2" link="gst-plugins-bad-plugins-plugin-camerabin2.html"/>
<sub name="cdaudio" link="gst-plugins-bad-plugins-plugin-cdaudio.html"/>
<sub name="cdxaparse" link="gst-plugins-bad-plugins-plugin-cdxaparse.html"/>
<sub name="celt" link="gst-plugins-bad-plugins-plugin-celt.html"/>
@@ -209,138 +206,38 @@
</sub>
</chapters>
<functions>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-aiffparse.html#idp4841792"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-aiffparse.html#idp5886560"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-aiffparse.html#idp6962496"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-aiffparse.html#idp4840960"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-aiffparse.html#idp4838272"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-aiffparse.html#idp6891296"/>
<keyword type="struct" name="struct GstAiffParse" link="gst-plugins-bad-plugins-aiffparse.html#GstAiffParse"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-aiffmux.html#idp6955296"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-aiffmux.html#idp8343296"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-aiffmux.html#idp5724016"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-aiffmux.html#idp8342064"/>
<keyword type="struct" name="struct GstAiffMux" link="gst-plugins-bad-plugins-aiffmux.html#GstAiffMux"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-assrender.html#idp8474096"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-assrender.html#idp6253008"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-assrender.html#idp7638032"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-assrender.html#idp6367808"/>
<keyword type="struct" name="struct GstAssRender" link="gst-plugins-bad-plugins-assrender.html#GstAssRender-struct"/>
<keyword type="property" name="The &quot;embeddedfonts&quot; property" link="gst-plugins-bad-plugins-assrender.html#GstAssRender--embeddedfonts"/>
<keyword type="property" name="The &quot;enable&quot; property" link="gst-plugins-bad-plugins-assrender.html#GstAssRender--enable"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-autoconvert.html#idp7973744"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-autoconvert.html#idp7234816"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-autoconvert.html#idp5909056"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-autoconvert.html#idp7478704"/>
<keyword type="struct" name="struct GstAutoConvert" link="gst-plugins-bad-plugins-autoconvert.html#GstAutoConvert-struct"/>
<keyword type="property" name="The &quot;factories&quot; property" link="gst-plugins-bad-plugins-autoconvert.html#GstAutoConvert--factories"/>
<keyword type="property" name="The &quot;initial-identity&quot; property" link="gst-plugins-bad-plugins-autoconvert.html#GstAutoConvert--initial-identity"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-bulge.html#idp5563952"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-bulge.html#idp5554928"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-bulge.html#idp7086400"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-bulge.html#idp7079040"/>
<keyword type="struct" name="struct GstBulge" link="gst-plugins-bad-plugins-bulge.html#GstBulge"/>
<keyword type="property" name="The &quot;zoom&quot; property" link="gst-plugins-bad-plugins-bulge.html#GstBulge--zoom"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-burn.html#idp9543296"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-burn.html#idp7427984"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-burn.html#idp9401328"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-burn.html#idp7488768"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-burn.html#idp7393776"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-burn.html#idp9047200"/>
<keyword type="struct" name="struct GstBurn" link="gst-plugins-bad-plugins-burn.html#GstBurn"/>
<keyword type="property" name="The &quot;silent&quot; property" link="gst-plugins-bad-plugins-burn.html#GstBurn--silent"/>
<keyword type="property" name="The &quot;adjustment&quot; property" link="gst-plugins-bad-plugins-burn.html#GstBurn--adjustment"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-camerabin.html#idp9780688"/>
- <keyword type="" name="Image capture" link="gst-plugins-bad-plugins-camerabin.html#idp9782448"/>
- <keyword type="" name="Video capture" link="gst-plugins-bad-plugins-camerabin.html#idp9793632"/>
- <keyword type="" name="States" link="gst-plugins-bad-plugins-camerabin.html#idp9801760"/>
- <keyword type="" name="Video and image previews" link="gst-plugins-bad-plugins-camerabin.html#idp9804432"/>
- <keyword type="" name="" link="gst-plugins-bad-plugins-camerabin.html#idp9808512"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-camerabin.html#idp9811184"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-camerabin.html#idp9818592"/>
- <keyword type="struct" name="struct GstCameraBin" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin"/>
- <keyword type="enum" name="enum GstCameraBinMode" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBinMode"/>
- <keyword type="property" name="The &quot;audioenc&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audioenc"/>
- <keyword type="property" name="The &quot;audiosrc&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audiosrc"/>
- <keyword type="property" name="The &quot;filename&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--filename"/>
- <keyword type="property" name="The &quot;filter-caps&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--filter-caps"/>
- <keyword type="property" name="The &quot;imageenc&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--imageenc"/>
- <keyword type="property" name="The &quot;imagepp&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--imagepp"/>
- <keyword type="property" name="The &quot;inputcaps&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--inputcaps"/>
- <keyword type="property" name="The &quot;mode&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--mode"/>
- <keyword type="property" name="The &quot;mute&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--mute"/>
- <keyword type="property" name="The &quot;vfsink&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--vfsink"/>
- <keyword type="property" name="The &quot;videoenc&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videoenc"/>
- <keyword type="property" name="The &quot;videomux&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videomux"/>
- <keyword type="property" name="The &quot;videopp&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videopp"/>
- <keyword type="property" name="The &quot;videosrc&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videosrc"/>
- <keyword type="property" name="The &quot;zoom&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--zoom"/>
- <keyword type="property" name="The &quot;preview-caps&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--preview-caps"/>
- <keyword type="property" name="The &quot;audio-encoder&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audio-encoder"/>
- <keyword type="property" name="The &quot;audio-source&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audio-source"/>
- <keyword type="property" name="The &quot;image-encoder&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-encoder"/>
- <keyword type="property" name="The &quot;image-post-processing&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-post-processing"/>
- <keyword type="property" name="The &quot;video-encoder&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-encoder"/>
- <keyword type="property" name="The &quot;video-muxer&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-muxer"/>
- <keyword type="property" name="The &quot;video-post-processing&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-post-processing"/>
- <keyword type="property" name="The &quot;video-source&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source"/>
- <keyword type="property" name="The &quot;video-source-caps&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source-caps"/>
- <keyword type="property" name="The &quot;viewfinder-sink&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--viewfinder-sink"/>
- <keyword type="property" name="The &quot;flags&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--flags"/>
- <keyword type="property" name="The &quot;block-after-capture&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--block-after-capture"/>
- <keyword type="property" name="The &quot;image-capture-height&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-capture-height"/>
- <keyword type="property" name="The &quot;image-capture-width&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-capture-width"/>
- <keyword type="property" name="The &quot;video-capture-framerate&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-capture-framerate"/>
- <keyword type="property" name="The &quot;video-capture-height&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-capture-height"/>
- <keyword type="property" name="The &quot;video-capture-width&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-capture-width"/>
- <keyword type="property" name="The &quot;video-source-filter&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source-filter"/>
- <keyword type="property" name="The &quot;viewfinder-filter&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--viewfinder-filter"/>
- <keyword type="property" name="The &quot;idle&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--idle"/>
- <keyword type="property" name="The &quot;preview-source-filter&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--preview-source-filter"/>
- <keyword type="property" name="The &quot;ready-for-capture&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--ready-for-capture"/>
- <keyword type="property" name="The &quot;image-formatter&quot; property" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-formatter"/>
- <keyword type="signal" name="The &quot;img-done&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-img-done"/>
- <keyword type="signal" name="The &quot;user-image-res&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-image-res"/>
- <keyword type="signal" name="The &quot;user-pause&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-pause"/>
- <keyword type="signal" name="The &quot;user-res-fps&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-res-fps"/>
- <keyword type="signal" name="The &quot;user-start&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-start"/>
- <keyword type="signal" name="The &quot;user-stop&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-stop"/>
- <keyword type="signal" name="The &quot;capture-pause&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-pause"/>
- <keyword type="signal" name="The &quot;capture-start&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-start"/>
- <keyword type="signal" name="The &quot;capture-stop&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-stop"/>
- <keyword type="signal" name="The &quot;image-done&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-image-done"/>
- <keyword type="signal" name="The &quot;set-image-resolution&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-set-image-resolution"/>
- <keyword type="signal" name="The &quot;set-video-resolution-fps&quot; signal" link="gst-plugins-bad-plugins-camerabin.html#GstCameraBin-set-video-resolution-fps"/>
- <keyword type="" name="Usage" link="gst-plugins-bad-plugins-camerabin2.html#idp10096736"/>
- <keyword type="" name="Customization" link="gst-plugins-bad-plugins-camerabin2.html#idp10113840"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-camerabin2.html#idp10139248"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-camerabin2.html#idp10142576"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-camerabin2.html#idp10149984"/>
- <keyword type="struct" name="struct GstCameraBin2" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2-struct"/>
- <keyword type="property" name="The &quot;audio-capture-caps&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-capture-caps"/>
- <keyword type="property" name="The &quot;audio-capture-supported-caps&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-capture-supported-caps"/>
- <keyword type="property" name="The &quot;audio-src&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-src"/>
- <keyword type="property" name="The &quot;camera-src&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--camera-src"/>
- <keyword type="property" name="The &quot;idle&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--idle"/>
- <keyword type="property" name="The &quot;image-capture-caps&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-caps"/>
- <keyword type="property" name="The &quot;image-capture-encoder&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-encoder"/>
- <keyword type="property" name="The &quot;image-capture-muxer&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-muxer"/>
- <keyword type="property" name="The &quot;image-capture-supported-caps&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-supported-caps"/>
- <keyword type="property" name="The &quot;image-filter&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-filter"/>
- <keyword type="property" name="The &quot;location&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--location"/>
- <keyword type="property" name="The &quot;max-zoom&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--max-zoom"/>
- <keyword type="property" name="The &quot;mode&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--mode"/>
- <keyword type="property" name="The &quot;mute&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--mute"/>
- <keyword type="property" name="The &quot;post-previews&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--post-previews"/>
- <keyword type="property" name="The &quot;preview-caps&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--preview-caps"/>
- <keyword type="property" name="The &quot;preview-filter&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--preview-filter"/>
- <keyword type="property" name="The &quot;video-capture-caps&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-capture-caps"/>
- <keyword type="property" name="The &quot;video-capture-supported-caps&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-capture-supported-caps"/>
- <keyword type="property" name="The &quot;video-filter&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-filter"/>
- <keyword type="property" name="The &quot;video-profile&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-profile"/>
- <keyword type="property" name="The &quot;viewfinder-caps&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-caps"/>
- <keyword type="property" name="The &quot;viewfinder-filter&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-filter"/>
- <keyword type="property" name="The &quot;viewfinder-sink&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-sink"/>
- <keyword type="property" name="The &quot;viewfinder-supported-caps&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-supported-caps"/>
- <keyword type="property" name="The &quot;zoom&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--zoom"/>
- <keyword type="property" name="The &quot;image-profile&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-profile"/>
- <keyword type="property" name="The &quot;audio-source&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-source"/>
- <keyword type="property" name="The &quot;camera-source&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--camera-source"/>
- <keyword type="property" name="The &quot;audio-filter&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-filter"/>
- <keyword type="property" name="The &quot;flags&quot; property" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--flags"/>
- <keyword type="signal" name="The &quot;start-capture&quot; signal" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2-start-capture"/>
- <keyword type="signal" name="The &quot;stop-capture&quot; signal" link="gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2-stop-capture"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-celtdec.html#idp6205440"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-celtdec.html#idp7559488"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-celtdec.html#idp7626160"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-celtdec.html#idp6139488"/>
<keyword type="struct" name="struct GstCeltDec" link="gst-plugins-bad-plugins-celtdec.html#GstCeltDec-struct"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-celtenc.html#idp8208304"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-celtenc.html#idp8215712"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-celtenc.html#idp8105504"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-celtenc.html#idp8112912"/>
<keyword type="struct" name="struct GstCeltEnc" link="gst-plugins-bad-plugins-celtenc.html#GstCeltEnc-struct"/>
<keyword type="property" name="The &quot;bitrate&quot; property" link="gst-plugins-bad-plugins-celtenc.html#GstCeltEnc--bitrate"/>
<keyword type="property" name="The &quot;framesize&quot; property" link="gst-plugins-bad-plugins-celtenc.html#GstCeltEnc--framesize"/>
@@ -349,75 +246,61 @@
<keyword type="property" name="The &quot;max-bitrate&quot; property" link="gst-plugins-bad-plugins-celtenc.html#GstCeltEnc--max-bitrate"/>
<keyword type="property" name="The &quot;prediction&quot; property" link="gst-plugins-bad-plugins-celtenc.html#GstCeltEnc--prediction"/>
<keyword type="property" name="The &quot;start-band&quot; property" link="gst-plugins-bad-plugins-celtenc.html#GstCeltEnc--start-band"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-chromium.html#idp10425344"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-chromium.html#idp5488144"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-chromium.html#idp7977072"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-chromium.html#idp9550528"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-chromium.html#idp6238816"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-chromium.html#idp5281568"/>
<keyword type="typedef" name="GstChromium" link="gst-plugins-bad-plugins-chromium.html#GstChromium"/>
<keyword type="property" name="The &quot;silent&quot; property" link="gst-plugins-bad-plugins-chromium.html#GstChromium--silent"/>
<keyword type="property" name="The &quot;edge-a&quot; property" link="gst-plugins-bad-plugins-chromium.html#GstChromium--edge-a"/>
<keyword type="property" name="The &quot;edge-b&quot; property" link="gst-plugins-bad-plugins-chromium.html#GstChromium--edge-b"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-circle.html#idp8426640"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-circle.html#idp8419792"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-circle.html#idp9947280"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-circle.html#idp9940432"/>
<keyword type="struct" name="struct GstCircle" link="gst-plugins-bad-plugins-circle.html#GstCircle"/>
<keyword type="property" name="The &quot;angle&quot; property" link="gst-plugins-bad-plugins-circle.html#GstCircle--angle"/>
<keyword type="property" name="The &quot;height&quot; property" link="gst-plugins-bad-plugins-circle.html#GstCircle--height"/>
<keyword type="property" name="The &quot;spread-angle&quot; property" link="gst-plugins-bad-plugins-circle.html#GstCircle--spread-angle"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-coloreffects.html#idp5743808"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-coloreffects.html#idp5739776"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-coloreffects.html#idp5734320"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-coloreffects.html#idp10057920"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-coloreffects.html#idp10053888"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-coloreffects.html#idp10048464"/>
<keyword type="struct" name="struct GstColorEffects" link="gst-plugins-bad-plugins-coloreffects.html#GstColorEffects"/>
<keyword type="property" name="The &quot;preset&quot; property" link="gst-plugins-bad-plugins-coloreffects.html#GstColorEffects--preset"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-curlsink.html#idp5765824"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-curlsink.html#idp11061920"/>
- <keyword type="struct" name="struct GstCurlSink" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink"/>
- <keyword type="property" name="The &quot;accept-self-signed&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--accept-self-signed"/>
- <keyword type="property" name="The &quot;content-type&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--content-type"/>
- <keyword type="property" name="The &quot;file-name&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--file-name"/>
- <keyword type="property" name="The &quot;location&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--location"/>
- <keyword type="property" name="The &quot;passwd&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--passwd"/>
- <keyword type="property" name="The &quot;proxy&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy"/>
- <keyword type="property" name="The &quot;proxy-passwd&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy-passwd"/>
- <keyword type="property" name="The &quot;proxy-port&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy-port"/>
- <keyword type="property" name="The &quot;proxy-user&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy-user"/>
- <keyword type="property" name="The &quot;qos-dscp&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--qos-dscp"/>
- <keyword type="property" name="The &quot;timeout&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--timeout"/>
- <keyword type="property" name="The &quot;use-content-length&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--use-content-length"/>
- <keyword type="property" name="The &quot;user&quot; property" link="gst-plugins-bad-plugins-curlsink.html#GstCurlSink--user"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cvdilate.html#idp6334768"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cvdilate.html#idp5429984"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-curlsink.html#idp7790640"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-curlsink.html#idp4834592"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cvdilate.html#idp10222064"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cvdilate.html#idp7769760"/>
<keyword type="struct" name="struct GstCvDilate" link="gst-plugins-bad-plugins-cvdilate.html#GstCvDilate"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cverode.html#idp11010960"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cverode.html#idp5084064"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cverode.html#idp10278128"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cverode.html#idp7360272"/>
<keyword type="struct" name="struct GstCvErode" link="gst-plugins-bad-plugins-cverode.html#GstCvErode"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cvequalizehist.html#idp8727344"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cvequalizehist.html#idp8264416"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cvequalizehist.html#idp7616816"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cvequalizehist.html#idp7646496"/>
<keyword type="struct" name="struct GstCvEqualizeHist" link="gst-plugins-bad-plugins-cvequalizehist.html#GstCvEqualizeHist"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cvlaplace.html#idp6075568"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cvlaplace.html#idp7544864"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cvlaplace.html#idp9376416"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cvlaplace.html#idp6179248"/>
<keyword type="struct" name="struct GstCvLaplace" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace"/>
<keyword type="property" name="The &quot;aperture-size&quot; property" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--aperture-size"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cvsmooth.html#idp4908992"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cvsmooth.html#idp6067376"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cvsmooth.html#idp5211696"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cvsmooth.html#idp6429568"/>
<keyword type="struct" name="struct GstCvSmooth" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth"/>
<keyword type="property" name="The &quot;param1&quot; property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--param1"/>
<keyword type="property" name="The &quot;param2&quot; property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--param2"/>
<keyword type="property" name="The &quot;param3&quot; property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--param3"/>
<keyword type="property" name="The &quot;param4&quot; property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--param4"/>
<keyword type="property" name="The &quot;type&quot; property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--type"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cvsobel.html#idp7497152"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cvsobel.html#idp6597072"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-cvsobel.html#idp9736224"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-cvsobel.html#idp5096304"/>
<keyword type="struct" name="struct GstCvSobel" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel"/>
<keyword type="property" name="The &quot;aperture-size&quot; property" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--aperture-size"/>
<keyword type="property" name="The &quot;x-order&quot; property" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--x-order"/>
<keyword type="property" name="The &quot;y-order&quot; property" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--y-order"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-dataurisrc.html#idp11737152"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dataurisrc.html#idp11740144"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dataurisrc.html#idp11257536"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-dataurisrc.html#idp5308336"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dataurisrc.html#idp10303632"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dataurisrc.html#idp10466336"/>
<keyword type="struct" name="struct GstDataURISrc" link="gst-plugins-bad-plugins-dataurisrc.html#GstDataURISrc-struct"/>
<keyword type="property" name="The &quot;uri&quot; property" link="gst-plugins-bad-plugins-dataurisrc.html#GstDataURISrc--uri"/>
- <keyword type="" name="Example pipeline" link="gst-plugins-bad-plugins-dccpclientsink.html#idp11295040"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dccpclientsink.html#idp11299664"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dccpclientsink.html#idp11307072"/>
+ <keyword type="" name="Example pipeline" link="gst-plugins-bad-plugins-dccpclientsink.html#idp6700336"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dccpclientsink.html#idp6704960"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dccpclientsink.html#idp6712368"/>
<keyword type="struct" name="struct GstDCCPClientSink" link="gst-plugins-bad-plugins-dccpclientsink.html#GstDCCPClientSink"/>
<keyword type="property" name="The &quot;ccid&quot; property" link="gst-plugins-bad-plugins-dccpclientsink.html#GstDCCPClientSink--ccid"/>
<keyword type="property" name="The &quot;close-socket&quot; property" link="gst-plugins-bad-plugins-dccpclientsink.html#GstDCCPClientSink--close-socket"/>
@@ -425,9 +308,9 @@
<keyword type="property" name="The &quot;port&quot; property" link="gst-plugins-bad-plugins-dccpclientsink.html#GstDCCPClientSink--port"/>
<keyword type="property" name="The &quot;sockfd&quot; property" link="gst-plugins-bad-plugins-dccpclientsink.html#GstDCCPClientSink--sockfd"/>
<keyword type="signal" name="The &quot;connected&quot; signal" link="gst-plugins-bad-plugins-dccpclientsink.html#GstDCCPClientSink-connected"/>
- <keyword type="" name="Example pipeline" link="gst-plugins-bad-plugins-dccpclientsrc.html#idp11329728"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dccpclientsrc.html#idp11334320"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dccpclientsrc.html#idp11660352"/>
+ <keyword type="" name="Example pipeline" link="gst-plugins-bad-plugins-dccpclientsrc.html#idp10957024"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dccpclientsrc.html#idp10961664"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dccpclientsrc.html#idp10827728"/>
<keyword type="struct" name="struct GstDCCPClientSrc" link="gst-plugins-bad-plugins-dccpclientsrc.html#GstDCCPClientSrc"/>
<keyword type="property" name="The &quot;caps&quot; property" link="gst-plugins-bad-plugins-dccpclientsrc.html#GstDCCPClientSrc--caps"/>
<keyword type="property" name="The &quot;ccid&quot; property" link="gst-plugins-bad-plugins-dccpclientsrc.html#GstDCCPClientSrc--ccid"/>
@@ -436,9 +319,9 @@
<keyword type="property" name="The &quot;port&quot; property" link="gst-plugins-bad-plugins-dccpclientsrc.html#GstDCCPClientSrc--port"/>
<keyword type="property" name="The &quot;sockfd&quot; property" link="gst-plugins-bad-plugins-dccpclientsrc.html#GstDCCPClientSrc--sockfd"/>
<keyword type="signal" name="The &quot;connected&quot; signal" link="gst-plugins-bad-plugins-dccpclientsrc.html#GstDCCPClientSrc-connected"/>
- <keyword type="" name="Example pipeline" link="gst-plugins-bad-plugins-dccpserversink.html#idp11603296"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dccpserversink.html#idp11607936"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dccpserversink.html#idp11615344"/>
+ <keyword type="" name="Example pipeline" link="gst-plugins-bad-plugins-dccpserversink.html#idp6659888"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dccpserversink.html#idp6664528"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dccpserversink.html#idp6671936"/>
<keyword type="struct" name="struct GstDCCPServerSink" link="gst-plugins-bad-plugins-dccpserversink.html#GstDCCPServerSink"/>
<keyword type="property" name="The &quot;ccid&quot; property" link="gst-plugins-bad-plugins-dccpserversink.html#GstDCCPServerSink--ccid"/>
<keyword type="property" name="The &quot;close-socket&quot; property" link="gst-plugins-bad-plugins-dccpserversink.html#GstDCCPServerSink--close-socket"/>
@@ -446,9 +329,9 @@
<keyword type="property" name="The &quot;sockfd&quot; property" link="gst-plugins-bad-plugins-dccpserversink.html#GstDCCPServerSink--sockfd"/>
<keyword type="property" name="The &quot;wait-connections&quot; property" link="gst-plugins-bad-plugins-dccpserversink.html#GstDCCPServerSink--wait-connections"/>
<keyword type="signal" name="The &quot;connected&quot; signal" link="gst-plugins-bad-plugins-dccpserversink.html#GstDCCPServerSink-connected"/>
- <keyword type="" name="Example pipeline" link="gst-plugins-bad-plugins-dccpserversrc.html#idp11449104"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dccpserversrc.html#idp11453728"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dccpserversrc.html#idp11890448"/>
+ <keyword type="" name="Example pipeline" link="gst-plugins-bad-plugins-dccpserversrc.html#idp10808592"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dccpserversrc.html#idp10813216"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dccpserversrc.html#idp11006336"/>
<keyword type="struct" name="struct GstDCCPServerSrc" link="gst-plugins-bad-plugins-dccpserversrc.html#GstDCCPServerSrc"/>
<keyword type="property" name="The &quot;caps&quot; property" link="gst-plugins-bad-plugins-dccpserversrc.html#GstDCCPServerSrc--caps"/>
<keyword type="property" name="The &quot;ccid&quot; property" link="gst-plugins-bad-plugins-dccpserversrc.html#GstDCCPServerSrc--ccid"/>
@@ -457,8 +340,8 @@
<keyword type="property" name="The &quot;port&quot; property" link="gst-plugins-bad-plugins-dccpserversrc.html#GstDCCPServerSrc--port"/>
<keyword type="property" name="The &quot;sockfd&quot; property" link="gst-plugins-bad-plugins-dccpserversrc.html#GstDCCPServerSrc--sockfd"/>
<keyword type="signal" name="The &quot;connected&quot; signal" link="gst-plugins-bad-plugins-dccpserversrc.html#GstDCCPServerSrc-connected"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dfbvideosink.html#idp11728512"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dfbvideosink.html#idp11625072"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dfbvideosink.html#idp11275024"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dfbvideosink.html#idp11282480"/>
<keyword type="struct" name="struct GstDfbVideoSink" link="gst-plugins-bad-plugins-dfbvideosink.html#GstDfbVideoSink"/>
<keyword type="property" name="The &quot;brightness&quot; property" link="gst-plugins-bad-plugins-dfbvideosink.html#GstDfbVideoSink--brightness"/>
<keyword type="property" name="The &quot;contrast&quot; property" link="gst-plugins-bad-plugins-dfbvideosink.html#GstDfbVideoSink--contrast"/>
@@ -467,37 +350,37 @@
<keyword type="property" name="The &quot;saturation&quot; property" link="gst-plugins-bad-plugins-dfbvideosink.html#GstDfbVideoSink--saturation"/>
<keyword type="property" name="The &quot;surface&quot; property" link="gst-plugins-bad-plugins-dfbvideosink.html#GstDfbVideoSink--surface"/>
<keyword type="property" name="The &quot;vsync&quot; property" link="gst-plugins-bad-plugins-dfbvideosink.html#GstDfbVideoSink--vsync"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-diffuse.html#idp11971696"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-diffuse.html#idp11038096"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-diffuse.html#idp8834240"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-diffuse.html#idp8825216"/>
<keyword type="struct" name="struct GstDiffuse" link="gst-plugins-bad-plugins-diffuse.html#GstDiffuse"/>
<keyword type="property" name="The &quot;scale&quot; property" link="gst-plugins-bad-plugins-diffuse.html#GstDiffuse--scale"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-dilate.html#idp11863232"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dilate.html#idp6867872"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dilate.html#idp8847328"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-dilate.html#idp8901760"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dilate.html#idp9480896"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dilate.html#idp8138368"/>
<keyword type="struct" name="struct GstDilate" link="gst-plugins-bad-plugins-dilate.html#GstDilate"/>
<keyword type="property" name="The &quot;silent&quot; property" link="gst-plugins-bad-plugins-dilate.html#GstDilate--silent"/>
<keyword type="property" name="The &quot;erode&quot; property" link="gst-plugins-bad-plugins-dilate.html#GstDilate--erode"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-directdrawsink.html#idp5177952"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-directdrawsink.html#idp11233056"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-directdrawsink.html#idp8202768"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-directdrawsink.html#idp6642768"/>
<keyword type="struct" name="struct GstDirectDrawSink" link="gst-plugins-bad-plugins-directdrawsink.html#GstDirectDrawSink"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-dodge.html#idp12250064"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dodge.html#idp7441536"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dodge.html#idp8664432"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-dodge.html#idp10083888"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dodge.html#idp5626272"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dodge.html#idp6046144"/>
<keyword type="struct" name="struct GstDodge" link="gst-plugins-bad-plugins-dodge.html#GstDodge"/>
<keyword type="property" name="The &quot;silent&quot; property" link="gst-plugins-bad-plugins-dodge.html#GstDodge--silent"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dtmfdetect.html#idp6395744"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dtmfdetect.html#idp12057264"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dtmfdetect.html#idp9797696"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dtmfdetect.html#idp6247888"/>
<keyword type="struct" name="struct GstDtmfDetect" link="gst-plugins-bad-plugins-dtmfdetect.html#GstDtmfDetect-struct"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dtmfsrc.html#idp12329808"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dtmfsrc.html#idp12337216"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dtmfsrc.html#idp11442544"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dtmfsrc.html#idp11449952"/>
<keyword type="struct" name="struct GstDTMFSrc" link="gst-plugins-bad-plugins-dtmfsrc.html#GstDTMFSrc-struct"/>
<keyword type="property" name="The &quot;interval&quot; property" link="gst-plugins-bad-plugins-dtmfsrc.html#GstDTMFSrc--interval"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dtsdec.html#idp9458400"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dtsdec.html#idp6090768"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dtsdec.html#idp9210480"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dtsdec.html#idp8006336"/>
<keyword type="struct" name="struct GstDtsDec" link="gst-plugins-bad-plugins-dtsdec.html#GstDtsDec-struct"/>
<keyword type="property" name="The &quot;drc&quot; property" link="gst-plugins-bad-plugins-dtsdec.html#GstDtsDec--drc"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dvbsrc.html#idp12705936"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dvbsrc.html#idp12713456"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dvbsrc.html#idp11798240"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dvbsrc.html#idp11805760"/>
<keyword type="struct" name="GstDvbSrc" link="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc"/>
<keyword type="property" name="The &quot;bandwidth&quot; property" link="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc--bandwidth"/>
<keyword type="property" name="The &quot;code-rate-hp&quot; property" link="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc--code-rate-hp"/>
@@ -522,20 +405,20 @@
<keyword type="property" name="The &quot;symbol-rate&quot; property" link="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc--symbol-rate"/>
<keyword type="property" name="The &quot;stats-reporting-interval&quot; property" link="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc--stats-reporting-interval"/>
<keyword type="property" name="The &quot;timeout&quot; property" link="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc--timeout"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-dvdspu.html#idp12533344"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dvdspu.html#idp12310528"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dvdspu.html#idp7064176"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-dvdspu.html#idp11102656"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-dvdspu.html#idp11100448"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-dvdspu.html#idp6584528"/>
<keyword type="struct" name="GstDVDSpu" link="gst-plugins-bad-plugins-dvdspu.html#GstDVDSpu-struct"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-exclusion.html#idp12362240"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-exclusion.html#idp9327248"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-exclusion.html#idp5943904"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-exclusion.html#idp10698448"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-exclusion.html#idp7604400"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-exclusion.html#idp8591568"/>
<keyword type="struct" name="struct GstExclusion" link="gst-plugins-bad-plugins-exclusion.html#GstExclusion"/>
<keyword type="property" name="The &quot;silent&quot; property" link="gst-plugins-bad-plugins-exclusion.html#GstExclusion--silent"/>
<keyword type="property" name="The &quot;factor&quot; property" link="gst-plugins-bad-plugins-exclusion.html#GstExclusion--factor"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-edgedetect.html#idp12316672"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-edgedetect.html#idp6367024"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-faac.html#idp12610752"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-faac.html#idp12942304"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-edgedetect.html#idp10394560"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-edgedetect.html#idp5912208"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-faac.html#idp11376992"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-faac.html#idp11403824"/>
<keyword type="struct" name="struct GstFaac" link="gst-plugins-bad-plugins-faac.html#GstFaac-struct"/>
<keyword type="property" name="The &quot;bitrate&quot; property" link="gst-plugins-bad-plugins-faac.html#GstFaac--bitrate"/>
<keyword type="property" name="The &quot;midside&quot; property" link="gst-plugins-bad-plugins-faac.html#GstFaac--midside"/>
@@ -545,23 +428,23 @@
<keyword type="property" name="The &quot;tns&quot; property" link="gst-plugins-bad-plugins-faac.html#GstFaac--tns"/>
<keyword type="property" name="The &quot;quality&quot; property" link="gst-plugins-bad-plugins-faac.html#GstFaac--quality"/>
<keyword type="property" name="The &quot;rate-control&quot; property" link="gst-plugins-bad-plugins-faac.html#GstFaac--rate-control"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-faad.html#idp7341888"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-faad.html#idp4859936"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-faad.html#idp9286432"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-faad.html#idp9706656"/>
<keyword type="struct" name="GstFaad" link="gst-plugins-bad-plugins-faad.html#GstFaad-struct"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-faceblur.html#idp12875824"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-faceblur.html#idp6817408"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-facedetect.html#idp12913488"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-facedetect.html#idp8512240"/>
- <keyword type="" name="Example pipeline" link="gst-plugins-bad-plugins-festival.html#idp12691152"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-festival.html#idp5497376"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-festival.html#idp11598768"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-faceblur.html#idp10791232"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-faceblur.html#idp6744576"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-facedetect.html#idp11553504"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-facedetect.html#idp7019488"/>
+ <keyword type="" name="Example pipeline" link="gst-plugins-bad-plugins-festival.html#idp11490080"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-festival.html#idp8069680"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-festival.html#idp8346800"/>
<keyword type="struct" name="struct GstFestival" link="gst-plugins-bad-plugins-festival.html#GstFestival"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-fisheye.html#idp13114000"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-fisheye.html#idp13180704"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-fisheye.html#idp12026368"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-fisheye.html#idp12017472"/>
<keyword type="struct" name="struct GstFisheye" link="gst-plugins-bad-plugins-fisheye.html#GstFisheye"/>
- <keyword type="" name="Example launch lines" link="gst-plugins-bad-plugins-fpsdisplaysink.html#idp13445936"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-fpsdisplaysink.html#idp13448912"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-fpsdisplaysink.html#idp13456320"/>
+ <keyword type="" name="Example launch lines" link="gst-plugins-bad-plugins-fpsdisplaysink.html#idp12424480"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-fpsdisplaysink.html#idp12427456"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-fpsdisplaysink.html#idp12434864"/>
<keyword type="struct" name="struct GstFPSDisplaySink" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink-struct"/>
<keyword type="property" name="The &quot;sync&quot; property" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink--sync"/>
<keyword type="property" name="The &quot;text-overlay&quot; property" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink--text-overlay"/>
@@ -575,21 +458,20 @@
<keyword type="property" name="The &quot;last-message&quot; property" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink--last-message"/>
<keyword type="property" name="The &quot;silent&quot; property" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink--silent"/>
<keyword type="signal" name="The &quot;fps-measurements&quot; signal" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink-fps-measurements"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-freeze.html#idp13028016"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-freeze.html#idp9427760"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-freeze.html#idp6426848"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-freeze.html#idp5633376"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-freeze.html#idp10149296"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-freeze.html#idp5639168"/>
<keyword type="struct" name="struct GstFreeze" link="gst-plugins-bad-plugins-freeze.html#GstFreeze"/>
<keyword type="property" name="The &quot;max-buffers&quot; property" link="gst-plugins-bad-plugins-freeze.html#GstFreeze--max-buffers"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-gaussianblur.html#idm19200"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-gaussianblur.html#idp9980272"/>
- <keyword type="typedef" name="GaussBlur" link="gst-plugins-bad-plugins-gaussianblur.html#GaussBlur"/>
- <keyword type="property" name="The &quot;sigma&quot; property" link="gst-plugins-bad-plugins-gaussianblur.html#GaussBlur--sigma"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-ivfparse.html#idp5445344"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-ivfparse.html#idp7273936"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-gaussianblur.html#idp6637280"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-gaussianblur.html#idp9083328"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-gaussianblur.html#idp10762240"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-ivfparse.html#idp12162784"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-ivfparse.html#idp6714560"/>
<keyword type="struct" name="struct GstIvfParse" link="gst-plugins-bad-plugins-ivfparse.html#GstIvfParse"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-jpegparse.html#idp10400096"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-jpegparse.html#idp5887840"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-jpegparse.html#idp13366976"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-jpegparse.html#idp8265280"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-jpegparse.html#idp5713936"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-jpegparse.html#idp12294048"/>
<keyword type="struct" name="struct GstJpegParse" link="gst-plugins-bad-plugins-jpegparse.html#GstJpegParse"/>
<keyword type="struct" name="struct GstJpegParseClass" link="gst-plugins-bad-plugins-jpegparse.html#GstJpegParseClass"/>
<keyword type="macro" name="GST_JPEG_PARSE()" link="gst-plugins-bad-plugins-jpegparse.html#GST-JPEG-PARSE:CAPS"/>
@@ -598,14 +480,14 @@
<keyword type="macro" name="GST_IS_JPEG_PARSE_CLASS()" link="gst-plugins-bad-plugins-jpegparse.html#GST-IS-JPEG-PARSE-CLASS:CAPS"/>
<keyword type="macro" name="GST_TYPE_JPEG_PARSE" link="gst-plugins-bad-plugins-jpegparse.html#GST-TYPE-JPEG-PARSE:CAPS"/>
<keyword type="function" name="gst_jpeg_parse_get_type ()" link="gst-plugins-bad-plugins-jpegparse.html#gst-jpeg-parse-get-type"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-kaleidoscope.html#idp13593792"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-kaleidoscope.html#idp13586944"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-kaleidoscope.html#idp12565872"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-kaleidoscope.html#idp12558128"/>
<keyword type="struct" name="struct GstKaleidoscope" link="gst-plugins-bad-plugins-kaleidoscope.html#GstKaleidoscope"/>
<keyword type="property" name="The &quot;angle&quot; property" link="gst-plugins-bad-plugins-kaleidoscope.html#GstKaleidoscope--angle"/>
<keyword type="property" name="The &quot;angle2&quot; property" link="gst-plugins-bad-plugins-kaleidoscope.html#GstKaleidoscope--angle2"/>
<keyword type="property" name="The &quot;sides&quot; property" link="gst-plugins-bad-plugins-kaleidoscope.html#GstKaleidoscope--sides"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-kateenc.html#idp9007184"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-kateenc.html#idp13672288"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-kateenc.html#idp10290896"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-kateenc.html#idp12277344"/>
<keyword type="struct" name="struct GstKateEnc" link="gst-plugins-bad-plugins-kateenc.html#GstKateEnc"/>
<keyword type="property" name="The &quot;category&quot; property" link="gst-plugins-bad-plugins-kateenc.html#GstKateEnc--category"/>
<keyword type="property" name="The &quot;default-spu-duration&quot; property" link="gst-plugins-bad-plugins-kateenc.html#GstKateEnc--default-spu-duration"/>
@@ -616,54 +498,54 @@
<keyword type="property" name="The &quot;language&quot; property" link="gst-plugins-bad-plugins-kateenc.html#GstKateEnc--language"/>
<keyword type="property" name="The &quot;original-canvas-height&quot; property" link="gst-plugins-bad-plugins-kateenc.html#GstKateEnc--original-canvas-height"/>
<keyword type="property" name="The &quot;original-canvas-width&quot; property" link="gst-plugins-bad-plugins-kateenc.html#GstKateEnc--original-canvas-width"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-katedec.html#idp8260720"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-katedec.html#idp5044400"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-katedec.html#idp7971456"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-katedec.html#idp5429616"/>
<keyword type="struct" name="struct GstKateDec" link="gst-plugins-bad-plugins-katedec.html#GstKateDec"/>
<keyword type="property" name="The &quot;category&quot; property" link="gst-plugins-bad-plugins-katedec.html#GstKateDec--category"/>
<keyword type="property" name="The &quot;language&quot; property" link="gst-plugins-bad-plugins-katedec.html#GstKateDec--language"/>
<keyword type="property" name="The &quot;original-canvas-height&quot; property" link="gst-plugins-bad-plugins-katedec.html#GstKateDec--original-canvas-height"/>
<keyword type="property" name="The &quot;original-canvas-width&quot; property" link="gst-plugins-bad-plugins-katedec.html#GstKateDec--original-canvas-width"/>
<keyword type="property" name="The &quot;remove-markup&quot; property" link="gst-plugins-bad-plugins-katedec.html#GstKateDec--remove-markup"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-kateparse.html#idp13899120"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-kateparse.html#idp6905792"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-kateparse.html#idp12145360"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-kateparse.html#idp6015792"/>
<keyword type="struct" name="struct GstKateParse" link="gst-plugins-bad-plugins-kateparse.html#GstKateParse"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-katetag.html#idp10307056"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-katetag.html#idp9145872"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-katetag.html#idp8746688"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-katetag.html#idp5261472"/>
<keyword type="struct" name="struct GstKateTag" link="gst-plugins-bad-plugins-katetag.html#GstKateTag"/>
<keyword type="property" name="The &quot;category&quot; property" link="gst-plugins-bad-plugins-katetag.html#GstKateTag--category"/>
<keyword type="property" name="The &quot;language&quot; property" link="gst-plugins-bad-plugins-katetag.html#GstKateTag--language"/>
<keyword type="property" name="The &quot;original-canvas-height&quot; property" link="gst-plugins-bad-plugins-katetag.html#GstKateTag--original-canvas-height"/>
<keyword type="property" name="The &quot;original-canvas-width&quot; property" link="gst-plugins-bad-plugins-katetag.html#GstKateTag--original-canvas-width"/>
<keyword type="struct" name="struct GstLADSPA" link="gst-plugins-bad-plugins-ladspa.html#GstLADSPA"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-legacyresample.html#idp14124688"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-legacyresample.html#idp14122384"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-legacyresample.html#idp10356208"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-legacyresample.html#idp12598064"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-legacyresample.html#idp12595760"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-legacyresample.html#idp8200784"/>
<keyword type="struct" name="struct GstLegacyresample" link="gst-plugins-bad-plugins-legacyresample.html#GstLegacyresample"/>
<keyword type="property" name="The &quot;filter-length&quot; property" link="gst-plugins-bad-plugins-legacyresample.html#GstLegacyresample--filter-length"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-liveadder.html#idp14170032"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-liveadder.html#idp7561136"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-liveadder.html#idp12896464"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-liveadder.html#idp6602208"/>
<keyword type="struct" name="struct GstLiveAdder" link="gst-plugins-bad-plugins-liveadder.html#GstLiveAdder"/>
<keyword type="property" name="The &quot;latency&quot; property" link="gst-plugins-bad-plugins-liveadder.html#GstLiveAdder--latency"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-marble.html#idp14267072"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-marble.html#idp14261232"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-marble.html#idp13267968"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-marble.html#idp13220848"/>
<keyword type="struct" name="struct GstMarble" link="gst-plugins-bad-plugins-marble.html#GstMarble"/>
<keyword type="property" name="The &quot;amount&quot; property" link="gst-plugins-bad-plugins-marble.html#GstMarble--amount"/>
<keyword type="property" name="The &quot;turbulence&quot; property" link="gst-plugins-bad-plugins-marble.html#GstMarble--turbulence"/>
<keyword type="property" name="The &quot;x-scale&quot; property" link="gst-plugins-bad-plugins-marble.html#GstMarble--x-scale"/>
<keyword type="property" name="The &quot;y-scale&quot; property" link="gst-plugins-bad-plugins-marble.html#GstMarble--y-scale"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mimenc.html#idp13427552"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mimenc.html#idp5539104"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mimenc.html#idp13113008"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mimenc.html#idp6938768"/>
<keyword type="struct" name="struct GstMimEnc" link="gst-plugins-bad-plugins-mimenc.html#GstMimEnc"/>
<keyword type="property" name="The &quot;paused-mode&quot; property" link="gst-plugins-bad-plugins-mimenc.html#GstMimEnc--paused-mode"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mimdec.html#idp14174864"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mimdec.html#idp6620816"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mimdec.html#idp13187936"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mimdec.html#idp7947808"/>
<keyword type="struct" name="struct GstMimDec" link="gst-plugins-bad-plugins-mimdec.html#GstMimDec"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mirror.html#idp14531456"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mirror.html#idp14522432"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mirror.html#idp13226784"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mirror.html#idp13106624"/>
<keyword type="struct" name="struct GstMirror" link="gst-plugins-bad-plugins-mirror.html#GstMirror"/>
<keyword type="property" name="The &quot;mode&quot; property" link="gst-plugins-bad-plugins-mirror.html#GstMirror--mode"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-modplug.html#idp14424352"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-modplug.html#idp14431808"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-modplug.html#idp13335440"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-modplug.html#idp13609216"/>
<keyword type="struct" name="GstModPlug" link="gst-plugins-bad-plugins-modplug.html#GstModPlug-struct"/>
<keyword type="property" name="The &quot;megabass&quot; property" link="gst-plugins-bad-plugins-modplug.html#GstModPlug--megabass"/>
<keyword type="property" name="The &quot;megabass-amount&quot; property" link="gst-plugins-bad-plugins-modplug.html#GstModPlug--megabass-amount"/>
@@ -677,8 +559,8 @@
<keyword type="property" name="The &quot;surround&quot; property" link="gst-plugins-bad-plugins-modplug.html#GstModPlug--surround"/>
<keyword type="property" name="The &quot;surround-delay&quot; property" link="gst-plugins-bad-plugins-modplug.html#GstModPlug--surround-delay"/>
<keyword type="property" name="The &quot;surround-depth&quot; property" link="gst-plugins-bad-plugins-modplug.html#GstModPlug--surround-depth"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mpeg2enc.html#idp15025840"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mpeg2enc.html#idp15033248"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mpeg2enc.html#idp13982464"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mpeg2enc.html#idp13989872"/>
<keyword type="struct" name="GstMpeg2enc" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc"/>
<keyword type="property" name="The &quot;altscan-mpeg2&quot; property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--altscan-mpeg2"/>
<keyword type="property" name="The &quot;aspect&quot; property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--aspect"/>
@@ -714,8 +596,8 @@
<keyword type="property" name="The &quot;sequence-length&quot; property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--sequence-length"/>
<keyword type="property" name="The &quot;unit-coeff-elim&quot; property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--unit-coeff-elim"/>
<keyword type="property" name="The &quot;vcd-still-size&quot; property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--vcd-still-size"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mplex.html#idp14588816"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mplex.html#idp10970832"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mplex.html#idp13754672"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mplex.html#idp12700352"/>
<keyword type="struct" name="GstMplex" link="gst-plugins-bad-plugins-mplex.html#GstMplex"/>
<keyword type="property" name="The &quot;bufsize&quot; property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--bufsize"/>
<keyword type="property" name="The &quot;format&quot; property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--format"/>
@@ -724,8 +606,8 @@
<keyword type="property" name="The &quot;sector-size&quot; property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--sector-size"/>
<keyword type="property" name="The &quot;system-headers&quot; property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--system-headers"/>
<keyword type="property" name="The &quot;vbr&quot; property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--vbr"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mythtvsrc.html#idp14759584"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mythtvsrc.html#idp14766992"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mythtvsrc.html#idp13585072"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mythtvsrc.html#idp13592480"/>
<keyword type="struct" name="struct GstMythtvSrc" link="gst-plugins-bad-plugins-mythtvsrc.html#GstMythtvSrc"/>
<keyword type="property" name="The &quot;location&quot; property" link="gst-plugins-bad-plugins-mythtvsrc.html#GstMythtvSrc--location"/>
<keyword type="property" name="The &quot;mythtv-channel&quot; property" link="gst-plugins-bad-plugins-mythtvsrc.html#GstMythtvSrc--mythtv-channel"/>
@@ -734,24 +616,24 @@
<keyword type="property" name="The &quot;mythtv-live-chainid&quot; property" link="gst-plugins-bad-plugins-mythtvsrc.html#GstMythtvSrc--mythtv-live-chainid"/>
<keyword type="property" name="The &quot;mythtv-live-id&quot; property" link="gst-plugins-bad-plugins-mythtvsrc.html#GstMythtvSrc--mythtv-live-id"/>
<keyword type="property" name="The &quot;mythtv-version&quot; property" link="gst-plugins-bad-plugins-mythtvsrc.html#GstMythtvSrc--mythtv-version"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-mxfdemux.html#idp7425280"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mxfdemux.html#idp7152432"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mxfdemux.html#idp15396000"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-mxfdemux.html#idp6294608"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mxfdemux.html#idp4853168"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mxfdemux.html#idp14341856"/>
<keyword type="struct" name="struct GstMXFDemux" link="gst-plugins-bad-plugins-mxfdemux.html#GstMXFDemux"/>
<keyword type="property" name="The &quot;package&quot; property" link="gst-plugins-bad-plugins-mxfdemux.html#GstMXFDemux--package"/>
<keyword type="property" name="The &quot;max-drift&quot; property" link="gst-plugins-bad-plugins-mxfdemux.html#GstMXFDemux--max-drift"/>
<keyword type="property" name="The &quot;structure&quot; property" link="gst-plugins-bad-plugins-mxfdemux.html#GstMXFDemux--structure"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-mxfmux.html#idp14917824"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mxfmux.html#idp14915328"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mxfmux.html#idp14909248"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-mxfmux.html#idp14394112"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-mxfmux.html#idp14391616"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-mxfmux.html#idp13878592"/>
<keyword type="struct" name="GstMXFMux" link="gst-plugins-bad-plugins-mxfmux.html#GstMXFMux"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-nuvdemux.html#idp15270672"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-nuvdemux.html#idp14651376"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-nuvdemux.html#idp15477344"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-nuvdemux.html#idp14203808"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-nuvdemux.html#idp13570480"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-nuvdemux.html#idp13908848"/>
<keyword type="struct" name="GstNuvDemux" link="gst-plugins-bad-plugins-nuvdemux.html#GstNuvDemux"/>
- <keyword type="" name="Example pipelines" link="gst-plugins-bad-plugins-pcapparse.html#idp15607264"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-pcapparse.html#idp15610096"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-pcapparse.html#idp15442128"/>
+ <keyword type="" name="Example pipelines" link="gst-plugins-bad-plugins-pcapparse.html#idp14422352"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-pcapparse.html#idp14496336"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-pcapparse.html#idp14503744"/>
<keyword type="struct" name="struct GstPcapParse" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse-struct"/>
<keyword type="property" name="The &quot;dst-ip&quot; property" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--dst-ip"/>
<keyword type="property" name="The &quot;dst-port&quot; property" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--dst-port"/>
@@ -759,18 +641,18 @@
<keyword type="property" name="The &quot;src-port&quot; property" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--src-port"/>
<keyword type="property" name="The &quot;caps&quot; property" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--caps"/>
<keyword type="property" name="The &quot;ts-offset&quot; property" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--ts-offset"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-pinch.html#idp15730944"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-pinch.html#idp15721920"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-pinch.html#idp14473088"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-pinch.html#idp14222880"/>
<keyword type="struct" name="struct GstPinch" link="gst-plugins-bad-plugins-pinch.html#GstPinch"/>
<keyword type="property" name="The &quot;intensity&quot; property" link="gst-plugins-bad-plugins-pinch.html#GstPinch--intensity"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-pyramidsegment.html#idp15596448"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-pyramidsegment.html#idp8376944"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-pyramidsegment.html#idp14404464"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-pyramidsegment.html#idp8047744"/>
<keyword type="struct" name="struct GstPinch" link="gst-plugins-bad-plugins-pyramidsegment.html#GstPinch"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rsvgdec.html#idp15505408"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rsvgdec.html#idp7704624"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rsvgdec.html#idp14719824"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rsvgdec.html#idp9783008"/>
<keyword type="struct" name="struct GstRsvgDec" link="gst-plugins-bad-plugins-rsvgdec.html#GstRsvgDec"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rsvgoverlay.html#idp7604672"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rsvgoverlay.html#idp6414160"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rsvgoverlay.html#idp7110432"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rsvgoverlay.html#idm25200"/>
<keyword type="struct" name="struct GstRsvgOverlay" link="gst-plugins-bad-plugins-rsvgoverlay.html#GstRsvgOverlay"/>
<keyword type="property" name="The &quot;data&quot; property" link="gst-plugins-bad-plugins-rsvgoverlay.html#GstRsvgOverlay--data"/>
<keyword type="property" name="The &quot;fit-to-frame&quot; property" link="gst-plugins-bad-plugins-rsvgoverlay.html#GstRsvgOverlay--fit-to-frame"/>
@@ -783,24 +665,24 @@
<keyword type="property" name="The &quot;width-relative&quot; property" link="gst-plugins-bad-plugins-rsvgoverlay.html#GstRsvgOverlay--width-relative"/>
<keyword type="property" name="The &quot;x-relative&quot; property" link="gst-plugins-bad-plugins-rsvgoverlay.html#GstRsvgOverlay--x-relative"/>
<keyword type="property" name="The &quot;y-relative&quot; property" link="gst-plugins-bad-plugins-rsvgoverlay.html#GstRsvgOverlay--y-relative"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtmpsink.html#idp15782864"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtmpsink.html#idp15790320"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtmpsink.html#idp14699568"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtmpsink.html#idp14858960"/>
<keyword type="struct" name="struct GstRTMPSink" link="gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink-struct"/>
<keyword type="property" name="The &quot;location&quot; property" link="gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink--location"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtmpsrc.html#idp14286480"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtmpsrc.html#idp15966256"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtmpsrc.html#idp14615152"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtmpsrc.html#idp14622560"/>
<keyword type="struct" name="struct GstRTMPSrc" link="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc-struct"/>
<keyword type="property" name="The &quot;location&quot; property" link="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc--location"/>
- <keyword type="" name="Example pipelines" link="gst-plugins-bad-plugins-rtpmux.html#idp5060656"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtpmux.html#idp15954832"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtpmux.html#idp15831968"/>
+ <keyword type="" name="Example pipelines" link="gst-plugins-bad-plugins-rtpmux.html#idp6285792"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtpmux.html#idp14949488"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtpmux.html#idp14445040"/>
<keyword type="struct" name="struct GstRTPMux" link="gst-plugins-bad-plugins-rtpmux.html#GstRTPMux-struct"/>
<keyword type="property" name="The &quot;seqnum&quot; property" link="gst-plugins-bad-plugins-rtpmux.html#GstRTPMux--seqnum"/>
<keyword type="property" name="The &quot;seqnum-offset&quot; property" link="gst-plugins-bad-plugins-rtpmux.html#GstRTPMux--seqnum-offset"/>
<keyword type="property" name="The &quot;ssrc&quot; property" link="gst-plugins-bad-plugins-rtpmux.html#GstRTPMux--ssrc"/>
<keyword type="property" name="The &quot;timestamp-offset&quot; property" link="gst-plugins-bad-plugins-rtpmux.html#GstRTPMux--timestamp-offset"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtpdtmfsrc.html#idp18595504"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtpdtmfsrc.html#idp18602960"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtpdtmfsrc.html#idp17553552"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtpdtmfsrc.html#idp17561008"/>
<keyword type="struct" name="struct GstRTPDTMFSrc" link="gst-plugins-bad-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc-struct"/>
<keyword type="property" name="The &quot;clock-rate&quot; property" link="gst-plugins-bad-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--clock-rate"/>
<keyword type="property" name="The &quot;interval&quot; property" link="gst-plugins-bad-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--interval"/>
@@ -811,36 +693,36 @@
<keyword type="property" name="The &quot;ssrc&quot; property" link="gst-plugins-bad-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--ssrc"/>
<keyword type="property" name="The &quot;timestamp&quot; property" link="gst-plugins-bad-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--timestamp"/>
<keyword type="property" name="The &quot;timestamp-offset&quot; property" link="gst-plugins-bad-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--timestamp-offset"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtpdtmfmux.html#idp17143936"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtpdtmfmux.html#idp20449792"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtpdtmfmux.html#idp19519216"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtpdtmfmux.html#idp16386048"/>
<keyword type="struct" name="struct GstRTPDTMFMux" link="gst-plugins-bad-plugins-rtpdtmfmux.html#GstRTPDTMFMux-struct"/>
<keyword type="signal" name="The &quot;locking&quot; signal" link="gst-plugins-bad-plugins-rtpdtmfmux.html#GstRTPDTMFMux-locking"/>
<keyword type="signal" name="The &quot;unlocked&quot; signal" link="gst-plugins-bad-plugins-rtpdtmfmux.html#GstRTPDTMFMux-unlocked"/>
- <keyword type="" name="Example pipelines" link="gst-plugins-bad-plugins-rtpmux.html#idp19908752"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtpmux.html#idp17382832"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtpmux.html#idp16291344"/>
+ <keyword type="" name="Example pipelines" link="gst-plugins-bad-plugins-rtpmux.html#idp18080528"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-rtpmux.html#idp16340960"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-rtpmux.html#idp19805424"/>
<keyword type="struct" name="struct GstRTPMux" link="gst-plugins-bad-plugins-rtpmux.html#GstRTPMux-struct"/>
<keyword type="property" name="The &quot;seqnum&quot; property" link="gst-plugins-bad-plugins-rtpmux.html#GstRTPMux--seqnum"/>
<keyword type="property" name="The &quot;seqnum-offset&quot; property" link="gst-plugins-bad-plugins-rtpmux.html#GstRTPMux--seqnum-offset"/>
<keyword type="property" name="The &quot;ssrc&quot; property" link="gst-plugins-bad-plugins-rtpmux.html#GstRTPMux--ssrc"/>
<keyword type="property" name="The &quot;timestamp-offset&quot; property" link="gst-plugins-bad-plugins-rtpmux.html#GstRTPMux--timestamp-offset"/>
- <keyword type="" name="Example pipelines" link="gst-plugins-bad-plugins-scaletempo.html#idp16340752"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-scaletempo.html#idp19961152"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-scaletempo.html#idp17947072"/>
+ <keyword type="" name="Example pipelines" link="gst-plugins-bad-plugins-scaletempo.html#idp18114816"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-scaletempo.html#idp16152016"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-scaletempo.html#idp17878848"/>
<keyword type="struct" name="struct GstScaletempo" link="gst-plugins-bad-plugins-scaletempo.html#GstScaletempo-struct"/>
<keyword type="property" name="The &quot;overlap&quot; property" link="gst-plugins-bad-plugins-scaletempo.html#GstScaletempo--overlap"/>
<keyword type="property" name="The &quot;rate&quot; property" link="gst-plugins-bad-plugins-scaletempo.html#GstScaletempo--rate"/>
<keyword type="property" name="The &quot;search&quot; property" link="gst-plugins-bad-plugins-scaletempo.html#GstScaletempo--search"/>
<keyword type="property" name="The &quot;stride&quot; property" link="gst-plugins-bad-plugins-scaletempo.html#GstScaletempo--stride"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-sdlaudiosink.html#idp19820224"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-sdlaudiosink.html#idp18961760"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-sdlaudiosink.html#idp19076048"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-sdlaudiosink.html#idp19687296"/>
<keyword type="struct" name="struct GstSDLAudioSink" link="gst-plugins-bad-plugins-sdlaudiosink.html#GstSDLAudioSink"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-sdlvideosink.html#idp20977200"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-sdlvideosink.html#idp19235584"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-sdlvideosink.html#idp17824800"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-sdlvideosink.html#idp16512096"/>
<keyword type="struct" name="struct GstSDLVideoSink" link="gst-plugins-bad-plugins-sdlvideosink.html#GstSDLVideoSink"/>
<keyword type="property" name="The &quot;fullscreen&quot; property" link="gst-plugins-bad-plugins-sdlvideosink.html#GstSDLVideoSink--fullscreen"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-shmsink.html#idp16445296"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-shmsink.html#idp21262336"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-shmsink.html#idp15767376"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-shmsink.html#idp20223600"/>
<keyword type="struct" name="struct GstShmSink" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink-struct"/>
<keyword type="property" name="The &quot;perms&quot; property" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink--perms"/>
<keyword type="property" name="The &quot;shm-size&quot; property" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink--shm-size"/>
@@ -849,74 +731,74 @@
<keyword type="property" name="The &quot;buffer-time&quot; property" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink--buffer-time"/>
<keyword type="signal" name="The &quot;client-connected&quot; signal" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink-client-connected"/>
<keyword type="signal" name="The &quot;client-disconnected&quot; signal" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink-client-disconnected"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-shmsrc.html#idp17854464"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-shmsrc.html#idp20137360"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-shmsrc.html#idp16848992"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-shmsrc.html#idp19182224"/>
<keyword type="struct" name="struct GstShmSrc" link="gst-plugins-bad-plugins-shmsrc.html#GstShmSrc-struct"/>
<keyword type="property" name="The &quot;is-live&quot; property" link="gst-plugins-bad-plugins-shmsrc.html#GstShmSrc--is-live"/>
<keyword type="property" name="The &quot;socket-path&quot; property" link="gst-plugins-bad-plugins-shmsrc.html#GstShmSrc--socket-path"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-sdpdemux.html#idp21516208"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-sdpdemux.html#idp21519456"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-sdpdemux.html#idp18930496"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-sdpdemux.html#idp20489952"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-sdpdemux.html#idp20493200"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-sdpdemux.html#idp17133968"/>
<keyword type="struct" name="struct GstSDPDemux" link="gst-plugins-bad-plugins-sdpdemux.html#GstSDPDemux-struct"/>
<keyword type="property" name="The &quot;debug&quot; property" link="gst-plugins-bad-plugins-sdpdemux.html#GstSDPDemux--debug"/>
<keyword type="property" name="The &quot;latency&quot; property" link="gst-plugins-bad-plugins-sdpdemux.html#GstSDPDemux--latency"/>
<keyword type="property" name="The &quot;timeout&quot; property" link="gst-plugins-bad-plugins-sdpdemux.html#GstSDPDemux--timeout"/>
<keyword type="property" name="The &quot;redirect&quot; property" link="gst-plugins-bad-plugins-sdpdemux.html#GstSDPDemux--redirect"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-solarize.html#idp21085488"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-solarize.html#idp17159008"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-solarize.html#idp19294400"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-solarize.html#idp15847296"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-solarize.html#idp15960112"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-solarize.html#idp18130496"/>
<keyword type="struct" name="struct GstSolarize" link="gst-plugins-bad-plugins-solarize.html#GstSolarize"/>
<keyword type="property" name="The &quot;silent&quot; property" link="gst-plugins-bad-plugins-solarize.html#GstSolarize--silent"/>
<keyword type="property" name="The &quot;end&quot; property" link="gst-plugins-bad-plugins-solarize.html#GstSolarize--end"/>
<keyword type="property" name="The &quot;start&quot; property" link="gst-plugins-bad-plugins-solarize.html#GstSolarize--start"/>
<keyword type="property" name="The &quot;threshold&quot; property" link="gst-plugins-bad-plugins-solarize.html#GstSolarize--threshold"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-spacescope.html#idp17603200"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-spacescope.html#idp18779280"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-spacescope.html#idp16402272"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-spacescope.html#idp18761584"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-spacescope.html#idp16733360"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-spacescope.html#idp16649968"/>
<keyword type="struct" name="struct GstSpaceScope" link="gst-plugins-bad-plugins-spacescope.html#GstSpaceScope-struct"/>
<keyword type="property" name="The &quot;style&quot; property" link="gst-plugins-bad-plugins-spacescope.html#GstSpaceScope--style"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-spectrascope.html#idp17288992"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-spectrascope.html#idp21082944"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-spectrascope.html#idp20752512"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-spectrascope.html#idp15303456"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-spectrascope.html#idp15685136"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-spectrascope.html#idp17028416"/>
<keyword type="struct" name="struct GstSpectraScope" link="gst-plugins-bad-plugins-spectrascope.html#GstSpectraScope-struct"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-synaescope.html#idp20597136"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-synaescope.html#idp19580240"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-synaescope.html#idp20616576"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-synaescope.html#idp18723472"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-synaescope.html#idp18742624"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-synaescope.html#idp15455824"/>
<keyword type="struct" name="struct GstSynaeScope" link="gst-plugins-bad-plugins-synaescope.html#GstSynaeScope-struct"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-speed.html#idp20900928"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-speed.html#idp18802032"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-speed.html#idp16735040"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-speed.html#idp18967200"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-speed.html#idp16069824"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-speed.html#idp15777856"/>
<keyword type="struct" name="struct GstSpeed" link="gst-plugins-bad-plugins-speed.html#GstSpeed"/>
<keyword type="property" name="The &quot;speed&quot; property" link="gst-plugins-bad-plugins-speed.html#GstSpeed--speed"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-sphere.html#idp22002816"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-sphere.html#idp21993792"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-sphere.html#idp20960528"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-sphere.html#idp20951504"/>
<keyword type="struct" name="struct GstSphere" link="gst-plugins-bad-plugins-sphere.html#GstSphere"/>
<keyword type="property" name="The &quot;refraction&quot; property" link="gst-plugins-bad-plugins-sphere.html#GstSphere--refraction"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-square.html#idp22137152"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-square.html#idp22130304"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-square.html#idp21100304"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-square.html#idp21093456"/>
<keyword type="struct" name="struct GstSquare" link="gst-plugins-bad-plugins-square.html#GstSquare"/>
<keyword type="property" name="The &quot;height&quot; property" link="gst-plugins-bad-plugins-square.html#GstSquare--height"/>
<keyword type="property" name="The &quot;width&quot; property" link="gst-plugins-bad-plugins-square.html#GstSquare--width"/>
<keyword type="property" name="The &quot;zoom&quot; property" link="gst-plugins-bad-plugins-square.html#GstSquare--zoom"/>
- <keyword type="" name="Example pipelines" link="gst-plugins-bad-plugins-stereo.html#idp18513344"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-stereo.html#idp20500992"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-stereo.html#idp16328016"/>
+ <keyword type="" name="Example pipelines" link="gst-plugins-bad-plugins-stereo.html#idp16004432"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-stereo.html#idp15628304"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-stereo.html#idp19631504"/>
<keyword type="struct" name="struct GstStereo" link="gst-plugins-bad-plugins-stereo.html#GstStereo"/>
<keyword type="property" name="The &quot;active&quot; property" link="gst-plugins-bad-plugins-stereo.html#GstStereo--active"/>
<keyword type="property" name="The &quot;stereo&quot; property" link="gst-plugins-bad-plugins-stereo.html#GstStereo--stereo"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-stretch.html#idp22265456"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-stretch.html#idp22256432"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-stretch.html#idp21228800"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-stretch.html#idp21219776"/>
<keyword type="struct" name="struct GstStretch" link="gst-plugins-bad-plugins-stretch.html#GstStretch"/>
<keyword type="property" name="The &quot;intensity&quot; property" link="gst-plugins-bad-plugins-stretch.html#GstStretch--intensity"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-templatematch.html#idp20393328"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-templatematch.html#idp20256432"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-templatematch.html#idp16721792"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-templatematch.html#idp21060736"/>
<keyword type="struct" name="struct GstSynaeScope" link="gst-plugins-bad-plugins-templatematch.html#GstSynaeScope-struct"/>
<keyword type="struct" name="struct GstTemplateMatch" link="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch"/>
<keyword type="property" name="The &quot;display&quot; property" link="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch--display"/>
<keyword type="property" name="The &quot;method&quot; property" link="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch--method"/>
<keyword type="property" name="The &quot;template&quot; property" link="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch--template"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-opencvtextoverlay.html#idp20939920"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-opencvtextoverlay.html#idp22290016"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-opencvtextoverlay.html#idp15268176"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-opencvtextoverlay.html#idp21128416"/>
<keyword type="struct" name="GstNuvDemux" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstNuvDemux"/>
<keyword type="struct" name="struct GstOpencvTextOverlay" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay"/>
<keyword type="property" name="The &quot;colorB&quot; property" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay--colorB"/>
@@ -928,8 +810,8 @@
<keyword type="property" name="The &quot;width&quot; property" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay--width"/>
<keyword type="property" name="The &quot;xpos&quot; property" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay--xpos"/>
<keyword type="property" name="The &quot;ypos&quot; property" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay--ypos"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-tiger.html#idp17874992"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-tiger.html#idp18819376"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-tiger.html#idp17215808"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-tiger.html#idp18524160"/>
<keyword type="struct" name="struct GstKateTiger" link="gst-plugins-bad-plugins-tiger.html#GstKateTiger"/>
<keyword type="property" name="The &quot;category&quot; property" link="gst-plugins-bad-plugins-tiger.html#GstKateTiger--category"/>
<keyword type="property" name="The &quot;default-background-alpha&quot; property" link="gst-plugins-bad-plugins-tiger.html#GstKateTiger--default-background-alpha"/>
@@ -947,29 +829,29 @@
<keyword type="property" name="The &quot;original-canvas-height&quot; property" link="gst-plugins-bad-plugins-tiger.html#GstKateTiger--original-canvas-height"/>
<keyword type="property" name="The &quot;original-canvas-width&quot; property" link="gst-plugins-bad-plugins-tiger.html#GstKateTiger--original-canvas-width"/>
<keyword type="property" name="The &quot;quality&quot; property" link="gst-plugins-bad-plugins-tiger.html#GstKateTiger--quality"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-timidity.html#idp21521424"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-timidity.html#idp20969440"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-timidity.html#idp19017920"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-timidity.html#idp15356288"/>
<keyword type="struct" name="struct GstTimidity" link="gst-plugins-bad-plugins-timidity.html#GstTimidity"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-trm.html#idp19595968"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-trm.html#idp21148496"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-trm.html#idp21124736"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-trm.html#idp17328896"/>
<keyword type="struct" name="struct GstTRM" link="gst-plugins-bad-plugins-trm.html#GstTRM"/>
<keyword type="property" name="The &quot;proxy-address&quot; property" link="gst-plugins-bad-plugins-trm.html#GstTRM--proxy-address"/>
<keyword type="property" name="The &quot;proxy-port&quot; property" link="gst-plugins-bad-plugins-trm.html#GstTRM--proxy-port"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-tunnel.html#idp22863568"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-tunnel.html#idp22854672"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-tunnel.html#idp21825488"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-tunnel.html#idp21816592"/>
<keyword type="struct" name="struct GstTunnel" link="gst-plugins-bad-plugins-tunnel.html#GstTunnel"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-twirl.html#idp22826064"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-twirl.html#idp22817040"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-twirl.html#idp21789328"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-twirl.html#idp21780304"/>
<keyword type="struct" name="struct GstTwirl" link="gst-plugins-bad-plugins-twirl.html#GstTwirl"/>
<keyword type="property" name="The &quot;angle&quot; property" link="gst-plugins-bad-plugins-twirl.html#GstTwirl--angle"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-videoanalyse.html#idp19723696"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-videoanalyse.html#idp19726768"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-videoanalyse.html#idp19734224"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-videoanalyse.html#idp21722016"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-videoanalyse.html#idp21725088"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-videoanalyse.html#idp21732544"/>
<keyword type="struct" name="struct GstVideoAnalyse" link="gst-plugins-bad-plugins-videoanalyse.html#GstVideoAnalyse"/>
<keyword type="property" name="The &quot;message&quot; property" link="gst-plugins-bad-plugins-videoanalyse.html#GstVideoAnalyse--message"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-videodetect.html#idp23138592"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-videodetect.html#idp23141696"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-videodetect.html#idp23149152"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-videodetect.html#idp22105888"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-videodetect.html#idp22108992"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-videodetect.html#idp22116448"/>
<keyword type="struct" name="struct GstVideoDetect" link="gst-plugins-bad-plugins-videodetect.html#GstVideoDetect"/>
<keyword type="property" name="The &quot;message&quot; property" link="gst-plugins-bad-plugins-videodetect.html#GstVideoDetect--message"/>
<keyword type="property" name="The &quot;pattern-count&quot; property" link="gst-plugins-bad-plugins-videodetect.html#GstVideoDetect--pattern-count"/>
@@ -980,9 +862,9 @@
<keyword type="property" name="The &quot;bottom-offset&quot; property" link="gst-plugins-bad-plugins-videodetect.html#GstVideoDetect--bottom-offset"/>
<keyword type="property" name="The &quot;left-offset&quot; property" link="gst-plugins-bad-plugins-videodetect.html#GstVideoDetect--left-offset"/>
<keyword type="property" name="The &quot;pattern-center&quot; property" link="gst-plugins-bad-plugins-videodetect.html#GstVideoDetect--pattern-center"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-videomark.html#idp18147808"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-videomark.html#idp18150880"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-videomark.html#idp23340928"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-videomark.html#idp16402784"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-videomark.html#idp16405856"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-videomark.html#idp22209904"/>
<keyword type="struct" name="struct GstVideoMark" link="gst-plugins-bad-plugins-videomark.html#GstVideoMark"/>
<keyword type="property" name="The &quot;enabled&quot; property" link="gst-plugins-bad-plugins-videomark.html#GstVideoMark--enabled"/>
<keyword type="property" name="The &quot;pattern-count&quot; property" link="gst-plugins-bad-plugins-videomark.html#GstVideoMark--pattern-count"/>
@@ -993,8 +875,8 @@
<keyword type="property" name="The &quot;bottom-offset&quot; property" link="gst-plugins-bad-plugins-videomark.html#GstVideoMark--bottom-offset"/>
<keyword type="property" name="The &quot;left-offset&quot; property" link="gst-plugins-bad-plugins-videomark.html#GstVideoMark--left-offset"/>
<keyword type="property" name="The &quot;pattern-data-uint64&quot; property" link="gst-plugins-bad-plugins-videomark.html#GstVideoMark--pattern-data-uint64"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-videoparse.html#idp18168672"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-videoparse.html#idp23424048"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-videoparse.html#idp16250752"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-videoparse.html#idp22309152"/>
<keyword type="struct" name="struct GstVideoParse" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse-struct"/>
<keyword type="property" name="The &quot;alpha-mask&quot; property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--alpha-mask"/>
<keyword type="property" name="The &quot;blue-mask&quot; property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--blue-mask"/>
@@ -1010,37 +892,37 @@
<keyword type="property" name="The &quot;width&quot; property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--width"/>
<keyword type="property" name="The &quot;interlaced&quot; property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--interlaced"/>
<keyword type="property" name="The &quot;top-field-first&quot; property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--top-field-first"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-waterripple.html#idp22984736"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-waterripple.html#idp22977888"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-waterripple.html#idp22540640"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-waterripple.html#idp22533792"/>
<keyword type="struct" name="struct GstWaterRipple" link="gst-plugins-bad-plugins-waterripple.html#GstWaterRipple"/>
<keyword type="property" name="The &quot;amplitude&quot; property" link="gst-plugins-bad-plugins-waterripple.html#GstWaterRipple--amplitude"/>
<keyword type="property" name="The &quot;phase&quot; property" link="gst-plugins-bad-plugins-waterripple.html#GstWaterRipple--phase"/>
<keyword type="property" name="The &quot;wavelength&quot; property" link="gst-plugins-bad-plugins-waterripple.html#GstWaterRipple--wavelength"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-wildmidi.html#idp20710032"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-wildmidi.html#idp20932176"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-wildmidi.html#idp19757632"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-wildmidi.html#idp15457472"/>
<keyword type="struct" name="struct GstWildmidi" link="gst-plugins-bad-plugins-wildmidi.html#GstWildmidi"/>
<keyword type="property" name="The &quot;high-quality&quot; property" link="gst-plugins-bad-plugins-wildmidi.html#GstWildmidi--high-quality"/>
<keyword type="property" name="The &quot;linear-volume&quot; property" link="gst-plugins-bad-plugins-wildmidi.html#GstWildmidi--linear-volume"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-zbar.html#idp20881008"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-zbar.html#idp23249872"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-zbar.html#idp17279056"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-zbar.html#idp22767248"/>
<keyword type="struct" name="struct GstZBar" link="gst-plugins-bad-plugins-zbar.html#GstZBar-struct"/>
<keyword type="property" name="The &quot;message&quot; property" link="gst-plugins-bad-plugins-zbar.html#GstZBar--message"/>
<keyword type="property" name="The &quot;cache&quot; property" link="gst-plugins-bad-plugins-zbar.html#GstZBar--cache"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-voaacenc.html#idp20608016"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-voaacenc.html#idp23298848"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-voaacenc.html#idp19435984"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-voaacenc.html#idp22480736"/>
<keyword type="struct" name="struct GstVoAacEnc" link="gst-plugins-bad-plugins-voaacenc.html#GstVoAacEnc-struct"/>
<keyword type="property" name="The &quot;bitrate&quot; property" link="gst-plugins-bad-plugins-voaacenc.html#GstVoAacEnc--bitrate"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-voamrwbenc.html#idp21402352"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-voamrwbenc.html#idp19892288"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-vp8dec.html#idp16857936"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-vp8dec.html#idp23551472"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-voamrwbenc.html#idp17224560"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-voamrwbenc.html#idp17198976"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-vp8dec.html#idp17533040"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-vp8dec.html#idp21908384"/>
<keyword type="struct" name="struct GstVP8Dec" link="gst-plugins-bad-plugins-vp8dec.html#GstVP8Dec-struct"/>
<keyword type="property" name="The &quot;deblocking-level&quot; property" link="gst-plugins-bad-plugins-vp8dec.html#GstVP8Dec--deblocking-level"/>
<keyword type="property" name="The &quot;noise-level&quot; property" link="gst-plugins-bad-plugins-vp8dec.html#GstVP8Dec--noise-level"/>
<keyword type="property" name="The &quot;post-processing&quot; property" link="gst-plugins-bad-plugins-vp8dec.html#GstVP8Dec--post-processing"/>
<keyword type="property" name="The &quot;post-processing-flags&quot; property" link="gst-plugins-bad-plugins-vp8dec.html#GstVP8Dec--post-processing-flags"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-vp8enc.html#idp24043680"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-vp8enc.html#idp24051136"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-vp8enc.html#idp23012560"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-vp8enc.html#idp23020016"/>
<keyword type="struct" name="struct GstVP8Enc" link="gst-plugins-bad-plugins-vp8enc.html#GstVP8Enc-struct"/>
<keyword type="property" name="The &quot;bitrate&quot; property" link="gst-plugins-bad-plugins-vp8enc.html#GstVP8Enc--bitrate"/>
<keyword type="property" name="The &quot;error-resilient&quot; property" link="gst-plugins-bad-plugins-vp8enc.html#GstVP8Enc--error-resilient"/>
@@ -1065,9 +947,9 @@
<keyword type="property" name="The &quot;static-threshold&quot; property" link="gst-plugins-bad-plugins-vp8enc.html#GstVP8Enc--static-threshold"/>
<keyword type="property" name="The &quot;token-parts&quot; property" link="gst-plugins-bad-plugins-vp8enc.html#GstVP8Enc--token-parts"/>
<keyword type="property" name="The &quot;tune&quot; property" link="gst-plugins-bad-plugins-vp8enc.html#GstVP8Enc--tune"/>
- <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-wavescope.html#idp20632544"/>
- <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-wavescope.html#idp16745264"/>
- <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-wavescope.html#idp23841568"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-bad-plugins-wavescope.html#idp20833904"/>
+ <keyword type="" name="Element Information" link="gst-plugins-bad-plugins-wavescope.html#idp19551168"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-bad-plugins-wavescope.html#idp16267184"/>
<keyword type="struct" name="struct GstWaveScope" link="gst-plugins-bad-plugins-wavescope.html#GstWaveScope-struct"/>
<keyword type="property" name="The &quot;style&quot; property" link="gst-plugins-bad-plugins-wavescope.html#GstWaveScope--style"/>
<keyword type="struct" name="GstPhotography" link="GstPhotography.html#GstPhotography-struct"/>
@@ -1122,7 +1004,5 @@
<keyword type="property" name="The &quot;image-preview-supported-caps&quot; property" link="GstPhotography.html#GstPhotography--image-preview-supported-caps"/>
<keyword type="property" name="The &quot;noise-reduction&quot; property" link="GstPhotography.html#GstPhotography--noise-reduction"/>
<keyword type="property" name="The &quot;zoom&quot; property" link="GstPhotography.html#GstPhotography--zoom"/>
- <keyword type="constant" name="MODE_IMAGE" link="gst-plugins-bad-plugins-camerabin.html#MODE-IMAGE:CAPS"/>
- <keyword type="constant" name="MODE_VIDEO" link="gst-plugins-bad-plugins-camerabin.html#MODE-VIDEO:CAPS"/>
</functions>
</book>
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index a6c07bb6..2d2e3942 100644
--- a/docs/plugins/html/index.html
+++ b/docs/plugins/html/index.html
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Bad Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for GStreamer Bad Plugins 1.0 (0.11.90)
+ for GStreamer Bad Plugins 1.0 (0.11.90.1)
The latest version of this documentation can be found on-line at
<a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/</a>.
</p></div>
@@ -44,10 +44,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-burn.html">burn</a></span><span class="refpurpose"> — Burn adjusts the colors in the video signal.</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-camerabin.html">camerabin</a></span><span class="refpurpose"> — Handle lot of features present in DSC</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-camerabin2.html">camerabin2</a></span><span class="refpurpose"> — CameraBin2</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-camerabin.html">camerabin</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-celtdec.html">celtdec</a></span><span class="refpurpose"> — decode celt streams to audio</span>
@@ -386,12 +383,6 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-bz2.html">bz2</a></span><span class="refpurpose"> — <a name="plugin-bz2"></a>Compress or decompress streams</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-camerabin.html">camerabin</a></span><span class="refpurpose"> — <a name="plugin-camerabin"></a>High level api for DC (Digital Camera) application</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-camerabin2.html">camerabin2</a></span><span class="refpurpose"> — <a name="plugin-camerabin2"></a>camerabin2</span>
-</dt>
-<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-cdaudio.html">cdaudio</a></span><span class="refpurpose"> — <a name="plugin-cdaudio"></a>Play CD audio through the CD Drive</span>
</dt>
<dt>
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
index 9490b376..05715dde 100644
--- a/docs/plugins/html/index.sgml
+++ b/docs/plugins/html/index.sgml
@@ -51,113 +51,8 @@
<ANCHOR id="GstBurn--adjustment" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-burn.html#GstBurn--adjustment">
<ANCHOR id="gst-plugins-bad-plugins-camerabin" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html">
<ANCHOR id="gst-plugins-bad-plugins-camerabin.synopsis" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#gst-plugins-bad-plugins-camerabin.synopsis">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin.implemented-interfaces" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#gst-plugins-bad-plugins-camerabin.implemented-interfaces">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#gst-plugins-bad-plugins-camerabin.properties">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin.signals" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#gst-plugins-bad-plugins-camerabin.signals">
<ANCHOR id="gst-plugins-bad-plugins-camerabin.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#gst-plugins-bad-plugins-camerabin.description">
<ANCHOR id="gst-plugins-bad-plugins-camerabin.details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#gst-plugins-bad-plugins-camerabin.details">
-<ANCHOR id="GstCameraBin" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin">
-<ANCHOR id="GstCameraBinMode" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBinMode">
-<ANCHOR id="MODE-IMAGE:CAPS" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#MODE-IMAGE:CAPS">
-<ANCHOR id="MODE-VIDEO:CAPS" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#MODE-VIDEO:CAPS">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin.property-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#gst-plugins-bad-plugins-camerabin.property-details">
-<ANCHOR id="GstCameraBin--audioenc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audioenc">
-<ANCHOR id="GstCameraBin--audiosrc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audiosrc">
-<ANCHOR id="GstCameraBin--filename" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--filename">
-<ANCHOR id="GstCameraBin--filter-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--filter-caps">
-<ANCHOR id="GstCameraBin--imageenc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--imageenc">
-<ANCHOR id="GstCameraBin--imagepp" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--imagepp">
-<ANCHOR id="GstCameraBin--inputcaps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--inputcaps">
-<ANCHOR id="GstCameraBin--mode" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--mode">
-<ANCHOR id="GstCameraBin--mute" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--mute">
-<ANCHOR id="GstCameraBin--vfsink" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--vfsink">
-<ANCHOR id="GstCameraBin--videoenc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videoenc">
-<ANCHOR id="GstCameraBin--videomux" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videomux">
-<ANCHOR id="GstCameraBin--videopp" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videopp">
-<ANCHOR id="GstCameraBin--videosrc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--videosrc">
-<ANCHOR id="GstCameraBin--zoom" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--zoom">
-<ANCHOR id="GstCameraBin--preview-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--preview-caps">
-<ANCHOR id="GstCameraBin--audio-encoder" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audio-encoder">
-<ANCHOR id="GstCameraBin--audio-source" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--audio-source">
-<ANCHOR id="GstCameraBin--image-encoder" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-encoder">
-<ANCHOR id="GstCameraBin--image-post-processing" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-post-processing">
-<ANCHOR id="GstCameraBin--video-encoder" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-encoder">
-<ANCHOR id="GstCameraBin--video-muxer" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-muxer">
-<ANCHOR id="GstCameraBin--video-post-processing" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-post-processing">
-<ANCHOR id="GstCameraBin--video-source" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source">
-<ANCHOR id="GstCameraBin--video-source-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source-caps">
-<ANCHOR id="GstCameraBin--viewfinder-sink" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--viewfinder-sink">
-<ANCHOR id="GstCameraBin--flags" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--flags">
-<ANCHOR id="GstCameraBin--block-after-capture" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--block-after-capture">
-<ANCHOR id="GstCameraBin--image-capture-height" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-capture-height">
-<ANCHOR id="GstCameraBin--image-capture-width" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-capture-width">
-<ANCHOR id="GstCameraBin--video-capture-framerate" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-capture-framerate">
-<ANCHOR id="GstCameraBin--video-capture-height" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-capture-height">
-<ANCHOR id="GstCameraBin--video-capture-width" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-capture-width">
-<ANCHOR id="GstCameraBin--video-source-filter" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--video-source-filter">
-<ANCHOR id="GstCameraBin--viewfinder-filter" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--viewfinder-filter">
-<ANCHOR id="GstCameraBin--idle" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--idle">
-<ANCHOR id="GstCameraBin--preview-source-filter" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--preview-source-filter">
-<ANCHOR id="GstCameraBin--ready-for-capture" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--ready-for-capture">
-<ANCHOR id="GstCameraBin--image-formatter" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin--image-formatter">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin.signal-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#gst-plugins-bad-plugins-camerabin.signal-details">
-<ANCHOR id="GstCameraBin-img-done" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-img-done">
-<ANCHOR id="GstCameraBin-user-image-res" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-image-res">
-<ANCHOR id="GstCameraBin-user-pause" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-pause">
-<ANCHOR id="GstCameraBin-user-res-fps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-res-fps">
-<ANCHOR id="GstCameraBin-user-start" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-start">
-<ANCHOR id="GstCameraBin-user-stop" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-user-stop">
-<ANCHOR id="GstCameraBin-capture-pause" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-pause">
-<ANCHOR id="GstCameraBin-capture-start" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-start">
-<ANCHOR id="GstCameraBin-capture-stop" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-capture-stop">
-<ANCHOR id="GstCameraBin-image-done" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-image-done">
-<ANCHOR id="GstCameraBin-set-image-resolution" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-set-image-resolution">
-<ANCHOR id="GstCameraBin-set-video-resolution-fps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin.html#GstCameraBin-set-video-resolution-fps">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin2" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin2.synopsis" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#gst-plugins-bad-plugins-camerabin2.synopsis">
-<ANCHOR id="GstCameraBin2" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin2.object-hierarchy" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#gst-plugins-bad-plugins-camerabin2.object-hierarchy">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin2.implemented-interfaces" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#gst-plugins-bad-plugins-camerabin2.implemented-interfaces">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin2.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#gst-plugins-bad-plugins-camerabin2.properties">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin2.signals" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#gst-plugins-bad-plugins-camerabin2.signals">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin2.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#gst-plugins-bad-plugins-camerabin2.description">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin2.details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#gst-plugins-bad-plugins-camerabin2.details">
-<ANCHOR id="GstCameraBin2-struct" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2-struct">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin2.property-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#gst-plugins-bad-plugins-camerabin2.property-details">
-<ANCHOR id="GstCameraBin2--audio-capture-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-capture-caps">
-<ANCHOR id="GstCameraBin2--audio-capture-supported-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-capture-supported-caps">
-<ANCHOR id="GstCameraBin2--audio-src" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-src">
-<ANCHOR id="GstCameraBin2--camera-src" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--camera-src">
-<ANCHOR id="GstCameraBin2--idle" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--idle">
-<ANCHOR id="GstCameraBin2--image-capture-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-caps">
-<ANCHOR id="GstCameraBin2--image-capture-encoder" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-encoder">
-<ANCHOR id="GstCameraBin2--image-capture-muxer" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-muxer">
-<ANCHOR id="GstCameraBin2--image-capture-supported-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-capture-supported-caps">
-<ANCHOR id="GstCameraBin2--image-filter" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-filter">
-<ANCHOR id="GstCameraBin2--location" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--location">
-<ANCHOR id="GstCameraBin2--max-zoom" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--max-zoom">
-<ANCHOR id="GstCameraBin2--mode" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--mode">
-<ANCHOR id="GstCameraBin2--mute" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--mute">
-<ANCHOR id="GstCameraBin2--post-previews" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--post-previews">
-<ANCHOR id="GstCameraBin2--preview-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--preview-caps">
-<ANCHOR id="GstCameraBin2--preview-filter" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--preview-filter">
-<ANCHOR id="GstCameraBin2--video-capture-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-capture-caps">
-<ANCHOR id="GstCameraBin2--video-capture-supported-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-capture-supported-caps">
-<ANCHOR id="GstCameraBin2--video-filter" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-filter">
-<ANCHOR id="GstCameraBin2--video-profile" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--video-profile">
-<ANCHOR id="GstCameraBin2--viewfinder-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-caps">
-<ANCHOR id="GstCameraBin2--viewfinder-filter" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-filter">
-<ANCHOR id="GstCameraBin2--viewfinder-sink" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-sink">
-<ANCHOR id="GstCameraBin2--viewfinder-supported-caps" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--viewfinder-supported-caps">
-<ANCHOR id="GstCameraBin2--zoom" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--zoom">
-<ANCHOR id="GstCameraBin2--image-profile" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--image-profile">
-<ANCHOR id="GstCameraBin2--audio-source" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-source">
-<ANCHOR id="GstCameraBin2--camera-source" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--camera-source">
-<ANCHOR id="GstCameraBin2--audio-filter" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--audio-filter">
-<ANCHOR id="GstCameraBin2--flags" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2--flags">
-<ANCHOR id="gst-plugins-bad-plugins-camerabin2.signal-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#gst-plugins-bad-plugins-camerabin2.signal-details">
-<ANCHOR id="GstCameraBin2-start-capture" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2-start-capture">
-<ANCHOR id="GstCameraBin2-stop-capture" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-camerabin2.html#GstCameraBin2-stop-capture">
<ANCHOR id="gst-plugins-bad-plugins-celtdec" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-celtdec.html">
<ANCHOR id="gst-plugins-bad-plugins-celtdec.synopsis" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-celtdec.html#gst-plugins-bad-plugins-celtdec.synopsis">
<ANCHOR id="GstCeltDec" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-celtdec.html#GstCeltDec">
@@ -212,24 +107,8 @@
<ANCHOR id="GstColorEffects--preset" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-coloreffects.html#GstColorEffects--preset">
<ANCHOR id="gst-plugins-bad-plugins-curlsink" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html">
<ANCHOR id="gst-plugins-bad-plugins-curlsink.synopsis" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#gst-plugins-bad-plugins-curlsink.synopsis">
-<ANCHOR id="gst-plugins-bad-plugins-curlsink.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#gst-plugins-bad-plugins-curlsink.properties">
<ANCHOR id="gst-plugins-bad-plugins-curlsink.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#gst-plugins-bad-plugins-curlsink.description">
<ANCHOR id="gst-plugins-bad-plugins-curlsink.details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#gst-plugins-bad-plugins-curlsink.details">
-<ANCHOR id="GstCurlSink" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink">
-<ANCHOR id="gst-plugins-bad-plugins-curlsink.property-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#gst-plugins-bad-plugins-curlsink.property-details">
-<ANCHOR id="GstCurlSink--accept-self-signed" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--accept-self-signed">
-<ANCHOR id="GstCurlSink--content-type" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--content-type">
-<ANCHOR id="GstCurlSink--file-name" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--file-name">
-<ANCHOR id="GstCurlSink--location" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--location">
-<ANCHOR id="GstCurlSink--passwd" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--passwd">
-<ANCHOR id="GstCurlSink--proxy" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy">
-<ANCHOR id="GstCurlSink--proxy-passwd" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy-passwd">
-<ANCHOR id="GstCurlSink--proxy-port" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy-port">
-<ANCHOR id="GstCurlSink--proxy-user" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--proxy-user">
-<ANCHOR id="GstCurlSink--qos-dscp" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--qos-dscp">
-<ANCHOR id="GstCurlSink--timeout" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--timeout">
-<ANCHOR id="GstCurlSink--use-content-length" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--use-content-length">
-<ANCHOR id="GstCurlSink--user" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-curlsink.html#GstCurlSink--user">
<ANCHOR id="gst-plugins-bad-plugins-cvdilate" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvdilate.html">
<ANCHOR id="gst-plugins-bad-plugins-cvdilate.synopsis" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvdilate.html#gst-plugins-bad-plugins-cvdilate.synopsis">
<ANCHOR id="gst-plugins-bad-plugins-cvdilate.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvdilate.html#gst-plugins-bad-plugins-cvdilate.description">
@@ -552,12 +431,8 @@
<ANCHOR id="GstFreeze--max-buffers" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-freeze.html#GstFreeze--max-buffers">
<ANCHOR id="gst-plugins-bad-plugins-gaussianblur" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-gaussianblur.html">
<ANCHOR id="gst-plugins-bad-plugins-gaussianblur.synopsis" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-gaussianblur.html#gst-plugins-bad-plugins-gaussianblur.synopsis">
-<ANCHOR id="gst-plugins-bad-plugins-gaussianblur.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-gaussianblur.html#gst-plugins-bad-plugins-gaussianblur.properties">
<ANCHOR id="gst-plugins-bad-plugins-gaussianblur.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-gaussianblur.html#gst-plugins-bad-plugins-gaussianblur.description">
<ANCHOR id="gst-plugins-bad-plugins-gaussianblur.details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-gaussianblur.html#gst-plugins-bad-plugins-gaussianblur.details">
-<ANCHOR id="GaussBlur" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-gaussianblur.html#GaussBlur">
-<ANCHOR id="gst-plugins-bad-plugins-gaussianblur.property-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-gaussianblur.html#gst-plugins-bad-plugins-gaussianblur.property-details">
-<ANCHOR id="GaussBlur--sigma" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-gaussianblur.html#GaussBlur--sigma">
<ANCHOR id="gst-plugins-bad-plugins-ivfparse" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-ivfparse.html">
<ANCHOR id="gst-plugins-bad-plugins-ivfparse.synopsis" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-ivfparse.html#gst-plugins-bad-plugins-ivfparse.synopsis">
<ANCHOR id="gst-plugins-bad-plugins-ivfparse.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-ivfparse.html#gst-plugins-bad-plugins-ivfparse.description">
@@ -1341,10 +1216,6 @@
<ANCHOR id="plugin-bayer" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-plugin-bayer.html#plugin-bayer">
<ANCHOR id="gst-plugins-bad-plugins-plugin-bz2" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-plugin-bz2.html">
<ANCHOR id="plugin-bz2" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-plugin-bz2.html#plugin-bz2">
-<ANCHOR id="gst-plugins-bad-plugins-plugin-camerabin" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-plugin-camerabin.html">
-<ANCHOR id="plugin-camerabin" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-plugin-camerabin.html#plugin-camerabin">
-<ANCHOR id="gst-plugins-bad-plugins-plugin-camerabin2" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-plugin-camerabin2.html">
-<ANCHOR id="plugin-camerabin2" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-plugin-camerabin2.html#plugin-camerabin2">
<ANCHOR id="gst-plugins-bad-plugins-plugin-cdaudio" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-plugin-cdaudio.html">
<ANCHOR id="plugin-cdaudio" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-plugin-cdaudio.html#plugin-cdaudio">
<ANCHOR id="gst-plugins-bad-plugins-plugin-cdxaparse" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-plugin-cdxaparse.html">
diff --git a/docs/plugins/inspect/plugin-camerabin.xml b/docs/plugins/inspect/plugin-camerabin.xml
deleted file mode 100644
index b9d6b0e5..00000000
--- a/docs/plugins/inspect/plugin-camerabin.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<plugin>
- <name>camerabin</name>
- <description>High level api for DC (Digital Camera) application</description>
- <filename>../../gst/camerabin/.libs/libgstcamerabin.so</filename>
- <basename>libgstcamerabin.so</basename>
- <version>0.10.23.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>camerabin</name>
- <longname>Camera Bin</longname>
- <class>Generic/Bin/Camera</class>
- <description>Handle lot of features present in DSC</description>
- <author>Nokia Corporation &lt;multimedia@maemo.org&gt;, Edgard Lima &lt;edgard.lima@indt.org.br&gt;</author>
- <pads>
- </pads>
- </element>
- </elements>
-</plugin> \ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-camerabin2.xml b/docs/plugins/inspect/plugin-camerabin2.xml
deleted file mode 100644
index 2245e371..00000000
--- a/docs/plugins/inspect/plugin-camerabin2.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<plugin>
- <name>camerabin2</name>
- <description>camerabin2</description>
- <filename>../../gst/camerabin2/.libs/libgstcamerabin2.so</filename>
- <basename>libgstcamerabin2.so</basename>
- <version>0.11.90</version>
- <license>LGPL</license>
- <source>gst-plugins-bad</source>
- <package>GStreamer Bad Plug-ins source release</package>
- <origin>Unknown package origin</origin>
- <elements>
- <element>
- <name>camerabin2</name>
- <longname>CameraBin2</longname>
- <class>Generic/Bin/Camera</class>
- <description>CameraBin2</description>
- <author>Thiago Santos &lt;thiago.sousa.santos@collabora.co.uk&gt;</author>
- <pads>
- </pads>
- </element>
- <element>
- <name>viewfinderbin</name>
- <longname>Viewfinder Bin</longname>
- <class>Sink/Video</class>
- <description>Viewfinder Bin used in camerabin2</description>
- <author>Thiago Santos &lt;thiago.sousa.santos@collabora.com&gt;</author>
- <pads>
- <caps>
- <name>sink</name>
- <direction>sink</direction>
- <presence>always</presence>
- <details>video/x-raw</details>
- </caps>
- </pads>
- </element>
- <element>
- <name>wrappercamerabinsrc</name>
- <longname>Wrapper camera src element for camerabin2</longname>
- <class>Source/Video</class>
- <description>Wrapper camera src element for camerabin2</description>
- <author>Thiago Santos &lt;thiago.sousa.santos@collabora.com&gt;</author>
- <pads>
- <caps>
- <name>imgsrc</name>
- <direction>source</direction>
- <presence>always</presence>
- <details>ANY</details>
- </caps>
- <caps>
- <name>vfsrc</name>
- <direction>source</direction>
- <presence>always</presence>
- <details>ANY</details>
- </caps>
- <caps>
- <name>vidsrc</name>
- <direction>source</direction>
- <presence>always</presence>
- <details>ANY</details>
- </caps>
- </pads>
- </element>
- </elements>
-</plugin> \ No newline at end of file
diff --git a/ext/Makefile.am b/ext/Makefile.am
index 0d57dc3b..6bd70443 100644
--- a/ext/Makefile.am
+++ b/ext/Makefile.am
@@ -330,6 +330,12 @@ else
SNDFILE_DIR=
endif
+if USE_SNDIO
+SNDIO_DIR = sndio
+else
+SNDIO_DIR =
+endif
+
if USE_SOUNDTOUCH
SOUNDTOUCH_DIR=soundtouch
else
@@ -452,6 +458,7 @@ SUBDIRS=\
$(SHOUT_DIR) \
$(SMOOTHWAVE_DIR) \
$(SNDFILE_DIR) \
+ $(SNDIO_DIR) \
$(SOUNDTOUCH_DIR) \
$(SPANDSP_DIR) \
$(GME_DIR) \
@@ -507,6 +514,7 @@ DIST_SUBDIRS = \
schroedinger \
sdl \
sndfile \
+ sndio \
soundtouch \
spandsp \
spc \
diff --git a/ext/Makefile.in b/ext/Makefile.in
index 154310e9..72d68ea7 100644
--- a/ext/Makefile.in
+++ b/ext/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -438,6 +438,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -454,6 +456,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -486,10 +489,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -710,6 +712,8 @@ SMOOTHWAVE_DIR =
@USE_SNDFILE_FALSE@SNDFILE_DIR =
# endif
@USE_SNDFILE_TRUE@SNDFILE_DIR = sndfile
+@USE_SNDIO_FALSE@SNDIO_DIR =
+@USE_SNDIO_TRUE@SNDIO_DIR = sndio
@USE_SOUNDTOUCH_FALSE@SOUNDTOUCH_DIR =
@USE_SOUNDTOUCH_TRUE@SOUNDTOUCH_DIR = soundtouch
@USE_SPANDSP_FALSE@SPANDSP_DIR =
@@ -788,6 +792,7 @@ SUBDIRS = \
$(SHOUT_DIR) \
$(SMOOTHWAVE_DIR) \
$(SNDFILE_DIR) \
+ $(SNDIO_DIR) \
$(SOUNDTOUCH_DIR) \
$(SPANDSP_DIR) \
$(GME_DIR) \
@@ -843,6 +848,7 @@ DIST_SUBDIRS = \
schroedinger \
sdl \
sndfile \
+ sndio \
soundtouch \
spandsp \
spc \
diff --git a/ext/apexsink/Makefile.in b/ext/apexsink/Makefile.in
index 2c2ced43..60a55b6d 100644
--- a/ext/apexsink/Makefile.in
+++ b/ext/apexsink/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -463,6 +463,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -479,6 +481,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -511,10 +514,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -642,7 +644,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/assrender/Makefile.in b/ext/assrender/Makefile.in
index 500af902..f818c04e 100644
--- a/ext/assrender/Makefile.in
+++ b/ext/assrender/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -634,7 +636,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/bz2/Makefile.in b/ext/bz2/Makefile.in
index edaad0bc..9cd7d97e 100644
--- a/ext/bz2/Makefile.in
+++ b/ext/bz2/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -639,7 +641,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/cdaudio/Makefile.in b/ext/cdaudio/Makefile.in
index 51242d7c..97d5284a 100644
--- a/ext/cdaudio/Makefile.in
+++ b/ext/cdaudio/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -456,6 +456,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -472,6 +474,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -504,10 +507,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -629,7 +631,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/celt/Makefile.in b/ext/celt/Makefile.in
index 29a14a2d..aba9a6a4 100644
--- a/ext/celt/Makefile.in
+++ b/ext/celt/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -646,7 +648,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/chromaprint/Makefile.in b/ext/chromaprint/Makefile.in
index e7b7e58a..2f3c03e5 100644
--- a/ext/chromaprint/Makefile.in
+++ b/ext/chromaprint/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -641,7 +643,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/cog/Makefile.in b/ext/cog/Makefile.in
index 945eac77..f63f4f53 100644
--- a/ext/cog/Makefile.in
+++ b/ext/cog/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -504,6 +504,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -520,6 +522,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -552,10 +555,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -726,7 +728,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/curl/Makefile.am b/ext/curl/Makefile.am
index 42fbe31b..5d916b0f 100644
--- a/ext/curl/Makefile.am
+++ b/ext/curl/Makefile.am
@@ -1,16 +1,28 @@
plugin_LTLIBRARIES = libgstcurl.la
-libgstcurl_la_SOURCES = gstcurl.c gstcurlsink.c
+libgstcurl_la_SOURCES = gstcurl.c \
+ gstcurlbasesink.c \
+ gstcurltlssink.c \
+ gstcurlhttpsink.c \
+ gstcurlfilesink.c \
+ gstcurlftpsink.c \
+ gstcurlsmtpsink.c
libgstcurl_la_CFLAGS = \
$(GST_PLUGINS_BAD_CFLAGS) \
$(GST_BASE_CFLAGS) \
$(GST_CFLAGS) \
$(CURL_CFLAGS)
libgstcurl_la_LIBADD = \
+ $(GST_PLUGINS_BASE_LIBS) \
$(GST_BASE_LIBS) \
$(GST_LIBS) \
$(CURL_LIBS)
libgstcurl_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstcurl_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS = gstcurlsink.h
+noinst_HEADERS = gstcurlbasesink.h \
+ gstcurltlssink.h \
+ gstcurlhttpsink.h \
+ gstcurlfilesink.h \
+ gstcurlftpsink.h \
+ gstcurlsmtpsink.h
diff --git a/ext/curl/Makefile.in b/ext/curl/Makefile.in
index fb221ce2..f87c19d2 100644
--- a/ext/curl/Makefile.in
+++ b/ext/curl/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -128,9 +128,15 @@ am__installdirs = "$(DESTDIR)$(plugindir)"
LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
libgstcurl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_libgstcurl_la_OBJECTS = libgstcurl_la-gstcurl.lo \
- libgstcurl_la-gstcurlsink.lo
+ libgstcurl_la-gstcurlbasesink.lo \
+ libgstcurl_la-gstcurltlssink.lo \
+ libgstcurl_la-gstcurlhttpsink.lo \
+ libgstcurl_la-gstcurlfilesink.lo \
+ libgstcurl_la-gstcurlftpsink.lo \
+ libgstcurl_la-gstcurlsmtpsink.lo
libgstcurl_la_OBJECTS = $(am_libgstcurl_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -461,6 +467,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +485,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +518,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -585,7 +593,14 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
plugin_LTLIBRARIES = libgstcurl.la
-libgstcurl_la_SOURCES = gstcurl.c gstcurlsink.c
+libgstcurl_la_SOURCES = gstcurl.c \
+ gstcurlbasesink.c \
+ gstcurltlssink.c \
+ gstcurlhttpsink.c \
+ gstcurlfilesink.c \
+ gstcurlftpsink.c \
+ gstcurlsmtpsink.c
+
libgstcurl_la_CFLAGS = \
$(GST_PLUGINS_BAD_CFLAGS) \
$(GST_BASE_CFLAGS) \
@@ -593,13 +608,20 @@ libgstcurl_la_CFLAGS = \
$(CURL_CFLAGS)
libgstcurl_la_LIBADD = \
+ $(GST_PLUGINS_BASE_LIBS) \
$(GST_BASE_LIBS) \
$(GST_LIBS) \
$(CURL_LIBS)
libgstcurl_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstcurl_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS = gstcurlsink.h
+noinst_HEADERS = gstcurlbasesink.h \
+ gstcurltlssink.h \
+ gstcurlhttpsink.h \
+ gstcurlfilesink.h \
+ gstcurlftpsink.h \
+ gstcurlsmtpsink.h
+
all: all-am
.SUFFIXES:
@@ -644,7 +666,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
@@ -676,7 +698,12 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcurl_la-gstcurl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcurl_la-gstcurlsink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcurl_la-gstcurlbasesink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcurl_la-gstcurlfilesink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcurl_la-gstcurlftpsink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcurl_la-gstcurlhttpsink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcurl_la-gstcurlsmtpsink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcurl_la-gstcurltlssink.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -706,12 +733,47 @@ libgstcurl_la-gstcurl.lo: gstcurl.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -c -o libgstcurl_la-gstcurl.lo `test -f 'gstcurl.c' || echo '$(srcdir)/'`gstcurl.c
-libgstcurl_la-gstcurlsink.lo: gstcurlsink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -MT libgstcurl_la-gstcurlsink.lo -MD -MP -MF $(DEPDIR)/libgstcurl_la-gstcurlsink.Tpo -c -o libgstcurl_la-gstcurlsink.lo `test -f 'gstcurlsink.c' || echo '$(srcdir)/'`gstcurlsink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcurl_la-gstcurlsink.Tpo $(DEPDIR)/libgstcurl_la-gstcurlsink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcurlsink.c' object='libgstcurl_la-gstcurlsink.lo' libtool=yes @AMDEPBACKSLASH@
+libgstcurl_la-gstcurlbasesink.lo: gstcurlbasesink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -MT libgstcurl_la-gstcurlbasesink.lo -MD -MP -MF $(DEPDIR)/libgstcurl_la-gstcurlbasesink.Tpo -c -o libgstcurl_la-gstcurlbasesink.lo `test -f 'gstcurlbasesink.c' || echo '$(srcdir)/'`gstcurlbasesink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcurl_la-gstcurlbasesink.Tpo $(DEPDIR)/libgstcurl_la-gstcurlbasesink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcurlbasesink.c' object='libgstcurl_la-gstcurlbasesink.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -c -o libgstcurl_la-gstcurlbasesink.lo `test -f 'gstcurlbasesink.c' || echo '$(srcdir)/'`gstcurlbasesink.c
+
+libgstcurl_la-gstcurltlssink.lo: gstcurltlssink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -MT libgstcurl_la-gstcurltlssink.lo -MD -MP -MF $(DEPDIR)/libgstcurl_la-gstcurltlssink.Tpo -c -o libgstcurl_la-gstcurltlssink.lo `test -f 'gstcurltlssink.c' || echo '$(srcdir)/'`gstcurltlssink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcurl_la-gstcurltlssink.Tpo $(DEPDIR)/libgstcurl_la-gstcurltlssink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcurltlssink.c' object='libgstcurl_la-gstcurltlssink.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -c -o libgstcurl_la-gstcurltlssink.lo `test -f 'gstcurltlssink.c' || echo '$(srcdir)/'`gstcurltlssink.c
+
+libgstcurl_la-gstcurlhttpsink.lo: gstcurlhttpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -MT libgstcurl_la-gstcurlhttpsink.lo -MD -MP -MF $(DEPDIR)/libgstcurl_la-gstcurlhttpsink.Tpo -c -o libgstcurl_la-gstcurlhttpsink.lo `test -f 'gstcurlhttpsink.c' || echo '$(srcdir)/'`gstcurlhttpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcurl_la-gstcurlhttpsink.Tpo $(DEPDIR)/libgstcurl_la-gstcurlhttpsink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcurlhttpsink.c' object='libgstcurl_la-gstcurlhttpsink.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -c -o libgstcurl_la-gstcurlhttpsink.lo `test -f 'gstcurlhttpsink.c' || echo '$(srcdir)/'`gstcurlhttpsink.c
+
+libgstcurl_la-gstcurlfilesink.lo: gstcurlfilesink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -MT libgstcurl_la-gstcurlfilesink.lo -MD -MP -MF $(DEPDIR)/libgstcurl_la-gstcurlfilesink.Tpo -c -o libgstcurl_la-gstcurlfilesink.lo `test -f 'gstcurlfilesink.c' || echo '$(srcdir)/'`gstcurlfilesink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcurl_la-gstcurlfilesink.Tpo $(DEPDIR)/libgstcurl_la-gstcurlfilesink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcurlfilesink.c' object='libgstcurl_la-gstcurlfilesink.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -c -o libgstcurl_la-gstcurlfilesink.lo `test -f 'gstcurlfilesink.c' || echo '$(srcdir)/'`gstcurlfilesink.c
+
+libgstcurl_la-gstcurlftpsink.lo: gstcurlftpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -MT libgstcurl_la-gstcurlftpsink.lo -MD -MP -MF $(DEPDIR)/libgstcurl_la-gstcurlftpsink.Tpo -c -o libgstcurl_la-gstcurlftpsink.lo `test -f 'gstcurlftpsink.c' || echo '$(srcdir)/'`gstcurlftpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcurl_la-gstcurlftpsink.Tpo $(DEPDIR)/libgstcurl_la-gstcurlftpsink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcurlftpsink.c' object='libgstcurl_la-gstcurlftpsink.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -c -o libgstcurl_la-gstcurlftpsink.lo `test -f 'gstcurlftpsink.c' || echo '$(srcdir)/'`gstcurlftpsink.c
+
+libgstcurl_la-gstcurlsmtpsink.lo: gstcurlsmtpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -MT libgstcurl_la-gstcurlsmtpsink.lo -MD -MP -MF $(DEPDIR)/libgstcurl_la-gstcurlsmtpsink.Tpo -c -o libgstcurl_la-gstcurlsmtpsink.lo `test -f 'gstcurlsmtpsink.c' || echo '$(srcdir)/'`gstcurlsmtpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcurl_la-gstcurlsmtpsink.Tpo $(DEPDIR)/libgstcurl_la-gstcurlsmtpsink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcurlsmtpsink.c' object='libgstcurl_la-gstcurlsmtpsink.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -c -o libgstcurl_la-gstcurlsink.lo `test -f 'gstcurlsink.c' || echo '$(srcdir)/'`gstcurlsink.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcurl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcurl_la_CFLAGS) $(CFLAGS) -c -o libgstcurl_la-gstcurlsmtpsink.lo `test -f 'gstcurlsmtpsink.c' || echo '$(srcdir)/'`gstcurlsmtpsink.c
mostlyclean-libtool:
-rm -f *.lo
diff --git a/ext/curl/gstcurl.c b/ext/curl/gstcurl.c
index 598dd2de..c6b9df4c 100644
--- a/ext/curl/gstcurl.c
+++ b/ext/curl/gstcurl.c
@@ -20,14 +20,31 @@
#include <config.h>
#endif
-#include "gstcurlsink.h"
+#include "gstcurlbasesink.h"
+#include "gstcurltlssink.h"
+#include "gstcurlhttpsink.h"
+#include "gstcurlfilesink.h"
+#include "gstcurlftpsink.h"
+#include "gstcurlsmtpsink.h"
static gboolean
plugin_init (GstPlugin * plugin)
{
- if (!gst_element_register (plugin, "curlsink", GST_RANK_NONE,
- GST_TYPE_CURL_SINK))
+ if (!gst_element_register (plugin, "curlhttpsink", GST_RANK_NONE,
+ GST_TYPE_CURL_HTTP_SINK))
+ return FALSE;
+
+ if (!gst_element_register (plugin, "curlfilesink", GST_RANK_NONE,
+ GST_TYPE_CURL_FILE_SINK))
+ return FALSE;
+
+ if (!gst_element_register (plugin, "curlftpsink", GST_RANK_NONE,
+ GST_TYPE_CURL_FTP_SINK))
+ return FALSE;
+
+ if (!gst_element_register (plugin, "curlsmtpsink", GST_RANK_NONE,
+ GST_TYPE_CURL_SMTP_SINK))
return FALSE;
return TRUE;
diff --git a/ext/curl/gstcurlsink.c b/ext/curl/gstcurlbasesink.c
index 2ed5b20a..680be023 100644
--- a/ext/curl/gstcurlsink.c
+++ b/ext/curl/gstcurlbasesink.c
@@ -28,7 +28,7 @@
* <refsect2>
* <title>Example launch line (upload a JPEG file to an HTTP server)</title>
* |[
- * gst-launch filesrc filesrc location=image.jpg ! jpegparse ! curlsink \
+ * gst-launch filesrc location=image.jpg ! jpegparse ! curlsink \
* file-name=image.jpg \
* location=http://192.168.0.1:8080/cgi-bin/patupload.cgi/ \
* user=test passwd=test \
@@ -55,23 +55,17 @@
#include <sys/stat.h>
#include <fcntl.h>
-#include "gstcurlsink.h"
-
-#include "gst/glib-compat-private.h"
+#include "gstcurlbasesink.h"
/* Default values */
-#define GST_CAT_DEFAULT gst_curl_sink_debug
+#define GST_CAT_DEFAULT gst_curl_base_sink_debug
#define DEFAULT_URL "localhost:5555"
#define DEFAULT_TIMEOUT 30
-#define DEFAULT_PROXY_PORT 3128
#define DEFAULT_QOS_DSCP 0
-#define DEFAULT_ACCEPT_SELF_SIGNED FALSE
-#define DEFAULT_USE_CONTENT_LENGTH FALSE
#define DSCP_MIN 0
#define DSCP_MAX 63
-#define RESPONSE_100_CONTINUE 100
-#define RESPONSE_CONNECT_PROXY 200
+
/* Plugin specific settings */
static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
@@ -79,7 +73,7 @@ static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_ALWAYS,
GST_STATIC_CAPS_ANY);
-GST_DEBUG_CATEGORY_STATIC (gst_curl_sink_debug);
+GST_DEBUG_CATEGORY_STATIC (gst_curl_base_sink_debug);
enum
{
@@ -87,104 +81,96 @@ enum
PROP_LOCATION,
PROP_USER_NAME,
PROP_USER_PASSWD,
- PROP_PROXY,
- PROP_PROXY_PORT,
- PROP_PROXY_USER_NAME,
- PROP_PROXY_USER_PASSWD,
PROP_FILE_NAME,
PROP_TIMEOUT,
- PROP_QOS_DSCP,
- PROP_ACCEPT_SELF_SIGNED,
- PROP_USE_CONTENT_LENGTH,
- PROP_CONTENT_TYPE
+ PROP_QOS_DSCP
};
-static gboolean proxy_auth = FALSE;
-static gboolean proxy_conn_established = FALSE;
/* Object class function declarations */
-static void gst_curl_sink_finalize (GObject * gobject);
-static void gst_curl_sink_set_property (GObject * object, guint prop_id,
+static void gst_curl_base_sink_finalize (GObject * gobject);
+static void gst_curl_base_sink_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
-static void gst_curl_sink_get_property (GObject * object, guint prop_id,
+static void gst_curl_base_sink_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
/* BaseSink class function declarations */
-static GstFlowReturn gst_curl_sink_render (GstBaseSink * bsink,
+static GstFlowReturn gst_curl_base_sink_render (GstBaseSink * bsink,
GstBuffer * buf);
-static gboolean gst_curl_sink_event (GstBaseSink * bsink, GstEvent * event);
-static gboolean gst_curl_sink_start (GstBaseSink * bsink);
-static gboolean gst_curl_sink_stop (GstBaseSink * bsink);
-static gboolean gst_curl_sink_unlock (GstBaseSink * bsink);
-static gboolean gst_curl_sink_unlock_stop (GstBaseSink * bsink);
+static gboolean gst_curl_base_sink_event (GstBaseSink * bsink,
+ GstEvent * event);
+static gboolean gst_curl_base_sink_start (GstBaseSink * bsink);
+static gboolean gst_curl_base_sink_stop (GstBaseSink * bsink);
+static gboolean gst_curl_base_sink_unlock (GstBaseSink * bsink);
+static gboolean gst_curl_base_sink_unlock_stop (GstBaseSink * bsink);
/* private functions */
-static gboolean gst_curl_sink_transfer_setup_unlocked (GstCurlSink * sink);
-static gboolean gst_curl_sink_transfer_set_options_unlocked (GstCurlSink
- * sink);
-static gboolean gst_curl_sink_transfer_start_unlocked (GstCurlSink * sink);
-static void gst_curl_sink_transfer_cleanup (GstCurlSink * sink);
-static size_t gst_curl_sink_transfer_read_cb (void *ptr, size_t size,
+
+static gboolean gst_curl_base_sink_transfer_setup_unlocked
+ (GstCurlBaseSink * sink);
+static gboolean gst_curl_base_sink_transfer_start_unlocked
+ (GstCurlBaseSink * sink);
+static void gst_curl_base_sink_transfer_cleanup (GstCurlBaseSink * sink);
+static size_t gst_curl_base_sink_transfer_read_cb (void *ptr, size_t size,
size_t nmemb, void *stream);
-static size_t gst_curl_sink_transfer_write_cb (void *ptr, size_t size,
+static size_t gst_curl_base_sink_transfer_write_cb (void *ptr, size_t size,
size_t nmemb, void *stream);
-static GstFlowReturn gst_curl_sink_handle_transfer (GstCurlSink * sink);
-static int gst_curl_sink_transfer_socket_cb (void *clientp,
+static size_t gst_curl_base_sink_transfer_data_buffer (GstCurlBaseSink * sink,
+ void *curl_ptr, size_t block_size, guint * last_chunk);
+static int gst_curl_base_sink_transfer_socket_cb (void *clientp,
curl_socket_t curlfd, curlsocktype purpose);
-static gpointer gst_curl_sink_transfer_thread_func (gpointer data);
-static CURLcode gst_curl_sink_transfer_check (GstCurlSink * sink);
-static gint gst_curl_sink_setup_dscp_unlocked (GstCurlSink * sink);
-
-static gboolean gst_curl_sink_wait_for_data_unlocked (GstCurlSink * sink);
-static void gst_curl_sink_new_file_notify_unlocked (GstCurlSink * sink);
-static void gst_curl_sink_transfer_thread_notify_unlocked (GstCurlSink * sink);
-static void gst_curl_sink_transfer_thread_close_unlocked (GstCurlSink * sink);
-static void gst_curl_sink_wait_for_transfer_thread_to_send_unlocked (GstCurlSink
- * sink);
-static void gst_curl_sink_data_sent_notify_unlocked (GstCurlSink * sink);
+static gpointer gst_curl_base_sink_transfer_thread_func (gpointer data);
+static gint gst_curl_base_sink_setup_dscp_unlocked (GstCurlBaseSink * sink);
+static CURLcode gst_curl_base_sink_transfer_check (GstCurlBaseSink * sink);
+
+static gboolean gst_curl_base_sink_wait_for_data_unlocked
+ (GstCurlBaseSink * sink);
+static void gst_curl_base_sink_new_file_notify_unlocked
+ (GstCurlBaseSink * sink);
+static void gst_curl_base_sink_wait_for_transfer_thread_to_send_unlocked
+ (GstCurlBaseSink * sink);
+static void gst_curl_base_sink_data_sent_notify (GstCurlBaseSink * sink);
+static void gst_curl_base_sink_wait_for_response (GstCurlBaseSink * sink);
+static void gst_curl_base_sink_got_response_notify (GstCurlBaseSink * sink);
+
+static void handle_transfer (GstCurlBaseSink * sink);
+static size_t transfer_data_buffer (void *curl_ptr, TransferBuffer * buf,
+ size_t max_bytes_to_send, guint * last_chunk);
+
+#define parent_class gst_curl_base_sink_parent_class
+G_DEFINE_TYPE (GstCurlBaseSink, gst_curl_base_sink, GST_TYPE_BASE_SINK);
static void
-_do_init (GType type)
+gst_curl_base_sink_class_init (GstCurlBaseSinkClass * klass)
{
- GST_DEBUG_CATEGORY_INIT (gst_curl_sink_debug, "curlsink", 0,
- "curl sink element");
-}
-
-GST_BOILERPLATE_FULL (GstCurlSink, gst_curl_sink, GstBaseSink,
- GST_TYPE_BASE_SINK, _do_init);
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstBaseSinkClass *gstbasesink_class = (GstBaseSinkClass *) klass;
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-static void
-gst_curl_sink_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+ GST_DEBUG_CATEGORY_INIT (gst_curl_base_sink_debug, "curlbasesink", 0,
+ "curl base sink element");
+ GST_DEBUG_OBJECT (klass, "class_init");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sinktemplate));
gst_element_class_set_details_simple (element_class,
- "Curl sink",
+ "Curl base sink",
"Sink/Network",
"Upload data over the network to a server using libcurl",
"Patricia Muscalu <patricia@axis.com>");
-}
-static void
-gst_curl_sink_class_init (GstCurlSinkClass * klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GstBaseSinkClass *gstbasesink_class = (GstBaseSinkClass *) klass;
-
- GST_DEBUG_OBJECT (klass, "class_init");
-
- gstbasesink_class->event = GST_DEBUG_FUNCPTR (gst_curl_sink_event);
- gstbasesink_class->render = GST_DEBUG_FUNCPTR (gst_curl_sink_render);
- gstbasesink_class->start = GST_DEBUG_FUNCPTR (gst_curl_sink_start);
- gstbasesink_class->stop = GST_DEBUG_FUNCPTR (gst_curl_sink_stop);
- gstbasesink_class->unlock = GST_DEBUG_FUNCPTR (gst_curl_sink_unlock);
+ gstbasesink_class->event = GST_DEBUG_FUNCPTR (gst_curl_base_sink_event);
+ gstbasesink_class->render = GST_DEBUG_FUNCPTR (gst_curl_base_sink_render);
+ gstbasesink_class->start = GST_DEBUG_FUNCPTR (gst_curl_base_sink_start);
+ gstbasesink_class->stop = GST_DEBUG_FUNCPTR (gst_curl_base_sink_stop);
+ gstbasesink_class->unlock = GST_DEBUG_FUNCPTR (gst_curl_base_sink_unlock);
gstbasesink_class->unlock_stop =
- GST_DEBUG_FUNCPTR (gst_curl_sink_unlock_stop);
- gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_curl_sink_finalize);
+ GST_DEBUG_FUNCPTR (gst_curl_base_sink_unlock_stop);
+ gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_curl_base_sink_finalize);
+
+ gobject_class->set_property = gst_curl_base_sink_set_property;
+ gobject_class->get_property = gst_curl_base_sink_get_property;
- gobject_class->set_property = gst_curl_sink_set_property;
- gobject_class->get_property = gst_curl_sink_get_property;
+ klass->handle_transfer = handle_transfer;
+ klass->transfer_read_cb = gst_curl_base_sink_transfer_read_cb;
+ klass->transfer_data_buffer = gst_curl_base_sink_transfer_data_buffer;
/* FIXME: check against souphttpsrc and use same names for same properties */
g_object_class_install_property (gobject_class, PROP_LOCATION,
@@ -199,21 +185,6 @@ gst_curl_sink_class_init (GstCurlSinkClass * klass)
g_param_spec_string ("passwd", "User password",
"User password to use for server authentication", NULL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_PROXY,
- g_param_spec_string ("proxy", "Proxy", "HTTP proxy server URI", NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_PROXY_PORT,
- g_param_spec_int ("proxy-port", "Proxy port",
- "HTTP proxy server port", 0, G_MAXINT, DEFAULT_PROXY_PORT,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_PROXY_USER_NAME,
- g_param_spec_string ("proxy-user", "Proxy user name",
- "Proxy user name to use for proxy authentication",
- NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_PROXY_USER_PASSWD,
- g_param_spec_string ("proxy-passwd", "Proxy user password",
- "Proxy user password to use for proxy authentication",
- NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_FILE_NAME,
g_param_spec_string ("file-name", "Base file name",
"The base file name for the uploaded images", NULL,
@@ -229,74 +200,48 @@ gst_curl_sink_class_init (GstCurlSinkClass * klass)
"Quality of Service, differentiated services code point (0 default)",
DSCP_MIN, DSCP_MAX, DEFAULT_QOS_DSCP,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_ACCEPT_SELF_SIGNED,
- g_param_spec_boolean ("accept-self-signed",
- "Accept self-signed certificates",
- "Accept self-signed SSL/TLS certificates",
- DEFAULT_ACCEPT_SELF_SIGNED,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_USE_CONTENT_LENGTH,
- g_param_spec_boolean ("use-content-length", "Use content length header",
- "Use the Content-Length HTTP header instead of "
- "Transfer-Encoding header", DEFAULT_USE_CONTENT_LENGTH,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_CONTENT_TYPE,
- g_param_spec_string ("content-type", "Content type",
- "The mime type of the body of the request", NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&sinktemplate));
}
static void
-gst_curl_sink_init (GstCurlSink * sink, GstCurlSinkClass * klass)
+gst_curl_base_sink_init (GstCurlBaseSink * sink)
{
sink->transfer_buf = g_malloc (sizeof (TransferBuffer));
sink->transfer_cond = g_malloc (sizeof (TransferCondition));
sink->transfer_cond->cond = g_cond_new ();
sink->transfer_cond->data_sent = FALSE;
sink->transfer_cond->data_available = FALSE;
+ sink->transfer_cond->wait_for_response = FALSE;
sink->timeout = DEFAULT_TIMEOUT;
- sink->proxy_port = DEFAULT_PROXY_PORT;
sink->qos_dscp = DEFAULT_QOS_DSCP;
sink->url = g_strdup (DEFAULT_URL);
- sink->header_list = NULL;
- sink->accept_self_signed = DEFAULT_ACCEPT_SELF_SIGNED;
- sink->use_content_length = DEFAULT_USE_CONTENT_LENGTH;
sink->transfer_thread_close = FALSE;
sink->new_file = TRUE;
- sink->proxy_headers_set = FALSE;
- sink->content_type = NULL;
+ sink->flow_ret = GST_FLOW_OK;
+ sink->is_live = FALSE;
}
static void
-gst_curl_sink_finalize (GObject * gobject)
+gst_curl_base_sink_finalize (GObject * gobject)
{
- GstCurlSink *this = GST_CURL_SINK (gobject);
+ GstCurlBaseSink *this = GST_CURL_BASE_SINK (gobject);
GST_DEBUG ("finalizing curlsink");
if (this->transfer_thread != NULL) {
g_thread_join (this->transfer_thread);
}
- gst_curl_sink_transfer_cleanup (this);
+ gst_curl_base_sink_transfer_cleanup (this);
g_cond_free (this->transfer_cond->cond);
g_free (this->transfer_cond);
-
g_free (this->transfer_buf);
g_free (this->url);
g_free (this->user);
g_free (this->passwd);
- g_free (this->proxy);
- g_free (this->proxy_user);
- g_free (this->proxy_passwd);
g_free (this->file_name);
- g_free (this->content_type);
-
- if (this->header_list) {
- curl_slist_free_all (this->header_list);
- this->header_list = NULL;
- }
-
if (this->fdset != NULL) {
gst_poll_free (this->fdset);
this->fdset = NULL;
@@ -304,30 +249,72 @@ gst_curl_sink_finalize (GObject * gobject)
G_OBJECT_CLASS (parent_class)->finalize (gobject);
}
+void
+gst_curl_base_sink_transfer_thread_notify_unlocked (GstCurlBaseSink * sink)
+{
+ GST_LOG ("more data to send");
+
+ sink->transfer_cond->data_available = TRUE;
+ sink->transfer_cond->data_sent = FALSE;
+ sink->transfer_cond->wait_for_response = TRUE;
+ g_cond_signal (sink->transfer_cond->cond);
+}
+
+void
+gst_curl_base_sink_transfer_thread_close (GstCurlBaseSink * sink)
+{
+ GST_OBJECT_LOCK (sink);
+ GST_LOG_OBJECT (sink, "setting transfer thread close flag");
+ sink->transfer_thread_close = TRUE;
+ g_cond_signal (sink->transfer_cond->cond);
+ GST_OBJECT_UNLOCK (sink);
+
+ if (sink->transfer_thread != NULL) {
+ GST_LOG_OBJECT (sink, "waiting for transfer thread to finish");
+ g_thread_join (sink->transfer_thread);
+ sink->transfer_thread = NULL;
+ }
+}
+
+void
+gst_curl_base_sink_set_live (GstCurlBaseSink * sink, gboolean live)
+{
+ g_return_if_fail (GST_IS_CURL_BASE_SINK (sink));
+
+ GST_OBJECT_LOCK (sink);
+ sink->is_live = live;
+ GST_OBJECT_UNLOCK (sink);
+}
+
+gboolean
+gst_curl_base_sink_is_live (GstCurlBaseSink * sink)
+{
+ gboolean result;
+
+ g_return_val_if_fail (GST_IS_CURL_BASE_SINK (sink), FALSE);
+
+ GST_OBJECT_LOCK (sink);
+ result = sink->is_live;
+ GST_OBJECT_UNLOCK (sink);
+
+ return result;
+}
+
static GstFlowReturn
-gst_curl_sink_render (GstBaseSink * bsink, GstBuffer * buf)
+gst_curl_base_sink_render (GstBaseSink * bsink, GstBuffer * buf)
{
- GstCurlSink *sink = GST_CURL_SINK (bsink);
+ GstCurlBaseSink *sink = GST_CURL_BASE_SINK (bsink);
+ GstMapInfo map;
guint8 *data;
size_t size;
GstFlowReturn ret;
GST_LOG ("enter render");
- sink = GST_CURL_SINK (bsink);
- data = GST_BUFFER_DATA (buf);
- size = GST_BUFFER_SIZE (buf);
-
- if (sink->content_type == NULL) {
- GstCaps *caps;
- GstStructure *structure;
- const gchar *mime_type;
-
- caps = buf->caps;
- structure = gst_caps_get_structure (caps, 0);
- mime_type = gst_structure_get_name (structure);
- sink->content_type = g_strdup (mime_type);
- }
+ sink = GST_CURL_BASE_SINK (bsink);
+ gst_buffer_map (buf, &map, GST_MAP_READ);
+ data = map.data;
+ size = map.size;
GST_OBJECT_LOCK (sink);
@@ -341,7 +328,7 @@ gst_curl_sink_render (GstBaseSink * bsink, GstBuffer * buf)
/* if there is no transfer thread created, lets create one */
if (sink->transfer_thread == NULL) {
- if (!gst_curl_sink_transfer_start_unlocked (sink)) {
+ if (!gst_curl_base_sink_transfer_start_unlocked (sink)) {
sink->flow_ret = GST_FLOW_ERROR;
goto done;
}
@@ -351,16 +338,17 @@ gst_curl_sink_render (GstBaseSink * bsink, GstBuffer * buf)
sink->transfer_buf->ptr = data;
sink->transfer_buf->len = size;
sink->transfer_buf->offset = 0;
- gst_curl_sink_transfer_thread_notify_unlocked (sink);
+ gst_curl_base_sink_transfer_thread_notify_unlocked (sink);
/* wait for the transfer thread to send the data. This will be notified
* either when transfer is completed by the curl read callback or by
* the thread function if an error has occured. */
- gst_curl_sink_wait_for_transfer_thread_to_send_unlocked (sink);
+ gst_curl_base_sink_wait_for_transfer_thread_to_send_unlocked (sink);
done:
ret = sink->flow_ret;
GST_OBJECT_UNLOCK (sink);
+ gst_buffer_unmap (buf, &map);
GST_LOG ("exit render");
@@ -368,19 +356,22 @@ done:
}
static gboolean
-gst_curl_sink_event (GstBaseSink * bsink, GstEvent * event)
+gst_curl_base_sink_event (GstBaseSink * bsink, GstEvent * event)
{
- GstCurlSink *sink = GST_CURL_SINK (bsink);
+ GstCurlBaseSink *sink = GST_CURL_BASE_SINK (bsink);
+ GstCurlBaseSinkClass *klass = GST_CURL_BASE_SINK_GET_CLASS (sink);
switch (event->type) {
case GST_EVENT_EOS:
GST_DEBUG_OBJECT (sink, "received EOS");
- GST_OBJECT_LOCK (sink);
- gst_curl_sink_transfer_thread_close_unlocked (sink);
- GST_OBJECT_UNLOCK (sink);
- if (sink->transfer_thread != NULL) {
- g_thread_join (sink->transfer_thread);
- sink->transfer_thread = NULL;
+ gst_curl_base_sink_transfer_thread_close (sink);
+ gst_curl_base_sink_wait_for_response (sink);
+ break;
+ case GST_EVENT_CAPS:
+ if (klass->set_mime_type) {
+ GstCaps *caps;
+ gst_event_parse_caps (event, &caps);
+ klass->set_mime_type (sink, caps);
}
break;
default:
@@ -390,11 +381,19 @@ gst_curl_sink_event (GstBaseSink * bsink, GstEvent * event)
}
static gboolean
-gst_curl_sink_start (GstBaseSink * bsink)
+gst_curl_base_sink_start (GstBaseSink * bsink)
{
- GstCurlSink *sink;
+ GstCurlBaseSink *sink;
+
+ sink = GST_CURL_BASE_SINK (bsink);
- sink = GST_CURL_SINK (bsink);
+ /* reset flags */
+ sink->transfer_cond->data_sent = FALSE;
+ sink->transfer_cond->data_available = FALSE;
+ sink->transfer_cond->wait_for_response = FALSE;
+ sink->transfer_thread_close = FALSE;
+ sink->new_file = TRUE;
+ sink->flow_ret = GST_FLOW_OK;
if ((sink->fdset = gst_poll_new (TRUE)) == NULL) {
GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_READ_WRITE,
@@ -406,13 +405,11 @@ gst_curl_sink_start (GstBaseSink * bsink)
}
static gboolean
-gst_curl_sink_stop (GstBaseSink * bsink)
+gst_curl_base_sink_stop (GstBaseSink * bsink)
{
- GstCurlSink *sink = GST_CURL_SINK (bsink);
+ GstCurlBaseSink *sink = GST_CURL_BASE_SINK (bsink);
- GST_OBJECT_LOCK (sink);
- gst_curl_sink_transfer_thread_close_unlocked (sink);
- GST_OBJECT_UNLOCK (sink);
+ gst_curl_base_sink_transfer_thread_close (sink);
if (sink->fdset != NULL) {
gst_poll_free (sink->fdset);
sink->fdset = NULL;
@@ -422,11 +419,11 @@ gst_curl_sink_stop (GstBaseSink * bsink)
}
static gboolean
-gst_curl_sink_unlock (GstBaseSink * bsink)
+gst_curl_base_sink_unlock (GstBaseSink * bsink)
{
- GstCurlSink *sink;
+ GstCurlBaseSink *sink;
- sink = GST_CURL_SINK (bsink);
+ sink = GST_CURL_BASE_SINK (bsink);
GST_LOG_OBJECT (sink, "Flushing");
gst_poll_set_flushing (sink->fdset, TRUE);
@@ -435,11 +432,11 @@ gst_curl_sink_unlock (GstBaseSink * bsink)
}
static gboolean
-gst_curl_sink_unlock_stop (GstBaseSink * bsink)
+gst_curl_base_sink_unlock_stop (GstBaseSink * bsink)
{
- GstCurlSink *sink;
+ GstCurlBaseSink *sink;
- sink = GST_CURL_SINK (bsink);
+ sink = GST_CURL_BASE_SINK (bsink);
GST_LOG_OBJECT (sink, "No longer flushing");
gst_poll_set_flushing (sink->fdset, FALSE);
@@ -448,14 +445,14 @@ gst_curl_sink_unlock_stop (GstBaseSink * bsink)
}
static void
-gst_curl_sink_set_property (GObject * object, guint prop_id,
+gst_curl_base_sink_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
- GstCurlSink *sink;
+ GstCurlBaseSink *sink;
GstState cur_state;
- g_return_if_fail (GST_IS_CURL_SINK (object));
- sink = GST_CURL_SINK (object);
+ g_return_if_fail (GST_IS_CURL_BASE_SINK (object));
+ sink = GST_CURL_BASE_SINK (object);
gst_element_get_state (GST_ELEMENT (sink), &cur_state, NULL, 0);
if (cur_state != GST_STATE_PLAYING && cur_state != GST_STATE_PAUSED) {
@@ -477,25 +474,6 @@ gst_curl_sink_set_property (GObject * object, guint prop_id,
sink->passwd = g_value_dup_string (value);
GST_DEBUG_OBJECT (sink, "passwd set to %s", sink->passwd);
break;
- case PROP_PROXY:
- g_free (sink->proxy);
- sink->proxy = g_value_dup_string (value);
- GST_DEBUG_OBJECT (sink, "proxy set to %s", sink->proxy);
- break;
- case PROP_PROXY_PORT:
- sink->proxy_port = g_value_get_int (value);
- GST_DEBUG_OBJECT (sink, "proxy port set to %d", sink->proxy_port);
- break;
- case PROP_PROXY_USER_NAME:
- g_free (sink->proxy_user);
- sink->proxy_user = g_value_dup_string (value);
- GST_DEBUG_OBJECT (sink, "proxy user set to %s", sink->proxy_user);
- break;
- case PROP_PROXY_USER_PASSWD:
- g_free (sink->proxy_passwd);
- sink->proxy_passwd = g_value_dup_string (value);
- GST_DEBUG_OBJECT (sink, "proxy password set to %s", sink->proxy_passwd);
- break;
case PROP_FILE_NAME:
g_free (sink->file_name);
sink->file_name = g_value_dup_string (value);
@@ -507,24 +485,9 @@ gst_curl_sink_set_property (GObject * object, guint prop_id,
break;
case PROP_QOS_DSCP:
sink->qos_dscp = g_value_get_int (value);
- gst_curl_sink_setup_dscp_unlocked (sink);
+ gst_curl_base_sink_setup_dscp_unlocked (sink);
GST_DEBUG_OBJECT (sink, "dscp set to %d", sink->qos_dscp);
break;
- case PROP_ACCEPT_SELF_SIGNED:
- sink->accept_self_signed = g_value_get_boolean (value);
- GST_DEBUG_OBJECT (sink, "accept_self_signed set to %d",
- sink->accept_self_signed);
- break;
- case PROP_USE_CONTENT_LENGTH:
- sink->use_content_length = g_value_get_boolean (value);
- GST_DEBUG_OBJECT (sink, "use_content_length set to %d",
- sink->use_content_length);
- break;
- case PROP_CONTENT_TYPE:
- g_free (sink->content_type);
- sink->content_type = g_value_dup_string (value);
- GST_DEBUG_OBJECT (sink, "content type set to %s", sink->content_type);
- break;
default:
GST_DEBUG_OBJECT (sink, "invalid property id %d", prop_id);
break;
@@ -543,7 +506,7 @@ gst_curl_sink_set_property (GObject * object, guint prop_id,
g_free (sink->file_name);
sink->file_name = g_value_dup_string (value);
GST_DEBUG_OBJECT (sink, "file_name set to %s", sink->file_name);
- gst_curl_sink_new_file_notify_unlocked (sink);
+ gst_curl_base_sink_new_file_notify_unlocked (sink);
break;
case PROP_TIMEOUT:
sink->timeout = g_value_get_int (value);
@@ -551,14 +514,9 @@ gst_curl_sink_set_property (GObject * object, guint prop_id,
break;
case PROP_QOS_DSCP:
sink->qos_dscp = g_value_get_int (value);
- gst_curl_sink_setup_dscp_unlocked (sink);
+ gst_curl_base_sink_setup_dscp_unlocked (sink);
GST_DEBUG_OBJECT (sink, "dscp set to %d", sink->qos_dscp);
break;
- case PROP_CONTENT_TYPE:
- g_free (sink->content_type);
- sink->content_type = g_value_dup_string (value);
- GST_DEBUG_OBJECT (sink, "content type set to %s", sink->content_type);
- break;
default:
GST_WARNING_OBJECT (sink, "cannot set property when PLAYING");
break;
@@ -568,13 +526,13 @@ gst_curl_sink_set_property (GObject * object, guint prop_id,
}
static void
-gst_curl_sink_get_property (GObject * object, guint prop_id,
+gst_curl_base_sink_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec)
{
- GstCurlSink *sink;
+ GstCurlBaseSink *sink;
- g_return_if_fail (GST_IS_CURL_SINK (object));
- sink = GST_CURL_SINK (object);
+ g_return_if_fail (GST_IS_CURL_BASE_SINK (object));
+ sink = GST_CURL_BASE_SINK (object);
switch (prop_id) {
case PROP_LOCATION:
@@ -586,18 +544,6 @@ gst_curl_sink_get_property (GObject * object, guint prop_id,
case PROP_USER_PASSWD:
g_value_set_string (value, sink->passwd);
break;
- case PROP_PROXY:
- g_value_set_string (value, sink->proxy);
- break;
- case PROP_PROXY_PORT:
- g_value_set_int (value, sink->proxy_port);
- break;
- case PROP_PROXY_USER_NAME:
- g_value_set_string (value, sink->proxy_user);
- break;
- case PROP_PROXY_USER_PASSWD:
- g_value_set_string (value, sink->proxy_passwd);
- break;
case PROP_FILE_NAME:
g_value_set_string (value, sink->file_name);
break;
@@ -607,197 +553,184 @@ gst_curl_sink_get_property (GObject * object, guint prop_id,
case PROP_QOS_DSCP:
g_value_set_int (value, sink->qos_dscp);
break;
- case PROP_ACCEPT_SELF_SIGNED:
- g_value_set_boolean (value, sink->accept_self_signed);
- break;
- case PROP_USE_CONTENT_LENGTH:
- g_value_set_boolean (value, sink->use_content_length);
- break;
- case PROP_CONTENT_TYPE:
- g_value_set_string (value, sink->content_type);
- break;
default:
GST_DEBUG_OBJECT (sink, "invalid property id");
break;
}
}
-static void
-gst_curl_sink_set_http_header_unlocked (GstCurlSink * sink)
-{
- gchar *tmp;
-
- if (sink->header_list) {
- curl_slist_free_all (sink->header_list);
- sink->header_list = NULL;
- }
-
- if (proxy_auth && !sink->proxy_headers_set && !proxy_conn_established) {
- sink->header_list =
- curl_slist_append (sink->header_list, "Content-Length: 0");
- sink->proxy_headers_set = TRUE;
- goto set_headers;
- }
- if (sink->use_content_length) {
- /* if content length is used we assume that every buffer is one
- * entire file, which is the case when uploading several jpegs */
- tmp = g_strdup_printf ("Content-Length: %d", (int) sink->transfer_buf->len);
- sink->header_list = curl_slist_append (sink->header_list, tmp);
- g_free (tmp);
- } else {
- /* when sending a POST request to a HTTP 1.1 server, you can send data
- * without knowing the size before starting the POST if you use chunked
- * encoding */
- sink->header_list = curl_slist_append (sink->header_list,
- "Transfer-Encoding: chunked");
- }
-
- tmp = g_strdup_printf ("Content-Type: %s", sink->content_type);
- sink->header_list = curl_slist_append (sink->header_list, tmp);
- g_free (tmp);
-
-set_headers:
-
- tmp = g_strdup_printf ("Content-Disposition: attachment; filename="
- "\"%s\"", sink->file_name);
- sink->header_list = curl_slist_append (sink->header_list, tmp);
- g_free (tmp);
- curl_easy_setopt (sink->curl, CURLOPT_HTTPHEADER, sink->header_list);
-}
-
static gboolean
-gst_curl_sink_transfer_set_options_unlocked (GstCurlSink * sink)
+gst_curl_base_sink_transfer_set_common_options_unlocked (GstCurlBaseSink * sink)
{
+ GstCurlBaseSinkClass *klass = GST_CURL_BASE_SINK_GET_CLASS (sink);
+
#ifdef DEBUG
curl_easy_setopt (sink->curl, CURLOPT_VERBOSE, 1);
#endif
curl_easy_setopt (sink->curl, CURLOPT_URL, sink->url);
+
curl_easy_setopt (sink->curl, CURLOPT_CONNECTTIMEOUT, sink->timeout);
+ /* using signals in a multithreaded application is dangeous */
+ curl_easy_setopt (sink->curl, CURLOPT_NOSIGNAL, 1);
+
+ /* socket settings */
curl_easy_setopt (sink->curl, CURLOPT_SOCKOPTDATA, sink);
curl_easy_setopt (sink->curl, CURLOPT_SOCKOPTFUNCTION,
- gst_curl_sink_transfer_socket_cb);
+ gst_curl_base_sink_transfer_socket_cb);
+ curl_easy_setopt (sink->curl, CURLOPT_READFUNCTION, klass->transfer_read_cb);
+ curl_easy_setopt (sink->curl, CURLOPT_READDATA, sink);
+ curl_easy_setopt (sink->curl, CURLOPT_WRITEFUNCTION,
+ gst_curl_base_sink_transfer_write_cb);
+ curl_easy_setopt (sink->curl, CURLOPT_WRITEDATA, sink);
+
+ return TRUE;
+}
+
+static gboolean
+gst_curl_base_sink_transfer_set_options_unlocked (GstCurlBaseSink * sink)
+{
+ gboolean res = FALSE;
+ GstCurlBaseSinkClass *klass = GST_CURL_BASE_SINK_GET_CLASS (sink);
+
+ gst_curl_base_sink_transfer_set_common_options_unlocked (sink);
+
+ /* authentication settings */
if (sink->user != NULL && strlen (sink->user)) {
curl_easy_setopt (sink->curl, CURLOPT_USERNAME, sink->user);
curl_easy_setopt (sink->curl, CURLOPT_PASSWORD, sink->passwd);
- curl_easy_setopt (sink->curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
}
- if (sink->accept_self_signed && g_str_has_prefix (sink->url, "https")) {
- /* TODO verify the authenticity of the peer's certificate */
- curl_easy_setopt (sink->curl, CURLOPT_SSL_VERIFYPEER, 0L);
- /* TODO check the servers's claimed identity */
- curl_easy_setopt (sink->curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ if (klass->set_options_unlocked) {
+ res = klass->set_options_unlocked (sink);
}
- /* proxy settings */
- if (sink->proxy != NULL && strlen (sink->proxy)) {
- if (curl_easy_setopt (sink->curl, CURLOPT_PROXY, sink->proxy)
- != CURLE_OK) {
- return FALSE;
- }
- if (curl_easy_setopt (sink->curl, CURLOPT_PROXYPORT, sink->proxy_port)
- != CURLE_OK) {
- return FALSE;
- }
- if (sink->proxy_user != NULL &&
- strlen (sink->proxy_user) &&
- sink->proxy_passwd != NULL && strlen (sink->proxy_passwd)) {
- curl_easy_setopt (sink->curl, CURLOPT_PROXYUSERNAME, sink->proxy_user);
- curl_easy_setopt (sink->curl, CURLOPT_PROXYPASSWORD, sink->proxy_passwd);
- curl_easy_setopt (sink->curl, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
- proxy_auth = TRUE;
- }
- /* tunnel all operations through a given HTTP proxy */
- if (curl_easy_setopt (sink->curl, CURLOPT_HTTPPROXYTUNNEL, 1L)
- != CURLE_OK) {
- return FALSE;
- }
- }
+ return res;
+}
- /* POST options */
- curl_easy_setopt (sink->curl, CURLOPT_POST, 1L);
+static size_t
+transfer_data_buffer (void *curl_ptr, TransferBuffer * buf,
+ size_t max_bytes_to_send, guint * last_chunk)
+{
+ guint buf_len = buf->len;
+ size_t bytes_to_send = MIN (max_bytes_to_send, buf->len);
+
+ memcpy ((guint8 *) curl_ptr, buf->ptr + buf->offset, bytes_to_send);
+ buf->offset = buf->offset + bytes_to_send;
+ buf->len = buf->len - bytes_to_send;
+
+ /* the last data chunk */
+ if (bytes_to_send == buf_len) {
+ buf->offset = 0;
+ buf->len = 0;
+ *last_chunk = 1;
+ }
- curl_easy_setopt (sink->curl, CURLOPT_READFUNCTION,
- gst_curl_sink_transfer_read_cb);
- curl_easy_setopt (sink->curl, CURLOPT_READDATA, sink);
- curl_easy_setopt (sink->curl, CURLOPT_WRITEFUNCTION,
- gst_curl_sink_transfer_write_cb);
+ GST_LOG ("sent : %" G_GSIZE_FORMAT, bytes_to_send);
- return TRUE;
+ return bytes_to_send;
}
static size_t
-gst_curl_sink_transfer_read_cb (void *curl_ptr, size_t size, size_t nmemb,
- void *stream)
+gst_curl_base_sink_transfer_data_buffer (GstCurlBaseSink * sink,
+ void *curl_ptr, size_t block_size, guint * last_chunk)
{
- GstCurlSink *sink;
TransferBuffer *buffer;
- size_t max_bytes_to_send;
- guint buf_len;
+ size_t bytes_to_send;
- sink = (GstCurlSink *) stream;
+ buffer = sink->transfer_buf;
+ GST_LOG ("write buf len=%" G_GSIZE_FORMAT ", offset=%" G_GSIZE_FORMAT,
+ buffer->len, buffer->offset);
+
+ if (buffer->len <= 0) {
+ GST_WARNING ("got zero- or negative-length buffer");
- /* wait for data to come available, if new file or thread close is set
- * then zero will be returned to indicate end of current transfer */
- GST_OBJECT_LOCK (sink);
- if (gst_curl_sink_wait_for_data_unlocked (sink) == FALSE) {
- GST_LOG ("returning 0, no more data to send in this file");
- GST_OBJECT_UNLOCK (sink);
return 0;
}
- GST_OBJECT_UNLOCK (sink);
+ /* more data in buffer(s) */
+ bytes_to_send = transfer_data_buffer (curl_ptr, sink->transfer_buf,
+ block_size, last_chunk);
- max_bytes_to_send = size * nmemb;
- buffer = sink->transfer_buf;
+ return bytes_to_send;
+}
- buf_len = buffer->len;
- GST_LOG ("write buf len=%" G_GSIZE_FORMAT ", offset=%" G_GSIZE_FORMAT,
- buffer->len, buffer->offset);
+static size_t
+gst_curl_base_sink_transfer_read_cb (void *curl_ptr, size_t size, size_t nmemb,
+ void *stream)
+{
+ GstCurlBaseSink *sink;
+ GstCurlBaseSinkClass *klass;
+ size_t max_bytes_to_send;
+ size_t bytes_to_send;
+ guint last_chunk = 0;
- /* more data in buffer */
- if (buffer->len > 0) {
- size_t bytes_to_send = MIN (max_bytes_to_send, buf_len);
+ sink = (GstCurlBaseSink *) stream;
+ klass = GST_CURL_BASE_SINK_GET_CLASS (sink);
- memcpy ((guint8 *) curl_ptr, buffer->ptr + buffer->offset, bytes_to_send);
+ max_bytes_to_send = size * nmemb;
- buffer->offset = buffer->offset + bytes_to_send;
- buffer->len = buffer->len - bytes_to_send;
+ /* wait for data to come available, if new file or thread close is set
+ * then zero will be returned to indicate end of current transfer */
+ GST_OBJECT_LOCK (sink);
+ if (gst_curl_base_sink_wait_for_data_unlocked (sink) == FALSE) {
+ if (klass->flush_data_unlocked) {
+ bytes_to_send = klass->flush_data_unlocked (sink, curl_ptr,
+ max_bytes_to_send, sink->new_file);
- /* the last data chunk */
- if (bytes_to_send == buf_len) {
- buffer->ptr = NULL;
- buffer->offset = 0;
- buffer->len = 0;
- GST_OBJECT_LOCK (sink);
- gst_curl_sink_data_sent_notify_unlocked (sink);
GST_OBJECT_UNLOCK (sink);
+
+ return bytes_to_send;
}
- GST_LOG ("sent : %" G_GSIZE_FORMAT, bytes_to_send);
+ GST_OBJECT_UNLOCK (sink);
+ GST_LOG ("returning 0, no more data to send in this file");
- return bytes_to_send;
- } else {
- GST_WARNING ("got zero-length buffer");
return 0;
}
+
+ GST_OBJECT_UNLOCK (sink);
+
+ bytes_to_send = klass->transfer_data_buffer (sink, curl_ptr,
+ max_bytes_to_send, &last_chunk);
+
+ /* the last data chunk */
+ if (last_chunk) {
+ gst_curl_base_sink_data_sent_notify (sink);
+ }
+
+ return bytes_to_send;
}
static size_t
-gst_curl_sink_transfer_write_cb (void G_GNUC_UNUSED * ptr, size_t size,
+gst_curl_base_sink_transfer_write_cb (void G_GNUC_UNUSED * ptr, size_t size,
size_t nmemb, void G_GNUC_UNUSED * stream)
{
+ GstCurlBaseSink *sink;
+ GstCurlBaseSinkClass *klass;
size_t realsize = size * nmemb;
+ sink = (GstCurlBaseSink *) stream;
+ klass = GST_CURL_BASE_SINK_GET_CLASS (sink);
+
+ if (klass->transfer_verify_response_code) {
+ if (!klass->transfer_verify_response_code (sink)) {
+ GST_DEBUG_OBJECT (sink, "response error");
+ GST_OBJECT_LOCK (sink);
+ sink->flow_ret = GST_FLOW_ERROR;
+ GST_OBJECT_UNLOCK (sink);
+ }
+ }
+
GST_DEBUG ("response %s", (gchar *) ptr);
+
return realsize;
}
-static CURLcode
-gst_curl_sink_transfer_check (GstCurlSink * sink)
+CURLcode
+gst_curl_base_sink_transfer_check (GstCurlBaseSink * sink)
{
CURLcode code = CURLE_OK;
CURL *easy;
@@ -824,16 +757,16 @@ gst_curl_sink_transfer_check (GstCurlSink * sink)
return code;
}
-static GstFlowReturn
-gst_curl_sink_handle_transfer (GstCurlSink * sink)
+static void
+handle_transfer (GstCurlBaseSink * sink)
{
+ GstCurlBaseSinkClass *klass = GST_CURL_BASE_SINK_GET_CLASS (sink);
gint retval;
+ gint activated_fds;
gint running_handles;
gint timeout;
CURLMcode m_code;
CURLcode e_code;
- glong resp = -1;
- glong resp_proxy = -1;
GST_OBJECT_LOCK (sink);
timeout = sink->timeout;
@@ -847,137 +780,78 @@ gst_curl_sink_handle_transfer (GstCurlSink * sink)
} while (m_code == CURLM_CALL_MULTI_PERFORM);
while (running_handles && (m_code == CURLM_OK)) {
- if (!proxy_conn_established && (resp_proxy != RESPONSE_CONNECT_PROXY)
- && proxy_auth) {
- curl_easy_getinfo (sink->curl, CURLINFO_HTTP_CONNECTCODE, &resp_proxy);
- if (resp_proxy == RESPONSE_CONNECT_PROXY) {
- GST_LOG ("received HTTP/1.0 200 Connection Established");
- /* Workaround: redefine HTTP headers before connecting to HTTP server.
- * When talking to proxy, the Content-Length: 0 is send with the request.
- */
- curl_multi_remove_handle (sink->multi_handle, sink->curl);
- gst_curl_sink_set_http_header_unlocked (sink);
- curl_multi_add_handle (sink->multi_handle, sink->curl);
- proxy_conn_established = TRUE;
- }
+ if (klass->transfer_prepare_poll_wait) {
+ klass->transfer_prepare_poll_wait (sink);
}
- retval = gst_poll_wait (sink->fdset, timeout * GST_SECOND);
- if (G_UNLIKELY (retval == -1)) {
+ activated_fds = gst_poll_wait (sink->fdset, timeout * GST_SECOND);
+ if (G_UNLIKELY (activated_fds == -1)) {
if (errno == EAGAIN || errno == EINTR) {
GST_DEBUG_OBJECT (sink, "interrupted by signal");
} else if (errno == EBUSY) {
- goto poll_stopped;
+ GST_DEBUG_OBJECT (sink, "poll stopped");
+ retval = GST_FLOW_EOS;
+ goto fail;
} else {
- goto poll_error;
+ GST_DEBUG_OBJECT (sink, "poll failed: %s", g_strerror (errno));
+ GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("poll failed"), (NULL));
+ retval = GST_FLOW_ERROR;
+ goto fail;
}
- } else if (G_UNLIKELY (retval == 0)) {
- GST_DEBUG ("timeout");
- goto poll_timeout;
+ } else if (G_UNLIKELY (activated_fds == 0)) {
+ GST_DEBUG_OBJECT (sink, "poll timed out");
+ GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("poll timed out"), (NULL));
+ retval = GST_FLOW_ERROR;
+ goto fail;
}
/* readable/writable sockets */
do {
m_code = curl_multi_perform (sink->multi_handle, &running_handles);
} while (m_code == CURLM_CALL_MULTI_PERFORM);
-
- if (resp != RESPONSE_100_CONTINUE) {
- curl_easy_getinfo (sink->curl, CURLINFO_RESPONSE_CODE, &resp);
- }
- }
-
- if (resp != RESPONSE_100_CONTINUE) {
- /* No 100 Continue response received. Using POST with HTTP 1.1 implies
- * the use of a "Expect: 100-continue" header. If the server doesn't
- * send HTTP/1.1 100 Continue, libcurl will not call transfer_read_cb
- * in order to send POST data.
- */
- goto no_100_continue_response;
}
if (m_code != CURLM_OK) {
- goto curl_multi_error;
- }
-
- /* problems still might have occurred on individual transfers even when
- * curl_multi_perform returns CURLM_OK */
- if ((e_code = gst_curl_sink_transfer_check (sink)) != CURLE_OK) {
- goto curl_easy_error;
- }
-
- /* check response code */
- curl_easy_getinfo (sink->curl, CURLINFO_RESPONSE_CODE, &resp);
- GST_DEBUG_OBJECT (sink, "response code: %ld", resp);
- if (resp < 200 || resp >= 300) {
- goto response_error;
- }
-
- return GST_FLOW_OK;
-
-poll_error:
- {
- GST_DEBUG_OBJECT (sink, "poll failed: %s", g_strerror (errno));
- GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("poll failed"), (NULL));
- return GST_FLOW_ERROR;
- }
-
-poll_stopped:
- {
- GST_DEBUG_OBJECT (sink, "poll stopped");
- GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("poll stopped"), (NULL));
- return GST_FLOW_ERROR;
- }
-
-poll_timeout:
- {
- GST_DEBUG_OBJECT (sink, "poll timed out");
- GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("poll timed out"), (NULL));
- return GST_FLOW_ERROR;
- }
-
-curl_multi_error:
- {
GST_DEBUG_OBJECT (sink, "curl multi error");
GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("%s",
curl_multi_strerror (m_code)), (NULL));
- return GST_FLOW_ERROR;
+ retval = GST_FLOW_ERROR;
+ goto fail;
}
-curl_easy_error:
- {
+ /* problems still might have occurred on individual transfers even when
+ * curl_multi_perform returns CURLM_OK */
+ if ((e_code = gst_curl_base_sink_transfer_check (sink)) != CURLE_OK) {
GST_DEBUG_OBJECT (sink, "curl easy error");
GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("%s",
curl_easy_strerror (e_code)), (NULL));
- return GST_FLOW_ERROR;
+ retval = GST_FLOW_ERROR;
+ goto fail;
}
-no_100_continue_response:
- {
- GST_DEBUG_OBJECT (sink, "100 continue response missing");
- GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("100 continue response missing"),
- (NULL));
- return GST_FLOW_ERROR;
- }
+ gst_curl_base_sink_got_response_notify (sink);
-response_error:
- {
- GST_DEBUG_OBJECT (sink, "response error");
- GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("response error: %ld", resp),
- (NULL));
- return GST_FLOW_ERROR;
+ return;
+
+fail:
+ GST_OBJECT_LOCK (sink);
+ if (sink->flow_ret == GST_FLOW_OK) {
+ sink->flow_ret = retval;
}
+ GST_OBJECT_UNLOCK (sink);
+ return;
}
/* This function gets called by libcurl after the socket() call but before
* the connect() call. */
static int
-gst_curl_sink_transfer_socket_cb (void *clientp, curl_socket_t curlfd,
+gst_curl_base_sink_transfer_socket_cb (void *clientp, curl_socket_t curlfd,
curlsocktype G_GNUC_UNUSED purpose)
{
- GstCurlSink *sink;
+ GstCurlBaseSink *sink;
gboolean ret = TRUE;
- sink = (GstCurlSink *) clientp;
+ sink = (GstCurlBaseSink *) clientp;
g_assert (sink);
@@ -996,7 +870,7 @@ gst_curl_sink_transfer_socket_cb (void *clientp, curl_socket_t curlfd,
ret = ret && gst_poll_fd_ctl_read (sink->fdset, &sink->fd, TRUE);
GST_DEBUG ("fd: %d", sink->fd.fd);
GST_OBJECT_LOCK (sink);
- gst_curl_sink_setup_dscp_unlocked (sink);
+ gst_curl_base_sink_setup_dscp_unlocked (sink);
GST_OBJECT_UNLOCK (sink);
/* success */
@@ -1008,7 +882,7 @@ gst_curl_sink_transfer_socket_cb (void *clientp, curl_socket_t curlfd,
}
static gboolean
-gst_curl_sink_transfer_start_unlocked (GstCurlSink * sink)
+gst_curl_base_sink_transfer_start_unlocked (GstCurlBaseSink * sink)
{
GError *error = NULL;
gboolean ret = TRUE;
@@ -1017,8 +891,8 @@ gst_curl_sink_transfer_start_unlocked (GstCurlSink * sink)
sink->transfer_thread_close = FALSE;
sink->new_file = TRUE;
sink->transfer_thread =
- g_thread_create ((GThreadFunc) gst_curl_sink_transfer_thread_func, sink,
- TRUE, &error);
+ g_thread_create ((GThreadFunc) gst_curl_base_sink_transfer_thread_func,
+ sink, TRUE, &error);
if (sink->transfer_thread == NULL || error != NULL) {
ret = FALSE;
@@ -1034,15 +908,16 @@ gst_curl_sink_transfer_start_unlocked (GstCurlSink * sink)
}
static gpointer
-gst_curl_sink_transfer_thread_func (gpointer data)
+gst_curl_base_sink_transfer_thread_func (gpointer data)
{
- GstCurlSink *sink = (GstCurlSink *) data;
- GstFlowReturn ret = GST_FLOW_OK;
+ GstCurlBaseSink *sink = (GstCurlBaseSink *) data;
+ GstCurlBaseSinkClass *klass = GST_CURL_BASE_SINK_GET_CLASS (sink);
+ GstFlowReturn ret;
gboolean data_available;
GST_LOG ("transfer thread started");
GST_OBJECT_LOCK (sink);
- if (!gst_curl_sink_transfer_setup_unlocked (sink)) {
+ if (!gst_curl_base_sink_transfer_setup_unlocked (sink)) {
GST_DEBUG_OBJECT (sink, "curl setup error");
GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("curl setup error"), (NULL));
sink->flow_ret = GST_FLOW_ERROR;
@@ -1050,49 +925,76 @@ gst_curl_sink_transfer_thread_func (gpointer data)
}
while (!sink->transfer_thread_close && sink->flow_ret == GST_FLOW_OK) {
- /* we are working on a new file, clearing flag and setting file
- * name in http header */
+ /* we are working on a new file, clearing flag and setting a new file
+ * name */
sink->new_file = FALSE;
/* wait for data to arrive for this new file, if we get a new file name
* again before getting data we will simply skip transfering anything
* for this file and go directly to the new file */
- data_available = gst_curl_sink_wait_for_data_unlocked (sink);
+ data_available = gst_curl_base_sink_wait_for_data_unlocked (sink);
if (data_available) {
- gst_curl_sink_set_http_header_unlocked (sink);
+ if (G_UNLIKELY (!klass->set_protocol_dynamic_options_unlocked (sink))) {
+ sink->flow_ret = GST_FLOW_ERROR;
+ GST_OBJECT_UNLOCK (sink);
+ GST_ELEMENT_ERROR (sink, RESOURCE, FAILED, ("Unexpected state."),
+ (NULL));
+ GST_OBJECT_LOCK (sink);
+ goto done;
+ }
}
/* stay unlocked while handling the actual transfer */
GST_OBJECT_UNLOCK (sink);
if (data_available) {
- curl_multi_add_handle (sink->multi_handle, sink->curl);
+ if (!gst_curl_base_sink_is_live (sink)) {
+ /* prepare transfer if needed */
+ if (klass->prepare_transfer) {
+ GST_OBJECT_LOCK (sink);
+ if (!klass->prepare_transfer (sink)) {
+ sink->flow_ret = GST_FLOW_ERROR;
+ goto done;
+ }
+ GST_OBJECT_UNLOCK (sink);
+ }
+ curl_multi_add_handle (sink->multi_handle, sink->curl);
+ }
/* Start driving the transfer. */
- ret = gst_curl_sink_handle_transfer (sink);
+ klass->handle_transfer (sink);
/* easy handle will be possibly re-used for next transfer, thus it needs to
* be removed from the multi stack and re-added again */
- curl_multi_remove_handle (sink->multi_handle, sink->curl);
+ if (!gst_curl_base_sink_is_live (sink)) {
+ curl_multi_remove_handle (sink->multi_handle, sink->curl);
+ }
}
/* lock again before looping to check the thread closed flag */
GST_OBJECT_LOCK (sink);
+ }
- /* if we have transfered data, then set the return code */
- if (data_available) {
- sink->flow_ret = ret;
- }
+ if (sink->is_live) {
+ curl_multi_remove_handle (sink->multi_handle, sink->curl);
}
done:
+ /* extract the error code so the lock does not have to be
+ * taken when calling the functions below that take the lock
+ * on their own */
+ ret = sink->flow_ret;
+ GST_OBJECT_UNLOCK (sink);
+
/* if there is a flow error, always notify the render function so it
- * can return the flow error up along the pipeline */
- if (sink->flow_ret != GST_FLOW_OK) {
- gst_curl_sink_data_sent_notify_unlocked (sink);
+ * can return the flow error up along the pipeline. as an error has
+ * occurred there is no response to receive, so notify the event function
+ * so it doesn't block indefinitely waiting for a response. */
+ if (ret != GST_FLOW_OK) {
+ gst_curl_base_sink_data_sent_notify (sink);
+ gst_curl_base_sink_got_response_notify (sink);
}
- GST_OBJECT_UNLOCK (sink);
GST_DEBUG ("exit thread func - transfer thread close flag: %d",
sink->transfer_thread_close);
@@ -1100,7 +1002,7 @@ done:
}
static gboolean
-gst_curl_sink_transfer_setup_unlocked (GstCurlSink * sink)
+gst_curl_base_sink_transfer_setup_unlocked (GstCurlBaseSink * sink)
{
g_assert (sink);
@@ -1112,7 +1014,7 @@ gst_curl_sink_transfer_setup_unlocked (GstCurlSink * sink)
}
}
- if (!gst_curl_sink_transfer_set_options_unlocked (sink)) {
+ if (!gst_curl_base_sink_transfer_set_options_unlocked (sink)) {
g_warning ("Failed to setup easy handle");
GST_OBJECT_UNLOCK (sink);
return FALSE;
@@ -1129,7 +1031,7 @@ gst_curl_sink_transfer_setup_unlocked (GstCurlSink * sink)
}
static void
-gst_curl_sink_transfer_cleanup (GstCurlSink * sink)
+gst_curl_base_sink_transfer_cleanup (GstCurlBaseSink * sink)
{
if (sink->curl != NULL) {
if (sink->multi_handle != NULL) {
@@ -1146,7 +1048,7 @@ gst_curl_sink_transfer_cleanup (GstCurlSink * sink)
}
static gboolean
-gst_curl_sink_wait_for_data_unlocked (GstCurlSink * sink)
+gst_curl_base_sink_wait_for_data_unlocked (GstCurlBaseSink * sink)
{
gboolean data_available = FALSE;
@@ -1169,16 +1071,7 @@ gst_curl_sink_wait_for_data_unlocked (GstCurlSink * sink)
}
static void
-gst_curl_sink_transfer_thread_notify_unlocked (GstCurlSink * sink)
-{
- GST_LOG ("more data to send");
- sink->transfer_cond->data_available = TRUE;
- sink->transfer_cond->data_sent = FALSE;
- g_cond_signal (sink->transfer_cond->cond);
-}
-
-static void
-gst_curl_sink_new_file_notify_unlocked (GstCurlSink * sink)
+gst_curl_base_sink_new_file_notify_unlocked (GstCurlBaseSink * sink)
{
GST_LOG ("new file name");
sink->new_file = TRUE;
@@ -1186,15 +1079,8 @@ gst_curl_sink_new_file_notify_unlocked (GstCurlSink * sink)
}
static void
-gst_curl_sink_transfer_thread_close_unlocked (GstCurlSink * sink)
-{
- GST_LOG ("setting transfer thread close flag");
- sink->transfer_thread_close = TRUE;
- g_cond_signal (sink->transfer_cond->cond);
-}
-
-static void
-gst_curl_sink_wait_for_transfer_thread_to_send_unlocked (GstCurlSink * sink)
+ gst_curl_base_sink_wait_for_transfer_thread_to_send_unlocked
+ (GstCurlBaseSink * sink)
{
GST_LOG ("waiting for buffer send to complete");
@@ -1209,16 +1095,43 @@ gst_curl_sink_wait_for_transfer_thread_to_send_unlocked (GstCurlSink * sink)
}
static void
-gst_curl_sink_data_sent_notify_unlocked (GstCurlSink * sink)
+gst_curl_base_sink_data_sent_notify (GstCurlBaseSink * sink)
{
GST_LOG ("transfer completed");
+ GST_OBJECT_LOCK (sink);
sink->transfer_cond->data_available = FALSE;
sink->transfer_cond->data_sent = TRUE;
g_cond_signal (sink->transfer_cond->cond);
+ GST_OBJECT_UNLOCK (sink);
+}
+
+static void
+gst_curl_base_sink_wait_for_response (GstCurlBaseSink * sink)
+{
+ GST_LOG ("waiting for remote to send response code");
+
+ GST_OBJECT_LOCK (sink);
+ while (sink->transfer_cond->wait_for_response) {
+ g_cond_wait (sink->transfer_cond->cond, GST_OBJECT_GET_LOCK (sink));
+ }
+ GST_OBJECT_UNLOCK (sink);
+
+ GST_LOG ("response code received");
+}
+
+static void
+gst_curl_base_sink_got_response_notify (GstCurlBaseSink * sink)
+{
+ GST_LOG ("got response code");
+
+ GST_OBJECT_LOCK (sink);
+ sink->transfer_cond->wait_for_response = FALSE;
+ g_cond_signal (sink->transfer_cond->cond);
+ GST_OBJECT_UNLOCK (sink);
}
static gint
-gst_curl_sink_setup_dscp_unlocked (GstCurlSink * sink)
+gst_curl_base_sink_setup_dscp_unlocked (GstCurlBaseSink * sink)
{
gint tos;
gint af;
diff --git a/ext/curl/gstcurlbasesink.h b/ext/curl/gstcurlbasesink.h
new file mode 100644
index 00000000..f40d3bcb
--- /dev/null
+++ b/ext/curl/gstcurlbasesink.h
@@ -0,0 +1,116 @@
+/* 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_BASE_SINK__
+#define __GST_CURL_BASE_SINK__
+
+#include <gst/gst.h>
+#include <gst/base/gstbasesink.h>
+#include <curl/curl.h>
+
+G_BEGIN_DECLS
+#define GST_TYPE_CURL_BASE_SINK \
+ (gst_curl_base_sink_get_type())
+#define GST_CURL_BASE_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_CURL_BASE_SINK, GstCurlBaseSink))
+#define GST_CURL_BASE_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_CURL_BASE_SINK, GstCurlBaseSinkClass))
+#define GST_CURL_BASE_SINK_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_CURL_BASE_SINK, GstCurlBaseSinkClass))
+#define GST_IS_CURL_BASE_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_CURL_BASE_SINK))
+#define GST_IS_CURL_BASE_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_CURL_BASE_SINK))
+typedef struct _GstCurlBaseSink GstCurlBaseSink;
+typedef struct _GstCurlBaseSinkClass GstCurlBaseSinkClass;
+
+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;
+ gboolean wait_for_response;
+};
+
+struct _GstCurlBaseSink
+{
+ GstBaseSink parent;
+
+ /*< private > */
+ CURLM *multi_handle;
+ CURL *curl;
+ 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 *file_name;
+ guint qos_dscp;
+ gboolean transfer_thread_close;
+ gboolean new_file;
+ gboolean is_live;
+};
+
+struct _GstCurlBaseSinkClass
+{
+ GstBaseSinkClass parent_class;
+
+ /* vmethods */
+ gboolean (*set_protocol_dynamic_options_unlocked) (GstCurlBaseSink * sink);
+ gboolean (*set_options_unlocked) (GstCurlBaseSink * sink);
+ void (*set_mime_type) (GstCurlBaseSink * sink, GstCaps * caps);
+ void (*transfer_prepare_poll_wait) (GstCurlBaseSink * sink);
+ glong (*transfer_get_response_code) (GstCurlBaseSink * sink, glong resp);
+ gboolean (*transfer_verify_response_code) (GstCurlBaseSink * sink);
+ GstFlowReturn (*prepare_transfer) (GstCurlBaseSink * sink);
+ void (*handle_transfer) (GstCurlBaseSink * sink);
+ size_t (*transfer_read_cb) (void *curl_ptr, size_t size, size_t nmemb,
+ void *stream);
+ size_t (*transfer_data_buffer) (GstCurlBaseSink * sink, void *curl_ptr,
+ size_t block_size, guint * last_chunk);
+ size_t (*flush_data_unlocked) (GstCurlBaseSink * sink, void *curl_ptr,
+ size_t block_size, gboolean new_file);
+};
+
+GType gst_curl_base_sink_get_type (void);
+
+void gst_curl_base_sink_transfer_thread_notify_unlocked
+ (GstCurlBaseSink * sink);
+void gst_curl_base_sink_transfer_thread_close (GstCurlBaseSink * sink);
+void gst_curl_base_sink_set_live (GstCurlBaseSink * sink, gboolean live);
+gboolean gst_curl_base_sink_is_live (GstCurlBaseSink * sink);
+
+G_END_DECLS
+#endif
diff --git a/ext/curl/gstcurlfilesink.c b/ext/curl/gstcurlfilesink.c
new file mode 100644
index 00000000..287e507f
--- /dev/null
+++ b/ext/curl/gstcurlfilesink.c
@@ -0,0 +1,233 @@
+/* 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.
+ */
+
+/**
+ * SECTION:element-curlfilesink
+ * @short_description: sink that uploads data to a server using libcurl
+ * @see_also:
+ *
+ * This is a network sink that uses libcurl as a client to upload data to
+ * a local or network drive.
+ *
+ * <refsect2>
+ * <title>Example launch line (upload a JPEG file to /home/test/images directory)</title>
+ * |[
+ * gst-launch filesrc location=image.jpg ! jpegparse ! curlfilesink \
+ * file-name=image.jpg \
+ * location=file:///home/test/images/
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <curl/curl.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <unistd.h>
+#include <netinet/ip.h>
+#include <netinet/tcp.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "gstcurlbasesink.h"
+#include "gstcurlfilesink.h"
+
+/* Default values */
+#define GST_CAT_DEFAULT gst_curl_file_sink_debug
+
+
+/* Plugin specific settings */
+
+GST_DEBUG_CATEGORY_STATIC (gst_curl_file_sink_debug);
+
+enum
+{
+ PROP_0,
+ PROP_CREATE_DIRS
+};
+
+
+/* Object class function declarations */
+
+
+/* private functions */
+static void gst_curl_file_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_curl_file_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+
+static gboolean set_file_options_unlocked (GstCurlBaseSink * curlbasesink);
+static gboolean set_file_dynamic_options_unlocked
+ (GstCurlBaseSink * curlbasesink);
+static gboolean gst_curl_file_sink_prepare_transfer (GstCurlBaseSink *
+ curlbasesink);
+
+#define gst_curl_file_sink_parent_class parent_class
+G_DEFINE_TYPE (GstCurlFileSink, gst_curl_file_sink, GST_TYPE_CURL_BASE_SINK);
+
+static void
+gst_curl_file_sink_class_init (GstCurlFileSinkClass * klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstCurlBaseSinkClass *gstcurlbasesink_class = (GstCurlBaseSinkClass *) klass;
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+ GST_DEBUG_CATEGORY_INIT (gst_curl_file_sink_debug, "curlfilesink", 0,
+ "curl file sink element");
+ GST_DEBUG_OBJECT (klass, "class_init");
+
+ gst_element_class_set_details_simple (element_class,
+ "Curl file sink",
+ "Sink/Network",
+ "Upload data over FILE protocol using libcurl",
+ "Patricia Muscalu <patricia@axis.com>");
+
+ gobject_class->set_property = gst_curl_file_sink_set_property;
+ gobject_class->get_property = gst_curl_file_sink_get_property;
+
+ gstcurlbasesink_class->set_protocol_dynamic_options_unlocked =
+ set_file_dynamic_options_unlocked;
+ gstcurlbasesink_class->set_options_unlocked = set_file_options_unlocked;
+ gstcurlbasesink_class->prepare_transfer = gst_curl_file_sink_prepare_transfer;
+
+ g_object_class_install_property (gobject_class, PROP_CREATE_DIRS,
+ g_param_spec_boolean ("create-dirs", "Create missing directories",
+ "Attempt to create missing directory included in the path",
+ FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+}
+
+static void
+gst_curl_file_sink_init (GstCurlFileSink * sink)
+{
+}
+
+static void
+gst_curl_file_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstCurlFileSink *sink;
+ GstState cur_state;
+
+ g_return_if_fail (GST_IS_CURL_FILE_SINK (object));
+ sink = GST_CURL_FILE_SINK (object);
+
+ gst_element_get_state (GST_ELEMENT (sink), &cur_state, NULL, 0);
+ if (cur_state != GST_STATE_PLAYING && cur_state != GST_STATE_PAUSED) {
+ GST_OBJECT_LOCK (sink);
+
+ switch (prop_id) {
+ case PROP_CREATE_DIRS:
+ sink->create_dirs = g_value_get_boolean (value);
+ GST_DEBUG_OBJECT (sink, "create-dirs set to %d", sink->create_dirs);
+ break;
+
+ default:
+ GST_DEBUG_OBJECT (sink, "invalid property id %d", prop_id);
+ break;
+ }
+
+ GST_OBJECT_UNLOCK (sink);
+ }
+}
+
+static void
+gst_curl_file_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ GstCurlFileSink *sink;
+
+ g_return_if_fail (GST_IS_CURL_FILE_SINK (object));
+ sink = GST_CURL_FILE_SINK (object);
+
+ switch (prop_id) {
+ case PROP_CREATE_DIRS:
+ g_value_set_boolean (value, sink->create_dirs);
+ break;
+ default:
+ GST_DEBUG_OBJECT (sink, "invalid property id");
+ break;
+ }
+}
+
+static gboolean
+set_file_dynamic_options_unlocked (GstCurlBaseSink * basesink)
+{
+ gchar *tmp = g_strdup_printf ("%s%s", basesink->url, basesink->file_name);
+
+ curl_easy_setopt (basesink->curl, CURLOPT_URL, tmp);
+
+ g_free (tmp);
+
+ return TRUE;
+}
+
+static gboolean
+set_file_options_unlocked (GstCurlBaseSink * basesink)
+{
+ curl_easy_setopt (basesink->curl, CURLOPT_UPLOAD, 1L);
+
+ return TRUE;
+}
+
+static gboolean
+gst_curl_file_sink_prepare_transfer (GstCurlBaseSink * basesink)
+{
+ GstCurlFileSink *sink = GST_CURL_FILE_SINK (basesink);
+
+ if (sink->create_dirs) {
+ gchar *file_name;
+ gchar *last_slash;
+
+ gchar *url = g_strdup_printf ("%s%s", basesink->url, basesink->file_name);
+ file_name = g_filename_from_uri (url, NULL, NULL);
+ if (file_name == NULL) {
+ GST_DEBUG_OBJECT (sink, "failed to parse file name of '%s'", url);
+ GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("failed to parse file name"),
+ (NULL));
+ g_free (url);
+ return FALSE;
+ }
+ g_free (url);
+
+ last_slash = strrchr (file_name, G_DIR_SEPARATOR);
+ if (last_slash != NULL) {
+ /* create dir if file name contains dir component */
+ gchar *dir_name = g_strndup (file_name, last_slash - file_name);
+ if (g_mkdir_with_parents (dir_name, S_IRWXU) < 0) {
+ GST_DEBUG_OBJECT (sink, "failed to create directory '%s'", dir_name);
+ GST_ELEMENT_ERROR (sink, RESOURCE, WRITE,
+ ("failed to create directory"), (NULL));
+ g_free (file_name);
+ g_free (dir_name);
+ return FALSE;
+ }
+ g_free (dir_name);
+ }
+ g_free (file_name);
+ }
+
+ return TRUE;
+}
diff --git a/ext/curl/gstcurlfilesink.h b/ext/curl/gstcurlfilesink.h
new file mode 100644
index 00000000..31c4bf36
--- /dev/null
+++ b/ext/curl/gstcurlfilesink.h
@@ -0,0 +1,58 @@
+/* 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_FILE_SINK__
+#define __GST_CURL_FILE_SINK__
+
+#include <gst/gst.h>
+#include <gst/base/gstbasesink.h>
+#include <curl/curl.h>
+#include "gstcurlbasesink.h"
+
+G_BEGIN_DECLS
+#define GST_TYPE_CURL_FILE_SINK \
+ (gst_curl_file_sink_get_type())
+#define GST_CURL_FILE_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_CURL_FILE_SINK, GstCurlFileSink))
+#define GST_CURL_FILE_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_CURL_FILE_SINK, GstCurlFileSinkClass))
+#define GST_IS_CURL_FILE_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_CURL_FILE_SINK))
+#define GST_IS_CURL_FILE_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_CURL_FILE_SINK))
+typedef struct _GstCurlFileSink GstCurlFileSink;
+typedef struct _GstCurlFileSinkClass GstCurlFileSinkClass;
+
+struct _GstCurlFileSink
+{
+ GstCurlBaseSink parent;
+
+ /*< private > */
+ gboolean create_dirs;
+};
+
+struct _GstCurlFileSinkClass
+{
+ GstCurlBaseSinkClass parent_class;
+};
+
+GType gst_curl_file_sink_get_type (void);
+
+G_END_DECLS
+#endif
diff --git a/ext/curl/gstcurlftpsink.c b/ext/curl/gstcurlftpsink.c
new file mode 100644
index 00000000..d5356573
--- /dev/null
+++ b/ext/curl/gstcurlftpsink.c
@@ -0,0 +1,262 @@
+/* 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.
+ */
+
+/**
+ * SECTION:element-curlftpsink
+ * @short_description: sink that uploads data to a server using libcurl
+ * @see_also:
+ *
+ * This is a network sink that uses libcurl as a client to upload data to
+ * an FTP server.
+ *
+ * <refsect2>
+ * <title>Example launch line (upload a JPEG file to /home/test/images directory)</title>
+ * |[
+ * gst-launch filesrc location=image.jpg ! jpegparse ! curlftpsink \
+ * file-name=image.jpg \
+ * location=ftp://192.168.0.1/images/
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <curl/curl.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <unistd.h>
+#include <netinet/ip.h>
+#include <netinet/tcp.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "gstcurltlssink.h"
+#include "gstcurlftpsink.h"
+
+/* Default values */
+#define GST_CAT_DEFAULT gst_curl_ftp_sink_debug
+
+
+/* Plugin specific settings */
+
+GST_DEBUG_CATEGORY_STATIC (gst_curl_ftp_sink_debug);
+
+enum
+{
+ PROP_0,
+ PROP_FTP_PORT_ARG,
+ PROP_EPSV_MODE,
+ PROP_CREATE_DIRS
+};
+
+
+/* Object class function declarations */
+
+
+/* private functions */
+static void gst_curl_ftp_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_curl_ftp_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_curl_ftp_sink_finalize (GObject * gobject);
+
+static gboolean set_ftp_options_unlocked (GstCurlBaseSink * curlbasesink);
+static gboolean set_ftp_dynamic_options_unlocked
+ (GstCurlBaseSink * curlbasesink);
+
+#define gst_curl_ftp_sink_parent_class parent_class
+G_DEFINE_TYPE (GstCurlFtpSink, gst_curl_ftp_sink, GST_TYPE_CURL_TLS_SINK);
+
+static void
+gst_curl_ftp_sink_class_init (GstCurlFtpSinkClass * klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstCurlBaseSinkClass *gstcurlbasesink_class = (GstCurlBaseSinkClass *) klass;
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+ GST_DEBUG_CATEGORY_INIT (gst_curl_ftp_sink_debug, "curlftpsink", 0,
+ "curl ftp sink element");
+ GST_DEBUG_OBJECT (klass, "class_init");
+
+ gst_element_class_set_details_simple (element_class,
+ "Curl ftp sink",
+ "Sink/Network",
+ "Upload data over FTP protocol using libcurl",
+ "Patricia Muscalu <patricia@axis.com>");
+
+ gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_curl_ftp_sink_finalize);
+
+ gobject_class->set_property = gst_curl_ftp_sink_set_property;
+ gobject_class->get_property = gst_curl_ftp_sink_get_property;
+
+ gstcurlbasesink_class->set_protocol_dynamic_options_unlocked =
+ set_ftp_dynamic_options_unlocked;
+ gstcurlbasesink_class->set_options_unlocked = set_ftp_options_unlocked;
+
+ g_object_class_install_property (gobject_class, PROP_FTP_PORT_ARG,
+ g_param_spec_string ("ftp-port", "IP address for FTP PORT instruction",
+ "The PORT instruction tells the remote server to connect to"
+ " the IP address", "", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_EPSV_MODE,
+ g_param_spec_boolean ("epsv-mode", "Extended passive mode",
+ "Enable the use of the EPSV command when doing passive FTP transfers",
+ TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_CREATE_DIRS,
+ g_param_spec_boolean ("create-dirs", "Create missing directories",
+ "Attempt to create missing directory included in the path",
+ FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+}
+
+static void
+gst_curl_ftp_sink_init (GstCurlFtpSink * sink)
+{
+}
+
+static void
+gst_curl_ftp_sink_finalize (GObject * gobject)
+{
+ GstCurlFtpSink *this = GST_CURL_FTP_SINK (gobject);
+
+ GST_DEBUG ("finalizing curlftpsink");
+ g_free (this->ftp_port_arg);
+
+ G_OBJECT_CLASS (parent_class)->finalize (gobject);
+}
+
+static gboolean
+set_ftp_dynamic_options_unlocked (GstCurlBaseSink * basesink)
+{
+ gchar *tmp = g_strdup_printf ("%s%s", basesink->url, basesink->file_name);
+
+ curl_easy_setopt (basesink->curl, CURLOPT_URL, tmp);
+
+ g_free (tmp);
+
+ return TRUE;
+}
+
+static gboolean
+set_ftp_options_unlocked (GstCurlBaseSink * basesink)
+{
+ GstCurlFtpSink *sink = GST_CURL_FTP_SINK (basesink);
+
+ curl_easy_setopt (basesink->curl, CURLOPT_UPLOAD, 1L);
+
+ if (sink->ftp_port_arg != NULL && (strlen (sink->ftp_port_arg) > 0)) {
+ /* Connect data stream actively. */
+ CURLcode res = curl_easy_setopt (basesink->curl, CURLOPT_FTPPORT,
+ sink->ftp_port_arg);
+
+ if (res != CURLE_OK) {
+ GST_DEBUG_OBJECT (sink, "Failed to set up active mode: %s",
+ curl_easy_strerror (res));
+ GST_ELEMENT_ERROR (sink, RESOURCE, WRITE,
+ ("Failed to set up active mode: %s", curl_easy_strerror (res)),
+ (NULL));
+
+ return FALSE;
+ }
+
+ goto end;
+ }
+
+ /* Connect data stream passively.
+ * libcurl will always attempt to use EPSV before PASV.
+ */
+ if (!sink->epsv_mode) {
+ /* send only plain PASV command */
+ curl_easy_setopt (basesink->curl, CURLOPT_FTP_USE_EPSV, 0);
+ }
+
+end:
+ if (sink->create_dirs) {
+ curl_easy_setopt (basesink->curl, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L);
+ }
+
+ return TRUE;
+}
+
+static void
+gst_curl_ftp_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstCurlFtpSink *sink;
+ GstState cur_state;
+
+ g_return_if_fail (GST_IS_CURL_FTP_SINK (object));
+ sink = GST_CURL_FTP_SINK (object);
+
+ gst_element_get_state (GST_ELEMENT (sink), &cur_state, NULL, 0);
+ if (cur_state != GST_STATE_PLAYING && cur_state != GST_STATE_PAUSED) {
+ GST_OBJECT_LOCK (sink);
+
+ switch (prop_id) {
+ case PROP_FTP_PORT_ARG:
+ g_free (sink->ftp_port_arg);
+ sink->ftp_port_arg = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "ftp-port set to %s", sink->ftp_port_arg);
+ break;
+ case PROP_EPSV_MODE:
+ sink->epsv_mode = g_value_get_boolean (value);
+ GST_DEBUG_OBJECT (sink, "epsv-mode set to %d", sink->epsv_mode);
+ break;
+ case PROP_CREATE_DIRS:
+ sink->create_dirs = g_value_get_boolean (value);
+ GST_DEBUG_OBJECT (sink, "create-dirs set to %d", sink->create_dirs);
+ break;
+
+ default:
+ GST_DEBUG_OBJECT (sink, "invalid property id %d", prop_id);
+ break;
+ }
+
+ GST_OBJECT_UNLOCK (sink);
+ }
+}
+
+static void
+gst_curl_ftp_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ GstCurlFtpSink *sink;
+
+ g_return_if_fail (GST_IS_CURL_FTP_SINK (object));
+ sink = GST_CURL_FTP_SINK (object);
+
+ switch (prop_id) {
+ case PROP_FTP_PORT_ARG:
+ g_value_set_string (value, sink->ftp_port_arg);
+ break;
+ case PROP_EPSV_MODE:
+ g_value_set_boolean (value, sink->epsv_mode);
+ break;
+ case PROP_CREATE_DIRS:
+ g_value_set_boolean (value, sink->create_dirs);
+ break;
+ default:
+ GST_DEBUG_OBJECT (sink, "invalid property id");
+ break;
+ }
+}
diff --git a/ext/curl/gstcurlftpsink.h b/ext/curl/gstcurlftpsink.h
new file mode 100644
index 00000000..2f9b6c30
--- /dev/null
+++ b/ext/curl/gstcurlftpsink.h
@@ -0,0 +1,60 @@
+/* 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_FTP_SINK__
+#define __GST_CURL_FTP_SINK__
+
+#include <gst/gst.h>
+#include <gst/base/gstbasesink.h>
+#include <curl/curl.h>
+#include "gstcurltlssink.h"
+
+G_BEGIN_DECLS
+#define GST_TYPE_CURL_FTP_SINK \
+ (gst_curl_ftp_sink_get_type())
+#define GST_CURL_FTP_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_CURL_FTP_SINK, GstCurlFtpSink))
+#define GST_CURL_FTP_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_CURL_FTP_SINK, GstCurlFtpSinkClass))
+#define GST_IS_CURL_FTP_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_CURL_FTP_SINK))
+#define GST_IS_CURL_FTP_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_CURL_FTP_SINK))
+typedef struct _GstCurlFtpSink GstCurlFtpSink;
+typedef struct _GstCurlFtpSinkClass GstCurlFtpSinkClass;
+
+struct _GstCurlFtpSink
+{
+ GstCurlTlsSink parent;
+
+ /*< private > */
+ gchar *ftp_port_arg;
+ gboolean epsv_mode;
+ gboolean create_dirs;
+};
+
+struct _GstCurlFtpSinkClass
+{
+ GstCurlTlsSinkClass parent_class;
+};
+
+GType gst_curl_ftp_sink_get_type (void);
+
+G_END_DECLS
+#endif
diff --git a/ext/curl/gstcurlhttpsink.c b/ext/curl/gstcurlhttpsink.c
new file mode 100644
index 00000000..5df3e506
--- /dev/null
+++ b/ext/curl/gstcurlhttpsink.c
@@ -0,0 +1,476 @@
+/* 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.
+ */
+
+/**
+ * SECTION:element-curlhttpsink
+ * @short_description: sink that uploads data to a server using libcurl
+ * @see_also:
+ *
+ * This is a network sink that uses libcurl as a client to upload data to
+ * an HTTP server.
+ *
+ * <refsect2>
+ * <title>Example launch line (upload a JPEG file to an HTTP server)</title>
+ * |[
+ * gst-launch filesrc location=image.jpg ! jpegparse ! curlhttpsink \
+ * file-name=image.jpg \
+ * location=http://192.168.0.1:8080/cgi-bin/patupload.cgi/ \
+ * user=test passwd=test \
+ * content-type=image/jpeg \
+ * use-content-length=false
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <curl/curl.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <unistd.h>
+#include <netinet/ip.h>
+#include <netinet/tcp.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "gstcurltlssink.h"
+#include "gstcurlhttpsink.h"
+
+/* Default values */
+#define GST_CAT_DEFAULT gst_curl_http_sink_debug
+#define DEFAULT_TIMEOUT 30
+#define DEFAULT_PROXY_PORT 3128
+#define DEFAULT_USE_CONTENT_LENGTH FALSE
+
+#define RESPONSE_CONNECT_PROXY 200
+
+/* Plugin specific settings */
+
+GST_DEBUG_CATEGORY_STATIC (gst_curl_http_sink_debug);
+
+enum
+{
+ PROP_0,
+ PROP_PROXY,
+ PROP_PROXY_PORT,
+ PROP_PROXY_USER_NAME,
+ PROP_PROXY_USER_PASSWD,
+ PROP_USE_CONTENT_LENGTH,
+ PROP_CONTENT_TYPE
+};
+
+
+/* Object class function declarations */
+
+static void gst_curl_http_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_curl_http_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_curl_http_sink_finalize (GObject * gobject);
+static gboolean gst_curl_http_sink_set_header_unlocked
+ (GstCurlBaseSink * bcsink);
+static gboolean gst_curl_http_sink_set_options_unlocked
+ (GstCurlBaseSink * bcsink);
+static void gst_curl_http_sink_set_mime_type
+ (GstCurlBaseSink * bcsink, GstCaps * caps);
+static gboolean gst_curl_http_sink_transfer_verify_response_code
+ (GstCurlBaseSink * bcsink);
+static void gst_curl_http_sink_transfer_prepare_poll_wait
+ (GstCurlBaseSink * bcsink);
+
+#define gst_curl_http_sink_parent_class parent_class
+G_DEFINE_TYPE (GstCurlHttpSink, gst_curl_http_sink, GST_TYPE_CURL_TLS_SINK);
+
+/* private functions */
+
+static gboolean proxy_setup (GstCurlBaseSink * bcsink);
+
+static void
+gst_curl_http_sink_class_init (GstCurlHttpSinkClass * klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstCurlBaseSinkClass *gstcurlbasesink_class = (GstCurlBaseSinkClass *) klass;
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+ GST_DEBUG_CATEGORY_INIT (gst_curl_http_sink_debug, "curlhttpsink", 0,
+ "curl http sink element");
+ GST_DEBUG_OBJECT (klass, "class_init");
+
+ gst_element_class_set_details_simple (element_class,
+ "Curl http sink",
+ "Sink/Network",
+ "Upload data over HTTP/HTTPS protocol using libcurl",
+ "Patricia Muscalu <patricia@axis.com>");
+
+ gstcurlbasesink_class->set_protocol_dynamic_options_unlocked =
+ gst_curl_http_sink_set_header_unlocked;
+ gstcurlbasesink_class->set_options_unlocked =
+ gst_curl_http_sink_set_options_unlocked;
+ gstcurlbasesink_class->set_mime_type = gst_curl_http_sink_set_mime_type;
+ gstcurlbasesink_class->transfer_verify_response_code =
+ gst_curl_http_sink_transfer_verify_response_code;
+ gstcurlbasesink_class->transfer_prepare_poll_wait =
+ gst_curl_http_sink_transfer_prepare_poll_wait;
+
+ gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_curl_http_sink_finalize);
+
+ gobject_class->set_property = gst_curl_http_sink_set_property;
+ gobject_class->get_property = gst_curl_http_sink_get_property;
+
+ g_object_class_install_property (gobject_class, PROP_PROXY,
+ g_param_spec_string ("proxy", "Proxy", "HTTP proxy server URI", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_PROXY_PORT,
+ g_param_spec_int ("proxy-port", "Proxy port",
+ "HTTP proxy server port", 0, G_MAXINT, DEFAULT_PROXY_PORT,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_PROXY_USER_NAME,
+ g_param_spec_string ("proxy-user", "Proxy user name",
+ "Proxy user name to use for proxy authentication",
+ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_PROXY_USER_PASSWD,
+ g_param_spec_string ("proxy-passwd", "Proxy user password",
+ "Proxy user password to use for proxy authentication",
+ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_USE_CONTENT_LENGTH,
+ g_param_spec_boolean ("use-content-length", "Use content length header",
+ "Use the Content-Length HTTP header instead of "
+ "Transfer-Encoding header", DEFAULT_USE_CONTENT_LENGTH,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_CONTENT_TYPE,
+ g_param_spec_string ("content-type", "Content type",
+ "The mime type of the body of the request", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+}
+
+static void
+gst_curl_http_sink_init (GstCurlHttpSink * sink)
+{
+ sink->header_list = NULL;
+ sink->use_content_length = DEFAULT_USE_CONTENT_LENGTH;
+ sink->content_type = NULL;
+
+ sink->proxy_port = DEFAULT_PROXY_PORT;
+ sink->proxy_headers_set = FALSE;
+ sink->proxy_auth = FALSE;
+ sink->use_proxy = FALSE;
+ sink->proxy_conn_established = FALSE;
+ sink->proxy_resp = -1;
+}
+
+static void
+gst_curl_http_sink_finalize (GObject * gobject)
+{
+ GstCurlHttpSink *this = GST_CURL_HTTP_SINK (gobject);
+
+ GST_DEBUG ("finalizing curlhttpsink");
+ g_free (this->proxy);
+ g_free (this->proxy_user);
+ g_free (this->proxy_passwd);
+ g_free (this->content_type);
+
+ if (this->header_list) {
+ curl_slist_free_all (this->header_list);
+ this->header_list = NULL;
+ }
+
+ G_OBJECT_CLASS (parent_class)->finalize (gobject);
+}
+
+static void
+gst_curl_http_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstCurlHttpSink *sink;
+ GstState cur_state;
+
+ g_return_if_fail (GST_IS_CURL_HTTP_SINK (object));
+ sink = GST_CURL_HTTP_SINK (object);
+
+ gst_element_get_state (GST_ELEMENT (sink), &cur_state, NULL, 0);
+ if (cur_state != GST_STATE_PLAYING && cur_state != GST_STATE_PAUSED) {
+ GST_OBJECT_LOCK (sink);
+
+ switch (prop_id) {
+ case PROP_PROXY:
+ g_free (sink->proxy);
+ sink->proxy = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "proxy set to %s", sink->proxy);
+ break;
+ case PROP_PROXY_PORT:
+ sink->proxy_port = g_value_get_int (value);
+ GST_DEBUG_OBJECT (sink, "proxy port set to %d", sink->proxy_port);
+ break;
+ case PROP_PROXY_USER_NAME:
+ g_free (sink->proxy_user);
+ sink->proxy_user = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "proxy user set to %s", sink->proxy_user);
+ break;
+ case PROP_PROXY_USER_PASSWD:
+ g_free (sink->proxy_passwd);
+ sink->proxy_passwd = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "proxy password set to %s", sink->proxy_passwd);
+ break;
+ case PROP_USE_CONTENT_LENGTH:
+ sink->use_content_length = g_value_get_boolean (value);
+ GST_DEBUG_OBJECT (sink, "use_content_length set to %d",
+ sink->use_content_length);
+ break;
+ case PROP_CONTENT_TYPE:
+ g_free (sink->content_type);
+ sink->content_type = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "content type set to %s", sink->content_type);
+ break;
+ default:
+ GST_DEBUG_OBJECT (sink, "invalid property id %d", prop_id);
+ break;
+ }
+
+ GST_OBJECT_UNLOCK (sink);
+
+ return;
+ }
+
+ /* in PLAYING or PAUSED state */
+ GST_OBJECT_LOCK (sink);
+
+ switch (prop_id) {
+ case PROP_CONTENT_TYPE:
+ g_free (sink->content_type);
+ sink->content_type = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "content type set to %s", sink->content_type);
+ break;
+ default:
+ GST_WARNING_OBJECT (sink, "cannot set property when PLAYING");
+ break;
+ }
+
+ GST_OBJECT_UNLOCK (sink);
+}
+
+static void
+gst_curl_http_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ GstCurlHttpSink *sink;
+
+ g_return_if_fail (GST_IS_CURL_HTTP_SINK (object));
+ sink = GST_CURL_HTTP_SINK (object);
+
+ switch (prop_id) {
+ case PROP_PROXY:
+ g_value_set_string (value, sink->proxy);
+ break;
+ case PROP_PROXY_PORT:
+ g_value_set_int (value, sink->proxy_port);
+ break;
+ case PROP_PROXY_USER_NAME:
+ g_value_set_string (value, sink->proxy_user);
+ break;
+ case PROP_PROXY_USER_PASSWD:
+ g_value_set_string (value, sink->proxy_passwd);
+ break;
+ case PROP_USE_CONTENT_LENGTH:
+ g_value_set_boolean (value, sink->use_content_length);
+ break;
+ case PROP_CONTENT_TYPE:
+ g_value_set_string (value, sink->content_type);
+ break;
+ default:
+ GST_DEBUG_OBJECT (sink, "invalid property id");
+ break;
+ }
+}
+
+static gboolean
+gst_curl_http_sink_set_header_unlocked (GstCurlBaseSink * bcsink)
+{
+ GstCurlHttpSink *sink = GST_CURL_HTTP_SINK (bcsink);
+ gchar *tmp;
+
+ if (sink->header_list) {
+ curl_slist_free_all (sink->header_list);
+ sink->header_list = NULL;
+ }
+
+ if (!sink->proxy_headers_set && sink->use_proxy) {
+ sink->header_list = curl_slist_append (sink->header_list,
+ "Content-Length: 0");
+ sink->proxy_headers_set = TRUE;
+ goto set_headers;
+ }
+
+ if (sink->use_content_length) {
+ /* if content length is used we assume that every buffer is one
+ * entire file, which is the case when uploading several jpegs */
+ tmp =
+ g_strdup_printf ("Content-Length: %d", (int) bcsink->transfer_buf->len);
+ sink->header_list = curl_slist_append (sink->header_list, tmp);
+ g_free (tmp);
+ } else {
+ /* when sending a POST request to a HTTP 1.1 server, you can send data
+ * without knowing the size before starting the POST if you use chunked
+ * encoding */
+ sink->header_list = curl_slist_append (sink->header_list,
+ "Transfer-Encoding: chunked");
+ }
+
+ tmp = g_strdup_printf ("Content-Type: %s", sink->content_type);
+ sink->header_list = curl_slist_append (sink->header_list, tmp);
+ g_free (tmp);
+
+set_headers:
+
+ tmp = g_strdup_printf ("Content-Disposition: attachment; filename="
+ "\"%s\"", bcsink->file_name);
+ sink->header_list = curl_slist_append (sink->header_list, tmp);
+ g_free (tmp);
+ curl_easy_setopt (bcsink->curl, CURLOPT_HTTPHEADER, sink->header_list);
+
+ return TRUE;
+}
+
+static gboolean
+gst_curl_http_sink_set_options_unlocked (GstCurlBaseSink * bcsink)
+{
+ GstCurlHttpSink *sink = GST_CURL_HTTP_SINK (bcsink);
+ GstCurlTlsSinkClass *parent_class;
+
+ /* proxy settings */
+ if (sink->proxy != NULL && strlen (sink->proxy)) {
+ if (!proxy_setup (bcsink)) {
+ return FALSE;
+ }
+ }
+
+ curl_easy_setopt (bcsink->curl, CURLOPT_POST, 1L);
+
+ /* FIXME: check user & passwd */
+ curl_easy_setopt (bcsink->curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
+
+ parent_class = GST_CURL_TLS_SINK_GET_CLASS (sink);
+
+ if (g_str_has_prefix (bcsink->url, "https://")) {
+ return parent_class->set_options_unlocked (bcsink);
+ }
+
+ return TRUE;
+}
+
+static gboolean
+gst_curl_http_sink_transfer_verify_response_code (GstCurlBaseSink * bcsink)
+{
+ GstCurlHttpSink *sink = GST_CURL_HTTP_SINK (bcsink);
+ glong resp;
+
+ curl_easy_getinfo (bcsink->curl, CURLINFO_RESPONSE_CODE, &resp);
+ GST_DEBUG_OBJECT (sink, "response code: %ld", resp);
+
+ if (resp < 100 || resp >= 300) {
+ GST_ELEMENT_ERROR (sink, RESOURCE, WRITE,
+ ("HTTP response error: (received: %ld)", resp), (NULL));
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void
+gst_curl_http_sink_transfer_prepare_poll_wait (GstCurlBaseSink * bcsink)
+{
+ GstCurlHttpSink *sink = GST_CURL_HTTP_SINK (bcsink);
+
+ if (!sink->proxy_conn_established
+ && (sink->proxy_resp != RESPONSE_CONNECT_PROXY)
+ && sink->proxy_auth) {
+ curl_easy_getinfo (bcsink->curl, CURLINFO_HTTP_CONNECTCODE,
+ &sink->proxy_resp);
+ if (sink->proxy_resp == RESPONSE_CONNECT_PROXY) {
+ GST_LOG ("received HTTP/1.0 200 Connection Established");
+ /* Workaround: redefine HTTP headers before connecting to HTTP server.
+ * When talking to proxy, the Content-Length: 0 is send with the request.
+ */
+ curl_multi_remove_handle (bcsink->multi_handle, bcsink->curl);
+ gst_curl_http_sink_set_header_unlocked (bcsink);
+ curl_multi_add_handle (bcsink->multi_handle, bcsink->curl);
+ sink->proxy_conn_established = TRUE;
+ }
+ }
+}
+
+// FIXME check this: why critical when no mime is set???
+static void
+gst_curl_http_sink_set_mime_type (GstCurlBaseSink * bcsink, GstCaps * caps)
+{
+ GstCurlHttpSink *sink = GST_CURL_HTTP_SINK (bcsink);
+ GstStructure *structure;
+ const gchar *mime_type;
+
+ if (sink->content_type != NULL) {
+ return;
+ }
+
+ structure = gst_caps_get_structure (caps, 0);
+ mime_type = gst_structure_get_name (structure);
+ sink->content_type = g_strdup (mime_type);
+}
+
+static gboolean
+proxy_setup (GstCurlBaseSink * bcsink)
+{
+ GstCurlHttpSink *sink = GST_CURL_HTTP_SINK (bcsink);
+
+ if (curl_easy_setopt (bcsink->curl, CURLOPT_PROXY, sink->proxy)
+ != CURLE_OK) {
+ return FALSE;
+ }
+
+ if (curl_easy_setopt (bcsink->curl, CURLOPT_PROXYPORT, sink->proxy_port)
+ != CURLE_OK) {
+ return FALSE;
+ }
+
+ if (sink->proxy_user != NULL &&
+ strlen (sink->proxy_user) &&
+ sink->proxy_passwd != NULL && strlen (sink->proxy_passwd)) {
+ curl_easy_setopt (bcsink->curl, CURLOPT_PROXYUSERNAME, sink->proxy_user);
+ curl_easy_setopt (bcsink->curl, CURLOPT_PROXYPASSWORD, sink->proxy_passwd);
+ curl_easy_setopt (bcsink->curl, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
+ sink->proxy_auth = TRUE;
+ }
+
+ if (g_str_has_prefix (bcsink->url, "https://")) {
+ /* tunnel all operations through a given HTTP proxy */
+ if (curl_easy_setopt (bcsink->curl, CURLOPT_HTTPPROXYTUNNEL, 1L)
+ != CURLE_OK) {
+ return FALSE;
+ }
+ }
+
+ sink->use_proxy = TRUE;
+
+ return TRUE;
+}
diff --git a/ext/curl/gstcurlhttpsink.h b/ext/curl/gstcurlhttpsink.h
new file mode 100644
index 00000000..551b8915
--- /dev/null
+++ b/ext/curl/gstcurlhttpsink.h
@@ -0,0 +1,69 @@
+/* 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_HTTP_SINK__
+#define __GST_CURL_HTTP_SINK__
+
+#include <gst/gst.h>
+#include <gst/base/gstbasesink.h>
+#include <curl/curl.h>
+#include "gstcurltlssink.h"
+
+G_BEGIN_DECLS
+#define GST_TYPE_CURL_HTTP_SINK \
+ (gst_curl_http_sink_get_type())
+#define GST_CURL_HTTP_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_CURL_HTTP_SINK, GstCurlHttpSink))
+#define GST_CURL_HTTP_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_CURL_HTTP_SINK, GstCurlHttpSinkClass))
+#define GST_IS_CURL_HTTP_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_CURL_HTTP_SINK))
+#define GST_IS_CURL_HTTP_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_CURL_HTTP_SINK))
+typedef struct _GstCurlHttpSink GstCurlHttpSink;
+typedef struct _GstCurlHttpSinkClass GstCurlHttpSinkClass;
+
+struct _GstCurlHttpSink
+{
+ GstCurlTlsSink parent;
+
+ /*< private > */
+ struct curl_slist *header_list;
+ gchar *proxy;
+ guint proxy_port;
+ gchar *proxy_user;
+ gchar *proxy_passwd;
+ gboolean use_content_length;
+ gchar *content_type;
+ gboolean use_proxy;
+ gboolean proxy_headers_set;
+ gboolean proxy_auth;
+ gboolean proxy_conn_established;
+ glong proxy_resp;
+};
+
+struct _GstCurlHttpSinkClass
+{
+ GstCurlTlsSinkClass parent_class;
+};
+
+GType gst_curl_http_sink_get_type (void);
+
+G_END_DECLS
+#endif
diff --git a/ext/curl/gstcurlsink.h b/ext/curl/gstcurlsink.h
deleted file mode 100644
index d158577e..00000000
--- a/ext/curl/gstcurlsink.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* 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
diff --git a/ext/curl/gstcurlsmtpsink.c b/ext/curl/gstcurlsmtpsink.c
new file mode 100644
index 00000000..283f86a3
--- /dev/null
+++ b/ext/curl/gstcurlsmtpsink.c
@@ -0,0 +1,928 @@
+/* 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.
+ */
+
+/**
+ * SECTION:element-curlsink
+ * @short_description: sink that uploads data to a server using libcurl
+ * @see_also:
+ *
+ * This is a network sink that uses libcurl as a client to upload data to
+ * an SMTP server.
+ *
+ * <refsect2>
+ * <title>Example launch line (upload a JPEG file to an SMTP server)</title>
+ * |[
+ * gst-launch filesrc location=image.jpg ! jpegparse ! curlsmtpsink \
+ * file-name=image.jpg \
+ * location=smtp://smtp.gmail.com:507 \
+ * user=test passwd=test \
+ * subject=my image \
+ * mail-from="me@gmail.com" \
+ * mail-rcpt="you@gmail.com,she@gmail.com" \
+ * use-ssl=TRUE \
+ * insecure=TRUE
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <curl/curl.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <pwd.h>
+#include <netinet/in.h>
+#include <unistd.h>
+#include <netinet/ip.h>
+#include <netinet/tcp.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "gstcurltlssink.h"
+#include "gstcurlsmtpsink.h"
+
+/* Default values */
+#define GST_CAT_DEFAULT gst_curl_smtp_sink_debug
+#define DEFAULT_USE_SSL FALSE
+#define DEFAULT_NBR_ATTACHMENTS 1
+
+/* MIME definitions */
+#define MIME_VERSION "MIME-version: 1.0"
+#define BOUNDARY_STRING "curlsink-boundary"
+#define BOUNDARY_STRING_END "--curlsink-boundary--"
+
+#define MAIL_RCPT_DELIMITER ","
+
+/* Plugin specific settings */
+
+GST_DEBUG_CATEGORY_STATIC (gst_curl_smtp_sink_debug);
+
+enum
+{
+ PROP_0,
+ PROP_MAIL_RCPT,
+ PROP_MAIL_FROM,
+ PROP_SUBJECT,
+ PROP_MESSAGE_BODY,
+ PROP_POP_USER_NAME,
+ PROP_POP_USER_PASSWD,
+ PROP_POP_LOCATION,
+ PROP_NBR_ATTACHMENTS,
+ PROP_CONTENT_TYPE,
+ PROP_USE_SSL
+};
+
+
+/* Object class function declarations */
+static void gst_curl_smtp_sink_finalize (GObject * gobject);
+static void gst_curl_smtp_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_curl_smtp_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+
+static gboolean gst_curl_smtp_sink_set_payload_headers_unlocked (GstCurlBaseSink
+ * sink);
+static gboolean
+gst_curl_smtp_sink_set_transfer_options_unlocked (GstCurlBaseSink * sink);
+static void gst_curl_smtp_sink_set_mime_type (GstCurlBaseSink * bcsink,
+ GstCaps * caps);
+static gboolean gst_curl_smtp_sink_prepare_transfer (GstCurlBaseSink * bcsink);
+static size_t gst_curl_smtp_sink_transfer_data_buffer (GstCurlBaseSink * sink,
+ void *curl_ptr, size_t block_size, guint * last_chunk);
+static size_t gst_curl_smtp_sink_flush_data_unlocked (GstCurlBaseSink * bcsink,
+ void *curl_ptr, size_t block_size, gboolean new_file);
+
+/* private functions */
+
+static size_t transfer_payload_headers (GstCurlSmtpSink * sink, void *curl_ptr,
+ size_t block_size);
+
+#define gst_curl_smtp_sink_parent_class parent_class
+G_DEFINE_TYPE (GstCurlSmtpSink, gst_curl_smtp_sink, GST_TYPE_CURL_TLS_SINK);
+
+static void
+gst_curl_smtp_sink_notify_transfer_end_unlocked (GstCurlSmtpSink * sink)
+{
+ GST_LOG ("transfer completed: %d", sink->transfer_end);
+ sink->transfer_end = TRUE;
+ g_cond_signal (sink->cond_transfer_end);
+}
+
+static void
+gst_curl_smtp_sink_wait_for_transfer_end_unlocked (GstCurlSmtpSink * sink)
+{
+ GST_LOG ("waiting for final data do be sent: %d", sink->transfer_end);
+
+ while (!sink->transfer_end) {
+ g_cond_wait (sink->cond_transfer_end, GST_OBJECT_GET_LOCK (sink));
+ }
+ GST_LOG ("final data sent");
+}
+
+static gboolean
+gst_curl_smtp_sink_event (GstBaseSink * bsink, GstEvent * event)
+{
+ GstCurlBaseSink *bcsink = GST_CURL_BASE_SINK (bsink);
+ GstCurlSmtpSink *sink = GST_CURL_SMTP_SINK (bsink);
+
+ GByteArray *array;
+ gchar *boundary_end;
+
+ switch (event->type) {
+ case GST_EVENT_EOS:
+ GST_DEBUG_OBJECT (sink, "received EOS");
+ gst_curl_base_sink_set_live (bcsink, FALSE);
+
+ GST_OBJECT_LOCK (sink);
+ sink->eos = TRUE;
+ GST_OBJECT_UNLOCK (sink);
+
+ if (sink->base64_chunk != NULL) {
+ gsize len;
+ gint save, state;
+ gchar *data_out;
+
+ array = sink->base64_chunk->chunk_array;
+ g_assert (array);
+
+ GST_DEBUG ("adding final boundary");
+
+ /* it will need up to 5 bytes if line-breaking is enabled
+ * additional byte is needed for <CR> as it is not automatically added by glib */
+ data_out = g_malloc (6);
+ save = sink->base64_chunk->save;
+ state = sink->base64_chunk->state;
+ len = g_base64_encode_close (TRUE, data_out, &state, &save);
+ /* workaround */
+ data_out[len - 1] = '\r';
+ data_out[len] = '\n';
+ /* +1 for CR */
+ g_byte_array_append (array, (guint8 *) data_out, (guint) (len + 1));
+ g_free (data_out);
+
+ boundary_end = g_strdup_printf ("\r\n%s\r\n", BOUNDARY_STRING_END);
+ g_byte_array_append (array, (guint8 *) boundary_end,
+ strlen (boundary_end));
+ g_free (boundary_end);
+ }
+
+ gst_curl_base_sink_transfer_thread_notify_unlocked (bcsink);
+
+ GST_OBJECT_LOCK (sink);
+ if (sink->base64_chunk != NULL && bcsink->flow_ret == GST_FLOW_OK) {
+ gst_curl_smtp_sink_wait_for_transfer_end_unlocked (sink);
+ }
+ GST_OBJECT_UNLOCK (sink);
+
+ gst_curl_base_sink_transfer_thread_close (bcsink);
+
+ break;
+
+ default:
+ break;
+ }
+ return TRUE;
+}
+
+static void
+gst_curl_smtp_sink_class_init (GstCurlSmtpSinkClass * klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstBaseSinkClass *gstbasesink_class = (GstBaseSinkClass *) klass;
+ GstCurlBaseSinkClass *gstcurlbasesink_class = (GstCurlBaseSinkClass *) klass;
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+ GST_DEBUG_CATEGORY_INIT (gst_curl_smtp_sink_debug, "curlsmtpsink", 0,
+ "curl smtp sink element");
+ GST_DEBUG_OBJECT (klass, "class_init");
+
+ gst_element_class_set_details_simple (element_class,
+ "Curl smtp sink",
+ "Sink/Network",
+ "Upload data over SMTP protocol using libcurl",
+ "Patricia Muscalu <patricia@axis.com>");
+
+ gstcurlbasesink_class->set_protocol_dynamic_options_unlocked =
+ gst_curl_smtp_sink_set_payload_headers_unlocked;
+ gstcurlbasesink_class->set_options_unlocked =
+ gst_curl_smtp_sink_set_transfer_options_unlocked;
+ gstcurlbasesink_class->set_mime_type = gst_curl_smtp_sink_set_mime_type;
+ gstcurlbasesink_class->prepare_transfer = gst_curl_smtp_sink_prepare_transfer;
+ gstcurlbasesink_class->transfer_data_buffer =
+ gst_curl_smtp_sink_transfer_data_buffer;
+ gstcurlbasesink_class->flush_data_unlocked =
+ gst_curl_smtp_sink_flush_data_unlocked;
+
+ gstbasesink_class->event = gst_curl_smtp_sink_event;
+ gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_curl_smtp_sink_finalize);
+ gobject_class->set_property = gst_curl_smtp_sink_set_property;
+ gobject_class->get_property = gst_curl_smtp_sink_get_property;
+
+ g_object_class_install_property (gobject_class, PROP_MAIL_RCPT,
+ g_param_spec_string ("mail-rcpt", "Mail recipient",
+ "Single address that the given mail should get sent to", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_MAIL_FROM,
+ g_param_spec_string ("mail-from", "Mail sender",
+ "Single address that the given mail should get sent from", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_CONTENT_TYPE,
+ g_param_spec_string ("content-type", "Content type",
+ "The mime type of the body of the request", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_SUBJECT,
+ g_param_spec_string ("subject", "UTF-8 encoded mail subject",
+ "Mail subject", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_MESSAGE_BODY,
+ g_param_spec_string ("message-body", "UTF-8 encoded message body",
+ "Message body", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_USE_SSL,
+ g_param_spec_boolean ("use-ssl", "Use SSL",
+ "Use SSL/TLS for the connection", DEFAULT_USE_SSL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_NBR_ATTACHMENTS,
+ g_param_spec_int ("nbr-attachments", "Number attachments",
+ "Number attachments to send", G_MININT, G_MAXINT,
+ DEFAULT_NBR_ATTACHMENTS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_POP_USER_NAME,
+ g_param_spec_string ("pop-user", "User name",
+ "User name to use for POP server authentication", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_POP_USER_PASSWD,
+ g_param_spec_string ("pop-passwd", "User password",
+ "User password to use for POP server authentication", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_POP_LOCATION,
+ g_param_spec_string ("pop-location", "POP location",
+ "URL POP used for authentication", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+}
+
+static void
+gst_curl_smtp_sink_init (GstCurlSmtpSink * sink)
+{
+ sink->curl_recipients = NULL;
+ sink->mail_rcpt = NULL;
+ sink->mail_from = NULL;
+ sink->subject = NULL;
+ sink->message_body = NULL;
+ sink->payload_headers = NULL;
+ sink->base64_chunk = NULL;
+
+ sink->cond_transfer_end = g_cond_new ();
+ sink->transfer_end = FALSE;
+ sink->eos = FALSE;
+
+ sink->reset_transfer_options = FALSE;
+ sink->use_ssl = DEFAULT_USE_SSL;
+
+ sink->pop_user = NULL;
+ sink->pop_passwd = NULL;
+ sink->pop_location = NULL;
+ sink->pop_curl = NULL;
+}
+
+static void
+gst_curl_smtp_sink_finalize (GObject * gobject)
+{
+ GstCurlSmtpSink *this = GST_CURL_SMTP_SINK (gobject);
+
+ GST_DEBUG ("finalizing curlsmtpsink");
+
+ if (this->curl_recipients != NULL) {
+ curl_slist_free_all (this->curl_recipients);
+ }
+ g_free (this->mail_rcpt);
+ g_free (this->mail_from);
+ g_free (this->subject);
+ g_free (this->message_body);
+ g_free (this->content_type);
+
+ g_cond_free (this->cond_transfer_end);
+
+ if (this->base64_chunk != NULL) {
+ if (this->base64_chunk->chunk_array != NULL) {
+ g_byte_array_free (this->base64_chunk->chunk_array, TRUE);
+ }
+ g_free (this->base64_chunk);
+ }
+
+ if (this->payload_headers != NULL) {
+ g_byte_array_free (this->payload_headers, TRUE);
+ }
+
+ g_free (this->pop_user);
+ g_free (this->pop_passwd);
+ if (this->pop_curl != NULL) {
+ curl_easy_cleanup (this->pop_curl);
+ this->pop_curl = NULL;
+ }
+ g_free (this->pop_location);
+
+ G_OBJECT_CLASS (parent_class)->finalize (gobject);
+}
+
+static void
+gst_curl_smtp_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstCurlSmtpSink *sink;
+ GstState cur_state;
+
+ g_return_if_fail (GST_IS_CURL_SMTP_SINK (object));
+ sink = GST_CURL_SMTP_SINK (object);
+
+ gst_element_get_state (GST_ELEMENT (sink), &cur_state, NULL, 0);
+ if (cur_state != GST_STATE_PLAYING && cur_state != GST_STATE_PAUSED) {
+ GST_OBJECT_LOCK (sink);
+
+ switch (prop_id) {
+ case PROP_MAIL_RCPT:
+ g_free (sink->mail_rcpt);
+ sink->mail_rcpt = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "mail-rcpt set to %s", sink->mail_rcpt);
+ break;
+ case PROP_MAIL_FROM:
+ g_free (sink->mail_from);
+ sink->mail_from = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "mail-from set to %s", sink->mail_from);
+ break;
+ case PROP_SUBJECT:
+ g_free (sink->subject);
+ sink->subject = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "subject set to %s", sink->subject);
+ break;
+ case PROP_MESSAGE_BODY:
+ g_free (sink->message_body);
+ sink->message_body = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "message-body set to %s", sink->message_body);
+ break;
+ case PROP_CONTENT_TYPE:
+ g_free (sink->content_type);
+ sink->content_type = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "content-type set to %s", sink->content_type);
+ break;
+ case PROP_USE_SSL:
+ sink->use_ssl = g_value_get_boolean (value);
+ GST_DEBUG_OBJECT (sink, "use-ssl set to %d", sink->use_ssl);
+ break;
+ case PROP_NBR_ATTACHMENTS:
+ sink->nbr_attachments = g_value_get_int (value);
+ sink->nbr_attachments_left = sink->nbr_attachments;
+ GST_DEBUG_OBJECT (sink, "nbr-attachments set to %d",
+ sink->nbr_attachments);
+ break;
+ case PROP_POP_USER_NAME:
+ g_free (sink->pop_user);
+ sink->pop_user = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "pop-user set to %s", sink->pop_user);
+ break;
+ case PROP_POP_USER_PASSWD:
+ g_free (sink->pop_passwd);
+ sink->pop_passwd = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "pop-passwd set to %s", sink->pop_passwd);
+ break;
+ case PROP_POP_LOCATION:
+ g_free (sink->pop_location);
+ sink->pop_location = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "pop-location set to %s", sink->pop_location);
+ break;
+
+ default:
+ GST_DEBUG_OBJECT (sink, "invalid property id %d", prop_id);
+ break;
+ }
+
+ GST_OBJECT_UNLOCK (sink);
+
+ return;
+ }
+
+ /* in PLAYING or PAUSED state */
+ GST_OBJECT_LOCK (sink);
+
+ switch (prop_id) {
+ case PROP_CONTENT_TYPE:
+ g_free (sink->content_type);
+ sink->content_type = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "content type set to %s", sink->content_type);
+ break;
+ default:
+ GST_WARNING_OBJECT (sink, "cannot set property when PLAYING");
+ break;
+ }
+
+ GST_OBJECT_UNLOCK (sink);
+}
+
+static void
+gst_curl_smtp_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ GstCurlSmtpSink *sink;
+
+ g_return_if_fail (GST_IS_CURL_SMTP_SINK (object));
+ sink = GST_CURL_SMTP_SINK (object);
+
+ switch (prop_id) {
+ case PROP_MAIL_RCPT:
+ g_value_set_string (value, sink->mail_rcpt);
+ break;
+ case PROP_MAIL_FROM:
+ g_value_set_string (value, sink->mail_from);
+ break;
+ case PROP_SUBJECT:
+ g_value_set_string (value, sink->subject);
+ break;
+ case PROP_MESSAGE_BODY:
+ g_value_set_string (value, sink->message_body);
+ break;
+ case PROP_CONTENT_TYPE:
+ g_value_set_string (value, sink->content_type);
+ break;
+ case PROP_USE_SSL:
+ g_value_set_boolean (value, sink->use_ssl);
+ break;
+ case PROP_NBR_ATTACHMENTS:
+ g_value_set_int (value, sink->nbr_attachments);
+ break;
+ case PROP_POP_USER_NAME:
+ g_value_set_string (value, sink->pop_user);
+ break;
+ case PROP_POP_USER_PASSWD:
+ g_value_set_string (value, sink->pop_passwd);
+ break;
+ case PROP_POP_LOCATION:
+ g_value_set_string (value, sink->pop_location);
+ break;
+
+ default:
+ GST_DEBUG_OBJECT (sink, "invalid property id");
+ break;
+ }
+}
+
+static gboolean
+gst_curl_smtp_sink_set_payload_headers_unlocked (GstCurlBaseSink * bcsink)
+{
+ GstCurlSmtpSink *sink = GST_CURL_SMTP_SINK (bcsink);
+ gchar *hdrs;
+ gboolean append_headers = FALSE;
+
+ if (sink->reset_transfer_options) {
+ g_assert (!bcsink->is_live);
+ sink->reset_transfer_options = FALSE;
+
+ /* all data has been sent in the previous transfer, setup headers for
+ * a new transfer */
+ gst_curl_smtp_sink_set_transfer_options_unlocked (bcsink);
+ append_headers = TRUE;
+ }
+
+ if (sink->payload_headers == NULL) {
+ sink->payload_headers = g_byte_array_new ();
+ append_headers = TRUE;
+ }
+
+ if (sink->base64_chunk == NULL) {
+ g_assert (!bcsink->is_live);
+ /* we are just about to send the very first attachment in this transfer.
+ * This is the only place where base64_chunk and its array are allocated.
+ */
+ sink->base64_chunk = g_malloc (sizeof (Base64Chunk));
+ sink->base64_chunk->chunk_array = g_byte_array_new ();
+ append_headers = TRUE;
+ } else {
+ g_assert (sink->base64_chunk->chunk_array != NULL);
+ g_assert (sink->base64_chunk->chunk_array->len == 0);
+ }
+
+ sink->base64_chunk->state = 0;
+ sink->base64_chunk->save = 0;
+
+ if (G_UNLIKELY (!append_headers)) {
+ if (sink->base64_chunk != NULL) {
+ g_byte_array_free (sink->base64_chunk->chunk_array, TRUE);
+ sink->base64_chunk->chunk_array = NULL;
+ g_free (sink->base64_chunk);
+ sink->base64_chunk = NULL;
+ }
+ return FALSE;
+ }
+
+ hdrs = g_strdup_printf ("\r\n\r\n--%s\r\n"
+ "Content-Type: application/octet-stream; name=\"%s\"\r\n"
+ /* TODO: support for other encodings */
+ "Content-Transfer-Encoding: BASE64\r\n"
+ "Content-Disposition: attachment; filename=\"%s\"\r\n\r\n"
+ "\r\n", BOUNDARY_STRING, bcsink->file_name, bcsink->file_name);
+ g_byte_array_append (sink->payload_headers, (guint8 *) hdrs, strlen (hdrs));
+ g_free (hdrs);
+
+ return TRUE;
+}
+
+/* MIME encoded-word syntax (RFC 2047):
+ * =?charset?encoding?encoded text?= */
+static gchar *
+generate_encoded_word (gchar * str)
+{
+ gchar *encoded_word;
+
+ g_assert (str);
+
+ if (g_utf8_validate (str, -1, NULL)) {
+ gchar *base64_str;
+
+ base64_str = g_base64_encode ((const guchar *) str, strlen (str));
+ encoded_word = g_strdup_printf ("=?utf-8?B?%s?=", base64_str);
+ g_free (base64_str);
+ } else {
+ GST_WARNING ("string is not a valid UTF-8 string");
+ encoded_word = g_strdup (str);
+ }
+
+ /* TODO: 75 character limit */
+ return encoded_word;
+}
+
+static gboolean
+gst_curl_smtp_sink_set_transfer_options_unlocked (GstCurlBaseSink * bcsink)
+{
+ GstCurlSmtpSink *sink = GST_CURL_SMTP_SINK (bcsink);
+ GstCurlTlsSinkClass *parent_class;
+ gchar *request_headers;
+ GDateTime *date;
+ gchar *date_str;
+ gchar **tmp_list = NULL;
+ gchar *subject_header = NULL;
+ gchar *message_body = NULL;
+ gchar *rcpt_header = NULL;
+ gchar *enc_rcpt;
+ gchar *from_header = NULL;
+ gchar *enc_from;
+ gint i;
+
+ g_assert (sink->payload_headers == NULL);
+ g_assert (sink->mail_rcpt != NULL);
+ g_assert (sink->mail_from != NULL);
+
+ /* time */
+ date = g_date_time_new_now_local ();
+ date_str = g_date_time_format (date, "%a %b %e %H:%M:%S %Y");
+ g_date_time_unref (date);
+
+ /* recipient, sender and subject are all UTF-8 strings, which are additionally
+ * base64-encoded */
+
+ /* recipient */
+ enc_rcpt = generate_encoded_word (sink->mail_rcpt);
+ rcpt_header = g_strdup_printf ("%s <%s>", enc_rcpt, sink->mail_rcpt);
+ g_free (enc_rcpt);
+
+ /* sender */
+ enc_from = generate_encoded_word (sink->mail_from);
+ from_header = g_strdup_printf ("%s <%s>", enc_from, sink->mail_from);
+ g_free (enc_from);
+
+ /* subject */
+ if (sink->subject != NULL) {
+ subject_header = generate_encoded_word (sink->subject);
+ }
+
+ /* message */
+ if (sink->message_body != NULL) {
+ message_body = g_base64_encode ((const guchar *) sink->message_body,
+ strlen (sink->message_body));
+ }
+
+ request_headers = g_strdup_printf (
+ /* headers */
+ "To: %s\r\n"
+ "From: %s\r\n"
+ "Subject: %s\r\n"
+ "Date: %s\r\n"
+ MIME_VERSION "\r\n"
+ "Content-Type: multipart/mixed; boundary=%s\r\n" "\r\n"
+ /* body headers */
+ "--" BOUNDARY_STRING "\r\n"
+ "Content-Type: text/plain; charset=utf-8\r\n"
+ "Content-Transfer-Encoding: BASE64\r\n"
+ /* message body */
+ "\r\n%s\r\n",
+ rcpt_header,
+ from_header,
+ subject_header ? subject_header : "",
+ date_str, BOUNDARY_STRING, message_body ? message_body : "");
+
+ sink->payload_headers = g_byte_array_new ();
+
+ g_byte_array_append (sink->payload_headers, (guint8 *) request_headers,
+ strlen (request_headers));
+ g_free (date_str);
+ g_free (subject_header);
+ g_free (message_body);
+ g_free (rcpt_header);
+ g_free (from_header);
+ g_free (request_headers);
+
+ curl_easy_setopt (bcsink->curl, CURLOPT_MAIL_FROM, sink->mail_from);
+
+ if (sink->curl_recipients != NULL) {
+ curl_slist_free_all (sink->curl_recipients);
+ sink->curl_recipients = NULL;
+ }
+
+ tmp_list = g_strsplit_set (sink->mail_rcpt, MAIL_RCPT_DELIMITER, -1);
+ for (i = 0; i < g_strv_length (tmp_list); i++) {
+ sink->curl_recipients = curl_slist_append (sink->curl_recipients,
+ tmp_list[i]);
+ }
+ g_strfreev (tmp_list);
+
+ /* note that the CURLOPT_MAIL_RCPT takes a list, not a char array */
+ curl_easy_setopt (bcsink->curl, CURLOPT_MAIL_RCPT, sink->curl_recipients);
+
+ parent_class = GST_CURL_TLS_SINK_GET_CLASS (sink);
+
+ if (sink->use_ssl) {
+ return parent_class->set_options_unlocked (bcsink);
+ }
+
+ return TRUE;
+}
+
+static void // FIXME: exactly the same function as in http sink
+gst_curl_smtp_sink_set_mime_type (GstCurlBaseSink * bcsink, GstCaps * caps)
+{
+ GstCurlSmtpSink *sink = GST_CURL_SMTP_SINK (bcsink);
+ GstStructure *structure;
+ const gchar *mime_type;
+
+ if (sink->content_type != NULL) {
+ return;
+ }
+
+ structure = gst_caps_get_structure (caps, 0);
+ mime_type = gst_structure_get_name (structure);
+ sink->content_type = g_strdup (mime_type);
+}
+
+static size_t
+gst_curl_smtp_sink_flush_data_unlocked (GstCurlBaseSink * bcsink,
+ void *curl_ptr, size_t block_size, gboolean new_file)
+{
+ GstCurlSmtpSink *sink = GST_CURL_SMTP_SINK (bcsink);
+ Base64Chunk *chunk = sink->base64_chunk;
+ gint state = chunk->state;
+ gint save = chunk->save;
+ GByteArray *array = chunk->chunk_array;
+ size_t bytes_to_send;
+ gint len;
+ gchar *data_out;
+
+ if ((bcsink->is_live && (sink->nbr_attachments_left == sink->nbr_attachments))
+ || (sink->nbr_attachments == 1) || sink->eos) {
+ bcsink->is_live = FALSE;
+ sink->reset_transfer_options = TRUE;
+
+ GST_DEBUG ("returning 0, no more data to send in this transfer");
+
+ return 0;
+ }
+
+ /* it will need up to 5 bytes if line-breaking is enabled, however an
+ * additional byte is needed for <CR> as it is not automatically added by glib */
+ data_out = g_malloc (6);
+ len = g_base64_encode_close (TRUE, data_out, &state, &save);
+ chunk->state = state;
+ chunk->save = save;
+ /* workaround */
+ data_out[len - 1] = '\r';
+ data_out[len] = '\n';
+ /* +1 for CR */
+ g_byte_array_append (array, (guint8 *) data_out, (guint) (len + 1));
+ g_free (data_out);
+
+ if (new_file) {
+ sink->nbr_attachments_left--;
+
+ bcsink->is_live = TRUE;
+ if (sink->nbr_attachments_left <= 1) {
+ sink->nbr_attachments_left = sink->nbr_attachments;
+ }
+
+ /* reset flag */
+ bcsink->new_file = FALSE;
+
+ /* set payload headers for new file */
+ gst_curl_smtp_sink_set_payload_headers_unlocked (bcsink);
+ }
+
+ bytes_to_send = MIN (block_size, array->len);
+ memcpy ((guint8 *) curl_ptr, array->data, bytes_to_send);
+ g_byte_array_remove_range (array, 0, bytes_to_send);
+
+ return bytes_to_send;
+}
+
+static size_t
+transfer_chunk (void *curl_ptr, TransferBuffer * buffer, Base64Chunk * chunk,
+ size_t block_size, guint * last_chunk)
+{
+ size_t bytes_to_send;
+ const guchar *data_in = buffer->ptr;
+ size_t data_in_offset = buffer->offset;
+ gint state = chunk->state;
+ gint save = chunk->save;
+ GByteArray *array = chunk->chunk_array;
+ gchar *data_out;
+
+ bytes_to_send = MIN (block_size, buffer->len);
+
+ if (bytes_to_send == 0) {
+ bytes_to_send = MIN (block_size, array->len);
+ }
+
+ /* base64 encode data */
+ if (buffer->len > 0) {
+ gsize len;
+ gchar *ptr_in;
+ gchar *ptr_out;
+ gsize size_out;
+ gint i;
+
+ /* if line-breaking is enabled, at least: ((len / 3 + 1) * 4 + 4) / 72 + 1
+ * bytes of extra space is required. However, additional <CR>'s are required,
+ * thus we need ((len / 3 + 2) * 4 + 4) / 72 + 2 extra bytes.
+ */
+ size_out = (bytes_to_send / 3 + 1) * 4 + 4 + bytes_to_send +
+ ((bytes_to_send / 3 + 2) * 4 + 4) / 72 + 2;
+
+ data_out = g_malloc (size_out);
+ len = g_base64_encode_step (data_in + data_in_offset, bytes_to_send, TRUE,
+ data_out, &state, &save);
+ chunk->state = state;
+ chunk->save = save;
+
+ /* LF->CRLF filter */
+ ptr_in = ptr_out = data_out;
+ for (i = 0; i < len; i++) {
+ if (*ptr_in == '\n') {
+ *ptr_in = '\r';
+ g_byte_array_append (array, (guint8 *) ptr_out, ptr_in - ptr_out);
+ g_byte_array_append (array, (guint8 *) "\r\n", strlen ("\r\n"));
+ ptr_out = ptr_in + 1;
+ }
+ ptr_in++;
+ }
+ if (ptr_in - ptr_out) {
+ g_byte_array_append (array, (guint8 *) ptr_out, ptr_in - ptr_out);
+ }
+
+ g_free (data_out);
+ data_out = NULL;
+
+ buffer->offset += bytes_to_send;
+ buffer->len -= bytes_to_send;
+
+ bytes_to_send = MIN (block_size, array->len);
+ memcpy ((guint8 *) curl_ptr, array->data, bytes_to_send);
+ g_byte_array_remove_range (array, 0, bytes_to_send);
+
+ if (array->len == 0) {
+ *last_chunk = 1;
+
+ }
+
+ return bytes_to_send;
+ }
+
+ /* at this point all data has been encoded */
+ memcpy ((guint8 *) curl_ptr, array->data, bytes_to_send);
+ g_byte_array_remove_range (array, 0, bytes_to_send);
+ if (array->len == 0) {
+ *last_chunk = 1;
+ }
+
+ return bytes_to_send;
+}
+
+static size_t
+gst_curl_smtp_sink_transfer_data_buffer (GstCurlBaseSink * bcsink,
+ void *curl_ptr, size_t block_size, guint * last_chunk)
+{
+ GstCurlSmtpSink *sink = GST_CURL_SMTP_SINK (bcsink);
+ size_t bytes_to_send;
+
+ if (sink->payload_headers && sink->payload_headers->len) {
+ return transfer_payload_headers (sink, curl_ptr, block_size);
+ }
+
+ if (sink->base64_chunk != NULL) {
+ bytes_to_send =
+ transfer_chunk (curl_ptr, bcsink->transfer_buf, sink->base64_chunk,
+ block_size, last_chunk);
+
+ GST_OBJECT_LOCK (sink);
+ if (sink->eos) {
+ gst_curl_smtp_sink_notify_transfer_end_unlocked (sink);
+ }
+ GST_OBJECT_UNLOCK (sink);
+
+ return bytes_to_send;
+ }
+
+ /* we should never get here */
+ return 0;
+}
+
+static size_t
+transfer_payload_headers (GstCurlSmtpSink * sink,
+ void *curl_ptr, size_t block_size)
+{
+ size_t bytes_to_send;
+ GByteArray *headers = sink->payload_headers;
+
+ bytes_to_send = MIN (block_size, headers->len);
+ memcpy ((guint8 *) curl_ptr, headers->data, bytes_to_send);
+ g_byte_array_remove_range (headers, 0, bytes_to_send);
+
+
+ if (headers->len == 0) {
+ g_byte_array_free (headers, TRUE);
+ sink->payload_headers = NULL;
+ }
+
+ return bytes_to_send;
+}
+
+
+static gboolean
+gst_curl_smtp_sink_prepare_transfer (GstCurlBaseSink * bcsink)
+{
+ GstCurlSmtpSink *sink = GST_CURL_SMTP_SINK (bcsink);
+ CURLcode res;
+ gboolean ret = TRUE;
+
+ if (sink->pop_location && strlen (sink->pop_location)) {
+ if ((sink->pop_curl = curl_easy_init ()) == NULL) {
+ GST_DEBUG_OBJECT (sink, "POP protocol: failed to create handler");
+ GST_ELEMENT_ERROR (sink, RESOURCE, WRITE,
+ ("POP protocol: failed to create handler"), (NULL));
+
+ return FALSE;
+ }
+
+ curl_easy_setopt (sink->pop_curl, CURLOPT_URL, sink->pop_location);
+ if (sink->pop_user != NULL && strlen (sink->pop_user) &&
+ sink->pop_passwd != NULL && strlen (sink->pop_passwd)) {
+ curl_easy_setopt (sink->pop_curl, CURLOPT_USERNAME, sink->pop_user);
+ curl_easy_setopt (sink->pop_curl, CURLOPT_PASSWORD, sink->pop_passwd);
+ }
+ }
+
+ if (sink->pop_curl == NULL) {
+ goto end;
+ }
+
+ /* ready to initialize connection to POP server */
+ res = curl_easy_perform (sink->pop_curl);
+ if (res != CURLE_OK) {
+ GST_DEBUG_OBJECT (sink, "POP transfer failed: %s",
+ curl_easy_strerror (res));
+ GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, ("POP transfer failed: %s",
+ curl_easy_strerror (res)), (NULL));
+
+ ret = FALSE;
+ }
+
+ curl_easy_cleanup (sink->pop_curl);
+ sink->pop_curl = NULL;
+
+end:
+ return ret;
+}
diff --git a/ext/curl/gstcurlsmtpsink.h b/ext/curl/gstcurlsmtpsink.h
new file mode 100644
index 00000000..ce8dc20c
--- /dev/null
+++ b/ext/curl/gstcurlsmtpsink.h
@@ -0,0 +1,87 @@
+/* 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_SMTP_SINK__
+#define __GST_CURL_SMTP_SINK__
+
+#include <gst/gst.h>
+#include <gst/base/gstbasesink.h>
+#include <curl/curl.h>
+#include "gstcurltlssink.h"
+
+G_BEGIN_DECLS
+#define GST_TYPE_CURL_SMTP_SINK \
+ (gst_curl_smtp_sink_get_type())
+#define GST_CURL_SMTP_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_CURL_SMTP_SINK, GstCurlSmtpSink))
+#define GST_CURL_SMTP_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_CURL_SMTP_SINK, GstCurlSmtpSinkClass))
+#define GST_IS_CURL_SMTP_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_CURL_SMTP_SINK))
+#define GST_IS_CURL_SMTP_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_CURL_SMTP_SINK))
+typedef struct _GstCurlSmtpSink GstCurlSmtpSink;
+typedef struct _GstCurlSmtpSinkClass GstCurlSmtpSinkClass;
+
+typedef struct _Base64Chunk Base64Chunk;
+
+struct _Base64Chunk
+{
+ GByteArray *chunk_array;
+ gint save;
+ gint state;
+};
+
+struct _GstCurlSmtpSink
+{
+ GstCurlTlsSink parent;
+
+ /*< private > */
+ Base64Chunk *base64_chunk;
+ GByteArray *payload_headers;
+ struct curl_slist *curl_recipients;
+ gchar *mail_rcpt;
+ gchar *mail_from;
+ gchar *subject;
+ gchar *message_body;
+ gchar *content_type;
+ gboolean use_ssl;
+ gint nbr_attachments;
+ gchar *pop_user;
+ gchar *pop_passwd;
+ gchar *pop_location;
+ CURL *pop_curl;
+
+ gboolean transfer_end;
+ GCond *cond_transfer_end;
+
+ gint nbr_attachments_left;
+ gboolean reset_transfer_options;
+ gboolean eos;
+};
+
+struct _GstCurlSmtpSinkClass
+{
+ GstCurlTlsSinkClass parent_class;
+};
+
+GType gst_curl_smtp_sink_get_type (void);
+
+G_END_DECLS
+#endif
diff --git a/ext/curl/gstcurltlssink.c b/ext/curl/gstcurltlssink.c
new file mode 100644
index 00000000..fcb1570c
--- /dev/null
+++ b/ext/curl/gstcurltlssink.c
@@ -0,0 +1,279 @@
+/* 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.
+ */
+
+/**
+ * SECTION:element-curltlssink
+ * @short_description: sink that uploads data to a server using libcurl
+ * @see_also:
+ *
+ * This is a network sink that uses libcurl.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <curl/curl.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <unistd.h>
+#include <netinet/ip.h>
+#include <netinet/tcp.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "gstcurlbasesink.h"
+#include "gstcurltlssink.h"
+
+/* Default values */
+#define GST_CAT_DEFAULT gst_curl_tls_sink_debug
+#define DEFAULT_INSECURE TRUE
+
+
+/* Plugin specific settings */
+
+GST_DEBUG_CATEGORY_STATIC (gst_curl_tls_sink_debug);
+
+enum
+{
+ PROP_0,
+ PROP_CA_CERT,
+ PROP_CA_PATH,
+ PROP_CRYPTO_ENGINE,
+ PROP_INSECURE
+};
+
+
+/* Object class function declarations */
+
+static void gst_curl_tls_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_curl_tls_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_curl_tls_sink_finalize (GObject * gobject);
+static gboolean gst_curl_tls_sink_set_options_unlocked
+ (GstCurlBaseSink * bcsink);
+
+#define gst_curl_tls_sink_parent_class parent_class
+G_DEFINE_TYPE (GstCurlTlsSink, gst_curl_tls_sink, GST_TYPE_CURL_BASE_SINK);
+
+/* private functions */
+
+static void
+gst_curl_tls_sink_class_init (GstCurlTlsSinkClass * klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+ GST_DEBUG_CATEGORY_INIT (gst_curl_tls_sink_debug, "curltlssink", 0,
+ "curl tls sink element");
+ GST_DEBUG_OBJECT (klass, "class_init");
+
+ gst_element_class_set_details_simple (element_class,
+ "Curl tls sink",
+ "Sink/Network",
+ "Upload data over TLS protocol using libcurl",
+ "Patricia Muscalu <patricia@axis.com>");
+
+ gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_curl_tls_sink_finalize);
+
+ gobject_class->set_property = gst_curl_tls_sink_set_property;
+ gobject_class->get_property = gst_curl_tls_sink_get_property;
+
+ klass->set_options_unlocked = gst_curl_tls_sink_set_options_unlocked;
+
+ g_object_class_install_property (gobject_class, PROP_CA_CERT,
+ g_param_spec_string ("ca-cert",
+ "CA certificate",
+ "CA certificate to use in order to verify the peer",
+ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class, PROP_CA_PATH,
+ g_param_spec_string ("ca-path",
+ "CA path",
+ "CA directory path to use in order to verify the peer",
+ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_CRYPTO_ENGINE,
+ g_param_spec_string ("crypto-engine",
+ "OpenSSL crypto engine",
+ "OpenSSL crytpo engine to use for cipher operations",
+ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_INSECURE,
+ g_param_spec_boolean ("insecure",
+ "Perform insecure SSL connections",
+ "Allow curl to perform insecure SSL connections",
+ DEFAULT_INSECURE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+}
+
+static void
+gst_curl_tls_sink_init (GstCurlTlsSink * sink)
+{
+ sink->ca_cert = NULL;
+ sink->ca_path = NULL;
+ sink->crypto_engine = NULL;
+ sink->insecure = DEFAULT_INSECURE;
+}
+
+static void
+gst_curl_tls_sink_finalize (GObject * gobject)
+{
+ GstCurlTlsSink *this = GST_CURL_TLS_SINK (gobject);
+
+ GST_DEBUG ("finalizing curltlssink");
+
+ g_free (this->ca_cert);
+ g_free (this->ca_path);
+ g_free (this->crypto_engine);
+
+ G_OBJECT_CLASS (parent_class)->finalize (gobject);
+}
+
+static void
+gst_curl_tls_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstCurlTlsSink *sink;
+ GstState cur_state;
+
+ g_return_if_fail (GST_IS_CURL_TLS_SINK (object));
+ sink = GST_CURL_TLS_SINK (object);
+
+ gst_element_get_state (GST_ELEMENT (sink), &cur_state, NULL, 0);
+ if (cur_state != GST_STATE_PLAYING && cur_state != GST_STATE_PAUSED) {
+ GST_OBJECT_LOCK (sink);
+
+ switch (prop_id) {
+ case PROP_CA_CERT:
+ g_free (sink->ca_cert);
+ sink->ca_cert = g_value_dup_string (value);
+ sink->insecure = FALSE;
+ GST_DEBUG_OBJECT (sink, "ca_cert set to %s", sink->ca_cert);
+ break;
+ case PROP_CA_PATH:
+ g_free (sink->ca_path);
+ sink->ca_path = g_value_dup_string (value);
+ sink->insecure = FALSE;
+ GST_DEBUG_OBJECT (sink, "ca_path set to %s", sink->ca_path);
+ break;
+ case PROP_CRYPTO_ENGINE:
+ g_free (sink->crypto_engine);
+ sink->crypto_engine = g_value_dup_string (value);
+ GST_DEBUG_OBJECT (sink, "crypto_engine set to %s", sink->crypto_engine);
+ break;
+ case PROP_INSECURE:
+ sink->insecure = g_value_get_boolean (value);
+ GST_DEBUG_OBJECT (sink, "insecure set to %d", sink->insecure);
+ break;
+ }
+
+ GST_OBJECT_UNLOCK (sink);
+
+ return;
+ }
+
+ GST_OBJECT_UNLOCK (sink);
+}
+
+static void
+gst_curl_tls_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ GstCurlTlsSink *sink;
+
+ g_return_if_fail (GST_IS_CURL_TLS_SINK (object));
+ sink = GST_CURL_TLS_SINK (object);
+
+ switch (prop_id) {
+ case PROP_CA_CERT:
+ g_value_set_string (value, sink->ca_cert);
+ break;
+ case PROP_CA_PATH:
+ g_value_set_string (value, sink->ca_path);
+ break;
+ case PROP_CRYPTO_ENGINE:
+ g_value_set_string (value, sink->crypto_engine);
+ break;
+ case PROP_INSECURE:
+ g_value_set_boolean (value, sink->insecure);
+ break;
+ default:
+ GST_DEBUG_OBJECT (sink, "invalid property id");
+ break;
+ }
+}
+
+static gboolean
+gst_curl_tls_sink_set_options_unlocked (GstCurlBaseSink * bcsink)
+{
+ GstCurlTlsSink *sink = GST_CURL_TLS_SINK (bcsink);
+
+ if (!g_str_has_prefix (bcsink->url, "http")) {
+ curl_easy_setopt (bcsink->curl, CURLOPT_USE_SSL, 1L);
+ }
+
+ /* crypto engine */
+ if ((g_strcmp0 (sink->crypto_engine, "auto") == 0) ||
+ (sink->crypto_engine == NULL)) {
+ if (curl_easy_setopt (bcsink->curl, CURLOPT_SSLENGINE_DEFAULT, 1L)
+ != CURLE_OK) {
+ GST_WARNING ("Error setting up default SSL engine.");
+ }
+ } else {
+ if (curl_easy_setopt (bcsink->curl, CURLOPT_SSLENGINE,
+ sink->crypto_engine) == CURLE_SSL_ENGINE_NOTFOUND) {
+ GST_WARNING ("Error setting up SSL engine: %s.", sink->crypto_engine);
+ }
+ }
+
+ /* note that, using ca-path can allow libcurl to make SSL-connections much more
+ * efficiently than using ca-cert if the ca-cert ile
+ * contains many CA certificates. */
+ if (sink->ca_cert != NULL && strlen (sink->ca_cert)) {
+ GST_DEBUG ("setting ca cert");
+ curl_easy_setopt (bcsink->curl, CURLOPT_CAINFO, sink->ca_cert);
+ }
+
+ if (sink->ca_path != NULL && strlen (sink->ca_path)) {
+ GST_DEBUG ("setting ca path");
+ curl_easy_setopt (bcsink->curl, CURLOPT_CAPATH, sink->ca_path);
+ }
+
+ if (!sink->insecure) {
+ /* identify authenticity of the peer's certificate */
+ curl_easy_setopt (bcsink->curl, CURLOPT_SSL_VERIFYPEER, 1L);
+ /* when CURLOPT_SSL_VERIFYHOST is 2, the commonName or subjectAltName
+ * fields are verified */
+ curl_easy_setopt (bcsink->curl, CURLOPT_SSL_VERIFYHOST, 2L);
+
+ return TRUE;
+ }
+
+ /* allow "insecure" SSL connections and transfers */
+ if (sink->insecure) {
+ curl_easy_setopt (bcsink->curl, CURLOPT_SSL_VERIFYPEER, 0L);
+ curl_easy_setopt (bcsink->curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ }
+
+ return TRUE;
+}
diff --git a/ext/curl/gstcurltlssink.h b/ext/curl/gstcurltlssink.h
new file mode 100644
index 00000000..ca8f73a8
--- /dev/null
+++ b/ext/curl/gstcurltlssink.h
@@ -0,0 +1,66 @@
+/* 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_TLS_SINK__
+#define __GST_CURL_TLS_SINK__
+
+#include <gst/gst.h>
+#include <gst/base/gstbasesink.h>
+#include <curl/curl.h>
+#include "gstcurlbasesink.h"
+
+G_BEGIN_DECLS
+#define GST_TYPE_CURL_TLS_SINK \
+ (gst_curl_tls_sink_get_type())
+#define GST_CURL_TLS_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_CURL_TLS_SINK, GstCurlTlsSink))
+#define GST_CURL_TLS_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_CURL_TLS_SINK, GstCurlTlsSinkClass))
+#define GST_CURL_TLS_SINK_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_CURL_TLS_SINK, GstCurlTlsSinkClass))
+#define GST_IS_CURL_TLS_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_CURL_TLS_SINK))
+#define GST_IS_CURL_TLS_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_CURL_TLS_SINK))
+typedef struct _GstCurlTlsSink GstCurlTlsSink;
+typedef struct _GstCurlTlsSinkClass GstCurlTlsSinkClass;
+
+struct _GstCurlTlsSink
+{
+ GstCurlBaseSink parent;
+
+ /*< private > */
+ gchar *ca_cert;
+ gchar *ca_path;
+ gchar *crypto_engine;
+ gboolean insecure;
+};
+
+struct _GstCurlTlsSinkClass
+{
+ GstCurlBaseSinkClass parent_class;
+
+ /* vmethods */
+ gboolean (*set_options_unlocked) (GstCurlBaseSink * sink);
+};
+
+GType gst_curl_tls_sink_get_type (void);
+
+G_END_DECLS
+#endif
diff --git a/ext/dc1394/Makefile.in b/ext/dc1394/Makefile.in
index e6735e14..f94a77f8 100644
--- a/ext/dc1394/Makefile.in
+++ b/ext/dc1394/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -638,7 +640,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/dirac/Makefile.in b/ext/dirac/Makefile.in
index b40819eb..a20f0757 100644
--- a/ext/dirac/Makefile.in
+++ b/ext/dirac/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -463,6 +463,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -479,6 +481,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -511,10 +514,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -653,7 +655,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/directfb/Makefile.in b/ext/directfb/Makefile.in
index 1cb3f97a..3c34a820 100644
--- a/ext/directfb/Makefile.in
+++ b/ext/directfb/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -470,6 +470,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -486,6 +488,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -518,10 +521,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -652,7 +654,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/divx/Makefile.in b/ext/divx/Makefile.in
index d75e08e4..d6a271e6 100644
--- a/ext/divx/Makefile.in
+++ b/ext/divx/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -468,6 +468,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -484,6 +486,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -516,10 +519,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -646,7 +648,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/dts/Makefile.in b/ext/dts/Makefile.in
index 86562630..23560943 100644
--- a/ext/dts/Makefile.in
+++ b/ext/dts/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -640,7 +642,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/faac/Makefile.am b/ext/faac/Makefile.am
index eb230dc8..089a6f1e 100644
--- a/ext/faac/Makefile.am
+++ b/ext/faac/Makefile.am
@@ -11,3 +11,18 @@ libgstfaac_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstfaac_la_LIBTOOLFLAGS = --tag=disable-static
noinst_HEADERS = gstfaac.h
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+ androgenizer \
+ -:PROJECT libgstfaac -:SHARED libgstfaac \
+ -:TAGS eng debug \
+ -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+ -:SOURCES $(libgstfaac_la_SOURCES) \
+ -:CPPFLAGS $(CPPFLAGS) \
+ -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstfaac_la_CFLAGS) \
+ -:LDFLAGS $(libgstfaac_la_LDFLAGS) \
+ $(libgstfaac_la_LIBADD) \
+ -ldl \
+ -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+ LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+ > $@
diff --git a/ext/faac/Makefile.in b/ext/faac/Makefile.in
index e582e4a5..e49e2d5b 100644
--- a/ext/faac/Makefile.in
+++ b/ext/faac/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -640,7 +642,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
@@ -914,6 +916,21 @@ uninstall-am: uninstall-pluginLTLIBRARIES
tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
+Android.mk: Makefile.am $(BUILT_SOURCES)
+ androgenizer \
+ -:PROJECT libgstfaac -:SHARED libgstfaac \
+ -:TAGS eng debug \
+ -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+ -:SOURCES $(libgstfaac_la_SOURCES) \
+ -:CPPFLAGS $(CPPFLAGS) \
+ -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstfaac_la_CFLAGS) \
+ -:LDFLAGS $(libgstfaac_la_LDFLAGS) \
+ $(libgstfaac_la_LIBADD) \
+ -ldl \
+ -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+ LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+ > $@
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/ext/faad/Makefile.in b/ext/faad/Makefile.in
index 2a56810d..b70b52e8 100644
--- a/ext/faad/Makefile.in
+++ b/ext/faad/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -640,7 +642,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/flite/Makefile.in b/ext/flite/Makefile.in
index dbdfa196..ff7b4e44 100644
--- a/ext/flite/Makefile.in
+++ b/ext/flite/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -459,6 +459,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -475,6 +477,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -507,10 +510,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -642,7 +644,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/gme/Makefile.in b/ext/gme/Makefile.in
index 364a8554..b975f641 100644
--- a/ext/gme/Makefile.in
+++ b/ext/gme/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -634,7 +636,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/gsettings/Makefile.in b/ext/gsettings/Makefile.in
index 8387f4cf..b2f570ab 100644
--- a/ext/gsettings/Makefile.in
+++ b/ext/gsettings/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -471,6 +471,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -487,6 +489,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -519,10 +522,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -671,7 +673,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/gsm/Makefile.in b/ext/gsm/Makefile.in
index b573a837..2fd75b95 100644
--- a/ext/gsm/Makefile.in
+++ b/ext/gsm/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -643,7 +645,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/jp2k/Makefile.in b/ext/jp2k/Makefile.in
index a18a3d03..3427c872 100644
--- a/ext/jp2k/Makefile.in
+++ b/ext/jp2k/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -643,7 +645,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/kate/Makefile.in b/ext/kate/Makefile.in
index 1c139cdb..dc88a7a7 100644
--- a/ext/kate/Makefile.in
+++ b/ext/kate/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -472,6 +472,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -488,6 +490,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -520,10 +523,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -655,7 +657,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/ladspa/Makefile.in b/ext/ladspa/Makefile.in
index b33305ba..306f81cd 100644
--- a/ext/ladspa/Makefile.in
+++ b/ext/ladspa/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -643,7 +645,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/libmms/Makefile.in b/ext/libmms/Makefile.in
index 741e804d..1fd1913e 100644
--- a/ext/libmms/Makefile.in
+++ b/ext/libmms/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -635,7 +637,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/libmms/gstmms.c b/ext/libmms/gstmms.c
index ee948336..09c30891 100644
--- a/ext/libmms/gstmms.c
+++ b/ext/libmms/gstmms.c
@@ -287,7 +287,7 @@ gst_mms_do_seek (GstBaseSrc * src, GstSegment * segment)
}
gst_segment_init (segment, GST_FORMAT_BYTES);
gst_segment_do_seek (segment, segment->rate, GST_FORMAT_BYTES,
- segment->flags, GST_SEEK_TYPE_SET, start, GST_SEEK_TYPE_NONE,
+ GST_SEEK_FLAG_NONE, GST_SEEK_TYPE_SET, start, GST_SEEK_TYPE_NONE,
segment->stop, NULL);
return TRUE;
}
diff --git a/ext/lv2/Makefile.in b/ext/lv2/Makefile.in
index 1dc7f9ce..35b4f4f4 100644
--- a/ext/lv2/Makefile.in
+++ b/ext/lv2/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -643,7 +645,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/mimic/Makefile.in b/ext/mimic/Makefile.in
index 32a00582..7540a013 100644
--- a/ext/mimic/Makefile.in
+++ b/ext/mimic/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -635,7 +637,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/modplug/Makefile.in b/ext/modplug/Makefile.in
index 223fdf8f..35e33e27 100644
--- a/ext/modplug/Makefile.in
+++ b/ext/modplug/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -634,7 +636,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/mpeg2enc/Makefile.in b/ext/mpeg2enc/Makefile.in
index c782894d..ddef4fb6 100644
--- a/ext/mpeg2enc/Makefile.in
+++ b/ext/mpeg2enc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -655,7 +657,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/mplex/Makefile.in b/ext/mplex/Makefile.in
index 1c800f2b..5f1f97be 100644
--- a/ext/mplex/Makefile.in
+++ b/ext/mplex/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -653,7 +655,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/musepack/Makefile.in b/ext/musepack/Makefile.in
index ddee2d6e..c3c629cf 100644
--- a/ext/musepack/Makefile.in
+++ b/ext/musepack/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -641,7 +643,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/musicbrainz/Makefile.in b/ext/musicbrainz/Makefile.in
index 90e454eb..3dc96a5f 100644
--- a/ext/musicbrainz/Makefile.in
+++ b/ext/musicbrainz/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -636,7 +638,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/mythtv/Makefile.in b/ext/mythtv/Makefile.in
index 30491d8a..b0f78746 100644
--- a/ext/mythtv/Makefile.in
+++ b/ext/mythtv/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -646,7 +648,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/nas/Makefile.in b/ext/nas/Makefile.in
index 8596f721..443d7990 100644
--- a/ext/nas/Makefile.in
+++ b/ext/nas/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -638,7 +640,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/nas/nassink.c b/ext/nas/nassink.c
index e4ebf8da..afd572a2 100644
--- a/ext/nas/nassink.c
+++ b/ext/nas/nassink.c
@@ -86,7 +86,6 @@ static void NAS_sendData (GstNasSink * sink, AuUint32 numBytes);
static AuBool NAS_EventHandler (AuServer * aud, AuEvent * ev,
AuEventHandlerRec * handler);
static AuDeviceID NAS_getDevice (AuServer * aud, int numTracks);
-static int NAS_createFlow (GstNasSink * sink, GstRingBufferSpec * spec);
GST_BOILERPLATE (GstNasSink, gst_nas_sink, GstAudioSink, GST_TYPE_AUDIO_SINK);
@@ -199,33 +198,148 @@ gst_nas_sink_getcaps (GstBaseSink * bsink)
return caps;
}
+static gint
+gst_nas_sink_sink_get_format (const GstRingBufferSpec * spec)
+{
+ gint result;
+
+ switch (spec->format) {
+ case GST_U8:
+ result = AuFormatLinearUnsigned8;
+ break;
+ case GST_S8:
+ result = AuFormatLinearSigned8;
+ break;
+ case GST_S16_LE:
+ result = AuFormatLinearSigned16LSB;
+ break;
+ case GST_S16_BE:
+ result = AuFormatLinearSigned16MSB;
+ break;
+ case GST_U16_LE:
+ result = AuFormatLinearUnsigned16LSB;
+ break;
+ case GST_U16_BE:
+ result = AuFormatLinearUnsigned16MSB;
+ break;
+ default:
+ result = 0;
+ break;
+ }
+ return result;
+}
+
static gboolean
gst_nas_sink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
{
GstNasSink *sink = GST_NAS_SINK (asink);
+ AuElement elements[2];
+ AuUint32 buf_samples;
+ unsigned char format;
+
+ format = gst_nas_sink_sink_get_format (spec);
+ if (format == 0) {
+ GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, (NULL),
+ ("Unable to get format %d", spec->format));
+ return FALSE;
+ }
+ GST_DEBUG_OBJECT (sink, "Format: %d %d\n", spec->format, format);
+
+ sink->flow = AuGetScratchFlow (sink->audio, NULL);
+ if (sink->flow == 0) {
+ GST_DEBUG_OBJECT (sink, "couldn't get flow");
+ return FALSE;
+ }
+
+ buf_samples = spec->rate * NAS_SOUND_PORT_DURATION;
+ /*
+ spec->segsize = gst_util_uint64_scale (buf_samples * spec->bytes_per_sample,
+ spec->latency_time, GST_SECOND / GST_USECOND);
+ spec->segsize -= spec->segsize % spec->bytes_per_sample;
+ spec->segtotal = spec->buffer_time / spec->latency_time;
+ */
+ spec->segsize = buf_samples * spec->bytes_per_sample;
+ spec->segtotal = 1;
- /*spec->bytes_per_sample = sink->rate * NAS_SOUND_PORT_DURATION; */
- /*spec->bytes_per_sample = (spec->width / 8) * spec->channels; */
memset (spec->silence_sample, 0, spec->bytes_per_sample);
- GST_DEBUG_OBJECT (sink, "Sample %d", spec->bytes_per_sample);
+ GST_DEBUG_OBJECT (sink, "Bytes per sample %d", spec->bytes_per_sample);
- if (sink->audio == NULL)
- return TRUE;
+ GST_DEBUG_OBJECT (sink, "Rate %d Format %d tracks %d bufs %d %d/%d w %d",
+ spec->rate, format, spec->channels, (gint) buf_samples, spec->segsize,
+ spec->segtotal, spec->width);
+ AuMakeElementImportClient (&elements[0], /* element */
+ spec->rate, /* rate */
+ format, /* format */
+ spec->channels, /* number of tracks */
+ AuTrue, /* discart */
+ buf_samples, /* max samples */
+ (AuUint32) (buf_samples / 100 * AuSoundPortLowWaterMark),
+ /* low water mark */
+ 0, /* num actions */
+ NULL);
+
+ sink->device = NAS_getDevice (sink->audio, spec->channels);
+ if (sink->device == AuNone) {
+ GST_DEBUG_OBJECT (sink, "no device with %i tracks found", spec->channels);
+ return FALSE;
+ }
+
+ AuMakeElementExportDevice (&elements[1], /* element */
+ 0, /* input */
+ sink->device, /* device */
+ spec->rate, /* rate */
+ AuUnlimitedSamples, /* num samples */
+ 0, /* num actions */
+ NULL); /* actions */
+
+ AuSetElements (sink->audio, /* server */
+ sink->flow, /* flow ID */
+ AuTrue, /* clocked */
+ 2, /* num elements */
+ elements, /* elements */
+ NULL);
+
+ AuRegisterEventHandler (sink->audio, /* server */
+ AuEventHandlerIDMask, /* value mask */
+ 0, /* type */
+ sink->flow, /* flow ID */
+ NAS_EventHandler, /* callback */
+ (AuPointer) sink); /* data */
+
+ AuStartFlow (sink->audio, sink->flow, NULL);
+
+ return TRUE;
+}
+
+static gboolean
+gst_nas_sink_unprepare (GstAudioSink * asink)
+{
+ GstNasSink *sink = GST_NAS_SINK (asink);
if (sink->flow != AuNone) {
+ AuBool clocked;
+ int num_elements;
+ AuStatus status;
+ AuElement *oldelems;
+
GST_DEBUG_OBJECT (sink, "flushing buffer");
NAS_flush (sink);
+
+ oldelems =
+ AuGetElements (sink->audio, sink->flow, &clocked, &num_elements,
+ &status);
+ if (num_elements > 0) {
+ GST_DEBUG_OBJECT (sink, "GetElements status: %i", status);
+ if (oldelems)
+ AuFreeElements (sink->audio, num_elements, oldelems);
+ }
+
AuStopFlow (sink->audio, sink->flow, NULL);
AuReleaseScratchFlow (sink->audio, sink->flow, NULL);
sink->flow = AuNone;
}
+ sink->need_data = 0;
- return NAS_createFlow (sink, spec);
-}
-
-static gboolean
-gst_nas_sink_unprepare (GstAudioSink * asink)
-{
return TRUE;
}
@@ -243,7 +357,8 @@ gst_nas_sink_reset (GstAudioSink * asink)
GST_DEBUG_OBJECT (sink, "reset");
- NAS_flush (sink);
+ if (sink->flow != AuNone)
+ AuStopFlow (sink->audio, sink->flow, NULL);
}
static guint
@@ -342,22 +457,11 @@ gst_nas_sink_close (GstAudioSink * asink)
{
GstNasSink *sink = GST_NAS_SINK (asink);
- if (sink->audio == NULL)
- return TRUE;
-
- if (sink->flow != AuNone) {
- NAS_flush (sink);
-
- AuStopFlow (sink->audio, sink->flow, NULL);
- AuReleaseScratchFlow (sink->audio, sink->flow, NULL);
- sink->flow = AuNone;
+ if (sink->audio) {
+ AuCloseServer (sink->audio);
+ sink->audio = NULL;
}
- sink->need_data = 0;
-
- AuCloseServer (sink->audio);
- sink->audio = NULL;
-
GST_DEBUG_OBJECT (sink, "closed audio device");
return TRUE;
}
@@ -460,163 +564,6 @@ NAS_getDevice (AuServer * aud, int numTracks)
return AuNone;
}
-static gint
-gst_nas_sink_sink_get_format (const GstRingBufferSpec * spec)
-{
- gint result;
-
- switch (spec->format) {
- case GST_U8:
- result = AuFormatLinearUnsigned8;
- break;
- case GST_S8:
- result = AuFormatLinearSigned8;
- break;
- case GST_S16_LE:
- result = AuFormatLinearSigned16LSB;
- break;
- case GST_S16_BE:
- result = AuFormatLinearSigned16MSB;
- break;
- case GST_U16_LE:
- result = AuFormatLinearUnsigned16LSB;
- break;
- case GST_U16_BE:
- result = AuFormatLinearUnsigned16MSB;
- break;
- default:
- result = 0;
- break;
- }
- return result;
-}
-
-static gboolean
-NAS_createFlow (GstNasSink * sink, GstRingBufferSpec * spec)
-{
- AuElement elements[2];
- AuUint32 buf_samples;
- unsigned char format;
-
- format = gst_nas_sink_sink_get_format (spec);
- if (format == 0) {
- GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, (NULL),
- ("Unable to get format %d", spec->format));
- return FALSE;
- }
- GST_DEBUG_OBJECT (sink, "Format: %d %d\n", spec->format, format);
-
- sink->flow = AuGetScratchFlow (sink->audio, NULL);
- if (sink->flow == 0) {
- GST_DEBUG_OBJECT (sink, "couldn't get flow");
- return FALSE;
- }
-
- /* free old Elements and reconnet to server, needed to change samplerate */
- {
- AuBool clocked;
- int num_elements;
- AuStatus status;
- AuElement *oldelems;
-
- oldelems =
- AuGetElements (sink->audio, sink->flow, &clocked, &num_elements,
- &status);
- if (num_elements > 0) {
- GST_DEBUG_OBJECT (sink, "GetElements status: %i", status);
- if (oldelems)
- AuFreeElements (sink->audio, num_elements, oldelems);
- gst_nas_sink_close (GST_AUDIO_SINK (sink));
- gst_nas_sink_open (GST_AUDIO_SINK (sink));
- sink->flow = AuGetScratchFlow (sink->audio, NULL);
- if (sink->flow == 0) {
- GST_DEBUG_OBJECT (sink, "couldn't get flow");
- return FALSE;
- }
- }
- }
-
- /* free old Elements and reconnet to server, needed to change samplerate */
- {
- AuBool clocked;
- int num_elements;
- AuStatus status;
- AuElement *oldelems;
-
- oldelems =
- AuGetElements (sink->audio, sink->flow, &clocked, &num_elements,
- &status);
- if (num_elements > 0) {
- GST_DEBUG_OBJECT (sink, "GetElements status: %i", status);
- if (oldelems)
- AuFreeElements (sink->audio, num_elements, oldelems);
- gst_nas_sink_close (GST_AUDIO_SINK (sink));
- gst_nas_sink_open (GST_AUDIO_SINK (sink));
- sink->flow = AuGetScratchFlow (sink->audio, NULL);
- if (sink->flow == 0) {
- GST_DEBUG_OBJECT (sink, "couldn't get flow");
- return FALSE;
- }
- }
- }
-
- buf_samples = spec->rate * NAS_SOUND_PORT_DURATION;
- /*
- spec->segsize = gst_util_uint64_scale (buf_samples * spec->bytes_per_sample,
- spec->latency_time, GST_SECOND / GST_USECOND);
- spec->segsize -= spec->segsize % spec->bytes_per_sample;
- spec->segtotal = spec->buffer_time / spec->latency_time;
- */
- spec->segsize = buf_samples * spec->bytes_per_sample;
- spec->segtotal = 1;
-
- GST_DEBUG_OBJECT (sink, "Rate %d Format %d tracks %d bufs %d %d/%d w %d",
- spec->rate, format, spec->channels, (gint) buf_samples, spec->segsize,
- spec->segtotal, spec->width);
- AuMakeElementImportClient (&elements[0], /* element */
- spec->rate, /* rate */
- format, /* format */
- spec->channels, /* number of tracks */
- AuTrue, /* discart */
- buf_samples, /* max samples */
- (AuUint32) (buf_samples / 100 * AuSoundPortLowWaterMark),
- /* low water mark */
- 0, /* num actions */
- NULL);
-
- sink->device = NAS_getDevice (sink->audio, spec->channels);
- if (sink->device == AuNone) {
- GST_DEBUG_OBJECT (sink, "no device with %i tracks found", spec->channels);
- return FALSE;
- }
-
- AuMakeElementExportDevice (&elements[1], /* element */
- 0, /* input */
- sink->device, /* device */
- spec->rate, /* rate */
- AuUnlimitedSamples, /* num samples */
- 0, /* num actions */
- NULL); /* actions */
-
- AuSetElements (sink->audio, /* server */
- sink->flow, /* flow ID */
- AuTrue, /* clocked */
- 2, /* num elements */
- elements, /* elements */
- NULL);
-
- AuRegisterEventHandler (sink->audio, /* server */
- AuEventHandlerIDMask, /* value mask */
- 0, /* type */
- sink->flow, /* flow ID */
- NAS_EventHandler, /* callback */
- (AuPointer) sink); /* data */
-
- AuStartFlow (sink->audio, sink->flow, NULL);
-
- return TRUE;
-}
-
static gboolean
plugin_init (GstPlugin * plugin)
{
diff --git a/ext/neon/Makefile.in b/ext/neon/Makefile.in
index 04ac2dd6..fe92b6d5 100644
--- a/ext/neon/Makefile.in
+++ b/ext/neon/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -635,7 +637,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/ofa/Makefile.in b/ext/ofa/Makefile.in
index 8c8defec..894355ce 100644
--- a/ext/ofa/Makefile.in
+++ b/ext/ofa/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -644,7 +646,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/openal/Makefile.in b/ext/openal/Makefile.in
index 6ceec52d..7cbbd245 100644
--- a/ext/openal/Makefile.in
+++ b/ext/openal/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -465,6 +465,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -481,6 +483,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -513,10 +516,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -645,7 +647,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/opencv/Makefile.in b/ext/opencv/Makefile.in
index f4d31377..a10e6ff0 100644
--- a/ext/opencv/Makefile.in
+++ b/ext/opencv/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -492,6 +492,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -508,6 +510,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -540,10 +543,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -718,7 +720,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/opus/Makefile.in b/ext/opus/Makefile.in
index 9ed593ff..188bd8a1 100644
--- a/ext/opus/Makefile.in
+++ b/ext/opus/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -465,6 +465,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -481,6 +483,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -513,10 +516,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -651,7 +653,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/opus/gstopusheader.c b/ext/opus/gstopusheader.c
index 2de891db..8dc5d271 100644
--- a/ext/opus/gstopusheader.c
+++ b/ext/opus/gstopusheader.c
@@ -33,6 +33,7 @@ gst_opus_enc_create_id_buffer (gint nchannels, gint n_stereo_streams,
{
GstBuffer *buffer;
GstByteWriter bw;
+ gboolean hdl = TRUE;
g_return_val_if_fail (nchannels > 0 && nchannels < 256, NULL);
g_return_val_if_fail (n_stereo_streams >= 0, NULL);
@@ -41,19 +42,22 @@ gst_opus_enc_create_id_buffer (gint nchannels, gint n_stereo_streams,
gst_byte_writer_init (&bw);
/* See http://wiki.xiph.org/OggOpus */
- gst_byte_writer_put_data (&bw, (const guint8 *) "OpusHead", 8);
- gst_byte_writer_put_uint8 (&bw, 0); /* version number */
- gst_byte_writer_put_uint8 (&bw, nchannels);
- gst_byte_writer_put_uint16_le (&bw, 0); /* pre-skip */
- gst_byte_writer_put_uint32_le (&bw, sample_rate);
- gst_byte_writer_put_uint16_le (&bw, 0); /* output gain */
- gst_byte_writer_put_uint8 (&bw, channel_mapping_family);
+ hdl &= gst_byte_writer_put_data (&bw, (const guint8 *) "OpusHead", 8);
+ hdl &= gst_byte_writer_put_uint8 (&bw, 0); /* version number */
+ hdl &= gst_byte_writer_put_uint8 (&bw, nchannels);
+ hdl &= gst_byte_writer_put_uint16_le (&bw, 0); /* pre-skip */
+ hdl &= gst_byte_writer_put_uint32_le (&bw, sample_rate);
+ hdl &= gst_byte_writer_put_uint16_le (&bw, 0); /* output gain */
+ hdl &= gst_byte_writer_put_uint8 (&bw, channel_mapping_family);
if (channel_mapping_family > 0) {
- gst_byte_writer_put_uint8 (&bw, nchannels - n_stereo_streams);
- gst_byte_writer_put_uint8 (&bw, n_stereo_streams);
- gst_byte_writer_put_data (&bw, channel_mapping, nchannels);
+ hdl &= gst_byte_writer_put_uint8 (&bw, nchannels - n_stereo_streams);
+ hdl &= gst_byte_writer_put_uint8 (&bw, n_stereo_streams);
+ hdl &= gst_byte_writer_put_data (&bw, channel_mapping, nchannels);
}
+ if (!hdl)
+ GST_WARNING ("Error creating header");
+
buffer = gst_byte_writer_reset_and_get_buffer (&bw);
GST_BUFFER_OFFSET (buffer) = 0;
diff --git a/ext/resindvd/Makefile.in b/ext/resindvd/Makefile.in
index c0ff4d54..005203c2 100644
--- a/ext/resindvd/Makefile.in
+++ b/ext/resindvd/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -469,6 +469,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -485,6 +487,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -517,10 +520,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -674,7 +676,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/rsvg/Makefile.in b/ext/rsvg/Makefile.in
index 61e76a05..f2094d1d 100644
--- a/ext/rsvg/Makefile.in
+++ b/ext/rsvg/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -645,7 +647,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/rsvg/gstrsvg.c b/ext/rsvg/gstrsvg.c
index 0e181109..fe1bc448 100644
--- a/ext/rsvg/gstrsvg.c
+++ b/ext/rsvg/gstrsvg.c
@@ -29,7 +29,9 @@
static gboolean
plugin_init (GstPlugin * plugin)
{
+#ifndef HAVE_RSVG_2_35_0
rsvg_init ();
+#endif
return (gst_element_register (plugin, "rsvgoverlay",
GST_RANK_NONE, GST_TYPE_RSVG_OVERLAY)
diff --git a/ext/rsvg/gstrsvgdec.c b/ext/rsvg/gstrsvgdec.c
index f7cb701a..13b7baa6 100644
--- a/ext/rsvg/gstrsvgdec.c
+++ b/ext/rsvg/gstrsvgdec.c
@@ -150,11 +150,6 @@ gst_rsvg_dec_reset (GstRsvgDec * dec)
g_list_foreach (dec->pending_events, (GFunc) gst_mini_object_unref, NULL);
g_list_free (dec->pending_events);
dec->pending_events = NULL;
-
- if (dec->pending_tags) {
- gst_tag_list_free (dec->pending_tags);
- dec->pending_tags = NULL;
- }
}
#define CAIRO_UNPREMULTIPLY(a,r,g,b) G_STMT_START { \
@@ -198,7 +193,6 @@ gst_rsvg_decode_image (GstRsvgDec * rsvg, const guint8 * data, guint size,
GError *error = NULL;
RsvgDimensionData dimension;
gdouble scalex, scaley;
- const gchar *title = NULL, *comment = NULL;
GST_LOG_OBJECT (rsvg, "parsing svg");
@@ -209,23 +203,6 @@ gst_rsvg_decode_image (GstRsvgDec * rsvg, const guint8 * data, guint size,
return GST_FLOW_ERROR;
}
- title = rsvg_handle_get_title (handle);
- comment = rsvg_handle_get_desc (handle);
-
- if (title || comment) {
- GST_LOG_OBJECT (rsvg, "adding tags");
-
- if (!rsvg->pending_tags)
- rsvg->pending_tags = gst_tag_list_new ();
-
- if (title && *title)
- gst_tag_list_add (rsvg->pending_tags, GST_TAG_MERGE_REPLACE_ALL,
- GST_TAG_TITLE, title, NULL);
- if (comment && *comment)
- gst_tag_list_add (rsvg->pending_tags, GST_TAG_MERGE_REPLACE_ALL,
- GST_TAG_COMMENT, comment, NULL);
- }
-
rsvg_handle_get_dimensions (handle, &dimension);
if (rsvg->width != dimension.width || rsvg->height != dimension.height) {
GstCaps *caps1, *caps2, *caps3;
@@ -429,11 +406,6 @@ gst_rsvg_dec_chain (GstPad * pad, GstBuffer * buffer)
rsvg->pending_events = NULL;
}
- if (rsvg->pending_tags) {
- gst_element_found_tags (GST_ELEMENT_CAST (rsvg), rsvg->pending_tags);
- rsvg->pending_tags = NULL;
- }
-
GST_LOG_OBJECT (rsvg, "image rendered okay");
ret = gst_pad_push (rsvg->srcpad, outbuf);
diff --git a/ext/rsvg/gstrsvgdec.h b/ext/rsvg/gstrsvgdec.h
index 0d048eec..540f93d0 100644
--- a/ext/rsvg/gstrsvgdec.h
+++ b/ext/rsvg/gstrsvgdec.h
@@ -55,7 +55,6 @@ struct _GstRsvgDec
gint width, height;
GList *pending_events;
- GstTagList *pending_tags;
gint fps_n, fps_d;
GstClockTime first_timestamp;
diff --git a/ext/rtmp/Makefile.am b/ext/rtmp/Makefile.am
index bd2398ca..58283e5f 100644
--- a/ext/rtmp/Makefile.am
+++ b/ext/rtmp/Makefile.am
@@ -4,7 +4,7 @@ libgstrtmp_la_SOURCES = gstrtmpsrc.c gstrtmpsink.c gstrtmp.c
noinst_HEADERS = gstrtmpsrc.h gstrtmpsink.h
libgstrtmp_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(RTMP_CFLAGS)
-libgstrtmp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(RTMP_LIBS)
+libgstrtmp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(RTMP_LIBS) $(WINSOCK2_LIBS)
libgstrtmp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstrtmp_la_LIBTOOLFLAGS = --tag=disable-static
diff --git a/ext/rtmp/Makefile.in b/ext/rtmp/Makefile.in
index 76768ab2..02c7f57f 100644
--- a/ext/rtmp/Makefile.in
+++ b/ext/rtmp/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -129,7 +129,7 @@ LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
libgstrtmp_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
am_libgstrtmp_la_OBJECTS = libgstrtmp_la-gstrtmpsrc.lo \
libgstrtmp_la-gstrtmpsink.lo libgstrtmp_la-gstrtmp.lo
libgstrtmp_la_OBJECTS = $(am_libgstrtmp_la_OBJECTS)
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -589,7 +591,7 @@ plugin_LTLIBRARIES = libgstrtmp.la
libgstrtmp_la_SOURCES = gstrtmpsrc.c gstrtmpsink.c gstrtmp.c
noinst_HEADERS = gstrtmpsrc.h gstrtmpsink.h
libgstrtmp_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(RTMP_CFLAGS)
-libgstrtmp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(RTMP_LIBS)
+libgstrtmp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(RTMP_LIBS) $(WINSOCK2_LIBS)
libgstrtmp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstrtmp_la_LIBTOOLFLAGS = --tag=disable-static
all: all-am
@@ -636,7 +638,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/schroedinger/Makefile.in b/ext/schroedinger/Makefile.in
index 2f088cf9..b49e9bf0 100644
--- a/ext/schroedinger/Makefile.in
+++ b/ext/schroedinger/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -463,6 +463,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -479,6 +481,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -511,10 +514,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -656,7 +658,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/sdl/Makefile.in b/ext/sdl/Makefile.in
index e6b5cf0f..61a9c983 100644
--- a/ext/sdl/Makefile.in
+++ b/ext/sdl/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -647,7 +649,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/sndfile/Makefile.in b/ext/sndfile/Makefile.in
index 0c819d47..eecca6a1 100644
--- a/ext/sndfile/Makefile.in
+++ b/ext/sndfile/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -635,7 +637,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/sndio/Makefile.am b/ext/sndio/Makefile.am
new file mode 100644
index 00000000..03a42b1a
--- /dev/null
+++ b/ext/sndio/Makefile.am
@@ -0,0 +1,11 @@
+plugin_LTLIBRARIES = libgstsndio.la
+
+libgstsndio_la_SOURCES = gstsndio.c sndiosink.c sndiosrc.c
+libgstsndio_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
+libgstsndio_la_LIBADD = \
+ $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_MAJORMINOR) \
+ $(SNDIO_LIBS)
+libgstsndio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+
+noinst_HEADERS = sndiosink.h sndiosrc.h
+EXTRA_DIST =
diff --git a/tests/examples/camerabin/Makefile.in b/ext/sndio/Makefile.in
index 37019b11..75e8b88e 100644
--- a/tests/examples/camerabin/Makefile.in
+++ b/ext/sndio/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -52,10 +52,9 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-noinst_PROGRAMS = gst-camera-perf$(EXEEXT) $(am__EXEEXT_1) \
- $(am__EXEEXT_2)
-subdir = tests/examples/camerabin
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+subdir = ext/sndio
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -98,40 +97,47 @@ mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-@HAVE_X11_TRUE@am__EXEEXT_1 = gst-camerabin-test$(EXEEXT)
-@HAVE_GTK_TRUE@am__EXEEXT_2 = gst-camera$(EXEEXT)
-PROGRAMS = $(noinst_PROGRAMS)
-am__gst_camera_SOURCES_DIST = gst-camera.h gst-camera.c
-@HAVE_GTK_TRUE@am_gst_camera_OBJECTS = \
-@HAVE_GTK_TRUE@ gst_camera-gst-camera.$(OBJEXT)
-gst_camera_OBJECTS = $(am_gst_camera_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
-@HAVE_GTK_TRUE@gst_camera_DEPENDENCIES = $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
-@HAVE_GTK_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-@HAVE_GTK_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+libgstsndio_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+am_libgstsndio_la_OBJECTS = libgstsndio_la-gstsndio.lo \
+ libgstsndio_la-sndiosink.lo libgstsndio_la-sndiosrc.lo
+libgstsndio_la_OBJECTS = $(am_libgstsndio_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
-gst_camera_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(gst_camera_CFLAGS) \
- $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_gst_camera_perf_OBJECTS = \
- gst_camera_perf-gst-camera-perf.$(OBJEXT)
-gst_camera_perf_OBJECTS = $(am_gst_camera_perf_OBJECTS)
-gst_camera_perf_DEPENDENCIES = $(am__DEPENDENCIES_1)
-gst_camera_perf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(gst_camera_perf_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
- -o $@
-am__gst_camerabin_test_SOURCES_DIST = gst-camerabin-test.c
-@HAVE_X11_TRUE@am_gst_camerabin_test_OBJECTS = gst_camerabin_test-gst-camerabin-test.$(OBJEXT)
-gst_camerabin_test_OBJECTS = $(am_gst_camerabin_test_OBJECTS)
-@HAVE_X11_TRUE@gst_camerabin_test_DEPENDENCIES = $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
-@HAVE_X11_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-@HAVE_X11_TRUE@ $(am__DEPENDENCIES_1)
-gst_camerabin_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+libgstsndio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(gst_camerabin_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(libgstsndio_la_CFLAGS) $(CFLAGS) $(libgstsndio_la_LDFLAGS) \
$(LDFLAGS) -o $@
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
@@ -159,17 +165,14 @@ am__v_CCLD_0 = @echo " CCLD " $@;
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(gst_camera_SOURCES) $(gst_camera_perf_SOURCES) \
- $(gst_camerabin_test_SOURCES)
-DIST_SOURCES = $(am__gst_camera_SOURCES_DIST) \
- $(gst_camera_perf_SOURCES) \
- $(am__gst_camerabin_test_SOURCES_DIST)
+SOURCES = $(libgstsndio_la_SOURCES)
+DIST_SOURCES = $(libgstsndio_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
-DATA = $(noinst_DATA)
+HEADERS = $(noinst_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -458,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -474,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -506,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -581,44 +586,16 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-GST_CAMERABIN_UI_FILES = gst-camera.ui
-@HAVE_GTK_FALSE@GST_CAMERABIN_GTK_EXAMPLES =
-@HAVE_GTK_TRUE@GST_CAMERABIN_GTK_EXAMPLES = gst-camera
-@HAVE_GTK_TRUE@gst_camera_SOURCES = gst-camera.h gst-camera.c
-@HAVE_GTK_TRUE@gst_camera_CFLAGS = \
-@HAVE_GTK_TRUE@ $(GST_PLUGINS_BAD_CFLAGS) \
-@HAVE_GTK_TRUE@ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
-@HAVE_GTK_TRUE@ $(GTK_CFLAGS) \
-@HAVE_GTK_TRUE@ $(GMODULE_EXPORT_CFLAGS) \
-@HAVE_GTK_TRUE@ -DGST_USE_UNSTABLE_API
-
-@HAVE_GTK_TRUE@gst_camera_LDADD = \
-@HAVE_GTK_TRUE@ $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
-@HAVE_GTK_TRUE@ $(GST_PLUGINS_BASE_LIBS) \
-@HAVE_GTK_TRUE@ -lgstinterfaces-@GST_API_VERSION@ \
-@HAVE_GTK_TRUE@ -lgstvideo-@GST_API_VERSION@ \
-@HAVE_GTK_TRUE@ $(GST_LIBS) \
-@HAVE_GTK_TRUE@ $(GTK_LIBS) \
-@HAVE_GTK_TRUE@ $(GMODULE_EXPORT_LIBS)
-
-@HAVE_GTK_TRUE@noinst_DATA = $(GST_CAMERABIN_UI_FILES)
-@HAVE_GTK_TRUE@INCLUDES = -DCAMERA_APPS_UIDIR=\""$(srcdir)"\"
-gst_camera_perf_SOURCES = gst-camera-perf.c
-gst_camera_perf_CFLAGS = $(GST_CFLAGS)
-gst_camera_perf_LDADD = $(GST_LIBS)
-@HAVE_X11_FALSE@GST_CAMERABIN_X11_EXAMPLES =
-@HAVE_X11_TRUE@GST_CAMERABIN_X11_EXAMPLES = gst-camerabin-test
-@HAVE_X11_TRUE@gst_camerabin_test_SOURCES = gst-camerabin-test.c
-@HAVE_X11_TRUE@gst_camerabin_test_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
-@HAVE_X11_TRUE@gst_camerabin_test_LDADD = \
-@HAVE_X11_TRUE@ $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
-@HAVE_X11_TRUE@ -lgstinterfaces-@GST_API_VERSION@ \
-@HAVE_X11_TRUE@ -lgstvideo-@GST_API_VERSION@ \
-@HAVE_X11_TRUE@ $(GST_LIBS) \
-@HAVE_X11_TRUE@ $(GST_PLUGINS_BASE_LIBS) \
-@HAVE_X11_TRUE@ $(X11_LIBS)
-
-EXTRA_DIST = $(GST_CAMERABIN_UI_FILES)
+plugin_LTLIBRARIES = libgstsndio.la
+libgstsndio_la_SOURCES = gstsndio.c sndiosink.c sndiosrc.c
+libgstsndio_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
+libgstsndio_la_LIBADD = \
+ $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_MAJORMINOR) \
+ $(SNDIO_LIBS)
+
+libgstsndio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+noinst_HEADERS = sndiosink.h sndiosrc.h
+EXTRA_DIST =
all: all-am
.SUFFIXES:
@@ -632,9 +609,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/camerabin/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/sndio/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu tests/examples/camerabin/Makefile
+ $(AUTOMAKE) --gnu ext/sndio/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
@@ -653,24 +630,40 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
+ }
+
+uninstall-pluginLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
+ done
-clean-noinstPROGRAMS:
- @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-gst-camera$(EXEEXT): $(gst_camera_OBJECTS) $(gst_camera_DEPENDENCIES) $(EXTRA_gst_camera_DEPENDENCIES)
- @rm -f gst-camera$(EXEEXT)
- $(AM_V_CCLD)$(gst_camera_LINK) $(gst_camera_OBJECTS) $(gst_camera_LDADD) $(LIBS)
-gst-camera-perf$(EXEEXT): $(gst_camera_perf_OBJECTS) $(gst_camera_perf_DEPENDENCIES) $(EXTRA_gst_camera_perf_DEPENDENCIES)
- @rm -f gst-camera-perf$(EXEEXT)
- $(AM_V_CCLD)$(gst_camera_perf_LINK) $(gst_camera_perf_OBJECTS) $(gst_camera_perf_LDADD) $(LIBS)
-gst-camerabin-test$(EXEEXT): $(gst_camerabin_test_OBJECTS) $(gst_camerabin_test_DEPENDENCIES) $(EXTRA_gst_camerabin_test_DEPENDENCIES)
- @rm -f gst-camerabin-test$(EXEEXT)
- $(AM_V_CCLD)$(gst_camerabin_test_LINK) $(gst_camerabin_test_OBJECTS) $(gst_camerabin_test_LDADD) $(LIBS)
+clean-pluginLTLIBRARIES:
+ -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
+ @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libgstsndio.la: $(libgstsndio_la_OBJECTS) $(libgstsndio_la_DEPENDENCIES) $(EXTRA_libgstsndio_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libgstsndio_la_LINK) -rpath $(plugindir) $(libgstsndio_la_OBJECTS) $(libgstsndio_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -678,9 +671,9 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_camera-gst-camera.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_camera_perf-gst-camera-perf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gst_camerabin_test-gst-camerabin-test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsndio_la-gstsndio.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsndio_la-sndiosink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsndio_la-sndiosrc.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -703,47 +696,26 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-gst_camera-gst-camera.o: gst-camera.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camera_CFLAGS) $(CFLAGS) -MT gst_camera-gst-camera.o -MD -MP -MF $(DEPDIR)/gst_camera-gst-camera.Tpo -c -o gst_camera-gst-camera.o `test -f 'gst-camera.c' || echo '$(srcdir)/'`gst-camera.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gst_camera-gst-camera.Tpo $(DEPDIR)/gst_camera-gst-camera.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gst-camera.c' object='gst_camera-gst-camera.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camera_CFLAGS) $(CFLAGS) -c -o gst_camera-gst-camera.o `test -f 'gst-camera.c' || echo '$(srcdir)/'`gst-camera.c
-
-gst_camera-gst-camera.obj: gst-camera.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camera_CFLAGS) $(CFLAGS) -MT gst_camera-gst-camera.obj -MD -MP -MF $(DEPDIR)/gst_camera-gst-camera.Tpo -c -o gst_camera-gst-camera.obj `if test -f 'gst-camera.c'; then $(CYGPATH_W) 'gst-camera.c'; else $(CYGPATH_W) '$(srcdir)/gst-camera.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gst_camera-gst-camera.Tpo $(DEPDIR)/gst_camera-gst-camera.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gst-camera.c' object='gst_camera-gst-camera.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camera_CFLAGS) $(CFLAGS) -c -o gst_camera-gst-camera.obj `if test -f 'gst-camera.c'; then $(CYGPATH_W) 'gst-camera.c'; else $(CYGPATH_W) '$(srcdir)/gst-camera.c'; fi`
-
-gst_camera_perf-gst-camera-perf.o: gst-camera-perf.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camera_perf_CFLAGS) $(CFLAGS) -MT gst_camera_perf-gst-camera-perf.o -MD -MP -MF $(DEPDIR)/gst_camera_perf-gst-camera-perf.Tpo -c -o gst_camera_perf-gst-camera-perf.o `test -f 'gst-camera-perf.c' || echo '$(srcdir)/'`gst-camera-perf.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gst_camera_perf-gst-camera-perf.Tpo $(DEPDIR)/gst_camera_perf-gst-camera-perf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gst-camera-perf.c' object='gst_camera_perf-gst-camera-perf.o' libtool=no @AMDEPBACKSLASH@
+libgstsndio_la-gstsndio.lo: gstsndio.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsndio_la_CFLAGS) $(CFLAGS) -MT libgstsndio_la-gstsndio.lo -MD -MP -MF $(DEPDIR)/libgstsndio_la-gstsndio.Tpo -c -o libgstsndio_la-gstsndio.lo `test -f 'gstsndio.c' || echo '$(srcdir)/'`gstsndio.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsndio_la-gstsndio.Tpo $(DEPDIR)/libgstsndio_la-gstsndio.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstsndio.c' object='libgstsndio_la-gstsndio.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camera_perf_CFLAGS) $(CFLAGS) -c -o gst_camera_perf-gst-camera-perf.o `test -f 'gst-camera-perf.c' || echo '$(srcdir)/'`gst-camera-perf.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsndio_la_CFLAGS) $(CFLAGS) -c -o libgstsndio_la-gstsndio.lo `test -f 'gstsndio.c' || echo '$(srcdir)/'`gstsndio.c
-gst_camera_perf-gst-camera-perf.obj: gst-camera-perf.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camera_perf_CFLAGS) $(CFLAGS) -MT gst_camera_perf-gst-camera-perf.obj -MD -MP -MF $(DEPDIR)/gst_camera_perf-gst-camera-perf.Tpo -c -o gst_camera_perf-gst-camera-perf.obj `if test -f 'gst-camera-perf.c'; then $(CYGPATH_W) 'gst-camera-perf.c'; else $(CYGPATH_W) '$(srcdir)/gst-camera-perf.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gst_camera_perf-gst-camera-perf.Tpo $(DEPDIR)/gst_camera_perf-gst-camera-perf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gst-camera-perf.c' object='gst_camera_perf-gst-camera-perf.obj' libtool=no @AMDEPBACKSLASH@
+libgstsndio_la-sndiosink.lo: sndiosink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsndio_la_CFLAGS) $(CFLAGS) -MT libgstsndio_la-sndiosink.lo -MD -MP -MF $(DEPDIR)/libgstsndio_la-sndiosink.Tpo -c -o libgstsndio_la-sndiosink.lo `test -f 'sndiosink.c' || echo '$(srcdir)/'`sndiosink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsndio_la-sndiosink.Tpo $(DEPDIR)/libgstsndio_la-sndiosink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sndiosink.c' object='libgstsndio_la-sndiosink.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camera_perf_CFLAGS) $(CFLAGS) -c -o gst_camera_perf-gst-camera-perf.obj `if test -f 'gst-camera-perf.c'; then $(CYGPATH_W) 'gst-camera-perf.c'; else $(CYGPATH_W) '$(srcdir)/gst-camera-perf.c'; fi`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsndio_la_CFLAGS) $(CFLAGS) -c -o libgstsndio_la-sndiosink.lo `test -f 'sndiosink.c' || echo '$(srcdir)/'`sndiosink.c
-gst_camerabin_test-gst-camerabin-test.o: gst-camerabin-test.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camerabin_test_CFLAGS) $(CFLAGS) -MT gst_camerabin_test-gst-camerabin-test.o -MD -MP -MF $(DEPDIR)/gst_camerabin_test-gst-camerabin-test.Tpo -c -o gst_camerabin_test-gst-camerabin-test.o `test -f 'gst-camerabin-test.c' || echo '$(srcdir)/'`gst-camerabin-test.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gst_camerabin_test-gst-camerabin-test.Tpo $(DEPDIR)/gst_camerabin_test-gst-camerabin-test.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gst-camerabin-test.c' object='gst_camerabin_test-gst-camerabin-test.o' libtool=no @AMDEPBACKSLASH@
+libgstsndio_la-sndiosrc.lo: sndiosrc.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsndio_la_CFLAGS) $(CFLAGS) -MT libgstsndio_la-sndiosrc.lo -MD -MP -MF $(DEPDIR)/libgstsndio_la-sndiosrc.Tpo -c -o libgstsndio_la-sndiosrc.lo `test -f 'sndiosrc.c' || echo '$(srcdir)/'`sndiosrc.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsndio_la-sndiosrc.Tpo $(DEPDIR)/libgstsndio_la-sndiosrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sndiosrc.c' object='libgstsndio_la-sndiosrc.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camerabin_test_CFLAGS) $(CFLAGS) -c -o gst_camerabin_test-gst-camerabin-test.o `test -f 'gst-camerabin-test.c' || echo '$(srcdir)/'`gst-camerabin-test.c
-
-gst_camerabin_test-gst-camerabin-test.obj: gst-camerabin-test.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camerabin_test_CFLAGS) $(CFLAGS) -MT gst_camerabin_test-gst-camerabin-test.obj -MD -MP -MF $(DEPDIR)/gst_camerabin_test-gst-camerabin-test.Tpo -c -o gst_camerabin_test-gst-camerabin-test.obj `if test -f 'gst-camerabin-test.c'; then $(CYGPATH_W) 'gst-camerabin-test.c'; else $(CYGPATH_W) '$(srcdir)/gst-camerabin-test.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gst_camerabin_test-gst-camerabin-test.Tpo $(DEPDIR)/gst_camerabin_test-gst-camerabin-test.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gst-camerabin-test.c' object='gst_camerabin_test-gst-camerabin-test.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gst_camerabin_test_CFLAGS) $(CFLAGS) -c -o gst_camerabin_test-gst-camerabin-test.obj `if test -f 'gst-camerabin-test.c'; then $(CYGPATH_W) 'gst-camerabin-test.c'; else $(CYGPATH_W) '$(srcdir)/gst-camerabin-test.c'; fi`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsndio_la_CFLAGS) $(CFLAGS) -c -o libgstsndio_la-sndiosrc.lo `test -f 'sndiosrc.c' || echo '$(srcdir)/'`sndiosrc.c
mostlyclean-libtool:
-rm -f *.lo
@@ -835,8 +807,11 @@ distdir: $(DISTFILES)
done
check-am: all-am
check: check-am
-all-am: Makefile $(PROGRAMS) $(DATA)
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
installdirs:
+ for dir in "$(DESTDIR)$(plugindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -869,7 +844,7 @@ maintainer-clean-generic:
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
@@ -890,7 +865,7 @@ info: info-am
info-am:
-install-data-am:
+install-data-am: install-pluginLTLIBRARIES
install-dvi: install-dvi-am
@@ -936,22 +911,23 @@ ps: ps-am
ps-am:
-uninstall-am:
+uninstall-am: uninstall-pluginLTLIBRARIES
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstPROGRAMS ctags distclean \
+ clean-libtool clean-pluginLTLIBRARIES ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am
+ install-pdf install-pdf-am install-pluginLTLIBRARIES \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/ext/sndio/gstsndio.c b/ext/sndio/gstsndio.c
new file mode 100644
index 00000000..af8252ec
--- /dev/null
+++ b/ext/sndio/gstsndio.c
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) <2008> Jacob Meuser <jakemsr@sdf.lonestar.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "sndiosink.h"
+#include "sndiosrc.h"
+
+#include "gst/gst-i18n-plugin.h"
+
+GST_DEBUG_CATEGORY (gst_sndio_debug);
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+ if (!gst_element_register (plugin, "sndiosrc", GST_RANK_PRIMARY,
+ GST_TYPE_SNDIOSRC) ||
+ !gst_element_register (plugin, "sndiosink", GST_RANK_PRIMARY,
+ GST_TYPE_SNDIOSINK)) {
+ return FALSE;
+ }
+
+ GST_DEBUG_CATEGORY_INIT (gst_sndio_debug, "sndio", 0, "sndio elements");
+
+#ifdef ENABLE_NLS
+ GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
+ LOCALEDIR);
+ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+#endif /* ENABLE_NLS */
+
+ return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "sndio",
+ "sndio support for GStreamer",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/sndio/sndiosink.c b/ext/sndio/sndiosink.c
new file mode 100644
index 00000000..e91ecd48
--- /dev/null
+++ b/ext/sndio/sndiosink.c
@@ -0,0 +1,532 @@
+/*
+ * Copyright (C) <2008> Jacob Meuser <jakemsr@sdf.lonestar.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * SECTION:element-sndiosink
+ * @see_also: #GstAutoAudioSink
+ *
+ * <refsect2>
+ * <para>
+ * This element outputs sound to a sound card using sndio.
+ * </para>
+ * <para>
+ * Simple example pipeline that plays an Ogg/Vorbis file via sndio:
+ * <programlisting>
+ * gst-launch -v filesrc location=foo.ogg ! decodebin ! audioconvert ! audioresample ! sndiosink
+ * </programlisting>
+ * </para>
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "sndiosink.h"
+#include <unistd.h>
+#include <errno.h>
+
+#include <gst/gst-i18n-plugin.h>
+
+GST_DEBUG_CATEGORY_EXTERN (gst_sndio_debug);
+#define GST_CAT_DEFAULT gst_sndio_debug
+
+enum
+{
+ PROP_0,
+ PROP_HOST
+};
+
+static GstStaticPadTemplate sndio_sink_factory =
+ GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) { 1234, 4321 }, "
+ "signed = (boolean) { TRUE, FALSE }, "
+ "width = (int) { 8, 16, 24, 32 }, "
+ "depth = (int) { 8, 16, 24, 32 }, "
+ "rate = (int) [ 8000, 192000 ], "
+ "channels = (int) [ 1, 16 ] ")
+ );
+
+static void gst_sndiosink_finalize (GObject * object);
+
+static GstCaps *gst_sndiosink_getcaps (GstBaseSink * bsink);
+
+static gboolean gst_sndiosink_open (GstAudioSink * asink);
+static gboolean gst_sndiosink_close (GstAudioSink * asink);
+static gboolean gst_sndiosink_prepare (GstAudioSink * asink,
+ GstRingBufferSpec * spec);
+static gboolean gst_sndiosink_unprepare (GstAudioSink * asink);
+static guint gst_sndiosink_write (GstAudioSink * asink, gpointer data,
+ guint length);
+static guint gst_sndiosink_delay (GstAudioSink * asink);
+static void gst_sndiosink_reset (GstAudioSink * asink);
+
+static void gst_sndiosink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_sndiosink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_sndiosink_cb (void *addr, int delta);
+
+GST_BOILERPLATE (GstSndioSink, gst_sndiosink, GstAudioSink,
+ GST_TYPE_AUDIO_SINK);
+
+static void
+gst_sndiosink_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_set_details_simple (element_class,
+ "Sndio audio sink",
+ "Sink/Audio",
+ "Plays audio through sndio",
+ "Jacob Meuser <jakemsr@sdf.lonestar.org>");
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&sndio_sink_factory));
+}
+
+static void
+gst_sndiosink_class_init (GstSndioSinkClass * klass)
+{
+ GObjectClass *gobject_class;
+ GstBaseSinkClass *gstbasesink_class;
+ GstBaseAudioSinkClass *gstbaseaudiosink_class;
+ GstAudioSinkClass *gstaudiosink_class;
+
+ gobject_class = (GObjectClass *) klass;
+ gstbasesink_class = (GstBaseSinkClass *) klass;
+ gstbaseaudiosink_class = (GstBaseAudioSinkClass *) klass;
+ gstaudiosink_class = (GstAudioSinkClass *) klass;
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class->finalize = gst_sndiosink_finalize;
+
+ gstbasesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_sndiosink_getcaps);
+
+ gstaudiosink_class->open = GST_DEBUG_FUNCPTR (gst_sndiosink_open);
+ gstaudiosink_class->close = GST_DEBUG_FUNCPTR (gst_sndiosink_close);
+ gstaudiosink_class->prepare = GST_DEBUG_FUNCPTR (gst_sndiosink_prepare);
+ gstaudiosink_class->unprepare =
+ GST_DEBUG_FUNCPTR (gst_sndiosink_unprepare);
+ gstaudiosink_class->write = GST_DEBUG_FUNCPTR (gst_sndiosink_write);
+ gstaudiosink_class->delay = GST_DEBUG_FUNCPTR (gst_sndiosink_delay);
+ gstaudiosink_class->reset = GST_DEBUG_FUNCPTR (gst_sndiosink_reset);
+
+ gobject_class->set_property = gst_sndiosink_set_property;
+ gobject_class->get_property = gst_sndiosink_get_property;
+
+ /* default value is filled in the _init method */
+ g_object_class_install_property (gobject_class, PROP_HOST,
+ g_param_spec_string ("host", "Host",
+ "Device or socket sndio will access", NULL, G_PARAM_READWRITE));
+}
+
+static void
+gst_sndiosink_init (GstSndioSink * sndiosink,
+ GstSndioSinkClass * klass)
+{
+ sndiosink->hdl = NULL;
+ sndiosink->host = g_strdup (g_getenv ("AUDIODEVICE"));
+}
+
+static void
+gst_sndiosink_finalize (GObject * object)
+{
+ GstSndioSink *sndiosink = GST_SNDIOSINK (object);
+
+ gst_caps_replace (&sndiosink->cur_caps, NULL);
+ g_free (sndiosink->host);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static GstCaps *
+gst_sndiosink_getcaps (GstBaseSink * bsink)
+{
+ GstSndioSink *sndiosink;
+
+ sndiosink = GST_SNDIOSINK (bsink);
+
+ /* no hdl, we're done with the template caps */
+ if (sndiosink->cur_caps == NULL) {
+ GST_LOG_OBJECT (sndiosink, "getcaps called, returning template caps");
+ return NULL;
+ }
+
+ GST_LOG_OBJECT (sndiosink, "returning %" GST_PTR_FORMAT,
+ sndiosink->cur_caps);
+
+ return gst_caps_ref (sndiosink->cur_caps);
+}
+
+static gboolean
+gst_sndiosink_open (GstAudioSink * asink)
+{
+ GstPadTemplate *pad_template;
+ GstSndioSink *sndiosink;
+ struct sio_par par;
+ struct sio_cap cap;
+ GArray *rates, *chans;
+ GValue rates_v = { 0 };
+ GValue chans_v = { 0 };
+ GValue value = { 0 };
+ struct sio_enc enc;
+ struct sio_conf conf;
+ int confs[SIO_NCONF];
+ int rate, chan;
+ int i, j, k;
+ int nconfs;
+
+ sndiosink = GST_SNDIOSINK (asink);
+
+ GST_DEBUG_OBJECT (sndiosink, "open");
+
+ /* conect */
+ sndiosink->hdl = sio_open (sndiosink->host, SIO_PLAY, 0);
+
+ if (sndiosink->hdl == NULL)
+ goto couldnt_connect;
+
+ /* Use sndio defaults as the only encodings, but get the supported
+ * sample rates and number of channels.
+ */
+
+ if (!sio_getpar (sndiosink->hdl, &par))
+ goto no_server_info;
+
+ if (!sio_getcap (sndiosink->hdl, &cap))
+ goto no_server_info;
+
+ rates = g_array_new (FALSE, FALSE, sizeof (int));
+ chans = g_array_new (FALSE, FALSE, sizeof (int));
+
+ /* find confs that have the default encoding */
+ nconfs = 0;
+ for (i = 0; i < cap.nconf; i++) {
+ for (j = 0; j < SIO_NENC; j++) {
+ if (cap.confs[i].enc & (1 << j)) {
+ enc = cap.enc[j];
+ if (enc.bits == par.bits && enc.sig == par.sig && enc.le == par.le) {
+ confs[nconfs] = i;
+ nconfs++;
+ break;
+ }
+ }
+ }
+ }
+
+ /* find the rates and channels of the confs that have the default encoding */
+ for (i = 0; i < nconfs; i++) {
+ conf = cap.confs[confs[i]];
+ /* rates */
+ for (j = 0; j < SIO_NRATE; j++) {
+ if (conf.rate & (1 << j)) {
+ rate = cap.rate[j];
+ for (k = 0; k < rates->len && rate; k++) {
+ if (rate == g_array_index (rates, int, k))
+ rate = 0;
+ }
+ /* add in ascending order */
+ if (rate) {
+ for (k = 0; k < rates->len; k++) {
+ if (rate < g_array_index (rates, int, k))
+ {
+ g_array_insert_val (rates, k, rate);
+ break;
+ }
+ }
+ if (k == rates->len)
+ g_array_append_val (rates, rate);
+ }
+ }
+ }
+ /* channels */
+ for (j = 0; j < SIO_NCHAN; j++) {
+ if (conf.pchan & (1 << j)) {
+ chan = cap.pchan[j];
+ for (k = 0; k < chans->len && chan; k++) {
+ if (chan == g_array_index (chans, int, k))
+ chan = 0;
+ }
+ /* add in ascending order */
+ if (chan) {
+ for (k = 0; k < chans->len; k++) {
+ if (chan < g_array_index (chans, int, k))
+ {
+ g_array_insert_val (chans, k, chan);
+ break;
+ }
+ }
+ if (k == chans->len)
+ g_array_append_val (chans, chan);
+ }
+ }
+ }
+ }
+ /* not sure how this can happen, but it might */
+ if (cap.nconf == 0) {
+ g_array_append_val (rates, par.rate);
+ g_array_append_val (chans, par.pchan);
+ }
+
+ g_value_init (&rates_v, GST_TYPE_LIST);
+ g_value_init (&chans_v, GST_TYPE_LIST);
+ g_value_init (&value, G_TYPE_INT);
+
+ for (i = 0; i < rates->len; i++) {
+ g_value_set_int (&value, g_array_index (rates, int, i));
+ gst_value_list_append_value (&rates_v, &value);
+ }
+ for (i = 0; i < chans->len; i++) {
+ g_value_set_int (&value, g_array_index (chans, int, i));
+ gst_value_list_append_value (&chans_v, &value);
+ }
+
+ g_array_free (rates, TRUE);
+ g_array_free (chans, TRUE);
+
+ pad_template = gst_static_pad_template_get (&sndio_sink_factory);
+ sndiosink->cur_caps =
+ gst_caps_copy (gst_pad_template_get_caps (pad_template));
+ gst_object_unref (pad_template);
+
+ for (i = 0; i < sndiosink->cur_caps->structs->len; i++) {
+ GstStructure *s;
+
+ s = gst_caps_get_structure (sndiosink->cur_caps, i);
+ gst_structure_set (s, "endianness", G_TYPE_INT, par.le ? 1234 : 4321, NULL);
+ gst_structure_set (s, "signed", G_TYPE_BOOLEAN, par.sig ? TRUE : FALSE,
+ NULL);
+ gst_structure_set (s, "width", G_TYPE_INT, par.bits, NULL);
+ // gst_structure_set (s, "depth", G_TYPE_INT, par.bps * 8, NULL); /* XXX */
+ gst_structure_set_value (s, "rate", &rates_v);
+ gst_structure_set_value (s, "channels", &chans_v);
+ }
+
+ return TRUE;
+
+ /* ERRORS */
+couldnt_connect:
+ {
+ GST_ELEMENT_ERROR (sndiosink, RESOURCE, OPEN_WRITE,
+ (_("Could not establish connection to sndio")),
+ ("can't open connection to sndio"));
+ return FALSE;
+ }
+no_server_info:
+ {
+ GST_ELEMENT_ERROR (sndiosink, RESOURCE, OPEN_WRITE,
+ (_("Failed to query sndio capabilities")),
+ ("couldn't get sndio info!"));
+ return FALSE;
+ }
+}
+
+static gboolean
+gst_sndiosink_close (GstAudioSink * asink)
+{
+ GstSndioSink *sndiosink = GST_SNDIOSINK (asink);
+
+ GST_DEBUG_OBJECT (sndiosink, "close");
+
+ gst_caps_replace (&sndiosink->cur_caps, NULL);
+ sio_close (sndiosink->hdl);
+ sndiosink->hdl = NULL;
+
+ return TRUE;
+}
+
+static void
+gst_sndiosink_cb (void *addr, int delta)
+{
+ GstSndioSink *sndiosink = GST_SNDIOSINK ((GstAudioSink *) addr);
+
+ sndiosink->realpos += delta;
+
+ if (sndiosink->realpos >= sndiosink->playpos)
+ sndiosink->latency = 0;
+ else
+ sndiosink->latency = sndiosink->playpos - sndiosink->realpos;
+}
+
+static gboolean
+gst_sndiosink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
+{
+ GstSndioSink *sndiosink = GST_SNDIOSINK (asink);
+ struct sio_par par;
+ int spec_bpf;
+
+ GST_DEBUG_OBJECT (sndiosink, "prepare");
+
+ sndiosink->playpos = sndiosink->realpos = sndiosink->latency = 0;
+
+ sio_initpar (&par);
+ par.sig = spec->sign;
+ par.le = !spec->bigend;
+ par.bits = spec->width;
+ // par.bps = spec->depth / 8; /* XXX */
+ par.rate = spec->rate;
+ par.pchan = spec->channels;
+
+ spec_bpf = ((spec->width / 8) * spec->channels);
+
+ par.appbufsz = (spec->segsize * spec->segtotal) / spec_bpf;
+
+ if (!sio_setpar (sndiosink->hdl, &par))
+ goto cannot_configure;
+
+ sio_getpar (sndiosink->hdl, &par);
+
+ spec->sign = par.sig;
+ spec->bigend = !par.le;
+ spec->width = par.bits;
+ // spec->depth = par.bps * 8; /* XXX */
+ spec->rate = par.rate;
+ spec->channels = par.pchan;
+
+ sndiosink->bpf = par.bps * par.pchan;
+
+ spec->segsize = par.round * par.pchan * par.bps;
+ spec->segtotal = par.bufsz / par.round;
+
+ /* FIXME: this is wrong for signed ints (and the
+ * audioringbuffers should do it for us anyway) */
+ spec->silence_sample[0] = 0;
+ spec->silence_sample[1] = 0;
+ spec->silence_sample[2] = 0;
+ spec->silence_sample[3] = 0;
+
+ sio_onmove (sndiosink->hdl, gst_sndiosink_cb, sndiosink);
+
+ if (!sio_start (sndiosink->hdl))
+ goto cannot_start;
+
+ GST_INFO_OBJECT (sndiosink, "successfully opened connection to sndio");
+
+ return TRUE;
+
+ /* ERRORS */
+cannot_configure:
+ {
+ GST_ELEMENT_ERROR (sndiosink, RESOURCE, OPEN_WRITE,
+ (_("Could not configure sndio")), ("can't configure sndio"));
+ return FALSE;
+ }
+cannot_start:
+ {
+ GST_ELEMENT_ERROR (sndiosink, RESOURCE, OPEN_WRITE,
+ (_("Could not start sndio")), ("can't start sndio"));
+ return FALSE;
+ }
+}
+
+static gboolean
+gst_sndiosink_unprepare (GstAudioSink * asink)
+{
+ GstSndioSink *sndiosink = GST_SNDIOSINK (asink);
+
+ if (sndiosink->hdl == NULL)
+ return TRUE;
+
+ sio_stop (sndiosink->hdl);
+
+ return TRUE;
+}
+
+static guint
+gst_sndiosink_write (GstAudioSink * asink, gpointer data, guint length)
+{
+ GstSndioSink *sndiosink = GST_SNDIOSINK (asink);
+ guint done;
+
+ done = sio_write (sndiosink->hdl, data, length);
+
+ if (done == 0)
+ goto write_error;
+
+ sndiosink->playpos += (done / sndiosink->bpf);
+
+ data = (char *) data + done;
+
+ return done;
+
+ /* ERRORS */
+write_error:
+ {
+ GST_ELEMENT_ERROR (sndiosink, RESOURCE, WRITE,
+ ("Failed to write data to sndio"), GST_ERROR_SYSTEM);
+ return 0;
+ }
+}
+
+static guint
+gst_sndiosink_delay (GstAudioSink * asink)
+{
+ GstSndioSink *sndiosink = GST_SNDIOSINK (asink);
+
+ if (sndiosink->latency == (guint) - 1) {
+ GST_WARNING_OBJECT (asink, "couldn't get latency");
+ return 0;
+ }
+
+ GST_DEBUG_OBJECT (asink, "got latency: %u", sndiosink->latency);
+
+ return sndiosink->latency;
+}
+
+static void
+gst_sndiosink_reset (GstAudioSink * asink)
+{
+ /* no way to flush the buffers with sndio ? */
+
+ GST_DEBUG_OBJECT (asink, "reset called");
+}
+
+static void
+gst_sndiosink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstSndioSink *sndiosink = GST_SNDIOSINK (object);
+
+ switch (prop_id) {
+ case PROP_HOST:
+ g_free (sndiosink->host);
+ sndiosink->host = g_value_dup_string (value);
+ break;
+ default:
+ break;
+ }
+}
+
+static void
+gst_sndiosink_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
+{
+ GstSndioSink *sndiosink = GST_SNDIOSINK (object);
+
+ switch (prop_id) {
+ case PROP_HOST:
+ g_value_set_string (value, sndiosink->host);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
diff --git a/ext/sndio/sndiosink.h b/ext/sndio/sndiosink.h
new file mode 100644
index 00000000..25bb8799
--- /dev/null
+++ b/ext/sndio/sndiosink.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) <2008> Jacob Meuser <jakemsr@sdf.lonestar.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+
+#ifndef __GST_SNDIOSINK_H__
+#define __GST_SNDIOSINK_H__
+
+#include <sndio.h>
+
+#include <gst/gst.h>
+#include <gst/audio/gstaudiosink.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_SNDIOSINK \
+ (gst_sndiosink_get_type())
+#define GST_SNDIOSINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SNDIOSINK,GstSndioSink))
+#define GST_SNDIOSINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SNDIOSINK,GstSndioSinkClass))
+#define GST_IS_SNDIOSINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SNDIOSINK))
+#define GST_IS_SNDIOSINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SNDIOSINK))
+
+typedef struct _GstSndioSink GstSndioSink;
+typedef struct _GstSndioSinkClass GstSndioSinkClass;
+
+struct _GstSndioSink {
+ GstAudioSink sink;
+
+ struct sio_hdl *hdl;
+ gchar *host;
+
+ /* bytes per frame */
+ int bpf;
+
+ /* frames counts */
+ volatile long long realpos;
+ volatile long long playpos;
+ volatile guint latency;
+
+ GstCaps *cur_caps;
+};
+
+struct _GstSndioSinkClass {
+ GstAudioSinkClass parent_class;
+};
+
+GType gst_sndiosink_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_SNDIOSINK_H__ */
diff --git a/ext/sndio/sndiosrc.c b/ext/sndio/sndiosrc.c
new file mode 100644
index 00000000..43cf35ac
--- /dev/null
+++ b/ext/sndio/sndiosrc.c
@@ -0,0 +1,531 @@
+/*
+ * Copyright (C) <2008> Jacob Meuser <jakemsr@sdf.lonestar.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * SECTION:element-sndiosrc
+ * @see_also: #GstAutoAudioSrc
+ *
+ * <refsect2>
+ * <para>
+ * This element retrieves samples from a sound card using sndio.
+ * </para>
+ * <para>
+ * Simple example pipeline that records an Ogg/Vorbis file via sndio:
+ * <programlisting>
+ * gst-launch -v sndiosrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=foo.ogg
+ * </programlisting>
+ * </para>
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "sndiosrc.h"
+#include <unistd.h>
+#include <errno.h>
+
+#include <gst/gst-i18n-plugin.h>
+
+GST_DEBUG_CATEGORY_EXTERN (gst_sndio_debug);
+#define GST_CAT_DEFAULT gst_sndio_debug
+
+enum
+{
+ PROP_0,
+ PROP_HOST
+};
+
+static GstStaticPadTemplate sndio_src_factory =
+ GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw-int, "
+ "endianness = (int) { 1234, 4321 }, "
+ "signed = (boolean) { TRUE, FALSE }, "
+ "width = (int) { 8, 16, 24, 32 }, "
+ "depth = (int) { 8, 16, 24, 32 }, "
+ "rate = (int) [ 8000, 192000 ], "
+ "channels = (int) [ 1, 16 ] ")
+ );
+
+static void gst_sndiosrc_finalize (GObject * object);
+
+static GstCaps *gst_sndiosrc_getcaps (GstBaseSrc * bsrc);
+
+static gboolean gst_sndiosrc_open (GstAudioSrc * asrc);
+static gboolean gst_sndiosrc_close (GstAudioSrc * asrc);
+static gboolean gst_sndiosrc_prepare (GstAudioSrc * asrc,
+ GstRingBufferSpec * spec);
+static gboolean gst_sndiosrc_unprepare (GstAudioSrc * asrc);
+static guint gst_sndiosrc_read (GstAudioSrc * asrc, gpointer data,
+ guint length);
+static guint gst_sndiosrc_delay (GstAudioSrc * asrc);
+static void gst_sndiosrc_reset (GstAudioSrc * asrc);
+
+static void gst_sndiosrc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_sndiosrc_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static void gst_sndiosrc_cb (void *addr, int delta);
+
+GST_BOILERPLATE (GstSndioSrc, gst_sndiosrc, GstAudioSrc,
+ GST_TYPE_AUDIO_SRC);
+
+static void
+gst_sndiosrc_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_set_details_simple (element_class,
+ "Sndio audio source",
+ "Source/Audio",
+ "Records audio through sndio",
+ "Jacob Meuser <jakemsr@sdf.lonestar.org>");
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&sndio_src_factory));
+}
+
+static void
+gst_sndiosrc_class_init (GstSndioSrcClass * klass)
+{
+ GObjectClass *gobject_class;
+ GstBaseSrcClass *gstbasesrc_class;
+ GstBaseAudioSrcClass *gstbaseaudiosrc_class;
+ GstAudioSrcClass *gstaudiosrc_class;
+
+ gobject_class = (GObjectClass *) klass;
+ gstbasesrc_class = (GstBaseSrcClass *) klass;
+ gstbaseaudiosrc_class = (GstBaseAudioSrcClass *) klass;
+ gstaudiosrc_class = (GstAudioSrcClass *) klass;
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class->finalize = gst_sndiosrc_finalize;
+
+ gstbasesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_sndiosrc_getcaps);
+
+ gstaudiosrc_class->open = GST_DEBUG_FUNCPTR (gst_sndiosrc_open);
+ gstaudiosrc_class->close = GST_DEBUG_FUNCPTR (gst_sndiosrc_close);
+ gstaudiosrc_class->prepare = GST_DEBUG_FUNCPTR (gst_sndiosrc_prepare);
+ gstaudiosrc_class->unprepare = GST_DEBUG_FUNCPTR (gst_sndiosrc_unprepare);
+ gstaudiosrc_class->read = GST_DEBUG_FUNCPTR (gst_sndiosrc_read);
+ gstaudiosrc_class->delay = GST_DEBUG_FUNCPTR (gst_sndiosrc_delay);
+ gstaudiosrc_class->reset = GST_DEBUG_FUNCPTR (gst_sndiosrc_reset);
+
+ gobject_class->set_property = gst_sndiosrc_set_property;
+ gobject_class->get_property = gst_sndiosrc_get_property;
+
+ /* default value is filled in the _init method */
+ g_object_class_install_property (gobject_class, PROP_HOST,
+ g_param_spec_string ("host", "Host",
+ "Device or socket sndio will access", NULL, G_PARAM_READWRITE));
+}
+
+static void
+gst_sndiosrc_init (GstSndioSrc * sndiosrc, GstSndioSrcClass * klass)
+{
+ sndiosrc->hdl = NULL;
+ sndiosrc->host = g_strdup (g_getenv ("AUDIODEVICE"));
+}
+
+static void
+gst_sndiosrc_finalize (GObject * object)
+{
+ GstSndioSrc *sndiosrc = GST_SNDIOSRC (object);
+
+ gst_caps_replace (&sndiosrc->cur_caps, NULL);
+ g_free (sndiosrc->host);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static GstCaps *
+gst_sndiosrc_getcaps (GstBaseSrc * bsrc)
+{
+ GstSndioSrc *sndiosrc;
+
+ sndiosrc = GST_SNDIOSRC (bsrc);
+
+ /* no hdl, we're done with the template caps */
+ if (sndiosrc->cur_caps == NULL) {
+ GST_LOG_OBJECT (sndiosrc, "getcaps called, returning template caps");
+ return NULL;
+ }
+
+ GST_LOG_OBJECT (sndiosrc, "returning %" GST_PTR_FORMAT,
+ sndiosrc->cur_caps);
+
+ return gst_caps_ref (sndiosrc->cur_caps);
+}
+
+static gboolean
+gst_sndiosrc_open (GstAudioSrc * asrc)
+{
+ GstPadTemplate *pad_template;
+ GstSndioSrc *sndiosrc;
+ struct sio_par par;
+ struct sio_cap cap;
+ GArray *rates, *chans;
+ GValue rates_v = { 0 };
+ GValue chans_v = { 0 };
+ GValue value = { 0 };
+ struct sio_enc enc;
+ struct sio_conf conf;
+ int confs[SIO_NCONF];
+ int rate, chan;
+ int i, j, k;
+ int nconfs;
+
+ sndiosrc = GST_SNDIOSRC (asrc);
+
+ GST_DEBUG_OBJECT (sndiosrc, "open");
+
+ /* connect */
+ sndiosrc->hdl = sio_open (sndiosrc->host, SIO_REC, 0);
+
+ if (sndiosrc->hdl == NULL)
+ goto couldnt_connect;
+
+ /* Use sndio defaults as the only encodings, but get the supported
+ * sample rates and number of channels.
+ */
+
+ if (!sio_getpar (sndiosrc->hdl, &par))
+ goto no_server_info;
+
+ if (!sio_getcap (sndiosrc->hdl, &cap))
+ goto no_server_info;
+
+ rates = g_array_new (FALSE, FALSE, sizeof (int));
+ chans = g_array_new (FALSE, FALSE, sizeof (int));
+
+ /* find confs that have the default encoding */
+ nconfs = 0;
+ for (i = 0; i < cap.nconf; i++) {
+ for (j = 0; j < SIO_NENC; j++) {
+ if (cap.confs[i].enc & (1 << j)) {
+ enc = cap.enc[j];
+ if (enc.bits == par.bits && enc.sig == par.sig && enc.le == par.le) {
+ confs[nconfs] = i;
+ nconfs++;
+ break;
+ }
+ }
+ }
+ }
+
+ /* find the rates and channels of the confs that have the default encoding */
+ for (i = 0; i < nconfs; i++) {
+ conf = cap.confs[confs[i]];
+ /* rates */
+ for (j = 0; j < SIO_NRATE; j++) {
+ if (conf.rate & (1 << j)) {
+ rate = cap.rate[j];
+ for (k = 0; k < rates->len && rate; k++) {
+ if (rate == g_array_index (rates, int, k))
+ rate = 0;
+ }
+ /* add in ascending order */
+ if (rate) {
+ for (k = 0; k < rates->len; k++) {
+ if (rate < g_array_index (rates, int, k))
+ {
+ g_array_insert_val (rates, k, rate);
+ break;
+ }
+ }
+ if (k == rates->len)
+ g_array_append_val (rates, rate);
+ }
+ }
+ }
+ /* channels */
+ for (j = 0; j < SIO_NCHAN; j++) {
+ if (conf.rchan & (1 << j)) {
+ chan = cap.rchan[j];
+ for (k = 0; k < chans->len && chan; k++) {
+ if (chan == g_array_index (chans, int, k))
+ chan = 0;
+ }
+ /* add in ascending order */
+ if (chan) {
+ for (k = 0; k < chans->len; k++) {
+ if (chan < g_array_index (chans, int, k))
+ {
+ g_array_insert_val (chans, k, chan);
+ break;
+ }
+ }
+ if (k == chans->len)
+ g_array_append_val (chans, chan);
+ }
+ }
+ }
+ }
+ /* not sure how this can happen, but it might */
+ if (cap.nconf == 0) {
+ g_array_append_val (rates, par.rate);
+ g_array_append_val (chans, par.rchan);
+ }
+
+ g_value_init (&rates_v, GST_TYPE_LIST);
+ g_value_init (&chans_v, GST_TYPE_LIST);
+ g_value_init (&value, G_TYPE_INT);
+
+ for (i = 0; i < rates->len; i++) {
+ g_value_set_int (&value, g_array_index (rates, int, i));
+ gst_value_list_append_value (&rates_v, &value);
+ }
+ for (i = 0; i < chans->len; i++) {
+ g_value_set_int (&value, g_array_index (chans, int, i));
+ gst_value_list_append_value (&chans_v, &value);
+ }
+
+ g_array_free (rates, TRUE);
+ g_array_free (chans, TRUE);
+
+ pad_template = gst_static_pad_template_get (&sndio_src_factory);
+ sndiosrc->cur_caps =
+ gst_caps_copy (gst_pad_template_get_caps (pad_template));
+ gst_object_unref (pad_template);
+
+ for (i = 0; i < sndiosrc->cur_caps->structs->len; i++) {
+ GstStructure *s;
+
+ s = gst_caps_get_structure (sndiosrc->cur_caps, i);
+ gst_structure_set (s, "endianness", G_TYPE_INT, par.le ? 1234 : 4321, NULL);
+ gst_structure_set (s, "signed", G_TYPE_BOOLEAN, par.sig ? TRUE : FALSE,
+ NULL);
+ gst_structure_set (s, "width", G_TYPE_INT, par.bits, NULL);
+ // gst_structure_set (s, "depth", G_TYPE_INT, par.bps * 8, NULL); /* XXX */
+ gst_structure_set_value (s, "rate", &rates_v);
+ gst_structure_set_value (s, "channels", &chans_v);
+ }
+
+ return TRUE;
+
+ /* ERRORS */
+couldnt_connect:
+ {
+ GST_ELEMENT_ERROR (sndiosrc, RESOURCE, OPEN_READ,
+ (_("Could not establish connection to sndio")),
+ ("can't open connection to sndio"));
+ return FALSE;
+ }
+no_server_info:
+ {
+ GST_ELEMENT_ERROR (sndiosrc, RESOURCE, OPEN_READ,
+ (_("Failed to query sndio capabilities")),
+ ("couldn't get sndio info!"));
+ return FALSE;
+ }
+}
+
+static gboolean
+gst_sndiosrc_close (GstAudioSrc * asrc)
+{
+ GstSndioSrc *sndiosrc = GST_SNDIOSRC (asrc);
+
+ GST_DEBUG_OBJECT (sndiosrc, "close");
+
+ gst_caps_replace (&sndiosrc->cur_caps, NULL);
+ sio_close (sndiosrc->hdl);
+ sndiosrc->hdl = NULL;
+
+ return TRUE;
+}
+
+static void
+gst_sndiosrc_cb (void *addr, int delta)
+{
+ GstSndioSrc *sndiosrc = GST_SNDIOSRC ((GstAudioSrc *) addr);
+
+ sndiosrc->realpos += delta;
+
+ if (sndiosrc->readpos >= sndiosrc->realpos)
+ sndiosrc->latency = 0;
+ else
+ sndiosrc->latency = sndiosrc->realpos - sndiosrc->readpos;
+}
+
+static gboolean
+gst_sndiosrc_prepare (GstAudioSrc * asrc, GstRingBufferSpec * spec)
+{
+ GstSndioSrc *sndiosrc = GST_SNDIOSRC (asrc);
+ struct sio_par par;
+ int spec_bpf;
+
+ GST_DEBUG_OBJECT (sndiosrc, "prepare");
+
+ sndiosrc->readpos = sndiosrc->realpos = sndiosrc->latency = 0;
+
+ sio_initpar (&par);
+ par.sig = spec->sign;
+ par.le = !spec->bigend;
+ par.bits = spec->width;
+ // par.bps = spec->depth / 8; /* XXX */
+ par.rate = spec->rate;
+ par.rchan = spec->channels;
+
+ spec_bpf = ((spec->width / 8) * spec->channels);
+
+ par.round = spec->segsize / spec_bpf;
+ par.appbufsz = (spec->segsize * spec->segtotal) / spec_bpf;
+
+ if (!sio_setpar (sndiosrc->hdl, &par))
+ goto cannot_configure;
+
+ sio_getpar (sndiosrc->hdl, &par);
+
+ spec->sign = par.sig;
+ spec->bigend = !par.le;
+ spec->width = par.bits;
+ // spec->depth = par.bps * 8; /* XXX */
+ spec->rate = par.rate;
+ spec->channels = par.rchan;
+
+ sndiosrc->bpf = par.bps * par.rchan;
+
+ spec->segsize = par.round * par.rchan * par.bps;
+ spec->segtotal = par.bufsz / par.round;
+
+ /* FIXME: this is wrong for signed ints (and the
+ * audioringbuffers should do it for us anyway) */
+ spec->silence_sample[0] = 0;
+ spec->silence_sample[1] = 0;
+ spec->silence_sample[2] = 0;
+ spec->silence_sample[3] = 0;
+
+ sio_onmove (sndiosrc->hdl, gst_sndiosrc_cb, sndiosrc);
+
+ if (!sio_start (sndiosrc->hdl))
+ goto cannot_start;
+
+ GST_INFO_OBJECT (sndiosrc, "successfully opened connection to sndio");
+
+ return TRUE;
+
+ /* ERRORS */
+cannot_configure:
+ {
+ GST_ELEMENT_ERROR (sndiosrc, RESOURCE, OPEN_READ,
+ (_("Could not configure sndio")), ("can't configure sndio"));
+ return FALSE;
+ }
+cannot_start:
+ {
+ GST_ELEMENT_ERROR (sndiosrc, RESOURCE, OPEN_READ,
+ (_("Could not start sndio")), ("can't start sndio"));
+ return FALSE;
+ }
+}
+
+static gboolean
+gst_sndiosrc_unprepare (GstAudioSrc * asrc)
+{
+ GstSndioSrc *sndiosrc = GST_SNDIOSRC (asrc);
+
+ if (sndiosrc->hdl == NULL)
+ return TRUE;
+
+ sio_stop (sndiosrc->hdl);
+
+ return TRUE;
+}
+
+static guint
+gst_sndiosrc_read (GstAudioSrc * asrc, gpointer data, guint length)
+{
+ GstSndioSrc *sndiosrc = GST_SNDIOSRC (asrc);
+ guint done;
+
+ done = sio_read (sndiosrc->hdl, data, length);
+
+ if (done == 0)
+ goto read_error;
+
+ sndiosrc->readpos += (done / sndiosrc->bpf);
+
+ data = (char *) data + done;
+
+ return done;
+
+ /* ERRORS */
+read_error:
+ {
+ GST_ELEMENT_ERROR (sndiosrc, RESOURCE, READ,
+ ("Failed to read data from sndio"), GST_ERROR_SYSTEM);
+ return 0;
+ }
+}
+
+static guint
+gst_sndiosrc_delay (GstAudioSrc * asrc)
+{
+ GstSndioSrc *sndiosrc = GST_SNDIOSRC (asrc);
+
+ if (sndiosrc->latency == (guint) - 1) {
+ GST_WARNING_OBJECT (asrc, "couldn't get latency");
+ return 0;
+ }
+
+ GST_DEBUG_OBJECT (asrc, "got latency: %u", sndiosrc->latency);
+
+ return sndiosrc->latency;
+}
+
+static void
+gst_sndiosrc_reset (GstAudioSrc * asrc)
+{
+ /* no way to flush the buffers with sndio ? */
+
+ GST_DEBUG_OBJECT (asrc, "reset called");
+}
+
+static void
+gst_sndiosrc_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstSndioSrc *sndiosrc = GST_SNDIOSRC (object);
+
+ switch (prop_id) {
+ case PROP_HOST:
+ g_free (sndiosrc->host);
+ sndiosrc->host = g_value_dup_string (value);
+ break;
+ default:
+ break;
+ }
+}
+
+static void
+gst_sndiosrc_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
+{
+ GstSndioSrc *sndiosrc = GST_SNDIOSRC (object);
+
+ switch (prop_id) {
+ case PROP_HOST:
+ g_value_set_string (value, sndiosrc->host);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
diff --git a/ext/sndio/sndiosrc.h b/ext/sndio/sndiosrc.h
new file mode 100644
index 00000000..48e7a260
--- /dev/null
+++ b/ext/sndio/sndiosrc.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) <2008> Jacob Meuser <jakemsr@sdf.lonestar.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+
+#ifndef __GST_SNDIOSRC_H__
+#define __GST_SNDIOSRC_H__
+
+#include <sndio.h>
+
+#include <gst/gst.h>
+#include <gst/audio/gstaudiosrc.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_SNDIOSRC \
+ (gst_sndiosrc_get_type())
+#define GST_SNDIOSRC(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SNDIOSRC,GstSndioSrc))
+#define GST_SNDIOSRC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SNDIOSRC,GstSndioSrcClass))
+#define GST_IS_SNDIOSRC(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SNDIOSRC))
+#define GST_IS_SNDIOSRC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SNDIOSRC))
+
+typedef struct _GstSndioSrc GstSndioSrc;
+typedef struct _GstSndioSrcClass GstSndioSrcClass;
+
+struct _GstSndioSrc {
+ GstAudioSrc src;
+
+ struct sio_hdl *hdl;
+ gchar *host;
+
+ /* bytes per frame */
+ int bpf;
+
+ /* frames counts */
+ volatile long long realpos;
+ volatile long long readpos;
+ volatile guint latency;
+
+ GstCaps *cur_caps;
+};
+
+struct _GstSndioSrcClass {
+ GstAudioSrcClass parent_class;
+};
+
+GType gst_sndiosrc_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_SNDIOSRC_H__ */
diff --git a/ext/soundtouch/Makefile.in b/ext/soundtouch/Makefile.in
index 53b819b7..452d5faf 100644
--- a/ext/soundtouch/Makefile.in
+++ b/ext/soundtouch/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -479,6 +479,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -495,6 +497,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -527,10 +530,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -658,7 +660,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/spandsp/Makefile.in b/ext/spandsp/Makefile.in
index 8b30e8e9..142ca6c7 100644
--- a/ext/spandsp/Makefile.in
+++ b/ext/spandsp/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -635,7 +637,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/spc/Makefile.in b/ext/spc/Makefile.in
index c86e373a..1cc9f2ce 100644
--- a/ext/spc/Makefile.in
+++ b/ext/spc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -634,7 +636,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/swfdec/Makefile.in b/ext/swfdec/Makefile.in
index 7c1e760d..ee8c224a 100644
--- a/ext/swfdec/Makefile.in
+++ b/ext/swfdec/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -634,7 +636,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/teletextdec/Makefile.in b/ext/teletextdec/Makefile.in
index 372f7159..88315972 100644
--- a/ext/teletextdec/Makefile.in
+++ b/ext/teletextdec/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -636,7 +638,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/timidity/Makefile.in b/ext/timidity/Makefile.in
index a0914581..f2601a56 100644
--- a/ext/timidity/Makefile.in
+++ b/ext/timidity/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -479,6 +479,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -495,6 +497,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -527,10 +530,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -670,7 +672,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/voaacenc/Makefile.in b/ext/voaacenc/Makefile.in
index c9e82ca1..3fe68e6f 100644
--- a/ext/voaacenc/Makefile.in
+++ b/ext/voaacenc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -655,7 +657,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/voaacenc/gstvoaacenc.c b/ext/voaacenc/gstvoaacenc.c
index 958de83c..09bb0534 100644
--- a/ext/voaacenc/gstvoaacenc.c
+++ b/ext/voaacenc/gstvoaacenc.c
@@ -490,7 +490,7 @@ gst_voaacenc_handle_frame (GstAudioEncoder * benc, GstBuffer * buf)
goto encode_failed;
}
- GST_LOG_OBJECT (voaacenc, "encoded to %" G_GSIZE_FORMAT " bytes",
+ GST_LOG_OBJECT (voaacenc, "encoded to %lu bytes",
output.Length);
gst_buffer_unmap (buf, &map);
gst_buffer_unmap (out, &omap);
diff --git a/ext/voamrwbenc/Makefile.in b/ext/voamrwbenc/Makefile.in
index d13473c0..7a8cb5b6 100644
--- a/ext/voamrwbenc/Makefile.in
+++ b/ext/voamrwbenc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -463,6 +463,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -479,6 +481,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -511,10 +514,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -649,7 +651,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
@@ -728,7 +730,7 @@ install-presetDATA: $(preset_DATA)
@list='$(preset_DATA)'; test -n "$(presetdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(presetdir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(presetdir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(presetdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
diff --git a/ext/vp8/Makefile.in b/ext/vp8/Makefile.in
index ff9086bf..3ae562f8 100644
--- a/ext/vp8/Makefile.in
+++ b/ext/vp8/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -465,6 +465,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -481,6 +483,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -513,10 +516,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -663,7 +665,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
@@ -758,7 +760,7 @@ install-presetDATA: $(preset_DATA)
@list='$(preset_DATA)'; test -n "$(presetdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(presetdir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(presetdir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(presetdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
diff --git a/ext/wayland/Makefile.in b/ext/wayland/Makefile.in
index 83ab58a5..09df5074 100644
--- a/ext/wayland/Makefile.in
+++ b/ext/wayland/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -641,7 +643,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/xvid/Makefile.in b/ext/xvid/Makefile.in
index 7d2c0bea..ebf7f2f8 100644
--- a/ext/xvid/Makefile.in
+++ b/ext/xvid/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -635,7 +637,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/ext/zbar/Makefile.in b/ext/zbar/Makefile.in
index 99de061a..e22a5194 100644
--- a/ext/zbar/Makefile.in
+++ b/ext/zbar/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -635,7 +637,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst-libs/Makefile.in b/gst-libs/Makefile.in
index 4118b5e5..30b4d55d 100644
--- a/gst-libs/Makefile.in
+++ b/gst-libs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -433,6 +433,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -449,6 +451,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -481,10 +484,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/gst-libs/gst/Makefile.in b/gst-libs/gst/Makefile.in
index d464f771..453bc1cd 100644
--- a/gst-libs/gst/Makefile.in
+++ b/gst-libs/gst/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -435,6 +435,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -451,6 +453,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -483,10 +486,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/gst-libs/gst/basecamerabinsrc/Makefile.in b/gst-libs/gst/basecamerabinsrc/Makefile.in
index 3e565161..b9a29d44 100644
--- a/gst-libs/gst/basecamerabinsrc/Makefile.in
+++ b/gst-libs/gst/basecamerabinsrc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -469,6 +469,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -485,6 +487,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -517,10 +520,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -659,7 +661,7 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libdir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
@@ -746,7 +748,7 @@ install-libgstbasecamerabinsrc_@GST_API_VERSION@includeHEADERS: $(libgstbasecame
@list='$(libgstbasecamerabinsrc_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstbasecamerabinsrc_@GST_API_VERSION@includedir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(libgstbasecamerabinsrc_@GST_API_VERSION@includedir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libgstbasecamerabinsrc_@GST_API_VERSION@includedir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libgstbasecamerabinsrc_@GST_API_VERSION@includedir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
diff --git a/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c b/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c
index c3422167..199bf081 100644
--- a/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c
+++ b/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c
@@ -23,7 +23,7 @@
/**
* SECTION:element-basecamerasrc
*
- * Base class for the camera source bin used by camerabin for capture.
+ * Base class for the camera source bin used by camerabin for capture.
* Sophisticated camera hardware can derive from this baseclass and map the
* features to this interface.
*
@@ -40,11 +40,32 @@
* During construct_pipeline() vmethod a subclass can add several elements into
* the bin and expose 3 srcs pads as ghostpads implementing the 3 pad templates.
*
+ * However the subclass is responsable for adding the pad templates for the
+ * source pads and they must be named "vidsrc", "imgsrc" and "vfsrc". The pad
+ * templates should be installed in the subclass' class_init function, like so:
+ * |[
+ * static void
+ * my_element_class_init (GstMyElementClass *klass)
+ * {
+ * GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+ * // pad templates should be a #GstStaticPadTemplate with direction
+ * // #GST_PAD_SRC and name "vidsrc", "imgsrc" and "vfsrc"
+ * gst_element_class_add_static_pad_template (gstelement_class,
+ * &amp;vidsrc_template);
+ * gst_element_class_add_static_pad_template (gstelement_class,
+ * &amp;imgsrc_template);
+ * gst_element_class_add_static_pad_template (gstelement_class,
+ * &amp;vfsrc_template);
+ * // see #GstElementDetails
+ * gst_element_class_set_details (gstelement_class, &amp;details);
+ * }
+ * ]|
+ *
* It is also possible to add regular pads from the subclass and implement the
* dataflow methods on these pads. This way all functionality can be implemneted
* directly in the subclass without extra elements.
*
- * The src will receive the capture mode from #GstCameraBin2 on the
+ * The src will receive the capture mode from #GstCameraBin2 on the
* #GstBaseCameraSrc:mode property. Possible capture modes are defined in
* #GstCameraBinMode.
*/
@@ -88,23 +109,6 @@ GST_DEBUG_CATEGORY (base_camera_src_debug);
#define parent_class gst_base_camera_src_parent_class
G_DEFINE_TYPE (GstBaseCameraSrc, gst_base_camera_src, GST_TYPE_BIN);
-static GstStaticPadTemplate vfsrc_template =
-GST_STATIC_PAD_TEMPLATE (GST_BASE_CAMERA_SRC_VIEWFINDER_PAD_NAME,
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY);
-
-static GstStaticPadTemplate imgsrc_template =
-GST_STATIC_PAD_TEMPLATE (GST_BASE_CAMERA_SRC_IMAGE_PAD_NAME,
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY);
-
-static GstStaticPadTemplate vidsrc_template =
-GST_STATIC_PAD_TEMPLATE (GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME,
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY);
/* NOTE: we could provide a vmethod for derived class to overload to provide
* it's own implementation of interface.. but in all cases I can think of at
@@ -287,14 +291,22 @@ gst_base_camera_src_set_property (GObject * object,
self->post_preview = g_value_get_boolean (value);
break;
case PROP_PREVIEW_CAPS:{
- GstCaps *new_caps = NULL;
+ GstCaps *new_caps;
+
new_caps = (GstCaps *) gst_value_get_caps (value);
+ if (new_caps == NULL) {
+ new_caps = gst_caps_new_any ();
+ } else {
+ new_caps = gst_caps_ref (new_caps);
+ }
+
if (!gst_caps_is_equal (self->preview_caps, new_caps)) {
gst_caps_replace (&self->preview_caps, new_caps);
gst_base_camera_src_setup_preview (self, new_caps);
} else {
GST_DEBUG_OBJECT (self, "New preview caps equal current preview caps");
}
+ gst_caps_unref (new_caps);
}
break;
case PROP_PREVIEW_FILTER:
@@ -477,7 +489,7 @@ gst_base_camera_src_class_init (GstBaseCameraSrcClass * klass)
g_object_class_install_property (gobject_class, PROP_PREVIEW_CAPS,
g_param_spec_boxed ("preview-caps", "Preview caps",
- "The caps of the preview image to be posted",
+ "The caps of the preview image to be posted (NULL means ANY)",
GST_TYPE_CAPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_PREVIEW_FILTER,
@@ -522,15 +534,6 @@ gst_base_camera_src_class_init (GstBaseCameraSrcClass * klass)
gst_element_class_set_details_simple (gstelement_class,
"Base class for camerabin src bin", "Source/Video",
"Abstracts capture device for camerabin2", "Rob Clark <rob@ti.com>");
-
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&vfsrc_template));
-
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&imgsrc_template));
-
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&vidsrc_template));
}
static void
@@ -546,6 +549,7 @@ gst_base_camera_src_init (GstBaseCameraSrc * self)
g_mutex_init (&self->capturing_mutex);
self->post_preview = DEFAULT_POST_PREVIEW;
+ self->preview_caps = gst_caps_new_any ();
self->preview_pipeline =
gst_camerabin_create_preview_pipeline (GST_ELEMENT_CAST (self), NULL);
diff --git a/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c b/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c
index ee08c6b2..e4b95b89 100644
--- a/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c
+++ b/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c
@@ -140,7 +140,7 @@ gst_camerabin_create_preview_pipeline (GstElement * element,
data->pipeline = gst_pipeline_new ("preview-pipeline");
data->appsrc = gst_element_factory_make ("appsrc", "preview-appsrc");
data->appsink = gst_element_factory_make ("appsink", "preview-appsink");
- csp = gst_element_factory_make ("ffmpegcolorspace", "preview-csp");
+ csp = gst_element_factory_make ("videoconvert", "preview-vconv");
vscale = gst_element_factory_make ("videoscale", "preview-vscale");
if (!data->appsrc || !data->appsink || !csp || !vscale) {
@@ -148,7 +148,7 @@ gst_camerabin_create_preview_pipeline (GstElement * element,
}
g_object_set (data->appsrc, "emit-signals", FALSE, NULL);
- g_object_set (data->appsink, "sync", FALSE, "enable-last-buffer",
+ g_object_set (data->appsink, "sync", FALSE, "enable-last-sample",
FALSE, NULL);
gst_bin_add_many (GST_BIN (data->pipeline), data->appsrc,
diff --git a/gst-libs/gst/codecparsers/Makefile.in b/gst-libs/gst/codecparsers/Makefile.in
index 8fa3da2a..1121c128 100644
--- a/gst-libs/gst/codecparsers/Makefile.in
+++ b/gst-libs/gst/codecparsers/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -469,6 +469,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -485,6 +487,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -517,10 +520,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -662,7 +664,7 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libdir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
@@ -765,7 +767,7 @@ install-libgstcodecparsers_@GST_API_VERSION@includeHEADERS: $(libgstcodecparsers
@list='$(libgstcodecparsers_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstcodecparsers_@GST_API_VERSION@includedir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(libgstcodecparsers_@GST_API_VERSION@includedir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libgstcodecparsers_@GST_API_VERSION@includedir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libgstcodecparsers_@GST_API_VERSION@includedir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
diff --git a/gst-libs/gst/codecparsers/gstmpeg4parser.c b/gst-libs/gst/codecparsers/gstmpeg4parser.c
index 1166b872..b62d9e90 100644
--- a/gst-libs/gst/codecparsers/gstmpeg4parser.c
+++ b/gst-libs/gst/codecparsers/gstmpeg4parser.c
@@ -328,7 +328,7 @@ compute_resync_marker_size (const GstMpeg4VideoObjectPlane * vop,
*mask = 0xfffff000;
break;
case 20:
- *pattern = 0x0000080;
+ *pattern = 0x00000800;
*mask = 0xfffff800;
break;
case 21:
diff --git a/gst-libs/gst/codecparsers/gstmpegvideoparser.c b/gst-libs/gst/codecparsers/gstmpegvideoparser.c
index b45156a8..ec8c934b 100644
--- a/gst-libs/gst/codecparsers/gstmpegvideoparser.c
+++ b/gst-libs/gst/codecparsers/gstmpegvideoparser.c
@@ -334,13 +334,13 @@ gst_mpeg_video_parse (const guint8 * data, gsize size, guint offset)
codoffsize->offset = gst_byte_reader_get_pos (&br) + offset;
rsize = gst_byte_reader_get_remaining (&br);
- if (rsize <= 0) {
- g_free (codoffsize);
- break;
+ if (rsize == 0) {
+ /* if there are no more bytes after the start code set the size to -1 */
+ off = -1;
+ } else {
+ off = scan_for_start_codes (&br, 0, rsize);
}
- off = scan_for_start_codes (&br, 0, rsize);
-
codoffsize->size = off;
ret = g_list_prepend (ret, codoffsize);
diff --git a/gst-libs/gst/interfaces/Makefile.in b/gst-libs/gst/interfaces/Makefile.in
index 47d5f916..576a6523 100644
--- a/gst-libs/gst/interfaces/Makefile.in
+++ b/gst-libs/gst/interfaces/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -480,6 +480,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -496,6 +498,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -528,10 +531,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -693,7 +695,7 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libdir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
@@ -772,7 +774,7 @@ install-libgstphotographyincludeHEADERS: $(libgstphotographyinclude_HEADERS)
@list='$(libgstphotographyinclude_HEADERS)'; test -n "$(libgstphotographyincludedir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(libgstphotographyincludedir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libgstphotographyincludedir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libgstphotographyincludedir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
@@ -793,7 +795,7 @@ install-nodist_libgstphotographyincludeHEADERS: $(nodist_libgstphotographyinclud
@list='$(nodist_libgstphotographyinclude_HEADERS)'; test -n "$(libgstphotographyincludedir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(libgstphotographyincludedir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libgstphotographyincludedir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libgstphotographyincludedir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
diff --git a/gst-libs/gst/signalprocessor/Makefile.in b/gst-libs/gst/signalprocessor/Makefile.in
index b1b26934..fbb3f300 100644
--- a/gst-libs/gst/signalprocessor/Makefile.in
+++ b/gst-libs/gst/signalprocessor/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -465,6 +465,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -481,6 +483,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -513,10 +516,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -648,7 +650,7 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libdir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
@@ -719,7 +721,7 @@ install-libgstsignalprocessor_@GST_API_VERSION@includeHEADERS: $(libgstsignalpro
@list='$(libgstsignalprocessor_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstsignalprocessor_@GST_API_VERSION@includedir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(libgstsignalprocessor_@GST_API_VERSION@includedir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libgstsignalprocessor_@GST_API_VERSION@includedir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libgstsignalprocessor_@GST_API_VERSION@includedir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
diff --git a/gst-libs/gst/video/Makefile.in b/gst-libs/gst/video/Makefile.in
index 4dda91fc..d9acc7d2 100644
--- a/gst-libs/gst/video/Makefile.in
+++ b/gst-libs/gst/video/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -471,6 +471,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -487,6 +489,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -519,10 +522,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -667,7 +669,7 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libdir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
@@ -786,7 +788,7 @@ install-libgstbasevideo_@GST_API_VERSION@includeHEADERS: $(libgstbasevideo_@GST_
@list='$(libgstbasevideo_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstbasevideo_@GST_API_VERSION@includedir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(libgstbasevideo_@GST_API_VERSION@includedir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libgstbasevideo_@GST_API_VERSION@includedir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libgstbasevideo_@GST_API_VERSION@includedir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
diff --git a/gst-libs/gst/video/gstbasevideodecoder.c b/gst-libs/gst/video/gstbasevideodecoder.c
index e3ec9aa6..271551d4 100644
--- a/gst-libs/gst/video/gstbasevideodecoder.c
+++ b/gst-libs/gst/video/gstbasevideodecoder.c
@@ -1001,7 +1001,7 @@ gst_base_video_decoder_chain_forward (GstBaseVideoDecoder * base_video_decoder,
if (base_video_decoder->packetized) {
base_video_decoder->current_frame->sink_buffer = buf;
- if (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT))
+ if (!GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT))
base_video_decoder->current_frame->is_sync_point = TRUE;
ret = gst_base_video_decoder_have_frame_2 (base_video_decoder);
@@ -2028,10 +2028,7 @@ gst_base_video_decoder_set_src_caps (GstBaseVideoDecoder * base_video_decoder)
info->fps_d = state->fps_d;
if (state->have_interlaced) {
- if (state->interlaced)
- GST_VIDEO_INFO_FLAG_SET (info, GST_VIDEO_FLAG_INTERLACED);
- if (state->top_field_first)
- GST_VIDEO_INFO_FLAG_SET (info, GST_VIDEO_FLAG_TFF);
+ info->interlace_mode = GST_VIDEO_INTERLACE_MODE_INTERLEAVED;
}
/* FIXME : Handle chroma site */
diff --git a/gst-libs/gst/video/gstbasevideoencoder.c b/gst-libs/gst/video/gstbasevideoencoder.c
index 36248bb0..13160ce0 100644
--- a/gst-libs/gst/video/gstbasevideoencoder.c
+++ b/gst-libs/gst/video/gstbasevideoencoder.c
@@ -351,9 +351,7 @@ gst_base_video_encoder_sink_setcaps (GstBaseVideoEncoder * base_video_encoder,
/* FIXME (Edward): We need flags in GstVideoInfo to know whether
* interlaced field was present in input caps */
tmp_state.have_interlaced = tmp_state.interlaced =
- GST_VIDEO_INFO_FLAG_IS_SET (&tmp_info, GST_VIDEO_FLAG_INTERLACED);
- tmp_state.top_field_first =
- GST_VIDEO_INFO_FLAG_IS_SET (&tmp_info, GST_VIDEO_FLAG_TFF);
+ GST_VIDEO_INFO_IS_INTERLACED (&tmp_info);
if (changed) {
/* arrange draining pending frames */
diff --git a/gst-libs/gst/video/gstsurfaceconverter.c b/gst-libs/gst/video/gstsurfaceconverter.c
index 23fc5dd4..9404c587 100644
--- a/gst-libs/gst/video/gstsurfaceconverter.c
+++ b/gst-libs/gst/video/gstsurfaceconverter.c
@@ -36,7 +36,7 @@
* uploads. The context must be discarded when the pipeline goes to
* #GST_STATE_NULL or renewed whenever the caps are changed.
* <note>
- * The GstVideoContext interface is unstable API and may change in future.
+ * The GstSurfaceConverter interface is unstable API and may change in future.
* One can define GST_USE_UNSTABLE_API to acknowledge and avoid this warning.
* </note>
*
diff --git a/gst-libs/gst/video/gstsurfacemeta.c b/gst-libs/gst/video/gstsurfacemeta.c
index 0e22d0e3..3ff9aec8 100644
--- a/gst-libs/gst/video/gstsurfacemeta.c
+++ b/gst-libs/gst/video/gstsurfacemeta.c
@@ -39,7 +39,7 @@
* allow easy negotiating of such feature with other elements (e.g. a
* ClutterGstVideoSink can claim accpeting caps "video/x-surface,opengl=true").
* <note>
- * The GstVideoContext interface is unstable API and may change in future.
+ * The GstSurfaceMeta interface is unstable API and may change in future.
* One can define GST_USE_UNSTABLE_API to acknowledge and avoid this warning.
* </note>
*/
diff --git a/gst-libs/gst/video/gstsurfacemeta.h b/gst-libs/gst/video/gstsurfacemeta.h
index 7ad5c626..ed04bc28 100644
--- a/gst-libs/gst/video/gstsurfacemeta.h
+++ b/gst-libs/gst/video/gstsurfacemeta.h
@@ -24,7 +24,7 @@
#define _GST_SURFACE_META_H_
#ifndef GST_USE_UNSTABLE_API
-#warning "GstSurfaceBuffer is unstable API and may change in future."
+#warning "GstSurfaceMeta is unstable API and may change in future."
#warning "You can define GST_USE_UNSTABLE_API to avoid this warning."
#endif
diff --git a/gst-libs/gst/video/videocontext.c b/gst-libs/gst/video/videocontext.c
index 489cf06a..e84aa213 100644
--- a/gst-libs/gst/video/videocontext.c
+++ b/gst-libs/gst/video/videocontext.c
@@ -192,7 +192,6 @@ gst_video_context_pad_query (const GValue * item, GValue * value,
gboolean res;
res = gst_pad_peer_query (pad, query);
- gst_object_unref (pad);
if (res) {
g_value_set_boolean (value, TRUE);
diff --git a/gst-plugins-bad.doap b/gst-plugins-bad.doap
index 1651d082..d918f237 100644
--- a/gst-plugins-bad.doap
+++ b/gst-plugins-bad.doap
@@ -35,6 +35,16 @@ real live maintainer, or some actual wide use.
<release>
<Version>
+ <revision>0.11.91</revision>
+ <branch>0.11</branch>
+ <name>Be he alive, or be he dead</name>
+ <created>2012-05-13</created>
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.11.91.tar.xz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>0.11.90</revision>
<branch>0.11</branch>
<name>Where the good and the bad and the worst and the best have gone to their eternal rest</name>
diff --git a/gst-plugins-bad.spec b/gst-plugins-bad.spec
index 40e20427..2bb60469 100644
--- a/gst-plugins-bad.spec
+++ b/gst-plugins-bad.spec
@@ -6,7 +6,7 @@
Summary: GStreamer streaming media framework "bad" plug-ins
Name: gstreamer-plugins-bad011
-Version: 0.11.90
+Version: 0.11.91
Release: 1.gst
# The freeze and nfs plugins are LGPLv2 (only)
License: LGPLv2+ and LGPLv2
@@ -258,7 +258,7 @@ make ERROR_CFLAGS='' ERROR_CXXFLAGS=''
# %{_libdir}/gstreamer-%{majorminor}/libgstdecklink.so
%{_libdir}/gstreamer-%{majorminor}/libgstdvbsuboverlay.so
# %{_libdir}/gstreamer-%{majorminor}/libgstfieldanalysis.so
-# %{_libdir}/gstreamer-%{majorminor}/libgstfragmented.so
+%{_libdir}/gstreamer-%{majorminor}/libgstfragmented.so
# %{_libdir}/gstreamer-%{majorminor}/libgstinterlace.so
# %{_libdir}/gstreamer-%{majorminor}/libgstjp2kdecimator.so
# %{_libdir}/gstreamer-%{majorminor}/libgstlinsys.so
diff --git a/gst-plugins-bad.spec.in b/gst-plugins-bad.spec.in
index 3fcf8f6c..2964e004 100644
--- a/gst-plugins-bad.spec.in
+++ b/gst-plugins-bad.spec.in
@@ -258,7 +258,7 @@ make ERROR_CFLAGS='' ERROR_CXXFLAGS=''
# %{_libdir}/gstreamer-%{majorminor}/libgstdecklink.so
%{_libdir}/gstreamer-%{majorminor}/libgstdvbsuboverlay.so
# %{_libdir}/gstreamer-%{majorminor}/libgstfieldanalysis.so
-# %{_libdir}/gstreamer-%{majorminor}/libgstfragmented.so
+%{_libdir}/gstreamer-%{majorminor}/libgstfragmented.so
# %{_libdir}/gstreamer-%{majorminor}/libgstinterlace.so
# %{_libdir}/gstreamer-%{majorminor}/libgstjp2kdecimator.so
# %{_libdir}/gstreamer-%{majorminor}/libgstlinsys.so
diff --git a/gst/Makefile.in b/gst/Makefile.in
index fc9fc800..0a8c0d8a 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -438,6 +438,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -454,6 +456,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -486,10 +489,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/gst/adpcmdec/Makefile.in b/gst/adpcmdec/Makefile.in
index f2b44a17..8539ddc9 100644
--- a/gst/adpcmdec/Makefile.in
+++ b/gst/adpcmdec/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -457,6 +457,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -473,6 +475,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -505,10 +508,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -638,7 +640,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/adpcmenc/Makefile.in b/gst/adpcmenc/Makefile.in
index fbc06e65..aa5bc44b 100644
--- a/gst/adpcmenc/Makefile.in
+++ b/gst/adpcmenc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -457,6 +457,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -473,6 +475,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -505,10 +508,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -637,7 +639,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/aiff/Makefile.in b/gst/aiff/Makefile.in
index 3967c73f..10601d52 100644
--- a/gst/aiff/Makefile.in
+++ b/gst/aiff/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -644,7 +646,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/asfmux/Makefile.in b/gst/asfmux/Makefile.in
index d116d440..32b77e50 100644
--- a/gst/asfmux/Makefile.in
+++ b/gst/asfmux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -465,6 +465,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -481,6 +483,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -513,10 +516,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -657,7 +659,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/asfmux/gstasfmux.c b/gst/asfmux/gstasfmux.c
index e7184f60..78b17dea 100644
--- a/gst/asfmux/gstasfmux.c
+++ b/gst/asfmux/gstasfmux.c
@@ -73,6 +73,7 @@
#endif
#include <string.h>
+#include <stdio.h>
#include <gst/gst-i18n-plugin.h>
#include "gstasfmux.h"
@@ -149,12 +150,11 @@ static GstStaticPadTemplate audio_sink_factory =
"audio/mpeg, layer = (int) 3, mpegversion = (int) 1, "
"channels = (int) [1,2], rate = (int) [8000,96000]"));
-static void gst_asf_mux_base_init (gpointer g_class);
-static void gst_asf_mux_class_init (GstAsfMuxClass * klass);
-static void gst_asf_mux_init (GstAsfMux * asfmux);
+static gboolean gst_asf_mux_audio_set_caps (GstPad * pad, GstCaps * caps);
+static gboolean gst_asf_mux_video_set_caps (GstPad * pad, GstCaps * caps);
static GstPad *gst_asf_mux_request_new_pad (GstElement * element,
- GstPadTemplate * templ, const gchar * name);
+ GstPadTemplate * templ, const gchar * name, const GstCaps * caps);
static void gst_asf_mux_set_property (GObject * object,
guint prop_id, const GValue * value, GParamSpec * pspec);
static void gst_asf_mux_get_property (GObject * object,
@@ -162,7 +162,8 @@ static void gst_asf_mux_get_property (GObject * object,
static GstStateChangeReturn gst_asf_mux_change_state (GstElement * element,
GstStateChange transition);
-static gboolean gst_asf_mux_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_asf_mux_sink_event (GstCollectPads * pads,
+ GstCollectData * cdata, GstEvent * event, GstAsfMux * asfmux);
static void gst_asf_mux_pad_reset (GstAsfPad * data);
static GstFlowReturn gst_asf_mux_collected (GstCollectPads * collect,
@@ -170,36 +171,8 @@ static GstFlowReturn gst_asf_mux_collected (GstCollectPads * collect,
static GstElementClass *parent_class = NULL;
-GType
-gst_asf_mux_get_type (void)
-{
- static GType asfmux_type = 0;
-
- if (!asfmux_type) {
- static const GTypeInfo asfmux_info = {
- sizeof (GstAsfMuxClass),
- gst_asf_mux_base_init,
- NULL,
- (GClassInitFunc) gst_asf_mux_class_init,
- NULL,
- NULL,
- sizeof (GstAsfMux),
- 0,
- (GInstanceInitFunc) gst_asf_mux_init,
- };
- static const GInterfaceInfo tag_setter_info = {
- NULL,
- NULL,
- NULL
- };
-
- asfmux_type =
- g_type_register_static (GST_TYPE_ELEMENT, "GstAsfMux", &asfmux_info, 0);
- g_type_add_interface_static (asfmux_type, GST_TYPE_TAG_SETTER,
- &tag_setter_info);
- }
- return asfmux_type;
-}
+G_DEFINE_TYPE_WITH_CODE (GstAsfMux, gst_asf_mux, GST_TYPE_ELEMENT,
+ G_IMPLEMENT_INTERFACE (GST_TYPE_TAG_SETTER, NULL));
static void
gst_asf_mux_reset (GstAsfMux * asfmux)
@@ -234,26 +207,6 @@ gst_asf_mux_reset (GstAsfMux * asfmux)
}
static void
-gst_asf_mux_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&audio_sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_sink_factory));
-
- gst_element_class_set_details_simple (element_class, "ASF muxer",
- "Codec/Muxer",
- "Muxes audio and video into an ASF stream",
- "Thiago Santos <thiagoss@embedded.ufcg.edu.br>");
-
- GST_DEBUG_CATEGORY_INIT (asfmux_debug, "asfmux", 0, "Muxer for ASF streams");
-}
-
-static void
gst_asf_mux_finalize (GObject * object)
{
GstAsfMux *asfmux;
@@ -321,23 +274,35 @@ gst_asf_mux_class_init (GstAsfMuxClass * klass)
gstelement_class->request_new_pad =
GST_DEBUG_FUNCPTR (gst_asf_mux_request_new_pad);
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_asf_mux_change_state);
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&audio_sink_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&video_sink_factory));
+
+ gst_element_class_set_details_simple (gstelement_class, "ASF muxer",
+ "Codec/Muxer",
+ "Muxes audio and video into an ASF stream",
+ "Thiago Santos <thiagoss@embedded.ufcg.edu.br>");
+
+ GST_DEBUG_CATEGORY_INIT (asfmux_debug, "asfmux", 0, "Muxer for ASF streams");
}
static void
gst_asf_mux_init (GstAsfMux * asfmux)
{
- GstCaps *caps;
-
asfmux->srcpad = gst_pad_new_from_static_template (&src_factory, "src");
- caps = gst_caps_copy (gst_pad_get_pad_template_caps (asfmux->srcpad));
- gst_pad_set_caps (asfmux->srcpad, caps);
- gst_caps_unref (caps);
gst_pad_use_fixed_caps (asfmux->srcpad);
gst_element_add_pad (GST_ELEMENT (asfmux), asfmux->srcpad);
- asfmux->collect = gst_collect_pads2_new ();
- gst_collect_pads2_set_function (asfmux->collect,
- (GstCollectPads2Function) GST_DEBUG_FUNCPTR (gst_asf_mux_collected),
+ asfmux->collect = gst_collect_pads_new ();
+ gst_collect_pads_set_function (asfmux->collect,
+ (GstCollectPadsFunction) GST_DEBUG_FUNCPTR (gst_asf_mux_collected),
+ asfmux);
+ gst_collect_pads_set_event_function (asfmux->collect,
+ (GstCollectPadsEventFunction) GST_DEBUG_FUNCPTR (gst_asf_mux_sink_event),
asfmux);
asfmux->payloads = NULL;
@@ -350,14 +315,26 @@ gst_asf_mux_init (GstAsfMux * asfmux)
}
static gboolean
-gst_asf_mux_sink_event (GstPad * pad, GstEvent * event)
+gst_asf_mux_sink_event (GstCollectPads * pads, GstCollectData * cdata,
+ GstEvent * event, GstAsfMux * asfmux)
{
- gboolean ret;
- GstAsfMux *asfmux;
- GstAsfPad *asfpad = (GstAsfPad *) gst_pad_get_element_private (pad);
+ GstAsfPad *asfpad = (GstAsfPad *) cdata;
+ gboolean ret = TRUE;
- asfmux = GST_ASF_MUX_CAST (gst_pad_get_parent (pad));
switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_CAPS:
+ {
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ if (asfpad->is_audio)
+ ret = gst_asf_mux_audio_set_caps (cdata->pad, caps);
+ else
+ ret = gst_asf_mux_video_set_caps (cdata->pad, caps);
+ gst_event_unref (event);
+ event = NULL;
+ break;
+ }
case GST_EVENT_TAG:{
GST_DEBUG_OBJECT (asfmux, "received tag event");
/* we discard tag events that come after we started
@@ -374,7 +351,7 @@ gst_asf_mux_sink_event (GstPad * pad, GstEvent * event)
gst_tag_setter_merge_tags (setter, list, mode);
} else {
if (asfpad->taglist == NULL) {
- asfpad->taglist = gst_tag_list_new ();
+ asfpad->taglist = gst_tag_list_new_empty ();
}
gst_tag_list_insert (asfpad->taglist, list, GST_TAG_MERGE_REPLACE);
}
@@ -385,8 +362,9 @@ gst_asf_mux_sink_event (GstPad * pad, GstEvent * event)
break;
}
- ret = asfmux->collect_event (pad, event);
- gst_object_unref (asfmux);
+ if (event != NULL)
+ return gst_collect_pads_event_default (pads, cdata, event, FALSE);
+
return ret;
}
@@ -403,10 +381,9 @@ static GstFlowReturn
gst_asf_mux_push_buffer (GstAsfMux * asfmux, GstBuffer * buf)
{
GstFlowReturn ret;
- gst_buffer_set_caps (buf, GST_PAD_CAPS (asfmux->srcpad));
ret = gst_pad_push (asfmux->srcpad, buf);
if (ret == GST_FLOW_OK)
- asfmux->file_size += GST_BUFFER_SIZE (buf);
+ asfmux->file_size += gst_buffer_get_size (buf);
return ret;
}
@@ -505,7 +482,7 @@ gst_asf_mux_get_content_description_tags (GstAsfMux * asfmux,
if (asftags->tags != NULL) {
gst_tag_list_free (asftags->tags);
}
- asftags->tags = gst_tag_list_new ();
+ asftags->tags = gst_tag_list_new_empty ();
asftags->cont_desc_size = 0;
asftags->ext_cont_desc_size = 0;
@@ -633,7 +610,7 @@ gst_asf_mux_get_headers_size (GstAsfMux * asfmux)
size += ASF_VIDEO_SPECIFIC_DATA_SIZE;
if (asfpad->codec_data)
- size += GST_BUFFER_SIZE (asfpad->codec_data);
+ size += gst_buffer_get_size (asfpad->codec_data);
stream_num++;
}
@@ -713,7 +690,7 @@ gst_asf_mux_write_stream_properties (GstAsfMux * asfmux, guint8 ** buf,
/* codec specific data length */
if (asfpad->codec_data)
- codec_data_length = GST_BUFFER_SIZE (asfpad->codec_data);
+ codec_data_length = gst_buffer_get_size (asfpad->codec_data);
if (asfpad->is_audio)
media_specific_data_length = ASF_AUDIO_SPECIFIC_DATA_SIZE;
else
@@ -800,7 +777,7 @@ gst_asf_mux_write_stream_properties (GstAsfMux * asfmux, guint8 ** buf,
}
if (codec_data_length > 0)
- memcpy (*buf, GST_BUFFER_DATA (asfpad->codec_data), codec_data_length);
+ gst_buffer_extract (asfpad->codec_data, 0, *buf, codec_data_length);
*buf += codec_data_length;
}
@@ -1286,6 +1263,9 @@ gst_asf_mux_start_file (GstAsfMux * asfmux)
GstCaps *caps;
GstStructure *structure;
guint64 padding = asfmux->prop_padding;
+ GstSegment segment;
+ GstMapInfo map;
+
if (padding < ASF_PADDING_OBJECT_SIZE)
padding = 0;
@@ -1293,9 +1273,13 @@ gst_asf_mux_start_file (GstAsfMux * asfmux)
GST_INFO_OBJECT (asfmux, "Writing headers");
asfmux->state = GST_ASF_MUX_STATE_HEADERS;
+ caps = gst_pad_get_pad_template_caps (asfmux->srcpad);
+ gst_pad_set_caps (asfmux->srcpad, caps);
+ gst_caps_unref (caps);
+
/* let downstream know we think in BYTES and expect to do seeking later */
- gst_pad_push_event (asfmux->srcpad,
- gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_BYTES, 0, -1, 0));
+ gst_segment_init (&segment, GST_FORMAT_BYTES);
+ gst_pad_push_event (asfmux->srcpad, gst_event_new_segment (&segment));
gst_asf_generate_file_id (&asfmux->file_id);
@@ -1318,14 +1302,16 @@ gst_asf_mux_start_file (GstAsfMux * asfmux)
asftags->cont_desc_size +
asftags->ext_cont_desc_size +
metadata_obj_size + padding + ASF_DATA_OBJECT_SIZE);
- bufdata = GST_BUFFER_DATA (buf);
- gst_asf_mux_write_header_object (asfmux, &bufdata, GST_BUFFER_SIZE (buf) -
+ gst_buffer_map (buf, &map, GST_MAP_WRITE);
+ bufdata = map.data;
+
+ gst_asf_mux_write_header_object (asfmux, &bufdata, map.size -
ASF_DATA_OBJECT_SIZE, 2 + stream_num);
/* get the position of the file properties object for
* updating it in gst_asf_mux_stop_file */
- asfmux->file_properties_object_position = bufdata - GST_BUFFER_DATA (buf);
+ asfmux->file_properties_object_position = bufdata - map.data;
gst_asf_mux_write_file_properties (asfmux, &bufdata);
for (walk = asfmux->collect->data; walk; walk = g_slist_next (walk)) {
@@ -1361,7 +1347,7 @@ gst_asf_mux_start_file (GstAsfMux * asfmux)
gst_asf_mux_write_padding_object (asfmux, &bufdata, padding);
/* store data object position for later updating some fields */
- asfmux->data_object_position = bufdata - GST_BUFFER_DATA (buf);
+ asfmux->data_object_position = bufdata - map.data;
gst_asf_mux_write_data_object (asfmux, &bufdata);
/* set streamheader in source pad if 'streamable' */
@@ -1369,17 +1355,18 @@ gst_asf_mux_start_file (GstAsfMux * asfmux)
g_value_init (&streamheader, GST_TYPE_ARRAY);
gst_asf_mux_put_buffer_in_streamheader (&streamheader, buf);
- caps = gst_caps_ref (GST_PAD_CAPS (asfmux->srcpad));
+ caps = gst_pad_get_current_caps (asfmux->srcpad);
caps = gst_caps_make_writable (caps);
structure = gst_caps_get_structure (caps, 0);
gst_structure_set_value (structure, "streamheader", &streamheader);
gst_pad_set_caps (asfmux->srcpad, caps);
- GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_IN_CAPS);
+ GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_HEADER);
g_value_unset (&streamheader);
gst_caps_unref (caps);
}
- g_assert (bufdata - GST_BUFFER_DATA (buf) == GST_BUFFER_SIZE (buf));
+ g_assert (bufdata - map.data == map.size);
+ gst_buffer_unmap (buf, &map);
return gst_asf_mux_push_buffer (asfmux, buf);
}
@@ -1423,11 +1410,11 @@ gst_asf_mux_add_simple_index_entry (GstAsfMux * asfmux,
static GstFlowReturn
gst_asf_mux_send_packet (GstAsfMux * asfmux, GstBuffer * buf)
{
- g_assert (GST_BUFFER_SIZE (buf) == asfmux->packet_size);
+ g_assert (gst_buffer_get_size (buf) == asfmux->packet_size);
asfmux->total_data_packets++;
GST_LOG_OBJECT (asfmux,
- "Pushing a packet of size %u and timestamp %" G_GUINT64_FORMAT,
- GST_BUFFER_SIZE (buf), GST_BUFFER_TIMESTAMP (buf));
+ "Pushing a packet of size %" G_GSIZE_FORMAT " and timestamp %"
+ G_GUINT64_FORMAT, gst_buffer_get_size (buf), GST_BUFFER_TIMESTAMP (buf));
GST_LOG_OBJECT (asfmux, "Total data packets: %" G_GUINT64_FORMAT,
asfmux->total_data_packets);
return gst_asf_mux_push_buffer (asfmux, buf);
@@ -1457,6 +1444,7 @@ gst_asf_mux_flush_payloads (GstAsfMux * asfmux)
AsfPayload *payload;
guint32 payload_size;
guint offset;
+ GstMapInfo map;
if (asfmux->payloads == NULL)
return GST_FLOW_OK; /* nothing to send is ok */
@@ -1464,10 +1452,11 @@ gst_asf_mux_flush_payloads (GstAsfMux * asfmux)
GST_LOG_OBJECT (asfmux, "Flushing payloads");
buf = gst_buffer_new_and_alloc (asfmux->packet_size);
- memset (GST_BUFFER_DATA (buf), 0, asfmux->packet_size);
+ gst_buffer_map (buf, &map, GST_MAP_WRITE);
+ memset (map.data, 0, asfmux->packet_size);
/* 1 for the multiple payload flags */
- data = GST_BUFFER_DATA (buf) + asfmux->payload_parsing_info_size + 1;
+ data = map.data + asfmux->payload_parsing_info_size + 1;
size_left = asfmux->packet_size - asfmux->payload_parsing_info_size - 1;
has_keyframe = FALSE;
@@ -1508,8 +1497,8 @@ gst_asf_mux_flush_payloads (GstAsfMux * asfmux)
payload->media_object_size);
GST_DEBUG_OBJECT (asfmux, "replicated data length: %d",
(gint) payload->replicated_data_length);
- GST_DEBUG_OBJECT (asfmux, "payload size: %u",
- GST_BUFFER_SIZE (payload->data));
+ GST_DEBUG_OBJECT (asfmux, "payload size: %" G_GSIZE_FORMAT,
+ gst_buffer_get_size (payload->data));
GST_DEBUG_OBJECT (asfmux, "presentation time: %" G_GUINT32_FORMAT " (%"
GST_TIME_FORMAT ")", payload->presentation_time,
GST_TIME_ARGS (payload->presentation_time * GST_MSECOND));
@@ -1554,7 +1543,8 @@ gst_asf_mux_flush_payloads (GstAsfMux * asfmux)
payload = (AsfPayload *) aux->data;
asfmux->payloads = g_slist_remove (asfmux->payloads, payload);
asfmux->payload_data_size -=
- (GST_BUFFER_SIZE (payload->data) + ASF_MULTIPLE_PAYLOAD_HEADER_SIZE);
+ (gst_buffer_get_size (payload->data) +
+ ASF_MULTIPLE_PAYLOAD_HEADER_SIZE);
gst_asf_payload_free (payload);
}
@@ -1586,7 +1576,7 @@ gst_asf_mux_flush_payloads (GstAsfMux * asfmux)
asfmux->payload_data_size);
/* fill payload parsing info */
- data = GST_BUFFER_DATA (buf);
+ data = map.data;
/* flags */
GST_WRITE_UINT8 (data, (0x0 << 7) | /* no error correction */
(ASF_FIELD_TYPE_DWORD << 5) | /* packet length type */
@@ -1637,11 +1627,12 @@ gst_asf_mux_flush_payloads (GstAsfMux * asfmux)
/* multiple payloads flags */
GST_WRITE_UINT8 (data + offset, 0x2 << 6 | payloads_count);
+ gst_buffer_unmap (buf, &map);
if (payloads_count == 0) {
GST_WARNING_OBJECT (asfmux, "Sending packet without any payload");
}
- asfmux->data_object_size += GST_BUFFER_SIZE (buf);
+ asfmux->data_object_size += gst_buffer_get_size (buf);
if (!has_keyframe)
GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT);
return gst_asf_mux_send_packet (asfmux, buf);
@@ -1671,8 +1662,12 @@ gst_asf_mux_push_simple_index (GstAsfMux * asfmux, GstAsfVideoPad * pad)
g_slist_length (pad->simple_index) * ASF_SIMPLE_INDEX_ENTRY_SIZE;
GstBuffer *buf = gst_buffer_new_and_alloc (object_size);
GSList *walk;
- guint8 *data = GST_BUFFER_DATA (buf);
+ guint8 *data;
guint32 entries_count = g_slist_length (pad->simple_index);
+ GstMapInfo map;
+
+ gst_buffer_map (buf, &map, GST_MAP_WRITE);
+ data = map.data;
gst_asf_put_guid (data, guids[ASF_SIMPLE_INDEX_OBJECT_INDEX]);
GST_WRITE_UINT64_LE (data + 16, object_size);
@@ -1699,7 +1694,8 @@ gst_asf_mux_push_simple_index (GstAsfMux * asfmux, GstAsfVideoPad * pad)
}
GST_DEBUG_OBJECT (asfmux, "Pushing the simple index");
- g_assert (data - GST_BUFFER_DATA (buf) == object_size);
+ g_assert (data - map.data == object_size);
+ gst_buffer_unmap (buf, &map);
return gst_asf_mux_push_buffer (asfmux, buf);
}
@@ -1751,6 +1747,9 @@ gst_asf_mux_stop_file (GstAsfMux * asfmux)
GSList *walk;
GstClockTime play_duration = 0;
guint32 bitrate = 0;
+ GstSegment segment;
+ GstMapInfo map;
+ guint8 *data;
/* write indexes */
ret = gst_asf_mux_write_indexes (asfmux);
@@ -1771,22 +1770,25 @@ gst_asf_mux_stop_file (GstAsfMux * asfmux)
* values we didn't know back then */
GST_DEBUG_OBJECT (asfmux,
"Sending new segment to file properties object position");
- event =
- gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_BYTES,
- asfmux->file_properties_object_position + 40, GST_CLOCK_TIME_NONE, 0);
+ gst_segment_init (&segment, GST_FORMAT_BYTES);
+ segment.start = segment.position =
+ asfmux->file_properties_object_position + 40;
+ event = gst_event_new_segment (&segment);
if (!gst_pad_push_event (asfmux->srcpad, event)) {
GST_ERROR_OBJECT (asfmux, "Failed to update file properties object");
return GST_FLOW_ERROR;
}
/* All file properties fields except the first 40 bytes */
buf = gst_buffer_new_and_alloc (ASF_FILE_PROPERTIES_OBJECT_SIZE - 40);
+ gst_buffer_map (buf, &map, GST_MAP_WRITE);
+ data = map.data;
- GST_WRITE_UINT64_LE (GST_BUFFER_DATA (buf), asfmux->file_size);
- gst_asf_put_time (GST_BUFFER_DATA (buf) + 8, gst_asf_get_current_time ());
- GST_WRITE_UINT64_LE (GST_BUFFER_DATA (buf) + 16, asfmux->total_data_packets);
- GST_WRITE_UINT64_LE (GST_BUFFER_DATA (buf) + 24, (play_duration / 100) +
+ GST_WRITE_UINT64_LE (data, asfmux->file_size);
+ gst_asf_put_time (data + 8, gst_asf_get_current_time ());
+ GST_WRITE_UINT64_LE (data + 16, asfmux->total_data_packets);
+ GST_WRITE_UINT64_LE (data + 24, (play_duration / 100) +
ASF_MILI_TO_100NANO (asfmux->preroll));
- GST_WRITE_UINT64_LE (GST_BUFFER_DATA (buf) + 32, (play_duration / 100)); /* TODO send duration */
+ GST_WRITE_UINT64_LE (data + 32, (play_duration / 100)); /* TODO send duration */
/* if play duration is smaller then preroll, player might have problems */
if (asfmux->preroll > play_duration / GST_MSECOND) {
@@ -1795,13 +1797,14 @@ gst_asf_mux_stop_file (GstAsfMux * asfmux)
("Preroll time larger than streams duration, "
"try setting a smaller preroll value next time"));
}
- GST_WRITE_UINT64_LE (GST_BUFFER_DATA (buf) + 40, asfmux->preroll);
- GST_WRITE_UINT32_LE (GST_BUFFER_DATA (buf) + 48, 0x2); /* flags - seekable */
- GST_WRITE_UINT32_LE (GST_BUFFER_DATA (buf) + 52, asfmux->packet_size);
- GST_WRITE_UINT32_LE (GST_BUFFER_DATA (buf) + 56, asfmux->packet_size);
+ GST_WRITE_UINT64_LE (data + 40, asfmux->preroll);
+ GST_WRITE_UINT32_LE (data + 48, 0x2); /* flags - seekable */
+ GST_WRITE_UINT32_LE (data + 52, asfmux->packet_size);
+ GST_WRITE_UINT32_LE (data + 56, asfmux->packet_size);
/* FIXME - we want the max instantaneous bitrate, for vbr streams, we can't
* get it this way, this would be the average, right? */
- GST_WRITE_UINT32_LE (GST_BUFFER_DATA (buf) + 60, bitrate); /* max bitrate */
+ GST_WRITE_UINT32_LE (data + 60, bitrate); /* max bitrate */
+ gst_buffer_unmap (buf, &map);
/* we don't use gst_asf_mux_push_buffer because we are overwriting
* already sent data */
@@ -1814,19 +1817,20 @@ gst_asf_mux_stop_file (GstAsfMux * asfmux)
GST_DEBUG_OBJECT (asfmux, "Seeking back to data object");
/* seek back to the data object */
- event = gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_BYTES,
- asfmux->data_object_position + 16, GST_CLOCK_TIME_NONE, 0);
-
+ segment.start = segment.position = asfmux->data_object_position + 16;
+ event = gst_event_new_segment (&segment);
if (!gst_pad_push_event (asfmux->srcpad, event)) {
GST_ERROR_OBJECT (asfmux, "Seek to update data object failed");
return GST_FLOW_ERROR;
}
buf = gst_buffer_new_and_alloc (32); /* qword+guid+qword */
- GST_WRITE_UINT64_LE (GST_BUFFER_DATA (buf), asfmux->data_object_size +
- ASF_DATA_OBJECT_SIZE);
- gst_asf_put_guid (GST_BUFFER_DATA (buf) + 8, asfmux->file_id);
- GST_WRITE_UINT64_LE (GST_BUFFER_DATA (buf) + 24, asfmux->total_data_packets);
+ gst_buffer_map (buf, &map, GST_MAP_WRITE);
+ data = map.data;
+ GST_WRITE_UINT64_LE (data, asfmux->data_object_size + ASF_DATA_OBJECT_SIZE);
+ gst_asf_put_guid (data + 8, asfmux->file_id);
+ GST_WRITE_UINT64_LE (data + 24, asfmux->total_data_packets);
+ gst_buffer_unmap (buf, &map);
return gst_pad_push (asfmux->srcpad, buf);
}
@@ -1851,7 +1855,7 @@ gst_asf_mux_process_buffer (GstAsfMux * asfmux, GstAsfPad * pad,
AsfPayload *payload;
payload = g_malloc0 (sizeof (AsfPayload));
- payload->pad = (GstCollectData2 *) pad;
+ payload->pad = (GstCollectData *) pad;
payload->data = buf;
GST_LOG_OBJECT (asfmux,
@@ -1871,7 +1875,7 @@ gst_asf_mux_process_buffer (GstAsfMux * asfmux, GstAsfPad * pad,
payload->replicated_data_length = 8;
/* replicated data - 1) media object size */
- payload->media_object_size = GST_BUFFER_SIZE (buf);
+ payload->media_object_size = gst_buffer_get_size (buf);
/* replicated data - 2) presentation time */
if (!GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (buf))) {
GST_ERROR_OBJECT (asfmux, "Received buffer without timestamp");
@@ -1896,7 +1900,7 @@ gst_asf_mux_process_buffer (GstAsfMux * asfmux, GstAsfPad * pad,
asfmux->payloads = g_slist_append (asfmux->payloads, payload);
asfmux->payload_data_size +=
- GST_BUFFER_SIZE (buf) + ASF_MULTIPLE_PAYLOAD_HEADER_SIZE;
+ gst_buffer_get_size (buf) + ASF_MULTIPLE_PAYLOAD_HEADER_SIZE;
GST_LOG_OBJECT (asfmux, "Payload data size: %" G_GUINT32_FORMAT,
asfmux->payload_data_size);
@@ -1911,7 +1915,7 @@ gst_asf_mux_process_buffer (GstAsfMux * asfmux, GstAsfPad * pad,
}
static GstFlowReturn
-gst_asf_mux_collected (GstCollectPads2 * collect, gpointer data)
+gst_asf_mux_collected (GstCollectPads * collect, gpointer data)
{
GstAsfMux *asfmux = GST_ASF_MUX_CAST (data);
GstFlowReturn ret = GST_FLOW_OK;
@@ -1931,21 +1935,21 @@ gst_asf_mux_collected (GstCollectPads2 * collect, gpointer data)
}
if (G_UNLIKELY (asfmux->state == GST_ASF_MUX_STATE_EOS))
- return GST_FLOW_UNEXPECTED;
+ return GST_FLOW_EOS;
/* select the earliest buffer */
walk = asfmux->collect->data;
while (walk) {
GstAsfPad *pad;
- GstCollectData2 *data;
+ GstCollectData *data;
GstClockTime time;
- data = (GstCollectData2 *) walk->data;
+ data = (GstCollectData *) walk->data;
pad = (GstAsfPad *) data;
walk = g_slist_next (walk);
- buf = gst_collect_pads2_peek (collect, data);
+ buf = gst_collect_pads_peek (collect, data);
if (buf == NULL) {
GST_LOG_OBJECT (asfmux, "Pad %s has no buffers",
GST_PAD_NAME (pad->collect.pad));
@@ -1980,7 +1984,7 @@ gst_asf_mux_collected (GstCollectPads2 * collect, gpointer data)
/* we have data */
GST_LOG_OBJECT (asfmux, "selected pad %s with time %" GST_TIME_FORMAT,
GST_PAD_NAME (best_pad->collect.pad), GST_TIME_ARGS (best_time));
- buf = gst_collect_pads2_pop (collect, &best_pad->collect);
+ buf = gst_collect_pads_pop (collect, &best_pad->collect);
ret = gst_asf_mux_process_buffer (asfmux, best_pad, buf);
} else {
/* no data, let's finish it up */
@@ -1999,7 +2003,7 @@ gst_asf_mux_collected (GstCollectPads2 * collect, gpointer data)
}
if (ret == GST_FLOW_OK) {
gst_pad_push_event (asfmux->srcpad, gst_event_new_eos ());
- ret = GST_FLOW_UNEXPECTED;
+ ret = GST_FLOW_EOS;
}
asfmux->state = GST_ASF_MUX_STATE_EOS;
}
@@ -2201,7 +2205,7 @@ gst_asf_mux_video_set_caps (GstPad * pad, GstCaps * caps)
videopad->vidinfo.bit_cnt = 24;
/* in case we have a fourcc, we use it */
- if (gst_structure_get_fourcc (structure, "format", &fourcc)) {
+ if (gst_structure_get_uint (structure, "format", &fourcc)) {
videopad->vidinfo.compression = fourcc;
} else {
gint version;
@@ -2233,7 +2237,7 @@ refuse_caps:
static GstPad *
gst_asf_mux_request_new_pad (GstElement * element,
- GstPadTemplate * templ, const gchar * req_name)
+ GstPadTemplate * templ, const gchar * req_name, const GstCaps * caps)
{
GstElementClass *klass = GST_ELEMENT_GET_CLASS (element);
GstAsfMux *asfmux = GST_ASF_MUX_CAST (element);
@@ -2241,7 +2245,9 @@ gst_asf_mux_request_new_pad (GstElement * element,
GstAsfPad *collect_pad;
gboolean is_audio;
guint collect_size = 0;
- gchar *name;
+ gchar *name = NULL;
+ const gchar *pad_name = NULL;
+ gint pad_id;
GST_DEBUG_OBJECT (asfmux, "Requested pad: %s", GST_STR_NULL (req_name));
@@ -2251,27 +2257,37 @@ gst_asf_mux_request_new_pad (GstElement * element,
return NULL;
}
- if (templ == gst_element_class_get_pad_template (klass, "audio_%d")) {
- name = g_strdup_printf ("audio_%02d", asfmux->stream_number + 1);
+ if (templ == gst_element_class_get_pad_template (klass, "audio_%u")) {
+ /* don't mix named and unnamed pads, if the pad already exists we fail when
+ * trying to add it */
+ if (req_name != NULL && sscanf (req_name, "audio_%u", &pad_id) == 1) {
+ pad_name = req_name;
+ } else {
+ name = g_strdup_printf ("audio_%u", asfmux->stream_number + 1);
+ pad_name = name;
+ }
GST_DEBUG_OBJECT (asfmux, "Adding new pad %s", name);
- newpad = gst_pad_new_from_template (templ, name);
- g_free (name);
+ newpad = gst_pad_new_from_template (templ, pad_name);
is_audio = TRUE;
- gst_pad_set_setcaps_function (newpad,
- GST_DEBUG_FUNCPTR (gst_asf_mux_audio_set_caps));
- } else if (templ == gst_element_class_get_pad_template (klass, "video_%d")) {
- name = g_strdup_printf ("video_%02d", asfmux->stream_number + 1);
+ } else if (templ == gst_element_class_get_pad_template (klass, "video_%u")) {
+ /* don't mix named and unnamed pads, if the pad already exists we fail when
+ * trying to add it */
+ if (req_name != NULL && sscanf (req_name, "video_%u", &pad_id) == 1) {
+ pad_name = req_name;
+ } else {
+ name = g_strdup_printf ("video_%u", asfmux->stream_number + 1);
+ pad_name = name;
+ }
GST_DEBUG_OBJECT (asfmux, "Adding new pad %s", name);
newpad = gst_pad_new_from_template (templ, name);
- g_free (name);
is_audio = FALSE;
- gst_pad_set_setcaps_function (newpad,
- GST_DEBUG_FUNCPTR (gst_asf_mux_video_set_caps));
} else {
GST_WARNING_OBJECT (asfmux, "This is not our template!");
return NULL;
}
+ g_free (name);
+
/* add pad to collections */
if (is_audio) {
collect_size = sizeof (GstAsfAudioPad);
@@ -2279,8 +2295,8 @@ gst_asf_mux_request_new_pad (GstElement * element,
collect_size = sizeof (GstAsfVideoPad);
}
collect_pad = (GstAsfPad *)
- gst_collect_pads2_add_pad_full (asfmux->collect, newpad, collect_size,
- (GstCollectData2DestroyNotify) (gst_asf_mux_pad_reset), TRUE);
+ gst_collect_pads_add_pad_full (asfmux->collect, newpad, collect_size,
+ (GstCollectDataDestroyNotify) (gst_asf_mux_pad_reset), TRUE);
/* set up pad */
collect_pad->is_audio = is_audio;
@@ -2293,14 +2309,6 @@ gst_asf_mux_request_new_pad (GstElement * element,
asfmux->stream_number += 1;
collect_pad->stream_number = asfmux->stream_number;
- /* FIXME: hacked way to override/extend the event function of
- * GstCollectPads2; because it sets its own event function giving
- * the element no access to events.
- */
- asfmux->collect_event = (GstPadEventFunction) GST_PAD_EVENTFUNC (newpad);
- gst_pad_set_event_function (newpad,
- GST_DEBUG_FUNCPTR (gst_asf_mux_sink_event));
-
gst_pad_set_active (newpad, TRUE);
gst_element_add_pad (element, newpad);
@@ -2391,12 +2399,12 @@ gst_asf_mux_change_state (GstElement * element, GstStateChange transition)
asfmux->packet_size = asfmux->prop_packet_size;
asfmux->preroll = asfmux->prop_preroll;
asfmux->merge_stream_tags = asfmux->prop_merge_stream_tags;
- gst_collect_pads2_start (asfmux->collect);
+ gst_collect_pads_start (asfmux->collect);
break;
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
break;
case GST_STATE_CHANGE_PAUSED_TO_READY:
- gst_collect_pads2_stop (asfmux->collect);
+ gst_collect_pads_stop (asfmux->collect);
asfmux->state = GST_ASF_MUX_STATE_NONE;
break;
default:
diff --git a/gst/asfmux/gstasfmux.h b/gst/asfmux/gstasfmux.h
index 49bd92d8..b0f5fabd 100644
--- a/gst/asfmux/gstasfmux.h
+++ b/gst/asfmux/gstasfmux.h
@@ -23,7 +23,7 @@
#include <gst/gst.h>
-#include <gst/base/gstcollectpads2.h>
+#include <gst/base/gstcollectpads.h>
#include <gst/riff/riff-media.h>
#include "gstasfobjects.h"
@@ -57,7 +57,7 @@ enum _GstAsfMuxState
struct _GstAsfPad
{
- GstCollectData2 collect;
+ GstCollectData collect;
gboolean is_audio;
guint8 stream_number;
@@ -143,8 +143,7 @@ struct _GstAsfMux
/* pads */
GstPad *srcpad;
- GstCollectPads2 *collect;
- GstPadEventFunction collect_event;
+ GstCollectPads *collect;
};
struct _GstAsfMuxClass
diff --git a/gst/asfmux/gstasfobjects.c b/gst/asfmux/gstasfobjects.c
index 6496062a..27ebb286 100644
--- a/gst/asfmux/gstasfobjects.c
+++ b/gst/asfmux/gstasfobjects.c
@@ -213,7 +213,7 @@ gst_asf_file_info_free (GstAsfFileInfo * info)
guint32
gst_asf_payload_get_size (AsfPayload * payload)
{
- return ASF_MULTIPLE_PAYLOAD_HEADER_SIZE + GST_BUFFER_SIZE (payload->data);
+ return ASF_MULTIPLE_PAYLOAD_HEADER_SIZE + gst_buffer_get_size (payload->data);
}
/**
@@ -338,9 +338,9 @@ gst_asf_put_payload (guint8 * buf, AsfPayload * payload)
GST_WRITE_UINT8 (buf + 6, payload->replicated_data_length);
GST_WRITE_UINT32_LE (buf + 7, payload->media_object_size);
GST_WRITE_UINT32_LE (buf + 11, payload->presentation_time);
- GST_WRITE_UINT16_LE (buf + 15, (guint16) GST_BUFFER_SIZE (payload->data));
- memcpy (buf + 17, GST_BUFFER_DATA (payload->data),
- GST_BUFFER_SIZE (payload->data));
+ GST_WRITE_UINT16_LE (buf + 15, (guint16) gst_buffer_get_size (payload->data));
+ gst_buffer_extract (payload->data, 0, buf + 17,
+ gst_buffer_get_size (payload->data));
payload->packet_count++;
}
@@ -377,18 +377,15 @@ gst_asf_put_subpayload (guint8 * buf, AsfPayload * payload, guint16 size)
GST_WRITE_UINT32_LE (buf + 7, payload->media_object_size);
GST_WRITE_UINT32_LE (buf + 11, payload->presentation_time);
size -= ASF_MULTIPLE_PAYLOAD_HEADER_SIZE;
- payload_size = size < GST_BUFFER_SIZE (payload->data) ?
- size : GST_BUFFER_SIZE (payload->data);
+ payload_size = size < gst_buffer_get_size (payload->data) ?
+ size : gst_buffer_get_size (payload->data);
GST_WRITE_UINT16_LE (buf + 15, payload_size);
- memcpy (buf + 17, GST_BUFFER_DATA (payload->data), payload_size);
+ gst_buffer_extract (payload->data, 0, buf + 17, payload_size);
/* updates the payload to the remaining data */
payload->offset_in_media_obj += payload_size;
- newbuf = gst_buffer_create_sub (payload->data, payload_size,
- GST_BUFFER_SIZE (payload->data) - payload_size);
- payload->data = gst_buffer_make_metadata_writable (payload->data);
- gst_buffer_copy_metadata (payload->data, newbuf, GST_BUFFER_COPY_FLAGS |
- GST_BUFFER_COPY_CAPS);
+ newbuf = gst_buffer_copy_region (payload->data, GST_BUFFER_COPY_ALL,
+ payload_size, gst_buffer_get_size (payload->data) - payload_size);
GST_BUFFER_TIMESTAMP (newbuf) = GST_BUFFER_TIMESTAMP (payload->data);
gst_buffer_unref (payload->data);
payload->data = newbuf;
@@ -425,6 +422,33 @@ gst_asf_match_and_peek_obj_size (const guint8 * data, const Guid * guid)
}
/**
+ * gst_asf_match_and_peek_obj_size_buf:
+ * @buf: buffer to be peeked at
+ * @guid: pointer to a guid
+ *
+ * Compares the first bytes of buf against the guid parameter and
+ * if they match gets the object size (that are right after the guid in
+ * asf objects).
+ *
+ * In case the guids don't match, 0 is returned.
+ * If the guid is NULL the match is assumed to be true.
+ *
+ * Returns: The size of the object in case the guid matches, 0 otherwise
+ */
+guint64
+gst_asf_match_and_peek_obj_size_buf (GstBuffer * buf, const Guid * guid)
+{
+ GstMapInfo map;
+ guint64 res;
+
+ gst_buffer_map (buf, &map, GST_MAP_READ);
+ res = gst_asf_match_and_peek_obj_size (map.data, guid);
+ gst_buffer_unmap (buf, &map);
+
+ return res;
+}
+
+/**
* gst_asf_parse_mult_payload:
* @reader: a #GstByteReader ready to read the multiple payload data
* @has_keyframe: pointer to return the result
@@ -539,15 +563,18 @@ gst_asf_parse_packet (GstBuffer * buffer, GstAsfPacketInfo * packet,
guint32 send_time = 0;
guint16 duration = 0;
gboolean has_keyframe;
+ GstMapInfo map;
- if (packet_size != 0 && GST_BUFFER_SIZE (buffer) != packet_size) {
+ if (packet_size != 0 && gst_buffer_get_size (buffer) != packet_size) {
GST_WARNING ("ASF packets should be aligned with buffers");
return FALSE;
}
- reader = gst_byte_reader_new_from_buffer (buffer);
+ gst_buffer_map (buffer, &map, GST_MAP_READ);
+ reader = gst_byte_reader_new (map.data, map.size);
- GST_LOG ("Starting packet parsing, size: %u", GST_BUFFER_SIZE (buffer));
+ GST_LOG ("Starting packet parsing, size: %" G_GSIZE_FORMAT,
+ gst_buffer_get_size (buffer));
if (!gst_byte_reader_get_uint8 (reader, &first))
goto error;
@@ -673,6 +700,7 @@ gst_asf_parse_packet (GstBuffer * buffer, GstAsfPacketInfo * packet,
packet->seq_field_type = seq_len_type;
packet->err_cor_len = err_length;
+ gst_buffer_unmap (buffer, &map);
gst_byte_reader_free (reader);
return ret;
@@ -680,6 +708,7 @@ error:
ret = FALSE;
GST_WARNING ("Error while parsing data packet");
end:
+ gst_buffer_unmap (buffer, &map);
gst_byte_reader_free (reader);
return ret;
}
@@ -738,16 +767,20 @@ gst_asf_parse_headers (GstBuffer * buffer, GstAsfFileInfo * file_info)
guint32 i;
GstByteReader *reader;
guint64 object_size;
+ GstMapInfo map;
+
+ gst_buffer_map (buffer, &map, GST_MAP_READ);
- object_size = gst_asf_match_and_peek_obj_size (GST_BUFFER_DATA (buffer),
+ object_size = gst_asf_match_and_peek_obj_size (map.data,
&(guids[ASF_HEADER_OBJECT_INDEX]));
if (object_size == 0) {
GST_WARNING ("ASF: Cannot parse, header guid not found at the beginning "
" of data");
+ gst_buffer_unmap (buffer, &map);
return FALSE;
}
- reader = gst_byte_reader_new_from_buffer (buffer);
+ reader = gst_byte_reader_new (map.data, map.size);
if (!gst_byte_reader_skip (reader, ASF_GUID_OBJSIZE_SIZE))
goto error;
@@ -785,6 +818,7 @@ error:
ret = FALSE;
GST_WARNING ("ASF: Error while parsing headers");
end:
+ gst_buffer_unmap (buffer, &map);
gst_byte_reader_free (reader);
return ret;
}
diff --git a/gst/asfmux/gstasfobjects.h b/gst/asfmux/gstasfobjects.h
index 00546fff..01939bec 100644
--- a/gst/asfmux/gstasfobjects.h
+++ b/gst/asfmux/gstasfobjects.h
@@ -22,7 +22,7 @@
#include <glib.h>
#include <gst/gst.h>
#include <gst/base/gstbytereader.h>
-#include <gst/base/gstcollectpads2.h>
+#include <gst/base/gstcollectpads.h>
#define ASF_PAYLOAD_IS_KEYFRAME(pay) ((pay->stream_number & 0x80) != 0)
#define ASF_MILI_TO_100NANO(v) (v * 10000)
@@ -75,7 +75,7 @@ typedef struct _AsfPayload
guint32 presentation_time;
GstBuffer *data;
- GstCollectData2 *pad;
+ GstCollectData *pad;
/* simple index info */
gboolean has_packet_info;
@@ -112,6 +112,8 @@ gboolean gst_asf_parse_packet (GstBuffer * buffer, GstAsfPacketInfo * packet,
gboolean trust_delta_flag, guint packet_size);
guint64 gst_asf_match_and_peek_obj_size (const guint8 * data,
const Guid * guid);
+guint64 gst_asf_match_and_peek_obj_size_buf (GstBuffer * buf,
+ const Guid * guid);
gboolean gst_asf_parse_headers (GstBuffer * buffer, GstAsfFileInfo * file_info);
/* ASF tags
diff --git a/gst/asfmux/gstasfparse.c b/gst/asfmux/gstasfparse.c
index 9efb3902..32265a6b 100644
--- a/gst/asfmux/gstasfparse.c
+++ b/gst/asfmux/gstasfparse.c
@@ -46,7 +46,8 @@ static GstStateChangeReturn gst_asf_parse_change_state (GstElement * element,
GstStateChange transition);
static void gst_asf_parse_loop (GstPad * pad);
-GST_BOILERPLATE (GstAsfParse, gst_asf_parse, GstElement, GST_TYPE_ELEMENT);
+#define gst_asf_parse_parent_class parent_class
+G_DEFINE_TYPE (GstAsfParse, gst_asf_parse, GST_TYPE_ELEMENT);
static void
gst_asf_parse_reset (GstAsfParse * asfparse)
@@ -61,29 +62,62 @@ gst_asf_parse_reset (GstAsfParse * asfparse)
}
static gboolean
-gst_asf_parse_sink_activate (GstPad * pad)
+gst_asf_parse_sink_activate (GstPad * sinkpad, GstObject * parent)
{
- if (gst_pad_check_pull_range (pad)) {
- return gst_pad_activate_pull (pad, TRUE);
- } else {
- return gst_pad_activate_push (pad, TRUE);
+ GstQuery *query;
+ gboolean pull_mode;
+
+ query = gst_query_new_scheduling ();
+
+ if (!gst_pad_peer_query (sinkpad, query)) {
+ gst_query_unref (query);
+ goto activate_push;
+ }
+
+ pull_mode = gst_query_has_scheduling_mode (query, GST_PAD_MODE_PULL);
+ gst_query_unref (query);
+
+ if (!pull_mode)
+ goto activate_push;
+
+ GST_DEBUG_OBJECT (sinkpad, "activating pull");
+ return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PULL, TRUE);
+
+activate_push:
+ {
+ GST_DEBUG_OBJECT (sinkpad, "activating push");
+ return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PUSH, TRUE);
}
}
static gboolean
-gst_asf_parse_sink_activate_pull (GstPad * pad, gboolean active)
+gst_asf_parse_sink_activate_mode (GstPad * pad, GstObject * parent,
+ GstPadMode mode, gboolean active)
{
- if (active) {
- return gst_pad_start_task (pad, (GstTaskFunction) gst_asf_parse_loop, pad);
- } else {
- return gst_pad_stop_task (pad);
+ gboolean res;
+
+ switch (mode) {
+ case GST_PAD_MODE_PULL:
+ if (active) {
+ res =
+ gst_pad_start_task (pad, (GstTaskFunction) gst_asf_parse_loop, pad);
+ } else {
+ res = gst_pad_stop_task (pad);
+ }
+ case GST_PAD_MODE_PUSH:
+ res = TRUE;
+ break;
+ default:
+ res = FALSE;
+ break;
}
+
+ return res;
}
static GstFlowReturn
gst_asf_parse_push (GstAsfParse * asfparse, GstBuffer * buf)
{
- gst_buffer_set_caps (buf, asfparse->outcaps);
return gst_pad_push (asfparse->srcpad, buf);
}
@@ -93,10 +127,12 @@ gst_asf_parse_parse_data_object (GstAsfParse * asfparse, GstBuffer * buffer)
GstByteReader *reader;
GstFlowReturn ret = GST_FLOW_OK;
guint64 packet_count = 0;
+ GstMapInfo map;
GST_DEBUG_OBJECT (asfparse, "Parsing data object");
- reader = gst_byte_reader_new_from_buffer (buffer);
+ gst_buffer_map (buffer, &map, GST_MAP_READ);
+ reader = gst_byte_reader_new (map.data, map.size);
/* skip to packet count */
if (!gst_byte_reader_skip (reader, 40))
goto error;
@@ -112,12 +148,14 @@ gst_asf_parse_parse_data_object (GstAsfParse * asfparse, GstBuffer * buffer)
packet_count);
}
+ gst_buffer_unmap (buffer, &map);
gst_byte_reader_free (reader);
return gst_asf_parse_push (asfparse, buffer);
error:
ret = GST_FLOW_ERROR;
GST_ERROR_OBJECT (asfparse, "Error while parsing data object headers");
+ gst_buffer_unmap (buffer, &map);
gst_byte_reader_free (reader);
return ret;
}
@@ -161,6 +199,7 @@ gst_asf_parse_pull_headers (GstAsfParse * asfparse)
GstBuffer *headers = NULL;
guint64 size;
GstFlowReturn ret;
+ GstMapInfo map;
if ((ret = gst_pad_pull_range (asfparse->sinkpad, asfparse->offset,
ASF_GUID_OBJSIZE_SIZE, &guid_and_size)) != GST_FLOW_OK) {
@@ -168,8 +207,10 @@ gst_asf_parse_pull_headers (GstAsfParse * asfparse)
goto leave;
}
asfparse->offset += ASF_GUID_OBJSIZE_SIZE;
- size = gst_asf_match_and_peek_obj_size (GST_BUFFER_DATA (guid_and_size),
+ gst_buffer_map (guid_and_size, &map, GST_MAP_READ);
+ size = gst_asf_match_and_peek_obj_size (map.data,
&(guids[ASF_HEADER_OBJECT_INDEX]));
+ gst_buffer_unmap (guid_and_size, &map);
if (size == 0) {
GST_ERROR_OBJECT (asfparse, "ASF starting identifier missing");
@@ -209,7 +250,7 @@ gst_asf_parse_pull_data_header (GstAsfParse * asfparse)
return ret;
}
asfparse->offset += ASF_DATA_OBJECT_SIZE;
- asfparse->data_size = gst_asf_match_and_peek_obj_size (GST_BUFFER_DATA (buf),
+ asfparse->data_size = gst_asf_match_and_peek_obj_size_buf (buf,
&(guids[ASF_DATA_OBJECT_INDEX]));
if (asfparse->data_size == 0) {
GST_ERROR_OBJECT (asfparse, "Unexpected object, was expecting data object");
@@ -262,8 +303,7 @@ gst_asf_parse_pull_indexes (GstAsfParse * asfparse)
if (ret != GST_FLOW_OK)
break;
/* we can peek at the object size */
- obj_size =
- gst_asf_match_and_peek_obj_size (GST_BUFFER_DATA (guid_and_size), NULL);
+ obj_size = gst_asf_match_and_peek_obj_size_buf (guid_and_size, NULL);
if (obj_size == 0) {
GST_ERROR_OBJECT (asfparse, "Incomplete object found");
gst_buffer_unref (guid_and_size);
@@ -346,9 +386,9 @@ pause:
GST_INFO_OBJECT (asfparse, "Pausing sinkpad task");
gst_pad_pause_task (pad);
- if (ret == GST_FLOW_UNEXPECTED) {
+ if (ret == GST_FLOW_EOS) {
gst_pad_push_event (asfparse->srcpad, gst_event_new_eos ());
- } else if (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_UNEXPECTED) {
+ } else if (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS) {
GST_ELEMENT_ERROR (asfparse, STREAM, FAILED,
(NULL), ("streaming task paused, reason %s (%d)", reason, ret));
gst_pad_push_event (asfparse->srcpad, gst_event_new_eos ());
@@ -357,12 +397,12 @@ pause:
}
static GstFlowReturn
-gst_asf_parse_chain (GstPad * pad, GstBuffer * buffer)
+gst_asf_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstAsfParse *asfparse;
GstFlowReturn ret = GST_FLOW_OK;
- asfparse = GST_ASF_PARSE (GST_PAD_PARENT (pad));
+ asfparse = GST_ASF_PARSE (parent);
gst_adapter_push (asfparse->adapter, buffer);
switch (asfparse->parse_state) {
@@ -372,9 +412,10 @@ gst_asf_parse_chain (GstPad * pad, GstBuffer * buffer)
/* we can peek at the object size */
asfparse->headers_size =
- gst_asf_match_and_peek_obj_size (gst_adapter_peek
+ gst_asf_match_and_peek_obj_size (gst_adapter_map
(asfparse->adapter, ASF_GUID_OBJSIZE_SIZE),
&(guids[ASF_HEADER_OBJECT_INDEX]));
+ gst_adapter_unmap (asfparse->adapter);
if (asfparse->headers_size == 0) {
/* something is wrong, this probably ain't an ASF stream */
@@ -401,9 +442,10 @@ gst_asf_parse_chain (GstPad * pad, GstBuffer * buffer)
/* we can peek at the object size */
asfparse->data_size =
- gst_asf_match_and_peek_obj_size (gst_adapter_peek
+ gst_asf_match_and_peek_obj_size (gst_adapter_map
(asfparse->adapter, ASF_GUID_OBJSIZE_SIZE),
&(guids[ASF_DATA_OBJECT_INDEX]));
+ gst_adapter_unmap (asfparse->adapter);
if (asfparse->data_size == 0) {
/* something is wrong */
@@ -447,8 +489,9 @@ gst_asf_parse_chain (GstPad * pad, GstBuffer * buffer)
if (gst_adapter_available (asfparse->adapter) >= ASF_GUID_OBJSIZE_SIZE) {
guint64 obj_size;
/* we can peek at the object size */
- obj_size = gst_asf_match_and_peek_obj_size (gst_adapter_peek
+ obj_size = gst_asf_match_and_peek_obj_size (gst_adapter_map
(asfparse->adapter, ASF_GUID_OBJSIZE_SIZE), NULL);
+ gst_adapter_unmap (asfparse->adapter);
if (gst_adapter_available (asfparse->adapter) >= obj_size) {
GST_DEBUG_OBJECT (asfparse, "Skiping object");
ret = gst_asf_parse_push (asfparse,
@@ -468,23 +511,6 @@ end:
}
static void
-gst_asf_parse_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
-
- gst_element_class_set_details_simple (element_class, "ASF parser",
- "Parser", "Parses ASF", "Thiago Santos <thiagoss@embedded.ufcg.edu.br>");
-
- GST_DEBUG_CATEGORY_INIT (asfparse_debug, "asfparse", 0,
- "Parser for ASF streams");
-}
-
-static void
gst_asf_parse_finalize (GObject * object)
{
GstAsfParse *asfparse = GST_ASF_PARSE (object);
@@ -511,17 +537,28 @@ gst_asf_parse_class_init (GstAsfParseClass * klass)
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_asf_parse_change_state);
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&sink_factory));
+
+ gst_element_class_set_details_simple (gstelement_class, "ASF parser",
+ "Parser", "Parses ASF", "Thiago Santos <thiagoss@embedded.ufcg.edu.br>");
+
+ GST_DEBUG_CATEGORY_INIT (asfparse_debug, "asfparse", 0,
+ "Parser for ASF streams");
}
static void
-gst_asf_parse_init (GstAsfParse * asfparse, GstAsfParseClass * klass)
+gst_asf_parse_init (GstAsfParse * asfparse)
{
asfparse->sinkpad = gst_pad_new_from_static_template (&sink_factory, "sink");
gst_pad_set_chain_function (asfparse->sinkpad, gst_asf_parse_chain);
gst_pad_set_activate_function (asfparse->sinkpad,
gst_asf_parse_sink_activate);
- gst_pad_set_activatepull_function (asfparse->sinkpad,
- gst_asf_parse_sink_activate_pull);
+ gst_pad_set_activatemode_function (asfparse->sinkpad,
+ gst_asf_parse_sink_activate_mode);
gst_element_add_pad (GST_ELEMENT (asfparse), asfparse->sinkpad);
asfparse->srcpad = gst_pad_new_from_static_template (&src_factory, "src");
@@ -529,7 +566,7 @@ gst_asf_parse_init (GstAsfParse * asfparse, GstAsfParseClass * klass)
gst_element_add_pad (GST_ELEMENT (asfparse), asfparse->srcpad);
asfparse->adapter = gst_adapter_new ();
- asfparse->outcaps = gst_caps_new_simple ("video/x-ms-asf", NULL);
+ asfparse->outcaps = gst_caps_new_empty_simple ("video/x-ms-asf");
asfparse->asfinfo = gst_asf_file_info_new ();
asfparse->packetinfo = g_new0 (GstAsfPacketInfo, 1);
gst_asf_parse_reset (asfparse);
diff --git a/gst/asfmux/gstrtpasfpay.c b/gst/asfmux/gstrtpasfpay.c
index 1bc4dd61..58feea62 100644
--- a/gst/asfmux/gstrtpasfpay.c
+++ b/gst/asfmux/gstrtpasfpay.c
@@ -51,15 +51,15 @@ GST_STATIC_PAD_TEMPLATE ("src",
);
static GstFlowReturn
-gst_rtp_asf_pay_handle_buffer (GstBaseRTPPayload * rtppay, GstBuffer * buffer);
+gst_rtp_asf_pay_handle_buffer (GstRTPBasePayload * rtppay, GstBuffer * buffer);
static gboolean
-gst_rtp_asf_pay_set_caps (GstBaseRTPPayload * rtppay, GstCaps * caps);
+gst_rtp_asf_pay_set_caps (GstRTPBasePayload * rtppay, GstCaps * caps);
-GST_BOILERPLATE (GstRtpAsfPay, gst_rtp_asf_pay, GstBaseRTPPayload,
- GST_TYPE_BASE_RTP_PAYLOAD);
+#define gst_rtp_asf_pay_parent_class parent_class
+G_DEFINE_TYPE (GstRtpAsfPay, gst_rtp_asf_pay, GST_TYPE_RTP_BASE_PAYLOAD);
static void
-gst_rtp_asf_pay_init (GstRtpAsfPay * rtpasfpay, GstRtpAsfPayClass * klass)
+gst_rtp_asf_pay_init (GstRtpAsfPay * rtpasfpay)
{
rtpasfpay->first_ts = 0;
rtpasfpay->config = NULL;
@@ -81,43 +81,39 @@ gst_rtp_asf_pay_finalize (GObject * object)
}
static void
-gst_rtp_asf_pay_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_rtp_asf_pay_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_rtp_asf_pay_src_template));
- gst_element_class_set_details_simple (element_class, "RTP ASF payloader",
- "Codec/Payloader/Network",
- "Payload-encodes ASF into RTP packets (MS_RTSP)",
- "Thiago Santos <thiagoss@embedded.ufcg.edu.br>");
-}
-
-static void
gst_rtp_asf_pay_class_init (GstRtpAsfPayClass * klass)
{
GObjectClass *gobject_class;
- GstBaseRTPPayloadClass *gstbasertppayload_class;
+ GstElementClass *gstelement_class;
+ GstRTPBasePayloadClass *gstbasertppayload_class;
gobject_class = (GObjectClass *) klass;
- gstbasertppayload_class = (GstBaseRTPPayloadClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
+ gstbasertppayload_class = (GstRTPBasePayloadClass *) klass;
gobject_class->finalize = gst_rtp_asf_pay_finalize;
gstbasertppayload_class->handle_buffer = gst_rtp_asf_pay_handle_buffer;
gstbasertppayload_class->set_caps = gst_rtp_asf_pay_set_caps;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_rtp_asf_pay_sink_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_rtp_asf_pay_src_template));
+ gst_element_class_set_details_simple (gstelement_class, "RTP ASF payloader",
+ "Codec/Payloader/Network",
+ "Payload-encodes ASF into RTP packets (MS_RTSP)",
+ "Thiago Santos <thiagoss@embedded.ufcg.edu.br>");
+
GST_DEBUG_CATEGORY_INIT (rtpasfpay_debug, "rtpasfpay", 0,
"ASF RTP Payloader");
}
static gboolean
-gst_rtp_asf_pay_set_caps (GstBaseRTPPayload * rtppay, GstCaps * caps)
+gst_rtp_asf_pay_set_caps (GstRTPBasePayload * rtppay, GstCaps * caps)
{
/* FIXME change application for the actual content */
- gst_basertppayload_set_options (rtppay, "application", TRUE, "X-ASF-PF",
+ gst_rtp_base_payload_set_options (rtppay, "application", TRUE, "X-ASF-PF",
1000);
return TRUE;
}
@@ -125,7 +121,7 @@ gst_rtp_asf_pay_set_caps (GstBaseRTPPayload * rtppay, GstCaps * caps)
static GstFlowReturn
gst_rtp_asf_pay_handle_packet (GstRtpAsfPay * rtpasfpay, GstBuffer * buffer)
{
- GstBaseRTPPayload *rtppay;
+ GstRTPBasePayload *rtppay;
GstAsfPacketInfo *packetinfo;
guint8 flags;
guint8 *data;
@@ -134,7 +130,7 @@ gst_rtp_asf_pay_handle_packet (GstRtpAsfPay * rtpasfpay, GstBuffer * buffer)
guint32 size_left;
GstFlowReturn ret = GST_FLOW_OK;
- rtppay = GST_BASE_RTP_PAYLOAD (rtpasfpay);
+ rtppay = GST_RTP_BASE_PAYLOAD (rtpasfpay);
packetinfo = &rtpasfpay->packetinfo;
if (!gst_asf_parse_packet (buffer, packetinfo, TRUE,
@@ -161,13 +157,13 @@ gst_rtp_asf_pay_handle_packet (GstRtpAsfPay * rtpasfpay, GstBuffer * buffer)
buffer = gst_buffer_make_writable (buffer);
switch (packetinfo->padd_field_type) {
case ASF_FIELD_TYPE_DWORD:
- GST_WRITE_UINT32_LE (&(GST_BUFFER_DATA (buffer)[offset]), 0);
+ gst_buffer_memset (buffer, offset, 0, 4);
break;
case ASF_FIELD_TYPE_WORD:
- GST_WRITE_UINT16_LE (&(GST_BUFFER_DATA (buffer)[offset]), 0);
+ gst_buffer_memset (buffer, offset, 0, 2);
break;
case ASF_FIELD_TYPE_BYTE:
- GST_BUFFER_DATA (buffer)[offset] = 0;
+ gst_buffer_memset (buffer, offset, 0, 1);
break;
case ASF_FIELD_TYPE_NONE:
default:
@@ -189,23 +185,26 @@ gst_rtp_asf_pay_handle_packet (GstRtpAsfPay * rtpasfpay, GstBuffer * buffer)
* This flag tells us to push the packet.
*/
gboolean force_push = FALSE;
+ GstRTPBuffer rtp;
/* we have no output buffer pending, create one */
if (rtpasfpay->current == NULL) {
GST_LOG_OBJECT (rtpasfpay, "Creating new output buffer");
rtpasfpay->current =
- gst_rtp_buffer_new_allocate_len (GST_BASE_RTP_PAYLOAD_MTU (rtpasfpay),
+ gst_rtp_buffer_new_allocate_len (GST_RTP_BASE_PAYLOAD_MTU (rtpasfpay),
0, 0);
- rtpasfpay->cur_off = gst_rtp_buffer_get_header_len (rtpasfpay->current);
+ rtpasfpay->cur_off = 0;
rtpasfpay->has_ts = FALSE;
rtpasfpay->marker = FALSE;
}
- data = GST_BUFFER_DATA (rtpasfpay->current) + rtpasfpay->cur_off;
- size_left = GST_BUFFER_SIZE (rtpasfpay->current) - rtpasfpay->cur_off;
+ gst_rtp_buffer_map (rtpasfpay->current, GST_MAP_READWRITE, &rtp);
+ data = gst_rtp_buffer_get_payload (&rtp);
+ data += rtpasfpay->cur_off;
+ size_left = gst_rtp_buffer_get_payload_len (&rtp) - rtpasfpay->cur_off;
GST_DEBUG_OBJECT (rtpasfpay, "Input buffer bytes consumed: %"
- G_GUINT32_FORMAT "/%" G_GUINT32_FORMAT, packet_offset,
- GST_BUFFER_SIZE (buffer));
+ G_GUINT32_FORMAT "/%" G_GSIZE_FORMAT, packet_offset,
+ gst_buffer_get_size (buffer));
GST_DEBUG_OBJECT (rtpasfpay, "Output rtpbuffer status");
GST_DEBUG_OBJECT (rtpasfpay, "Current offset: %" G_GUINT32_FORMAT,
@@ -230,8 +229,7 @@ gst_rtp_asf_pay_handle_packet (GstRtpAsfPay * rtpasfpay, GstBuffer * buffer)
rtpasfpay->ts = packetinfo->send_time;
}
- if (GST_BUFFER_SIZE (rtpasfpay->current) - rtpasfpay->cur_off >=
- packet_util_size + 8) {
+ if (size_left >= packet_util_size + 8) {
/* enough space for the rest of the packet */
if (packet_offset == 0) {
flags = flags | 0x40;
@@ -243,8 +241,7 @@ gst_rtp_asf_pay_handle_packet (GstRtpAsfPay * rtpasfpay, GstBuffer * buffer)
data[0] = flags;
GST_WRITE_UINT32_BE (data + 4,
(gint32) (packetinfo->send_time) - (gint32) rtpasfpay->ts);
- memcpy (data + 8, GST_BUFFER_DATA (buffer) + packet_offset,
- packet_util_size);
+ gst_buffer_extract (buffer, packet_offset, data + 8, packet_util_size);
/* updating status variables */
rtpasfpay->cur_off += 8 + packet_util_size;
@@ -258,8 +255,7 @@ gst_rtp_asf_pay_handle_packet (GstRtpAsfPay * rtpasfpay, GstBuffer * buffer)
GST_WRITE_UINT24_BE (data + 1, packet_offset);
GST_WRITE_UINT32_BE (data + 4,
(gint32) (packetinfo->send_time) - (gint32) rtpasfpay->ts);
- memcpy (data + 8, GST_BUFFER_DATA (buffer) + packet_offset,
- size_left - 8);
+ gst_buffer_extract (buffer, packet_offset, data + 8, size_left - 8);
/* updating status variables */
rtpasfpay->cur_off += size_left;
@@ -272,31 +268,27 @@ gst_rtp_asf_pay_handle_packet (GstRtpAsfPay * rtpasfpay, GstBuffer * buffer)
/* there is not enough room for any more buffers */
if (force_push || size_left <= 8) {
+ gst_rtp_buffer_set_ssrc (&rtp, rtppay->current_ssrc);
+ gst_rtp_buffer_set_marker (&rtp, rtpasfpay->marker);
+ gst_rtp_buffer_set_payload_type (&rtp, GST_RTP_BASE_PAYLOAD_PT (rtppay));
+ gst_rtp_buffer_set_seq (&rtp, rtppay->seqnum + 1);
+ gst_rtp_buffer_set_timestamp (&rtp, packetinfo->send_time);
+ gst_rtp_buffer_unmap (&rtp);
+
+ /* trim remaining bytes not used */
if (size_left != 0) {
- /* trim remaining bytes not used */
- GstBuffer *aux = gst_buffer_create_sub (rtpasfpay->current, 0,
- GST_BUFFER_SIZE (rtpasfpay->current) - size_left);
- gst_buffer_unref (rtpasfpay->current);
- rtpasfpay->current = aux;
+ gst_buffer_set_size (rtpasfpay->current,
+ gst_buffer_get_size (rtpasfpay->current) - size_left);
}
- gst_rtp_buffer_set_ssrc (rtpasfpay->current, rtppay->current_ssrc);
- gst_rtp_buffer_set_marker (rtpasfpay->current, rtpasfpay->marker);
- gst_rtp_buffer_set_payload_type (rtpasfpay->current,
- GST_BASE_RTP_PAYLOAD_PT (rtppay));
- gst_rtp_buffer_set_seq (rtpasfpay->current, rtppay->seqnum + 1);
- gst_rtp_buffer_set_timestamp (rtpasfpay->current, packetinfo->send_time);
GST_BUFFER_TIMESTAMP (rtpasfpay->current) = GST_BUFFER_TIMESTAMP (buffer);
- gst_buffer_set_caps (rtpasfpay->current,
- GST_PAD_CAPS (GST_BASE_RTP_PAYLOAD_SRCPAD (rtppay)));
-
rtppay->seqnum++;
rtppay->timestamp = packetinfo->send_time;
GST_DEBUG_OBJECT (rtpasfpay, "Pushing rtp buffer");
ret =
- gst_pad_push (GST_BASE_RTP_PAYLOAD_SRCPAD (rtppay),
+ gst_pad_push (GST_RTP_BASE_PAYLOAD_SRCPAD (rtppay),
rtpasfpay->current);
rtpasfpay->current = NULL;
if (ret != GST_FLOW_OK) {
@@ -313,6 +305,8 @@ static GstFlowReturn
gst_rtp_asf_pay_parse_headers (GstRtpAsfPay * rtpasfpay)
{
gchar *maxps;
+ GstMapInfo map;
+
g_return_val_if_fail (rtpasfpay->headers, GST_FLOW_ERROR);
if (!gst_asf_parse_headers (rtpasfpay->headers, &rtpasfpay->asfinfo))
@@ -327,8 +321,9 @@ gst_rtp_asf_pay_parse_headers (GstRtpAsfPay * rtpasfpay)
/* get the config for caps */
g_free (rtpasfpay->config);
- rtpasfpay->config = g_base64_encode (GST_BUFFER_DATA (rtpasfpay->headers),
- GST_BUFFER_SIZE (rtpasfpay->headers));
+ gst_buffer_map (rtpasfpay->headers, &map, GST_MAP_READ);
+ rtpasfpay->config = g_base64_encode (map.data, map.size);
+ gst_buffer_unmap (rtpasfpay->headers, &map);
GST_DEBUG_OBJECT (rtpasfpay, "Serialized headers to base64 string %s",
rtpasfpay->config);
@@ -338,7 +333,7 @@ gst_rtp_asf_pay_parse_headers (GstRtpAsfPay * rtpasfpay)
rtpasfpay->config);
maxps =
g_strdup_printf ("%" G_GUINT32_FORMAT, rtpasfpay->asfinfo.packet_size);
- gst_basertppayload_set_outcaps (GST_BASE_RTP_PAYLOAD (rtpasfpay), "maxps",
+ gst_rtp_base_payload_set_outcaps (GST_RTP_BASE_PAYLOAD (rtpasfpay), "maxps",
G_TYPE_STRING, maxps, "config", G_TYPE_STRING, rtpasfpay->config, NULL);
g_free (maxps);
@@ -353,7 +348,7 @@ error:
}
static GstFlowReturn
-gst_rtp_asf_pay_handle_buffer (GstBaseRTPPayload * rtppay, GstBuffer * buffer)
+gst_rtp_asf_pay_handle_buffer (GstRTPBasePayload * rtppay, GstBuffer * buffer)
{
GstRtpAsfPay *rtpasfpay = GST_RTP_ASF_PAY_CAST (rtppay);
@@ -361,7 +356,7 @@ gst_rtp_asf_pay_handle_buffer (GstBaseRTPPayload * rtppay, GstBuffer * buffer)
GST_LOG_OBJECT (rtpasfpay,
"Dropping buffer as we already pushed all packets");
gst_buffer_unref (buffer);
- return GST_FLOW_UNEXPECTED; /* we already finished our job */
+ return GST_FLOW_EOS; /* we already finished our job */
}
/* receive headers
@@ -369,20 +364,20 @@ gst_rtp_asf_pay_handle_buffer (GstBaseRTPPayload * rtppay, GstBuffer * buffer)
if (G_UNLIKELY (rtpasfpay->state == ASF_NOT_STARTED)) {
guint64 header_size;
- if (GST_BUFFER_SIZE (buffer) < 24) { /* guid+object size size */
+ if (gst_buffer_get_size (buffer) < 24) { /* guid+object size size */
GST_ERROR_OBJECT (rtpasfpay,
"Buffer too small, smaller than a Guid and object size");
gst_buffer_unref (buffer);
return GST_FLOW_ERROR;
}
- header_size = gst_asf_match_and_peek_obj_size (GST_BUFFER_DATA (buffer),
+ header_size = gst_asf_match_and_peek_obj_size_buf (buffer,
&(guids[ASF_HEADER_OBJECT_INDEX]));
if (header_size > 0) {
GST_DEBUG_OBJECT (rtpasfpay, "ASF header guid received, size %"
G_GUINT64_FORMAT, header_size);
- if (GST_BUFFER_SIZE (buffer) < header_size) {
+ if (gst_buffer_get_size (buffer) < header_size) {
GST_ERROR_OBJECT (rtpasfpay, "Headers should be contained in a single"
" buffer");
gst_buffer_unref (buffer);
@@ -396,14 +391,16 @@ gst_rtp_asf_pay_handle_buffer (GstBaseRTPPayload * rtppay, GstBuffer * buffer)
}
GST_DEBUG_OBJECT (rtpasfpay, "Storing headers");
- if (GST_BUFFER_SIZE (buffer) == header_size) {
+ if (gst_buffer_get_size (buffer) == header_size) {
rtpasfpay->headers = buffer;
return GST_FLOW_OK;
} else {
/* headers are a subbuffer of thie buffer */
- GstBuffer *aux = gst_buffer_create_sub (buffer, header_size,
- GST_BUFFER_SIZE (buffer) - header_size);
- rtpasfpay->headers = gst_buffer_create_sub (buffer, 0, header_size);
+ GstBuffer *aux = gst_buffer_copy_region (buffer,
+ GST_BUFFER_COPY_ALL, header_size,
+ gst_buffer_get_size (buffer) - header_size);
+ rtpasfpay->headers = gst_buffer_copy_region (buffer,
+ GST_BUFFER_COPY_ALL, 0, header_size);
gst_buffer_replace (&buffer, aux);
}
}
@@ -415,21 +412,25 @@ gst_rtp_asf_pay_handle_buffer (GstBaseRTPPayload * rtppay, GstBuffer * buffer)
}
if (G_UNLIKELY (rtpasfpay->state == ASF_DATA_OBJECT)) {
- if (GST_BUFFER_SIZE (buffer) != ASF_DATA_OBJECT_SIZE) {
+ GstMapInfo map;
+
+ if (gst_buffer_get_size (buffer) != ASF_DATA_OBJECT_SIZE) {
GST_ERROR_OBJECT (rtpasfpay, "Received buffer of different size of "
"the data object header");
gst_buffer_unref (buffer);
return GST_FLOW_ERROR;
}
- if (gst_asf_match_guid (GST_BUFFER_DATA (buffer),
- &(guids[ASF_DATA_OBJECT_INDEX]))) {
+ gst_buffer_map (buffer, &map, GST_MAP_READ);
+ if (gst_asf_match_guid (map.data, &(guids[ASF_DATA_OBJECT_INDEX]))) {
+ gst_buffer_unmap (buffer, &map);
GST_DEBUG_OBJECT (rtpasfpay, "Received data object header");
rtpasfpay->headers = gst_buffer_append (rtpasfpay->headers, buffer);
rtpasfpay->state = ASF_PACKETS;
return gst_rtp_asf_pay_parse_headers (rtpasfpay);
} else {
+ gst_buffer_unmap (buffer, &map);
GST_ERROR_OBJECT (rtpasfpay, "Unexpected object received (was expecting "
"data object)");
gst_buffer_unref (buffer);
@@ -454,7 +455,7 @@ gst_rtp_asf_pay_handle_buffer (GstBaseRTPPayload * rtppay, GstBuffer * buffer)
GST_INFO_OBJECT (rtpasfpay, "Packets ended");
rtpasfpay->state = ASF_END;
gst_buffer_unref (buffer);
- return GST_FLOW_UNEXPECTED;
+ return GST_FLOW_EOS;
}
}
diff --git a/gst/asfmux/gstrtpasfpay.h b/gst/asfmux/gstrtpasfpay.h
index 8c7505a5..8857acad 100644
--- a/gst/asfmux/gstrtpasfpay.h
+++ b/gst/asfmux/gstrtpasfpay.h
@@ -22,7 +22,7 @@
#define __GST_RTP_ASF_PAY_H__
#include <gst/gst.h>
-#include <gst/rtp/gstbasertppayload.h>
+#include <gst/rtp/gstrtpbasepayload.h>
#include <gst/rtp/gstrtpbuffer.h>
#include <gst/base/gstadapter.h>
@@ -53,7 +53,7 @@ typedef struct _GstRtpAsfPayClass GstRtpAsfPayClass;
struct _GstRtpAsfPay
{
- GstBaseRTPPayload rtppay;
+ GstRTPBasePayload rtppay;
enum GstRtpAsfPayState state;
@@ -77,7 +77,7 @@ struct _GstRtpAsfPay
struct _GstRtpAsfPayClass
{
- GstBaseRTPPayloadClass parent_class;
+ GstRTPBasePayloadClass parent_class;
};
GType gst_rtp_asf_pay_get_type (void);
diff --git a/gst/audiovisualizers/Makefile.in b/gst/audiovisualizers/Makefile.in
index 3f5cb7a0..a4ef6329 100644
--- a/gst/audiovisualizers/Makefile.in
+++ b/gst/audiovisualizers/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -469,6 +469,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -485,6 +487,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -517,10 +520,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -658,7 +660,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/autoconvert/Makefile.in b/gst/autoconvert/Makefile.in
index 185340da..e6fd12b8 100644
--- a/gst/autoconvert/Makefile.in
+++ b/gst/autoconvert/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -636,7 +638,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/bayer/Makefile.in b/gst/bayer/Makefile.in
index 2d70f28e..3d32c9fe 100644
--- a/gst/bayer/Makefile.in
+++ b/gst/bayer/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -486,6 +486,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -502,6 +504,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -534,10 +537,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -683,7 +685,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/camerabin/Makefile.am b/gst/camerabin/Makefile.am
deleted file mode 100644
index 58147bc7..00000000
--- a/gst/camerabin/Makefile.am
+++ /dev/null
@@ -1,63 +0,0 @@
-glib_gen_prefix = __gst_camerabin
-glib_gen_basename = gstcamerabin
-
-include $(top_srcdir)/common/gst-glib-gen.mak
-
-built_sources = gstcamerabin-marshal.c
-built_headers = gstcamerabin-marshal.h
-
-BUILT_SOURCES = $(built_sources) $(built_headers)
-
-CLEANFILES = $(BUILT_SOURCES)
-
-EXTRA_DIST = gstcamerabin-marshal.list
-
-plugin_LTLIBRARIES = libgstcamerabin.la
-
-libgstcamerabin_la_SOURCES = gstcamerabin.c \
- gstcamerabincolorbalance.c \
- gstinputselector.c \
- camerabinimage.c \
- camerabinvideo.c \
- camerabingeneral.c \
- camerabinpreview.c \
- gstcamerabin-enum.c
-
-nodist_libgstcamerabin_la_SOURCES = $(built_sources)
-libgstcamerabin_la_CFLAGS = \
- $(GST_PLUGINS_BAD_CFLAGS) \
- $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
- -DGST_USE_UNSTABLE_API
-libgstcamerabin_la_LIBADD = \
- $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-$(GST_API_VERSION).la \
- $(GST_LIBS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-$(GST_API_VERSION) -lgsttag-$(GST_API_VERSION)
-
-libgstcamerabin_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstcamerabin_la_LIBTOOLFLAGS = --tag=disable-static
-
-noinst_HEADERS = gstcamerabin.h \
- gstcamerabincolorbalance.h \
- gstinputselector.h \
- camerabinimage.h \
- camerabinvideo.h \
- camerabindebug.h \
- camerabingeneral.h \
- camerabinpreview.h \
- gstcamerabin-enum.h
-
-Android.mk: Makefile.am $(BUILT_SOURCES)
- androgenizer \
- -:PROJECT libgstcamerabin -:SHARED libgstcamerabin \
- -:TAGS eng debug \
- -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
- -:SOURCES $(libgstcamerabin_la_SOURCES) \
- -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstcamerabin_la_CFLAGS) \
- -:LDFLAGS $(libgstcamerabin_la_LDFLAGS) \
- $(libgstcamerabin_la_LIBADD) \
- -ldl \
- -:LIBFILTER_STATIC gstphotography-@GST_API_VERSION@ \
- gstbasecamerabinsrc-@GST_API_VERSION@ \
- -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
- LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
- > $@
diff --git a/gst/camerabin/Makefile.in b/gst/camerabin/Makefile.in
deleted file mode 100644
index 0655d84c..00000000
--- a/gst/camerabin/Makefile.in
+++ /dev/null
@@ -1,1090 +0,0 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# these are the variables your Makefile.am should set
-# the example is based on the colorbalance interface
-
-#glib_enum_headers=$(colorbalance_headers)
-#glib_enum_define=GST_COLOR_BALANCE
-#glib_gen_prefix=gst_color_balance
-#glib_gen_basename=colorbalance
-
-
-VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
- esac; \
- test $$am__dry = yes; \
- }
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(top_srcdir)/common/gst-glib-gen.mak \
- TODO
-subdir = gst/camerabin
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-libtool.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
- $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstcamerabin_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-$(GST_API_VERSION).la \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_libgstcamerabin_la_OBJECTS = libgstcamerabin_la-gstcamerabin.lo \
- libgstcamerabin_la-gstcamerabincolorbalance.lo \
- libgstcamerabin_la-gstinputselector.lo \
- libgstcamerabin_la-camerabinimage.lo \
- libgstcamerabin_la-camerabinvideo.lo \
- libgstcamerabin_la-camerabingeneral.lo \
- libgstcamerabin_la-camerabinpreview.lo \
- libgstcamerabin_la-gstcamerabin-enum.lo
-am__objects_1 = libgstcamerabin_la-gstcamerabin-marshal.lo
-nodist_libgstcamerabin_la_OBJECTS = $(am__objects_1)
-libgstcamerabin_la_OBJECTS = $(am_libgstcamerabin_la_OBJECTS) \
- $(nodist_libgstcamerabin_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libgstcamerabin_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
- $(CCLD) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) \
- $(libgstcamerabin_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libgstcamerabin_la_SOURCES) \
- $(nodist_libgstcamerabin_la_SOURCES)
-DIST_SOURCES = $(libgstcamerabin_la_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-ACMENC_CFLAGS = @ACMENC_CFLAGS@
-ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APEXSINK_CFLAGS = @APEXSINK_CFLAGS@
-APEXSINK_LIBS = @APEXSINK_LIBS@
-AR = @AR@
-AS = @AS@
-ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@
-ASSRENDER_LIBS = @ASSRENDER_LIBS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CC = @CC@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@
-CDAUDIO_LIBS = @CDAUDIO_LIBS@
-CELT_0_11_CFLAGS = @CELT_0_11_CFLAGS@
-CELT_0_11_LIBS = @CELT_0_11_LIBS@
-CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@
-CELT_0_7_LIBS = @CELT_0_7_LIBS@
-CELT_0_8_CFLAGS = @CELT_0_8_CFLAGS@
-CELT_0_8_LIBS = @CELT_0_8_LIBS@
-CELT_CFLAGS = @CELT_CFLAGS@
-CELT_LIBS = @CELT_LIBS@
-CFLAGS = @CFLAGS@
-CHROMAPRINT_CFLAGS = @CHROMAPRINT_CFLAGS@
-CHROMAPRINT_LIBS = @CHROMAPRINT_LIBS@
-COG_CFLAGS = @COG_CFLAGS@
-COG_LIBS = @COG_LIBS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CURL_CFLAGS = @CURL_CFLAGS@
-CURL_LIBS = @CURL_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DCCP_LIBS = @DCCP_LIBS@
-DECKLINK_CXXFLAGS = @DECKLINK_CXXFLAGS@
-DECKLINK_LIBS = @DECKLINK_LIBS@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRAC_CFLAGS = @DIRAC_CFLAGS@
-DIRAC_LIBS = @DIRAC_LIBS@
-DIRECT3D9_LIBS = @DIRECT3D9_LIBS@
-DIRECT3D_LIBS = @DIRECT3D_LIBS@
-DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@
-DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@
-DIRECTFB_LIBS = @DIRECTFB_LIBS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
-DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
-DIVXDEC_LIBS = @DIVXDEC_LIBS@
-DIVXENC_LIBS = @DIVXENC_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DTS_LIBS = @DTS_LIBS@
-DUMPBIN = @DUMPBIN@
-DVDNAV_CFLAGS = @DVDNAV_CFLAGS@
-DVDNAV_LIBS = @DVDNAV_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-EXEEXT = @EXEEXT@
-EXIF_CFLAGS = @EXIF_CFLAGS@
-EXIF_LIBS = @EXIF_LIBS@
-FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
-FAAD_LIBS = @FAAD_LIBS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLITE_CFLAGS = @FLITE_CFLAGS@
-FLITE_LIBS = @FLITE_LIBS@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LDFLAGS = @GIO_LDFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GME_LIBS = @GME_LIBS@
-GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@
-GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GMYTH_CFLAGS = @GMYTH_CFLAGS@
-GMYTH_LIBS = @GMYTH_LIBS@
-GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
-GSM_LIBS = @GSM_LIBS@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_AGE = @GST_AGE@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_API_VERSION = @GST_API_VERSION@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CURRENT = @GST_CURRENT@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LIBVERSION = @GST_LIBVERSION@
-GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BAD_CFLAGS = @GST_PLUGINS_BAD_CFLAGS@
-GST_PLUGINS_BAD_CXXFLAGS = @GST_PLUGINS_BAD_CXXFLAGS@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_FFMPEG_CFLAGS = @GST_PLUGINS_FFMPEG_CFLAGS@
-GST_PLUGINS_FFMPEG_DIR = @GST_PLUGINS_FFMPEG_DIR@
-GST_PLUGINS_FFMPEG_LIBS = @GST_PLUGINS_FFMPEG_LIBS@
-GST_PLUGINS_GOOD_CFLAGS = @GST_PLUGINS_GOOD_CFLAGS@
-GST_PLUGINS_GOOD_DIR = @GST_PLUGINS_GOOD_DIR@
-GST_PLUGINS_GOOD_LIBS = @GST_PLUGINS_GOOD_LIBS@
-GST_PLUGINS_NONPORTED = @GST_PLUGINS_NONPORTED@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGINS_UGLY_CFLAGS = @GST_PLUGINS_UGLY_CFLAGS@
-GST_PLUGINS_UGLY_DIR = @GST_PLUGINS_UGLY_DIR@
-GST_PLUGINS_UGLY_LIBS = @GST_PLUGINS_UGLY_LIBS@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_REVISION = @GST_REVISION@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECT3D = @HAVE_DIRECT3D@
-HAVE_DIRECT3D9 = @HAVE_DIRECT3D9@
-HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_DTS = @HAVE_DTS@
-HAVE_FAAC = @HAVE_FAAC@
-HAVE_FAAD = @HAVE_FAAD@
-HAVE_FLITE = @HAVE_FLITE@
-HAVE_GSM = @HAVE_GSM@
-HAVE_JP2K = @HAVE_JP2K@
-HAVE_NAS = @HAVE_NAS@
-HAVE_VPX = @HAVE_VPX@
-HAVE_WILDMIDI = @HAVE_WILDMIDI@
-HAVE_X = @HAVE_X@
-HAVE_X11 = @HAVE_X11@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JP2K_LIBS = @JP2K_LIBS@
-KATE_CFLAGS = @KATE_CFLAGS@
-KATE_LIBS = @KATE_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@
-LIBDC1394_LIBS = @LIBDC1394_LIBS@
-LIBDIR = @LIBDIR@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBMMS_CFLAGS = @LIBMMS_CFLAGS@
-LIBMMS_LIBS = @LIBMMS_LIBS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LRDF_CFLAGS = @LRDF_CFLAGS@
-LRDF_LIBS = @LRDF_LIBS@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MIMIC_CFLAGS = @MIMIC_CFLAGS@
-MIMIC_LIBS = @MIMIC_LIBS@
-MJPEG_CFLAGS = @MJPEG_CFLAGS@
-MJPEG_LIBS = @MJPEG_LIBS@
-MKDIR_P = @MKDIR_P@
-MODPLUG_CFLAGS = @MODPLUG_CFLAGS@
-MODPLUG_LIBS = @MODPLUG_LIBS@
-MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
-MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPLEX_CFLAGS = @MPLEX_CFLAGS@
-MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
-MPLEX_LIBS = @MPLEX_LIBS@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-MUSEPACK_LIBS = @MUSEPACK_LIBS@
-MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@
-MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@
-NAS_CFLAGS = @NAS_CFLAGS@
-NAS_LIBS = @NAS_LIBS@
-NEON_CFLAGS = @NEON_CFLAGS@
-NEON_LIBS = @NEON_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OFA_CFLAGS = @OFA_CFLAGS@
-OFA_LIBS = @OFA_LIBS@
-OPENAL_CFLAGS = @OPENAL_CFLAGS@
-OPENAL_LIBS = @OPENAL_LIBS@
-OPENCV_CFLAGS = @OPENCV_CFLAGS@
-OPENCV_LIBS = @OPENCV_LIBS@
-OPENCV_PREFIX = @OPENCV_PREFIX@
-OPUS_CFLAGS = @OPUS_CFLAGS@
-OPUS_LIBS = @OPUS_LIBS@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PVR_CFLAGS = @PVR_CFLAGS@
-PVR_LIBS = @PVR_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RSVG_CFLAGS = @RSVG_CFLAGS@
-RSVG_LIBS = @RSVG_LIBS@
-RTMP_CFLAGS = @RTMP_CFLAGS@
-RTMP_LIBS = @RTMP_LIBS@
-SCHRO_CFLAGS = @SCHRO_CFLAGS@
-SCHRO_LIBS = @SCHRO_LIBS@
-SDL_CFLAGS = @SDL_CFLAGS@
-SDL_CONFIG = @SDL_CONFIG@
-SDL_LIBS = @SDL_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
-SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
-SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
-SPANDSP_LIBS = @SPANDSP_LIBS@
-SPC_LIBS = @SPC_LIBS@
-STRIP = @STRIP@
-SWFDEC_CFLAGS = @SWFDEC_CFLAGS@
-SWFDEC_LIBS = @SWFDEC_LIBS@
-TELETEXTDEC_CFLAGS = @TELETEXTDEC_CFLAGS@
-TELETEXTDEC_LIBS = @TELETEXTDEC_LIBS@
-TIGER_CFLAGS = @TIGER_CFLAGS@
-TIGER_LIBS = @TIGER_LIBS@
-TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@
-TIMIDITY_LIBS = @TIMIDITY_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VDPAU_CFLAGS = @VDPAU_CFLAGS@
-VDPAU_LIBS = @VDPAU_LIBS@
-VERSION = @VERSION@
-VOAACENC_CFLAGS = @VOAACENC_CFLAGS@
-VOAACENC_LIBS = @VOAACENC_LIBS@
-VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
-VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
-VPX_LIBS = @VPX_LIBS@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
-WAYLAND_LIBS = @WAYLAND_LIBS@
-WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
-WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XVID_LIBS = @XVID_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZBAR_CFLAGS = @ZBAR_CFLAGS@
-ZBAR_LIBS = @ZBAR_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-glib_gen_prefix = __gst_camerabin
-glib_gen_basename = gstcamerabin
-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
-built_sources = gstcamerabin-marshal.c
-built_headers = gstcamerabin-marshal.h
-BUILT_SOURCES = $(built_sources) $(built_headers)
-CLEANFILES = $(BUILT_SOURCES)
-EXTRA_DIST = gstcamerabin-marshal.list
-plugin_LTLIBRARIES = libgstcamerabin.la
-libgstcamerabin_la_SOURCES = gstcamerabin.c \
- gstcamerabincolorbalance.c \
- gstinputselector.c \
- camerabinimage.c \
- camerabinvideo.c \
- camerabingeneral.c \
- camerabinpreview.c \
- gstcamerabin-enum.c
-
-nodist_libgstcamerabin_la_SOURCES = $(built_sources)
-libgstcamerabin_la_CFLAGS = \
- $(GST_PLUGINS_BAD_CFLAGS) \
- $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
- -DGST_USE_UNSTABLE_API
-
-libgstcamerabin_la_LIBADD = \
- $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-$(GST_API_VERSION).la \
- $(GST_LIBS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-$(GST_API_VERSION) -lgsttag-$(GST_API_VERSION)
-
-libgstcamerabin_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstcamerabin_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS = gstcamerabin.h \
- gstcamerabincolorbalance.h \
- gstinputselector.h \
- camerabinimage.h \
- camerabinvideo.h \
- camerabindebug.h \
- camerabingeneral.h \
- camerabinpreview.h \
- gstcamerabin-enum.h
-
-all: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/gst-glib-gen.mak $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/camerabin/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu gst/camerabin/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-$(top_srcdir)/common/gst-glib-gen.mak:
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
- }
-
-uninstall-pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
- done
-
-clean-pluginLTLIBRARIES:
- -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
- @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgstcamerabin.la: $(libgstcamerabin_la_OBJECTS) $(libgstcamerabin_la_DEPENDENCIES) $(EXTRA_libgstcamerabin_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libgstcamerabin_la_LINK) -rpath $(plugindir) $(libgstcamerabin_la_OBJECTS) $(libgstcamerabin_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcamerabin_la-camerabingeneral.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcamerabin_la-camerabinimage.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcamerabin_la-camerabinpreview.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcamerabin_la-camerabinvideo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcamerabin_la-gstcamerabin-enum.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcamerabin_la-gstcamerabin-marshal.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcamerabin_la-gstcamerabin.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcamerabin_la-gstcamerabincolorbalance.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcamerabin_la-gstinputselector.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstcamerabin_la-gstcamerabin.lo: gstcamerabin.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -MT libgstcamerabin_la-gstcamerabin.lo -MD -MP -MF $(DEPDIR)/libgstcamerabin_la-gstcamerabin.Tpo -c -o libgstcamerabin_la-gstcamerabin.lo `test -f 'gstcamerabin.c' || echo '$(srcdir)/'`gstcamerabin.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcamerabin_la-gstcamerabin.Tpo $(DEPDIR)/libgstcamerabin_la-gstcamerabin.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcamerabin.c' object='libgstcamerabin_la-gstcamerabin.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -c -o libgstcamerabin_la-gstcamerabin.lo `test -f 'gstcamerabin.c' || echo '$(srcdir)/'`gstcamerabin.c
-
-libgstcamerabin_la-gstcamerabincolorbalance.lo: gstcamerabincolorbalance.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -MT libgstcamerabin_la-gstcamerabincolorbalance.lo -MD -MP -MF $(DEPDIR)/libgstcamerabin_la-gstcamerabincolorbalance.Tpo -c -o libgstcamerabin_la-gstcamerabincolorbalance.lo `test -f 'gstcamerabincolorbalance.c' || echo '$(srcdir)/'`gstcamerabincolorbalance.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcamerabin_la-gstcamerabincolorbalance.Tpo $(DEPDIR)/libgstcamerabin_la-gstcamerabincolorbalance.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcamerabincolorbalance.c' object='libgstcamerabin_la-gstcamerabincolorbalance.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -c -o libgstcamerabin_la-gstcamerabincolorbalance.lo `test -f 'gstcamerabincolorbalance.c' || echo '$(srcdir)/'`gstcamerabincolorbalance.c
-
-libgstcamerabin_la-gstinputselector.lo: gstinputselector.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -MT libgstcamerabin_la-gstinputselector.lo -MD -MP -MF $(DEPDIR)/libgstcamerabin_la-gstinputselector.Tpo -c -o libgstcamerabin_la-gstinputselector.lo `test -f 'gstinputselector.c' || echo '$(srcdir)/'`gstinputselector.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcamerabin_la-gstinputselector.Tpo $(DEPDIR)/libgstcamerabin_la-gstinputselector.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstinputselector.c' object='libgstcamerabin_la-gstinputselector.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -c -o libgstcamerabin_la-gstinputselector.lo `test -f 'gstinputselector.c' || echo '$(srcdir)/'`gstinputselector.c
-
-libgstcamerabin_la-camerabinimage.lo: camerabinimage.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -MT libgstcamerabin_la-camerabinimage.lo -MD -MP -MF $(DEPDIR)/libgstcamerabin_la-camerabinimage.Tpo -c -o libgstcamerabin_la-camerabinimage.lo `test -f 'camerabinimage.c' || echo '$(srcdir)/'`camerabinimage.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcamerabin_la-camerabinimage.Tpo $(DEPDIR)/libgstcamerabin_la-camerabinimage.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='camerabinimage.c' object='libgstcamerabin_la-camerabinimage.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -c -o libgstcamerabin_la-camerabinimage.lo `test -f 'camerabinimage.c' || echo '$(srcdir)/'`camerabinimage.c
-
-libgstcamerabin_la-camerabinvideo.lo: camerabinvideo.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -MT libgstcamerabin_la-camerabinvideo.lo -MD -MP -MF $(DEPDIR)/libgstcamerabin_la-camerabinvideo.Tpo -c -o libgstcamerabin_la-camerabinvideo.lo `test -f 'camerabinvideo.c' || echo '$(srcdir)/'`camerabinvideo.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcamerabin_la-camerabinvideo.Tpo $(DEPDIR)/libgstcamerabin_la-camerabinvideo.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='camerabinvideo.c' object='libgstcamerabin_la-camerabinvideo.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -c -o libgstcamerabin_la-camerabinvideo.lo `test -f 'camerabinvideo.c' || echo '$(srcdir)/'`camerabinvideo.c
-
-libgstcamerabin_la-camerabingeneral.lo: camerabingeneral.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -MT libgstcamerabin_la-camerabingeneral.lo -MD -MP -MF $(DEPDIR)/libgstcamerabin_la-camerabingeneral.Tpo -c -o libgstcamerabin_la-camerabingeneral.lo `test -f 'camerabingeneral.c' || echo '$(srcdir)/'`camerabingeneral.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcamerabin_la-camerabingeneral.Tpo $(DEPDIR)/libgstcamerabin_la-camerabingeneral.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='camerabingeneral.c' object='libgstcamerabin_la-camerabingeneral.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -c -o libgstcamerabin_la-camerabingeneral.lo `test -f 'camerabingeneral.c' || echo '$(srcdir)/'`camerabingeneral.c
-
-libgstcamerabin_la-camerabinpreview.lo: camerabinpreview.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -MT libgstcamerabin_la-camerabinpreview.lo -MD -MP -MF $(DEPDIR)/libgstcamerabin_la-camerabinpreview.Tpo -c -o libgstcamerabin_la-camerabinpreview.lo `test -f 'camerabinpreview.c' || echo '$(srcdir)/'`camerabinpreview.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcamerabin_la-camerabinpreview.Tpo $(DEPDIR)/libgstcamerabin_la-camerabinpreview.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='camerabinpreview.c' object='libgstcamerabin_la-camerabinpreview.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -c -o libgstcamerabin_la-camerabinpreview.lo `test -f 'camerabinpreview.c' || echo '$(srcdir)/'`camerabinpreview.c
-
-libgstcamerabin_la-gstcamerabin-enum.lo: gstcamerabin-enum.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -MT libgstcamerabin_la-gstcamerabin-enum.lo -MD -MP -MF $(DEPDIR)/libgstcamerabin_la-gstcamerabin-enum.Tpo -c -o libgstcamerabin_la-gstcamerabin-enum.lo `test -f 'gstcamerabin-enum.c' || echo '$(srcdir)/'`gstcamerabin-enum.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcamerabin_la-gstcamerabin-enum.Tpo $(DEPDIR)/libgstcamerabin_la-gstcamerabin-enum.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcamerabin-enum.c' object='libgstcamerabin_la-gstcamerabin-enum.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -c -o libgstcamerabin_la-gstcamerabin-enum.lo `test -f 'gstcamerabin-enum.c' || echo '$(srcdir)/'`gstcamerabin-enum.c
-
-libgstcamerabin_la-gstcamerabin-marshal.lo: gstcamerabin-marshal.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -MT libgstcamerabin_la-gstcamerabin-marshal.lo -MD -MP -MF $(DEPDIR)/libgstcamerabin_la-gstcamerabin-marshal.Tpo -c -o libgstcamerabin_la-gstcamerabin-marshal.lo `test -f 'gstcamerabin-marshal.c' || echo '$(srcdir)/'`gstcamerabin-marshal.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcamerabin_la-gstcamerabin-marshal.Tpo $(DEPDIR)/libgstcamerabin_la-gstcamerabin-marshal.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcamerabin-marshal.c' object='libgstcamerabin_la-gstcamerabin-marshal.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcamerabin_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcamerabin_la_CFLAGS) $(CFLAGS) -c -o libgstcamerabin_la-gstcamerabin-marshal.lo `test -f 'gstcamerabin-marshal.c' || echo '$(srcdir)/'`gstcamerabin-marshal.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: all check install install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pluginLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pluginLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# these are all the rules generating the relevant files
-$(glib_gen_basename)-marshal.h: $(glib_gen_basename)-marshal.list
- $(AM_V_GEN)glib-genmarshal --header --prefix=$(glib_gen_prefix)_marshal $^ > $(glib_gen_basename)-marshal.h.tmp && \
- mv $(glib_gen_basename)-marshal.h.tmp $(glib_gen_basename)-marshal.h
-
-$(glib_gen_basename)-marshal.c: $(glib_gen_basename)-marshal.list
- $(AM_V_GEN)echo "#include \"$(glib_gen_basename)-marshal.h\"" >> $(glib_gen_basename)-marshal.c.tmp && \
- glib-genmarshal --body --prefix=$(glib_gen_prefix)_marshal $^ >> $(glib_gen_basename)-marshal.c.tmp && \
- mv $(glib_gen_basename)-marshal.c.tmp $(glib_gen_basename)-marshal.c
-
-$(glib_gen_basename)-enumtypes.h: $(glib_enum_headers)
- $(AM_V_GEN)glib-mkenums \
- --fhead "#ifndef __$(glib_enum_define)_ENUM_TYPES_H__\n#define __$(glib_enum_define)_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
- --fprod "\n/* enumerations from \"@filename@\" */\n" \
- --vhead "GType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
- --ftail "G_END_DECLS\n\n#endif /* __$(glib_enum_define)_ENUM_TYPES_H__ */" \
- $^ > $@
-
-$(glib_gen_basename)-enumtypes.c: $(glib_enum_headers)
- @if test "x$(glib_enum_headers)" = "x"; then echo "ERROR: glib_enum_headers is empty, please fix Makefile"; exit 1; fi
- $(AM_V_GEN)glib-mkenums \
- --fhead "#include \"$(glib_gen_basename)-enumtypes.h\"\n$(enum_headers)" \
- --fprod "\n/* enumerations from \"@filename@\" */" \
- --vhead "GType\n@enum_name@_get_type (void)\n{\n static volatile gsize g_define_type_id__volatile = 0;\n if (g_once_init_enter (&g_define_type_id__volatile)) {\n static const G@Type@Value values[] = {" \
- --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
- --vtail " { 0, NULL, NULL }\n };\n GType g_define_type_id = g_@type@_register_static (\"@EnumName@\", values);\n g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n }\n return g_define_type_id__volatile;\n}\n" \
- $^ > $@
-
-# a hack rule to make sure .Plo files exist because they get include'd
-# from Makefile's
-.deps/%-marshal.Plo:
- @touch $@
-
-.deps/%-enumtypes.Plo:
- @touch $@
-
-Android.mk: Makefile.am $(BUILT_SOURCES)
- androgenizer \
- -:PROJECT libgstcamerabin -:SHARED libgstcamerabin \
- -:TAGS eng debug \
- -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
- -:SOURCES $(libgstcamerabin_la_SOURCES) \
- -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstcamerabin_la_CFLAGS) \
- -:LDFLAGS $(libgstcamerabin_la_LDFLAGS) \
- $(libgstcamerabin_la_LIBADD) \
- -ldl \
- -:LIBFILTER_STATIC gstphotography-@GST_API_VERSION@ \
- gstbasecamerabinsrc-@GST_API_VERSION@ \
- -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
- LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
- > $@
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/gst/camerabin/TODO b/gst/camerabin/TODO
deleted file mode 100644
index 423c0628..00000000
--- a/gst/camerabin/TODO
+++ /dev/null
@@ -1,31 +0,0 @@
-= Cleanups =
-* often two g_object_set for same object one after the other
-* use GST_*_OBJECT () more often
-* there are two gst_element_set_state() one after each other
-
-= Renaming =
-* internal use of img->image, vid->video
-
-= Refactorisation =
-* gstcamerabin:gst_camerabin_rewrite_tags
- - sounds fishy, should use normal tagsetter method
- - gst_camerabin_rewrite_tags_to_bin(9 why don't we just send a tag-event?
-
-* file-name property
- - supplying an already opened filedeskriptor would be more safe
- - need to check what filesink does if the file exists and cannot be overwritten
-
-* imagbin
- - we want async operation here (especialy for burst mode capture)
- - right now, its a bit fragile as we muck with locked_state
- - main problem is that the location for filesink can only be set in NULL/READY
- and we need to do that sync'ed with the dataflow. we can't use multifilesink
- as it does a file per pad_push
- - one problem of the current approach is that we can't have an image in e.g,
- postprocessing while anotherone is beeing saved
- - we could use a pool of imagebins:
- - configure one (set filename)
- - push_buffer
- - on eos, put it back to the pool
- - for this we need to check that we can have multiple instances of e.g.
- dsp jpeg encoders
diff --git a/gst/camerabin/camerabindebug.h b/gst/camerabin/camerabindebug.h
deleted file mode 100644
index 9b16ac5f..00000000
--- a/gst/camerabin/camerabindebug.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2010 Nokia Corporation <multimedia@maemo.org>
- *
- * 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 __CAMERABIN_DEBUG_H_
-#define __CAMERABIN_DEBUG_H_
-
-#include <gst/gst.h>
-
-/* debug logging category */
-GST_DEBUG_CATEGORY_EXTERN (gst_camerabin_debug);
-#define GST_CAT_DEFAULT gst_camerabin_debug
-
-#endif /* #ifndef __CAMERABIN_DEBUG_H_ */
diff --git a/gst/camerabin/camerabingeneral.c b/gst/camerabin/camerabingeneral.c
deleted file mode 100644
index f47b9d23..00000000
--- a/gst/camerabin/camerabingeneral.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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.
- */
-
-/**
- * SECTION:camerabingeneral
- * @short_description: helper functions for #GstCameraBin and it's modules
- *
- * Common helper functions for #GstCameraBin, #GstCameraBinImage and
- * #GstCameraBinVideo.
- *
- */
-#include <string.h>
-#include <glib.h>
-
-#include "camerabingeneral.h"
-#include "gstinputselector.h"
-
-GST_DEBUG_CATEGORY (gst_camerabin_debug);
-
-/**
- * gst_camerabin_add_element:
- * @bin: add an element to this bin
- * @new_elem: new element to be added
- *
- * Adds given element to given @bin. Looks for an unconnected src pad
- * from the @bin and links the element to it. Raises an error if adding
- * or linking failed. Unrefs the element in the case of an error.
- *
- * Returns: %TRUE if adding and linking succeeded, %FALSE otherwise.
- */
-gboolean
-gst_camerabin_add_element (GstBin * bin, GstElement * new_elem)
-{
- gboolean ret;
-
- g_return_val_if_fail (bin, FALSE);
- g_return_val_if_fail (new_elem, FALSE);
-
- ret = gst_camerabin_try_add_element (bin, new_elem);
-
- if (!ret) {
- gchar *elem_name = gst_element_get_name (new_elem);
- GST_ELEMENT_ERROR (bin, CORE, NEGOTIATION, (NULL),
- ("linking %s failed", elem_name));
- g_free (elem_name);
- gst_object_unref (new_elem);
- }
-
- return ret;
-}
-
-/**
- * gst_camerabin_try_add_element:
- * @bin: tries adding an element to this bin
- * @new_elem: new element to be added
- *
- * Adds given element to given @bin. Looks for an unconnected src pad
- * from the @bin and links the element to it.
- *
- * Returns: %TRUE if adding and linking succeeded, %FALSE otherwise.
- */
-gboolean
-gst_camerabin_try_add_element (GstBin * bin, GstElement * new_elem)
-{
- GstPad *bin_pad;
- GstElement *bin_elem;
- gboolean ret = TRUE;
-
- g_return_val_if_fail (bin, FALSE);
- g_return_val_if_fail (new_elem, FALSE);
-
- /* Get pads for linking */
- bin_pad = gst_bin_find_unlinked_pad (bin, GST_PAD_SRC);
- /* Add to bin */
- gst_bin_add (GST_BIN (bin), new_elem);
- /* Link, if unconnected pad was found, otherwise just add it to bin */
- if (bin_pad) {
- GST_DEBUG_OBJECT (bin, "linking %s to %s:%s", GST_OBJECT_NAME (new_elem),
- GST_DEBUG_PAD_NAME (bin_pad));
- bin_elem = gst_pad_get_parent_element (bin_pad);
- gst_object_unref (bin_pad);
- if (!gst_element_link_pads_full (bin_elem, NULL, new_elem, NULL,
- GST_PAD_LINK_CHECK_CAPS)) {
- gst_object_ref (new_elem);
- gst_bin_remove (bin, new_elem);
- ret = FALSE;
- }
- gst_object_unref (bin_elem);
- } else {
- GST_INFO_OBJECT (bin, "no unlinked source pad in bin");
- }
-
- return ret;
-}
-
-/**
- * gst_camerabin_create_and_add_element:
- * @bin: tries adding an element to this bin
- * @elem_name: name of the element to be created
- * @instance_name: name of the instance of the element to be created
- *
- * Creates an element according to given name and
- * adds it to given @bin. Looks for an unconnected src pad
- * from the @bin and links the element to it.
- *
- * Returns: pointer to the new element if successful, NULL otherwise.
- */
-GstElement *
-gst_camerabin_create_and_add_element (GstBin * bin, const gchar * elem_name,
- const gchar * instance_name)
-{
- GstElement *new_elem;
-
- g_return_val_if_fail (bin, FALSE);
- g_return_val_if_fail (elem_name, FALSE);
-
- if (strcmp (elem_name, "input-selector") == 0) {
- /* we ship our own copy of input-selector because we still use the
- * "select-all" property which was removed when input-selector was
- * moved to core */
- new_elem = g_object_new (GST_TYPE_INPUT_SELECTOR, NULL);
- } else {
- new_elem = gst_element_factory_make (elem_name, NULL);
- }
-
- if (!new_elem) {
- GST_ELEMENT_ERROR (bin, CORE, MISSING_PLUGIN, (NULL),
- ("could not create \"%s\" element.", elem_name));
- } else if (!gst_camerabin_add_element (bin, new_elem)) {
- new_elem = NULL;
- }
-
- return new_elem;
-}
-
-/* try to change the state of an element. This function returns the element when
- * the state change could be performed. When this function returns NULL an error
- * occured and the element is unreffed if @unref is TRUE. */
-static GstElement *
-try_element (GstElement * bin, GstElement * element, gboolean unref)
-{
- GstStateChangeReturn ret;
-
- if (element) {
- ret = gst_element_set_state (element, GST_STATE_READY);
- if (ret == GST_STATE_CHANGE_FAILURE) {
- GST_DEBUG_OBJECT (bin, "failed state change..");
- gst_element_set_state (element, GST_STATE_NULL);
- if (unref)
- gst_object_unref (element);
- element = NULL;
- }
- }
- return element;
-}
-
-GstElement *
-gst_camerabin_setup_default_element (GstBin * bin, GstElement * user_elem,
- const gchar * auto_elem_name, const gchar * default_elem_name)
-{
- GstElement *elem;
-
- if (user_elem) {
- GST_DEBUG_OBJECT (bin, "trying configured element");
- elem = try_element (GST_ELEMENT_CAST (bin), user_elem, FALSE);
- } else {
- /* only try fallback if no specific sink was chosen */
- GST_DEBUG_OBJECT (bin, "trying %s", auto_elem_name);
- elem = gst_element_factory_make (auto_elem_name, NULL);
- elem = try_element (GST_ELEMENT_CAST (bin), elem, TRUE);
- if (elem == NULL) {
- /* if default sink from config.h is different then try it too */
- if (strcmp (default_elem_name, auto_elem_name)) {
- GST_DEBUG_OBJECT (bin, "trying %s", default_elem_name);
- elem = gst_element_factory_make (default_elem_name, NULL);
- elem = try_element (GST_ELEMENT_CAST (bin), elem, TRUE);
- }
- }
- }
- return elem;
-}
-
-/**
- * gst_camerabin_remove_elements_from_bin:
- * @bin: removes all elements from this bin
- *
- * Removes all elements from this @bin.
- */
-void
-gst_camerabin_remove_elements_from_bin (GstBin * bin)
-{
- GstIterator *iter = NULL;
- gpointer data = NULL;
- GstElement *elem = NULL;
- gboolean done = FALSE;
-
- iter = gst_bin_iterate_elements (bin);
- while (!done) {
- switch (gst_iterator_next (iter, &data)) {
- case GST_ITERATOR_OK:
- elem = GST_ELEMENT (data);
- gst_bin_remove (bin, elem);
- gst_element_set_state (GST_ELEMENT (elem), GST_STATE_NULL);
- /* Iterator increased the element refcount, so unref */
- gst_object_unref (elem);
- break;
- case GST_ITERATOR_RESYNC:
- gst_iterator_resync (iter);
- break;
- case GST_ITERATOR_ERROR:
- GST_WARNING_OBJECT (bin, "error in iterating elements");
- done = TRUE;
- break;
- case GST_ITERATOR_DONE:
- done = TRUE;
- break;
- }
- }
- gst_iterator_free (iter);
-}
-
-/**
- * gst_camerabin_drop_eos_probe:
- * @pad: pad receiving the event
- * @event: received event
- * @u_data: not used
- *
- * Event probe that drop all eos events.
- *
- * Returns: FALSE to drop the event, TRUE otherwise
- */
-gboolean
-gst_camerabin_drop_eos_probe (GstPad * pad, GstEvent * event, gpointer u_data)
-{
- gboolean ret = TRUE;
-
- switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_EOS:
- GST_DEBUG ("dropping eos in %s:%s", GST_DEBUG_PAD_NAME (pad));
- ret = FALSE;
- break;
- default:
- break;
- }
- return ret;
-}
diff --git a/gst/camerabin/camerabingeneral.h b/gst/camerabin/camerabingeneral.h
deleted file mode 100644
index 12a4d469..00000000
--- a/gst/camerabin/camerabingeneral.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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 __CAMERABIN_GENERAL_H_
-#define __CAMERABIN_GENERAL_H_
-
-#include <gst/gst.h>
-
-gboolean gst_camerabin_try_add_element (GstBin * bin, GstElement * new_elem);
-gboolean gst_camerabin_add_element (GstBin * bin, GstElement * new_elem);
-GstElement *gst_camerabin_create_and_add_element (GstBin * bin, const gchar * elem_name, const gchar * instance_name);
-
-GstElement * gst_camerabin_setup_default_element (GstBin * bin, GstElement *user_elem, const gchar *auto_elem_name, const gchar *default_elem_name);
-
-void gst_camerabin_remove_elements_from_bin (GstBin * bin);
-
-gboolean gst_camerabin_drop_eos_probe (GstPad * pad, GstEvent * event, gpointer u_data);
-
-#endif /* #ifndef __CAMERABIN_GENERAL_H_ */
diff --git a/gst/camerabin/camerabinimage.c b/gst/camerabin/camerabinimage.c
deleted file mode 100644
index ab82b407..00000000
--- a/gst/camerabin/camerabinimage.c
+++ /dev/null
@@ -1,777 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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.
- */
-
-/**
- * SECTION:camerabinimage
- * @short_description: image capturing module of #GstCameraBin
- *
- * <refsect2>
- * <para>
- *
- * The pipeline for this module is:
- *
- * <informalexample>
- * <programlisting>
- *-----------------------------------------------------------------------------
- *
- * -> [post proc] -> csp -> imageenc -> metadatamuxer -> filesink
- *
- *-----------------------------------------------------------------------------
- * </programlisting>
- * </informalexample>
- *
- * The image bin opens file for image writing in READY to PAUSED state change.
- * The image bin closes the file in PAUSED to READY state change.
- *
- * </para>
- * </refsect2>
- */
-
-/*
- * includes
- */
-
-#include <gst/gst.h>
-
-#include "camerabinimage.h"
-#include "camerabindebug.h"
-#include "camerabingeneral.h"
-#include "gstcamerabin-enum.h"
-
-#include "string.h"
-
-/* default internal element names */
-
-#define DEFAULT_SINK "filesink"
-#define DEFAULT_ENC "jpegenc"
-#define DEFAULT_FORMATTER "jifmux"
-#define DEFAULT_FLAGS GST_CAMERABIN_FLAG_IMAGE_COLOR_CONVERSION
-
-enum
-{
- PROP_0,
- PROP_FILENAME
-};
-
-static gboolean gst_camerabin_image_create_elements (GstCameraBinImage * img);
-static void gst_camerabin_image_destroy_elements (GstCameraBinImage * img);
-
-static void gst_camerabin_image_dispose (GstCameraBinImage * sink);
-static GstStateChangeReturn
-gst_camerabin_image_change_state (GstElement * element,
- GstStateChange transition);
-static gboolean gst_camerabin_image_send_event (GstElement * element,
- GstEvent * event);
-static void gst_camerabin_image_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_camerabin_image_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static gboolean metadata_write_probe (GstPad * pad, GstBuffer * buffer,
- gpointer u_data);
-static gboolean prepare_element (GList ** result,
- const gchar * default_element_name, GstElement * app_elem,
- GstElement ** res_elem);
-
-
-GST_BOILERPLATE (GstCameraBinImage, gst_camerabin_image, GstBin, GST_TYPE_BIN);
-
-static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY);
-
-static void
-gst_camerabin_image_base_init (gpointer klass)
-{
- GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (eklass,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_set_details_simple (eklass,
- "Image capture bin for camerabin", "Bin/Image",
- "Process and store image data",
- "Edgard Lima <edgard.lima@indt.org.br>, "
- "Nokia Corporation <multimedia@maemo.org>");
-}
-
-static void
-gst_camerabin_image_class_init (GstCameraBinImageClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
- gobject_class = G_OBJECT_CLASS (klass);
- gobject_class->dispose =
- (GObjectFinalizeFunc) GST_DEBUG_FUNCPTR (gst_camerabin_image_dispose);
- eklass->change_state = GST_DEBUG_FUNCPTR (gst_camerabin_image_change_state);
- eklass->send_event = GST_DEBUG_FUNCPTR (gst_camerabin_image_send_event);
-
- gobject_class->set_property =
- GST_DEBUG_FUNCPTR (gst_camerabin_image_set_property);
- gobject_class->get_property =
- GST_DEBUG_FUNCPTR (gst_camerabin_image_get_property);
-
- /**
- * GstCameraBinImage:filename
- *
- * This property can be used to specify the filename of the image.
- *
- **/
- g_object_class_install_property (gobject_class, PROP_FILENAME,
- g_param_spec_string ("filename", "Filename",
- "Filename of the image to save", NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-}
-
-static void
-gst_camerabin_image_init (GstCameraBinImage * img,
- GstCameraBinImageClass * g_class)
-{
- img->filename = g_string_new ("");
-
- img->post = NULL;
- img->csp = NULL;
- img->enc = NULL;
- img->app_enc = NULL;
- img->formatter = NULL;
- img->app_formatter = NULL;
- img->sink = NULL;
-
- /* Create src and sink ghost pads */
- img->sinkpad = gst_ghost_pad_new_no_target ("sink", GST_PAD_SINK);
- gst_element_add_pad (GST_ELEMENT (img), img->sinkpad);
-
- img->flags = DEFAULT_FLAGS;
-}
-
-static void
-gst_camerabin_image_dispose (GstCameraBinImage * img)
-{
- GST_DEBUG_OBJECT (img, "disposing");
-
- g_string_free (img->filename, TRUE);
- img->filename = NULL;
-
- if (img->elements) {
- g_list_free (img->elements);
- img->elements = NULL;
- }
-
- if (img->sink) {
- GST_LOG_OBJECT (img, "disposing %s with refcount %d",
- GST_ELEMENT_NAME (img->sink), GST_OBJECT_REFCOUNT_VALUE (img->sink));
- gst_object_unref (img->sink);
- img->sink = NULL;
- }
-
- if (img->formatter) {
- GST_LOG_OBJECT (img, "disposing %s with refcount %d",
- GST_ELEMENT_NAME (img->formatter),
- GST_OBJECT_REFCOUNT_VALUE (img->formatter));
- gst_object_unref (img->formatter);
- img->formatter = NULL;
- }
-
- if (img->app_formatter) {
- gst_object_sink (img->app_formatter);
- GST_LOG_OBJECT (img, "disposing %s with refcount %d",
- GST_ELEMENT_NAME (img->app_formatter),
- GST_OBJECT_REFCOUNT_VALUE (img->app_formatter));
- gst_object_unref (img->app_formatter);
- img->app_formatter = NULL;
- }
-
- if (img->enc) {
- GST_LOG_OBJECT (img, "disposing %s with refcount %d",
- GST_ELEMENT_NAME (img->enc), GST_OBJECT_REFCOUNT_VALUE (img->enc));
- gst_object_unref (img->enc);
- img->enc = NULL;
- }
-
- if (img->csp) {
- GST_LOG_OBJECT (img, "disposing %s with refcount %d",
- GST_ELEMENT_NAME (img->csp), GST_OBJECT_REFCOUNT_VALUE (img->csp));
- gst_object_unref (img->csp);
- img->csp = NULL;
- }
-
- /* Note: if imagebin was never set to READY state the
- ownership of elements created by application were never
- taken by bin and therefore gst_object_sink is called for
- these elements (they may still be in floating state
- and not unreffed properly without sinking first)
- FIXME, something else is wrong if you have to sink here
- */
- if (img->app_enc) {
- //gst_object_ref_sink (img->app_enc);
- GST_LOG_OBJECT (img, "disposing %s with refcount %d",
- GST_ELEMENT_NAME (img->app_enc),
- GST_OBJECT_REFCOUNT_VALUE (img->app_enc));
- gst_object_unref (img->app_enc);
- img->app_enc = NULL;
- }
-
- if (img->post) {
- //gst_object_ref_sink (img->post);
- GST_LOG_OBJECT (img, "disposing %s with refcount %d",
- GST_ELEMENT_NAME (img->post), GST_OBJECT_REFCOUNT_VALUE (img->post));
- gst_object_unref (img->post);
- img->post = NULL;
- }
-
- G_OBJECT_CLASS (parent_class)->dispose ((GObject *) img);
-}
-
-static GstStateChangeReturn
-gst_camerabin_image_change_state (GstElement * element,
- GstStateChange transition)
-{
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
- GstCameraBinImage *img = GST_CAMERABIN_IMAGE (element);
-
- GST_DEBUG_OBJECT (element, "changing state: %s -> %s",
- gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
- gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)));
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- if (!gst_camerabin_image_create_elements (img)) {
- return GST_STATE_CHANGE_FAILURE;
- }
- /* Allow setting filename when image bin in READY state */
- gst_element_set_locked_state (img->sink, TRUE);
- GST_INFO_OBJECT (img, "locking imagebin->sink state to %s",
- gst_element_state_get_name (GST_STATE (img->sink)));
- break;
- case GST_STATE_CHANGE_READY_TO_PAUSED:
- if (!g_str_equal (img->filename->str, "")) {
- GST_INFO_OBJECT (img, "preparing image with filename: %s",
- img->filename->str);
- gst_element_set_locked_state (img->sink, FALSE);
- } else {
- GST_INFO_OBJECT (img, "keep sink locked, we have no filename yet");
- }
- break;
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- /* Set sink to NULL in order to write the file _now_ */
- GST_INFO_OBJECT (img, "write image with filename: %s",
- img->filename->str);
- gst_element_set_locked_state (img->sink, TRUE);
- gst_element_set_state (img->sink, GST_STATE_NULL);
- g_string_assign (img->filename, "");
- break;
- default:
- break;
- }
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- switch (transition) {
- case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
- /* Write debug graph to file */
- GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (GST_ELEMENT_PARENT (img)),
- GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE |
- GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS, "imagebin.playing");
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- gst_camerabin_image_destroy_elements (img);
- break;
- default:
- break;
- }
-
- GST_DEBUG_OBJECT (element, "changed state: %s -> %s = %s",
- gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
- gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)),
- gst_element_state_change_return_get_name (ret));
-
- return ret;
-}
-
-gboolean
-gst_camerabin_image_send_event (GstElement * element, GstEvent * event)
-{
- GstCameraBinImage *bin = GST_CAMERABIN_IMAGE (element);
- gboolean ret = FALSE;
-
- GST_INFO ("got %s event", GST_EVENT_TYPE_NAME (event));
-
- if (GST_EVENT_IS_DOWNSTREAM (event)) {
- ret = gst_pad_send_event (bin->sinkpad, event);
- } else {
- if (bin->sink) {
- ret = gst_element_send_event (bin->sink, event);
- } else {
- GST_WARNING ("upstream event handling failed");
- }
- }
-
- return ret;
-}
-
-static void
-gst_camerabin_image_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstCameraBinImage *bin = GST_CAMERABIN_IMAGE (object);
-
- switch (prop_id) {
- case PROP_FILENAME:
- g_string_assign (bin->filename, g_value_get_string (value));
- GST_INFO_OBJECT (bin, "received filename: '%s'", bin->filename->str);
- if (bin->sink) {
- if (!g_str_equal (bin->filename->str, "")) {
- g_object_set (G_OBJECT (bin->sink), "location", bin->filename->str,
- NULL);
- gst_element_set_locked_state (bin->sink, FALSE);
- gst_element_sync_state_with_parent (bin->sink);
- } else {
- GST_INFO_OBJECT (bin, "empty filename");
- }
- } else {
- GST_INFO_OBJECT (bin, "no sink, not setting name yet");
- }
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_camerabin_image_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstCameraBinImage *bin = GST_CAMERABIN_IMAGE (object);
-
- switch (prop_id) {
- case PROP_FILENAME:
- g_value_set_string (value, bin->filename->str);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-/*
- * gst_camerabin_image_prepare_elements:
- * @imagebin: a pointer to #GstCameraBinImage object
- *
- * This function creates an ordered list of elements configured for imagebin
- * pipeline and creates the elements if necessary. It also stores pointers
- * to created elements for re-using them.
- *
- * Image bin:
- * img->sinkpad ! [ post process !] [ csp !] encoder ! metadata ! filesink
- *
- * Returns: %FALSE if there was error creating element, %TRUE otherwise
- */
-gboolean
-gst_camerabin_image_prepare_elements (GstCameraBinImage * imagebin)
-{
- gboolean ret = FALSE;
- GstPad *sinkpad = NULL;
-
- g_return_val_if_fail (imagebin != NULL, FALSE);
-
- GST_DEBUG_OBJECT (imagebin, "preparing image capture elements");
-
- if (imagebin->elements != NULL) {
- g_list_free (imagebin->elements);
- imagebin->elements = NULL;
- }
-
- /* Create file sink element */
- if (!prepare_element (&imagebin->elements, DEFAULT_SINK, NULL,
- &imagebin->sink)) {
- goto done;
- } else {
- g_object_set (G_OBJECT (imagebin->sink), "location",
- imagebin->filename->str, "async", FALSE, "buffer-mode", 2,
- /* non buffered io */ NULL);
- }
-
- /* Create metadata muxer element */
- if (!prepare_element (&imagebin->elements, DEFAULT_FORMATTER,
- imagebin->app_formatter, &imagebin->formatter)) {
- goto done;
- } else if (!imagebin->metadata_probe_id) {
- /* Add probe for default XMP metadata writing */
- sinkpad = gst_element_get_static_pad (imagebin->formatter, "sink");
- imagebin->metadata_probe_id =
- gst_pad_add_buffer_probe (sinkpad, G_CALLBACK (metadata_write_probe),
- imagebin);
- gst_object_unref (sinkpad);
- }
-
- /* Create image encoder element */
- if (!prepare_element (&imagebin->elements, DEFAULT_ENC, imagebin->app_enc,
- &imagebin->enc)) {
- goto done;
- }
-
- /* Create optional colorspace conversion element */
- if (imagebin->flags & GST_CAMERABIN_FLAG_IMAGE_COLOR_CONVERSION) {
- if (!prepare_element (&imagebin->elements, "ffmpegcolorspace", NULL,
- &imagebin->csp)) {
- goto done;
- }
- }
-
- /* Add optional image post processing element */
- if (!prepare_element (&imagebin->elements, NULL, imagebin->post,
- &imagebin->post)) {
- goto done;
- }
-
- ret = TRUE;
-
-done:
- GST_DEBUG_OBJECT (imagebin, "preparing finished %s", ret ? "OK" : "NOK");
- return ret;
-}
-
-
-/*
- * static helper functions implementation
- */
-
-/*
- * metadata_write_probe:
- * @pad: sink pad of metadata muxer
- * @buffer: received buffer
- * @u_data: image bin object
- *
- * Buffer probe that sets Xmp.dc.type and Xmp.dc.format tags
- * to metadata muxer based on preceding element src pad caps.
- *
- * Returns: TRUE always
- */
-static gboolean
-metadata_write_probe (GstPad * pad, GstBuffer * buffer, gpointer u_data)
-{
- /* Add XMP tags */
- GstCameraBinImage *img = NULL;
- GstTagSetter *setter = NULL;
- GstPad *srcpad = NULL;
- GstCaps *caps = NULL;
- GstStructure *st = NULL;
-
- img = GST_CAMERABIN_IMAGE (u_data);
-
- g_return_val_if_fail (img != NULL, TRUE);
-
- if (GST_IS_TAG_SETTER (img->formatter)) {
- setter = GST_TAG_SETTER (img->formatter);
- }
-
- if (!setter) {
- GST_WARNING_OBJECT (img, "setting tags failed");
- goto done;
- }
-
- /* Xmp.dc.type tag */
- gst_tag_setter_add_tags (setter, GST_TAG_MERGE_REPLACE,
- GST_TAG_CODEC, "Image", NULL);
- /* Xmp.dc.format tag */
- if (img->enc) {
- srcpad = gst_element_get_static_pad (img->enc, "src");
- }
- GST_LOG_OBJECT (img, "srcpad:%" GST_PTR_FORMAT, srcpad);
- if (srcpad) {
- caps = gst_pad_get_negotiated_caps (srcpad);
- GST_LOG_OBJECT (img, "caps:%" GST_PTR_FORMAT, caps);
- if (caps) {
- /* If there are many structures, we can't know which one to use */
- if (gst_caps_get_size (caps) != 1) {
- GST_WARNING_OBJECT (img, "can't decide structure for format tag");
- goto done;
- }
- st = gst_caps_get_structure (caps, 0);
- if (st) {
- GST_DEBUG_OBJECT (img, "Xmp.dc.format:%s", gst_structure_get_name (st));
- gst_tag_setter_add_tags (setter, GST_TAG_MERGE_REPLACE,
- GST_TAG_VIDEO_CODEC, gst_structure_get_name (st), NULL);
- }
- }
- }
-done:
- if (caps)
- gst_caps_unref (caps);
- if (srcpad)
- gst_object_unref (srcpad);
-
- return TRUE;
-}
-
-/*
- * prepare_element:
- * @result: result list address
- * @default_element_name: name of default element to be created
- * @app_elem: pointer to application set element
- * @res_elem: pointer to current element to be replaced if needed
- *
- * This function chooses given image capture element or creates a new one and
- * and prepends it to @result list.
- *
- * Returns: %FALSE if there was error creating new element, %TRUE otherwise
- */
-static gboolean
-prepare_element (GList ** result, const gchar * default_element_name,
- GstElement * app_elem, GstElement ** res_elem)
-{
- GstElement *elem = NULL;
- gboolean ret = TRUE;
-
- if (app_elem) {
- /* Prefer application set element */
- elem = app_elem;
- } else if (*res_elem) {
- /* Use existing element if any */
- elem = *res_elem;
- } else if (default_element_name) {
- /* Create new element */
- if (!(elem = gst_element_factory_make (default_element_name, NULL))) {
- GST_WARNING ("creating %s failed", default_element_name);
- ret = FALSE;
- }
- }
-
- if (*res_elem != elem) {
- /* Keep reference and store pointer to chosen element, which can be re-used
- until imagebin is disposed or new image capture element is chosen. */
- gst_object_replace ((GstObject **) res_elem, (GstObject *) elem);
- }
- if (elem) {
- *result = g_list_prepend (*result, elem);
- }
-
- return ret;
-}
-
-/*
- * gst_camerabin_image_link_first_element:
- * @img: a pointer to #GstCameraBinImage object
- * @elem: first element to be linked on imagebin
- *
- * Adds given element to imagebin and links it to imagebin's ghost sink pad.
- *
- * Returns: %TRUE if adding and linking succeeded, %FALSE otherwise
- */
-static gboolean
-gst_camerabin_image_link_first_element (GstCameraBinImage * imagebin,
- GstElement * elem)
-{
- GstPad *first_sinkpad = NULL;
- gboolean ret = FALSE;
-
- g_return_val_if_fail (imagebin != NULL, FALSE);
- /* Link given element to imagebin ghost sink pad */
- if (gst_bin_add (GST_BIN (imagebin), elem)) {
- first_sinkpad = gst_element_get_static_pad (elem, "sink");
- if (first_sinkpad) {
- if (gst_ghost_pad_set_target (GST_GHOST_PAD (imagebin->sinkpad),
- first_sinkpad)) {
- ret = TRUE;
- } else {
- GST_WARNING ("linking first element failed");
- }
- gst_object_unref (first_sinkpad);
- } else {
- GST_WARNING ("no sink pad in first element");
- }
- } else {
- GST_WARNING ("adding element failed");
- }
- return ret;
-}
-
-/*
- * gst_camerabin_image_link_elements:
- * @imagebin: a pointer to #GstCameraBinImage object
- *
- * Link elements configured to imagebin elements list.
- *
- * Returns %TRUE if linking succeeded, %FALSE otherwise.
- */
-static gboolean
-gst_camerabin_image_link_elements (GstCameraBinImage * imagebin)
-{
- GList *prev = NULL;
- GList *next = NULL;
- gboolean ret = FALSE;
-
- GST_DEBUG_OBJECT (imagebin, "linking image elements");
-
- if (!imagebin->elements) {
- GST_WARNING ("no elements to link");
- goto done;
- }
-
- /* Link the elements in list */
- prev = imagebin->elements;
- next = g_list_next (imagebin->elements);
- for (; next != NULL; next = g_list_next (next)) {
- /* Link first element in list to imagebin ghost sink pad */
- if (prev == imagebin->elements
- && !gst_camerabin_image_link_first_element (imagebin,
- GST_ELEMENT (prev->data))) {
- goto done;
- }
- if (!gst_bin_add (GST_BIN (imagebin), GST_ELEMENT (next->data))) {
- GST_WARNING_OBJECT (imagebin, "adding element failed");
- goto done;
- }
- GST_LOG_OBJECT (imagebin, "linking %s - %s",
- GST_ELEMENT_NAME (GST_ELEMENT (prev->data)),
- GST_ELEMENT_NAME (GST_ELEMENT (next->data)));
- if (!gst_element_link (GST_ELEMENT (prev->data), GST_ELEMENT (next->data))) {
- GST_WARNING_OBJECT (imagebin, "linking element failed");
- goto done;
- }
-
- prev = next;
- }
-
- ret = TRUE;
-
-done:
-
- if (!ret) {
- gst_camerabin_remove_elements_from_bin (GST_BIN (imagebin));
- }
-
- GST_DEBUG_OBJECT (imagebin, "linking finished %s", ret ? "OK" : "NOK");
-
- return ret;
-}
-
-/*
- * gst_camerabin_image_create_elements:
- * @img: a pointer to #GstCameraBinImage object
- *
- * This function creates needed elements, adds them to
- * imagebin and links them.
- *
- * Returns %TRUE if success, %FALSE otherwise.
- */
-static gboolean
-gst_camerabin_image_create_elements (GstCameraBinImage * img)
-{
- gboolean ret = FALSE;
- g_return_val_if_fail (img != NULL, FALSE);
-
- if (gst_camerabin_image_prepare_elements (img)) {
- ret = gst_camerabin_image_link_elements (img);
- }
-
- return ret;
-}
-
-/*
- * gst_camerabin_image_destroy_elements:
- * @img: a pointer to #GstCameraBinImage object
- *
- * This function releases resources allocated in
- * gst_camerabin_image_create_elements.
- *
- */
-static void
-gst_camerabin_image_destroy_elements (GstCameraBinImage * img)
-{
- GST_LOG ("destroying image elements");
-
- gst_ghost_pad_set_target (GST_GHOST_PAD (img->sinkpad), NULL);
-
- gst_camerabin_remove_elements_from_bin (GST_BIN (img));
-}
-
-void
-gst_camerabin_image_set_encoder (GstCameraBinImage * img, GstElement * encoder)
-{
- GST_DEBUG ("setting image encoder %" GST_PTR_FORMAT, encoder);
- if (img->app_enc)
- gst_object_unref (img->app_enc);
- if (encoder)
- gst_object_ref (encoder);
-
- img->app_enc = encoder;
-}
-
-void
-gst_camerabin_image_set_postproc (GstCameraBinImage * img,
- GstElement * postproc)
-{
- GST_DEBUG ("setting image postprocessing element %" GST_PTR_FORMAT, postproc);
- if (img->post)
- gst_object_unref (img->post);
- if (postproc)
- gst_object_ref (postproc);
-
- img->post = postproc;
-}
-
-void
-gst_camerabin_image_set_formatter (GstCameraBinImage * img,
- GstElement * formatter)
-{
- GstElement **app_formatter;
- GST_DEBUG ("setting image formatter %" GST_PTR_FORMAT, formatter);
-
- app_formatter = &img->app_formatter;
- GST_OBJECT_LOCK (img);
- gst_object_replace ((GstObject **) app_formatter, GST_OBJECT (formatter));
- GST_OBJECT_UNLOCK (img);
-}
-
-void
-gst_camerabin_image_set_flags (GstCameraBinImage * img, GstCameraBinFlags flags)
-{
- GST_DEBUG_OBJECT (img, "setting image flags: %d", flags);
- img->flags = flags;
-}
-
-GstElement *
-gst_camerabin_image_get_encoder (GstCameraBinImage * img)
-{
- GstElement *enc;
-
- if (img->app_enc) {
- enc = img->app_enc;
- } else {
- enc = img->enc;
- }
-
- return enc;
-}
-
-GstElement *
-gst_camerabin_image_get_formatter (GstCameraBinImage * img)
-{
- /* Prefer formatter that is currently in use */
- return img->formatter ? img->formatter : img->app_formatter;
-}
-
-GstElement *
-gst_camerabin_image_get_postproc (GstCameraBinImage * img)
-{
- return img->post;
-}
diff --git a/gst/camerabin/camerabinimage.h b/gst/camerabin/camerabinimage.h
deleted file mode 100644
index 754c4bba..00000000
--- a/gst/camerabin/camerabinimage.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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 __CAMERABIN_IMAGE_H__
-#define __CAMERABIN_IMAGE_H__
-
-#include <gst/gstbin.h>
-
-#include "gstcamerabin-enum.h"
-
-G_BEGIN_DECLS
-#define GST_TYPE_CAMERABIN_IMAGE (gst_camerabin_image_get_type())
-#define GST_CAMERABIN_IMAGE_CAST(obj) ((GstCameraBinImage*)(obj))
-#define GST_CAMERABIN_IMAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_CAMERABIN_IMAGE,GstCameraBinImage))
-#define GST_CAMERABIN_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_CAMERABIN_IMAGE,GstCameraBinImageClass))
-#define GST_IS_CAMERABIN_IMAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_CAMERABIN_IMAGE))
-#define GST_IS_CAMERABIN_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CAMERABIN_IMAGE))
-/**
- * GstCameraBinImage:
- *
- * The opaque #GstCameraBinImage structure.
- */
-typedef struct _GstCameraBinImage GstCameraBinImage;
-typedef struct _GstCameraBinImageClass GstCameraBinImageClass;
-
-struct _GstCameraBinImage
-{
- GstBin parent;
- GString *filename;
-
- /* Ghost pads of image bin */
- GstPad *sinkpad;
-
- /* Ordered list of elements configured to imagebin */
- GList *elements;
- /* Imagebin elements */
- GstElement *post;
- GstElement *csp;
- GstElement *enc;
- GstElement *app_enc;
- GstElement *formatter;
- GstElement *app_formatter;
- GstElement *sink;
-
- GstCameraBinFlags flags;
- gulong metadata_probe_id;
-};
-
-struct _GstCameraBinImageClass
-{
- GstBinClass parent_class;
-};
-
-GType gst_camerabin_image_get_type (void);
-
-void
-gst_camerabin_image_set_encoder (GstCameraBinImage * img, GstElement * encoder);
-
-void
-gst_camerabin_image_set_postproc (GstCameraBinImage * img,
- GstElement * postproc);
-
-void
-gst_camerabin_image_set_formatter (GstCameraBinImage * img, GstElement * formatter);
-
-void
-gst_camerabin_image_set_flags (GstCameraBinImage * img,
- GstCameraBinFlags flags);
-
-GstElement *gst_camerabin_image_get_encoder (GstCameraBinImage * img);
-
-GstElement *gst_camerabin_image_get_postproc (GstCameraBinImage * img);
-
-GstElement *gst_camerabin_image_get_formatter (GstCameraBinImage * img);
-
-gboolean gst_camerabin_image_prepare_elements (GstCameraBinImage * imagebin);
-
-G_END_DECLS
-#endif /* #ifndef __CAMERABIN_IMAGE_H__ */
diff --git a/gst/camerabin/camerabinpreview.c b/gst/camerabin/camerabinpreview.c
deleted file mode 100644
index e7e5fe4a..00000000
--- a/gst/camerabin/camerabinpreview.c
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
-* GStreamer
-* Copyright (C) 2009 Nokia Corporation <multimedia@maemo.org>
-*
-* 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 <gst/gst.h>
-#include <string.h>
-
-#include "camerabindebug.h"
-#include "camerabingeneral.h"
-#include "camerabinpreview.h"
-
-static void
-save_result (GstElement * sink, GstBuffer * buf, GstPad * pad, gpointer data)
-{
- GstBuffer **p_buf = (GstBuffer **) data;
-
- *p_buf = gst_buffer_ref (buf);
-
- GST_DEBUG ("received converted buffer %p with caps %" GST_PTR_FORMAT,
- *p_buf, GST_BUFFER_CAPS (*p_buf));
-}
-
-static gboolean
-create_element (const gchar * factory_name, const gchar * elem_name,
- GstElement ** element, GError ** err)
-{
- *element = gst_element_factory_make (factory_name, elem_name);
- if (*element)
- return TRUE;
-
- if (err && *err == NULL) {
- *err = g_error_new (GST_CORE_ERROR, GST_CORE_ERROR_MISSING_PLUGIN,
- "cannot create element '%s' - please check your GStreamer installation",
- factory_name);
- }
-
- return FALSE;
-}
-
-
-/**
- * gst_camerabin_preview_create_pipeline:
- * @element: #GstCameraBin element
- * @caps: pointer to the caps used in pipeline
- * @src_filter: source filter element
- *
- * Create a preview converter pipeline that outputs the format defined in
- * @caps parameter.
- *
- * Returns: New pipeline data structure, or NULL if error occured.
- */
-GstCameraBinPreviewPipelineData *
-gst_camerabin_preview_create_pipeline (GstElement * element, GstCaps * caps,
- GstElement * src_filter)
-{
- GstElement *csp = NULL, *vscale = NULL;
- GError *error = NULL;
- GstCameraBinPreviewPipelineData *data;
-
- g_return_val_if_fail (caps != NULL, NULL);
-
- GST_DEBUG ("creating elements");
-
- data = g_new (GstCameraBinPreviewPipelineData, 1);
-
- /* We have multiple pipelines created by using this function, so we can't
- * give a name to them. Another way would to ensure the uniqueness of the
- * name here*/
- data->pipeline = gst_pipeline_new (NULL);
- if (!data->pipeline)
- goto create_error;
-
- if (!create_element ("appsrc", "prev_src", &data->appsrc, &error) ||
- !create_element ("videoscale", NULL, &vscale, &error) ||
- !create_element ("ffmpegcolorspace", NULL, &csp, &error) ||
- !create_element ("capsfilter", NULL, &data->capsfilter, &error) ||
- !create_element ("fakesink", "prev_sink", &data->appsink, &error))
- goto create_error;
-
- GST_DEBUG ("adding elements");
- gst_bin_add_many (GST_BIN (data->pipeline), data->appsrc, csp,
- data->capsfilter, vscale, data->appsink, NULL);
- if (src_filter) {
- gst_bin_add (GST_BIN (data->pipeline), src_filter);
- }
-
- data->element = element;
-
- GST_DEBUG ("preview format is: %" GST_PTR_FORMAT, caps);
-
- g_object_set (data->capsfilter, "caps", caps, NULL);
- g_object_set (data->appsink, "preroll-queue-len", 1, "signal-handoffs", TRUE,
- NULL);
- g_object_set (vscale, "method", 0, NULL);
-
- GST_DEBUG ("linking src->vscale");
- if (!gst_element_link_pads (data->appsrc, "src", vscale, "sink"))
- goto link_error;
-
- if (src_filter) {
- GST_DEBUG ("linking vscale->src_filter");
- if (!gst_element_link_pads (vscale, "src", src_filter, "sink")) {
- goto link_error;
- }
- GST_DEBUG ("linking filter->csp");
- if (!gst_element_link_pads (src_filter, "src", csp, "sink")) {
- goto link_error;
- }
- } else {
- GST_DEBUG ("linking vscale->csp");
- if (!gst_element_link_pads (vscale, "src", csp, "sink"))
- goto link_error;
- }
-
- GST_DEBUG ("linking csp->capsfilter");
- if (!gst_element_link_pads (csp, "src", data->capsfilter, "sink"))
- goto link_error;
-
- GST_DEBUG ("linking capsfilter->sink");
- if (!gst_element_link_pads (data->capsfilter, "src", data->appsink, "sink"))
- goto link_error;
-
- return data;
-
-create_error:
- if (error) {
- GST_WARNING ("Preview pipeline element creation failed: %s",
- error->message);
- g_error_free (error);
- }
- if (csp)
- gst_object_unref (csp);
- if (vscale)
- gst_object_unref (vscale);
- if (data->appsrc)
- gst_object_unref (data->appsrc);
- if (data->capsfilter)
- gst_object_unref (data->capsfilter);
- if (data->appsink)
- gst_object_unref (data->appsink);
-
-link_error:
- GST_WARNING ("Could not create preview pipeline");
- gst_camerabin_preview_destroy_pipeline (data);
-
- return NULL;
-}
-
-
-/**
- * gst_camerabin_preview_destroy_pipeline:
- * @data: the pipeline data to be destroyed
- *
- * Destroy preview converter pipeline.
- */
-void
-gst_camerabin_preview_destroy_pipeline (GstCameraBinPreviewPipelineData * data)
-{
- if (data->pipeline) {
- gst_element_set_state (data->pipeline, GST_STATE_NULL);
- gst_object_unref (data->pipeline);
- }
- g_free (data);
-}
-
-
-/**
- * gst_camerabin_preview_convert:
- * @data: preview pipeline data to use
- * @buf: #GstBuffer that contains the frame to be converted
- *
- * Create a preview image of the given frame.
- *
- * Returns: converted preview image, or NULL if operation failed.
- */
-GstBuffer *
-gst_camerabin_preview_convert (GstCameraBinPreviewPipelineData * data,
- GstBuffer * buf)
-{
- GstMessage *msg;
- GstBuffer *result = NULL;
- GError *error = NULL;
- GstBus *bus;
- GstElement *src, *sink;
- GstBufferFlag bflags;
- GstFlowReturn fret;
-
- g_return_val_if_fail (GST_BUFFER_CAPS (buf) != NULL, NULL);
- g_return_val_if_fail (data != NULL, NULL);
-
- if (data->pipeline == NULL) {
- GST_WARNING ("pipeline is NULL");
- goto no_pipeline;
- }
-
- src = gst_bin_get_by_name (GST_BIN (data->pipeline), "prev_src");
- sink = gst_bin_get_by_name (GST_BIN (data->pipeline), "prev_sink");
-
- if (!src || !sink) {
- GST_WARNING ("pipeline doesn't have src / sink elements");
- goto missing_elements;
- }
-
- g_object_set (src, "size", (gint64) GST_BUFFER_SIZE (buf),
- "blocksize", (guint32) GST_BUFFER_SIZE (buf),
- "caps", GST_BUFFER_CAPS (buf), "num-buffers", 1, NULL);
-
- g_signal_connect (sink, "handoff", G_CALLBACK (save_result), &result);
-
- bflags = GST_BUFFER_FLAGS (buf);
- GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_READONLY);
-
- GST_DEBUG ("running conversion pipeline, source is: %" GST_PTR_FORMAT,
- GST_BUFFER_CAPS (buf));
- gst_element_set_state (data->pipeline, GST_STATE_PLAYING);
-
- g_signal_emit_by_name (src, "push-buffer", buf, &fret);
-
- bus = gst_element_get_bus (data->pipeline);
- msg = gst_bus_timed_pop_filtered (bus, (25 * GST_SECOND),
- GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
- gst_object_unref (bus);
-
- if (msg) {
- switch (GST_MESSAGE_TYPE (msg)) {
- case GST_MESSAGE_EOS:{
- if (result) {
- GST_DEBUG ("preview image successful: result = %p", result);
- } else {
- GST_WARNING ("EOS but no result frame?!");
- }
- break;
- }
- case GST_MESSAGE_ERROR:{
- gchar *dbg = NULL;
-
- gst_message_parse_error (msg, &error, &dbg);
- if (error) {
- g_warning ("Could not make preview image: %s", error->message);
- GST_DEBUG ("%s [debug: %s]", error->message, GST_STR_NULL (dbg));
- g_error_free (error);
- } else {
- g_warning ("Could not make preview image (and NULL error!)");
- }
- g_free (dbg);
- result = NULL;
- break;
- }
- default:{
- g_return_val_if_reached (NULL);
- }
- }
- gst_message_unref (msg);
- } else {
- g_warning ("Could not make preview image: %s", "timeout during conversion");
- result = NULL;
- }
-
- g_signal_handlers_disconnect_by_func (sink, G_CALLBACK (save_result),
- &result);
- gst_element_set_state (data->pipeline, GST_STATE_READY);
-
- GST_BUFFER_FLAGS (buf) = bflags;
-
-done:
- if (src)
- gst_object_unref (src);
- if (sink)
- gst_object_unref (sink);
-
- return result;
-
- /* ERRORS */
-missing_elements:
- {
- g_warning ("Could not make preview image: %s",
- "missing elements in pipeline (unknown error)");
- goto done;
- }
-no_pipeline:
- {
- g_warning ("Could not make preview image: %s",
- "no pipeline (unknown error)");
- return NULL;
- }
-}
-
-/**
- * gst_camerabin_preview_send_event:
- * @data: preview pipeline data to use
- * @evt: The #GstEvent to be pushed, takes ownership
- *
- * Pushes an event to the preview pipeline.
- *
- * Returns: True if the event was handled
- */
-gboolean
-gst_camerabin_preview_send_event (GstCameraBinPreviewPipelineData * data,
- GstEvent * evt)
-{
- GstElement *src;
-
- src = gst_bin_get_by_name (GST_BIN (data->pipeline), "prev_src");
- if (!src) {
- GST_WARNING ("Preview pipeline doesn't have src element, can't push event");
- gst_event_unref (evt);
- return FALSE;
- }
-
- GST_DEBUG_OBJECT (data->element, "Pushing event %p to preview pipeline", evt);
-
- return gst_element_send_event (src, evt);
-}
-
-/**
- * gst_camerabin_preview_set_caps:
- * @data: preview pipeline data to use
- * @caps: New #GstCaps to be set for the pipeline
- *
- * Sets new caps for the preview pipeline
- */
-void
-gst_camerabin_preview_set_caps (GstCameraBinPreviewPipelineData * data,
- GstCaps * caps)
-{
- GstState state, pending;
- GstStateChangeReturn ret;
-
- g_return_if_fail (data->pipeline != NULL);
- g_return_if_fail (caps != NULL);
-
- ret = gst_element_get_state (data->pipeline, &state, &pending, 0);
- if (ret == GST_STATE_CHANGE_FAILURE) {
- /* make it try again */
- state = GST_STATE_PLAYING;
- pending = GST_STATE_VOID_PENDING;
- }
-
- gst_element_set_state (data->pipeline, GST_STATE_NULL);
- g_object_set (data->capsfilter, "caps", caps, NULL);
- if (pending != GST_STATE_VOID_PENDING)
- state = pending;
- gst_element_set_state (data->pipeline, state);
-}
diff --git a/gst/camerabin/camerabinpreview.h b/gst/camerabin/camerabinpreview.h
deleted file mode 100644
index 3da9a05b..00000000
--- a/gst/camerabin/camerabinpreview.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-* GStreamer
-* Copyright (C) 2009 Nokia Corporation <multimedia@maemo.org>
-*
-* 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 __CAMERABINPREVIEW_H__
-#define __CAMERABINPREVIEW_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-typedef struct
-{
- GstElement *pipeline;
-
- GstElement *appsrc;
- GstElement *capsfilter;
- GstElement *appsink;
-
- GstElement *element;
-} GstCameraBinPreviewPipelineData;
-
-
-GstCameraBinPreviewPipelineData * gst_camerabin_preview_create_pipeline (
- GstElement *element, GstCaps *caps, GstElement *src_filter);
-
-void gst_camerabin_preview_destroy_pipeline (
- GstCameraBinPreviewPipelineData *data);
-
-GstBuffer *gst_camerabin_preview_convert (
- GstCameraBinPreviewPipelineData *data, GstBuffer *buf);
-
-gboolean gst_camerabin_preview_send_event (
- GstCameraBinPreviewPipelineData *pipeline, GstEvent *event);
-
-void gst_camerabin_preview_set_caps (
- GstCameraBinPreviewPipelineData *pipeline, GstCaps *caps);
-
-G_END_DECLS
-
-#endif /* __CAMERABINPREVIEW_H__ */
diff --git a/gst/camerabin/camerabinvideo.c b/gst/camerabin/camerabinvideo.c
deleted file mode 100644
index 0a81e0cc..00000000
--- a/gst/camerabin/camerabinvideo.c
+++ /dev/null
@@ -1,846 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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.
- */
-
-/**
- * SECTION:camerabinvideo
- * @short_description: video recording module of #GstCameraBin
- *
- * <refsect2>
- * <para>
- *
- * The pipeline for this module is:
- *
- * <informalexample>
- * <programlisting>
- *-----------------------------------------------------------------------------
- * audiosrc -> audio_queue -> audioconvert -> volume -> audioenc
- * > videomux -> filesink
- * video_queue -> [timeoverlay] -> [csp] -> videoenc -> queue
- * -> [post proc] -> tee <
- * queue ->
- *-----------------------------------------------------------------------------
- * </programlisting>
- * </informalexample>
- *
- * The properties of elements are:
- *
- * queue - "leaky", 2 (Leaky on downstream (old buffers))
- *
- * </para>
- * </refsect2>
- */
-
-/*
- * includes
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include "camerabindebug.h"
-#include "camerabingeneral.h"
-
-#include "camerabinvideo.h"
-
-/*
- * defines and static global vars
- */
-
-/* internal element names */
-
-#define DEFAULT_AUD_ENC "vorbisenc"
-#define DEFAULT_VID_ENC "theoraenc"
-#define DEFAULT_MUX "oggmux"
-#define DEFAULT_SINK "filesink"
-
-#define DEFAULT_FLAGS 0
-
-enum
-{
- PROP_0,
- PROP_FILENAME
-};
-
-static void gst_camerabin_video_dispose (GstCameraBinVideo * sink);
-static void gst_camerabin_video_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_camerabin_video_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static GstStateChangeReturn
-gst_camerabin_video_change_state (GstElement * element,
- GstStateChange transition);
-
-static
- gboolean camerabin_video_pad_tee_src0_have_buffer (GstPad * pad,
- GstBuffer * buffer, gpointer u_data);
-static gboolean camerabin_video_sink_have_event (GstPad * pad, GstEvent * event,
- gpointer u_data);
-static gboolean gst_camerabin_video_create_elements (GstCameraBinVideo * vid);
-static void gst_camerabin_video_destroy_elements (GstCameraBinVideo * vid);
-
-GST_BOILERPLATE (GstCameraBinVideo, gst_camerabin_video, GstBin, GST_TYPE_BIN);
-
-static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY);
-
-static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY);
-
-
-/* GObject methods implementation */
-
-static void
-gst_camerabin_video_base_init (gpointer klass)
-{
- GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (eklass,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (eklass,
- gst_static_pad_template_get (&src_template));
- gst_element_class_set_details_simple (eklass,
- "Video capture bin for camerabin", "Bin/Video",
- "Process and store video data",
- "Edgard Lima <edgard.lima@indt.org.br>, "
- "Nokia Corporation <multimedia@maemo.org>");
-}
-
-static void
-gst_camerabin_video_class_init (GstCameraBinVideoClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
- gobject_class = G_OBJECT_CLASS (klass);
- gobject_class->dispose =
- (GObjectFinalizeFunc) GST_DEBUG_FUNCPTR (gst_camerabin_video_dispose);
- eklass->change_state = GST_DEBUG_FUNCPTR (gst_camerabin_video_change_state);
-
- gobject_class->set_property =
- GST_DEBUG_FUNCPTR (gst_camerabin_video_set_property);
- gobject_class->get_property =
- GST_DEBUG_FUNCPTR (gst_camerabin_video_get_property);
-
- /**
- * GstCameraBinVideo:filename:
- *
- * This property can be used to specify the filename of the video.
- *
- **/
- g_object_class_install_property (gobject_class, PROP_FILENAME,
- g_param_spec_string ("filename", "Filename",
- "Filename of the video to save", NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-}
-
-static void
-gst_camerabin_video_init (GstCameraBinVideo * vid,
- GstCameraBinVideoClass * g_class)
-{
- vid->filename = g_string_new ("");
-
- vid->app_post = NULL;
- vid->app_vid_enc = NULL;
- vid->app_aud_enc = NULL;
- vid->app_aud_src = NULL;
- vid->app_mux = NULL;
-
- vid->aud_src = NULL;
- vid->sink = NULL;
- vid->tee = NULL;
- vid->volume = NULL;
- vid->video_queue = NULL;
-
- vid->tee_video_srcpad = NULL;
- vid->tee_vf_srcpad = NULL;
-
- vid->pending_eos = NULL;
-
- vid->mute = ARG_DEFAULT_MUTE;
- vid->flags = DEFAULT_FLAGS;
-
- vid->vid_src_probe_id = 0;
- vid->vid_tee_probe_id = 0;
- vid->vid_sink_probe_id = 0;
-
- /* Create src and sink ghost pads */
- vid->sinkpad = gst_ghost_pad_new_no_target ("sink", GST_PAD_SINK);
- gst_element_add_pad (GST_ELEMENT (vid), vid->sinkpad);
-
- vid->srcpad = gst_ghost_pad_new_no_target ("src", GST_PAD_SRC);
- gst_element_add_pad (GST_ELEMENT (vid), vid->srcpad);
-
- /* Add probe for handling eos when stopping recording */
- vid->vid_sink_probe_id = gst_pad_add_event_probe (vid->sinkpad,
- G_CALLBACK (camerabin_video_sink_have_event), vid);
-}
-
-static void
-gst_camerabin_video_dispose (GstCameraBinVideo * vid)
-{
- GST_DEBUG_OBJECT (vid, "disposing");
-
- g_string_free (vid->filename, TRUE);
- vid->filename = NULL;
-
- if (vid->vid_sink_probe_id) {
- gst_pad_remove_event_probe (vid->sinkpad, vid->vid_sink_probe_id);
- vid->vid_sink_probe_id = 0;
- }
-
- /* Note: if videobin was never set to READY state the
- ownership of elements created by application were never
- taken by bin and therefore gst_object_sink is called for
- these elements (they may still be in floating state
- and not unreffed properly without sinking first)
- FIXME, something else is wrong when you have to sink here
- */
- if (vid->app_post) {
- //gst_object_sink (vid->app_post);
- gst_object_unref (vid->app_post);
- vid->app_post = NULL;
- }
-
- if (vid->app_vid_enc) {
- //gst_object_sink (vid->app_vid_enc);
- gst_object_unref (vid->app_vid_enc);
- vid->app_vid_enc = NULL;
- }
-
- if (vid->app_aud_enc) {
- //gst_object_sink (vid->app_aud_enc);
- gst_object_unref (vid->app_aud_enc);
- vid->app_aud_enc = NULL;
- }
-
- if (vid->app_aud_src) {
- //gst_object_sink (vid->app_aud_src);
- gst_object_unref (vid->app_aud_src);
- vid->app_aud_src = NULL;
- }
-
- if (vid->app_mux) {
- //gst_object_sink (vid->app_mux);
- gst_object_unref (vid->app_mux);
- vid->app_mux = NULL;
- }
-
- G_OBJECT_CLASS (parent_class)->dispose ((GObject *) vid);
-}
-
-
-static void
-gst_camerabin_video_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstCameraBinVideo *bin = GST_CAMERABIN_VIDEO (object);
-
- switch (prop_id) {
- case PROP_FILENAME:
- g_string_assign (bin->filename, g_value_get_string (value));
- GST_INFO_OBJECT (bin, "received filename: '%s'", bin->filename->str);
- if (bin->sink) {
- g_object_set (G_OBJECT (bin->sink), "location", bin->filename->str,
- NULL);
- } else {
- GST_INFO_OBJECT (bin, "no sink, not setting name yet");
- }
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_camerabin_video_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstCameraBinVideo *bin = GST_CAMERABIN_VIDEO (object);
-
- switch (prop_id) {
- case PROP_FILENAME:
- g_value_set_string (value, bin->filename->str);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstStateChangeReturn
-gst_camerabin_video_change_state (GstElement * element,
- GstStateChange transition)
-{
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
- GstCameraBinVideo *vid = GST_CAMERABIN_VIDEO (element);
-
- GST_DEBUG_OBJECT (element, "changing state: %s -> %s",
- gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
- gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)));
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- if (!gst_camerabin_video_create_elements (vid)) {
- return GST_STATE_CHANGE_FAILURE;
- }
- /* Don't change sink to READY yet to allow changing the
- filename in READY state. */
- gst_element_set_locked_state (vid->sink, TRUE);
- break;
- case GST_STATE_CHANGE_READY_TO_PAUSED:
- vid->calculate_adjust_ts_video = TRUE;
- g_object_set (G_OBJECT (vid->sink), "async", FALSE, NULL);
- gst_element_set_locked_state (vid->sink, FALSE);
- break;
- case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
- vid->calculate_adjust_ts_video = TRUE;
- break;
-
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- /* Set sink to NULL in order to write the file _now_ */
- GST_INFO ("write video file: %s", vid->filename->str);
- gst_element_set_locked_state (vid->sink, TRUE);
- gst_element_set_state (vid->sink, GST_STATE_NULL);
- break;
- default:
- break;
- }
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- switch (transition) {
- case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
- /* Write debug graph to file */
- GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (GST_ELEMENT_PARENT (vid)),
- GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE |
- GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS, "videobin.playing");
-
- if (vid->pending_eos) {
- /* Video bin is still paused, so push eos directly to video queue */
- GST_DEBUG_OBJECT (vid, "pushing pending eos");
- gst_pad_push_event (vid->tee_video_srcpad, vid->pending_eos);
- vid->pending_eos = NULL;
- }
- break;
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- /* Reset counters related to timestamp rewriting */
- vid->adjust_ts_video = 0;
- vid->last_ts_video = 0;
-
- if (vid->pending_eos) {
- gst_event_unref (vid->pending_eos);
- vid->pending_eos = NULL;
- }
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- gst_camerabin_video_destroy_elements (vid);
- break;
- default:
- break;
- }
-
- GST_DEBUG_OBJECT (element, "changed state: %s -> %s = %s",
- gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
- gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)),
- gst_element_state_change_return_get_name (ret));
-
- return ret;
-}
-
-/*
- * static helper functions implementation
- */
-
-/*
- * camerabin_video_pad_tee_src0_have_buffer:
- * @pad: tee src pad leading to video encoding
- * @event: received buffer
- * @u_data: video bin object
- *
- * Buffer probe for rewriting video buffer timestamps.
- *
- * Returns: TRUE always
- */
-static gboolean
-camerabin_video_pad_tee_src0_have_buffer (GstPad * pad, GstBuffer * buffer,
- gpointer u_data)
-{
- GstCameraBinVideo *vid = (GstCameraBinVideo *) u_data;
-
- GST_LOG ("buffer in with size %d ts %" GST_TIME_FORMAT,
- GST_BUFFER_SIZE (buffer), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)));
-
- if (G_UNLIKELY (vid->calculate_adjust_ts_video)) {
- GstEvent *event;
- GstObject *tee;
- GstPad *sinkpad;
-
- vid->adjust_ts_video = GST_BUFFER_TIMESTAMP (buffer) - vid->last_ts_video;
- vid->calculate_adjust_ts_video = FALSE;
- event = gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME,
- 0, GST_CLOCK_TIME_NONE, vid->last_ts_video);
- /* Send the newsegment to both view finder and video bin */
- tee = gst_pad_get_parent (pad);
- sinkpad = gst_element_get_static_pad (GST_ELEMENT (tee), "sink");
- gst_pad_send_event (sinkpad, event);
- gst_object_unref (tee);
- gst_object_unref (sinkpad);
- GST_LOG_OBJECT (vid, "vid ts adjustment: %" GST_TIME_FORMAT,
- GST_TIME_ARGS (vid->adjust_ts_video));
- GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
- }
- GST_BUFFER_TIMESTAMP (buffer) -= vid->adjust_ts_video;
- vid->last_ts_video = GST_BUFFER_TIMESTAMP (buffer);
- if (GST_BUFFER_DURATION_IS_VALID (buffer))
- vid->last_ts_video += GST_BUFFER_DURATION (buffer);
-
- GST_LOG ("buffer out with size %d ts %" GST_TIME_FORMAT,
- GST_BUFFER_SIZE (buffer), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)));
- return TRUE;
-}
-
-/*
- * camerabin_video_sink_have_event:
- * @pad: video bin sink pad
- * @event: received event
- * @u_data: video bin object
- *
- * Event probe for video bin eos handling.
- * Copies the eos event to audio branch of video bin.
- *
- * Returns: FALSE to drop the event, TRUE otherwise
- */
-static gboolean
-camerabin_video_sink_have_event (GstPad * pad, GstEvent * event,
- gpointer u_data)
-{
- GstCameraBinVideo *vid = (GstCameraBinVideo *) u_data;
- gboolean ret = TRUE;
-
- GST_DEBUG_OBJECT (vid, "got videobin sink event: %s",
- GST_EVENT_TYPE_NAME (event));
-
- switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_EOS:
- if (vid->aud_src) {
- GST_DEBUG_OBJECT (vid, "copying %s to audio branch",
- GST_EVENT_TYPE_NAME (event));
- gst_element_send_event (vid->aud_src, gst_event_copy (event));
- }
-
- /* If we're paused, we can't pass eos to video now to avoid blocking.
- Instead send eos when changing to playing next time. */
- if (GST_STATE (GST_ELEMENT (vid)) == GST_STATE_PAUSED) {
- GST_DEBUG_OBJECT (vid, "paused, delay eos sending");
- vid->pending_eos = gst_event_ref (event);
- ret = FALSE; /* Drop the event */
- }
- break;
- default:
- break;
- }
- return ret;
-}
-
-/*
- * gst_camerabin_video_create_elements:
- * @vid: a pointer to #GstCameraBinVideo
- *
- * This function creates the needed #GstElements and resources to record videos.
- * Use gst_camerabin_video_destroy_elements() to free these resources.
- *
- * Returns: %TRUE if succeeded or FALSE if failed
- */
-static gboolean
-gst_camerabin_video_create_elements (GstCameraBinVideo * vid)
-{
- GstPad *vid_sinkpad = NULL, *vid_srcpad = NULL;
- GstBin *vidbin = GST_BIN (vid);
- GstElement *queue = NULL;
-
- vid->adjust_ts_video = 0;
- vid->last_ts_video = 0;
- vid->calculate_adjust_ts_video = FALSE;
-
- /* Add video post processing element if any */
- if (vid->app_post) {
- if (!gst_camerabin_add_element (vidbin, vid->app_post)) {
- goto error;
- }
- vid_sinkpad = gst_element_get_static_pad (vid->app_post, "sink");
- }
-
- /* Add tee element */
- if (!(vid->tee =
- gst_camerabin_create_and_add_element (vidbin, "tee", "video-tee"))) {
- goto error;
- }
-
- /* Set up sink ghost pad for video bin */
- if (!vid_sinkpad) {
- vid_sinkpad = gst_element_get_static_pad (vid->tee, "sink");
- }
- gst_ghost_pad_set_target (GST_GHOST_PAD (vid->sinkpad), vid_sinkpad);
- gst_object_unref (vid_sinkpad);
-
- /* Add queue element for video */
- vid->tee_video_srcpad = gst_element_get_request_pad (vid->tee, "src_%u");
-
- vid->video_queue = gst_element_factory_make ("queue", "video-queue");
- if (!gst_camerabin_add_element (vidbin, vid->video_queue)) {
- goto error;
- }
- g_object_set (vid->video_queue, "silent", TRUE, NULL);
-
- /* Add probe for rewriting video timestamps */
- vid->vid_tee_probe_id = gst_pad_add_buffer_probe (vid->tee_video_srcpad,
- G_CALLBACK (camerabin_video_pad_tee_src0_have_buffer), vid);
-
- if (vid->flags & GST_CAMERABIN_FLAG_VIDEO_COLOR_CONVERSION) {
- /* Add colorspace converter */
- if (gst_camerabin_create_and_add_element (vidbin,
- "ffmpegcolorspace", "video-ffmpegcolorspace") == NULL) {
- goto error;
- }
- }
-
- /* Add user set or default video encoder element */
- if (vid->app_vid_enc) {
- vid->vid_enc = vid->app_vid_enc;
- if (!gst_camerabin_add_element (vidbin, vid->vid_enc)) {
- goto error;
- }
- } else if (!(vid->vid_enc =
- gst_camerabin_create_and_add_element (vidbin, DEFAULT_VID_ENC,
- "video-encoder"))) {
- goto error;
- }
-
- /* Add application set or default muxer element */
- if (vid->app_mux) {
- vid->muxer = vid->app_mux;
- if (!gst_camerabin_add_element (vidbin, vid->muxer)) {
- goto error;
- }
- } else if (!(vid->muxer =
- gst_camerabin_create_and_add_element (vidbin, DEFAULT_MUX,
- "video-muxer"))) {
- goto error;
- }
-
- /* Add sink element for storing the video */
- if (!(vid->sink =
- gst_camerabin_create_and_add_element (vidbin, DEFAULT_SINK,
- "video-sink"))) {
- goto error;
- }
- g_object_set (G_OBJECT (vid->sink), "location", vid->filename->str, "buffer-mode", 2, /* non buffered io */
- NULL);
-
- if (!(vid->flags & GST_CAMERABIN_FLAG_DISABLE_AUDIO)) {
- /* Add application set or default audio source element */
- if (!(vid->aud_src = gst_camerabin_setup_default_element (vidbin,
- vid->app_aud_src, "autoaudiosrc", DEFAULT_AUDIOSRC))) {
- vid->aud_src = NULL;
- goto error;
- } else {
- if (!gst_camerabin_add_element (vidbin, vid->aud_src))
- goto error;
- }
-
- /* Add queue element for audio */
- queue = gst_element_factory_make ("queue", "audio-queue");
- if (!gst_camerabin_add_element (vidbin, queue)) {
- goto error;
- }
- g_object_set (queue, "silent", TRUE, NULL);
-
- /* Add optional audio conversion and volume elements and
- raise no errors if adding them fails */
- if (vid->flags & GST_CAMERABIN_FLAG_AUDIO_CONVERSION) {
- if (!gst_camerabin_try_add_element (vidbin,
- gst_element_factory_make ("audioconvert", NULL))) {
- GST_WARNING_OBJECT (vid, "unable to add audio conversion element");
- /* gst_camerabin_try_add_element() destroyed the element */
- }
- }
-
- vid->volume = gst_element_factory_make ("volume", NULL);
- if (!gst_camerabin_try_add_element (vidbin, vid->volume)) {
- GST_WARNING_OBJECT (vid, "unable to add volume element");
- /* gst_camerabin_try_add_element() destroyed the element */
- vid->volume = NULL;
- } else {
- g_object_set (vid->volume, "mute", vid->mute, NULL);
- }
-
- /* Add application set or default audio encoder element */
- if (vid->app_aud_enc) {
- vid->aud_enc = vid->app_aud_enc;
- if (!gst_camerabin_add_element (vidbin, vid->aud_enc)) {
- goto error;
- }
- } else if (!(vid->aud_enc =
- gst_camerabin_create_and_add_element (vidbin, DEFAULT_AUD_ENC,
- "audio-encoder"))) {
- goto error;
- }
-
- /* Link audio part to the muxer */
- if (!gst_element_link_pads_full (vid->aud_enc, NULL, vid->muxer, NULL,
- GST_PAD_LINK_CHECK_CAPS)) {
- GST_ELEMENT_ERROR (vid, CORE, NEGOTIATION, (NULL),
- ("linking audio encoder and muxer failed"));
- goto error;
- }
- }
- /* Add queue leading out of the video bin and to view finder */
- vid->tee_vf_srcpad = gst_element_get_request_pad (vid->tee, "src_%u");
- queue = gst_element_factory_make ("queue", "viewfinder-queue");
- if (!gst_camerabin_add_element (vidbin, queue)) {
- goto error;
- }
- /* Set queue leaky, we don't want to block video encoder feed, but
- prefer leaking view finder buffers instead. */
- g_object_set (G_OBJECT (queue), "leaky", 2, "max-size-buffers", 1, "silent",
- TRUE, NULL);
-
- /* Set up src ghost pad for video bin */
- vid_srcpad = gst_element_get_static_pad (queue, "src");
- gst_ghost_pad_set_target (GST_GHOST_PAD (vid->srcpad), vid_srcpad);
- /* Never let video bin eos events reach view finder */
- vid->vid_src_probe_id = gst_pad_add_event_probe (vid_srcpad,
- G_CALLBACK (gst_camerabin_drop_eos_probe), vid);
- gst_object_unref (vid_srcpad);
-
- /* audio source is not always present and might be set to NULL during operation */
- if (vid->aud_src
- && g_object_class_find_property (G_OBJECT_GET_CLASS (vid->aud_src),
- "provide-clock")) {
- g_object_set (vid->aud_src, "provide-clock", FALSE, NULL);
- }
-
- GST_DEBUG ("created video elements");
-
- return TRUE;
-
-error:
-
- gst_camerabin_video_destroy_elements (vid);
-
- return FALSE;
-
-}
-
-/*
- * gst_camerabin_video_destroy_elements:
- * @vid: a pointer to #GstCameraBinVideo
- *
- * This function destroys all the elements created by
- * gst_camerabin_video_create_elements().
- *
- */
-static void
-gst_camerabin_video_destroy_elements (GstCameraBinVideo * vid)
-{
- GST_DEBUG ("destroying video elements");
-
- /* Remove EOS event probe from videobin srcpad (queue's srcpad) */
- if (vid->vid_src_probe_id) {
- GstPad *pad = gst_ghost_pad_get_target (GST_GHOST_PAD (vid->srcpad));
- if (pad) {
- gst_pad_remove_event_probe (pad, vid->vid_src_probe_id);
- gst_object_unref (pad);
- }
- vid->vid_src_probe_id = 0;
- }
-
- /* Remove buffer probe from video tee srcpad */
- if (vid->vid_tee_probe_id) {
- gst_pad_remove_buffer_probe (vid->tee_video_srcpad, vid->vid_tee_probe_id);
- vid->vid_tee_probe_id = 0;
- }
-
- /* Release tee request pads */
- if (vid->tee_video_srcpad) {
- gst_element_release_request_pad (vid->tee, vid->tee_video_srcpad);
- gst_object_unref (vid->tee_video_srcpad);
- vid->tee_video_srcpad = NULL;
- }
- if (vid->tee_vf_srcpad) {
- gst_element_release_request_pad (vid->tee, vid->tee_vf_srcpad);
- gst_object_unref (vid->tee_vf_srcpad);
- vid->tee_vf_srcpad = NULL;
- }
-
- gst_ghost_pad_set_target (GST_GHOST_PAD (vid->sinkpad), NULL);
- gst_ghost_pad_set_target (GST_GHOST_PAD (vid->srcpad), NULL);
-
- gst_camerabin_remove_elements_from_bin (GST_BIN (vid));
-
- vid->aud_src = NULL;
- vid->sink = NULL;
- vid->tee = NULL;
- vid->volume = NULL;
- vid->video_queue = NULL;
- vid->vid_enc = NULL;
- vid->aud_enc = NULL;
- vid->muxer = NULL;
-
- if (vid->pending_eos) {
- gst_event_unref (vid->pending_eos);
- vid->pending_eos = NULL;
- }
-}
-
-/*
- * Set & get mute and video capture elements
- */
-
-void
-gst_camerabin_video_set_mute (GstCameraBinVideo * vid, gboolean mute)
-{
- g_return_if_fail (vid != NULL);
-
- GST_DEBUG_OBJECT (vid, "setting mute %s", mute ? "on" : "off");
- vid->mute = mute;
- if (vid->volume) {
- g_object_set (vid->volume, "mute", mute, NULL);
- }
-}
-
-void
-gst_camerabin_video_set_post (GstCameraBinVideo * vid, GstElement * post)
-{
- GstElement **app_post;
- GST_DEBUG_OBJECT (vid, "setting video post processing: %" GST_PTR_FORMAT,
- post);
- GST_OBJECT_LOCK (vid);
- app_post = &vid->app_post;
- gst_object_replace ((GstObject **) app_post, GST_OBJECT (post));
- GST_OBJECT_UNLOCK (vid);
-}
-
-void
-gst_camerabin_video_set_video_enc (GstCameraBinVideo * vid,
- GstElement * video_enc)
-{
- GstElement **app_vid_enc;
- GST_DEBUG_OBJECT (vid, "setting video encoder: %" GST_PTR_FORMAT, video_enc);
- GST_OBJECT_LOCK (vid);
- app_vid_enc = &vid->app_vid_enc;
- gst_object_replace ((GstObject **) app_vid_enc, GST_OBJECT (video_enc));
- GST_OBJECT_UNLOCK (vid);
-}
-
-void
-gst_camerabin_video_set_audio_enc (GstCameraBinVideo * vid,
- GstElement * audio_enc)
-{
- GstElement **app_aud_enc;
- GST_DEBUG_OBJECT (vid, "setting audio encoder: %" GST_PTR_FORMAT, audio_enc);
- GST_OBJECT_LOCK (vid);
- app_aud_enc = &vid->app_aud_enc;
- gst_object_replace ((GstObject **) app_aud_enc, GST_OBJECT (audio_enc));
- GST_OBJECT_UNLOCK (vid);
-}
-
-void
-gst_camerabin_video_set_muxer (GstCameraBinVideo * vid, GstElement * muxer)
-{
- GstElement **app_mux;
- GST_DEBUG_OBJECT (vid, "setting muxer: %" GST_PTR_FORMAT, muxer);
- GST_OBJECT_LOCK (vid);
- app_mux = &vid->app_mux;
- gst_object_replace ((GstObject **) app_mux, GST_OBJECT (muxer));
- GST_OBJECT_UNLOCK (vid);
-}
-
-void
-gst_camerabin_video_set_audio_src (GstCameraBinVideo * vid,
- GstElement * audio_src)
-{
- GstElement **app_aud_src;
- GST_DEBUG_OBJECT (vid, "setting audio source: %" GST_PTR_FORMAT, audio_src);
- GST_OBJECT_LOCK (vid);
- app_aud_src = &vid->app_aud_src;
- gst_object_replace ((GstObject **) app_aud_src, GST_OBJECT (audio_src));
- GST_OBJECT_UNLOCK (vid);
-}
-
-void
-gst_camerabin_video_set_flags (GstCameraBinVideo * vid, GstCameraBinFlags flags)
-{
- GST_DEBUG_OBJECT (vid, "setting video flags: %d", flags);
- GST_OBJECT_LOCK (vid);
- vid->flags = flags;
- GST_OBJECT_UNLOCK (vid);
-}
-
-
-gboolean
-gst_camerabin_video_get_mute (GstCameraBinVideo * vid)
-{
- g_return_val_if_fail (vid != NULL, FALSE);
-
- if (vid->volume) {
- g_object_get (vid->volume, "mute", &vid->mute, NULL);
- }
-
- return vid->mute;
-}
-
-GstElement *
-gst_camerabin_video_get_post (GstCameraBinVideo * vid)
-{
- return vid->app_post;
-}
-
-GstElement *
-gst_camerabin_video_get_video_enc (GstCameraBinVideo * vid)
-{
- return vid->vid_enc ? vid->vid_enc : vid->app_vid_enc;
-}
-
-GstElement *
-gst_camerabin_video_get_audio_enc (GstCameraBinVideo * vid)
-{
- return vid->aud_enc ? vid->aud_enc : vid->app_aud_enc;
-}
-
-GstElement *
-gst_camerabin_video_get_muxer (GstCameraBinVideo * vid)
-{
- return vid->muxer ? vid->muxer : vid->app_mux;
-}
-
-GstElement *
-gst_camerabin_video_get_audio_src (GstCameraBinVideo * vid)
-{
- return vid->aud_src ? vid->aud_src : vid->app_aud_src;
-}
diff --git a/gst/camerabin/camerabinvideo.h b/gst/camerabin/camerabinvideo.h
deleted file mode 100644
index 8f9a0f02..00000000
--- a/gst/camerabin/camerabinvideo.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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 __CAMERABIN_VIDEO_H__
-#define __CAMERABIN_VIDEO_H__
-
-#include <gst/gstbin.h>
-
-#include "gstcamerabin-enum.h"
-
-G_BEGIN_DECLS
-#define ARG_DEFAULT_MUTE FALSE
-#define GST_TYPE_CAMERABIN_VIDEO (gst_camerabin_video_get_type())
-#define GST_CAMERABIN_VIDEO_CAST(obj) ((GstCameraBinVideo*)(obj))
-#define GST_CAMERABIN_VIDEO(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_CAMERABIN_VIDEO,GstCameraBinVideo))
-#define GST_CAMERABIN_VIDEO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_CAMERABIN_VIDEO,GstCameraBinVideoClass))
-#define GST_IS_CAMERABIN_VIDEO(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_CAMERABIN_VIDEO))
-#define GST_IS_CAMERABIN_VIDEO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CAMERABIN_VIDEO))
-/**
- * GstCameraBinVideo:
- *
- * The opaque #GstCameraBinVideo structure.
- */
-typedef struct _GstCameraBinVideo GstCameraBinVideo;
-typedef struct _GstCameraBinVideoClass GstCameraBinVideoClass;
-
-struct _GstCameraBinVideo
-{
- GstBin parent;
-
- GString *filename;
-
- /* A/V timestamp rewriting */
- guint64 adjust_ts_video;
- guint64 last_ts_video;
- gboolean calculate_adjust_ts_video;
-
- /* Sink and src pads of video bin */
- GstPad *sinkpad;
- GstPad *srcpad;
-
- /* Tee src pads leading to video encoder and view finder */
- GstPad *tee_video_srcpad;
- GstPad *tee_vf_srcpad;
-
- /* Application set elements */
- GstElement *app_post; /* Video post processing */
- GstElement *app_vid_enc;
- GstElement *app_aud_enc;
- GstElement *app_aud_src;
- GstElement *app_mux;
-
- /* Other elements */
- GstElement *aud_src; /* Audio source */
- GstElement *sink; /* Sink for recorded video */
- GstElement *tee; /* Split output to view finder and recording sink */
- GstElement *volume; /* Volume for muting */
- GstElement *video_queue; /* Buffer for raw video frames */
- GstElement *vid_enc; /* Video encoder */
- GstElement *aud_enc; /* Audio encoder */
- GstElement *muxer; /* Muxer */
-
- GstEvent *pending_eos;
-
- /* Probe IDs */
- gulong vid_src_probe_id;
- gulong vid_tee_probe_id;
- gulong vid_sink_probe_id;
-
- gboolean mute;
- GstCameraBinFlags flags;
-};
-
-struct _GstCameraBinVideoClass
-{
- GstBinClass parent_class;
-};
-
-GType gst_camerabin_video_get_type (void);
-
-/*
- * external function prototypes
- */
-
-void gst_camerabin_video_set_mute (GstCameraBinVideo * vid, gboolean mute);
-
-void gst_camerabin_video_set_post (GstCameraBinVideo * vid, GstElement * post);
-
-void
-gst_camerabin_video_set_video_enc (GstCameraBinVideo * vid,
- GstElement * video_enc);
-
-void
-gst_camerabin_video_set_audio_enc (GstCameraBinVideo * vid,
- GstElement * audio_enc);
-
-void
-gst_camerabin_video_set_muxer (GstCameraBinVideo * vid, GstElement * muxer);
-
-void
-gst_camerabin_video_set_audio_src (GstCameraBinVideo * vid,
- GstElement * audio_src);
-
-void
-gst_camerabin_video_set_flags (GstCameraBinVideo * vid,
- GstCameraBinFlags flags);
-
-
-gboolean gst_camerabin_video_get_mute (GstCameraBinVideo * vid);
-
-GstElement *gst_camerabin_video_get_post (GstCameraBinVideo * vid);
-
-GstElement *gst_camerabin_video_get_video_enc (GstCameraBinVideo * vid);
-
-GstElement *gst_camerabin_video_get_audio_enc (GstCameraBinVideo * vid);
-
-GstElement *gst_camerabin_video_get_muxer (GstCameraBinVideo * vid);
-
-GstElement *gst_camerabin_video_get_audio_src (GstCameraBinVideo * vid);
-
-G_END_DECLS
-#endif /* #ifndef __CAMERABIN_VIDEO_H__ */
diff --git a/gst/camerabin/gstcamerabin-enum.c b/gst/camerabin/gstcamerabin-enum.c
deleted file mode 100644
index 73679497..00000000
--- a/gst/camerabin/gstcamerabin-enum.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2009 Nokia Corporation <multimedia@maemo.org>
- *
- * 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.
- */
-
-#include "gstcamerabin-enum.h"
-
-#define C_FLAGS(v) ((guint) v)
-
-static void
-register_gst_camerabin_flags (GType * id)
-{
- static const GFlagsValue values[] = {
- {C_FLAGS (GST_CAMERABIN_FLAG_SOURCE_RESIZE),
- "Enable source crop and scale", "source-resize"},
- {C_FLAGS (GST_CAMERABIN_FLAG_SOURCE_COLOR_CONVERSION),
- "Enable colorspace conversion for video source",
- "source-colorspace-conversion"},
- {C_FLAGS (GST_CAMERABIN_FLAG_VIEWFINDER_COLOR_CONVERSION),
- "Enable colorspace conversion for viewfinder",
- "viewfinder-colorspace-conversion"},
- {C_FLAGS (GST_CAMERABIN_FLAG_VIEWFINDER_SCALE),
- "Enable scale for viewfinder", "viewfinder-scale"},
- {C_FLAGS (GST_CAMERABIN_FLAG_AUDIO_CONVERSION),
- "Enable audio conversion for video capture", "audio-conversion"},
- {C_FLAGS (GST_CAMERABIN_FLAG_DISABLE_AUDIO),
- "Disable audio elements for video capture", "disable-audio"},
- {C_FLAGS (GST_CAMERABIN_FLAG_IMAGE_COLOR_CONVERSION),
- "Enable colorspace conversion for still image",
- "image-colorspace-conversion"},
- {C_FLAGS (GST_CAMERABIN_FLAG_VIDEO_COLOR_CONVERSION),
- "Enable colorspace conversion for video capture",
- "video-colorspace-conversion"},
- {0, NULL, NULL}
- };
- *id = g_flags_register_static ("GstCameraBinFlags", values);
-}
-
-GType
-gst_camerabin_flags_get_type (void)
-{
- static GType id;
- static GOnce once = G_ONCE_INIT;
-
- g_once (&once, (GThreadFunc) register_gst_camerabin_flags, &id);
- return id;
-}
diff --git a/gst/camerabin/gstcamerabin-enum.h b/gst/camerabin/gstcamerabin-enum.h
deleted file mode 100644
index b848047e..00000000
--- a/gst/camerabin/gstcamerabin-enum.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2009 Nokia Corporation <multimedia@maemo.org>
- *
- * 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_CAMERABIN_ENUM_H__
-#define __GST_CAMERABIN_ENUM_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-enum
-{
- ARG_0,
- ARG_FILENAME,
- ARG_MODE,
- ARG_FLAGS,
- ARG_MUTE,
- ARG_ZOOM,
- ARG_IMAGE_POST,
- ARG_IMAGE_ENC,
- ARG_IMAGE_FORMATTER,
- ARG_VIDEO_POST,
- ARG_VIDEO_ENC,
- ARG_AUDIO_ENC,
- ARG_VIDEO_MUX,
- ARG_VF_SINK,
- ARG_VIDEO_SRC,
- ARG_AUDIO_SRC,
- ARG_INPUT_CAPS,
- ARG_FILTER_CAPS,
- ARG_PREVIEW_CAPS,
- ARG_WB_MODE,
- ARG_COLOUR_TONE,
- ARG_SCENE_MODE,
- ARG_FLASH_MODE,
- ARG_FOCUS_STATUS,
- ARG_CAPABILITIES,
- ARG_SHAKE_RISK,
- ARG_EV_COMP,
- ARG_ISO_SPEED,
- ARG_APERTURE,
- ARG_EXPOSURE,
- ARG_VIDEO_SOURCE_FILTER,
- ARG_IMAGE_CAPTURE_SUPPORTED_CAPS,
- ARG_VIEWFINDER_FILTER,
- ARG_FLICKER_MODE,
- ARG_FOCUS_MODE,
- ARG_BLOCK_VIEWFINDER,
- ARG_IMAGE_CAPTURE_WIDTH,
- ARG_IMAGE_CAPTURE_HEIGHT,
- ARG_VIDEO_CAPTURE_WIDTH,
- ARG_VIDEO_CAPTURE_HEIGHT,
- ARG_VIDEO_CAPTURE_FRAMERATE,
- ARG_PREVIEW_SOURCE_FILTER,
- ARG_READY_FOR_CAPTURE,
- ARG_IDLE
-};
-
-/**
- * GstCameraBinFlags:
- * @GST_CAMERABIN_FLAG_SOURCE_RESIZE: enable video crop and scale
- * after capture
- * @GST_CAMERABIN_FLAG_SOURCE_COLOR_CONVERSION: enable conversion
- * of native video format by enabling ffmpegcolorspace
- * @GST_CAMERABIN_FLAG_VIEWFINDER_COLOR_CONVERSION: enable color
- * conversion for viewfinder element
- * @GST_CAMERABIN_FLAG_VIEWFINDER_SCALE: enable scaling in
- * viewfinder element retaining aspect ratio
- * @GST_CAMERABIN_FLAG_AUDIO_CONVERSION: enable audioconvert and
- * audioresample elements
- * @GST_CAMERABIN_FLAG_DISABLE_AUDIO: disable audio elements
- * @GST_CAMERABIN_FLAG_IMAGE_COLOR_CONVERSION: enable color
- * conversion for image output element
- * @GST_CAMERABIN_FLAG_VIDEO_COLOR_CONVERSION: enable color
- * conversion for video encoder element
- *
- * Extra flags to configure the behaviour of the sinks.
- */
-typedef enum {
- GST_CAMERABIN_FLAG_SOURCE_RESIZE = (1 << 0),
- GST_CAMERABIN_FLAG_SOURCE_COLOR_CONVERSION = (1 << 1),
- GST_CAMERABIN_FLAG_VIEWFINDER_COLOR_CONVERSION = (1 << 2),
- GST_CAMERABIN_FLAG_VIEWFINDER_SCALE = (1 << 3),
- GST_CAMERABIN_FLAG_AUDIO_CONVERSION = (1 << 4),
- GST_CAMERABIN_FLAG_DISABLE_AUDIO = (1 << 5),
- GST_CAMERABIN_FLAG_IMAGE_COLOR_CONVERSION = (1 << 6),
- GST_CAMERABIN_FLAG_VIDEO_COLOR_CONVERSION = (1 << 7)
-} GstCameraBinFlags;
-
-#define GST_TYPE_CAMERABIN_FLAGS (gst_camerabin_flags_get_type())
-GType gst_camerabin_flags_get_type (void);
-
-G_END_DECLS
-
-#endif /* #ifndef __GST_CAMERABIN_ENUM_H__ */
diff --git a/gst/camerabin/gstcamerabin-marshal.list b/gst/camerabin/gstcamerabin-marshal.list
deleted file mode 100644
index 6bc959ad..00000000
--- a/gst/camerabin/gstcamerabin-marshal.list
+++ /dev/null
@@ -1,8 +0,0 @@
-# glib-genmarshal --header --prefix=gst_camerabin camerabin_marshal.marshal > camerabin_marshal.h
-# glib-genmarshal --body --prefix=gst_camerabin camerabin_marshal.marshal > camerabin_marshal.c
-
-VOID:INT,INT,INT,INT
-VOID:INT,INT
-BOOLEAN:STRING
-INT64:VOID
-VOID:OBJECT,INT64,INT64
diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
deleted file mode 100644
index 7fc9da9d..00000000
--- a/gst/camerabin/gstcamerabin.c
+++ /dev/null
@@ -1,4350 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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.
- */
-
-/**
- * SECTION:element-camerabin
- *
- * GstCameraBin is a high-level camera object that encapsulates the gstreamer
- * internals and provides a task based API for the application. It consists of
- * three main data paths: view-finder, image capture and video capture.
- *
- * <informalfigure>
- * <mediaobject>
- * <imageobject><imagedata fileref="camerabin.png"/></imageobject>
- * <textobject><phrase>CameraBin structure</phrase></textobject>
- * <caption><para>Structural decomposition of CameraBin object.</para></caption>
- * </mediaobject>
- * </informalfigure>
- *
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch -v -m camerabin
- * ]|
- * </refsect2>
- * <refsect2>
- * <title>Image capture</title>
- * <para>
- * Image capture is selected by switching #GstCameraBin:mode to %MODE_IMAGE.
- * Taking still images is initiated with the #GstCameraBin::capture-start action
- * signal. Once the image has been captured, "image-captured" gst message is
- * posted to the bus and capturing another image is possible. If application
- * has set #GstCameraBin:preview-caps property, then a "preview-image" gst
- * message is posted to bus containing preview image formatted according to
- * specified caps. Eventually when image has been saved
- * #GstCameraBin::image-done signal is emitted.
- *
- * Available resolutions can be taken from the #GstCameraBin:video-source-caps
- * property. Image capture resolution can be set with
- * #GstCameraBin::set-image-resolution action signal.
- *
- * Some video source elements implement the #GstPhotography interface, which contains
- * functions and properties for setting photography parameters. One can use
- * gst_bin_iterate_all_by_interface() to get a reference to it.
- *
- * </para>
- * </refsect2>
- * <refsect2>
- * <title>Video capture</title>
- * <para>
- * Video capture is selected by switching #GstCameraBin:mode to %MODE_VIDEO.
- * The capture is started with the #GstCameraBin::capture-start action signal
- * too. In addition to image capture one can use #GstCameraBin::capture-pause to
- * pause recording and #GstCameraBin::capture-stop to end recording.
- *
- * Available resolutions and fps can be taken from the
- * #GstCameraBin:video-source-caps property.
- * #GstCameraBin::set-video-resolution-fps action signal can be used to set
- * frame rate and resolution for the video recording and view finder as well.
- * </para>
- * </refsect2>
- * <refsect2>
- * <title>States</title>
- * <para>
- * Elements within GstCameraBin are created and destroyed when switching
- * between NULL and READY states. Therefore element properties should be set
- * in NULL state. User set elements are not unreffed until GstCameraBin is
- * unreffed or replaced by a new user set element. Initially only elements
- * needed for view finder mode are created to speed up startup. Image bin and
- * video bin elements are created when setting the mode or starting capture.
- * GstCameraBin must be in the PLAYING state before #GstCameraBin::capture-start
- * is called.
- * </para>
- * </refsect2>
- * <refsect2>
- * <title>Video and image previews</title>
- * <para>
- * GstCameraBin contains #GstCameraBin:preview-caps property, which is used to
- * determine whether the application wants a preview image of the captured
- * picture or video. When set, a GstMessage named "preview-image" will be sent.
- * This message will contain a GstBuffer holding the preview image, converted
- * to a format defined by those preview caps. The ownership of the preview
- * image is kept in GstCameraBin, so application should ref the preview buffer
- * object if it needs to use it elsewhere than in message handler.
- *
- * Defining preview caps is done by selecting the capturing #GstCameraBin:mode
- * first and then setting the property. Camerabin remembers caps separately for
- * both modes, so it is not necessary to set the caps again after changing the
- * mode.
- * </para>
- * </refsect2>
- * <refsect2>
- * <note>
- * <para>
- * Since the muxers tested so far have problems with discontinous buffers, QoS
- * has been disabled, and then in order to record video, you MUST ensure that
- * there is enough CPU to encode the video. Thus choose smart resolution and
- * frames per second values. It is also highly recommended to avoid color
- * conversions; make sure all the elements involved work with the same
- * colorspace (i.e. rgb or yuv i420 or whatelse).
- * </para>
- * </note>
- * </refsect2>
- */
-
-/*
- * The pipeline in the camerabin is
- *
- * videosrc [ ! ffmpegcsp ] ! capsfilter ! crop ! scale ! capsfilter ! \
- * [ video_filter ! ] out-sel name=osel ! queue name=img_q
- *
- * View finder:
- * osel. ! in-sel name=isel ! scale ! capsfilter [ ! ffmpegcsp ] ! vfsink
- *
- * Image bin:
- * img_q. [ ! ipp ] ! ffmpegcsp ! imageenc ! metadatamux ! filesink
- *
- * Video bin:
- * osel. ! tee name=t ! queue ! videoenc ! videomux name=mux ! filesink
- * t. ! queue ! isel.
- * audiosrc ! queue ! audioconvert ! volume ! audioenc ! mux.
- *
- * The properties of elements are:
- *
- * vfsink - "sync", FALSE, "qos", FALSE, "async", FALSE
- * output-selector - "resend-latest", FALSE
- * input-selector - "select-all", TRUE
- */
-
-/*
- * includes
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
- * with newer GLib versions (>= 2.31.0) */
-#define GLIB_DISABLE_DEPRECATION_WARNINGS
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <gst/gst.h>
-#include <gst/tag/tag.h>
-#include <gst/glib-compat-private.h>
-/* FIXME: include #include <gst/gst-i18n-plugin.h> and use _(" ") */
-
-#include "gstcamerabin.h"
-#include "gstcamerabincolorbalance.h"
-
-#include "camerabindebug.h"
-#include "camerabingeneral.h"
-#include "camerabinpreview.h"
-
-#include "gstcamerabin-marshal.h"
-
-/*
- * enum and types
- */
-
-enum
-{
- /* action signals */
- CAPTURE_START_SIGNAL,
- CAPTURE_STOP_SIGNAL,
- CAPTURE_PAUSE_SIGNAL,
- SET_VIDEO_RESOLUTION_FPS_SIGNAL,
- SET_IMAGE_RESOLUTION_SIGNAL,
- /* emit signals */
- IMG_DONE_SIGNAL,
- LAST_SIGNAL
-};
-
-
-/*
- * defines and static global vars
- */
-
-static guint camerabin_signals[LAST_SIGNAL];
-
-#define GST_TYPE_CAMERABIN_MODE (gst_camerabin_mode_get_type ())
-
-/* default and range values for args */
-
-#define DEFAULT_MODE MODE_IMAGE
-#define DEFAULT_ZOOM 1.0
-#define DEFAULT_WIDTH 640
-#define DEFAULT_HEIGHT 480
-#define DEFAULT_CAPTURE_WIDTH 800
-#define DEFAULT_CAPTURE_HEIGHT 600
-#define DEFAULT_FPS_N 0 /* makes it use the default */
-#define DEFAULT_FPS_D 1
-
-#define CAMERABIN_DEFAULT_VF_CAPS "video/x-raw-yuv,format=(fourcc)I420"
-#define CAMERABIN_MAX_VF_WIDTH 848
-#define CAMERABIN_MAX_VF_HEIGHT 848
-
-#define DEFAULT_FLAGS GST_CAMERABIN_FLAG_SOURCE_RESIZE | \
- GST_CAMERABIN_FLAG_VIEWFINDER_SCALE | \
- GST_CAMERABIN_FLAG_VIEWFINDER_COLOR_CONVERSION | \
- GST_CAMERABIN_FLAG_IMAGE_COLOR_CONVERSION | \
- GST_CAMERABIN_FLAG_VIDEO_COLOR_CONVERSION | \
- GST_CAMERABIN_FLAG_AUDIO_CONVERSION
-
-/* Using "bilinear" as default zoom method */
-#define CAMERABIN_DEFAULT_ZOOM_METHOD 1
-
-#define MIN_ZOOM 1.0
-#define MAX_ZOOM 10.0
-#define ZOOM_1X MIN_ZOOM
-
-/* FIXME: this is v4l2camsrc specific */
-#define DEFAULT_V4L2CAMSRC_DRIVER_NAME "omap3cam"
-
-#define DEFAULT_BLOCK_VIEWFINDER FALSE
-#define DEFAULT_READY_FOR_CAPTURE TRUE
-
-/* message names */
-#define PREVIEW_MESSAGE_NAME "preview-image"
-#define IMG_CAPTURED_MESSAGE_NAME "image-captured"
-
-#define CAMERABIN_PROCESSING_INC_UNLOCKED(c) \
- (c)->processing_counter += 1; \
- GST_DEBUG_OBJECT ((c), "Processing counter incremented to: %d", \
- (c)->processing_counter); \
- if ((c)->processing_counter == 1) \
- g_object_notify (G_OBJECT (c), "idle");
-
-#define CAMERABIN_PROCESSING_DEC_UNLOCKED(c) \
- (c)->processing_counter -= 1; \
- GST_DEBUG_OBJECT ((c), "Processing counter decremented to: %d", \
- (c)->processing_counter); \
- g_assert ((c)->processing_counter >= 0); \
- if ((c)->processing_counter == 0) { \
- g_cond_signal ((c)->idle_cond); \
- g_object_notify (G_OBJECT (c), "idle"); \
- }
-
-#define CAMERABIN_PROCESSING_INC(c) \
- g_mutex_lock ((c)->capture_mutex); \
- CAMERABIN_PROCESSING_INC_UNLOCKED ((c)); \
- g_mutex_unlock ((c)->capture_mutex);
-
-#define CAMERABIN_PROCESSING_DEC(c) \
- g_mutex_lock ((c)->capture_mutex); \
- CAMERABIN_PROCESSING_DEC_UNLOCKED ((c)); \
- g_mutex_unlock ((c)->capture_mutex);
-
-#define CAMERABIN_PROCESSING_WAIT_IDLE(c) \
- g_mutex_lock ((c)->capture_mutex); \
- if ((c)->processing_counter > 0) { \
- GST_DEBUG_OBJECT ((c), "Waiting for processing operations to finish %d", \
- (c)->processing_counter); \
- g_cond_wait ((c)->idle_cond, (c)->capture_mutex); \
- GST_DEBUG_OBJECT ((c), "Processing operations finished"); \
- } \
- g_mutex_unlock ((c)->capture_mutex);
-
-/*
- * static helper functions declaration
- */
-
-static void camerabin_setup_src_elements (GstCameraBin * camera);
-
-static gboolean camerabin_create_src_elements (GstCameraBin * camera);
-
-static void camerabin_setup_view_elements (GstCameraBin * camera);
-
-static gboolean camerabin_create_view_elements (GstCameraBin * camera);
-
-static gboolean camerabin_create_elements (GstCameraBin * camera);
-
-static void camerabin_destroy_elements (GstCameraBin * camera);
-
-static void camerabin_dispose_elements (GstCameraBin * camera);
-
-static void gst_camerabin_change_mode (GstCameraBin * camera, gint mode);
-
-static void
-gst_camerabin_set_flags (GstCameraBin * camera, GstCameraBinFlags flags);
-
-static void
-gst_camerabin_change_filename (GstCameraBin * camera, const gchar * name);
-
-static void gst_camerabin_setup_zoom (GstCameraBin * camera);
-
-static GstCaps *gst_camerabin_get_allowed_input_caps (GstCameraBin * camera);
-
-static void gst_camerabin_rewrite_tags (GstCameraBin * camera);
-
-static void
-gst_camerabin_set_capsfilter_caps (GstCameraBin * camera, GstCaps * new_caps);
-
-static void gst_camerabin_start_image_capture (GstCameraBin * camera);
-
-static void gst_camerabin_start_video_recording (GstCameraBin * camera);
-
-static void
-camerabin_pad_blocked (GstPad * pad, gboolean blocked, gpointer user_data);
-
-static gboolean
-gst_camerabin_have_img_buffer (GstPad * pad, GstMiniObject * obj,
- gpointer u_data);
-static gboolean
-gst_camerabin_have_vid_buffer (GstPad * pad, GstBuffer * buffer,
- gpointer u_data);
-static gboolean
-gst_camerabin_have_queue_data (GstPad * pad, GstMiniObject * mini_obj,
- gpointer u_data);
-static gboolean
-gst_camerabin_have_src_buffer (GstPad * pad, GstBuffer * buffer,
- gpointer u_data);
-
-static void gst_camerabin_reset_to_view_finder (GstCameraBin * camera);
-
-static void gst_camerabin_do_stop (GstCameraBin * camera);
-
-static void
-gst_camerabin_set_allowed_framerate (GstCameraBin * camera,
- GstCaps * filter_caps);
-
-static guint32 get_srcpad_current_format (GstElement * element);
-
-static const GValue *gst_camerabin_find_better_framerate (GstCameraBin * camera,
- GstStructure * st, const GValue * orig_framerate);
-
-static void
-gst_camerabin_update_aspect_filter (GstCameraBin * camera, GstCaps * new_caps);
-
-static void gst_camerabin_finish_image_capture (GstCameraBin * camera);
-static void gst_camerabin_adapt_image_capture (GstCameraBin * camera,
- GstCaps * new_caps);
-static void gst_camerabin_scene_mode_notify_cb (GObject * video_source,
- GParamSpec * pspec, gpointer user_data);
-static void gst_camerabin_zoom_notify_cb (GObject * video_source,
- GParamSpec * pspec, gpointer user_data);
-static void gst_camerabin_monitor_video_source_properties (GstCameraBin *
- camera);
-static void gst_camerabin_configure_format (GstCameraBin * camera,
- GstCaps * caps);
-static gboolean
-copy_missing_fields (GQuark field_id, const GValue * value, gpointer user_data);
-
-/*
- * GObject callback functions declaration
- */
-
-static void gst_camerabin_dispose (GObject * object);
-
-static void gst_camerabin_finalize (GObject * object);
-
-static void gst_camerabin_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-
-static void gst_camerabin_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-/*
- * GstElement function declarations
- */
-
-static GstStateChangeReturn
-gst_camerabin_change_state (GstElement * element, GstStateChange transition);
-
-static GstClock *gst_camerabin_provide_clock (GstElement * element);
-
-/*
- * GstBin function declarations
- */
-static void
-gst_camerabin_handle_message_func (GstBin * bin, GstMessage * message);
-
-
-/*
- * Action signal function declarations
- */
-
-static void gst_camerabin_capture_start (GstCameraBin * camera);
-
-static void gst_camerabin_capture_stop (GstCameraBin * camera);
-
-static void gst_camerabin_capture_pause (GstCameraBin * camera);
-
-static void
-gst_camerabin_set_image_capture_caps (GstCameraBin * camera, gint width,
- gint height);
-
-static void
-gst_camerabin_set_video_resolution_fps (GstCameraBin * camera, gint width,
- gint height, gint fps_n, gint fps_d);
-static void
-do_set_video_resolution_fps (GstCameraBin * camera, gint width,
- gint height, gint fps_n, gint fps_d);
-
-static void
-gst_camerabin_set_image_resolution (GstCameraBin * camera, gint width,
- gint height);
-
-
-/*
- * GST BOILERPLATE and GObject types
- */
-
-static GType
-gst_camerabin_mode_get_type (void)
-{
- static GType gtype = 0;
-
- if (gtype == 0) {
- static const GEnumValue values[] = {
- {MODE_IMAGE, "Still image capture (default)", "mode-image"},
- {MODE_VIDEO, "Video recording", "mode-video"},
- {0, NULL, NULL}
- };
-
- gtype = g_enum_register_static ("GstCameraBinMode", values);
- }
- return gtype;
-}
-
-
-static gboolean
-gst_camerabin_iface_supported (GstImplementsInterface * iface, GType iface_type)
-{
- GstCameraBin *camera = GST_CAMERABIN (iface);
-
- if (iface_type == GST_TYPE_COLOR_BALANCE) {
- if (camera->src_vid_src) {
- return GST_IS_COLOR_BALANCE (camera->src_vid_src);
- }
- } else if (iface_type == GST_TYPE_TAG_SETTER) {
- /* Note: Tag setter elements aren't
- present when image and video bin in NULL */
- GstElement *setter;
- setter = gst_bin_get_by_interface (GST_BIN (camera), iface_type);
- if (setter) {
- gst_object_unref (setter);
- return TRUE;
- } else {
- return FALSE;
- }
- }
- return FALSE;
-}
-
-static void
-gst_camerabin_interface_init (GstImplementsInterfaceClass * klass)
-{
- /*
- * default virtual functions
- */
- klass->supported = gst_camerabin_iface_supported;
-}
-
-static void
-camerabin_init_interfaces (GType type)
-{
-
- static const GInterfaceInfo camerabin_info = {
- (GInterfaceInitFunc) gst_camerabin_interface_init,
- NULL,
- NULL,
- };
-
- static const GInterfaceInfo camerabin_color_balance_info = {
- (GInterfaceInitFunc) gst_camerabin_color_balance_init,
- NULL,
- NULL,
- };
-
- static const GInterfaceInfo camerabin_tagsetter_info = {
- NULL,
- NULL,
- NULL,
- };
-
- g_type_add_interface_static (type,
- GST_TYPE_IMPLEMENTS_INTERFACE, &camerabin_info);
-
- g_type_add_interface_static (type, GST_TYPE_COLOR_BALANCE,
- &camerabin_color_balance_info);
-
- g_type_add_interface_static (type, GST_TYPE_TAG_SETTER,
- &camerabin_tagsetter_info);
-}
-
-GST_BOILERPLATE_FULL (GstCameraBin, gst_camerabin, GstPipeline,
- GST_TYPE_PIPELINE, camerabin_init_interfaces);
-
-/*
- * static helper functions implementation
- */
-
-/*
- * camerabin_setup_src_elements:
- * @camera: camerabin object
- *
- * This function updates camerabin capsfilters according
- * to fps, resolution and zoom that have been configured
- * to camerabin.
- */
-static void
-camerabin_setup_src_elements (GstCameraBin * camera)
-{
- GstStructure *st;
- GstCaps *new_caps;
- gboolean detect_framerate = FALSE;
-
- /* clear video update status */
- camera->video_capture_caps_update = FALSE;
-
- if (!camera->view_finder_caps) {
- st = gst_structure_from_string (CAMERABIN_DEFAULT_VF_CAPS, NULL);
- } else {
- st = gst_structure_copy (gst_caps_get_structure (camera->view_finder_caps,
- 0));
- }
-
- gst_camerabin_monitor_video_source_properties (camera);
-
- if (camera->app_width > 0 && camera->app_height > 0) {
- gst_structure_set (st,
- "width", G_TYPE_INT, camera->app_width,
- "height", G_TYPE_INT, camera->app_height, NULL);
- }
-
- if (camera->app_fps_n > 0 && camera->app_fps_d > 0) {
- if (camera->night_mode) {
- GST_INFO_OBJECT (camera, "night mode, lowest allowed fps will be forced");
- camera->pre_night_fps_n = camera->app_fps_n;
- camera->pre_night_fps_d = camera->app_fps_d;
- detect_framerate = TRUE;
- } else {
- gst_structure_set (st,
- "framerate", GST_TYPE_FRACTION, camera->app_fps_n,
- camera->app_fps_d, NULL);
- new_caps = gst_caps_new_full (st, NULL);
- }
- } else {
- GST_DEBUG_OBJECT (camera, "no framerate specified");
- detect_framerate = TRUE;
- }
-
- if (detect_framerate) {
- GST_DEBUG_OBJECT (camera, "detecting allowed framerate");
- /* Remove old framerate if any */
- if (gst_structure_has_field (st, "framerate")) {
- gst_structure_remove_field (st, "framerate");
- }
- new_caps = gst_caps_new_full (st, NULL);
-
- /* Set allowed framerate for the resolution */
- gst_camerabin_set_allowed_framerate (camera, new_caps);
- }
-
- /* Set default zoom method */
- if (camera->src_zoom_scale) {
- g_object_set (camera->src_zoom_scale, "method",
- CAMERABIN_DEFAULT_ZOOM_METHOD, NULL);
- }
- /* we create new caps in any way and they take ownership of the structure st */
- gst_caps_replace (&camera->view_finder_caps, new_caps);
- gst_caps_unref (new_caps);
-
- /* Set caps for view finder mode */
- /* This also sets zoom */
- gst_camerabin_set_capsfilter_caps (camera, camera->view_finder_caps);
-}
-
-/*
- * camerabin_create_src_elements:
- * @camera: camerabin object
- *
- * This function creates and links upstream side elements for camerabin.
- * videosrc ! cspconv ! capsfilter ! crop ! scale ! capsfilter ! out-sel !
- *
- * Returns: TRUE, if elements were successfully created, FALSE otherwise
- */
-static gboolean
-camerabin_create_src_elements (GstCameraBin * camera)
-{
- gboolean ret = FALSE;
- GstBin *cbin = GST_BIN (camera);
- gchar *driver_name = NULL;
-
- /* Add application set or default video src element */
- if (!(camera->src_vid_src = gst_camerabin_setup_default_element (cbin,
- camera->app_vid_src, "autovideosrc", DEFAULT_VIDEOSRC))) {
- camera->src_vid_src = NULL;
- goto done;
- } else {
- if (!gst_camerabin_add_element (cbin, camera->src_vid_src))
- goto done;
- }
- if (camera->flags & GST_CAMERABIN_FLAG_SOURCE_COLOR_CONVERSION) {
- if (!gst_camerabin_create_and_add_element (cbin, "ffmpegcolorspace",
- "src-ffmpegcolorspace"))
- goto done;
- }
- if (!(camera->src_filter =
- gst_camerabin_create_and_add_element (cbin, "capsfilter",
- "src-capsfilter")))
- goto done;
- if (camera->flags & GST_CAMERABIN_FLAG_SOURCE_RESIZE) {
- if (!(camera->src_zoom_crop =
- gst_camerabin_create_and_add_element (cbin, "videocrop",
- "src-videocrop")))
- goto done;
- if (!(camera->src_zoom_scale =
- gst_camerabin_create_and_add_element (cbin, "videoscale",
- "src-videoscale")))
- goto done;
- if (!(camera->src_zoom_filter =
- gst_camerabin_create_and_add_element (cbin, "capsfilter",
- "src-resize-capsfilter")))
- goto done;
- }
- if (camera->app_video_filter) {
- if (!gst_camerabin_add_element (cbin, camera->app_video_filter)) {
- goto done;
- }
- }
- if (!(camera->src_out_sel =
- gst_camerabin_create_and_add_element (cbin, "output-selector", NULL)))
- goto done;
-
- /* Set pad-negotiation-mode to active */
- g_object_set (camera->src_out_sel, "pad-negotiation-mode", 2, NULL);
-
- /* Set default "driver-name" for v4l2camsrc if not set */
- /* FIXME: v4l2camsrc specific */
- if (g_object_class_find_property (G_OBJECT_GET_CLASS (camera->src_vid_src),
- "driver-name")) {
- g_object_get (G_OBJECT (camera->src_vid_src), "driver-name",
- &driver_name, NULL);
- if (!driver_name) {
- g_object_set (G_OBJECT (camera->src_vid_src), "driver-name",
- DEFAULT_V4L2CAMSRC_DRIVER_NAME, NULL);
- }
- }
-
- ret = TRUE;
-done:
- return ret;
-}
-
-/*
- * camerabin_setup_view_elements:
- * @camera: camerabin object
- *
- * This function configures properties for view finder sink element.
- */
-static void
-camerabin_setup_view_elements (GstCameraBin * camera)
-{
- GST_DEBUG_OBJECT (camera, "setting view finder properties");
- g_object_set (G_OBJECT (camera->view_in_sel), "select-all", TRUE, NULL);
- /* Set properties for view finder sink */
- /* Find the actual sink if using bin like autovideosink */
- if (GST_IS_BIN (camera->view_sink)) {
- GList *child = NULL, *children = GST_BIN_CHILDREN (camera->view_sink);
- for (child = children; child != NULL; child = g_list_next (child)) {
- GObject *ch = G_OBJECT (child->data);
- if (g_object_class_find_property (G_OBJECT_GET_CLASS (ch), "sync")) {
- g_object_set (G_OBJECT (ch), "sync", FALSE, "qos", FALSE, "async",
- FALSE, NULL);
- }
- }
- } else {
- g_object_set (G_OBJECT (camera->view_sink), "sync", FALSE, "qos", FALSE,
- "async", FALSE, NULL);
- }
-}
-
-/*
- * camerabin_create_view_elements:
- * @camera: camerabin object
- *
- * This function creates and links downstream side elements for camerabin.
- * ! scale ! cspconv ! view finder sink
- *
- * Returns: TRUE, if elements were successfully created, FALSE otherwise
- */
-static gboolean
-camerabin_create_view_elements (GstCameraBin * camera)
-{
- const GList *pads;
- GstBin *cbin = GST_BIN (camera);
-
- if (!(camera->view_in_sel =
- gst_camerabin_create_and_add_element (cbin, "input-selector",
- NULL))) {
- goto error;
- }
-
- /* Look for recently added input selector sink pad, we need to release it later */
- pads = GST_ELEMENT_PADS (camera->view_in_sel);
- while (pads != NULL
- && (GST_PAD_DIRECTION (GST_PAD (pads->data)) != GST_PAD_SINK)) {
- pads = g_list_next (pads);
- }
- camera->pad_view_src = GST_PAD (pads->data);
-
- /* Add videoscale in case we need to downscale frame for view finder */
- if (camera->flags & GST_CAMERABIN_FLAG_VIEWFINDER_SCALE) {
- if (!(camera->view_scale =
- gst_camerabin_create_and_add_element (cbin, "videoscale",
- "vf-videoscale"))) {
- goto error;
- }
-
- /* Add capsfilter to maintain aspect ratio while scaling */
- if (!(camera->aspect_filter =
- gst_camerabin_create_and_add_element (cbin, "capsfilter",
- "vf-scale-capsfilter"))) {
- goto error;
- }
- }
- if (camera->flags & GST_CAMERABIN_FLAG_VIEWFINDER_COLOR_CONVERSION) {
- if (!gst_camerabin_create_and_add_element (cbin, "ffmpegcolorspace",
- "vf-ffmpegcolorspace")) {
- goto error;
- }
- }
-
- if (camera->app_viewfinder_filter) {
- if (!gst_camerabin_add_element (GST_BIN (camera),
- camera->app_viewfinder_filter)) {
- goto error;
- }
- }
-
- /* Add application set or default video sink element */
- if (!(camera->view_sink = gst_camerabin_setup_default_element (cbin,
- camera->app_vf_sink, "autovideosink", DEFAULT_VIDEOSINK))) {
- camera->view_sink = NULL;
- goto error;
- } else {
- if (!gst_camerabin_add_element (cbin, camera->view_sink))
- goto error;
- }
-
- return TRUE;
-error:
- return FALSE;
-}
-
-/*
- * camerabin_create_elements:
- * @camera: camerabin object
- *
- * This function creates and links all elements for camerabin,
- *
- * Returns: TRUE, if elements were successfully created, FALSE otherwise
- */
-static gboolean
-camerabin_create_elements (GstCameraBin * camera)
-{
- gboolean ret = FALSE;
- GstPadLinkReturn link_ret = GST_PAD_LINK_REFUSED;
- GstPad *unconnected_pad;
-
- GST_LOG_OBJECT (camera, "creating elements");
-
- /* Create "src" elements */
- if (!camerabin_create_src_elements (camera)) {
- goto done;
- }
-
- camera->pad_src_img =
- gst_element_get_request_pad (camera->src_out_sel, "src_%u");
-
- gst_pad_add_data_probe (camera->pad_src_img,
- G_CALLBACK (gst_camerabin_have_img_buffer), camera);
-
- /* Add queue leading to image bin */
- camera->img_queue = gst_element_factory_make ("queue", "image-queue");
- if (!gst_camerabin_add_element (GST_BIN (camera), camera->img_queue)) {
- goto done;
- }
-
- /* To avoid deadlock, we won't restrict the image queue size */
- /* FIXME: actually we would like to have some kind of restriction here (size),
- but deadlocks must be handled somehow... */
- g_object_set (G_OBJECT (camera->img_queue), "max-size-buffers", 0,
- "max-size-bytes", 0, "max-size-time", G_GUINT64_CONSTANT (0), NULL);
- g_object_set (camera->img_queue, "silent", TRUE, NULL);
-
- camera->pad_src_queue = gst_element_get_static_pad (camera->img_queue, "src");
-
- gst_pad_add_data_probe (camera->pad_src_queue,
- G_CALLBACK (gst_camerabin_have_queue_data), camera);
-
- /* Add image bin */
- if (!gst_camerabin_add_element (GST_BIN (camera), camera->imgbin)) {
- goto done;
- }
-
- camera->pad_src_view =
- gst_element_get_request_pad (camera->src_out_sel, "src_%u");
-
- /* Create view finder elements */
- if (!camerabin_create_view_elements (camera)) {
- GST_WARNING_OBJECT (camera, "creating view finder elements failed");
- goto done;
- }
-
- /* Set view finder active as default */
- g_object_set (G_OBJECT (camera->src_out_sel), "active-pad",
- camera->pad_src_view, NULL);
-
- /* Add video bin */
- camera->pad_src_vid =
- gst_element_get_request_pad (camera->src_out_sel, "src_%u");
- if (!gst_camerabin_add_element (GST_BIN (camera), camera->vidbin)) {
- goto done;
- }
- gst_pad_add_buffer_probe (camera->pad_src_vid,
- G_CALLBACK (gst_camerabin_have_vid_buffer), camera);
-
- /* Link video bin ! view finder */
- unconnected_pad = gst_bin_find_unlinked_pad (GST_BIN (camera), GST_PAD_SRC);
- camera->pad_view_vid =
- gst_element_get_request_pad (camera->view_in_sel, "sink_%u");
- link_ret =
- gst_pad_link_full (unconnected_pad, camera->pad_view_vid,
- GST_PAD_LINK_CHECK_CAPS);
- gst_object_unref (unconnected_pad);
- if (GST_PAD_LINK_FAILED (link_ret)) {
- GST_ELEMENT_ERROR (camera, CORE, NEGOTIATION, (NULL),
- ("linking video bin and view finder failed"));
- goto done;
- }
-
- ret = TRUE;
-
-done:
-
- if (FALSE == ret)
- camerabin_destroy_elements (camera);
-
- return ret;
-}
-
-/*
- * camerabin_destroy_elements:
- * @camera: camerabin object
- *
- * This function removes all elements from camerabin.
- */
-static void
-camerabin_destroy_elements (GstCameraBin * camera)
-{
- GST_DEBUG_OBJECT (camera, "destroying elements");
-
- /* Release request pads */
- if (camera->pad_view_vid) {
- gst_element_release_request_pad (camera->view_in_sel, camera->pad_view_vid);
- gst_object_unref (camera->pad_view_vid);
- camera->pad_view_vid = NULL;
- }
- if (camera->pad_src_vid) {
- gst_element_release_request_pad (camera->src_out_sel, camera->pad_src_vid);
- gst_object_unref (camera->pad_src_vid);
- camera->pad_src_vid = NULL;
- }
- if (camera->pad_src_img) {
- gst_element_release_request_pad (camera->src_out_sel, camera->pad_src_img);
- gst_object_unref (camera->pad_src_img);
- camera->pad_src_img = NULL;
- }
- if (camera->pad_view_src) {
- gst_element_release_request_pad (camera->view_in_sel, camera->pad_view_src);
- /* don't unref, we have not requested it */
- camera->pad_view_src = NULL;
- }
- if (camera->pad_src_view) {
- gst_element_release_request_pad (camera->src_out_sel, camera->pad_src_view);
- gst_object_unref (camera->pad_src_view);
- camera->pad_src_view = NULL;
- }
-
- if (camera->pad_src_queue) {
- gst_object_unref (camera->pad_src_queue);
- camera->pad_src_queue = NULL;
- }
-
- /* view finder elements */
- camera->view_in_sel = NULL;
- camera->view_scale = NULL;
- camera->aspect_filter = NULL;
- camera->view_sink = NULL;
-
- /* source elements */
- camera->src_vid_src = NULL;
- camera->src_filter = NULL;
- camera->src_zoom_crop = NULL;
- camera->src_zoom_scale = NULL;
- camera->src_zoom_filter = NULL;
- camera->src_out_sel = NULL;
-
- camera->active_bin = NULL;
-
- /* Reset caps data as the elements might be completely different next
- * time we 'start' */
- if (camera->view_finder_caps) {
- gst_caps_replace (&camera->view_finder_caps, NULL);
- }
- gst_caps_replace (&camera->allowed_caps, NULL);
- camera->fps_n = camera->fps_d = 0;
- camera->width = camera->height = 0;
-
- /* Remove elements */
- gst_camerabin_remove_elements_from_bin (GST_BIN (camera));
-}
-
-/*
- * camerabin_dispose_elements:
- * @camera: camerabin object
- *
- * This function releases all allocated camerabin resources.
- */
-static void
-camerabin_dispose_elements (GstCameraBin * camera)
-{
- GST_INFO ("cleaning");
-
- if (camera->capture_mutex) {
- g_mutex_free (camera->capture_mutex);
- camera->capture_mutex = NULL;
- }
- if (camera->cond) {
- g_cond_free (camera->cond);
- camera->cond = NULL;
- }
- if (camera->idle_cond) {
- g_cond_free (camera->idle_cond);
- camera->idle_cond = NULL;
- }
- if (camera->filename) {
- g_string_free (camera->filename, TRUE);
- camera->filename = NULL;
- }
- /* Unref application set elements */
- if (camera->app_vf_sink) {
- gst_object_unref (camera->app_vf_sink);
- camera->app_vf_sink = NULL;
- }
- if (camera->app_vid_src) {
- gst_object_unref (camera->app_vid_src);
- camera->app_vid_src = NULL;
- }
-
- if (camera->app_video_filter) {
- gst_object_unref (camera->app_video_filter);
- camera->app_video_filter = NULL;
- }
-
- if (camera->app_viewfinder_filter) {
- gst_object_unref (camera->app_viewfinder_filter);
- camera->app_viewfinder_filter = NULL;
- }
-
- if (camera->app_preview_source_filter) {
- gst_object_unref (camera->app_preview_source_filter);
- camera->app_preview_source_filter = NULL;
- }
-
- if (camera->app_video_preview_source_filter) {
- gst_object_unref (camera->app_video_preview_source_filter);
- camera->app_video_preview_source_filter = NULL;
- }
-
- /* Free caps */
- gst_caps_replace (&camera->image_capture_caps, NULL);
- gst_caps_replace (&camera->view_finder_caps, NULL);
- gst_caps_replace (&camera->allowed_caps, NULL);
- gst_caps_replace (&camera->preview_caps, NULL);
- gst_caps_replace (&camera->video_preview_caps, NULL);
- gst_buffer_replace (&camera->video_preview_buffer, NULL);
-
- if (camera->event_tags) {
- gst_tag_list_free (camera->event_tags);
- camera->event_tags = NULL;
- }
-}
-
-/*
- * gst_camerabin_image_capture_continue:
- * @camera: camerabin object
- * @filename: filename of the finished image
- *
- * Notify application that image has been saved with a signal.
- *
- * Returns TRUE if another image should be captured, FALSE otherwise.
- */
-static gboolean
-gst_camerabin_image_capture_continue (GstCameraBin * camera,
- const gchar * filename)
-{
- gboolean cont = FALSE;
-
- GST_DEBUG_OBJECT (camera, "emitting img_done signal, filename: %s", filename);
- g_signal_emit (G_OBJECT (camera), camerabin_signals[IMG_DONE_SIGNAL], 0,
- filename, &cont);
-
- /* If the app wants to continue make sure new filename has been set */
- if (cont && g_str_equal (camera->filename->str, "")) {
- GST_ELEMENT_ERROR (camera, RESOURCE, NOT_FOUND,
- ("cannot continue capture, no filename has been set"), (NULL));
- cont = FALSE;
- }
-
- return cont;
-}
-
-/*
- * gst_camerabin_change_mode:
- * @camera: camerabin object
- * @mode: image or video mode
- *
- * Change camerabin mode between image and video capture.
- * Changing mode will stop ongoing capture.
- */
-static void
-gst_camerabin_change_mode (GstCameraBin * camera, gint mode)
-{
- if (camera->mode != mode || !camera->active_bin) {
- GstState state, pending_state;
-
- GST_DEBUG_OBJECT (camera, "setting mode: %d (old_mode=%d)",
- mode, camera->mode);
- /* Interrupt ongoing capture */
- gst_camerabin_do_stop (camera);
-
- /* reset night-mode stored values */
- camera->pre_night_fps_n = 0;
- camera->pre_night_fps_d = 1;
-
- camera->mode = mode;
- gst_element_get_state (GST_ELEMENT (camera), &state, &pending_state, 0);
- if (state == GST_STATE_PAUSED || state == GST_STATE_PLAYING ||
- pending_state == GST_STATE_PAUSED
- || pending_state == GST_STATE_PLAYING) {
- if (camera->active_bin) {
- GST_DEBUG_OBJECT (camera, "stopping active bin");
- gst_element_set_state (camera->active_bin, GST_STATE_READY);
- }
- if (camera->mode == MODE_IMAGE) {
- GstStateChangeReturn state_ret;
-
- camera->active_bin = camera->imgbin;
- state_ret =
- gst_element_set_state (camera->active_bin, GST_STATE_PAUSED);
-
- if (state_ret == GST_STATE_CHANGE_FAILURE) {
- GST_WARNING_OBJECT (camera, "state change failed");
- gst_element_set_state (camera->active_bin, GST_STATE_NULL);
- camera->active_bin = NULL;
- }
- } else if (camera->mode == MODE_VIDEO) {
- camera->active_bin = camera->vidbin;
- }
- gst_camerabin_reset_to_view_finder (camera);
- } else if (camera->mode == MODE_IMAGE) {
- /* Prepare needed elements for image processing */
- gst_camerabin_image_prepare_elements (GST_CAMERABIN_IMAGE
- (camera->imgbin));
- }
- }
-}
-
-/*
- * gst_camerabin_set_flags:
- * @camera: camerabin object
- * @flags: flags for camerabin, videobin and imagebin
- *
- * Change camerabin capture flags.
- */
-static void
-gst_camerabin_set_flags (GstCameraBin * camera, GstCameraBinFlags flags)
-{
- g_return_if_fail (camera != NULL);
-
- GST_DEBUG_OBJECT (camera, "setting flags: %d", flags);
-
- GST_OBJECT_LOCK (camera);
- camera->flags = flags;
- GST_OBJECT_UNLOCK (camera);
-
- gst_camerabin_video_set_flags (GST_CAMERABIN_VIDEO (camera->vidbin), flags);
- gst_camerabin_image_set_flags (GST_CAMERABIN_IMAGE (camera->imgbin), flags);
-}
-
-/*
- * gst_camerabin_change_filename:
- * @camera: camerabin object
- * @name: new filename for capture
- *
- * Change filename for image or video capture.
- */
-static void
-gst_camerabin_change_filename (GstCameraBin * camera, const gchar * name)
-{
- if (name == NULL)
- name = "";
-
- if (0 != strcmp (camera->filename->str, name)) {
- GST_DEBUG_OBJECT (camera, "changing filename from '%s' to '%s'",
- camera->filename->str, name);
- g_string_assign (camera->filename, name);
- }
-}
-
-static gboolean
-gst_camerabin_set_videosrc_zoom (GstCameraBin * camera, gfloat zoom)
-{
- gboolean ret = FALSE;
-
- /* Try with photography interface zooming */
- if (GST_IS_ELEMENT (camera->src_vid_src) &&
- gst_element_implements_interface (camera->src_vid_src,
- GST_TYPE_PHOTOGRAPHY)) {
- gst_photography_set_zoom (GST_PHOTOGRAPHY (camera->src_vid_src), zoom);
- ret = TRUE;
- }
- return ret;
-}
-
-
-static gboolean
-gst_camerabin_set_element_zoom (GstCameraBin * camera, gfloat zoom)
-{
- gint w2_crop = 0, h2_crop = 0;
- GstPad *pad_zoom_sink = NULL;
- gboolean ret = FALSE;
- gint left = camera->base_crop_left;
- gint right = camera->base_crop_right;
- gint top = camera->base_crop_top;
- gint bottom = camera->base_crop_bottom;
-
- if (camera->src_zoom_crop) {
- /* Update capsfilters to apply the zoom */
- GST_INFO_OBJECT (camera, "zoom: %f, orig size: %dx%d", zoom,
- camera->width, camera->height);
-
- if (zoom != ZOOM_1X) {
- w2_crop = (camera->width - (camera->width * ZOOM_1X / zoom)) / 2;
- h2_crop = (camera->height - (camera->height * ZOOM_1X / zoom)) / 2;
-
- left += w2_crop;
- right += w2_crop;
- top += h2_crop;
- bottom += h2_crop;
-
- /* force number of pixels cropped from left to be even, to avoid slow code
- * path on videoscale */
- left &= 0xFFFE;
- }
-
- pad_zoom_sink = gst_element_get_static_pad (camera->src_zoom_crop, "sink");
-
- GST_INFO_OBJECT (camera,
- "sw cropping: left:%d, right:%d, top:%d, bottom:%d", left, right, top,
- bottom);
-
- GST_PAD_STREAM_LOCK (pad_zoom_sink);
- g_object_set (camera->src_zoom_crop, "left", left, "right", right, "top",
- top, "bottom", bottom, NULL);
- GST_PAD_STREAM_UNLOCK (pad_zoom_sink);
- gst_object_unref (pad_zoom_sink);
- ret = TRUE;
- }
- return ret;
-}
-
-/*
- * gst_camerabin_setup_zoom:
- * @camera: camerabin object
- *
- * Apply zoom configured to camerabin to capture.
- */
-static void
-gst_camerabin_setup_zoom (GstCameraBin * camera)
-{
- gfloat zoom;
-
- g_return_if_fail (camera != NULL);
-
- zoom = camera->zoom;
-
- g_return_if_fail (zoom);
-
- GST_INFO_OBJECT (camera, "setting zoom %f", zoom);
-
- if (gst_camerabin_set_videosrc_zoom (camera, zoom)) {
- gst_camerabin_set_element_zoom (camera, ZOOM_1X);
- GST_INFO_OBJECT (camera, "zoom set using videosrc");
- } else if (gst_camerabin_set_element_zoom (camera, zoom)) {
- GST_INFO_OBJECT (camera, "zoom set using gst elements");
- } else {
- GST_INFO_OBJECT (camera, "setting zoom failed");
- }
-}
-
-/*
- * gst_camerabin_get_allowed_input_caps:
- * @camera: camerabin object
- *
- * Retrieve caps from videosrc describing formats it supports
- *
- * Returns: caps object from videosrc
- */
-static GstCaps *
-gst_camerabin_get_allowed_input_caps (GstCameraBin * camera)
-{
- GstCaps *caps = NULL;
- GstPad *pad = NULL, *peer_pad = NULL;
- GstState state;
- GstElement *videosrc;
-
- g_return_val_if_fail (camera != NULL, NULL);
-
- videosrc = camera->src_vid_src ? camera->src_vid_src : camera->app_vid_src;
-
- if (!videosrc) {
- GST_WARNING_OBJECT (camera, "no videosrc, can't get allowed caps");
- goto failed;
- }
-
- if (camera->allowed_caps) {
- GST_DEBUG_OBJECT (camera, "returning cached caps");
- goto done;
- }
-
- pad = gst_element_get_static_pad (videosrc, "src");
-
- if (!pad) {
- GST_WARNING_OBJECT (camera, "no srcpad in videosrc");
- goto failed;
- }
-
- state = GST_STATE (videosrc);
-
- /* Make this function work also in NULL state */
- if (state == GST_STATE_NULL) {
- GST_DEBUG_OBJECT (camera, "setting videosrc to ready temporarily");
- peer_pad = gst_pad_get_peer (pad);
- if (peer_pad) {
- gst_pad_unlink (pad, peer_pad);
- }
- /* Set videosrc to READY to open video device */
- gst_element_set_locked_state (videosrc, TRUE);
- gst_element_set_state (videosrc, GST_STATE_READY);
- }
-
- camera->allowed_caps = gst_pad_get_caps (pad);
-
- /* Restore state and re-link if necessary */
- if (state == GST_STATE_NULL) {
- GST_DEBUG_OBJECT (camera, "restoring videosrc state %d", state);
- /* Reset videosrc to NULL state, some drivers seem to need this */
- gst_element_set_state (videosrc, GST_STATE_NULL);
- if (peer_pad) {
- gst_pad_link_full (pad, peer_pad, GST_PAD_LINK_CHECK_CAPS);
- gst_object_unref (peer_pad);
- }
- gst_element_set_locked_state (videosrc, FALSE);
- }
-
- gst_object_unref (pad);
-
-done:
- if (camera->allowed_caps) {
- caps = gst_caps_copy (camera->allowed_caps);
- }
- GST_DEBUG_OBJECT (camera, "allowed caps:%" GST_PTR_FORMAT, caps);
-failed:
- return caps;
-}
-
-/*
- * gst_camerabin_send_img_queue_event:
- * @camera: camerabin object
- * @event: event to be sent
- *
- * Send the given event to image queue.
- */
-static void
-gst_camerabin_send_img_queue_event (GstCameraBin * camera, GstEvent * event)
-{
- GstPad *queue_sink;
-
- g_return_if_fail (camera != NULL);
- g_return_if_fail (event != NULL);
-
- queue_sink = gst_element_get_static_pad (camera->img_queue, "sink");
- gst_pad_send_event (queue_sink, event);
- gst_object_unref (queue_sink);
-}
-
-/*
- * gst_camerabin_send_img_queue_custom_event:
- * @camera: camerabin object
- * @ev_struct: event structure to be sent
- *
- * Generate and send a custom event to image queue.
- */
-static void
-gst_camerabin_send_img_queue_custom_event (GstCameraBin * camera,
- GstStructure * ev_struct)
-{
- GstEvent *event;
-
- g_return_if_fail (camera != NULL);
- g_return_if_fail (ev_struct != NULL);
-
- event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM, ev_struct);
- gst_camerabin_send_img_queue_event (camera, event);
-}
-
-/*
- * gst_camerabin_rewrite_tags_to_bin:
- * @bin: bin holding tag setter elements
- * @list: tag list to be written
- *
- * This function looks for certain tag setters from given bin
- * and REPLACES ALL setter tags with given tag list
- *
- */
-static void
-gst_camerabin_rewrite_tags_to_bin (GstBin * bin, const GstTagList * list)
-{
- GstElement *setter;
- GstIterator *iter;
- GstIteratorResult res = GST_ITERATOR_OK;
- gpointer data;
-
- iter = gst_bin_iterate_all_by_interface (bin, GST_TYPE_TAG_SETTER);
-
- while (res == GST_ITERATOR_OK || res == GST_ITERATOR_RESYNC) {
- res = gst_iterator_next (iter, &data);
- switch (res) {
- case GST_ITERATOR_DONE:
- break;
- case GST_ITERATOR_RESYNC:
- gst_iterator_resync (iter);
- break;
- case GST_ITERATOR_ERROR:
- GST_WARNING ("error iterating tag setters");
- break;
- case GST_ITERATOR_OK:
- setter = GST_ELEMENT (data);
- GST_LOG ("iterating tag setters: %" GST_PTR_FORMAT, setter);
- GST_DEBUG ("replacement tags %" GST_PTR_FORMAT, list);
- gst_tag_setter_merge_tags (GST_TAG_SETTER (setter), list,
- GST_TAG_MERGE_REPLACE_ALL);
- gst_object_unref (setter);
- break;
- default:
- break;
- }
- }
-
- gst_iterator_free (iter);
-}
-
-/*
- * gst_camerabin_get_internal_tags:
- * @camera: the camera bin element
- *
- * Returns tag list containing metadata from camerabin
- * and it's elements
- */
-static GstTagList *
-gst_camerabin_get_internal_tags (GstCameraBin * camera)
-{
- GstTagList *list = gst_tag_list_new ();
- GstColorBalance *balance = NULL;
- const GList *controls = NULL, *item;
- GstColorBalanceChannel *channel;
- gint min_value, max_value, mid_value, cur_value;
-
- if (camera->active_bin == camera->vidbin) {
- /* FIXME: check if internal video tag setting is needed */
- goto done;
- }
-
- gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
- GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO, (gdouble) camera->zoom, NULL);
-
- if (gst_element_implements_interface (GST_ELEMENT (camera),
- GST_TYPE_COLOR_BALANCE)) {
- balance = GST_COLOR_BALANCE (camera);
- }
-
- if (balance) {
- controls = gst_color_balance_list_channels (balance);
- }
- for (item = controls; item; item = g_list_next (item)) {
- channel = item->data;
- min_value = channel->min_value;
- max_value = channel->max_value;
- /* the default value would probably better */
- mid_value = min_value + ((max_value - min_value) / 2);
- cur_value = gst_color_balance_get_value (balance, channel);
-
- if (!g_ascii_strcasecmp (channel->label, "brightness")) {
- /* The value of brightness. The unit is the APEX value (Additive System of Photographic Exposure).
- * Ordinarily it is given in the range of -99.99 to 99.99. Note that
- * if the numerator of the recorded value is 0xFFFFFFFF, Unknown shall be indicated.
- *
- * BrightnessValue (Bv) = log2 ( B/NK )
- * Note that: B:cd/cm² (candela per square centimeter), N,K: constant
- *
- * http://johnlind.tripod.com/science/scienceexposure.html
- *
- */
-/*
- gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
- "capture-brightness", cur_value, 1, NULL);
-*/
- } else if (!g_ascii_strcasecmp (channel->label, "contrast")) {
- /* 0 = Normal, 1 = Soft, 2 = Hard */
-
- gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
- GST_TAG_CAPTURING_CONTRAST,
- (cur_value == mid_value) ? "normal" : ((cur_value < mid_value)
- ? "soft" : "hard"), NULL);
- } else if (!g_ascii_strcasecmp (channel->label, "gain")) {
- /* 0 = Normal, 1 = Low Up, 2 = High Up, 3 = Low Down, 4 = Hight Down */
- gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
- GST_TAG_CAPTURING_GAIN_ADJUSTMENT,
- (cur_value == mid_value) ? "normal" : ((cur_value <
- mid_value) ? "low-gain-up" : "low-gain-down"), NULL);
- } else if (!g_ascii_strcasecmp (channel->label, "saturation")) {
- /* 0 = Normal, 1 = Low, 2 = High */
- gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
- GST_TAG_CAPTURING_SATURATION,
- (cur_value == mid_value) ? "normal" : ((cur_value < mid_value)
- ? "low-saturation" : "high-saturation"), NULL);
- }
- }
-
-done:
-
- return list;
-}
-
-/*
- * gst_camerabin_rewrite_tags:
- * @camera: the camera bin element
- *
- * Merges application set tags to camerabin internal tags,
- * and writes them using image or video bin tag setters.
- */
-static void
-gst_camerabin_rewrite_tags (GstCameraBin * camera)
-{
- const GstTagList *app_tag_list = NULL;
- GstTagList *list = NULL;
-
- /* Get application set tags */
- app_tag_list = gst_tag_setter_get_tag_list (GST_TAG_SETTER (camera));
-
- /* Get tags from camerabin and it's elements */
- list = gst_camerabin_get_internal_tags (camera);
-
- if (app_tag_list) {
- gst_tag_list_insert (list, app_tag_list, GST_TAG_MERGE_REPLACE);
- }
-
- /* Write tags */
- if (camera->active_bin == camera->vidbin) {
- gst_camerabin_rewrite_tags_to_bin (GST_BIN (camera->active_bin), list);
- } else {
- /* Image tags need to be sent as a serialized event into image queue */
- GstEvent *tagevent = gst_event_new_tag (gst_tag_list_copy (list));
- gst_camerabin_send_img_queue_event (camera, tagevent);
- }
-
- gst_tag_list_free (list);
-}
-
-/*
- * gst_camerabin_set_capsfilter_caps:
- * @camera: camerabin object
- * @new_caps: pointer to caps object to set
- *
- * Set given caps to camerabin capsfilters.
- */
-static void
-gst_camerabin_set_capsfilter_caps (GstCameraBin * camera, GstCaps * new_caps)
-{
- GST_INFO_OBJECT (camera, "new_caps:%" GST_PTR_FORMAT, new_caps);
-
- gst_camerabin_configure_format (camera, new_caps);
-
- /* Update zoom */
- gst_camerabin_setup_zoom (camera);
-
- /* Update capsfilters */
- g_object_set (G_OBJECT (camera->src_filter), "caps", new_caps, NULL);
- if (camera->src_zoom_filter)
- g_object_set (G_OBJECT (camera->src_zoom_filter), "caps", new_caps, NULL);
- gst_camerabin_update_aspect_filter (camera, new_caps);
- GST_INFO_OBJECT (camera, "udpated");
-}
-
-/*
- * img_capture_prepared:
- * @data: camerabin object
- * @caps: caps describing the prepared image format
- *
- * Callback which is called after image capture has been prepared.
- */
-static void
-img_capture_prepared (gpointer data, GstCaps * caps)
-{
- GstCameraBin *camera = GST_CAMERABIN (data);
-
- GST_INFO_OBJECT (camera, "image capture prepared");
-
- /* It is possible we are about to get something else that we requested */
- if (!gst_caps_is_equal (camera->image_capture_caps, caps)) {
- gst_camerabin_adapt_image_capture (camera, caps);
- } else {
- gst_camerabin_set_capsfilter_caps (camera, camera->image_capture_caps);
- }
-
- g_object_set (G_OBJECT (camera->src_out_sel), "resend-latest", FALSE,
- "active-pad", camera->pad_src_img, NULL);
-}
-
-/*
- * gst_camerabin_start_image_capture:
- * @camera: camerabin object
- *
- * Initiates image capture.
- */
-static void
-gst_camerabin_start_image_capture (GstCameraBin * camera)
-{
- gboolean wait_for_prepare = FALSE, ret = FALSE;
-
- GST_INFO_OBJECT (camera, "starting image capture");
-
- if (GST_IS_ELEMENT (camera->src_vid_src) &&
- gst_element_implements_interface (camera->src_vid_src,
- GST_TYPE_PHOTOGRAPHY)) {
- /* Start image capture preparations using photography iface */
- wait_for_prepare = TRUE;
- g_mutex_lock (camera->capture_mutex);
-
- /* Enable still image capture mode in v4l2camsrc */
- if (g_object_class_find_property (G_OBJECT_GET_CLASS (camera->src_vid_src),
- "capture-mode")) {
- g_object_set (G_OBJECT (camera->src_vid_src), "capture-mode", 1, NULL);
- }
-
- if (!camera->image_capture_caps || camera->image_capture_caps_update) {
- if (camera->image_capture_width && camera->image_capture_height) {
- /* Resolution is set, but it isn't in use yet */
- gst_camerabin_set_image_capture_caps (camera,
- camera->image_capture_width, camera->image_capture_height);
- } else {
- /* Capture resolution not set. Use viewfinder resolution */
- camera->image_capture_caps = gst_caps_copy (camera->view_finder_caps);
- camera->image_capture_caps_update = FALSE;
- }
- }
-
- /* Start preparations for image capture */
- GST_DEBUG_OBJECT (camera, "prepare image capture caps %" GST_PTR_FORMAT,
- camera->image_capture_caps);
- ret =
- gst_photography_prepare_for_capture (GST_PHOTOGRAPHY
- (camera->src_vid_src), (GstPhotoCapturePrepared) img_capture_prepared,
- camera->image_capture_caps, camera);
- camera->capturing = TRUE;
- g_mutex_unlock (camera->capture_mutex);
- }
-
- if (!wait_for_prepare) {
- g_mutex_lock (camera->capture_mutex);
- g_object_set (G_OBJECT (camera->src_out_sel), "resend-latest", TRUE,
- "active-pad", camera->pad_src_img, NULL);
- camera->capturing = TRUE;
- ret = TRUE;
- g_mutex_unlock (camera->capture_mutex);
- }
-
- if (!ret) {
- CAMERABIN_PROCESSING_DEC_UNLOCKED (camera);
- GST_WARNING_OBJECT (camera, "starting image capture failed");
- }
-}
-
- /*
- * FIXME ideally a caps renegotiation is better here
- */
-static void
-reset_video_capture_caps (GstCameraBin * camera)
-{
- GstState state, pending;
- GstPad *activepad = NULL;
-
- GST_INFO_OBJECT (camera, "switching resolution to %dx%d and fps to %d/%d",
- camera->width, camera->height, camera->fps_n, camera->fps_d);
-
- /* Interrupt ongoing capture */
- gst_camerabin_do_stop (camera);
-
- /* prevent image captures from being lost */
- CAMERABIN_PROCESSING_WAIT_IDLE (camera);
-
- gst_element_get_state (GST_ELEMENT (camera), &state, &pending, 0);
- if (state == GST_STATE_PAUSED || state == GST_STATE_PLAYING) {
- GST_INFO_OBJECT (camera,
- "changing to READY to initialize videosrc with new format");
- g_object_get (G_OBJECT (camera->src_out_sel), "active-pad", &activepad,
- NULL);
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_READY);
- }
- if (pending != GST_STATE_VOID_PENDING) {
- GST_LOG_OBJECT (camera, "restoring pending state: %s",
- gst_element_state_get_name (pending));
- state = pending;
- }
-
- /* Re-set the active pad since switching camerabin to READY state clears this
- * setting in output-selector */
- if (activepad) {
- GST_INFO_OBJECT (camera, "re-setting active pad in output-selector");
-
- g_object_set (G_OBJECT (camera->src_out_sel), "active-pad", activepad,
- NULL);
- }
-
- gst_element_set_state (GST_ELEMENT (camera), state);
-}
-
-/*
- * gst_camerabin_start_video_recording:
- * @camera: camerabin object
- *
- * Initiates video recording.
- */
-static void
-gst_camerabin_start_video_recording (GstCameraBin * camera)
-{
- GstStateChangeReturn state_ret;
- GstCameraBinVideo *vidbin = (GstCameraBinVideo *) camera->vidbin;
- /* FIXME: how to ensure resolution and fps is supported by CPU?
- * use a queue overrun signal?
- */
- GST_INFO_OBJECT (camera, "starting video capture");
-
- /* check if need to update video capture caps */
- if (camera->video_capture_caps_update) {
- reset_video_capture_caps (camera);
- }
-
- gst_camerabin_rewrite_tags (camera);
-
- /* Pause the pipeline in order to distribute new clock in paused_to_playing */
- /* Audio source needs to go to null to reset the ringbuffer */
- if (vidbin->aud_src)
- gst_element_set_state (vidbin->aud_src, GST_STATE_NULL);
- state_ret = gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PAUSED);
-
- if (state_ret != GST_STATE_CHANGE_FAILURE) {
- GstClock *clock = gst_element_get_clock (GST_ELEMENT (camera));
-
- g_mutex_lock (camera->capture_mutex);
- camera->capturing = TRUE;
- g_mutex_unlock (camera->capture_mutex);
- gst_element_set_locked_state (camera->vidbin, FALSE);
- /* ensure elements activated before feeding data into it */
- state_ret = gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PAUSED);
- g_object_set (G_OBJECT (camera->src_out_sel), "resend-latest", FALSE,
- "active-pad", camera->pad_src_vid, NULL);
-
- /* Enable video mode in v4l2camsrc */
- if (g_object_class_find_property (G_OBJECT_GET_CLASS (camera->src_vid_src),
- "capture-mode")) {
- g_object_set (G_OBJECT (camera->src_vid_src), "capture-mode", 2, NULL);
- }
-
- /* Clock might be distributed as NULL to audiosrc, messing timestamping */
- if (vidbin->aud_src)
- gst_element_set_clock (vidbin->aud_src, clock);
- gst_object_unref (clock);
-
- /* videobin will not go to playing if file is not writable */
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_ELEMENT_ERROR (camera, CORE, STATE_CHANGE,
- ("Setting videobin to PLAYING failed"), (NULL));
- gst_element_set_state (camera->vidbin, GST_STATE_NULL);
- gst_element_set_locked_state (camera->vidbin, TRUE);
- g_mutex_lock (camera->capture_mutex);
- camera->capturing = FALSE;
- g_mutex_unlock (camera->capture_mutex);
- gst_camerabin_reset_to_view_finder (camera);
- } else {
- gst_element_set_locked_state (camera->vidbin, TRUE);
- }
- } else {
- GST_WARNING_OBJECT (camera, "videobin state change failed");
- gst_element_set_state (camera->vidbin, GST_STATE_NULL);
- gst_camerabin_reset_to_view_finder (camera);
-
- CAMERABIN_PROCESSING_DEC (camera);
- }
-}
-
-/*
- * gst_camerabin_send_video_eos:
- * @camera: camerabin object
- *
- * Generate and send eos event to video bin in order to
- * finish recording properly.
- */
-static void
-gst_camerabin_send_video_eos (GstCameraBin * camera)
-{
- GstPad *videopad;
-
- g_return_if_fail (camera != NULL);
-
- if (!camera->eos_handled) {
- /* Send eos event to video bin */
- GST_INFO_OBJECT (camera, "sending eos to videobin");
- videopad = gst_element_get_static_pad (camera->vidbin, "sink");
- gst_pad_send_event (videopad, gst_event_new_eos ());
- gst_object_unref (videopad);
- /* Block viewfinder after capturing if requested by application */
- GST_OBJECT_LOCK (camera);
- if (camera->block_viewfinder_trigger) {
- gst_pad_set_blocked_async (camera->pad_src_view, TRUE,
- (GstPadBlockCallback) camerabin_pad_blocked, camera);
- }
- GST_OBJECT_UNLOCK (camera);
- camera->eos_handled = TRUE;
- } else {
- GST_INFO_OBJECT (camera, "dropping duplicate EOS");
- }
-}
-
-/*
- * camerabin_pad_blocked:
- * @pad: pad to block/unblock
- * @blocked: TRUE to block, FALSE to unblock
- * @u_data: camera bin object
- *
- * Callback function for blocking a pad.
- */
-static void
-camerabin_pad_blocked (GstPad * pad, gboolean blocked, gpointer user_data)
-{
- GstCameraBin *camera;
-
- camera = (GstCameraBin *) user_data;
-
- GST_DEBUG_OBJECT (camera, "%s %s:%s",
- blocked ? "blocking" : "unblocking", GST_DEBUG_PAD_NAME (pad));
-}
-
-/*
- * gst_camerabin_send_preview:
- * @camera: camerabin object
- * @buffer: received buffer
- *
- * Convert given buffer to desired preview format and send is as a #GstMessage
- * to application.
- *
- * Returns: TRUE always
- */
-static gboolean
-gst_camerabin_send_preview (GstCameraBin * camera, GstBuffer * buffer)
-{
- GstCameraBinPreviewPipelineData *data;
- GstBuffer *prev = NULL;
- GstStructure *s;
- GstMessage *msg;
- gboolean ret = FALSE;
-
- GST_DEBUG_OBJECT (camera, "creating preview");
-
- data = (camera->mode == MODE_IMAGE) ?
- camera->preview_pipeline : camera->video_preview_pipeline;
- prev = gst_camerabin_preview_convert (data, buffer);
-
- GST_DEBUG_OBJECT (camera, "preview created: %p", prev);
-
- if (prev) {
- s = gst_structure_new (PREVIEW_MESSAGE_NAME,
- "buffer", GST_TYPE_BUFFER, prev, NULL);
- gst_buffer_unref (prev);
-
- msg = gst_message_new_element (GST_OBJECT (camera), s);
-
- GST_DEBUG_OBJECT (camera, "sending message with preview image");
-
- if (gst_element_post_message (GST_ELEMENT (camera), msg) == FALSE) {
- GST_WARNING_OBJECT (camera,
- "This element has no bus, therefore no message sent!");
- }
- ret = TRUE;
- }
-
- return ret;
-}
-
-/*
- * gst_camerabin_have_img_buffer:
- * @pad: output-selector src pad leading to image bin
- * @buffer: still image frame
- * @u_data: camera bin object
- *
- * Buffer probe called before sending each buffer to image queue.
- * Generates and sends preview image as gst message if requested.
- */
-static gboolean
-gst_camerabin_have_img_buffer (GstPad * pad, GstMiniObject * obj,
- gpointer u_data)
-{
- GstCameraBin *camera = (GstCameraBin *) u_data;
-
- if (GST_IS_BUFFER (obj)) {
- GstBuffer *buffer = GST_BUFFER_CAST (obj);
- GstStructure *fn_ev_struct = NULL;
- GstPad *os_sink = NULL;
-
- GST_LOG ("got buffer %p with size %d", buffer, GST_BUFFER_SIZE (buffer));
-
- if (camera->preview_caps) {
- gst_camerabin_send_preview (camera, buffer);
- }
-
- /* Image filename should be set by now */
- if (g_str_equal (camera->filename->str, "")) {
- GST_DEBUG_OBJECT (camera, "filename not set, dropping buffer");
- CAMERABIN_PROCESSING_DEC_UNLOCKED (camera);
- goto done;
- }
-
- gst_camerabin_rewrite_tags (camera);
-
- /* Send a custom event which tells the filename to image queue */
- /* NOTE: This needs to be THE FIRST event to be sent to queue for
- every image. It triggers imgbin state change to PLAYING. */
- fn_ev_struct = gst_structure_new ("img-filename",
- "filename", G_TYPE_STRING, camera->filename->str, NULL);
- GST_DEBUG_OBJECT (camera, "sending filename event to image queue");
- gst_camerabin_send_img_queue_custom_event (camera, fn_ev_struct);
-
- /* Add buffer probe to outputselector's sink pad. It sends
- EOS event to image queue. */
- os_sink = gst_element_get_static_pad (camera->src_out_sel, "sink");
- camera->image_captured_id = gst_pad_add_buffer_probe (os_sink,
- G_CALLBACK (gst_camerabin_have_src_buffer), camera);
- gst_object_unref (os_sink);
-
- done:
-
- /* HACK: v4l2camsrc changes to view finder resolution automatically
- after one captured still image */
- gst_camerabin_finish_image_capture (camera);
-
- GST_DEBUG_OBJECT (camera, "image captured, switching to viewfinder");
-
- gst_camerabin_reset_to_view_finder (camera);
-
- GST_DEBUG_OBJECT (camera, "switched back to viewfinder");
-
- return TRUE;
- } else if (GST_IS_EVENT (obj)) {
- GstEvent *event = GST_EVENT_CAST (obj);
-
- GST_DEBUG_OBJECT (camera, "Received event in image pipeline");
-
- /* forward tag events to preview pipeline */
- if (camera->preview_caps && GST_EVENT_TYPE (event) == GST_EVENT_TAG) {
- GstCameraBinPreviewPipelineData *data;
-
- data = (camera->mode == MODE_IMAGE) ?
- camera->preview_pipeline : camera->video_preview_pipeline;
- gst_camerabin_preview_send_event (data, gst_event_ref (event));
- }
- }
-
- return TRUE;
-}
-
-/*
- * gst_camerabin_have_vid_buffer:
- * @pad: output-selector src pad leading to video bin
- * @buffer: buffer pushed to the pad
- * @u_data: camerabin object
- *
- * Buffer probe for src pad leading to video bin.
- * Sends eos event to video bin if stop requested and drops
- * all buffers after this.
- */
-static gboolean
-gst_camerabin_have_vid_buffer (GstPad * pad, GstBuffer * buffer,
- gpointer u_data)
-{
- GstCameraBin *camera = (GstCameraBin *) u_data;
- gboolean ret = TRUE;
- GST_LOG ("got video buffer %p with size %d",
- buffer, GST_BUFFER_SIZE (buffer));
-
- if (!camera->video_preview_buffer && camera->video_preview_caps) {
- GST_DEBUG ("storing video preview %p", buffer);
- camera->video_preview_buffer = gst_buffer_copy (buffer);
- }
-
- if (G_UNLIKELY (camera->stop_requested)) {
- gst_camerabin_send_video_eos (camera);
- ret = FALSE; /* Drop buffer */
- }
-
- return ret;
-}
-
-/*
- * gst_camerabin_have_src_buffer:
- * @pad: output-selector sink pad which receives frames from video source
- * @buffer: buffer pushed to the pad
- * @u_data: camerabin object
- *
- * Buffer probe for sink pad. It sends custom eos event to image queue and
- * notifies application by sending a "image-captured" message to GstBus.
- * This probe is installed after image has been captured and it disconnects
- * itself after EOS has been sent.
- */
-static gboolean
-gst_camerabin_have_src_buffer (GstPad * pad, GstBuffer * buffer,
- gpointer u_data)
-{
- GstCameraBin *camera = (GstCameraBin *) u_data;
- GstMessage *msg;
-
- GST_LOG_OBJECT (camera, "got image buffer %p with size %d",
- buffer, GST_BUFFER_SIZE (buffer));
-
- g_mutex_lock (camera->capture_mutex);
- camera->capturing = FALSE;
- g_cond_signal (camera->cond);
- g_mutex_unlock (camera->capture_mutex);
-
- msg = gst_message_new_element (GST_OBJECT (camera),
- gst_structure_new (IMG_CAPTURED_MESSAGE_NAME, NULL));
-
- GST_DEBUG_OBJECT (camera, "sending 'image captured' message");
-
- if (gst_element_post_message (GST_ELEMENT (camera), msg) == FALSE) {
- GST_WARNING_OBJECT (camera,
- "This element has no bus, therefore no message sent!");
- }
-
- /* We can't send real EOS event, since it would switch the image queue
- into "draining mode". Therefore we send our own custom eos and
- catch & drop it later in queue's srcpad data probe */
- GST_DEBUG_OBJECT (camera, "sending img-eos to image queue");
- gst_camerabin_send_img_queue_custom_event (camera,
- gst_structure_new ("img-eos", NULL));
-
- /* Prevent video source from pushing frames until we want them */
- GST_OBJECT_LOCK (camera);
- if (camera->block_viewfinder_trigger) {
- gst_pad_set_blocked_async (camera->pad_src_view, TRUE,
- (GstPadBlockCallback) camerabin_pad_blocked, camera);
- }
- GST_OBJECT_UNLOCK (camera);
-
- /* our work is done, disconnect */
- gst_pad_remove_buffer_probe (pad, camera->image_captured_id);
-
- /* Image captured, notify that preparing a new capture is possible */
- g_object_notify (G_OBJECT (camera), "ready-for-capture");
-
- return TRUE;
-}
-
-/*
- * gst_camerabin_have_queue_data:
- * @pad: image queue src pad leading to image bin
- * @mini_obj: buffer or event pushed to the pad
- * @u_data: camerabin object
- *
- * Buffer probe for image queue src pad leading to image bin. It sets imgbin
- * into PLAYING mode when image buffer is passed to it. This probe also
- * monitors our internal custom events and handles them accordingly.
- */
-static gboolean
-gst_camerabin_have_queue_data (GstPad * pad, GstMiniObject * mini_obj,
- gpointer u_data)
-{
- GstCameraBin *camera = (GstCameraBin *) u_data;
- gboolean ret = TRUE;
-
- if (GST_IS_BUFFER (mini_obj)) {
- GstEvent *tagevent;
-
- GST_LOG_OBJECT (camera, "queue sending image buffer to imagebin");
-
- tagevent = gst_event_new_tag (gst_tag_list_copy (camera->event_tags));
- gst_element_send_event (camera->imgbin, tagevent);
- gst_tag_list_free (camera->event_tags);
- camera->event_tags = gst_tag_list_new ();
- } else if (GST_IS_EVENT (mini_obj)) {
- const GstStructure *evs;
- GstEvent *event;
-
- event = GST_EVENT_CAST (mini_obj);
- evs = gst_event_get_structure (event);
-
- GST_LOG_OBJECT (camera, "got event %s", GST_EVENT_TYPE_NAME (event));
-
- if (GST_EVENT_TYPE (event) == GST_EVENT_TAG) {
- GstTagList *tlist;
-
- GST_DEBUG_OBJECT (camera, "queue sending taglist to image pipeline");
- gst_event_parse_tag (event, &tlist);
- gst_tag_list_insert (camera->event_tags, tlist, GST_TAG_MERGE_REPLACE);
- ret = FALSE;
- } else if (evs && gst_structure_has_name (evs, "img-filename")) {
- const gchar *fname;
-
- GST_DEBUG_OBJECT (camera, "queue setting image filename to imagebin");
- fname = gst_structure_get_string (evs, "filename");
- g_object_set (G_OBJECT (camera->imgbin), "filename", fname, NULL);
-
- /* imgbin fails to start unless the filename is set or file
- cannot be written */
- if (gst_element_set_state (camera->imgbin, GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_ELEMENT_ERROR (camera, CORE, STATE_CHANGE,
- ("Setting imagebin to PLAYING failed"), (NULL));
- gst_element_set_state (camera->imgbin, GST_STATE_NULL);
- } else {
- GST_LOG_OBJECT (camera, "Set imagebin to PLAYING");
- }
-
- ret = FALSE;
- } else if (evs && gst_structure_has_name (evs, "img-eos")) {
- GST_DEBUG_OBJECT (camera, "queue sending EOS to image pipeline");
- gst_pad_set_blocked_async (camera->pad_src_queue, TRUE,
- (GstPadBlockCallback) camerabin_pad_blocked, camera);
- gst_element_send_event (camera->imgbin, gst_event_new_eos ());
- ret = FALSE;
- }
- }
-
- return ret;
-}
-
-/*
- * gst_camerabin_reset_to_view_finder:
- * @camera: camerabin object
- *
- * Stop capturing and set camerabin to view finder mode.
- * Reset capture counters and flags.
- */
-static void
-gst_camerabin_reset_to_view_finder (GstCameraBin * camera)
-{
- GstStateChangeReturn state_ret;
- GST_DEBUG_OBJECT (camera, "resetting");
-
- if (camera->src_out_sel) {
- /* Set selector to forward data to view finder */
- g_object_set (G_OBJECT (camera->src_out_sel), "resend-latest", FALSE,
- "active-pad", camera->pad_src_view, NULL);
- }
-
- /* Set video bin to READY state */
- if (camera->active_bin == camera->vidbin) {
- state_ret = gst_element_set_state (camera->active_bin, GST_STATE_READY);
- if (state_ret == GST_STATE_CHANGE_FAILURE) {
- GST_WARNING_OBJECT (camera, "state change failed");
- gst_element_set_state (camera->active_bin, GST_STATE_NULL);
- camera->active_bin = NULL;
- }
- }
-
- /* Reset counters and flags */
- camera->stop_requested = FALSE;
- camera->paused = FALSE;
- camera->eos_handled = FALSE;
- if (camera->video_preview_buffer) {
- gst_buffer_unref (camera->video_preview_buffer);
- camera->video_preview_buffer = NULL;
- }
-
- /* Enable view finder mode in v4l2camsrc */
- if (camera->src_vid_src &&
- g_object_class_find_property (G_OBJECT_GET_CLASS (camera->src_vid_src),
- "capture-mode")) {
- g_object_set (G_OBJECT (camera->src_vid_src), "capture-mode", 0, NULL);
- }
-
- GST_DEBUG_OBJECT (camera, "reset done");
-}
-
-/*
- * gst_camerabin_do_stop:
- * @camera: camerabin object
- *
- * Raise flag to indicate to image and video bin capture stop.
- * Stopping paused video recording handled as a special case.
- * Wait for ongoing capturing to finish.
- */
-static void
-gst_camerabin_do_stop (GstCameraBin * camera)
-{
- gboolean video_preview_sent = FALSE;
- g_mutex_lock (camera->capture_mutex);
- if (camera->capturing) {
- GST_DEBUG_OBJECT (camera, "mark stop");
- camera->stop_requested = TRUE;
-
- /* Post preview image ASAP and don't wait that video recording
- finishes as it may take time. */
- if (camera->video_preview_buffer) {
- gst_camerabin_send_preview (camera, camera->video_preview_buffer);
- video_preview_sent = TRUE;
- }
-
- /* Take special care when stopping paused video capture */
- if ((camera->active_bin == camera->vidbin) && camera->paused) {
- /* Send eos event to video bin before setting it to playing */
- gst_camerabin_send_video_eos (camera);
- /* We must change to playing now in order to get video bin eos events
- and buffered data through and finish recording properly */
- gst_element_set_state (GST_ELEMENT (camera->vidbin), GST_STATE_PLAYING);
- camera->paused = FALSE;
- }
-
- GST_DEBUG_OBJECT (camera, "waiting for capturing to finish");
- g_cond_wait (camera->cond, camera->capture_mutex);
- GST_DEBUG_OBJECT (camera, "capturing finished");
-
- if (camera->video_preview_buffer) {
- /* Double check that preview image has been sent. This is useful
- in a corner case where capture-stop is issued immediately after
- start before a single video buffer is actually recorded */
- if (video_preview_sent == FALSE) {
- gst_camerabin_send_preview (camera, camera->video_preview_buffer);
- }
- }
- }
- g_mutex_unlock (camera->capture_mutex);
-}
-
-/*
- * gst_camerabin_default_signal_img_done:
- * @camera: camerabin object
- * @fname: filename of the recently saved image
- *
- * Default handler for #GstCameraBin::image-done signal,
- * stops always capture.
- *
- * Returns: FALSE always
- */
-static gboolean
-gst_camerabin_default_signal_img_done (GstCameraBin * camera,
- const gchar * fname)
-{
- return FALSE;
-}
-
-/*
- * gst_camerabin_set_allowed_framerate:
- * @camera: camerabin object
- * @filter_caps: update allowed framerate to these caps
- *
- * Find allowed frame rate from video source that matches with
- * resolution in @filter_caps. Set found frame rate to @filter_caps.
- */
-static void
-gst_camerabin_set_allowed_framerate (GstCameraBin * camera,
- GstCaps * filter_caps)
-{
- GstStructure *structure;
- GstCaps *allowed_caps = NULL, *intersect = NULL, *tmp_caps = NULL;
- const GValue *framerate = NULL;
- guint caps_size, i;
- guint32 format = 0;
-
- GST_INFO_OBJECT (camera, "filter caps:%" GST_PTR_FORMAT, filter_caps);
-
- structure = gst_structure_copy (gst_caps_get_structure (filter_caps, 0));
-
- /* Set fourcc format according to current videosrc format */
- format = get_srcpad_current_format (camera->src_vid_src);
- if (format) {
- GST_DEBUG_OBJECT (camera,
- "using format %" GST_FOURCC_FORMAT " for matching",
- GST_FOURCC_ARGS (format));
- gst_structure_set (structure, "format", GST_TYPE_FOURCC, format, NULL);
- } else {
- GST_DEBUG_OBJECT (camera, "not matching against fourcc format");
- gst_structure_remove_field (structure, "format");
- }
-
- tmp_caps = gst_caps_new_full (structure, NULL);
-
- /* Get supported caps from video src that matches with new filter caps */
- allowed_caps = gst_camerabin_get_allowed_input_caps (camera);
- intersect = gst_caps_intersect (allowed_caps, tmp_caps);
- GST_INFO_OBJECT (camera, "intersect caps:%" GST_PTR_FORMAT, intersect);
-
- /* Find the best framerate from the caps */
- caps_size = gst_caps_get_size (intersect);
- for (i = 0; i < caps_size; i++) {
- structure = gst_caps_get_structure (intersect, i);
- framerate =
- gst_camerabin_find_better_framerate (camera, structure, framerate);
- }
-
- /* Set found frame rate to original caps */
- if (GST_VALUE_HOLDS_FRACTION (framerate)) {
- gst_caps_set_simple (filter_caps,
- "framerate", GST_TYPE_FRACTION,
- gst_value_get_fraction_numerator (framerate),
- gst_value_get_fraction_denominator (framerate), NULL);
- }
-
- /* Unref helper caps */
- if (allowed_caps) {
- gst_caps_unref (allowed_caps);
- }
- if (intersect) {
- gst_caps_unref (intersect);
- }
- if (tmp_caps) {
- gst_caps_unref (tmp_caps);
- }
-}
-
-
-/**
- * get_srcpad_current_format:
- * @element: element to get the format from
- *
- * Helper function to get the negotiated fourcc
- * format from @element src pad.
- *
- * Returns: negotiated format (fourcc), 0 if not found
- */
-static guint32
-get_srcpad_current_format (GstElement * element)
-{
- GstPad *srcpad = NULL;
- GstCaps *srccaps = NULL;
- GstStructure *structure;
- guint32 format = 0;
-
- g_return_val_if_fail (element != NULL, 0);
-
- if ((srcpad = gst_element_get_static_pad (element, "src")) == NULL) {
- goto no_pad;
- }
-
- if ((srccaps = gst_pad_get_negotiated_caps (srcpad)) == NULL) {
- goto no_caps;
- }
-
- GST_LOG ("negotiated caps %" GST_PTR_FORMAT, srccaps);
-
- structure = gst_caps_get_structure (srccaps, 0);
- if (gst_structure_has_field (structure, "format")) {
- gst_structure_get_fourcc (structure, "format", &format);
- }
-
- gst_caps_unref (srccaps);
-no_caps:
- gst_object_unref (srcpad);
-no_pad:
- GST_DEBUG ("current format for %" GST_PTR_FORMAT ": %" GST_FOURCC_FORMAT,
- element, GST_FOURCC_ARGS (format));
- return format;
-}
-
-/*
- * gst_camerabin_find_better_framerate:
- * @camera: camerabin object
- * @st: structure that contains framerate candidates
- * @orig_framerate: best framerate so far
- *
- * Looks for framerate better than @orig_framerate from @st structure.
- * In night mode lowest framerate is considered best, otherwise highest is
- * best.
- *
- * Returns: @orig_framerate or better if found
- */
-static const GValue *
-gst_camerabin_find_better_framerate (GstCameraBin * camera, GstStructure * st,
- const GValue * orig_framerate)
-{
- const GValue *framerate = NULL;
- guint i, i_best, list_size;
- gint res, comparison;
-
- if (camera->night_mode) {
- GST_LOG_OBJECT (camera, "finding min framerate in %" GST_PTR_FORMAT, st);
- comparison = GST_VALUE_LESS_THAN;
- } else {
- GST_LOG_OBJECT (camera, "finding max framerate in %" GST_PTR_FORMAT, st);
- comparison = GST_VALUE_GREATER_THAN;
- }
-
- if (gst_structure_has_field (st, "framerate")) {
- framerate = gst_structure_get_value (st, "framerate");
- /* Handle framerate lists */
- if (GST_VALUE_HOLDS_LIST (framerate)) {
- list_size = gst_value_list_get_size (framerate);
- GST_LOG_OBJECT (camera, "finding framerate from list");
- for (i = 0, i_best = 0; i < list_size; i++) {
- res = gst_value_compare (gst_value_list_get_value (framerate, i),
- gst_value_list_get_value (framerate, i_best));
- if (comparison == res) {
- i_best = i;
- }
- }
- GST_LOG_OBJECT (camera, "found best framerate from index %d", i_best);
- framerate = gst_value_list_get_value (framerate, i_best);
- }
- /* Handle framerate ranges */
- if (GST_VALUE_HOLDS_FRACTION_RANGE (framerate)) {
- if (camera->night_mode) {
- GST_LOG_OBJECT (camera, "getting min framerate from range");
- framerate = gst_value_get_fraction_range_min (framerate);
- } else {
- GST_LOG_OBJECT (camera, "getting max framerate from range");
- framerate = gst_value_get_fraction_range_max (framerate);
- }
- }
- }
-
- /* Check if we found better framerate */
- if (orig_framerate && framerate) {
- res = gst_value_compare (orig_framerate, framerate);
- if (comparison == res) {
- GST_LOG_OBJECT (camera, "original framerate was the best");
- framerate = orig_framerate;
- }
- }
-
- return framerate;
-}
-
-/*
- * gst_camerabin_update_aspect_filter:
- * @camera: camerabin object
- * @new_caps: new caps of next buffers arriving to view finder sink element
- *
- * Updates aspect ratio capsfilter to maintain aspect ratio, if we need to
- * scale frames for showing them in view finder.
- */
-static void
-gst_camerabin_update_aspect_filter (GstCameraBin * camera, GstCaps * new_caps)
-{
- if (camera->flags & GST_CAMERABIN_FLAG_VIEWFINDER_SCALE) {
- GstCaps *sink_caps, *ar_caps;
- GstStructure *st;
- gint in_w = 0, in_h = 0, sink_w = 0, sink_h = 0, target_w = 0, target_h = 0;
- gdouble ratio_w, ratio_h;
- GstPad *sink_pad;
- const GValue *range;
-
- sink_pad = gst_element_get_static_pad (camera->view_sink, "sink");
-
- if (sink_pad) {
- sink_caps = gst_pad_get_caps (sink_pad);
- gst_object_unref (sink_pad);
- if (sink_caps) {
- if (!gst_caps_is_any (sink_caps)) {
- GST_DEBUG_OBJECT (camera, "sink element caps %" GST_PTR_FORMAT,
- sink_caps);
- /* Get maximum resolution that view finder sink accepts */
- st = gst_caps_get_structure (sink_caps, 0);
- if (gst_structure_has_field_typed (st, "width", GST_TYPE_INT_RANGE)) {
- range = gst_structure_get_value (st, "width");
- sink_w = gst_value_get_int_range_max (range);
- }
- if (gst_structure_has_field_typed (st, "height", GST_TYPE_INT_RANGE)) {
- range = gst_structure_get_value (st, "height");
- sink_h = gst_value_get_int_range_max (range);
- }
- GST_DEBUG_OBJECT (camera, "sink element accepts max %dx%d", sink_w,
- sink_h);
-
- /* Get incoming frames' resolution */
- if (sink_h && sink_w) {
- st = gst_caps_get_structure (new_caps, 0);
- gst_structure_get_int (st, "width", &in_w);
- gst_structure_get_int (st, "height", &in_h);
- GST_DEBUG_OBJECT (camera, "new caps with %dx%d", in_w, in_h);
- }
- }
- gst_caps_unref (sink_caps);
- }
- }
-
- /* If we get bigger frames than view finder sink accepts, then we scale.
- If we scale we need to adjust aspect ratio capsfilter caps in order
- to maintain aspect ratio while scaling. */
- if (in_w && in_h && (in_w > sink_w || in_h > sink_h)) {
- ratio_w = (gdouble) sink_w / in_w;
- ratio_h = (gdouble) sink_h / in_h;
-
- if (ratio_w < ratio_h) {
- target_w = sink_w;
- target_h = (gint) (ratio_w * in_h);
- } else {
- target_w = (gint) (ratio_h * in_w);
- target_h = sink_h;
- }
-
- GST_DEBUG_OBJECT (camera, "setting %dx%d filter to maintain aspect ratio",
- target_w, target_h);
- ar_caps = gst_caps_copy (new_caps);
- gst_caps_set_simple (ar_caps, "width", G_TYPE_INT, target_w, "height",
- G_TYPE_INT, target_h, NULL);
- } else {
- GST_DEBUG_OBJECT (camera, "no scaling");
- ar_caps = new_caps;
- }
-
- GST_DEBUG_OBJECT (camera, "aspect ratio filter caps %" GST_PTR_FORMAT,
- ar_caps);
- g_object_set (G_OBJECT (camera->aspect_filter), "caps", ar_caps, NULL);
- if (ar_caps != new_caps)
- gst_caps_unref (ar_caps);
- }
-}
-
-/*
- * gst_camerabin_finish_image_capture:
- * @camera: camerabin object
- *
- * Perform finishing operations after image capture is done and
- * returning back to view finder mode.
- */
-static void
-gst_camerabin_finish_image_capture (GstCameraBin * camera)
-{
- if (camera->image_capture_caps) {
- /* If we used specific caps for image capture we need to
- restore the caps and zoom/crop for view finder mode */
- if (camera->src_zoom_crop) {
- GST_DEBUG_OBJECT (camera, "resetting crop in camerabin");
- g_object_set (camera->src_zoom_crop, "left", 0, "right", 0,
- "top", 0, "bottom", 0, NULL);
- }
- camera->base_crop_left = 0;
- camera->base_crop_right = 0;
- camera->base_crop_top = 0;
- camera->base_crop_bottom = 0;
- gst_camerabin_set_capsfilter_caps (camera, camera->view_finder_caps);
- }
-}
-
-/*
- * gst_camerabin_adapt_image_capture:
- * @camera: camerabin object
- * @in_caps: caps object that describes incoming image format
- *
- * Adjust capsfilters and crop according image capture caps if necessary.
- * The captured image format from video source might be different from
- * what application requested, so we can try to fix that in camerabin.
- *
- */
-static void
-gst_camerabin_adapt_image_capture (GstCameraBin * camera, GstCaps * in_caps)
-{
- GstStructure *in_st, *new_st, *req_st;
- gint in_width = 0, in_height = 0, req_width = 0, req_height = 0, crop = 0;
- gdouble ratio_w, ratio_h;
- GstCaps *filter_caps = NULL;
-
- GST_LOG_OBJECT (camera, "in caps: %" GST_PTR_FORMAT, in_caps);
- GST_LOG_OBJECT (camera, "requested caps: %" GST_PTR_FORMAT,
- camera->image_capture_caps);
-
- in_st = gst_caps_get_structure (in_caps, 0);
- gst_structure_get_int (in_st, "width", &in_width);
- gst_structure_get_int (in_st, "height", &in_height);
-
- req_st = gst_caps_get_structure (camera->image_capture_caps, 0);
- gst_structure_get_int (req_st, "width", &req_width);
- gst_structure_get_int (req_st, "height", &req_height);
-
- GST_INFO_OBJECT (camera, "we requested %dx%d, and got %dx%d", req_width,
- req_height, in_width, in_height);
-
- new_st = gst_structure_copy (req_st);
- /* If new fields have been added, we need to copy them */
- gst_structure_foreach (in_st, copy_missing_fields, new_st);
-
- if (!(camera->flags & GST_CAMERABIN_FLAG_SOURCE_RESIZE)) {
- GST_DEBUG_OBJECT (camera,
- "source-resize flag disabled, unable to adapt resolution");
- gst_structure_set (new_st, "width", G_TYPE_INT, in_width, "height",
- G_TYPE_INT, in_height, NULL);
- }
-
- GST_LOG_OBJECT (camera, "new image capture caps: %" GST_PTR_FORMAT, new_st);
-
- /* Crop if requested aspect ratio differs from incoming frame aspect ratio */
- if (camera->src_zoom_crop) {
-
- ratio_w = (gdouble) in_width / req_width;
- ratio_h = (gdouble) in_height / req_height;
-
- if (ratio_w < ratio_h) {
- crop = in_height - (req_height * ratio_w);
- camera->base_crop_top = crop / 2;
- camera->base_crop_bottom = crop / 2;
- } else {
- crop = in_width - (req_width * ratio_h);
- camera->base_crop_left = crop / 2;
- camera->base_crop_right += crop / 2;
- }
-
- GST_INFO_OBJECT (camera,
- "setting base crop: left:%d, right:%d, top:%d, bottom:%d",
- camera->base_crop_left, camera->base_crop_right, camera->base_crop_top,
- camera->base_crop_bottom);
- g_object_set (G_OBJECT (camera->src_zoom_crop), "top",
- camera->base_crop_top, "bottom", camera->base_crop_bottom, "left",
- camera->base_crop_left, "right", camera->base_crop_right, NULL);
- }
-
- /* Update capsfilters */
- gst_caps_replace (&camera->image_capture_caps,
- gst_caps_new_full (new_st, NULL));
- gst_camerabin_set_capsfilter_caps (camera, camera->image_capture_caps);
-
- /* Adjust the capsfilter before crop and videoscale elements if necessary */
- if (in_width == camera->width && in_height == camera->height) {
- GST_DEBUG_OBJECT (camera, "no adaptation with resolution needed");
- } else {
- GST_DEBUG_OBJECT (camera,
- "changing %" GST_PTR_FORMAT " from %dx%d to %dx%d", camera->src_filter,
- camera->width, camera->height, in_width, in_height);
- /* Apply the width and height to filter caps */
- g_object_get (G_OBJECT (camera->src_filter), "caps", &filter_caps, NULL);
- filter_caps = gst_caps_make_writable (filter_caps);
- gst_caps_set_simple (filter_caps, "width", G_TYPE_INT, in_width, "height",
- G_TYPE_INT, in_height, NULL);
- g_object_set (G_OBJECT (camera->src_filter), "caps", filter_caps, NULL);
- gst_caps_unref (filter_caps);
- }
-}
-
-/*
- * gst_camerabin_handle_scene_mode:
- * @camera: camerabin object
- * scene_mode: scene mode
- *
- * Handle scene mode if night mode was selected/deselected in video-source
- *
- */
-static void
-gst_camerabin_handle_scene_mode (GstCameraBin * camera, GstSceneMode scene_mode)
-{
- if (scene_mode == GST_PHOTOGRAPHY_SCENE_MODE_NIGHT) {
- if (!camera->night_mode) {
- GST_DEBUG ("enabling night mode, lowering fps");
- /* Make camerabin select the lowest allowed frame rate */
- camera->night_mode = TRUE;
- /* Remember frame rate before setting night mode */
- camera->pre_night_fps_n = camera->fps_n;
- camera->pre_night_fps_d = camera->fps_d;
- do_set_video_resolution_fps (camera, camera->width, camera->height, 0, 1);
- } else {
- GST_DEBUG ("night mode already enabled");
- }
- } else {
- if (camera->night_mode) {
- GST_DEBUG ("disabling night mode, restoring fps to %d/%d",
- camera->pre_night_fps_n, camera->pre_night_fps_d);
- camera->night_mode = FALSE;
- do_set_video_resolution_fps (camera, camera->width, camera->height,
- camera->pre_night_fps_n, camera->pre_night_fps_d);
- }
- }
-}
-
-/*
- * gst_camerabin_scene_mode_notify_cb:
- * @video_source: videosrc object
- * @pspec: GParamSpec for property
- * @user_data: camerabin object
- *
- * Update framerate if scene mode was updated in video-source
- *
- */
-static void
-gst_camerabin_scene_mode_notify_cb (GObject * video_source, GParamSpec * pspec,
- gpointer user_data)
-{
- GstSceneMode scene_mode;
- const gchar *name = g_param_spec_get_name (pspec);
- GstCameraBin *camera = GST_CAMERABIN (user_data);
-
- g_object_get (video_source, name, &scene_mode, NULL);
- gst_camerabin_handle_scene_mode (camera, scene_mode);
-}
-
- /*
- * gst_camerabin_zoom_notify_cb:
- * @video_source: videosrc object
- * @pspec: GParamSpec for property
- * @user_data: camerabin object
- *
- * Update zoom value if video-source updated its zoom
- *
- */
-static void
-gst_camerabin_zoom_notify_cb (GObject * video_source, GParamSpec * pspec,
- gpointer user_data)
-{
- gfloat zoom;
- const gchar *name = g_param_spec_get_name (pspec);
- GstCameraBin *camera = GST_CAMERABIN (user_data);
-
- g_object_get (video_source, name, &zoom, NULL);
-
- camera->zoom = zoom;
- g_object_notify (G_OBJECT (camera), "zoom");
-}
-
-/*
- * gst_camerabin_monitor_video_source_properties:
- * @camera: camerabin object
- *
- * Monitor notify signals from video source photography interface
- * property scene mode.
- *
- */
-static void
-gst_camerabin_monitor_video_source_properties (GstCameraBin * camera)
-{
- GST_DEBUG_OBJECT (camera, "checking for photography interface support");
- if (GST_IS_ELEMENT (camera->src_vid_src) &&
- gst_element_implements_interface (camera->src_vid_src,
- GST_TYPE_PHOTOGRAPHY)) {
- gint scene_mode;
- GST_DEBUG_OBJECT (camera,
- "connecting to %" GST_PTR_FORMAT " - notify::scene-mode",
- camera->src_vid_src);
- g_signal_connect (G_OBJECT (camera->src_vid_src), "notify::scene-mode",
- (GCallback) gst_camerabin_scene_mode_notify_cb, camera);
- g_object_get (G_OBJECT (camera->src_vid_src), "scene-mode", &scene_mode,
- NULL);
- camera->night_mode = scene_mode == GST_PHOTOGRAPHY_SCENE_MODE_NIGHT;
-
- GST_DEBUG_OBJECT (camera,
- "connecting to %" GST_PTR_FORMAT " - notify::zoom",
- camera->src_vid_src);
- g_signal_connect (G_OBJECT (camera->src_vid_src), "notify::zoom",
- (GCallback) gst_camerabin_zoom_notify_cb, camera);
- }
-}
-
-/*
- * gst_camerabin_configure_format:
- * @camera: camerabin object
- * @caps: caps describing new format
- *
- * Configure internal video format for camerabin.
- *
- */
-static void
-gst_camerabin_configure_format (GstCameraBin * camera, GstCaps * caps)
-{
- GstStructure *st;
-
- st = gst_caps_get_structure (caps, 0);
-
- gst_structure_get_int (st, "width", &camera->width);
- gst_structure_get_int (st, "height", &camera->height);
-
- if (gst_structure_has_field_typed (st, "framerate", GST_TYPE_FRACTION)) {
- gst_structure_get_fraction (st, "framerate", &camera->fps_n,
- &camera->fps_d);
- }
-}
-
-static gboolean
-copy_missing_fields (GQuark field_id, const GValue * value, gpointer user_data)
-{
- GstStructure *st = (GstStructure *) user_data;
- const GValue *val = gst_structure_id_get_value (st, field_id);
-
- if (G_UNLIKELY (val == NULL)) {
- gst_structure_id_set_value (st, field_id, value);
- }
-
- return TRUE;
-}
-
-/*
-* gst_camerabin_change_viewfinder_blocking:
-* @camera: camerabin object
-* @blocked: new viewfinder blocking state
-*
-* Handle viewfinder blocking parameter change.
-*/
-static void
-gst_camerabin_change_viewfinder_blocking (GstCameraBin * camera,
- gboolean blocked)
-{
- gboolean old_value;
-
- GST_OBJECT_LOCK (camera);
- old_value = camera->block_viewfinder_prop;
- camera->block_viewfinder_prop = blocked;
- if (blocked == FALSE) {
- camera->block_viewfinder_trigger = FALSE;
- }
- GST_OBJECT_UNLOCK (camera);
-
- /* "block_viewfinder_prop" is now set and will be checked after capture */
- GST_DEBUG_OBJECT (camera, "viewfinder blocking set to %d, was %d",
- camera->block_viewfinder_prop, old_value);
-
- if (old_value == blocked)
- return;
-
- if (!blocked && camera->pad_src_view
- && gst_pad_is_blocked (camera->pad_src_view)) {
- /* Unblock viewfinder: the pad is blocked and we need to unblock it */
- gst_pad_set_blocked_async (camera->pad_src_view, FALSE,
- (GstPadBlockCallback) camerabin_pad_blocked, camera);
- }
-}
-
-/*
- * GObject callback functions implementation
- */
-
-static void
-gst_camerabin_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_tag_register_musicbrainz_tags ();
-
- gst_element_class_set_details_simple (element_class, "Camera Bin",
- "Generic/Bin/Camera",
- "Handle lot of features present in DSC",
- "Nokia Corporation <multimedia@maemo.org>, "
- "Edgard Lima <edgard.lima@indt.org.br>");
-}
-
-static void
-gst_camerabin_class_init (GstCameraBinClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
- GstBinClass *gstbin_class;
-
- gobject_class = G_OBJECT_CLASS (klass);
- gstelement_class = GST_ELEMENT_CLASS (klass);
- gstbin_class = GST_BIN_CLASS (klass);
-
- /* gobject */
-
- gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_camerabin_dispose);
- gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_camerabin_finalize);
-
- gobject_class->set_property = gst_camerabin_set_property;
- gobject_class->get_property = gst_camerabin_get_property;
-
- /**
- * GstCameraBin:filename:
- *
- * Set filename for the still image capturing or video capturing.
- */
-
- g_object_class_install_property (gobject_class, ARG_FILENAME,
- g_param_spec_string ("filename", "Filename",
- "Filename of the image or video to save", "",
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:mode:
- *
- * Set the mode of operation: still image capturing or video recording.
- * Setting the mode will create and destroy image bin or video bin elements
- * according to the mode. You can set this property at any time, changing
- * the mode will stop ongoing capture.
- */
-
- g_object_class_install_property (gobject_class, ARG_MODE,
- g_param_spec_enum ("mode", "Mode",
- "The capture mode (still image capture or video recording)",
- GST_TYPE_CAMERABIN_MODE, DEFAULT_MODE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:flags
- *
- * Control the behaviour of camerabin.
- */
- g_object_class_install_property (gobject_class, ARG_FLAGS,
- g_param_spec_flags ("flags", "Flags", "Flags to control behaviour",
- GST_TYPE_CAMERABIN_FLAGS, DEFAULT_FLAGS,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:mute:
- *
- * Mute audio in video recording mode.
- * Set this property only when #GstCameraBin is in READY, PAUSED or PLAYING.
- */
-
- g_object_class_install_property (gobject_class, ARG_MUTE,
- g_param_spec_boolean ("mute", "Mute",
- "True to mute the recording. False to record with audio",
- ARG_DEFAULT_MUTE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:zoom:
- *
- * Set up the zoom applied to the frames.
- * Set this property only when #GstCameraBin is in READY, PAUSED or PLAYING.
- */
-
- g_object_class_install_property (gobject_class, ARG_ZOOM,
- g_param_spec_float ("zoom", "Zoom",
- "The zoom. 1.0 for 1x, 2.0 for 2x and so on",
- MIN_ZOOM, MAX_ZOOM, DEFAULT_ZOOM,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:image-post-processing:
- *
- * Set up an element to do image post processing.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
- g_object_class_install_property (gobject_class, ARG_IMAGE_POST,
- g_param_spec_object ("image-post-processing",
- "Image post processing element",
- "Image Post-Processing GStreamer element (default is NULL)",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:image-encoder:
- *
- * Set up an image encoder (for example, jpegenc or pngenc) element.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_IMAGE_ENC,
- g_param_spec_object ("image-encoder", "Image encoder",
- "Image encoder GStreamer element (default is jpegenc)",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:image-formatter:
- *
- * Set up an image formatter (for example, jifmux) element.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_IMAGE_FORMATTER,
- g_param_spec_object ("image-formatter", "Image formatter",
- "Image formatter GStreamer element (default is jifmux)",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:video-post-processing:
- *
- * Set up an element to do video post processing.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_VIDEO_POST,
- g_param_spec_object ("video-post-processing",
- "Video post processing element",
- "Video post processing GStreamer element (default is NULL)",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:video-encoder:
- *
- * Set up a video encoder element.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_VIDEO_ENC,
- g_param_spec_object ("video-encoder", "Video encoder",
- "Video encoder GStreamer element (default is theoraenc)",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:audio-encoder:
- *
- * Set up an audio encoder element.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_AUDIO_ENC,
- g_param_spec_object ("audio-encoder", "Audio encoder",
- "Audio encoder GStreamer element (default is vorbisenc)",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:video-muxer:
- *
- * Set up a video muxer element.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_VIDEO_MUX,
- g_param_spec_object ("video-muxer", "Video muxer",
- "Video muxer GStreamer element (default is oggmux)",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:viewfinder-sink:
- *
- * Set up a sink element to render frames in view finder.
- * By default "autovideosink" or DEFAULT_VIDEOSINK will be used.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_VF_SINK,
- g_param_spec_object ("viewfinder-sink", "Viewfinder sink",
- "Viewfinder sink GStreamer element (NULL = default video sink)",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:video-source:
- *
- * Set up a video source element.
- * By default "autovideosrc" or DEFAULT_VIDEOSRC will be used.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_VIDEO_SRC,
- g_param_spec_object ("video-source", "Video source element",
- "Video source GStreamer element (NULL = default video src)",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- /**
- * GstCameraBin:audio-source:
- *
- * Set up an audio source element.
- * By default "autoaudiosrc" or DEFAULT_AUDIOSRC will be used.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_AUDIO_SRC,
- g_param_spec_object ("audio-source", "Audio source element",
- "Audio source GStreamer element (NULL = default audio src)",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:video-source-filter:
- *
- * Set up optional video filter element, all frames from video source
- * will be processed by this element. e.g. An application might add
- * image enhancers/parameter adjustment filters here to improve captured
- * image/video results, or add analyzers to give feedback on capture
- * the application.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_VIDEO_SOURCE_FILTER,
- g_param_spec_object ("video-source-filter", "video source filter element",
- "Optional video filter GStreamer element, filters all frames from"
- "the video source", GST_TYPE_ELEMENT,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:video-source-caps:
- *
- * The allowed modes of operation of the video source. Have in mind that it
- * doesn't mean #GstCameraBin can operate in all those modes,
- * it depends also on the other elements in the pipeline. Remember to
- * gst_caps_unref after using it.
- */
-
- g_object_class_install_property (gobject_class, ARG_INPUT_CAPS,
- g_param_spec_boxed ("video-source-caps", "Video source caps",
- "The allowed modes of the video source operation",
- GST_TYPE_CAPS, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:filter-caps:
- *
- * Caps applied to capsfilter element after videosrc [ ! ffmpegcsp ].
- * You can use this e.g. to make sure video color format matches with
- * encoders and other elements configured to camerabin and/or change
- * resolution and frame rate.
- */
-
- g_object_class_install_property (gobject_class, ARG_FILTER_CAPS,
- g_param_spec_boxed ("filter-caps", "Filter caps",
- "Filter video data coming from videosrc element",
- GST_TYPE_CAPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:preview-caps:
- *
- * If application wants to receive a preview image, it needs to
- * set this property to depict the desired image format caps. When
- * this property is not set (NULL), message containing the preview
- * image is not sent.
- */
-
- g_object_class_install_property (gobject_class, ARG_PREVIEW_CAPS,
- g_param_spec_boxed ("preview-caps", "Preview caps",
- "Caps defining the preview image format",
- GST_TYPE_CAPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:preview-source-filter:
- * Set up preview filter element, all frames coming from appsrc
- * element will be processed by this element.
- * Applications can use this to overlay text/images for preview frame,
- * for example.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_PREVIEW_SOURCE_FILTER,
- g_param_spec_object ("preview-source-filter",
- "preview source filter element",
- "Optional preview source filter GStreamer element",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:viewfinder-filter:
- * Set up viewfinder filter element, all frames going to viewfinder sink
- * element will be processed by this element.
- * Applications can use this to overlay text/images in the screen, or
- * plug facetracking algorithms, for example.
- * This property can only be set while #GstCameraBin is in NULL state.
- * The ownership of the element will be taken by #GstCameraBin.
- */
-
- g_object_class_install_property (gobject_class, ARG_VIEWFINDER_FILTER,
- g_param_spec_object ("viewfinder-filter", "viewfinder filter element",
- "viewfinder filter GStreamer element",
- GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:block-after-capture:
- *
- * Block viewfinder after capture.
- * If it is TRUE when 'capture-start' is issued, camerabin will prepare to
- * block and freeze the viewfinder after capturing. Setting it to FALSE will
- * abort the blocking if it hasn't happened yet, or will enable again the
- * viewfinder if it is already blocked. Note that setting this property
- * to TRUE after 'capture-start' will only work for the next capture. This
- * makes possible for applications to set the property to FALSE to abort
- * the current blocking and already set it back to TRUE again to block at
- * the next capture.
- *
- * This is useful if application wants to display the preview image
- * and running the viewfinder at the same time would be just a waste of
- * CPU cycles.
- */
-
- g_object_class_install_property (gobject_class, ARG_BLOCK_VIEWFINDER,
- g_param_spec_boolean ("block-after-capture",
- "Block viewfinder after capture",
- "Block viewfinder after capturing an image or video",
- DEFAULT_BLOCK_VIEWFINDER,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:image-capture-width:
- *
- * The width to be used when capturing still images. If 0, the
- * viewfinder's width will be used.
- */
- g_object_class_install_property (gobject_class, ARG_IMAGE_CAPTURE_WIDTH,
- g_param_spec_int ("image-capture-width",
- "The width used for image capture",
- "The width used for image capture", 0, G_MAXINT16,
- DEFAULT_CAPTURE_WIDTH, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:image-capture-height:
- *
- * The height to be used when capturing still images. If 0, the
- * viewfinder's height will be used.
- */
- g_object_class_install_property (gobject_class, ARG_IMAGE_CAPTURE_HEIGHT,
- g_param_spec_int ("image-capture-height",
- "The height used for image capture",
- "The height used for image capture", 0, G_MAXINT16,
- DEFAULT_CAPTURE_HEIGHT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:video-capture-width:
- *
- * The width to be used when capturing video.
- */
- g_object_class_install_property (gobject_class, ARG_VIDEO_CAPTURE_WIDTH,
- g_param_spec_int ("video-capture-width",
- "The width used for video capture",
- "The width used for video capture", 0, G_MAXINT16,
- DEFAULT_CAPTURE_WIDTH, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:video-capture-height:
- *
- * The height to be used when capturing video.
- */
- g_object_class_install_property (gobject_class, ARG_VIDEO_CAPTURE_HEIGHT,
- g_param_spec_int ("video-capture-height",
- "The height used for video capture",
- "The height used for video capture", 0, G_MAXINT16,
- DEFAULT_CAPTURE_HEIGHT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:video-capture-framerate:
- *
- * The framerate to be used when capturing video.
- */
- g_object_class_install_property (gobject_class, ARG_VIDEO_CAPTURE_FRAMERATE,
- gst_param_spec_fraction ("video-capture-framerate",
- "The framerate used for video capture",
- "The framerate used for video capture", 0, 1, G_MAXINT32, 1,
- DEFAULT_FPS_N, DEFAULT_FPS_D,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:ready-for-capture:
- *
- * When TRUE new capture can be prepared. If FALSE capturing is ongoing
- * and starting a new capture immediately is not possible.
- */
-
- g_object_class_install_property (gobject_class, ARG_READY_FOR_CAPTURE,
- g_param_spec_boolean ("ready-for-capture",
- "Indicates if preparing a new capture is possible",
- "Indicates if preparing a new capture is possible",
- DEFAULT_READY_FOR_CAPTURE,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin:idle:
- *
- * When TRUE no capturing/encoding/saving is running and it is safe to set
- * camerabin to NULL to release resources without losing data.
- *
- * In case of errors, this property is made unreliable. Set the pipeline
- * back to READY or NULL to make it reliable again.
- */
- g_object_class_install_property (gobject_class, ARG_IDLE,
- g_param_spec_boolean ("idle",
- "Indicates if data is being processed (recording/capturing/saving)",
- "Indicates if data is being processed (recording/capturing/saving)",
- TRUE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstCameraBin::capture-start:
- * @camera: the camera bin element
- *
- * Starts image capture or video recording depending on the Mode.
- * If there is a capture already going on, does nothing.
- * Resumes video recording if it has been paused.
- */
-
- camerabin_signals[CAPTURE_START_SIGNAL] =
- g_signal_new ("capture-start",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GstCameraBinClass, capture_start),
- NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
-
- /**
- * GstCameraBin::capture-stop:
- * @camera: the camera bin element
- *
- * Stops still image preview, continuous image capture and video
- * recording and returns to the view finder mode.
- */
-
- camerabin_signals[CAPTURE_STOP_SIGNAL] =
- g_signal_new ("capture-stop",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GstCameraBinClass, capture_stop),
- NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
-
- /**
- * GstCameraBin::capture-pause:
- * @camera: the camera bin element
- *
- * Pauses video recording or resumes paused video recording.
- * If in image mode or not recording, does nothing.
- */
-
- camerabin_signals[CAPTURE_PAUSE_SIGNAL] =
- g_signal_new ("capture-pause",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GstCameraBinClass, capture_pause),
- NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
-
- /**
- * GstCameraBin::set-video-resolution-fps:
- * @camera: the camera bin element
- * @width: number of horizontal pixels
- * @height: number of vertical pixels
- * @fps_n: frames per second numerator
- * @fps_d: frames per second denominator
- *
- * Changes the frame resolution and frames per second of the video source.
- * The application must be aware of the resolutions supported by the camera.
- * Supported resolutions and frame rates can be get using input-caps property.
- *
- * Setting @fps_n or @fps_d to 0 configures maximum framerate for the
- * given resolution, unless in night mode when minimum is configured.
- *
- * This is the same as setting the 'video-capture-width',
- * 'video-capture-height' and 'video-capture-framerate' properties, but it
- * already updates the caps to force use this resolution and framerate.
- */
-
- camerabin_signals[SET_VIDEO_RESOLUTION_FPS_SIGNAL] =
- g_signal_new ("set-video-resolution-fps",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GstCameraBinClass, set_video_resolution_fps),
- NULL, NULL, __gst_camerabin_marshal_VOID__INT_INT_INT_INT, G_TYPE_NONE, 4,
- G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
-
- /**
- * GstCameraBin::set-image-resolution:
- * @camera: the camera bin element
- * @width: number of horizontal pixels
- * @height: number of vertical pixels
- *
- * Changes the resolution used for still image capture.
- * Does not affect view finder mode and video recording.
- *
- * This actually sets the 'image-capture-width' and 'image-capture-height'
- * properties.
- */
-
- camerabin_signals[SET_IMAGE_RESOLUTION_SIGNAL] =
- g_signal_new ("set-image-resolution",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GstCameraBinClass, set_image_resolution),
- NULL, NULL, __gst_camerabin_marshal_VOID__INT_INT, G_TYPE_NONE, 2,
- G_TYPE_INT, G_TYPE_INT);
-
- /**
- * GstCameraBin::image-done:
- * @camera: the camera bin element
- * @filename: the name of the file just saved
- *
- * Signal emitted when the file has just been saved.
- *
- * Don't call any #GstCameraBin method from this signal, if you do so there
- * will be a deadlock.
- */
-
- camerabin_signals[IMG_DONE_SIGNAL] =
- g_signal_new ("image-done", G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstCameraBinClass, img_done),
- g_signal_accumulator_true_handled, NULL,
- __gst_camerabin_marshal_BOOLEAN__STRING, G_TYPE_BOOLEAN, 1,
- G_TYPE_STRING);
-
- klass->capture_start = gst_camerabin_capture_start;
- klass->capture_stop = gst_camerabin_capture_stop;
- klass->capture_pause = gst_camerabin_capture_pause;
- klass->set_video_resolution_fps = gst_camerabin_set_video_resolution_fps;
- klass->set_image_resolution = gst_camerabin_set_image_resolution;
-
- klass->img_done = gst_camerabin_default_signal_img_done;
-
- /* gstelement */
-
- gstelement_class->change_state =
- GST_DEBUG_FUNCPTR (gst_camerabin_change_state);
-
- gstelement_class->provide_clock =
- GST_DEBUG_FUNCPTR (gst_camerabin_provide_clock);
-
- /* gstbin */
- /* override handle_message to peek when video or image bin reaches eos */
- gstbin_class->handle_message =
- GST_DEBUG_FUNCPTR (gst_camerabin_handle_message_func);
-
-}
-
-/* initialize the new element
- * instantiate pads and add them to element
- * set functions
- * initialize structure
- */
-static void
-gst_camerabin_init (GstCameraBin * camera, GstCameraBinClass * gclass)
-{
- /* GstElementClass *klass = GST_ELEMENT_GET_CLASS (camera); */
-
- camera->filename = g_string_new ("");
- camera->mode = DEFAULT_MODE;
- camera->flags = DEFAULT_FLAGS;
- camera->stop_requested = FALSE;
- camera->paused = FALSE;
- camera->capturing = FALSE;
- camera->night_mode = FALSE;
- camera->eos_handled = FALSE;
-
- camera->app_width = camera->width = DEFAULT_WIDTH;
- camera->app_height = camera->height = DEFAULT_HEIGHT;
- camera->app_fps_n = camera->fps_n = DEFAULT_FPS_N;
- camera->app_fps_d = camera->fps_d = DEFAULT_FPS_D;
- camera->image_capture_width = 0;
- camera->image_capture_height = 0;
- camera->base_crop_left = 0;
- camera->base_crop_right = 0;
- camera->base_crop_top = 0;
- camera->base_crop_bottom = 0;
-
- camera->event_tags = gst_tag_list_new ();
-
- camera->image_capture_caps = NULL;
- camera->view_finder_caps = NULL;
- camera->allowed_caps = NULL;
-
- camera->zoom = DEFAULT_ZOOM;
-
- /* concurrency control */
- camera->capture_mutex = g_mutex_new ();
- camera->cond = g_cond_new ();
- camera->idle_cond = g_cond_new ();
- camera->processing_counter = 0;
-
- /* pad names for output and input selectors */
- camera->pad_src_view = NULL;
- camera->pad_view_src = NULL;
- camera->pad_src_img = NULL;
- camera->pad_src_vid = NULL;
- camera->pad_view_vid = NULL;
-
- camera->video_preview_buffer = NULL;
- camera->preview_caps = NULL;
- camera->video_preview_caps = NULL;
-
- /* image capture bin */
- camera->imgbin = g_object_new (GST_TYPE_CAMERABIN_IMAGE, NULL);
- gst_object_ref (camera->imgbin);
-
- /* video capture bin */
- camera->vidbin = g_object_new (GST_TYPE_CAMERABIN_VIDEO, NULL);
- gst_object_ref (camera->vidbin);
-
- /* view finder elements */
- camera->view_in_sel = NULL;
- camera->view_scale = NULL;
- camera->aspect_filter = NULL;
- camera->view_sink = NULL;
-
- camera->app_vf_sink = NULL;
- camera->app_viewfinder_filter = NULL;
-
- /* preview elements */
- camera->app_preview_source_filter = NULL;
- camera->app_video_preview_source_filter = NULL;
-
- /* source elements */
- camera->src_vid_src = NULL;
- camera->src_filter = NULL;
- camera->src_zoom_crop = NULL;
- camera->src_zoom_scale = NULL;
- camera->src_zoom_filter = NULL;
- camera->src_out_sel = NULL;
-
- camera->app_video_filter = NULL;
- camera->app_vid_src = NULL;
-
- camera->active_bin = NULL;
-}
-
-static void
-gst_camerabin_dispose (GObject * object)
-{
- GstCameraBin *camera;
-
- camera = GST_CAMERABIN (object);
-
- GST_DEBUG_OBJECT (camera, "disposing");
-
- gst_element_set_state (camera->imgbin, GST_STATE_NULL);
- gst_object_unref (camera->imgbin);
-
- gst_element_set_state (camera->vidbin, GST_STATE_NULL);
- gst_object_unref (camera->vidbin);
-
- if (camera->preview_pipeline) {
- gst_camerabin_preview_destroy_pipeline (camera->preview_pipeline);
- camera->preview_pipeline = NULL;
- }
- if (camera->video_preview_pipeline) {
- gst_camerabin_preview_destroy_pipeline (camera->video_preview_pipeline);
- camera->video_preview_pipeline = NULL;
- }
-
- camerabin_destroy_elements (camera);
- camerabin_dispose_elements (camera);
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-gst_camerabin_finalize (GObject * object)
-{
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-gst_camerabin_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstCameraBin *camera = GST_CAMERABIN (object);
-
- switch (prop_id) {
- case ARG_MUTE:
- gst_camerabin_video_set_mute (GST_CAMERABIN_VIDEO (camera->vidbin),
- g_value_get_boolean (value));
- break;
- case ARG_ZOOM:
- camera->zoom = g_value_get_float (value);
- /* does not set it if in NULL, the src is not created yet */
- if (GST_STATE (camera) != GST_STATE_NULL)
- gst_camerabin_setup_zoom (camera);
- break;
- case ARG_MODE:
- gst_camerabin_change_mode (camera, g_value_get_enum (value));
- break;
- case ARG_FLAGS:
- gst_camerabin_set_flags (camera, g_value_get_flags (value));
- break;
- case ARG_FILENAME:
- gst_camerabin_change_filename (camera, g_value_get_string (value));
- break;
- case ARG_VIDEO_POST:
- if (GST_STATE (camera->vidbin) != GST_STATE_NULL) {
- GST_WARNING_OBJECT (camera,
- "can't use set element until next video bin NULL to READY state change");
- }
- gst_camerabin_video_set_post (GST_CAMERABIN_VIDEO (camera->vidbin),
- g_value_get_object (value));
- break;
- case ARG_VIDEO_ENC:
- if (GST_STATE (camera->vidbin) != GST_STATE_NULL) {
- GST_WARNING_OBJECT (camera,
- "can't use set element until next video bin NULL to READY state change");
- }
- gst_camerabin_video_set_video_enc (GST_CAMERABIN_VIDEO (camera->vidbin),
- g_value_get_object (value));
- break;
- case ARG_AUDIO_ENC:
- if (GST_STATE (camera->vidbin) != GST_STATE_NULL) {
- GST_WARNING_OBJECT (camera,
- "can't use set element until next video bin NULL to READY state change");
- }
- gst_camerabin_video_set_audio_enc (GST_CAMERABIN_VIDEO (camera->vidbin),
- g_value_get_object (value));
- break;
- case ARG_VIDEO_MUX:
- if (GST_STATE (camera->vidbin) != GST_STATE_NULL) {
- GST_WARNING_OBJECT (camera,
- "can't use set element until next video bin NULL to READY state change");
- }
- gst_camerabin_video_set_muxer (GST_CAMERABIN_VIDEO (camera->vidbin),
- g_value_get_object (value));
- break;
- case ARG_IMAGE_POST:
- if (GST_STATE (camera->imgbin) != GST_STATE_NULL) {
- GST_WARNING_OBJECT (camera,
- "can't use set element until next image bin NULL to READY state change");
- }
- gst_camerabin_image_set_postproc (GST_CAMERABIN_IMAGE (camera->imgbin),
- g_value_get_object (value));
- break;
- case ARG_IMAGE_ENC:
- if (GST_STATE (camera->imgbin) != GST_STATE_NULL) {
- GST_WARNING_OBJECT (camera,
- "can't use set element until next image bin NULL to READY state change");
- }
- gst_camerabin_image_set_encoder (GST_CAMERABIN_IMAGE (camera->imgbin),
- g_value_get_object (value));
- break;
- case ARG_IMAGE_FORMATTER:
- if (GST_STATE (camera->imgbin) != GST_STATE_NULL) {
- GST_WARNING_OBJECT (camera,
- "can't use set element until next image bin NULL to READY state change");
- }
- gst_camerabin_image_set_formatter (GST_CAMERABIN_IMAGE (camera->imgbin),
- g_value_get_object (value));
- break;
- case ARG_VF_SINK:
- if (GST_STATE (camera) != GST_STATE_NULL) {
- GST_ELEMENT_ERROR (camera, CORE, FAILED,
- ("camerabin must be in NULL state when setting the view finder element"),
- (NULL));
- } else {
- if (camera->app_vf_sink)
- gst_object_unref (camera->app_vf_sink);
- camera->app_vf_sink = g_value_get_object (value);
- if (camera->app_vf_sink)
- gst_object_ref (camera->app_vf_sink);
- }
- break;
- case ARG_VIDEO_SRC:
- if (GST_STATE (camera) != GST_STATE_NULL) {
- GST_ELEMENT_ERROR (camera, CORE, FAILED,
- ("camerabin must be in NULL state when setting the video source element"),
- (NULL));
- } else {
- if (camera->app_vid_src)
- gst_object_unref (camera->app_vid_src);
- camera->app_vid_src = g_value_get_object (value);
- if (camera->app_vid_src)
- gst_object_ref (camera->app_vid_src);
- }
- break;
- case ARG_AUDIO_SRC:
- if (GST_STATE (camera->vidbin) != GST_STATE_NULL) {
- GST_WARNING_OBJECT (camera,
- "can't use set element until next video bin NULL to READY state change");
- }
- gst_camerabin_video_set_audio_src (GST_CAMERABIN_VIDEO (camera->vidbin),
- g_value_get_object (value));
- break;
- case ARG_VIDEO_SOURCE_FILTER:
- if (GST_STATE (camera) != GST_STATE_NULL) {
- GST_ELEMENT_ERROR (camera, CORE, FAILED,
- ("camerabin must be in NULL state when setting the video filter element"),
- (NULL));
- } else {
- if (camera->app_video_filter)
- gst_object_unref (camera->app_video_filter);
- camera->app_video_filter = g_value_dup_object (value);
- }
- break;
- case ARG_FILTER_CAPS:
- GST_OBJECT_LOCK (camera);
- gst_caps_replace (&camera->view_finder_caps,
- (GstCaps *) gst_value_get_caps (value));
- GST_OBJECT_UNLOCK (camera);
- if (!camera->view_finder_caps)
- camera->view_finder_caps =
- gst_caps_from_string (CAMERABIN_DEFAULT_VF_CAPS);
- gst_camerabin_configure_format (camera, camera->view_finder_caps);
- break;
- case ARG_PREVIEW_CAPS:
- {
- GstCameraBinPreviewPipelineData **prev_pipe = NULL;
- GstElement **preview_source_filter = NULL;
- GstCaps **prev_caps = NULL;
- GstCaps *new_caps = NULL;
-
- if (camera->mode == MODE_IMAGE) {
- prev_pipe = &camera->preview_pipeline;
- preview_source_filter = &camera->app_preview_source_filter;
- prev_caps = &camera->preview_caps;
- } else { /* MODE VIDEO */
- prev_pipe = &camera->video_preview_pipeline;
- preview_source_filter = &camera->app_video_preview_source_filter;
- prev_caps = &camera->video_preview_caps;
- }
-
- new_caps = (GstCaps *) gst_value_get_caps (value);
-
- if (prev_caps && !gst_caps_is_equal (*prev_caps, new_caps)) {
- GST_DEBUG_OBJECT (camera,
- "setting preview caps: %" GST_PTR_FORMAT, new_caps);
-
- GST_OBJECT_LOCK (camera);
- gst_caps_replace (prev_caps, new_caps);
- GST_OBJECT_UNLOCK (camera);
-
- if (new_caps && !gst_caps_is_any (new_caps) &&
- !gst_caps_is_empty (new_caps)) {
- if (!*prev_pipe) {
- *prev_pipe =
- gst_camerabin_preview_create_pipeline (GST_ELEMENT (camera),
- new_caps, *preview_source_filter);
- } else {
- gst_camerabin_preview_set_caps (*prev_pipe, new_caps);
- }
- }
- }
- break;
- }
- case ARG_PREVIEW_SOURCE_FILTER:
- if (GST_STATE (camera) != GST_STATE_NULL) {
- GST_ELEMENT_ERROR (camera, CORE, FAILED,
- ("camerabin must be in NULL state when setting the preview source filter element"),
- (NULL));
- } else {
- GstCameraBinPreviewPipelineData **preview_pipe = NULL;
- GstElement **preview_source_filter = NULL;
- GstCaps *preview_caps = NULL;
-
- if (camera->mode == MODE_IMAGE) {
- preview_pipe = &camera->preview_pipeline;
- preview_source_filter = &camera->app_preview_source_filter;
- preview_caps = camera->preview_caps;
- } else { /* MODE VIDEO */
- preview_pipe = &camera->video_preview_pipeline;
- preview_source_filter = &camera->app_video_preview_source_filter;
- preview_caps = camera->video_preview_caps;
- }
-
- if (*preview_source_filter)
- gst_object_unref (*preview_source_filter);
- *preview_source_filter = g_value_dup_object (value);
-
- if (*preview_pipe) {
- gst_camerabin_preview_destroy_pipeline (*preview_pipe);
- *preview_pipe =
- gst_camerabin_preview_create_pipeline (GST_ELEMENT (camera),
- preview_caps, *preview_source_filter);
- }
- }
- break;
- case ARG_VIEWFINDER_FILTER:
- if (GST_STATE (camera) != GST_STATE_NULL) {
- GST_ELEMENT_ERROR (camera, CORE, FAILED,
- ("camerabin must be in NULL state when setting the viewfinder filter element"),
- (NULL));
- } else {
- if (camera->app_viewfinder_filter)
- gst_object_unref (camera->app_viewfinder_filter);
- camera->app_viewfinder_filter = g_value_dup_object (value);
- }
- break;
- case ARG_BLOCK_VIEWFINDER:
- gst_camerabin_change_viewfinder_blocking (camera,
- g_value_get_boolean (value));
- break;
- case ARG_IMAGE_CAPTURE_WIDTH:
- {
- gint width = g_value_get_int (value);
-
- if (width != camera->image_capture_width) {
- camera->image_capture_width = width;
- camera->image_capture_caps_update = TRUE;
- }
- }
- break;
- case ARG_IMAGE_CAPTURE_HEIGHT:
- {
- gint height = g_value_get_int (value);
-
- if (height != camera->image_capture_height) {
- camera->image_capture_height = height;
- camera->image_capture_caps_update = TRUE;
- }
- }
- break;
- case ARG_VIDEO_CAPTURE_WIDTH:
- {
- gint width = g_value_get_int (value);
-
- camera->app_width = width;
-
- if (width != camera->width) {
- camera->width = width;
- camera->video_capture_caps_update = TRUE;
- }
- }
- break;
- case ARG_VIDEO_CAPTURE_HEIGHT:
- {
- gint height = g_value_get_int (value);
-
- camera->app_height = height;
-
- if (height != camera->height) {
- camera->height = height;
- camera->video_capture_caps_update = TRUE;
- }
- }
- break;
- case ARG_VIDEO_CAPTURE_FRAMERATE:
- {
- gint fps_n, fps_d;
-
- fps_n = gst_value_get_fraction_numerator (value);
- fps_d = gst_value_get_fraction_denominator (value);
-
- camera->app_fps_n = fps_n;
- camera->app_fps_d = fps_d;
-
- if (fps_n != camera->fps_n || fps_d != camera->fps_d) {
- camera->fps_n = fps_n;
- camera->fps_d = fps_d;
- camera->video_capture_caps_update = TRUE;
- }
- }
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_camerabin_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstCameraBin *camera = GST_CAMERABIN (object);
-
- switch (prop_id) {
- case ARG_FILENAME:
- g_value_set_string (value, camera->filename->str);
- break;
- case ARG_MODE:
- g_value_set_enum (value, camera->mode);
- break;
- case ARG_FLAGS:
- g_value_set_flags (value, camera->flags);
- break;
- case ARG_MUTE:
- g_value_set_boolean (value,
- gst_camerabin_video_get_mute (GST_CAMERABIN_VIDEO (camera->vidbin)));
- break;
- case ARG_ZOOM:
- g_value_set_float (value, camera->zoom);
- break;
- case ARG_IMAGE_POST:
- g_value_set_object (value,
- gst_camerabin_image_get_postproc (GST_CAMERABIN_IMAGE
- (camera->imgbin)));
- break;
- case ARG_IMAGE_ENC:
- g_value_set_object (value,
- gst_camerabin_image_get_encoder (GST_CAMERABIN_IMAGE
- (camera->imgbin)));
- break;
- case ARG_IMAGE_FORMATTER:
- g_value_set_object (value,
- gst_camerabin_image_get_formatter (GST_CAMERABIN_IMAGE
- (camera->imgbin)));
- break;
- case ARG_VIDEO_POST:
- g_value_set_object (value,
- gst_camerabin_video_get_post (GST_CAMERABIN_VIDEO (camera->vidbin)));
- break;
- case ARG_VIDEO_ENC:
- g_value_set_object (value,
- gst_camerabin_video_get_video_enc (GST_CAMERABIN_VIDEO
- (camera->vidbin)));
- break;
- case ARG_AUDIO_ENC:
- g_value_set_object (value,
- gst_camerabin_video_get_audio_enc (GST_CAMERABIN_VIDEO
- (camera->vidbin)));
- break;
- case ARG_VIDEO_MUX:
- g_value_set_object (value,
- gst_camerabin_video_get_muxer (GST_CAMERABIN_VIDEO (camera->vidbin)));
- break;
- case ARG_VF_SINK:
- if (camera->view_sink)
- g_value_set_object (value, camera->view_sink);
- else
- g_value_set_object (value, camera->app_vf_sink);
- break;
- case ARG_VIDEO_SRC:
- if (camera->src_vid_src)
- g_value_set_object (value, camera->src_vid_src);
- else
- g_value_set_object (value, camera->app_vid_src);
- break;
- case ARG_AUDIO_SRC:
- g_value_set_object (value,
- gst_camerabin_video_get_audio_src (GST_CAMERABIN_VIDEO
- (camera->vidbin)));
- break;
- case ARG_VIDEO_SOURCE_FILTER:
- g_value_set_object (value, camera->app_video_filter);
- break;
- case ARG_INPUT_CAPS:
- gst_value_set_caps (value, gst_camerabin_get_allowed_input_caps (camera));
- break;
- case ARG_FILTER_CAPS:
- gst_value_set_caps (value, camera->view_finder_caps);
- break;
- case ARG_PREVIEW_CAPS:
- if (camera->mode == MODE_IMAGE)
- gst_value_set_caps (value, camera->preview_caps);
- else if (camera->mode == MODE_VIDEO)
- gst_value_set_caps (value, camera->video_preview_caps);
- break;
- case ARG_PREVIEW_SOURCE_FILTER:
- if (camera->mode == MODE_IMAGE)
- g_value_set_object (value, camera->app_preview_source_filter);
- else if (camera->mode == MODE_VIDEO)
- g_value_set_object (value, camera->app_video_preview_source_filter);
- break;
- case ARG_VIEWFINDER_FILTER:
- g_value_set_object (value, camera->app_viewfinder_filter);
- break;
- case ARG_BLOCK_VIEWFINDER:
- g_value_set_boolean (value, camera->block_viewfinder_prop);
- break;
- case ARG_READY_FOR_CAPTURE:
- g_mutex_lock (camera->capture_mutex);
- g_value_set_boolean (value, !camera->capturing);
- g_mutex_unlock (camera->capture_mutex);
- break;
- case ARG_IMAGE_CAPTURE_WIDTH:
- g_value_set_int (value, camera->image_capture_width);
- break;
- case ARG_IMAGE_CAPTURE_HEIGHT:
- g_value_set_int (value, camera->image_capture_height);
- break;
- case ARG_VIDEO_CAPTURE_WIDTH:
- g_value_set_int (value, camera->app_width);
- break;
- case ARG_VIDEO_CAPTURE_HEIGHT:
- g_value_set_int (value, camera->app_height);
- break;
- case ARG_VIDEO_CAPTURE_FRAMERATE:
- gst_value_set_fraction (value, camera->app_fps_n, camera->app_fps_d);
- break;
- case ARG_IDLE:
- g_value_set_boolean (value, camera->processing_counter == 0);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-/*
- * GstElement functions implementation
- */
-
-static GstStateChangeReturn
-gst_camerabin_change_state (GstElement * element, GstStateChange transition)
-{
- GstCameraBin *camera = GST_CAMERABIN (element);
- GstStateChangeReturn ret;
-
- GST_DEBUG_OBJECT (element, "changing state: %s -> %s",
- gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
- gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)));
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- if (!camerabin_create_elements (camera)) {
- ret = GST_STATE_CHANGE_FAILURE;
- goto done;
- }
- /* Lock to control image and video bin state separately
- from view finder */
- gst_element_set_locked_state (camera->imgbin, TRUE);
- gst_element_set_locked_state (camera->vidbin, TRUE);
- break;
- case GST_STATE_CHANGE_READY_TO_PAUSED:
- camerabin_setup_src_elements (camera);
- break;
- case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
- /* If using autovideosink, set view finder sink properties
- now that actual sink has been created. */
- camerabin_setup_view_elements (camera);
- break;
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- /* all processing should stop and those elements could have their state
- * locked, so set them explicitly here */
- if (GST_STATE (camera->imgbin) != GST_STATE_NULL) {
- gst_element_set_state (camera->imgbin, GST_STATE_READY);
- }
- if (GST_STATE (camera->vidbin) != GST_STATE_NULL) {
- gst_element_set_state (camera->vidbin, GST_STATE_READY);
- }
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- gst_element_set_locked_state (camera->imgbin, FALSE);
- gst_element_set_locked_state (camera->vidbin, FALSE);
- break;
- default:
- break;
- }
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- GST_DEBUG_OBJECT (element, "after chaining up: %s -> %s = %s",
- gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
- gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)),
- gst_element_state_change_return_get_name (ret));
-
- switch (transition) {
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- g_mutex_lock (camera->capture_mutex);
- if (camera->capturing) {
- GST_WARNING_OBJECT (camera, "was capturing when changing to READY");
- camera->capturing = FALSE;
- /* Reset capture and don't wait for capturing to finish properly.
- Proper capturing should have been finished before going to READY. */
- gst_camerabin_reset_to_view_finder (camera);
- g_cond_signal (camera->cond);
- }
-
- /* reset processing counter */
- GST_DEBUG_OBJECT (camera, "Reset processing counter from %d to 0",
- camera->processing_counter);
- camera->processing_counter = 0;
- g_cond_signal (camera->idle_cond);
- g_object_notify (G_OBJECT (camera), "idle");
- g_mutex_unlock (camera->capture_mutex);
-
- /* unblock the viewfinder, but keep the property as is */
- gst_pad_set_blocked_async (camera->pad_src_view, FALSE,
- (GstPadBlockCallback) camerabin_pad_blocked, camera);
-
- g_signal_handlers_disconnect_by_func (camera->src_vid_src,
- gst_camerabin_scene_mode_notify_cb, camera);
- g_signal_handlers_disconnect_by_func (camera->src_vid_src,
- gst_camerabin_zoom_notify_cb, camera);
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- camerabin_destroy_elements (camera);
- break;
- /* In some error situation camerabin may end up being still in NULL
- state so we must take care of destroying elements. */
- case GST_STATE_CHANGE_NULL_TO_READY:
- if (ret == GST_STATE_CHANGE_FAILURE)
- camerabin_destroy_elements (camera);
- break;
- default:
- break;
- }
-
-done:
- GST_DEBUG_OBJECT (element, "changed state: %s -> %s = %s",
- gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
- gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)),
- gst_element_state_change_return_get_name (ret));
-
- return ret;
-}
-
-static GstClock *
-gst_camerabin_provide_clock (GstElement * element)
-{
- GstClock *clock = NULL;
- GstClock *vidbin_clock = NULL;
- GstCameraBin *camera = GST_CAMERABIN (element);
- GstElement *aud_src = GST_CAMERABIN_VIDEO (camera->vidbin)->aud_src;
-
- if (aud_src)
- vidbin_clock = gst_element_provide_clock (aud_src);
-
- if (camera->capturing && camera->mode == MODE_VIDEO && vidbin_clock)
- clock = vidbin_clock;
- else {
- clock = GST_ELEMENT_CLASS (parent_class)->provide_clock (element);
- if (clock == vidbin_clock) {
- /* Do not reuse vidbin_clock if it was current clock */
- clock = gst_system_clock_obtain ();
- }
- }
-
- GST_INFO_OBJECT (camera, "Reset pipeline clock to %p(%s)",
- clock, GST_ELEMENT_NAME (clock));
-
- return clock;
-}
-
-static gpointer
-gst_camerabin_imgbin_finished (gpointer u_data)
-{
- GstCameraBin *camera = GST_CAMERABIN (u_data);
- gchar *filename = NULL;
-
- /* FIXME: should set a flag (and take a lock) when going to NULL, so we
- * short-circuit this bit if we got shut down between thread create and now */
-
- GST_DEBUG_OBJECT (camera, "Image encoding finished");
-
- /* Get the filename of the finished image */
- g_object_get (G_OBJECT (camera->imgbin), "filename", &filename, NULL);
-
- /* Close the file of saved image */
- gst_element_set_state (camera->imgbin, GST_STATE_READY);
- GST_DEBUG_OBJECT (camera, "Image pipeline set to READY");
-
- g_mutex_lock (camera->capture_mutex);
- if (camera->processing_counter) {
- CAMERABIN_PROCESSING_DEC_UNLOCKED (camera);
- } else {
- /* Camerabin state change to READY may have reset processing counter to
- * zero. This is possible as this functions is scheduled from another
- * thread.
- */
- GST_WARNING_OBJECT (camera, "camerabin has been forced to idle");
- }
- g_mutex_unlock (camera->capture_mutex);
-
- /* Set image bin back to PAUSED so that buffer-allocs don't fail */
- gst_element_set_state (camera->imgbin, GST_STATE_PAUSED);
-
- /* Unblock image queue pad to process next buffer */
- GST_STATE_LOCK (camera);
- if (camera->pad_src_queue) {
- gst_pad_set_blocked_async (camera->pad_src_queue, FALSE,
- (GstPadBlockCallback) camerabin_pad_blocked, camera);
- GST_DEBUG_OBJECT (camera, "Queue srcpad unblocked");
- } else {
- GST_DEBUG_OBJECT (camera, "Queue srcpad unreffed already, doesn't need "
- "to unblock");
- }
- GST_STATE_UNLOCK (camera);
-
- /* Send image-done signal */
- gst_camerabin_image_capture_continue (camera, filename);
- g_free (filename);
-
- GST_INFO_OBJECT (camera, "leaving helper thread");
- gst_object_unref (camera);
- return NULL;
-}
-
-/*
- * GstBin functions implementation
- */
-
-/* Peek eos messages but don't interfere with bin msg handling */
-static void
-gst_camerabin_handle_message_func (GstBin * bin, GstMessage * msg)
-{
- GstCameraBin *camera = GST_CAMERABIN (bin);
-
- switch (GST_MESSAGE_TYPE (msg)) {
- case GST_MESSAGE_EOS:
- if (GST_MESSAGE_SRC (msg) == GST_OBJECT (camera->vidbin)) {
- /* Video eos */
- GST_DEBUG_OBJECT (camera,
- "got video eos message, stopping video capture");
- g_mutex_lock (camera->capture_mutex);
- camera->capturing = FALSE;
- g_cond_signal (camera->cond);
-
- CAMERABIN_PROCESSING_DEC_UNLOCKED (camera);
- g_mutex_unlock (camera->capture_mutex);
- } else if (GST_MESSAGE_SRC (msg) == GST_OBJECT (camera->imgbin)) {
- /* Image eos */
- GST_DEBUG_OBJECT (camera, "got image eos message");
- /* Can't change state here, since we're in the streaming thread */
- if (!g_thread_create (gst_camerabin_imgbin_finished,
- gst_object_ref (camera), FALSE, NULL)) {
- /* FIXME: what do do if this fails? */
- gst_object_unref (camera);
- }
- }
- break;
- case GST_MESSAGE_ERROR:
- GST_DEBUG_OBJECT (camera, "error from child %" GST_PTR_FORMAT,
- GST_MESSAGE_SRC (msg));
- g_mutex_lock (camera->capture_mutex);
- if (camera->capturing) {
- camera->capturing = FALSE;
- g_cond_signal (camera->cond);
- }
-
- /* Ideally we should check what error was and only decrement the
- * counter if the error means that a 'processing' operation failed,
- * instead of a setting up error. But this can be quite tricky to do
- * and we expect the app to set the whole pipeline to READY/NULL
- * when an error happens. For now we just mention that the
- * processing counter and the 'idle' property are unreliable */
- GST_DEBUG_OBJECT (camera, "An error makes the processing counter "
- "unreliable");
-
- g_mutex_unlock (camera->capture_mutex);
- break;
- default:
- break;
- }
- GST_BIN_CLASS (parent_class)->handle_message (bin, msg);
-}
-
-/*
- * Action signal function implementation
- */
-
-static void
-gst_camerabin_capture_start (GstCameraBin * camera)
-{
-
- GST_INFO_OBJECT (camera, "starting capture");
- if (camera->paused) {
- gst_camerabin_capture_pause (camera);
- return;
- }
-
- if (!camera->active_bin) {
- GST_INFO_OBJECT (camera, "mode not explicitly set by application");
- gst_camerabin_change_mode (camera, camera->mode);
- if (!camera->active_bin) {
- GST_ELEMENT_ERROR (camera, CORE, FAILED,
- ("starting capture failed"), (NULL));
- }
- }
-
- /* We need a filename unless it's a photo and preview_caps is set */
-
- if (g_str_equal (camera->filename->str, ""))
- if (camera->active_bin == camera->vidbin || !camera->preview_caps) {
- GST_ELEMENT_ERROR (camera, CORE, FAILED,
- ("set filename before starting capture"), (NULL));
- return;
- }
-
- g_mutex_lock (camera->capture_mutex);
- if (camera->capturing) {
- GST_WARNING_OBJECT (camera, "capturing \"%s\" ongoing, set new filename",
- camera->filename->str);
- /* FIXME: we need to send something more to the app, so that it does not for
- * for image-done */
- g_mutex_unlock (camera->capture_mutex);
- return;
- }
- CAMERABIN_PROCESSING_INC_UNLOCKED (camera);
- g_mutex_unlock (camera->capture_mutex);
-
- GST_OBJECT_LOCK (camera);
- camera->block_viewfinder_trigger = camera->block_viewfinder_prop;
- GST_OBJECT_UNLOCK (camera);
-
- if (camera->active_bin) {
- if (camera->active_bin == camera->imgbin) {
- GST_INFO_OBJECT (camera, "starting image capture");
- gst_camerabin_start_image_capture (camera);
- } else if (camera->active_bin == camera->vidbin) {
- GST_INFO_OBJECT (camera,
- "setting video filename and starting video capture");
- g_object_set (G_OBJECT (camera->active_bin), "filename",
- camera->filename->str, NULL);
- gst_camerabin_start_video_recording (camera);
- }
- }
- /* Capturing is now ongoing, notify that new capture isn't possible */
- g_object_notify (G_OBJECT (camera), "ready-for-capture");
-}
-
-static void
-gst_camerabin_capture_stop (GstCameraBin * camera)
-{
- if (camera->active_bin == camera->vidbin) {
- GST_INFO_OBJECT (camera, "stopping video capture");
- gst_camerabin_do_stop (camera);
- gst_camerabin_reset_to_view_finder (camera);
- /* Video capture stopped, notify that preparing a new capture is possible */
- g_object_notify (G_OBJECT (camera), "ready-for-capture");
- } else {
- GST_INFO_OBJECT (camera, "stopping image capture isn't needed");
- }
-}
-
-static void
-gst_camerabin_capture_pause (GstCameraBin * camera)
-{
- if (camera->active_bin == camera->vidbin) {
- if (!camera->paused) {
- GST_INFO_OBJECT (camera, "pausing capture");
-
- /* Bring all camerabin elements to PAUSED */
- gst_element_set_locked_state (camera->vidbin, FALSE);
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PAUSED);
-
- /* Switch to view finder mode */
- g_object_set (G_OBJECT (camera->src_out_sel), "resend-latest", FALSE,
- "active-pad", camera->pad_src_view, NULL);
-
- /* Set view finder to PLAYING and leave videobin PAUSED */
- gst_element_set_locked_state (camera->vidbin, TRUE);
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING);
-
- camera->paused = TRUE;
- } else {
- GST_INFO_OBJECT (camera, "unpausing capture");
-
- /* Bring all camerabin elements to PAUSED */
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PAUSED);
-
- /* Switch to video recording mode */
- g_object_set (G_OBJECT (camera->src_out_sel), "resend-latest", TRUE,
- "active-pad", camera->pad_src_vid, NULL);
-
- /* Bring all camerabin elements to PLAYING */
- gst_element_set_locked_state (camera->vidbin, FALSE);
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING);
- gst_element_set_locked_state (camera->vidbin, TRUE);
-
- camera->paused = FALSE;
- }
- GST_DEBUG_OBJECT (camera, "pause done");
- } else {
- GST_WARNING ("pausing in image capture mode disabled");
- }
-}
-
-/*
- * Updates the properties (excluding the user preferred width/height/fps) and
- * tells camerabin to update the video capture caps.
- */
-static void
-do_set_video_resolution_fps (GstCameraBin * camera, gint width,
- gint height, gint fps_n, gint fps_d)
-{
- if (height != camera->height) {
- camera->height = height;
- camera->video_capture_caps_update = TRUE;
- }
- if (width != camera->width) {
- camera->width = width;
- camera->video_capture_caps_update = TRUE;
- }
- if (fps_n != camera->fps_n) {
- camera->fps_n = fps_n;
- camera->video_capture_caps_update = TRUE;
- }
- if (fps_d != camera->fps_d) {
- camera->fps_d = fps_d;
- camera->video_capture_caps_update = TRUE;
- }
-
- reset_video_capture_caps (camera);
-}
-
-/*
- * Updates the properties (including the user preferred width/height/fps) and
- * tells camerabin to update the video capture caps.
- */
-static void
-gst_camerabin_set_video_resolution_fps (GstCameraBin * camera, gint width,
- gint height, gint fps_n, gint fps_d)
-{
- g_object_set (camera, "video-capture-width", width, "video-capture-height",
- height, "video-capture-framerate", fps_n, fps_d, NULL);
-
- reset_video_capture_caps (camera);
-}
-
-static void
-gst_camerabin_set_image_capture_caps (GstCameraBin * camera, gint width,
- gint height)
-{
- GstStructure *structure;
- GstCaps *new_caps = NULL;
-
- g_return_if_fail (camera != NULL);
-
- if (width && height && camera->view_finder_caps) {
- /* Use view finder mode caps as a basis */
- structure = gst_caps_get_structure (camera->view_finder_caps, 0);
-
- /* Set new resolution for image capture */
- new_caps = gst_caps_new_simple (gst_structure_get_name (structure),
- "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
-
- /* Set allowed framerate for the resolution. */
- gst_camerabin_set_allowed_framerate (camera, new_caps);
- }
-
- GST_INFO_OBJECT (camera,
- "init filter caps for image capture %" GST_PTR_FORMAT, new_caps);
- gst_caps_replace (&camera->image_capture_caps, new_caps);
- camera->image_capture_caps_update = FALSE;
- if (new_caps)
- gst_caps_unref (new_caps);
-}
-
-static void
-gst_camerabin_set_image_resolution (GstCameraBin * camera, gint width,
- gint height)
-{
- g_object_set (camera, "image-capture-width", (guint16) width,
- "image-capture-height", (guint16) height, NULL);
-}
-
-/* entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and pad templates
- * register the features
- */
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- GST_DEBUG_CATEGORY_INIT (gst_camerabin_debug, "camerabin", 0, "CameraBin");
-
- return gst_element_register (plugin, "camerabin",
- GST_RANK_NONE, GST_TYPE_CAMERABIN);
-}
-
-/* this is the structure that gstreamer looks for to register plugins
- */
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- camerabin,
- "High level api for DC (Digital Camera) application",
- plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/gst/camerabin/gstcamerabin.h b/gst/camerabin/gstcamerabin.h
deleted file mode 100644
index 1c0a075f..00000000
--- a/gst/camerabin/gstcamerabin.h
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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_CAMERABIN_H__
-#define __GST_CAMERABIN_H__
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <gst/gstbin.h>
-#include <gst/interfaces/photography.h>
-
-#include "gstcamerabin-enum.h"
-#include "camerabinimage.h"
-#include "camerabinvideo.h"
-#include "camerabinpreview.h"
-
-G_BEGIN_DECLS
-/* #defines don't like whitespacey bits */
-#define GST_TYPE_CAMERABIN \
- (gst_camerabin_get_type())
-#define GST_CAMERABIN(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_CAMERABIN,GstCameraBin))
-#define GST_CAMERABIN_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_CAMERABIN,GstCameraBinClass))
-#define GST_IS_CAMERABIN(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_CAMERABIN))
-#define GST_IS_CAMERABIN_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CAMERABIN))
-typedef struct _GstCameraBin GstCameraBin;
-typedef struct _GstCameraBinClass GstCameraBinClass;
-
-/**
- * GstCameraBin:
- *
- * The opaque #GstCameraBin structure.
- */
-
-struct _GstCameraBin
-{
- GstPipeline parent;
-
- /* private */
- GString *filename;
- gint mode; /* MODE_IMAGE or MODE_VIDEO */
- GstCameraBinFlags flags;
- gboolean stop_requested; /* TRUE if capturing stop needed */
- gboolean paused; /* TRUE if capturing paused */
-
- /*
- * Those 2 booleans work together.
- *
- * 'block_viewfinder_prop' is the property, 'block_viewfinder_trigger'
- * is the flag that actually makes the viewfinder block after capture.
- * We need both to avoid blocking the viewfinder if the application resets
- * the flag after issuing the 'capture-start', but before the actual
- * blocking happens. This causes the viewfinder to block even though
- * the application resetted the flag to keep it running already.
- *
- * Here's how this should work:
- * When a capture is started, the property is checked, if it is TRUE, the
- * trigger is set to TRUE. The blocking will only happen if
- * the trigger is TRUE after image capture finishes, ff the property
- * is reset before the blocking happens, the trigger goes to
- * FALSE and no blocking happens.
- */
- gboolean block_viewfinder_prop; /* TRUE if viewfinder blocks after capture */
- gboolean block_viewfinder_trigger;
-
- /* Resolution of the buffers configured to camerabin */
- gint width;
- gint height;
- /* Frames per second configured to camerabin */
- gint fps_n;
- gint fps_d;
-
- /* app configured resolution/framerate */
- gint app_width;
- gint app_height;
- gint app_fps_n;
- gint app_fps_d;
-
- gboolean video_capture_caps_update;
-
- /* Image capture resolution */
- gint image_capture_width;
- gint image_capture_height;
-
- /* Image tags are collected here first before sending to imgbin */
- GstTagList *event_tags;
-
- /* Caps applied to capsfilters when taking still image */
- GstCaps *image_capture_caps;
- gboolean image_capture_caps_update;
-
- /* Caps applied to capsfilters when in view finder mode */
- GstCaps *view_finder_caps;
-
- /* Caps that videosrc supports */
- GstCaps *allowed_caps;
-
- /* Caps used to create preview image */
- GstCaps *preview_caps;
-
- /* Caps used to create video preview image */
- GstCaps *video_preview_caps;
-
- /* The digital zoom (from 1.0 to 10.0) */
- gfloat zoom;
-
- /* concurrency control */
- GMutex *capture_mutex;
- GCond *cond;
- GCond *idle_cond;
- gboolean capturing;
- gboolean eos_handled;
- /* everytime a new capture is started this is incremented, when it is
- * finished/fails it is decremented. Used to know if camerabin is idle */
- gint processing_counter;
-
- /* pad names for output and input selectors */
- GstPad *pad_src_view;
- GstPad *pad_view_src;
- GstPad *pad_src_img;
- GstPad *pad_src_vid;
- GstPad *pad_view_vid;
- GstPad *pad_src_queue;
-
- GstElement *img_queue; /* queue for decoupling capture from
- image-postprocessing and saving */
- GstElement *imgbin; /* bin that holds image capturing elements */
- GstElement *vidbin; /* bin that holds video capturing elements */
- GstElement *active_bin; /* image or video bin that is currently in use */
- /* pipeline for creating preview images */
- GstCameraBinPreviewPipelineData *preview_pipeline;
- /* pipeline for creating video preview image */
- GstCameraBinPreviewPipelineData *video_preview_pipeline;
-
- GstBuffer *video_preview_buffer; /* buffer for storing video preview */
-
- /* source elements */
- GstElement *src_vid_src;
- GstElement *src_filter;
- GstElement *src_zoom_crop;
- GstElement *src_zoom_scale;
- GstElement *src_zoom_filter;
- GstElement *src_out_sel;
-
- /* view finder elements */
- GstElement *view_in_sel;
- GstElement *aspect_filter;
- GstElement *view_scale;
- GstElement *view_sink;
-
- /* Application configurable elements */
- GstElement *app_vid_src;
- GstElement *app_vf_sink;
- GstElement *app_video_filter;
- GstElement *app_viewfinder_filter;
- GstElement *app_preview_source_filter;
- GstElement *app_video_preview_source_filter;
-
- /* Night mode handling */
- gboolean night_mode;
- gint pre_night_fps_n;
- gint pre_night_fps_d;
-
- /* Buffer probe id for captured image handling */
- gulong image_captured_id;
-
- /* Optional base crop for frames. Used to crop frames e.g.
- due to wrong aspect ratio, before the crop related to zooming. */
- gint base_crop_top;
- gint base_crop_bottom;
- gint base_crop_left;
- gint base_crop_right;
-};
-
-/**
- * GstCameraBinClass:
- *
- * The #GstCameraBin class structure.
- */
-struct _GstCameraBinClass
-{
- GstPipelineClass parent_class;
-
- /* action signals */
-
- void (*capture_start) (GstCameraBin * camera);
- void (*capture_stop) (GstCameraBin * camera);
- void (*capture_pause) (GstCameraBin * camera);
- void (*set_video_resolution_fps) (GstCameraBin * camera, gint width,
- gint height, gint fps_n, gint fps_d);
- void (*set_image_resolution) (GstCameraBin * camera, gint width, gint height);
-
- /* signals (callback) */
-
- gboolean (*img_done) (GstCameraBin * camera, const gchar * filename);
-};
-
-/**
- * GstCameraBinMode:
- * @MODE_IMAGE: image capture
- * @MODE_VIDEO: video capture
- *
- * Capture mode to use.
- */
-typedef enum
-{
- MODE_IMAGE = 0,
- MODE_VIDEO
-} GstCameraBinMode;
-
-GType gst_camerabin_get_type (void);
-
-G_END_DECLS
-#endif /* #ifndef __GST_CAMERABIN_H__ */
diff --git a/gst/camerabin/gstcamerabincolorbalance.c b/gst/camerabin/gstcamerabincolorbalance.c
deleted file mode 100644
index 54899fab..00000000
--- a/gst/camerabin/gstcamerabincolorbalance.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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.
- */
-
-/*
- * Includes
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "gstcamerabincolorbalance.h"
-#include "gstcamerabin.h"
-
-/*
- * static functions implementation
- */
-
-static const GList *
-gst_camerabin_color_balance_list_channels (GstColorBalance * cb)
-{
- if (cb && GST_CAMERABIN (cb)->src_vid_src) {
- GstColorBalance *cbl = GST_COLOR_BALANCE (GST_CAMERABIN (cb)->src_vid_src);
- return gst_color_balance_list_channels (cbl);
- } else {
- return NULL;
- }
-}
-
-static void
-gst_camerabin_color_balance_set_value (GstColorBalance * cb,
- GstColorBalanceChannel * channel, gint value)
-{
- if (cb && GST_CAMERABIN (cb)->src_vid_src) {
- GstColorBalance *cbl = GST_COLOR_BALANCE (GST_CAMERABIN (cb)->src_vid_src);
- gst_color_balance_set_value (cbl, channel, value);
- }
-}
-
-static gint
-gst_camerabin_color_balance_get_value (GstColorBalance * cb,
- GstColorBalanceChannel * channel)
-{
- if (cb && GST_CAMERABIN (cb)->src_vid_src) {
- GstColorBalance *cbl = GST_COLOR_BALANCE (GST_CAMERABIN (cb)->src_vid_src);
- return gst_color_balance_get_value (cbl, channel);
- } else {
- return 0;
- }
-}
-
-/*
- * extern functions implementation
- */
-
-void
-gst_camerabin_color_balance_init (GstColorBalanceInterface * iface)
-{
- /* FIXME: to get the same type as v4l2src */
- GST_COLOR_BALANCE_TYPE (iface) = GST_COLOR_BALANCE_HARDWARE;
- iface->list_channels = gst_camerabin_color_balance_list_channels;
- iface->set_value = gst_camerabin_color_balance_set_value;
- iface->get_value = gst_camerabin_color_balance_get_value;
-}
diff --git a/gst/camerabin/gstcamerabincolorbalance.h b/gst/camerabin/gstcamerabincolorbalance.h
deleted file mode 100644
index 81984e7f..00000000
--- a/gst/camerabin/gstcamerabincolorbalance.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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_CAMERA_COLOR_BALANCE_H__
-#define __GST_CAMERA_COLOR_BALANCE_H__
-
-#include <gst/interfaces/colorbalance.h>
-
-extern void gst_camerabin_color_balance_init (GstColorBalanceInterface * iface);
-
-#endif /* #ifndef __GST_CAMERA_COLOR_BALANCE_H__ */
diff --git a/gst/camerabin/gstinputselector.c b/gst/camerabin/gstinputselector.c
deleted file mode 100644
index 6af1918a..00000000
--- a/gst/camerabin/gstinputselector.c
+++ /dev/null
@@ -1,1499 +0,0 @@
-/* GStreamer
- * Copyright (C) 2003 Julien Moutte <julien@moutte.net>
- * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (C) 2005 Jan Schmidt <thaytan@mad.scientist.com>
- * Copyright (C) 2007 Wim Taymans <wim.taymans@gmail.com>
- * Copyright (C) 2007 Andy Wingo <wingo@pobox.com>
- * Copyright (C) 2008 Nokia Corporation. (contact <stefan.kost@nokia.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.
- */
-
-/**
- * SECTION:element-input-selector
- * @see_also: #GstOutputSelector
- *
- * Direct one out of N input streams to the output pad.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string.h>
-
-#include <gst/glib-compat-private.h>
-#include "gstinputselector.h"
-#include "gstcamerabin-marshal.h"
-
-GST_DEBUG_CATEGORY_STATIC (input_selector_debug);
-#define GST_CAT_DEFAULT input_selector_debug
-
-static GstStaticPadTemplate gst_input_selector_sink_factory =
-GST_STATIC_PAD_TEMPLATE ("sink_%u",
- GST_PAD_SINK,
- GST_PAD_REQUEST,
- GST_STATIC_CAPS_ANY);
-
-static GstStaticPadTemplate gst_input_selector_src_factory =
-GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS_ANY);
-
-enum
-{
- PROP_0,
- PROP_N_PADS,
- PROP_ACTIVE_PAD,
- PROP_SELECT_ALL,
- PROP_LAST
-};
-
-#define DEFAULT_PAD_ALWAYS_OK TRUE
-
-enum
-{
- PROP_PAD_0,
- PROP_PAD_RUNNING_TIME,
- PROP_PAD_TAGS,
- PROP_PAD_ACTIVE,
- PROP_PAD_ALWAYS_OK,
- PROP_PAD_LAST
-};
-
-enum
-{
- /* methods */
- SIGNAL_BLOCK,
- SIGNAL_SWITCH,
- LAST_SIGNAL
-};
-static guint gst_input_selector_signals[LAST_SIGNAL] = { 0 };
-
-static inline gboolean gst_input_selector_is_active_sinkpad (GstInputSelector *
- sel, GstPad * pad);
-static GstPad *gst_input_selector_activate_sinkpad (GstInputSelector * sel,
- GstPad * pad);
-static GstPad *gst_input_selector_get_linked_pad (GstPad * pad,
- gboolean strict);
-static gboolean gst_input_selector_check_eos (GstElement * selector);
-
-#define GST_TYPE_SELECTOR_PAD \
- (gst_selector_pad_get_type())
-#define GST_SELECTOR_PAD(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_SELECTOR_PAD, GstSelectorPad))
-#define GST_SELECTOR_PAD_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_SELECTOR_PAD, GstSelectorPadClass))
-#define GST_IS_SELECTOR_PAD(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_SELECTOR_PAD))
-#define GST_IS_SELECTOR_PAD_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_SELECTOR_PAD))
-#define GST_SELECTOR_PAD_CAST(obj) \
- ((GstSelectorPad *)(obj))
-
-typedef struct _GstSelectorPad GstSelectorPad;
-typedef struct _GstSelectorPadClass GstSelectorPadClass;
-
-struct _GstSelectorPad
-{
- GstPad parent;
-
- gboolean active; /* when buffer have passed the pad */
- gboolean eos; /* when EOS has been received */
- gboolean discont; /* after switching we create a discont */
- gboolean always_ok;
- GstSegment segment; /* the current segment on the pad */
- GstTagList *tags; /* last tags received on the pad */
-
- gboolean segment_pending;
-};
-
-struct _GstSelectorPadClass
-{
- GstPadClass parent;
-};
-
-static void gst_selector_pad_class_init (GstSelectorPadClass * klass);
-static void gst_selector_pad_init (GstSelectorPad * pad);
-static void gst_selector_pad_finalize (GObject * object);
-static void gst_selector_pad_get_property (GObject * object,
- guint prop_id, GValue * value, GParamSpec * pspec);
-static void gst_selector_pad_set_property (GObject * object,
- guint prop_id, const GValue * value, GParamSpec * pspec);
-
-static GstPadClass *selector_pad_parent_class = NULL;
-
-static gint64 gst_selector_pad_get_running_time (GstSelectorPad * pad);
-static void gst_selector_pad_reset (GstSelectorPad * pad);
-static gboolean gst_selector_pad_event (GstPad * pad, GstEvent * event);
-static GstCaps *gst_selector_pad_getcaps (GstPad * pad);
-static gboolean gst_selector_pad_acceptcaps (GstPad * pad, GstCaps * caps);
-static GstIterator *gst_selector_pad_iterate_linked_pads (GstPad * pad);
-static GstFlowReturn gst_selector_pad_chain (GstPad * pad, GstBuffer * buf);
-static GstFlowReturn gst_selector_pad_bufferalloc (GstPad * pad,
- guint64 offset, guint size, GstCaps * caps, GstBuffer ** buf);
-
-static GType
-gst_selector_pad_get_type (void)
-{
- static GType selector_pad_type = 0;
-
- if (!selector_pad_type) {
- static const GTypeInfo selector_pad_info = {
- sizeof (GstSelectorPadClass),
- NULL,
- NULL,
- (GClassInitFunc) gst_selector_pad_class_init,
- NULL,
- NULL,
- sizeof (GstSelectorPad),
- 0,
- (GInstanceInitFunc) gst_selector_pad_init,
- };
-
- selector_pad_type =
- g_type_register_static (GST_TYPE_PAD, "GstCamerabinSelectorPad",
- &selector_pad_info, 0);
- }
- return selector_pad_type;
-}
-
-static void
-gst_selector_pad_class_init (GstSelectorPadClass * klass)
-{
- GObjectClass *gobject_class;
-
- gobject_class = (GObjectClass *) klass;
-
- selector_pad_parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->finalize = gst_selector_pad_finalize;
-
- gobject_class->get_property = gst_selector_pad_get_property;
- gobject_class->set_property = gst_selector_pad_set_property;
-
- g_object_class_install_property (gobject_class, PROP_PAD_RUNNING_TIME,
- g_param_spec_int64 ("running-time", "Running time",
- "Running time of stream on pad", 0, G_MAXINT64, 0,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_PAD_TAGS,
- g_param_spec_boxed ("tags", "Tags",
- "The currently active tags on the pad", GST_TYPE_TAG_LIST,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_PAD_ACTIVE,
- g_param_spec_boolean ("active", "Active",
- "If the pad is currently active", FALSE,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_PAD_ALWAYS_OK,
- g_param_spec_boolean ("always-ok", "Always OK",
- "Make an inactive pad return OK instead of NOT_LINKED",
- DEFAULT_PAD_ALWAYS_OK, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-}
-
-static void
-gst_selector_pad_init (GstSelectorPad * pad)
-{
- pad->always_ok = DEFAULT_PAD_ALWAYS_OK;
- gst_selector_pad_reset (pad);
-}
-
-static void
-gst_selector_pad_finalize (GObject * object)
-{
- GstSelectorPad *pad;
-
- pad = GST_SELECTOR_PAD_CAST (object);
-
- if (pad->tags)
- gst_tag_list_free (pad->tags);
-
- G_OBJECT_CLASS (selector_pad_parent_class)->finalize (object);
-}
-
-static void
-gst_selector_pad_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstSelectorPad *spad = GST_SELECTOR_PAD_CAST (object);
-
- switch (prop_id) {
- case PROP_PAD_ALWAYS_OK:
- GST_OBJECT_LOCK (object);
- spad->always_ok = g_value_get_boolean (value);
- GST_OBJECT_UNLOCK (object);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_selector_pad_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstSelectorPad *spad = GST_SELECTOR_PAD_CAST (object);
-
- switch (prop_id) {
- case PROP_PAD_RUNNING_TIME:
- g_value_set_int64 (value, gst_selector_pad_get_running_time (spad));
- break;
- case PROP_PAD_TAGS:
- GST_OBJECT_LOCK (object);
- g_value_set_boxed (value, spad->tags);
- GST_OBJECT_UNLOCK (object);
- break;
- case PROP_PAD_ACTIVE:
- {
- GstInputSelector *sel;
-
- sel = GST_INPUT_SELECTOR (gst_pad_get_parent (spad));
- g_value_set_boolean (value, gst_input_selector_is_active_sinkpad (sel,
- GST_PAD_CAST (spad)));
- gst_object_unref (sel);
- break;
- }
- case PROP_PAD_ALWAYS_OK:
- GST_OBJECT_LOCK (object);
- g_value_set_boolean (value, spad->always_ok);
- GST_OBJECT_UNLOCK (object);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static gint64
-gst_selector_pad_get_running_time (GstSelectorPad * pad)
-{
- gint64 ret = 0;
-
- GST_OBJECT_LOCK (pad);
- if (pad->active) {
- gint64 last_stop = pad->segment.last_stop;
-
- if (last_stop >= 0)
- ret = gst_segment_to_running_time (&pad->segment, GST_FORMAT_TIME,
- last_stop);
- }
- GST_OBJECT_UNLOCK (pad);
-
- GST_DEBUG_OBJECT (pad, "running time: %" GST_TIME_FORMAT,
- GST_TIME_ARGS (ret));
-
- return ret;
-}
-
-static void
-gst_selector_pad_reset (GstSelectorPad * pad)
-{
- GST_OBJECT_LOCK (pad);
- pad->active = FALSE;
- pad->eos = FALSE;
- pad->segment_pending = FALSE;
- pad->discont = FALSE;
- gst_segment_init (&pad->segment, GST_FORMAT_UNDEFINED);
- GST_OBJECT_UNLOCK (pad);
-}
-
-/* strictly get the linked pad from the sinkpad. If the pad is active we return
- * the srcpad else we return NULL */
-static GstIterator *
-gst_selector_pad_iterate_linked_pads (GstPad * pad)
-{
- GstInputSelector *sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
- GstPad *otherpad;
- GstIterator *it;
-
- otherpad = gst_input_selector_get_linked_pad (pad, TRUE);
- it = gst_iterator_new_single (GST_TYPE_PAD, otherpad,
- (GstCopyFunction) gst_object_ref, (GFreeFunc) gst_object_unref);
-
- if (otherpad)
- gst_object_unref (otherpad);
- gst_object_unref (sel);
-
- return it;
-}
-
-static gboolean
-gst_selector_pad_event (GstPad * pad, GstEvent * event)
-{
- gboolean res = TRUE;
- gboolean forward = TRUE;
- GstInputSelector *sel;
- GstSelectorPad *selpad;
- GstPad *prev_active_sinkpad;
- GstPad *active_sinkpad;
-
- sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
- selpad = GST_SELECTOR_PAD_CAST (pad);
-
- GST_INPUT_SELECTOR_LOCK (sel);
- prev_active_sinkpad = sel->active_sinkpad;
- active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
-
- /* only forward if we are dealing with the active sinkpad or if select_all
- * is enabled */
- if (pad != active_sinkpad && !sel->select_all)
- forward = FALSE;
- GST_INPUT_SELECTOR_UNLOCK (sel);
-
- if (prev_active_sinkpad != active_sinkpad && pad == active_sinkpad)
- g_object_notify (G_OBJECT (sel), "active-pad");
-
- switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_FLUSH_START:
- /* FIXME, flush out the waiter */
- break;
- case GST_EVENT_FLUSH_STOP:
- GST_INPUT_SELECTOR_LOCK (sel);
- gst_selector_pad_reset (selpad);
- sel->pending_close = FALSE;
- GST_INPUT_SELECTOR_UNLOCK (sel);
- break;
- case GST_EVENT_NEWSEGMENT:
- {
- gboolean update;
- GstFormat format;
- gdouble rate, arate;
- gint64 start, stop, time;
-
- gst_event_parse_new_segment_full (event, &update, &rate, &arate, &format,
- &start, &stop, &time);
-
- GST_DEBUG_OBJECT (pad,
- "configured NEWSEGMENT update %d, rate %lf, applied rate %lf, "
- "format %d, "
- "%" G_GINT64_FORMAT " -- %" G_GINT64_FORMAT ", time %"
- G_GINT64_FORMAT, update, rate, arate, format, start, stop, time);
-
- GST_INPUT_SELECTOR_LOCK (sel);
- GST_OBJECT_LOCK (selpad);
- gst_segment_set_newsegment_full (&selpad->segment, update,
- rate, arate, format, start, stop, time);
- GST_OBJECT_UNLOCK (selpad);
-
- /* If we aren't forwarding the event (because the pad is not the
- * active_sinkpad, and select_all is not set, then set the flag on the
- * that says a segment needs sending if/when that pad is activated.
- * For all other cases, we send the event immediately, which makes
- * sparse streams and other segment updates work correctly downstream.
- */
- if (!forward)
- selpad->segment_pending = TRUE;
-
- GST_INPUT_SELECTOR_UNLOCK (sel);
- break;
- }
- case GST_EVENT_TAG:
- {
- GstTagList *tags, *oldtags, *newtags;
-
- gst_event_parse_tag (event, &tags);
-
- GST_OBJECT_LOCK (selpad);
- oldtags = selpad->tags;
-
- newtags = gst_tag_list_merge (oldtags, tags, GST_TAG_MERGE_REPLACE);
- selpad->tags = newtags;
- if (oldtags)
- gst_tag_list_free (oldtags);
- GST_DEBUG_OBJECT (pad, "received tags %" GST_PTR_FORMAT, newtags);
- GST_OBJECT_UNLOCK (selpad);
-
- g_object_notify (G_OBJECT (selpad), "tags");
- break;
- }
- case GST_EVENT_EOS:
- selpad->eos = TRUE;
- GST_DEBUG_OBJECT (pad, "received EOS");
- /* don't forward eos in select_all mode until all sink pads have eos */
- if (sel->select_all && !gst_input_selector_check_eos (GST_ELEMENT (sel))) {
- forward = FALSE;
- }
- break;
- default:
- break;
- }
- if (forward) {
- GST_DEBUG_OBJECT (pad, "forwarding event");
- res = gst_pad_push_event (sel->srcpad, event);
- } else
- gst_event_unref (event);
-
- gst_object_unref (sel);
-
- return res;
-}
-
-static GstCaps *
-gst_selector_pad_getcaps (GstPad * pad)
-{
- GstInputSelector *sel;
- GstCaps *caps;
-
- sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
-
- GST_DEBUG_OBJECT (sel, "Getting caps of srcpad peer");
- caps = gst_pad_peer_get_caps_reffed (sel->srcpad);
- if (caps == NULL)
- caps = gst_caps_new_any ();
-
- gst_object_unref (sel);
-
- return caps;
-}
-
-static gboolean
-gst_selector_pad_acceptcaps (GstPad * pad, GstCaps * caps)
-{
- GstInputSelector *sel;
- gboolean res;
-
- sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
-
- GST_DEBUG_OBJECT (sel, "Checking acceptcaps of srcpad peer");
- res = gst_pad_peer_accept_caps (sel->srcpad, caps);
- gst_object_unref (sel);
-
- return res;
-}
-
-static GstFlowReturn
-gst_selector_pad_bufferalloc (GstPad * pad, guint64 offset,
- guint size, GstCaps * caps, GstBuffer ** buf)
-{
- GstInputSelector *sel;
- GstFlowReturn result;
- GstPad *active_sinkpad;
- GstPad *prev_active_sinkpad;
- GstSelectorPad *selpad;
-
- sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
- selpad = GST_SELECTOR_PAD_CAST (pad);
-
- GST_LOG_OBJECT (pad, "received alloc");
-
- GST_INPUT_SELECTOR_LOCK (sel);
- prev_active_sinkpad = sel->active_sinkpad;
- active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
-
- if (pad != active_sinkpad)
- goto not_active;
-
- GST_INPUT_SELECTOR_UNLOCK (sel);
-
- if (prev_active_sinkpad != active_sinkpad && pad == active_sinkpad)
- g_object_notify (G_OBJECT (sel), "active-pad");
-
- result = gst_pad_alloc_buffer (sel->srcpad, offset, size, caps, buf);
-
-done:
- gst_object_unref (sel);
-
- return result;
-
- /* ERRORS */
-not_active:
- {
- GST_INPUT_SELECTOR_UNLOCK (sel);
-
- /* unselected pad, perform fallback alloc or return unlinked when
- * asked */
- GST_OBJECT_LOCK (selpad);
- if (selpad->always_ok) {
- GST_DEBUG_OBJECT (pad, "Not selected, performing fallback allocation");
- *buf = NULL;
- result = GST_FLOW_OK;
- } else {
- GST_DEBUG_OBJECT (pad, "Not selected, return NOT_LINKED");
- result = GST_FLOW_NOT_LINKED;
- }
- GST_OBJECT_UNLOCK (selpad);
-
- goto done;
- }
-}
-
-/* must be called with the SELECTOR_LOCK, will block while the pad is blocked
- * or return TRUE when flushing */
-static gboolean
-gst_input_selector_wait (GstInputSelector * self, GstPad * pad)
-{
- while (self->blocked && !self->flushing) {
- /* we can be unlocked here when we are shutting down (flushing) or when we
- * get unblocked */
- GST_INPUT_SELECTOR_WAIT (self);
- }
- return self->flushing;
-}
-
-static GstFlowReturn
-gst_selector_pad_chain (GstPad * pad, GstBuffer * buf)
-{
- GstInputSelector *sel;
- GstFlowReturn res;
- GstPad *active_sinkpad;
- GstPad *prev_active_sinkpad;
- GstSelectorPad *selpad;
- GstClockTime start_time;
- GstSegment *seg;
- GstEvent *close_event = NULL, *start_event = NULL;
- GstCaps *caps;
-
- sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
- selpad = GST_SELECTOR_PAD_CAST (pad);
- seg = &selpad->segment;
-
- GST_INPUT_SELECTOR_LOCK (sel);
- /* wait or check for flushing */
- if (gst_input_selector_wait (sel, pad))
- goto flushing;
-
- GST_LOG_OBJECT (pad, "getting active pad");
-
- prev_active_sinkpad = sel->active_sinkpad;
- active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
-
- /* update the segment on the srcpad */
- start_time = GST_BUFFER_TIMESTAMP (buf);
- if (GST_CLOCK_TIME_IS_VALID (start_time)) {
- GST_LOG_OBJECT (pad, "received start time %" GST_TIME_FORMAT,
- GST_TIME_ARGS (start_time));
- if (GST_BUFFER_DURATION_IS_VALID (buf))
- GST_LOG_OBJECT (pad, "received end time %" GST_TIME_FORMAT,
- GST_TIME_ARGS (start_time + GST_BUFFER_DURATION (buf)));
-
- GST_OBJECT_LOCK (pad);
- gst_segment_set_last_stop (seg, seg->format, start_time);
- GST_OBJECT_UNLOCK (pad);
- }
-
- /* Ignore buffers from pads except the selected one */
- if (pad != active_sinkpad)
- goto ignore;
-
- if (G_UNLIKELY (sel->pending_close)) {
- GstSegment *cseg = &sel->segment;
-
- GST_DEBUG_OBJECT (sel,
- "pushing close NEWSEGMENT update %d, rate %lf, applied rate %lf, "
- "format %d, "
- "%" G_GINT64_FORMAT " -- %" G_GINT64_FORMAT ", time %"
- G_GINT64_FORMAT, TRUE, cseg->rate, cseg->applied_rate, cseg->format,
- cseg->start, cseg->stop, cseg->time);
-
- /* create update segment */
- close_event = gst_event_new_new_segment_full (TRUE, cseg->rate,
- cseg->applied_rate, cseg->format, cseg->start, cseg->stop, cseg->time);
-
- sel->pending_close = FALSE;
- }
- /* if we have a pending segment, push it out now */
- if (G_UNLIKELY (selpad->segment_pending)) {
- GST_DEBUG_OBJECT (pad,
- "pushing pending NEWSEGMENT update %d, rate %lf, applied rate %lf, "
- "format %d, "
- "%" G_GINT64_FORMAT " -- %" G_GINT64_FORMAT ", time %"
- G_GINT64_FORMAT, FALSE, seg->rate, seg->applied_rate, seg->format,
- seg->start, seg->stop, seg->time);
-
- start_event = gst_event_new_new_segment_full (FALSE, seg->rate,
- seg->applied_rate, seg->format, seg->start, seg->stop, seg->time);
-
- selpad->segment_pending = FALSE;
- }
- GST_INPUT_SELECTOR_UNLOCK (sel);
-
- if (prev_active_sinkpad != active_sinkpad && pad == active_sinkpad)
- g_object_notify (G_OBJECT (sel), "active-pad");
-
- if (close_event)
- gst_pad_push_event (sel->srcpad, close_event);
-
- if (start_event)
- gst_pad_push_event (sel->srcpad, start_event);
-
- if (selpad->discont) {
- buf = gst_buffer_make_metadata_writable (buf);
-
- GST_DEBUG_OBJECT (pad, "Marking discont buffer %p", buf);
- GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
- selpad->discont = FALSE;
- }
-
- /* forward */
- GST_LOG_OBJECT (pad, "Forwarding buffer %p", buf);
-
- if ((caps = GST_BUFFER_CAPS (buf))) {
- if (GST_PAD_CAPS (sel->srcpad) != caps)
- gst_pad_set_caps (sel->srcpad, caps);
- }
-
- res = gst_pad_push (sel->srcpad, buf);
-
-done:
- gst_object_unref (sel);
- return res;
-
- /* dropped buffers */
-ignore:
- {
- GST_DEBUG_OBJECT (pad, "Pad not active, discard buffer %p", buf);
- /* when we drop a buffer, we're creating a discont on this pad */
- selpad->discont = TRUE;
- GST_INPUT_SELECTOR_UNLOCK (sel);
- gst_buffer_unref (buf);
-
- /* figure out what to return upstream */
- GST_OBJECT_LOCK (selpad);
- if (selpad->always_ok)
- res = GST_FLOW_OK;
- else
- res = GST_FLOW_NOT_LINKED;
- GST_OBJECT_UNLOCK (selpad);
-
- goto done;
- }
-flushing:
- {
- GST_DEBUG_OBJECT (pad, "We are flushing, discard buffer %p", buf);
- GST_INPUT_SELECTOR_UNLOCK (sel);
- gst_buffer_unref (buf);
- res = GST_FLOW_FLUSHING;
- goto done;
- }
-}
-
-static void gst_input_selector_init (GstInputSelector * sel);
-static void gst_input_selector_base_init (GstInputSelectorClass * klass);
-static void gst_input_selector_class_init (GstInputSelectorClass * klass);
-
-static void gst_input_selector_dispose (GObject * object);
-
-static void gst_input_selector_set_property (GObject * object,
- guint prop_id, const GValue * value, GParamSpec * pspec);
-static void gst_input_selector_get_property (GObject * object,
- guint prop_id, GValue * value, GParamSpec * pspec);
-
-static GstPad *gst_input_selector_request_new_pad (GstElement * element,
- GstPadTemplate * templ, const gchar * unused);
-static void gst_input_selector_release_pad (GstElement * element, GstPad * pad);
-
-static GstStateChangeReturn gst_input_selector_change_state (GstElement *
- element, GstStateChange transition);
-
-static GstCaps *gst_input_selector_getcaps (GstPad * pad);
-static gboolean gst_input_selector_event (GstPad * pad, GstEvent * event);
-static gboolean gst_input_selector_query (GstPad * pad, GstQuery * query);
-static gint64 gst_input_selector_block (GstInputSelector * self);
-static void gst_input_selector_switch (GstInputSelector * self,
- GstPad * pad, gint64 stop_time, gint64 start_time);
-
-static GstElementClass *parent_class = NULL;
-
-GType
-gst_input_selector_get_type (void)
-{
- static GType input_selector_type = 0;
-
- if (!input_selector_type) {
- static const GTypeInfo input_selector_info = {
- sizeof (GstInputSelectorClass),
- (GBaseInitFunc) gst_input_selector_base_init,
- NULL,
- (GClassInitFunc) gst_input_selector_class_init,
- NULL,
- NULL,
- sizeof (GstInputSelector),
- 0,
- (GInstanceInitFunc) gst_input_selector_init,
- };
- input_selector_type =
- g_type_register_static (GST_TYPE_ELEMENT,
- "GstCamerabinInputSelector", &input_selector_info, 0);
- GST_DEBUG_CATEGORY_INIT (input_selector_debug,
- "camerabin-input-selector", 0, "Camerabin input selector element");
- }
-
- return input_selector_type;
-}
-
-static void
-gst_input_selector_base_init (GstInputSelectorClass * klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_set_details_simple (element_class,
- "Input selector", "Generic",
- "N-to-1 input stream selectoring",
- "Julien Moutte <julien@moutte.net>, "
- "Jan Schmidt <thaytan@mad.scientist.com>, "
- "Wim Taymans <wim.taymans@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_input_selector_sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_input_selector_src_factory));
-}
-
-static void
-gst_input_selector_class_init (GstInputSelectorClass * klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- /* FIXME: remove after confirming it is safe now */
- g_type_class_ref (gst_selector_pad_get_type ());
-
- gobject_class->dispose = gst_input_selector_dispose;
-
- gobject_class->set_property = gst_input_selector_set_property;
- gobject_class->get_property = gst_input_selector_get_property;
-
- g_object_class_install_property (gobject_class, PROP_N_PADS,
- g_param_spec_uint ("n-pads", "Number of Pads",
- "The number of sink pads", 0, G_MAXUINT, 0,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_ACTIVE_PAD,
- g_param_spec_object ("active-pad", "Active pad",
- "The currently active sink pad", GST_TYPE_PAD,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_SELECT_ALL,
- g_param_spec_boolean ("select-all", "Select all mode",
- "Forwards data from all input pads", FALSE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstInputSelector::block:
- * @inputselector: the #GstInputSelector
- *
- * Block all sink pads in preparation for a switch. Returns the stop time of
- * the current switch segment, as a running time, or 0 if there is no current
- * active pad or the current active pad never received data.
- */
- gst_input_selector_signals[SIGNAL_BLOCK] =
- g_signal_new ("block", G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GstInputSelectorClass, block), NULL, NULL,
- __gst_camerabin_marshal_INT64__VOID, G_TYPE_INT64, 0);
- /**
- * GstInputSelector::switch:
- * @inputselector: the #GstInputSelector
- * @pad: the pad to switch to
- * @stop_time: running time at which to close the previous segment, or -1
- * to use the running time of the previously active sink pad
- * @start_time: running time at which to start the new segment, or -1 to
- * use the running time of the newly active sink pad
- *
- * Switch to a new feed. The segment opened by the previously active pad, if
- * any, will be closed, and a new segment opened before data flows again.
- *
- * This signal must be emitted when the element has been blocked via the <link
- * linkend="GstInputSelector-block">block</link> signal.
- *
- * If you have a stream with only one switch element, such as an audio-only
- * stream, a stream switch should be performed by first emitting the block
- * signal, and then emitting the switch signal with -1 for the stop and start
- * time values.
- *
- * The intention of the @stop_time and @start_time arguments is to allow
- * multiple switch elements to switch and maintain stream synchronization.
- * When switching a stream with multiple feeds, you will need as many switch
- * elements as you have feeds. For example, a feed with audio and video will
- * have one switch element between the audio feeds and one for video.
- *
- * A switch over multiple switch elements should be performed as follows:
- * First, emit the <link linkend="GstInputSelector-block">block</link>
- * signal, collecting the returned values. The maximum running time returned
- * by block should then be used as the time at which to close the previous
- * segment.
- *
- * Then, query the running times of the new audio and video pads that you will
- * switch to. Naturally, these pads are on separate switch elements. Take the
- * minimum running time for those streams and use it for the time at which to
- * open the new segment.
- *
- * If @pad is the same as the current active pad, the element will cancel any
- * previous block without adjusting segments.
- *
- * <note><simpara>
- * the signal changed from accepting the pad name to the pad object.
- * </simpara></note>
- *
- * Since: 0.10.7
- */
- gst_input_selector_signals[SIGNAL_SWITCH] =
- g_signal_new ("switch", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GstInputSelectorClass, switch_),
- NULL, NULL, __gst_camerabin_marshal_VOID__OBJECT_INT64_INT64,
- G_TYPE_NONE, 3, GST_TYPE_PAD, G_TYPE_INT64, G_TYPE_INT64);
-
- gstelement_class->request_new_pad = gst_input_selector_request_new_pad;
- gstelement_class->release_pad = gst_input_selector_release_pad;
- gstelement_class->change_state = gst_input_selector_change_state;
-
- klass->block = GST_DEBUG_FUNCPTR (gst_input_selector_block);
- /* note the underscore because switch is a keyword otherwise */
- klass->switch_ = GST_DEBUG_FUNCPTR (gst_input_selector_switch);
-}
-
-static void
-gst_input_selector_init (GstInputSelector * sel)
-{
- sel->srcpad = gst_pad_new ("src", GST_PAD_SRC);
- gst_pad_set_iterate_internal_links_function (sel->srcpad,
- GST_DEBUG_FUNCPTR (gst_selector_pad_iterate_linked_pads));
- gst_pad_set_getcaps_function (sel->srcpad,
- GST_DEBUG_FUNCPTR (gst_input_selector_getcaps));
- gst_pad_set_query_function (sel->srcpad,
- GST_DEBUG_FUNCPTR (gst_input_selector_query));
- gst_pad_set_event_function (sel->srcpad,
- GST_DEBUG_FUNCPTR (gst_input_selector_event));
- gst_element_add_pad (GST_ELEMENT (sel), sel->srcpad);
- /* sinkpad management */
- sel->active_sinkpad = NULL;
- sel->padcount = 0;
- gst_segment_init (&sel->segment, GST_FORMAT_UNDEFINED);
-
- sel->lock = g_mutex_new ();
- sel->cond = g_cond_new ();
- sel->blocked = FALSE;
-
- sel->select_all = FALSE;
-}
-
-static void
-gst_input_selector_dispose (GObject * object)
-{
- GstInputSelector *sel = GST_INPUT_SELECTOR (object);
-
- if (sel->active_sinkpad) {
- gst_object_unref (sel->active_sinkpad);
- sel->active_sinkpad = NULL;
- }
- if (sel->lock) {
- g_mutex_free (sel->lock);
- sel->lock = NULL;
- }
- if (sel->cond) {
- g_cond_free (sel->cond);
- sel->cond = NULL;
- }
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-/* Solve the following equation for B.timestamp, and set that as the segment
- * stop:
- * B.running_time = (B.timestamp - NS.start) / NS.abs_rate + NS.accum
- */
-static gint64
-gst_segment_get_timestamp (GstSegment * segment, gint64 running_time)
-{
- if (running_time <= segment->accum)
- return segment->start;
- else
- return (running_time - segment->accum) * segment->abs_rate + segment->start;
-}
-
-static void
-gst_segment_set_stop (GstSegment * segment, gint64 running_time)
-{
- segment->stop = gst_segment_get_timestamp (segment, running_time);
- segment->last_stop = -1;
-}
-
-static void
-gst_segment_set_start (GstSegment * segment, gint64 running_time)
-{
- gint64 new_start, duration;
-
- new_start = gst_segment_get_timestamp (segment, running_time);
-
- /* this is the duration we skipped */
- duration = new_start - segment->start;
- /* add the duration to the accumulated segment time */
- segment->accum += duration;
- /* move position in the segment */
- segment->time += duration;
- segment->start += duration;
-}
-
-/* this function must be called with the SELECTOR_LOCK. It returns TRUE when the
- * active pad changed. */
-static gboolean
-gst_input_selector_set_active_pad (GstInputSelector * self,
- GstPad * pad, gint64 stop_time, gint64 start_time)
-{
- GstSelectorPad *old, *new;
- GstPad **active_pad_p;
-
- if (pad == self->active_sinkpad)
- return FALSE;
-
- old = GST_SELECTOR_PAD_CAST (self->active_sinkpad);
- new = GST_SELECTOR_PAD_CAST (pad);
-
- GST_DEBUG_OBJECT (self, "setting active pad to %s:%s",
- GST_DEBUG_PAD_NAME (new));
-
- if (!GST_CLOCK_TIME_IS_VALID (stop_time) && old) {
- /* no stop time given, get the latest running_time on the active pad to
- * close and open the new segment */
- stop_time = start_time = gst_selector_pad_get_running_time (old);
- GST_DEBUG_OBJECT (self, "using start/stop of %" GST_TIME_FORMAT,
- GST_TIME_ARGS (start_time));
- }
-
- if (old && old->active && !self->pending_close && stop_time >= 0) {
- /* schedule a last_stop update if one isn't already scheduled, and a
- segment has been pushed before. */
- memcpy (&self->segment, &old->segment, sizeof (self->segment));
-
- GST_DEBUG_OBJECT (self, "setting stop_time to %" GST_TIME_FORMAT,
- GST_TIME_ARGS (stop_time));
- gst_segment_set_stop (&self->segment, stop_time);
- self->pending_close = TRUE;
- }
-
- if (new && new->active && start_time >= 0) {
- GST_DEBUG_OBJECT (self, "setting start_time to %" GST_TIME_FORMAT,
- GST_TIME_ARGS (start_time));
- /* schedule a new segment push */
- gst_segment_set_start (&new->segment, start_time);
- new->segment_pending = TRUE;
- }
-
- active_pad_p = &self->active_sinkpad;
- gst_object_replace ((GstObject **) active_pad_p, GST_OBJECT_CAST (pad));
- GST_DEBUG_OBJECT (self, "New active pad is %" GST_PTR_FORMAT,
- self->active_sinkpad);
-
- return TRUE;
-}
-
-static void
-gst_input_selector_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstInputSelector *sel = GST_INPUT_SELECTOR (object);
-
- switch (prop_id) {
- case PROP_ACTIVE_PAD:
- {
- GstPad *pad;
-
- pad = g_value_get_object (value);
-
- GST_INPUT_SELECTOR_LOCK (sel);
- gst_input_selector_set_active_pad (sel, pad,
- GST_CLOCK_TIME_NONE, GST_CLOCK_TIME_NONE);
- GST_INPUT_SELECTOR_UNLOCK (sel);
- break;
- }
- case PROP_SELECT_ALL:
- GST_INPUT_SELECTOR_LOCK (object);
- sel->select_all = g_value_get_boolean (value);
- GST_INPUT_SELECTOR_UNLOCK (object);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_input_selector_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstInputSelector *sel = GST_INPUT_SELECTOR (object);
-
- switch (prop_id) {
- case PROP_N_PADS:
- GST_INPUT_SELECTOR_LOCK (object);
- g_value_set_uint (value, sel->n_pads);
- GST_INPUT_SELECTOR_UNLOCK (object);
- break;
- case PROP_ACTIVE_PAD:
- GST_INPUT_SELECTOR_LOCK (object);
- g_value_set_object (value, sel->active_sinkpad);
- GST_INPUT_SELECTOR_UNLOCK (object);
- break;
- case PROP_SELECT_ALL:
- GST_INPUT_SELECTOR_LOCK (object);
- g_value_set_boolean (value, sel->select_all);
- GST_INPUT_SELECTOR_UNLOCK (object);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstPad *
-gst_input_selector_get_linked_pad (GstPad * pad, gboolean strict)
-{
- GstInputSelector *sel;
- GstPad *otherpad = NULL;
-
- sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
-
- GST_INPUT_SELECTOR_LOCK (sel);
- if (pad == sel->srcpad)
- otherpad = sel->active_sinkpad;
- else if (pad == sel->active_sinkpad || !strict)
- otherpad = sel->srcpad;
- if (otherpad)
- gst_object_ref (otherpad);
- GST_INPUT_SELECTOR_UNLOCK (sel);
-
- gst_object_unref (sel);
-
- return otherpad;
-}
-
-static gboolean
-gst_input_selector_event (GstPad * pad, GstEvent * event)
-{
- gboolean res = FALSE;
- GstPad *otherpad;
- GstInputSelector *sel;
- GstIterator *iter;
- gboolean done;
- gpointer nextpad;
-
- sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
- otherpad = gst_input_selector_get_linked_pad (pad, TRUE);
-
- if (otherpad) {
- res = gst_pad_push_event (otherpad, event);
-
- gst_object_unref (otherpad);
- } else if (sel->select_all) {
-
- /* If select-all is set, we should push the event to all pads.
- * The result will be TRUE if the push works for any of the pads, even if a
- * push fails. This is coherent with the way camerabin uses input-selector,
- * but might not be for other uses of it. */
-
- iter = gst_element_iterate_sink_pads (GST_ELEMENT (sel));
-
- done = FALSE;
- while (!done) {
- switch (gst_iterator_next (iter, &nextpad)) {
- case GST_ITERATOR_OK:
- res |= gst_pad_push_event (nextpad, gst_event_ref (event));
- gst_object_unref (nextpad);
- break;
- case GST_ITERATOR_RESYNC:
- gst_iterator_resync (iter);
- break;
- case GST_ITERATOR_ERROR:
- GST_WARNING_OBJECT (sel,
- "Wrong parameters when retrieving sink pads");
- done = TRUE;
- break;
- case GST_ITERATOR_DONE:
- done = TRUE;
- break;
- }
- }
- gst_event_unref (event);
- gst_iterator_free (iter);
- } else
- gst_event_unref (event);
-
- gst_object_unref (sel);
-
- return res;
-}
-
-/* query on the srcpad. We override this function because by default it will
- * only forward the query to one random sinkpad */
-static gboolean
-gst_input_selector_query (GstPad * pad, GstQuery * query)
-{
- gboolean res = TRUE;
- GstInputSelector *sel;
- GstPad *otherpad;
-
- sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
-
- otherpad = gst_input_selector_get_linked_pad (pad, TRUE);
-
- switch (GST_QUERY_TYPE (query)) {
- case GST_QUERY_LATENCY:
- {
- GList *walk;
- GstClockTime resmin, resmax;
- gboolean reslive;
-
- resmin = 0;
- resmax = -1;
- reslive = FALSE;
-
- /* assume FALSE, we become TRUE if one query succeeds */
- res = FALSE;
-
- /* perform the query on all sinkpads and combine the results. We take the
- * max of min and the min of max for the result latency. */
- GST_INPUT_SELECTOR_LOCK (sel);
- for (walk = GST_ELEMENT_CAST (sel)->sinkpads; walk;
- walk = g_list_next (walk)) {
- GstPad *sinkpad = GST_PAD_CAST (walk->data);
-
- if (gst_pad_peer_query (sinkpad, query)) {
- GstClockTime min, max;
- gboolean live;
-
- /* one query succeeded, we succeed too */
- res = TRUE;
-
- gst_query_parse_latency (query, &live, &min, &max);
-
- GST_DEBUG_OBJECT (sinkpad,
- "peer latency min %" GST_TIME_FORMAT ", max %" GST_TIME_FORMAT
- ", live %d", GST_TIME_ARGS (min), GST_TIME_ARGS (max), live);
-
- if (live) {
- if (min > resmin)
- resmin = min;
- if (resmax == -1)
- resmax = max;
- else if (max < resmax)
- resmax = max;
- if (reslive == FALSE)
- reslive = live;
- }
- }
- }
- GST_INPUT_SELECTOR_UNLOCK (sel);
- if (res) {
- gst_query_set_latency (query, reslive, resmin, resmax);
-
- GST_DEBUG_OBJECT (sel,
- "total latency min %" GST_TIME_FORMAT ", max %" GST_TIME_FORMAT
- ", live %d", GST_TIME_ARGS (resmin), GST_TIME_ARGS (resmax),
- reslive);
- }
-
- break;
- }
- default:
- if (otherpad)
- res = gst_pad_peer_query (otherpad, query);
- break;
- }
- if (otherpad)
- gst_object_unref (otherpad);
- gst_object_unref (sel);
-
- return res;
-}
-
-static GstCaps *
-gst_input_selector_getcaps (GstPad * pad)
-{
- GstPad *otherpad;
- GstObject *parent;
- GstCaps *caps;
-
- parent = gst_object_get_parent (GST_OBJECT (pad));
-
- otherpad = gst_input_selector_get_linked_pad (pad, FALSE);
-
- if (!otherpad) {
- if (GST_INPUT_SELECTOR (parent)->select_all) {
- GST_DEBUG_OBJECT (parent,
- "Pad %s:%s not linked, returning merge of caps",
- GST_DEBUG_PAD_NAME (pad));
- caps = gst_pad_proxy_getcaps (pad);
- } else {
- GST_DEBUG_OBJECT (parent,
- "Pad %s:%s not linked, returning ANY", GST_DEBUG_PAD_NAME (pad));
- caps = gst_caps_new_any ();
- }
- } else {
- GST_DEBUG_OBJECT (parent,
- "Pad %s:%s is linked (to %s:%s), returning peer caps",
- GST_DEBUG_PAD_NAME (pad), GST_DEBUG_PAD_NAME (otherpad));
- /* if the peer has caps, use those. If the pad is not linked, this function
- * returns NULL and we return ANY */
- if (!(caps = gst_pad_peer_get_caps_reffed (otherpad)))
- caps = gst_caps_new_any ();
- gst_object_unref (otherpad);
- }
-
- gst_object_unref (parent);
- return caps;
-}
-
-/* check if the pad is the active sinkpad */
-static gboolean
-gst_input_selector_is_active_sinkpad (GstInputSelector * sel, GstPad * pad)
-{
- gboolean res;
-
- GST_INPUT_SELECTOR_LOCK (sel);
- res = (pad == sel->active_sinkpad);
- GST_INPUT_SELECTOR_UNLOCK (sel);
-
- return res;
-}
-
-/* Get or create the active sinkpad, must be called with SELECTOR_LOCK */
-static GstPad *
-gst_input_selector_activate_sinkpad (GstInputSelector * sel, GstPad * pad)
-{
- GstPad *active_sinkpad;
- GstSelectorPad *selpad;
-
- selpad = GST_SELECTOR_PAD_CAST (pad);
-
- selpad->active = TRUE;
- active_sinkpad = sel->active_sinkpad;
- if (active_sinkpad == NULL || sel->select_all) {
- /* first pad we get activity on becomes the activated pad by default, if we
- * select all, we also remember the last used pad. */
- if (sel->active_sinkpad)
- gst_object_unref (sel->active_sinkpad);
- active_sinkpad = sel->active_sinkpad = gst_object_ref (pad);
- GST_DEBUG_OBJECT (sel, "Activating pad %s:%s", GST_DEBUG_PAD_NAME (pad));
- }
-
- return active_sinkpad;
-}
-
-static GstPad *
-gst_input_selector_request_new_pad (GstElement * element,
- GstPadTemplate * templ, const gchar * unused)
-{
- GstInputSelector *sel;
- gchar *name = NULL;
- GstPad *sinkpad = NULL;
-
- g_return_val_if_fail (templ->direction == GST_PAD_SINK, NULL);
-
- sel = GST_INPUT_SELECTOR (element);
-
- GST_INPUT_SELECTOR_LOCK (sel);
-
- GST_LOG_OBJECT (sel, "Creating new pad %d", sel->padcount);
- name = g_strdup_printf ("sink_%u", sel->padcount++);
- sinkpad = g_object_new (GST_TYPE_SELECTOR_PAD,
- "name", name, "direction", templ->direction, "template", templ, NULL);
- g_free (name);
-
- sel->n_pads++;
-
- gst_pad_set_event_function (sinkpad,
- GST_DEBUG_FUNCPTR (gst_selector_pad_event));
- gst_pad_set_getcaps_function (sinkpad,
- GST_DEBUG_FUNCPTR (gst_selector_pad_getcaps));
- gst_pad_set_acceptcaps_function (sinkpad,
- GST_DEBUG_FUNCPTR (gst_selector_pad_acceptcaps));
- gst_pad_set_chain_function (sinkpad,
- GST_DEBUG_FUNCPTR (gst_selector_pad_chain));
- gst_pad_set_iterate_internal_links_function (sinkpad,
- GST_DEBUG_FUNCPTR (gst_selector_pad_iterate_linked_pads));
- gst_pad_set_bufferalloc_function (sinkpad,
- GST_DEBUG_FUNCPTR (gst_selector_pad_bufferalloc));
-
- gst_pad_set_active (sinkpad, TRUE);
- gst_element_add_pad (GST_ELEMENT (sel), sinkpad);
- GST_INPUT_SELECTOR_UNLOCK (sel);
-
- return sinkpad;
-}
-
-static void
-gst_input_selector_release_pad (GstElement * element, GstPad * pad)
-{
- GstInputSelector *sel;
-
- sel = GST_INPUT_SELECTOR (element);
- GST_LOG_OBJECT (sel, "Releasing pad %s:%s", GST_DEBUG_PAD_NAME (pad));
-
- GST_INPUT_SELECTOR_LOCK (sel);
- /* if the pad was the active pad, makes us select a new one */
- if (sel->active_sinkpad == pad) {
- GST_DEBUG_OBJECT (sel, "Deactivating pad %s:%s", GST_DEBUG_PAD_NAME (pad));
- gst_object_unref (sel->active_sinkpad);
- sel->active_sinkpad = NULL;
- }
- sel->n_pads--;
-
- gst_pad_set_active (pad, FALSE);
- gst_element_remove_pad (GST_ELEMENT (sel), pad);
- GST_INPUT_SELECTOR_UNLOCK (sel);
-}
-
-static void
-gst_input_selector_reset (GstInputSelector * sel)
-{
- GList *walk;
-
- GST_INPUT_SELECTOR_LOCK (sel);
- /* clear active pad */
- if (sel->active_sinkpad) {
- gst_object_unref (sel->active_sinkpad);
- sel->active_sinkpad = NULL;
- }
- /* reset segment */
- gst_segment_init (&sel->segment, GST_FORMAT_UNDEFINED);
- sel->pending_close = FALSE;
- /* reset each of our sinkpads state */
- for (walk = GST_ELEMENT_CAST (sel)->sinkpads; walk; walk = g_list_next (walk)) {
- GstSelectorPad *selpad = GST_SELECTOR_PAD_CAST (walk->data);
-
- gst_selector_pad_reset (selpad);
-
- if (selpad->tags) {
- gst_tag_list_free (selpad->tags);
- selpad->tags = NULL;
- }
- }
- GST_INPUT_SELECTOR_UNLOCK (sel);
-}
-
-static GstStateChangeReturn
-gst_input_selector_change_state (GstElement * element,
- GstStateChange transition)
-{
- GstInputSelector *self = GST_INPUT_SELECTOR (element);
- GstStateChangeReturn result;
-
- switch (transition) {
- case GST_STATE_CHANGE_READY_TO_PAUSED:
- GST_INPUT_SELECTOR_LOCK (self);
- self->blocked = FALSE;
- self->flushing = FALSE;
- GST_INPUT_SELECTOR_UNLOCK (self);
- break;
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- /* first unlock before we call the parent state change function, which
- * tries to acquire the stream lock when going to ready. */
- GST_INPUT_SELECTOR_LOCK (self);
- self->blocked = FALSE;
- self->flushing = TRUE;
- GST_INPUT_SELECTOR_BROADCAST (self);
- GST_INPUT_SELECTOR_UNLOCK (self);
- break;
- default:
- break;
- }
-
- result = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- switch (transition) {
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- gst_input_selector_reset (self);
- break;
- default:
- break;
- }
-
- return result;
-}
-
-static gint64
-gst_input_selector_block (GstInputSelector * self)
-{
- gint64 ret = 0;
- GstSelectorPad *spad;
-
- GST_INPUT_SELECTOR_LOCK (self);
-
- if (self->blocked)
- GST_WARNING_OBJECT (self, "switch already blocked");
-
- self->blocked = TRUE;
- spad = GST_SELECTOR_PAD_CAST (self->active_sinkpad);
-
- if (spad)
- ret = gst_selector_pad_get_running_time (spad);
- else
- GST_DEBUG_OBJECT (self, "no active pad while blocking");
-
- GST_INPUT_SELECTOR_UNLOCK (self);
-
- return ret;
-}
-
-/* stop_time and start_time are running times */
-static void
-gst_input_selector_switch (GstInputSelector * self, GstPad * pad,
- gint64 stop_time, gint64 start_time)
-{
- gboolean changed;
-
- g_return_if_fail (self->blocked == TRUE);
-
- GST_INPUT_SELECTOR_LOCK (self);
- changed =
- gst_input_selector_set_active_pad (self, pad, stop_time, start_time);
-
- self->blocked = FALSE;
- GST_INPUT_SELECTOR_BROADCAST (self);
- GST_INPUT_SELECTOR_UNLOCK (self);
-
- if (changed)
- g_object_notify (G_OBJECT (self), "active-pad");
-}
-
-static gboolean
-gst_input_selector_check_eos (GstElement * selector)
-{
- GstIterator *it = gst_element_iterate_sink_pads (selector);
- GstIteratorResult ires;
- gpointer item;
- gboolean done = FALSE, is_eos = FALSE;
- GstSelectorPad *pad;
-
- while (!done) {
- ires = gst_iterator_next (it, &item);
- switch (ires) {
- case GST_ITERATOR_DONE:
- GST_INFO_OBJECT (selector, "all sink pads have eos");
- done = TRUE;
- is_eos = TRUE;
- break;
- case GST_ITERATOR_OK:
- pad = GST_SELECTOR_PAD_CAST (item);
- if (!pad->eos) {
- done = TRUE;
- }
- gst_object_unref (pad);
- break;
- case GST_ITERATOR_RESYNC:
- gst_iterator_resync (it);
- break;
- default:
- done = TRUE;
- break;
- }
- }
- gst_iterator_free (it);
-
- return is_eos;
-}
diff --git a/gst/camerabin/gstinputselector.h b/gst/camerabin/gstinputselector.h
deleted file mode 100644
index 58a671d5..00000000
--- a/gst/camerabin/gstinputselector.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* GStreamer
- * Copyright (C) 2003 Julien Moutte <julien@moutte.net>
- * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (C) 2008 Nokia Corporation. (contact <stefan.kost@nokia.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_INPUT_SELECTOR_H__
-#define __GST_INPUT_SELECTOR_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_INPUT_SELECTOR \
- (gst_input_selector_get_type())
-#define GST_INPUT_SELECTOR(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_INPUT_SELECTOR, GstInputSelector))
-#define GST_INPUT_SELECTOR_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_INPUT_SELECTOR, GstInputSelectorClass))
-#define GST_IS_INPUT_SELECTOR(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_INPUT_SELECTOR))
-#define GST_IS_INPUT_SELECTOR_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_INPUT_SELECTOR))
-
-typedef struct _GstInputSelector GstInputSelector;
-typedef struct _GstInputSelectorClass GstInputSelectorClass;
-
-#define GST_INPUT_SELECTOR_GET_LOCK(sel) (((GstInputSelector*)(sel))->lock)
-#define GST_INPUT_SELECTOR_GET_COND(sel) (((GstInputSelector*)(sel))->cond)
-#define GST_INPUT_SELECTOR_LOCK(sel) (g_mutex_lock (GST_INPUT_SELECTOR_GET_LOCK(sel)))
-#define GST_INPUT_SELECTOR_UNLOCK(sel) (g_mutex_unlock (GST_INPUT_SELECTOR_GET_LOCK(sel)))
-#define GST_INPUT_SELECTOR_WAIT(sel) (g_cond_wait (GST_INPUT_SELECTOR_GET_COND(sel), \
- GST_INPUT_SELECTOR_GET_LOCK(sel)))
-#define GST_INPUT_SELECTOR_BROADCAST(sel) (g_cond_broadcast (GST_INPUT_SELECTOR_GET_COND(sel)))
-
-struct _GstInputSelector {
- GstElement element;
-
- GstPad *srcpad;
-
- GstPad *active_sinkpad;
- guint n_pads;
- guint padcount;
-
- GstSegment segment; /* the output segment */
- gboolean pending_close; /* if we should push a close first */
-
- GMutex *lock;
- GCond *cond;
- gboolean blocked;
- gboolean flushing;
-
- /* select all mode, send data from all input pads forward */
- gboolean select_all;
-};
-
-struct _GstInputSelectorClass {
- GstElementClass parent_class;
-
- gint64 (*block) (GstInputSelector *self);
- void (*switch_) (GstInputSelector *self, GstPad *pad,
- gint64 stop_time, gint64 start_time);
-};
-
-GType gst_input_selector_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_INPUT_SELECTOR_H__ */
diff --git a/gst/camerabin2/Makefile.am b/gst/camerabin2/Makefile.am
index 011ea784..0947b114 100644
--- a/gst/camerabin2/Makefile.am
+++ b/gst/camerabin2/Makefile.am
@@ -15,7 +15,7 @@ libgstcamerabin2_la_CFLAGS = \
libgstcamerabin2_la_LIBADD = \
$(top_builddir)/gst-libs/gst/interfaces/libgstphotography-$(GST_API_VERSION).la \
$(top_builddir)/gst-libs/gst/basecamerabinsrc/libgstbasecamerabinsrc-$(GST_API_VERSION).la \
- $(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-$(GST_API_VERSION) -lgsttag-$(GST_API_VERSION) -lgstapp-$(GST_API_VERSION) -lgstpbutils-$(GST_API_VERSION) \
+ $(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) -lgstapp-$(GST_API_VERSION) -lgstpbutils-$(GST_API_VERSION) \
$(GST_BASE_LIBS) $(GST_LIBS)
libgstcamerabin2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
diff --git a/gst/camerabin2/Makefile.in b/gst/camerabin2/Makefile.in
index 6c30e393..dbbb0304 100644
--- a/gst/camerabin2/Makefile.in
+++ b/gst/camerabin2/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -467,6 +467,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -483,6 +485,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -515,10 +518,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -606,7 +608,7 @@ libgstcamerabin2_la_CFLAGS = \
libgstcamerabin2_la_LIBADD = \
$(top_builddir)/gst-libs/gst/interfaces/libgstphotography-$(GST_API_VERSION).la \
$(top_builddir)/gst-libs/gst/basecamerabinsrc/libgstbasecamerabinsrc-$(GST_API_VERSION).la \
- $(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-$(GST_API_VERSION) -lgsttag-$(GST_API_VERSION) -lgstapp-$(GST_API_VERSION) -lgstpbutils-$(GST_API_VERSION) \
+ $(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) -lgstapp-$(GST_API_VERSION) -lgstpbutils-$(GST_API_VERSION) \
$(GST_BASE_LIBS) $(GST_LIBS)
libgstcamerabin2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
@@ -660,7 +662,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/camerabin2/gstcamerabin2.c b/gst/camerabin2/gstcamerabin2.c
index aeb38974..a63c8681 100644
--- a/gst/camerabin2/gstcamerabin2.c
+++ b/gst/camerabin2/gstcamerabin2.c
@@ -48,8 +48,8 @@
* <para>
* Camerabin2 can be created using gst_element_factory_make() just like
* any other element. Video or image capture mode can be selected using
- * the #GstCameraBin2:mode property and the file to save the capture is
- * selected using #GstCameraBin2:location property.
+ * the #GstCameraBin:mode property and the file to save the capture is
+ * selected using #GstCameraBin:location property.
*
* After creating camerabin2, applications might want to do some
* customization (there's a section about this below), then select
@@ -60,14 +60,14 @@
* location, a %GST_MESSAGE_ELEMENT named 'image-done' will be posted on
* the #GstBus.
*
- * In video capture mode, send a #GstCameraBin2:start-capture to start
- * recording, then send a #GstCameraBin2:stop-capture to stop recording.
+ * In video capture mode, send a #GstCameraBin:start-capture to start
+ * recording, then send a #GstCameraBin:stop-capture to stop recording.
* Note that both signals are asynchronous, so, calling
- * #GstCameraBin2:stop-capture doesn't guarantee that the video has been
+ * #GstCameraBin:stop-capture doesn't guarantee that the video has been
* properly finished yet. Applications should wait for the 'video-done'
* message to be posted on the bus.
*
- * In both modes, if #GstCameraBin2:post-previews is %TRUE, a #GstBuffer
+ * In both modes, if #GstCameraBin:post-previews is %TRUE, a #GstBuffer
* will be post to the #GstBus in a field named 'buffer', in a
* 'preview-image' message of type %GST_MESSAGE_ELEMENT.
* </para>
@@ -82,50 +82,50 @@
*
* #GstEncodingProfile<!-- -->s are used to tell camerabin2 which formats it
* should encode the captures to, those should be set to
- * #GstCameraBin2:image-profile and #GstCameraBin2:video-profile. Default is
+ * #GstCameraBin:image-profile and #GstCameraBin:video-profile. Default is
* jpeg for images, and ogg (theora and vorbis) for video. If a profile without
* an audio stream is set for video, audio will be disabled on recordings.
*
- * #GstCameraBin2:preview-caps can be used to select which format preview
+ * #GstCameraBin:preview-caps can be used to select which format preview
* images should be posted on the #GstBus. It has to be a raw video format.
*
- * Camerabin2 has a #GstCameraBin2:camera-source property so applications can
+ * Camerabin2 has a #GstCameraBin:camera-source property so applications can
* set their source that will provide buffers for the viewfinder and for
* captures. This camera source is a special type of source that has 3 pads.
* To use a 'regular' source with a single pad you should use
* #GstWrapperCameraBinSource, it will adapt your source and provide 3 pads.
*
* Applications can also select the desired viewfinder sink using
- * #GstCameraBin2:viewfinder-sink, it is also possible to select the audio
- * source using #GstCameraBin2:audio-source.
+ * #GstCameraBin:viewfinder-sink, it is also possible to select the audio
+ * source using #GstCameraBin:audio-source.
*
* The viewfinder resolution can be configured using
- * #GstCameraBin2:viewfinder-caps, these #GstCaps should be a subset of
- * #GstCameraBin2:viewfinder-supported-caps.
+ * #GstCameraBin:viewfinder-caps, these #GstCaps should be a subset of
+ * #GstCameraBin:viewfinder-supported-caps.
*
* To select the desired resolution for captures, camerabin2 provides
- * #GstCameraBin2:image-capture-caps and #GstCameraBin2:video-capture-caps,
+ * #GstCameraBin:image-capture-caps and #GstCameraBin:video-capture-caps,
* these caps must be a subset of what the source can produce. The allowed
- * caps can be probed using #GstCameraBin2:image-capture-supported-caps and
- * #GstCameraBin2:video-capture-supported-caps. In an analogous way, there
- * are #GstCameraBin2:audio-capture-caps and
- * #GstCameraBin2:audio-capture-supported-caps.
+ * caps can be probed using #GstCameraBin:image-capture-supported-caps and
+ * #GstCameraBin:video-capture-supported-caps. In an analogous way, there
+ * are #GstCameraBin:audio-capture-caps and
+ * #GstCameraBin:audio-capture-supported-caps.
*
- * Camerabin2 also allows applications to insert custom #GstElements on any
+ * Camerabin also allows applications to insert custom #GstElements on any
* of its branches: video capture, image capture, viewfinder and preview.
- * Check #GstCameraBin2:video-filter, #GstCameraBin2:image-filter,
- * #GstCameraBin2:viewfinder-filter and #GstCameraBin2:preview-filter.
+ * Check #GstCameraBin:video-filter, #GstCameraBin:image-filter,
+ * #GstCameraBin:viewfinder-filter and #GstCameraBin:preview-filter.
* </para>
* </refsect2>
*
* <refsect2>
* <title>Example launch line</title>
* <para>
- * Unfortunatelly, camerabin2 can't be really used from gst-launch, as you need
+ * Unfortunately, camerabin can't be really used from gst-launch, as you need
* to send signals to control it. The following pipeline might be able
* to show the viewfinder using all the default elements.
* |[
- * gst-launch -v -m camerabin2
+ * gst-launch -v -m camerabin
* ]|
* </para>
* </refsect2>
@@ -324,7 +324,7 @@ gst_camera_bin2_get_type (void)
};
gst_camera_bin_type =
- g_type_register_static (GST_TYPE_PIPELINE, "GstCameraBin2",
+ g_type_register_static (GST_TYPE_PIPELINE, "GstCameraBin",
&gst_camera_bin_info, 0);
g_type_add_interface_static (gst_camera_bin_type, GST_TYPE_TAG_SETTER,
@@ -348,13 +348,6 @@ gst_camera_bin_change_state (GstElement * element, GstStateChange trans);
/* Camerabin functions */
static GstEvent *
-gst_camera_bin_new_event_renegotiate (void)
-{
- return gst_event_new_custom (GST_EVENT_CUSTOM_BOTH,
- gst_structure_new_empty ("renegotiate"));
-}
-
-static GstEvent *
gst_camera_bin_new_event_file_location (const gchar * location)
{
return gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM,
@@ -637,8 +630,9 @@ gst_camera_bin_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_set_details_simple (element_class, "CameraBin2",
- "Generic/Bin/Camera", "CameraBin2",
+ gst_element_class_set_details_simple (element_class, "Camera Bin",
+ "Generic/Bin/Camera",
+ "Take image snapshots and record movies from camera",
"Thiago Santos <thiago.sousa.santos@collabora.co.uk>");
}
@@ -1598,7 +1592,6 @@ gst_camera_bin_create_elements (GstCameraBin2 * camera)
NULL);
if (camera->image_profile == NULL) {
- GstEncodingContainerProfile *prof;
GstEncodingVideoProfile *vprof;
GstCaps *caps;
@@ -1606,13 +1599,8 @@ gst_camera_bin_create_elements (GstCameraBin2 * camera)
vprof = gst_encoding_video_profile_new (caps, NULL, NULL, 1);
gst_encoding_video_profile_set_variableframerate (vprof, TRUE);
- prof = gst_encoding_container_profile_new ("jpeg", "jpeg container", caps,
- NULL);
- gst_encoding_container_profile_add_profile (prof,
- (GstEncodingProfile *) vprof);
-
gst_caps_unref (caps);
- camera->image_profile = (GstEncodingProfile *) prof;
+ camera->image_profile = (GstEncodingProfile *) vprof;
camera->image_profile_switch = TRUE;
}
@@ -2099,13 +2087,8 @@ gst_camera_bin_set_property (GObject * object, guint prop_id,
GST_WARNING_OBJECT (camera, "Image capsfilter missing");
}
- /* set the capsfilter caps and notify the src to renegotiate */
- if (pad) {
- GST_DEBUG_OBJECT (camera, "Pushing renegotiate on %s",
- GST_PAD_NAME (pad));
- gst_pad_send_event (pad, gst_camera_bin_new_event_renegotiate ());
+ if (pad)
gst_object_unref (pad);
- }
}
break;
case PROP_VIDEO_CAPTURE_CAPS:{
@@ -2120,7 +2103,6 @@ gst_camera_bin_set_property (GObject * object, guint prop_id,
"Setting video capture caps to %" GST_PTR_FORMAT,
gst_value_get_caps (value));
- /* set the capsfilter caps and notify the src to renegotiate */
if (G_LIKELY (camera->videobin_capsfilter)) {
g_object_set (camera->videobin_capsfilter, "caps",
gst_value_get_caps (value), NULL);
@@ -2129,9 +2111,6 @@ gst_camera_bin_set_property (GObject * object, guint prop_id,
}
if (pad) {
- GST_DEBUG_OBJECT (camera, "Pushing renegotiate on %s",
- GST_PAD_NAME (pad));
- gst_pad_send_event (pad, gst_camera_bin_new_event_renegotiate ());
gst_object_unref (pad);
}
}
@@ -2148,7 +2127,6 @@ gst_camera_bin_set_property (GObject * object, guint prop_id,
"Setting viewfinder capture caps to %" GST_PTR_FORMAT,
gst_value_get_caps (value));
- /* set the capsfilter caps and notify the src to renegotiate */
if (G_LIKELY (camera->viewfinderbin_capsfilter)) {
g_object_set (camera->viewfinderbin_capsfilter, "caps",
gst_value_get_caps (value), NULL);
@@ -2157,9 +2135,6 @@ gst_camera_bin_set_property (GObject * object, guint prop_id,
}
if (pad) {
- GST_DEBUG_OBJECT (camera, "Pushing renegotiate on %s",
- GST_PAD_NAME (pad));
- gst_pad_send_event (pad, gst_camera_bin_new_event_renegotiate ());
gst_object_unref (pad);
}
}
@@ -2183,7 +2158,7 @@ gst_camera_bin_set_property (GObject * object, guint prop_id,
case PROP_VIDEO_ENCODING_PROFILE:
if (camera->video_profile)
gst_encoding_profile_unref (camera->video_profile);
- camera->video_profile = (GstEncodingProfile *) g_value_dup_boxed (value);
+ camera->video_profile = (GstEncodingProfile *) g_value_dup_object (value);
camera->video_profile_switch = TRUE;
break;
case PROP_IMAGE_FILTER:
@@ -2239,7 +2214,26 @@ gst_camera_bin_set_property (GObject * object, guint prop_id,
case PROP_IMAGE_ENCODING_PROFILE:
if (camera->image_profile)
gst_encoding_profile_unref (camera->image_profile);
- camera->image_profile = (GstEncodingProfile *) g_value_dup_boxed (value);
+ camera->image_profile = (GstEncodingProfile *) g_value_dup_object (value);
+
+ /* make sure we set variable framerate here to prevent videorate from
+ * being used in encodebin. It will always keep a buffer stored
+ * internally and push it when a second one arrives. This breaks
+ * the image capture */
+ if (GST_IS_ENCODING_VIDEO_PROFILE (camera->image_profile))
+ gst_encoding_video_profile_set_variableframerate (
+ (GstEncodingVideoProfile *) camera->image_profile, TRUE);
+ else if (GST_IS_ENCODING_CONTAINER_PROFILE (camera->image_profile)) {
+ const GList *profs =
+ gst_encoding_container_profile_get_profiles (
+ (GstEncodingContainerProfile *) camera->image_profile);
+ for (; profs; profs = g_list_next (profs)) {
+ if (GST_IS_ENCODING_VIDEO_PROFILE (profs->data)) {
+ gst_encoding_video_profile_set_variableframerate (profs->data,
+ TRUE);
+ }
+ }
+ }
camera->image_profile_switch = TRUE;
break;
case PROP_FLAGS:
@@ -2376,7 +2370,7 @@ gst_camera_bin_get_property (GObject * object, guint prop_id,
break;
case PROP_VIDEO_ENCODING_PROFILE:
if (camera->video_profile) {
- g_value_set_boxed (value, camera->video_profile);
+ g_value_set_object (value, camera->video_profile);
}
break;
case PROP_VIDEO_FILTER:
@@ -2414,7 +2408,7 @@ gst_camera_bin_get_property (GObject * object, guint prop_id,
break;
case PROP_IMAGE_ENCODING_PROFILE:
if (camera->image_profile) {
- g_value_set_boxed (value, camera->image_profile);
+ g_value_set_object (value, camera->image_profile);
}
break;
case PROP_IDLE:
@@ -2433,8 +2427,8 @@ gst_camera_bin_get_property (GObject * object, guint prop_id,
gboolean
gst_camera_bin2_plugin_init (GstPlugin * plugin)
{
- GST_DEBUG_CATEGORY_INIT (gst_camera_bin_debug, "camerabin2", 0, "CameraBin2");
+ GST_DEBUG_CATEGORY_INIT (gst_camera_bin_debug, "camerabin", 0, "CameraBin");
- return gst_element_register (plugin, "camerabin2", GST_RANK_NONE,
+ return gst_element_register (plugin, "camerabin", GST_RANK_NONE,
gst_camera_bin2_get_type ());
}
diff --git a/gst/camerabin2/gstcamerabin2.h b/gst/camerabin2/gstcamerabin2.h
index 4c243d53..55e1c35d 100644
--- a/gst/camerabin2/gstcamerabin2.h
+++ b/gst/camerabin2/gstcamerabin2.h
@@ -24,6 +24,10 @@
G_BEGIN_DECLS
+/* to keep code mergeable */
+#define GstCameraBin2 GstCameraBin
+#define GstCameraBin2Class GstCameraBinClass
+
#define GST_TYPE_CAMERA_BIN2 (gst_camera_bin2_get_type())
#define GST_CAMERA_BIN2(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_CAMERA_BIN2,GstCameraBin2))
#define GST_CAMERA_BIN2_CAST(obj) ((GstCameraBin2 *) obj)
diff --git a/gst/camerabin2/gstplugin.c b/gst/camerabin2/gstplugin.c
index 4361b047..cf2b3f0a 100644
--- a/gst/camerabin2/gstplugin.c
+++ b/gst/camerabin2/gstplugin.c
@@ -42,5 +42,5 @@ plugin_init (GstPlugin * plugin)
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
GST_VERSION_MINOR,
- camerabin2, "camerabin2",
+ camerabin, "Take image snapshots and record movies from camera",
plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/gst/camerabin2/gstviewfinderbin.c b/gst/camerabin2/gstviewfinderbin.c
index 1f87eb99..6661388a 100644
--- a/gst/camerabin2/gstviewfinderbin.c
+++ b/gst/camerabin2/gstviewfinderbin.c
@@ -199,9 +199,9 @@ gst_viewfinder_bin_create_elements (GstViewfinderBin * vfbin)
gst_ghost_pad_set_target (GST_GHOST_PAD (vfbin->ghostpad), NULL);
/* add the elements, user wants them */
- csp = gst_element_factory_make ("ffmpegcolorspace", "vfbin-csp");
+ csp = gst_element_factory_make ("videoconvert", "vfbin-csp");
if (!csp) {
- missing_element_name = "ffmpegcolorspace";
+ missing_element_name = "videoconvert";
goto missing_element;
}
gst_bin_add (GST_BIN_CAST (vfbin), csp);
diff --git a/gst/camerabin2/gstwrappercamerabinsrc.c b/gst/camerabin2/gstwrappercamerabinsrc.c
index 6ffe0843..3a4bab6f 100644
--- a/gst/camerabin2/gstwrappercamerabinsrc.c
+++ b/gst/camerabin2/gstwrappercamerabinsrc.c
@@ -54,6 +54,24 @@ GST_DEBUG_CATEGORY (wrapper_camera_bin_src_debug);
G_DEFINE_TYPE (GstWrapperCameraBinSrc, gst_wrapper_camera_bin_src,
GST_TYPE_BASE_CAMERA_SRC);
+static GstStaticPadTemplate vfsrc_template =
+GST_STATIC_PAD_TEMPLATE (GST_BASE_CAMERA_SRC_VIEWFINDER_PAD_NAME,
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate imgsrc_template =
+GST_STATIC_PAD_TEMPLATE (GST_BASE_CAMERA_SRC_IMAGE_PAD_NAME,
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate vidsrc_template =
+GST_STATIC_PAD_TEMPLATE (GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME,
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
static void set_capsfilter_caps (GstWrapperCameraBinSrc * self,
GstCaps * new_caps);
@@ -149,9 +167,6 @@ static void
gst_wrapper_camera_bin_reset_video_src_caps (GstWrapperCameraBinSrc * self,
GstCaps * caps)
{
- GstClock *clock;
- gint64 base_time;
-
GST_DEBUG_OBJECT (self, "Resetting src caps to %" GST_PTR_FORMAT, caps);
if (self->src_vid_src) {
GstCaps *old_caps;
@@ -166,58 +181,7 @@ gst_wrapper_camera_bin_reset_video_src_caps (GstWrapperCameraBinSrc * self,
if (old_caps)
gst_caps_unref (old_caps);
- clock = gst_element_get_clock (self->src_vid_src);
- base_time = gst_element_get_base_time (self->src_vid_src);
-
- /* Ideally, we should only need to get the source to READY here,
- * but it seems v4l2src isn't happy with this. Putting to NULL makes
- * it work.
- *
- * TODO fix this in v4l2src
- */
- gst_element_set_state (self->src_vid_src, GST_STATE_NULL);
set_capsfilter_caps (self, caps);
-
- self->drop_newseg = TRUE;
-
- GST_DEBUG_OBJECT (self, "Bringing source up");
- if (!gst_element_sync_state_with_parent (self->src_vid_src)) {
- GST_WARNING_OBJECT (self, "Failed to reset source caps");
- gst_element_set_state (self->src_vid_src, GST_STATE_NULL);
- }
-
- if (clock) {
- gst_element_set_clock (self->src_vid_src, clock);
- gst_element_set_base_time (self->src_vid_src, base_time);
-
- if (GST_IS_BIN (self->src_vid_src)) {
- GstIterator *it =
- gst_bin_iterate_elements (GST_BIN (self->src_vid_src));
- GValue item = { 0 };
- gboolean done = FALSE;
- while (!done) {
- switch (gst_iterator_next (it, &item)) {
- case GST_ITERATOR_OK:
- gst_element_set_base_time (GST_ELEMENT (g_value_get_object
- (&item)), base_time);
- g_value_unset (&item);
- break;
- case GST_ITERATOR_RESYNC:
- gst_iterator_resync (it);
- break;
- case GST_ITERATOR_ERROR:
- done = TRUE;
- break;
- case GST_ITERATOR_DONE:
- done = TRUE;
- break;
- }
- }
- gst_iterator_free (it);
- }
-
- gst_object_unref (clock);
- }
}
}
@@ -235,8 +199,9 @@ gst_wrapper_camera_bin_src_imgsrc_probe (GstPad * pad, GstPadProbeInfo * info,
GstBuffer *buffer = GST_BUFFER (info->data);
GstPadProbeReturn ret = GST_PAD_PROBE_DROP;
- GST_LOG_OBJECT (self, "Image probe, mode %d, capture count %d",
- camerasrc->mode, self->image_capture_count);
+ GST_LOG_OBJECT (self, "Image probe, mode %d, capture count %d bufsize: %"
+ G_GSIZE_FORMAT, camerasrc->mode, self->image_capture_count,
+ gst_buffer_get_size (buffer));
g_mutex_lock (&camerasrc->capturing_mutex);
if (self->image_capture_count > 0) {
@@ -315,30 +280,6 @@ gst_wrapper_camera_bin_src_vidsrc_probe (GstPad * pad, GstPadProbeInfo * info,
return ret;
}
-static gboolean
-gst_wrapper_camera_bin_src_event (GstPad * pad, GstObject * parent,
- GstEvent * event)
-{
- GstWrapperCameraBinSrc *src =
- GST_WRAPPER_CAMERA_BIN_SRC (GST_PAD_PARENT (pad));
- const GstStructure *structure;
-
- structure = gst_event_get_structure (event);
- if (structure && gst_structure_has_name (structure, "renegotiate")) {
- GST_DEBUG_OBJECT (src, "Received renegotiate on pad %s",
- GST_PAD_NAME (pad));
-
- if (pad == src->imgsrc) {
- src->image_renegotiate = TRUE;
- } else if (pad == src->vidsrc) {
- src->video_renegotiate = TRUE;
- }
- }
- //TODO porting
- //return src->srcpad_event_func (pad, event);
- return TRUE;
-}
-
static GstPadProbeReturn
gst_wrapper_camera_src_src_event_probe (GstPad * pad, GstPadProbeInfo * info,
gpointer udata)
@@ -397,8 +338,14 @@ gst_wrapper_camera_bin_src_caps_cb (GObject * gobject, GParamSpec * pspec,
gst_base_camera_src_setup_zoom (bcamsrc);
/* Update post-zoom capsfilter */
- if (self->src_zoom_filter)
- g_object_set (G_OBJECT (self->src_zoom_filter), "caps", caps, NULL);
+ if (self->src_zoom_filter) {
+ GstCaps *filtercaps;
+
+ g_object_get (G_OBJECT (self->src_zoom_filter), "caps", &filtercaps, NULL);
+ if (!gst_caps_is_equal (filtercaps, caps))
+ g_object_set (G_OBJECT (self->src_zoom_filter), "caps", caps, NULL);
+ gst_caps_unref (filtercaps);
+ }
/* drop our ref on the caps */
gst_caps_unref (caps);
@@ -480,8 +427,8 @@ gst_wrapper_camera_bin_src_construct_pipeline (GstBaseCameraSrc * bcamsrc)
gst_object_unref (pad);
}
- if (!gst_camerabin_create_and_add_element (cbin, "ffmpegcolorspace",
- "src-colorspace"))
+ if (!gst_camerabin_create_and_add_element (cbin, "videoconvert",
+ "src-videoconvert"))
goto done;
if (!(self->src_filter =
@@ -526,7 +473,7 @@ gst_wrapper_camera_bin_src_construct_pipeline (GstBaseCameraSrc * bcamsrc)
self->output_selector =
gst_element_factory_make ("output-selector", "outsel");
- g_object_set (self->output_selector, "pad-negotiation-mode", 0, NULL);
+ g_object_set (self->output_selector, "pad-negotiation-mode", 2, NULL);
gst_bin_add (GST_BIN (self), self->output_selector);
{
GstPad *pad = gst_element_get_static_pad (self->output_selector, "sink");
@@ -590,10 +537,10 @@ gst_wrapper_camera_bin_src_construct_pipeline (GstBaseCameraSrc * bcamsrc)
if (!self->video_filter) {
if (self->app_vid_filter) {
self->video_filter = gst_object_ref (self->app_vid_filter);
- filter_csp = gst_element_factory_make ("ffmpegcolorspace",
- "filter-colorspace");
+ filter_csp = gst_element_factory_make ("videoconvert",
+ "filter-videoconvert");
gst_bin_add_many (cbin, self->video_filter, filter_csp, NULL);
- src_csp = gst_bin_get_by_name (cbin, "src-colorspace");
+ src_csp = gst_bin_get_by_name (cbin, "src-videoconvert");
capsfilter = gst_bin_get_by_name (cbin, "src-capsfilter");
if (gst_pad_is_linked (gst_element_get_static_pad (src_csp, "src")))
gst_element_unlink (src_csp, capsfilter);
@@ -810,7 +757,9 @@ gst_wrapper_camera_bin_src_set_mode (GstBaseCameraSrc * bcamsrc,
g_object_set (G_OBJECT (photography), "capture-mode", mode, NULL);
}
} else {
- gst_wrapper_camera_bin_reset_video_src_caps (self, NULL);
+ GstCaps *anycaps = gst_caps_new_any ();
+ gst_wrapper_camera_bin_reset_video_src_caps (self, anycaps);
+ gst_caps_unref (anycaps);
}
return TRUE;
@@ -1020,8 +969,9 @@ gst_wrapper_camera_bin_src_start_capture (GstBaseCameraSrc * camerasrc)
GstCaps *caps = NULL;
if (src->video_renegotiate) {
+ GstCaps *anycaps = gst_caps_new_any ();
g_mutex_unlock (&camerasrc->capturing_mutex);
- gst_wrapper_camera_bin_reset_video_src_caps (src, NULL);
+ gst_wrapper_camera_bin_reset_video_src_caps (src, anycaps);
g_mutex_lock (&camerasrc->capturing_mutex);
/* clean capsfilter caps so they don't interfere here */
@@ -1038,6 +988,7 @@ gst_wrapper_camera_bin_src_start_capture (GstBaseCameraSrc * camerasrc)
gst_wrapper_camera_bin_reset_video_src_caps (src, caps);
g_mutex_lock (&camerasrc->capturing_mutex);
gst_caps_unref (caps);
+ gst_caps_unref (anycaps);
}
if (src->video_rec_status == GST_VIDEO_RECORDING_STATUS_DONE) {
src->video_rec_status = GST_VIDEO_RECORDING_STATUS_STARTING;
@@ -1140,6 +1091,15 @@ gst_wrapper_camera_bin_src_class_init (GstWrapperCameraBinSrcClass * klass)
GST_DEBUG_CATEGORY_INIT (wrapper_camera_bin_src_debug, "wrappercamerabinsrc",
0, "wrapper camera src");
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&vfsrc_template));
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&imgsrc_template));
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&vidsrc_template));
+
gst_element_class_set_details_simple (gstelement_class,
"Wrapper camera src element for camerabin2", "Source/Video",
"Wrapper camera src element for camerabin2",
@@ -1166,10 +1126,6 @@ gst_wrapper_camera_bin_src_init (GstWrapperCameraBinSrc * self)
self->srcpad_event_func = GST_PAD_EVENTFUNC (self->vfsrc);
- gst_pad_set_event_function (self->imgsrc, gst_wrapper_camera_bin_src_event);
- gst_pad_set_event_function (self->vidsrc, gst_wrapper_camera_bin_src_event);
- gst_pad_set_event_function (self->vfsrc, gst_wrapper_camera_bin_src_event);
-
/* TODO where are variables reset? */
self->image_capture_count = 0;
self->video_rec_status = GST_VIDEO_RECORDING_STATUS_DONE;
diff --git a/gst/cdxaparse/Makefile.in b/gst/cdxaparse/Makefile.in
index d4151c30..2119ad52 100644
--- a/gst/cdxaparse/Makefile.in
+++ b/gst/cdxaparse/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -650,7 +652,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/coloreffects/Makefile.in b/gst/coloreffects/Makefile.in
index 7cb3a0e4..050ed475 100644
--- a/gst/coloreffects/Makefile.in
+++ b/gst/coloreffects/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -648,7 +650,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/coloreffects/gstchromahold.c b/gst/coloreffects/gstchromahold.c
index 4f6a7d43..a2cd5d5c 100644
--- a/gst/coloreffects/gstchromahold.c
+++ b/gst/coloreffects/gstchromahold.c
@@ -69,23 +69,19 @@ enum
};
static GstStaticPadTemplate gst_chroma_hold_src_template =
- GST_STATIC_PAD_TEMPLATE ("src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_BGRA ";"
- GST_VIDEO_CAPS_ABGR ";" GST_VIDEO_CAPS_RGBA
- ";" GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_BGRx ";" GST_VIDEO_CAPS_xBGR
- ";" GST_VIDEO_CAPS_RGBx)
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE
+ ("{ ARGB, BGRA, ABGR, RGBA, xRGB, BGRx, xBGR, RGBx}"))
);
static GstStaticPadTemplate gst_chroma_hold_sink_template =
- GST_STATIC_PAD_TEMPLATE ("sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_BGRA ";"
- GST_VIDEO_CAPS_ABGR ";" GST_VIDEO_CAPS_RGBA
- ";" GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_BGRx ";" GST_VIDEO_CAPS_xBGR
- ";" GST_VIDEO_CAPS_RGBx)
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE
+ ("{ ARGB, BGRA, ABGR, RGBA, xRGB, BGRx, xBGR, RGBx}"))
);
#define GST_CHROMA_HOLD_LOCK(self) G_STMT_START { \
@@ -101,12 +97,11 @@ static GstStaticPadTemplate gst_chroma_hold_sink_template =
} G_STMT_END
static gboolean gst_chroma_hold_start (GstBaseTransform * trans);
-static gboolean gst_chroma_hold_get_unit_size (GstBaseTransform * btrans,
- GstCaps * caps, guint * size);
-static gboolean gst_chroma_hold_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps);
-static GstFlowReturn gst_chroma_hold_transform_ip (GstBaseTransform * btrans,
- GstBuffer * buf);
+static gboolean gst_chroma_hold_set_info (GstVideoFilter * vfilter,
+ GstCaps * incaps, GstVideoInfo * in_info, GstCaps * outcaps,
+ GstVideoInfo * out_info);
+static GstFlowReturn gst_chroma_hold_transform_frame_ip (GstVideoFilter *
+ vfilter, GstVideoFrame * frame);
static void gst_chroma_hold_before_transform (GstBaseTransform * btrans,
GstBuffer * buf);
@@ -119,33 +114,16 @@ static void gst_chroma_hold_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
static void gst_chroma_hold_finalize (GObject * object);
-GST_BOILERPLATE (GstChromaHold, gst_chroma_hold, GstVideoFilter,
- GST_TYPE_VIDEO_FILTER);
-
-static void
-gst_chroma_hold_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (element_class, "Chroma hold filter",
- "Filter/Effect/Video",
- "Removes all color information except for one color",
- "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_chroma_hold_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_chroma_hold_src_template));
-
- GST_DEBUG_CATEGORY_INIT (gst_chroma_hold_debug, "chromahold", 0,
- "chromahold - Removes all color information except for one color");
-}
+#define gst_chroma_hold_parent_class parent_class
+G_DEFINE_TYPE (GstChromaHold, gst_chroma_hold, GST_TYPE_VIDEO_FILTER);
static void
gst_chroma_hold_class_init (GstChromaHoldClass * klass)
{
GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *gstelement_class = (GstElementClass *) klass;
GstBaseTransformClass *btrans_class = (GstBaseTransformClass *) klass;
+ GstVideoFilterClass *vfilter_class = (GstVideoFilterClass *) klass;
gobject_class->set_property = gst_chroma_hold_set_property;
gobject_class->get_property = gst_chroma_hold_get_property;
@@ -169,16 +147,29 @@ gst_chroma_hold_class_init (GstChromaHoldClass * klass)
G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
btrans_class->start = GST_DEBUG_FUNCPTR (gst_chroma_hold_start);
- btrans_class->transform_ip = GST_DEBUG_FUNCPTR (gst_chroma_hold_transform_ip);
btrans_class->before_transform =
GST_DEBUG_FUNCPTR (gst_chroma_hold_before_transform);
- btrans_class->get_unit_size =
- GST_DEBUG_FUNCPTR (gst_chroma_hold_get_unit_size);
- btrans_class->set_caps = GST_DEBUG_FUNCPTR (gst_chroma_hold_set_caps);
+
+ vfilter_class->transform_frame_ip =
+ GST_DEBUG_FUNCPTR (gst_chroma_hold_transform_frame_ip);
+ vfilter_class->set_info = GST_DEBUG_FUNCPTR (gst_chroma_hold_set_info);
+
+ gst_element_class_set_details_simple (gstelement_class, "Chroma hold filter",
+ "Filter/Effect/Video",
+ "Removes all color information except for one color",
+ "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_chroma_hold_sink_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_chroma_hold_src_template));
+
+ GST_DEBUG_CATEGORY_INIT (gst_chroma_hold_debug, "chromahold", 0,
+ "chromahold - Removes all color information except for one color");
}
static void
-gst_chroma_hold_init (GstChromaHold * self, GstChromaHoldClass * klass)
+gst_chroma_hold_init (GstChromaHold * self)
{
self->target_r = DEFAULT_TARGET_R;
self->target_g = DEFAULT_TARGET_G;
@@ -255,43 +246,20 @@ gst_chroma_hold_get_property (GObject * object, guint prop_id, GValue * value,
}
static gboolean
-gst_chroma_hold_get_unit_size (GstBaseTransform * btrans,
- GstCaps * caps, guint * size)
-{
- GstVideoFormat format;
- gint width, height;
-
- if (!gst_video_format_parse_caps (caps, &format, &width, &height))
- return FALSE;
-
- *size = gst_video_format_get_size (format, width, height);
-
- GST_DEBUG_OBJECT (btrans, "unit size = %d for format %d w %d height %d",
- *size, format, width, height);
-
- return TRUE;
-}
-
-static gboolean
-gst_chroma_hold_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps)
+gst_chroma_hold_set_info (GstVideoFilter * vfilter, GstCaps * incaps,
+ GstVideoInfo * in_info, GstCaps * outcaps, GstVideoInfo * out_info)
{
- GstChromaHold *self = GST_CHROMA_HOLD (btrans);
+ GstChromaHold *self = GST_CHROMA_HOLD (vfilter);
GST_CHROMA_HOLD_LOCK (self);
- if (!gst_video_format_parse_caps (outcaps, &self->format,
- &self->width, &self->height)) {
- GST_WARNING_OBJECT (self,
- "Failed to parse caps %" GST_PTR_FORMAT " -> %" GST_PTR_FORMAT, incaps,
- outcaps);
- GST_CHROMA_HOLD_UNLOCK (self);
- return FALSE;
- }
-
GST_DEBUG_OBJECT (self,
"Setting caps %" GST_PTR_FORMAT " -> %" GST_PTR_FORMAT, incaps, outcaps);
+ self->format = GST_VIDEO_INFO_FORMAT (in_info);
+ self->width = GST_VIDEO_INFO_WIDTH (in_info);
+ self->height = GST_VIDEO_INFO_HEIGHT (in_info);
+
if (!gst_chroma_hold_set_process_function (self)) {
GST_WARNING_OBJECT (self, "No processing function for this caps");
GST_CHROMA_HOLD_UNLOCK (self);
@@ -350,7 +318,7 @@ hue_dist (gint h1, gint h2)
}
static void
-gst_chroma_hold_process_xrgb (guint8 * dest, gint width,
+gst_chroma_hold_process_xrgb (GstVideoFrame * frame, gint width,
gint height, GstChromaHold * self)
{
gint i, j;
@@ -360,11 +328,15 @@ gst_chroma_hold_process_xrgb (guint8 * dest, gint width,
gint tolerance = self->tolerance;
gint p[4];
gint diff;
+ gint row_wrap;
+ guint8 *dest;
- p[0] = gst_video_format_get_component_offset (self->format, 3, width, height);
- p[1] = gst_video_format_get_component_offset (self->format, 0, width, height);
- p[2] = gst_video_format_get_component_offset (self->format, 1, width, height);
- p[3] = gst_video_format_get_component_offset (self->format, 2, width, height);
+ dest = GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
+ p[0] = GST_VIDEO_FRAME_COMP_POFFSET (frame, 3);
+ p[1] = GST_VIDEO_FRAME_COMP_POFFSET (frame, 0);
+ p[2] = GST_VIDEO_FRAME_COMP_POFFSET (frame, 1);
+ p[3] = GST_VIDEO_FRAME_COMP_POFFSET (frame, 2);
+ row_wrap = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0) - 4 * width;
h1 = self->hue;
@@ -386,6 +358,7 @@ gst_chroma_hold_process_xrgb (guint8 * dest, gint width,
dest += 4;
}
+ dest += row_wrap;
}
}
@@ -445,10 +418,10 @@ gst_chroma_hold_before_transform (GstBaseTransform * btrans, GstBuffer * buf)
}
static GstFlowReturn
-gst_chroma_hold_transform_ip (GstBaseTransform * btrans, GstBuffer * buf)
+gst_chroma_hold_transform_frame_ip (GstVideoFilter * vfilter,
+ GstVideoFrame * frame)
{
- GstChromaHold *self = GST_CHROMA_HOLD (btrans);
- gint width, height;
+ GstChromaHold *self = GST_CHROMA_HOLD (vfilter);
GST_CHROMA_HOLD_LOCK (self);
@@ -458,10 +431,7 @@ gst_chroma_hold_transform_ip (GstBaseTransform * btrans, GstBuffer * buf)
return GST_FLOW_NOT_NEGOTIATED;
}
- width = self->width;
- height = self->height;
-
- self->process (GST_BUFFER_DATA (buf), width, height, self);
+ self->process (frame, self->width, self->height, self);
GST_CHROMA_HOLD_UNLOCK (self);
diff --git a/gst/coloreffects/gstchromahold.h b/gst/coloreffects/gstchromahold.h
index 429db13d..6db1f2d6 100644
--- a/gst/coloreffects/gstchromahold.h
+++ b/gst/coloreffects/gstchromahold.h
@@ -28,7 +28,6 @@
#include <gst/gst.h>
#include <gst/video/video.h>
#include <gst/video/gstvideofilter.h>
-#include <gst/controller/gstcontroller.h>
G_BEGIN_DECLS
#define GST_TYPE_CHROMA_HOLD \
@@ -62,7 +61,7 @@ struct _GstChromaHold
guint tolerance;
/* processing function */
- void (*process) (guint8 * dest, gint width, gint height,
+ void (*process) (GstVideoFrame * frame, gint width, gint height,
GstChromaHold * chroma_hold);
/* pre-calculated values */
diff --git a/gst/coloreffects/gstcoloreffects.c b/gst/coloreffects/gstcoloreffects.c
index 34ade321..623a2291 100644
--- a/gst/coloreffects/gstcoloreffects.c
+++ b/gst/coloreffects/gstcoloreffects.c
@@ -49,15 +49,11 @@ enum
PROP_PRESET
};
-GST_BOILERPLATE (GstColorEffects, gst_color_effects, GstVideoFilter,
- GST_TYPE_VIDEO_FILTER);
+#define gst_color_effects_parent_class parent_class
+G_DEFINE_TYPE (GstColorEffects, gst_color_effects, GST_TYPE_VIDEO_FILTER);
-#define CAPS_STR GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_BGRA ";"\
- GST_VIDEO_CAPS_ABGR ";" GST_VIDEO_CAPS_RGBA ";"\
- GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_RGBx ";"\
- GST_VIDEO_CAPS_xBGR ";" GST_VIDEO_CAPS_BGRx ";"\
- GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR ";" \
- GST_VIDEO_CAPS_YUV ("AYUV") ";"
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ " \
+ "ARGB, BGRA, ABGR, RGBA, xRGB, BGRx, xBGR, RGBx, RGB, BGR, AYUV }")
static GstStaticPadTemplate gst_color_effects_src_template =
GST_STATIC_PAD_TEMPLATE ("src",
@@ -303,7 +299,8 @@ static const gint cog_rgb_to_ycbcr_matrix_8bit_sdtv[] = {
m[o*4+2] * v3 + m[o*4+3]) >> 8)
static void
-gst_color_effects_transform_rgb (GstColorEffects * filter, guint8 * data)
+gst_color_effects_transform_rgb (GstColorEffects * filter,
+ GstVideoFrame * frame)
{
gint i, j;
gint width, height;
@@ -311,23 +308,18 @@ gst_color_effects_transform_rgb (GstColorEffects * filter, guint8 * data)
guint32 r, g, b;
guint32 luma;
gint offsets[3];
+ guint8 *data;
+
+ data = GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
+ offsets[0] = GST_VIDEO_FRAME_COMP_POFFSET (frame, 0);
+ offsets[1] = GST_VIDEO_FRAME_COMP_POFFSET (frame, 1);
+ offsets[2] = GST_VIDEO_FRAME_COMP_POFFSET (frame, 2);
+
+ width = GST_VIDEO_FRAME_WIDTH (frame);
+ height = GST_VIDEO_FRAME_HEIGHT (frame);
- /* videoformat fun copied from videobalance */
-
- offsets[0] = gst_video_format_get_component_offset (filter->format, 0,
- filter->width, filter->height);
- offsets[1] = gst_video_format_get_component_offset (filter->format, 1,
- filter->width, filter->height);
- offsets[2] = gst_video_format_get_component_offset (filter->format, 2,
- filter->width, filter->height);
-
- width =
- gst_video_format_get_component_width (filter->format, 0, filter->width);
- height =
- gst_video_format_get_component_height (filter->format, 0, filter->height);
- row_stride =
- gst_video_format_get_row_stride (filter->format, 0, filter->width);
- pixel_stride = gst_video_format_get_pixel_stride (filter->format, 0);
+ row_stride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0);
+ pixel_stride = GST_VIDEO_FRAME_COMP_PSTRIDE (frame, 0);
row_wrap = row_stride - pixel_stride * width;
/* transform */
@@ -365,7 +357,8 @@ gst_color_effects_transform_rgb (GstColorEffects * filter, guint8 * data)
}
static void
-gst_color_effects_transform_ayuv (GstColorEffects * filter, guint8 * data)
+gst_color_effects_transform_ayuv (GstColorEffects * filter,
+ GstVideoFrame * frame)
{
gint i, j;
gint width, height;
@@ -373,23 +366,18 @@ gst_color_effects_transform_ayuv (GstColorEffects * filter, guint8 * data)
gint r, g, b;
gint y, u, v;
gint offsets[3];
+ guint8 *data;
+
+ data = GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
+ offsets[0] = GST_VIDEO_FRAME_COMP_POFFSET (frame, 0);
+ offsets[1] = GST_VIDEO_FRAME_COMP_POFFSET (frame, 1);
+ offsets[2] = GST_VIDEO_FRAME_COMP_POFFSET (frame, 2);
- /* videoformat fun copied from videobalance */
-
- offsets[0] = gst_video_format_get_component_offset (filter->format, 0,
- filter->width, filter->height);
- offsets[1] = gst_video_format_get_component_offset (filter->format, 1,
- filter->width, filter->height);
- offsets[2] = gst_video_format_get_component_offset (filter->format, 2,
- filter->width, filter->height);
-
- width =
- gst_video_format_get_component_width (filter->format, 0, filter->width);
- height =
- gst_video_format_get_component_height (filter->format, 0, filter->height);
- row_stride =
- gst_video_format_get_row_stride (filter->format, 0, filter->width);
- pixel_stride = gst_video_format_get_pixel_stride (filter->format, 0);
+ width = GST_VIDEO_FRAME_WIDTH (frame);
+ height = GST_VIDEO_FRAME_HEIGHT (frame);
+
+ row_stride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0);
+ pixel_stride = GST_VIDEO_FRAME_COMP_PSTRIDE (frame, 0);
row_wrap = row_stride - pixel_stride * width;
for (i = 0; i < height; i++) {
@@ -445,25 +433,22 @@ gst_color_effects_transform_ayuv (GstColorEffects * filter, guint8 * data)
}
static gboolean
-gst_color_effects_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
- GstCaps * outcaps)
+gst_color_effects_set_info (GstVideoFilter * vfilter, GstCaps * incaps,
+ GstVideoInfo * in_info, GstCaps * outcaps, GstVideoInfo * out_info)
{
- GstColorEffects *filter = GST_COLOR_EFFECTS (btrans);
+ GstColorEffects *filter = GST_COLOR_EFFECTS (vfilter);
GST_DEBUG_OBJECT (filter,
"in %" GST_PTR_FORMAT " out %" GST_PTR_FORMAT, incaps, outcaps);
filter->process = NULL;
- if (!gst_video_format_parse_caps (incaps, &filter->format,
- &filter->width, &filter->height))
- goto invalid_caps;
+ filter->format = GST_VIDEO_INFO_FORMAT (in_info);
+ filter->width = GST_VIDEO_INFO_WIDTH (in_info);
+ filter->height = GST_VIDEO_INFO_HEIGHT (in_info);
GST_OBJECT_LOCK (filter);
- filter->size =
- gst_video_format_get_size (filter->format, filter->width, filter->height);
-
switch (filter->format) {
case GST_VIDEO_FORMAT_AYUV:
filter->process = gst_color_effects_transform_ayuv;
@@ -487,66 +472,33 @@ gst_color_effects_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
GST_OBJECT_UNLOCK (filter);
return filter->process != NULL;
-
-invalid_caps:
- GST_ERROR_OBJECT (filter, "Invalid caps: %" GST_PTR_FORMAT, incaps);
- return FALSE;
}
static GstFlowReturn
-gst_color_effects_transform_ip (GstBaseTransform * trans, GstBuffer * out)
+gst_color_effects_transform_frame_ip (GstVideoFilter * vfilter,
+ GstVideoFrame * out)
{
- GstColorEffects *filter = GST_COLOR_EFFECTS (trans);
- guint8 *data;
- gint size;
+ GstColorEffects *filter = GST_COLOR_EFFECTS (vfilter);
if (!filter->process)
goto not_negotiated;
- data = GST_BUFFER_DATA (out);
- size = GST_BUFFER_SIZE (out);
-
- if (size != filter->size)
- goto wrong_size;
-
/* do nothing if there is no table ("none" preset) */
if (filter->table == NULL)
return GST_FLOW_OK;
GST_OBJECT_LOCK (filter);
- filter->process (filter, data);
+ filter->process (filter, out);
GST_OBJECT_UNLOCK (filter);
return GST_FLOW_OK;
-wrong_size:
- {
- GST_ELEMENT_ERROR (filter, STREAM, FORMAT,
- (NULL), ("Invalid buffer size %d, expected %d", size, filter->size));
- return GST_FLOW_ERROR;
- }
not_negotiated:
GST_ERROR_OBJECT (filter, "Not negotiated yet");
return GST_FLOW_NOT_NEGOTIATED;
}
static void
-gst_color_effects_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (element_class,
- "Color Look-up Table filter", "Filter/Effect/Video",
- "Color Look-up Table filter",
- "Filippo Argiolas <filippo.argiolas@gmail.com>");
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_color_effects_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_color_effects_src_template));
-}
-
-static void
gst_color_effects_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
@@ -615,7 +567,8 @@ static void
gst_color_effects_class_init (GstColorEffectsClass * klass)
{
GObjectClass *gobject_class = (GObjectClass *) klass;
- GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
+ GstElementClass *element_class = (GstElementClass *) klass;
+ GstVideoFilterClass *vfilter_class = (GstVideoFilterClass *) klass;
GST_DEBUG_CATEGORY_INIT (coloreffects_debug, "coloreffects", 0,
"coloreffects");
@@ -628,13 +581,23 @@ gst_color_effects_class_init (GstColorEffectsClass * klass)
GST_TYPE_COLOR_EFFECTS_PRESET, DEFAULT_PROP_PRESET,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_color_effects_set_caps);
- trans_class->transform_ip =
- GST_DEBUG_FUNCPTR (gst_color_effects_transform_ip);
+ vfilter_class->set_info = GST_DEBUG_FUNCPTR (gst_color_effects_set_info);
+ vfilter_class->transform_frame_ip =
+ GST_DEBUG_FUNCPTR (gst_color_effects_transform_frame_ip);
+
+ gst_element_class_set_details_simple (element_class,
+ "Color Look-up Table filter", "Filter/Effect/Video",
+ "Color Look-up Table filter",
+ "Filippo Argiolas <filippo.argiolas@gmail.com>");
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&gst_color_effects_sink_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&gst_color_effects_src_template));
}
static void
-gst_color_effects_init (GstColorEffects * filter, GstColorEffectsClass * klass)
+gst_color_effects_init (GstColorEffects * filter)
{
filter->preset = GST_COLOR_EFFECTS_PRESET_NONE;
filter->table = NULL;
diff --git a/gst/coloreffects/gstcoloreffects.h b/gst/coloreffects/gstcoloreffects.h
index e2ae65f9..f7c25a37 100644
--- a/gst/coloreffects/gstcoloreffects.h
+++ b/gst/coloreffects/gstcoloreffects.h
@@ -77,9 +77,8 @@ struct _GstColorEffects
GstVideoFormat format;
gint width;
gint height;
- gint size;
- void (*process) (GstColorEffects * filter, guint8 * data);
+ void (*process) (GstColorEffects * filter, GstVideoFrame * frame);
};
struct _GstColorEffectsClass
diff --git a/gst/dataurisrc/Makefile.in b/gst/dataurisrc/Makefile.in
index 51758244..31a1d4ee 100644
--- a/gst/dataurisrc/Makefile.in
+++ b/gst/dataurisrc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -457,6 +457,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -473,6 +475,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -505,10 +508,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -630,7 +632,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/dccp/Makefile.am b/gst/dccp/Makefile.am
index 41e6ca17..781ef0e6 100644
--- a/gst/dccp/Makefile.am
+++ b/gst/dccp/Makefile.am
@@ -12,7 +12,7 @@ libgstdccp_la_SOURCES = gstdccpplugin.c \
# flags used to compile this plugin
libgstdccp_la_CFLAGS = $(GST_CFLAGS)
-libgstdccp_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(DCCP_LIBS)
+libgstdccp_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(DCCP_LIBS) $(WINSOCK2_LIBS)
libgstdccp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstdccp_la_LIBTOOLFLAGS = --tag=disable-static
diff --git a/gst/dccp/Makefile.in b/gst/dccp/Makefile.in
index 1aeaa66b..9a3e98ae 100644
--- a/gst/dccp/Makefile.in
+++ b/gst/dccp/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -130,7 +130,8 @@ am__installdirs = "$(DESTDIR)$(plugindir)"
LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
libgstdccp_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_libgstdccp_la_OBJECTS = libgstdccp_la-gstdccpplugin.lo \
libgstdccp_la-gstdccp.lo libgstdccp_la-gstdccpserversink.lo \
libgstdccp_la-gstdccpserversrc.lo \
@@ -466,6 +467,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -482,6 +485,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -514,10 +518,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -602,7 +605,7 @@ libgstdccp_la_SOURCES = gstdccpplugin.c \
# flags used to compile this plugin
libgstdccp_la_CFLAGS = $(GST_CFLAGS)
-libgstdccp_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(DCCP_LIBS)
+libgstdccp_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(DCCP_LIBS) $(WINSOCK2_LIBS)
libgstdccp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstdccp_la_LIBTOOLFLAGS = --tag=disable-static
@@ -658,7 +661,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/debugutils/Makefile.am b/gst/debugutils/Makefile.am
index ebcbde58..70d793ff 100644
--- a/gst/debugutils/Makefile.am
+++ b/gst/debugutils/Makefile.am
@@ -30,7 +30,7 @@ nodist_libgstdebugutilsbad_la_SOURCES = $(BUILT_SOURCES)
libgstdebugutilsbad_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
libgstdebugutilsbad_la_LIBADD = $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
-lgstvideo-$(GST_API_VERSION) \
- -lgstinterfaces-$(GST_API_VERSION) $(GST_LIBS)
+ $(GST_LIBS)
libgstdebugutilsbad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstdebugutilsbad_la_LIBTOOLFLAGS = --tag=disable-static
diff --git a/gst/debugutils/Makefile.in b/gst/debugutils/Makefile.in
index 8f295501..84cc0857 100644
--- a/gst/debugutils/Makefile.in
+++ b/gst/debugutils/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -480,6 +480,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -496,6 +498,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -528,10 +531,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -628,7 +630,7 @@ nodist_libgstdebugutilsbad_la_SOURCES = $(BUILT_SOURCES)
libgstdebugutilsbad_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
libgstdebugutilsbad_la_LIBADD = $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
-lgstvideo-$(GST_API_VERSION) \
- -lgstinterfaces-$(GST_API_VERSION) $(GST_LIBS)
+ $(GST_LIBS)
libgstdebugutilsbad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstdebugutilsbad_la_LIBTOOLFLAGS = --tag=disable-static
@@ -679,7 +681,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/debugutils/gstcompare.c b/gst/debugutils/gstcompare.c
index c7831a53..f0a1b884 100644
--- a/gst/debugutils/gstcompare.c
+++ b/gst/debugutils/gstcompare.c
@@ -26,7 +26,7 @@
#include <string.h>
#include <gst/gst.h>
-#include <gst/base/gstcollectpads2.h>
+#include <gst/base/gstcollectpads.h>
#include <gst/video/video.h>
#include "gstcompare.h"
@@ -110,7 +110,7 @@ static void gst_compare_reset (GstCompare * overlay);
static gboolean gst_compare_query (GstPad * pad, GstObject * parent,
GstQuery * query);
-static GstFlowReturn gst_compare_collect_pads (GstCollectPads2 * cpads,
+static GstFlowReturn gst_compare_collect_pads (GstCollectPads * cpads,
GstCompare * comp);
static GstStateChangeReturn gst_compare_change_state (GstElement * element,
@@ -184,9 +184,9 @@ gst_compare_class_init (GstCompareClass * klass)
static void
gst_compare_init (GstCompare * comp)
{
- comp->cpads = gst_collect_pads2_new ();
- gst_collect_pads2_set_function (comp->cpads,
- (GstCollectPads2Function) GST_DEBUG_FUNCPTR (gst_compare_collect_pads),
+ comp->cpads = gst_collect_pads_new ();
+ gst_collect_pads_set_function (comp->cpads,
+ (GstCollectPadsFunction) GST_DEBUG_FUNCPTR (gst_compare_collect_pads),
comp);
comp->sinkpad = gst_pad_new_from_static_template (&sink_factory, "sink");
@@ -198,10 +198,10 @@ gst_compare_init (GstCompare * comp)
gst_pad_set_query_function (comp->checkpad, gst_compare_query);
gst_element_add_pad (GST_ELEMENT (comp), comp->checkpad);
- gst_collect_pads2_add_pad_full (comp->cpads, comp->sinkpad,
- sizeof (GstCollectData2), NULL, TRUE);
- gst_collect_pads2_add_pad_full (comp->cpads, comp->checkpad,
- sizeof (GstCollectData2), NULL, TRUE);
+ gst_collect_pads_add_pad_full (comp->cpads, comp->sinkpad,
+ sizeof (GstCollectData), NULL, TRUE);
+ gst_collect_pads_add_pad_full (comp->cpads, comp->checkpad,
+ sizeof (GstCollectData), NULL, TRUE);
comp->srcpad = gst_pad_new_from_static_template (&src_factory, "src");
gst_pad_set_query_function (comp->srcpad, gst_compare_query);
@@ -557,16 +557,16 @@ gst_compare_buffers (GstCompare * comp, GstBuffer * buf1, GstCaps * caps1,
}
static GstFlowReturn
-gst_compare_collect_pads (GstCollectPads2 * cpads, GstCompare * comp)
+gst_compare_collect_pads (GstCollectPads * cpads, GstCompare * comp)
{
GstBuffer *buf1, *buf2;
GstCaps *caps1, *caps2;
- buf1 = gst_collect_pads2_pop (comp->cpads,
+ buf1 = gst_collect_pads_pop (comp->cpads,
gst_pad_get_element_private (comp->sinkpad));
caps1 = gst_pad_get_current_caps (comp->sinkpad);
- buf2 = gst_collect_pads2_pop (comp->cpads,
+ buf2 = gst_collect_pads_pop (comp->cpads,
gst_pad_get_element_private (comp->checkpad));
caps2 = gst_pad_get_current_caps (comp->checkpad);
@@ -665,10 +665,10 @@ gst_compare_change_state (GstElement * element, GstStateChange transition)
switch (transition) {
case GST_STATE_CHANGE_NULL_TO_READY:
case GST_STATE_CHANGE_READY_TO_PAUSED:
- gst_collect_pads2_start (comp->cpads);
+ gst_collect_pads_start (comp->cpads);
break;
case GST_STATE_CHANGE_PAUSED_TO_READY:
- gst_collect_pads2_stop (comp->cpads);
+ gst_collect_pads_stop (comp->cpads);
break;
default:
break;
diff --git a/gst/debugutils/gstcompare.h b/gst/debugutils/gstcompare.h
index 65a9658a..bee5108e 100644
--- a/gst/debugutils/gstcompare.h
+++ b/gst/debugutils/gstcompare.h
@@ -52,7 +52,7 @@ struct _GstCompare {
GstPad *sinkpad;
GstPad *checkpad;
- GstCollectPads2 *cpads;
+ GstCollectPads *cpads;
gint count;
diff --git a/gst/dtmf/Makefile.in b/gst/dtmf/Makefile.in
index ad2479af..7e99bfd3 100644
--- a/gst/dtmf/Makefile.in
+++ b/gst/dtmf/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -654,7 +656,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/dvbsuboverlay/Makefile.in b/gst/dvbsuboverlay/Makefile.in
index f079aa40..7786bdb5 100644
--- a/gst/dvbsuboverlay/Makefile.in
+++ b/gst/dvbsuboverlay/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -635,7 +637,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/dvbsuboverlay/dvb-sub.c b/gst/dvbsuboverlay/dvb-sub.c
index 3431a8cf..6ba3c742 100644
--- a/gst/dvbsuboverlay/dvb-sub.c
+++ b/gst/dvbsuboverlay/dvb-sub.c
@@ -655,23 +655,24 @@ _dvb_sub_read_2bit_string (guint8 * destbuf, gint dbuf_len,
while (!stop_parsing && (gst_bit_reader_get_remaining (&gb) > 0)) {
guint run_length = 0, clut_index = 0;
- gst_bit_reader_get_bits_uint32 (&gb, &bits, 2);
+
+ bits = gst_bit_reader_get_bits_uint32_unchecked (&gb, 2);
if (bits) { /* 2-bit_pixel-code */
run_length = 1;
clut_index = bits;
} else { /* 2-bit_zero */
- gst_bit_reader_get_bits_uint32 (&gb, &bits, 1);
+ bits = gst_bit_reader_get_bits_uint32_unchecked (&gb, 1);
if (bits == 1) { /* switch_1 == '1' */
- gst_bit_reader_get_bits_uint32 (&gb, &run_length, 3);
+ run_length = gst_bit_reader_get_bits_uint32_unchecked (&gb, 3);
run_length += 3;
- gst_bit_reader_get_bits_uint32 (&gb, &clut_index, 2);
+ clut_index = gst_bit_reader_get_bits_uint32_unchecked (&gb, 2);
} else { /* switch_1 == '0' */
- gst_bit_reader_get_bits_uint32 (&gb, &bits, 1);
+ bits = gst_bit_reader_get_bits_uint32_unchecked (&gb, 1);
if (bits == 1) { /* switch_2 == '1' */
run_length = 1; /* 1x pseudo-colour '00' */
} else { /* switch_2 == '0' */
- gst_bit_reader_get_bits_uint32 (&gb, &bits, 2);
+ bits = gst_bit_reader_get_bits_uint32_unchecked (&gb, 2);
switch (bits) { /* switch_3 */
case 0x0: /* end of 2-bit/pixel_code_string */
stop_parsing = TRUE;
@@ -680,14 +681,14 @@ _dvb_sub_read_2bit_string (guint8 * destbuf, gint dbuf_len,
run_length = 2;
break;
case 0x2: /* the following 6 bits contain run length coded pixel data */
- gst_bit_reader_get_bits_uint32 (&gb, &run_length, 4);
+ run_length = gst_bit_reader_get_bits_uint32_unchecked (&gb, 4);
run_length += 12;
- gst_bit_reader_get_bits_uint32 (&gb, &clut_index, 2);
+ clut_index = gst_bit_reader_get_bits_uint32_unchecked (&gb, 2);
break;
case 0x3: /* the following 10 bits contain run length coded pixel data */
- gst_bit_reader_get_bits_uint32 (&gb, &run_length, 8);
+ run_length = gst_bit_reader_get_bits_uint32_unchecked (&gb, 8);
run_length += 29;
- gst_bit_reader_get_bits_uint32 (&gb, &clut_index, 2);
+ clut_index = gst_bit_reader_get_bits_uint32_unchecked (&gb, 2);
break;
}
}
@@ -747,28 +748,29 @@ _dvb_sub_read_4bit_string (guint8 * destbuf, gint dbuf_len,
while (!stop_parsing && (gst_bit_reader_get_remaining (&gb) > 0)) {
guint run_length = 0, clut_index = 0;
- gst_bit_reader_get_bits_uint32 (&gb, &bits, 4);
+
+ bits = gst_bit_reader_get_bits_uint32_unchecked (&gb, 4);
if (bits) {
run_length = 1;
clut_index = bits;
} else {
- gst_bit_reader_get_bits_uint32 (&gb, &bits, 1);
+ bits = gst_bit_reader_get_bits_uint32_unchecked (&gb, 1);
if (bits == 0) { /* switch_1 == '0' */
- gst_bit_reader_get_bits_uint32 (&gb, &run_length, 3);
+ run_length = gst_bit_reader_get_bits_uint32_unchecked (&gb, 3);
if (!run_length) {
stop_parsing = TRUE;
} else {
run_length += 2;
}
} else { /* switch_1 == '1' */
- gst_bit_reader_get_bits_uint32 (&gb, &bits, 1);
+ bits = gst_bit_reader_get_bits_uint32_unchecked (&gb, 1);
if (bits == 0) { /* switch_2 == '0' */
- gst_bit_reader_get_bits_uint32 (&gb, &run_length, 2);
+ run_length = gst_bit_reader_get_bits_uint32_unchecked (&gb, 2);
run_length += 4;
- gst_bit_reader_get_bits_uint32 (&gb, &clut_index, 4);
+ clut_index = gst_bit_reader_get_bits_uint32_unchecked (&gb, 4);
} else { /* switch_2 == '1' */
- gst_bit_reader_get_bits_uint32 (&gb, &bits, 2);
+ bits = gst_bit_reader_get_bits_uint32_unchecked (&gb, 2);
switch (bits) {
case 0x0: /* switch_3 == '00' */
run_length = 1; /* 1 pixel of pseudo-color 0 */
@@ -777,14 +779,14 @@ _dvb_sub_read_4bit_string (guint8 * destbuf, gint dbuf_len,
run_length = 2; /* 2 pixels of pseudo-color 0 */
break;
case 0x2: /* switch_3 == '10' */
- gst_bit_reader_get_bits_uint32 (&gb, &run_length, 4);
+ run_length = gst_bit_reader_get_bits_uint32_unchecked (&gb, 4);
run_length += 9;
- gst_bit_reader_get_bits_uint32 (&gb, &clut_index, 4);
+ clut_index = gst_bit_reader_get_bits_uint32_unchecked (&gb, 4);
break;
case 0x3: /* switch_3 == '11' */
- gst_bit_reader_get_bits_uint32 (&gb, &run_length, 8);
+ run_length = gst_bit_reader_get_bits_uint32_unchecked (&gb, 8);
run_length += 25;
- gst_bit_reader_get_bits_uint32 (&gb, &clut_index, 4);
+ clut_index = gst_bit_reader_get_bits_uint32_unchecked (&gb, 4);
break;
}
}
@@ -858,23 +860,23 @@ _dvb_sub_read_8bit_string (guint8 * destbuf, gint dbuf_len,
/* Rephrased - it's better to work with bytes with default value '0' instead of reading from memory we don't own. */
while (!stop_parsing && (gst_bit_reader_get_remaining (&gb) > 0)) {
guint run_length = 0, clut_index = 0;
- gst_bit_reader_get_bits_uint32 (&gb, &bits, 8);
+ bits = gst_bit_reader_get_bits_uint32_unchecked (&gb, 8);
if (bits) { /* 8-bit_pixel-code */
run_length = 1;
clut_index = bits;
} else { /* 8-bit_zero */
- gst_bit_reader_get_bits_uint32 (&gb, &bits, 1);
+ bits = gst_bit_reader_get_bits_uint32_unchecked (&gb, 1);
if (bits == 0) { /* switch_1 == '0' */
/* run_length_1-127 for pseudo-colour _entry) '0x00' */
- gst_bit_reader_get_bits_uint32 (&gb, &run_length, 7);
+ run_length = gst_bit_reader_get_bits_uint32_unchecked (&gb, 7);
if (run_length == 0) { /* end_of_string_signal */
stop_parsing = TRUE;
}
} else { /* switch_1 == '1' */
/* run_length_3-127 */
- gst_bit_reader_get_bits_uint32 (&gb, &run_length, 7);
- gst_bit_reader_get_bits_uint32 (&gb, &clut_index, 8);
+ run_length = gst_bit_reader_get_bits_uint32_unchecked (&gb, 7);
+ clut_index = gst_bit_reader_get_bits_uint32_unchecked (&gb, 8);
if (run_length < 3) {
GST_WARNING ("runlength value was %u, but the spec requires it "
diff --git a/gst/dvdspu/Makefile.in b/gst/dvdspu/Makefile.in
index f951beca..e73400c5 100644
--- a/gst/dvdspu/Makefile.in
+++ b/gst/dvdspu/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -641,7 +643,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/faceoverlay/Makefile.in b/gst/faceoverlay/Makefile.in
index 2e2e3034..a6cb0a8a 100644
--- a/gst/faceoverlay/Makefile.in
+++ b/gst/faceoverlay/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -641,7 +643,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/festival/Makefile.am b/gst/festival/Makefile.am
index e1a62ac2..cb8959dc 100644
--- a/gst/festival/Makefile.am
+++ b/gst/festival/Makefile.am
@@ -1,12 +1,6 @@
plugin_LTLIBRARIES = libgstfestival.la
-if HAVE_WINSOCK2_H
-WINSOCK2_LIBS = -lws2_32
-else
-WINSOCK2_LIBS =
-endif
-
libgstfestival_la_SOURCES = gstfestival.c
libgstfestival_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
# we use net connection now... perhaps use the lib later
diff --git a/gst/festival/Makefile.in b/gst/festival/Makefile.in
index 6890f4c7..33b84e4a 100644
--- a/gst/festival/Makefile.in
+++ b/gst/festival/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -584,8 +586,6 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
plugin_LTLIBRARIES = libgstfestival.la
-@HAVE_WINSOCK2_H_FALSE@WINSOCK2_LIBS =
-@HAVE_WINSOCK2_H_TRUE@WINSOCK2_LIBS = -lws2_32
libgstfestival_la_SOURCES = gstfestival.c
libgstfestival_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
# we use net connection now... perhaps use the lib later
@@ -640,7 +640,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/fieldanalysis/Makefile.am b/gst/fieldanalysis/Makefile.am
index aeaf61b2..e97351aa 100644
--- a/gst/fieldanalysis/Makefile.am
+++ b/gst/fieldanalysis/Makefile.am
@@ -7,14 +7,12 @@ 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_API_VERSION@.la \
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-@GST_API_VERSION@ \
$(GST_BASE_LIBS) \
$(GST_LIBS) \
diff --git a/gst/fieldanalysis/Makefile.in b/gst/fieldanalysis/Makefile.in
index 37f81052..f42365bd 100644
--- a/gst/fieldanalysis/Makefile.in
+++ b/gst/fieldanalysis/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -149,9 +149,9 @@ am__uninstall_files_from_dir = { \
am__installdirs = "$(DESTDIR)$(plugindir)"
LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
-libgstfieldanalysis_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/video/libgstbasevideo-@GST_API_VERSION@.la \
+libgstfieldanalysis_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1)
am_libgstfieldanalysis_la_OBJECTS = \
libgstfieldanalysis_la-gstfieldanalysis.lo
am__objects_1 = libgstfieldanalysis_la-tmp-orc.lo
@@ -488,6 +488,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -504,6 +506,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -536,10 +539,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -625,14 +627,12 @@ cp_v_gen_0 = @echo " CP $@";
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_API_VERSION@.la \
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-@GST_API_VERSION@ \
$(GST_BASE_LIBS) \
$(GST_LIBS) \
@@ -687,7 +687,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/freeverb/Makefile.in b/gst/freeverb/Makefile.in
index 34bfac06..f9a59890 100644
--- a/gst/freeverb/Makefile.in
+++ b/gst/freeverb/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -641,7 +643,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/freeze/Makefile.in b/gst/freeze/Makefile.in
index 88bd7ca5..270464a3 100644
--- a/gst/freeze/Makefile.in
+++ b/gst/freeze/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -459,6 +459,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -475,6 +477,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -507,10 +510,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -633,7 +635,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/frei0r/Makefile.in b/gst/frei0r/Makefile.in
index 37bf60c9..73b557f5 100644
--- a/gst/frei0r/Makefile.in
+++ b/gst/frei0r/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -463,6 +463,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -479,6 +481,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -511,10 +514,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -644,7 +646,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/frei0r/gstfrei0rmixer.c b/gst/frei0r/gstfrei0rmixer.c
index fd8ff7e6..f9b5681e 100644
--- a/gst/frei0r/gstfrei0rmixer.c
+++ b/gst/frei0r/gstfrei0rmixer.c
@@ -120,7 +120,7 @@ gst_frei0r_mixer_change_state (GstElement * element, GstStateChange transition)
case GST_STATE_CHANGE_NULL_TO_READY:
break;
case GST_STATE_CHANGE_READY_TO_PAUSED:
- gst_collect_pads2_start (self->collect);
+ gst_collect_pads_start (self->collect);
break;
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
break;
@@ -129,11 +129,11 @@ gst_frei0r_mixer_change_state (GstElement * element, GstStateChange transition)
}
/* Stop before calling the parent's state change function as
- * GstCollectPads2 might take locks and we would deadlock in that
+ * GstCollectPads might take locks and we would deadlock in that
* case
*/
if (transition == GST_STATE_CHANGE_PAUSED_TO_READY)
- gst_collect_pads2_stop (self->collect);
+ gst_collect_pads_stop (self->collect);
ret =
GST_ELEMENT_CLASS (g_type_class_peek_parent (klass))->change_state
@@ -488,7 +488,7 @@ gst_frei0r_mixer_src_event (GstPad * pad, GstEvent * event)
/* check if we are flushing */
if (flags & GST_SEEK_FLAG_FLUSH) {
/* make sure we accept nothing anymore and return WRONG_STATE */
- gst_collect_pads2_set_flushing (self->collect, TRUE);
+ gst_collect_pads_set_flushing (self->collect, TRUE);
/* flushing seek, start flush downstream, the flush will be done
* when all pads received a FLUSH_STOP. */
@@ -532,7 +532,7 @@ gst_frei0r_mixer_sink0_event (GstPad * pad, GstEvent * event)
break;
}
- /* now GstCollectPads2 can take care of the rest, e.g. EOS */
+ /* now GstCollectPads can take care of the rest, e.g. EOS */
ret = self->collect_event (pad, event);
gst_object_unref (self);
@@ -541,7 +541,7 @@ gst_frei0r_mixer_sink0_event (GstPad * pad, GstEvent * event)
}
static GstFlowReturn
-gst_frei0r_mixer_collected (GstCollectPads2 * pads, GstFrei0rMixer * self)
+gst_frei0r_mixer_collected (GstCollectPads * pads, GstFrei0rMixer * self)
{
GstBuffer *inbuf0 = NULL, *inbuf1 = NULL, *inbuf2 = NULL;
GstBuffer *outbuf = NULL;
@@ -575,15 +575,15 @@ gst_frei0r_mixer_collected (GstCollectPads2 * pads, GstFrei0rMixer * self)
return ret;
for (l = pads->data; l; l = l->next) {
- GstCollectData2 *cdata = l->data;
+ GstCollectData *cdata = l->data;
if (cdata->pad == self->sink0) {
- inbuf0 = gst_collect_pads2_pop (pads, cdata);
+ inbuf0 = gst_collect_pads_pop (pads, cdata);
segment = &cdata->segment;
} else if (cdata->pad == self->sink1) {
- inbuf1 = gst_collect_pads2_pop (pads, cdata);
+ inbuf1 = gst_collect_pads_pop (pads, cdata);
} else if (cdata->pad == self->sink2) {
- inbuf2 = gst_collect_pads2_pop (pads, cdata);
+ inbuf2 = gst_collect_pads_pop (pads, cdata);
}
}
@@ -708,9 +708,9 @@ gst_frei0r_mixer_init (GstFrei0rMixer * self, GstFrei0rMixerClass * klass)
self->property_cache =
gst_frei0r_property_cache_init (klass->properties, klass->n_properties);
- self->collect = gst_collect_pads2_new ();
- gst_collect_pads2_set_function (self->collect,
- (GstCollectPads2Function) gst_frei0r_mixer_collected, self);
+ self->collect = gst_collect_pads_new ();
+ gst_collect_pads_set_function (self->collect,
+ (GstCollectPadsFunction) gst_frei0r_mixer_collected, self);
self->src =
gst_pad_new_from_template (gst_element_class_get_pad_template
@@ -734,8 +734,8 @@ gst_frei0r_mixer_init (GstFrei0rMixer * self, GstFrei0rMixerClass * klass)
GST_DEBUG_FUNCPTR (gst_frei0r_mixer_set_caps));
gst_pad_set_query_function (self->sink0,
GST_DEBUG_FUNCPTR (gst_frei0r_mixer_sink_query));
- gst_collect_pads2_add_pad (self->collect, self->sink0,
- sizeof (GstCollectData2));
+ gst_collect_pads_add_pad (self->collect, self->sink0,
+ sizeof (GstCollectData));
self->collect_event = (GstPadEventFunction) GST_PAD_EVENTFUNC (self->sink0);
gst_pad_set_event_function (self->sink0,
GST_DEBUG_FUNCPTR (gst_frei0r_mixer_sink0_event));
@@ -750,8 +750,8 @@ gst_frei0r_mixer_init (GstFrei0rMixer * self, GstFrei0rMixerClass * klass)
GST_DEBUG_FUNCPTR (gst_frei0r_mixer_set_caps));
gst_pad_set_query_function (self->sink0,
GST_DEBUG_FUNCPTR (gst_frei0r_mixer_sink_query));
- gst_collect_pads2_add_pad (self->collect, self->sink1,
- sizeof (GstCollectData2));
+ gst_collect_pads_add_pad (self->collect, self->sink1,
+ sizeof (GstCollectData));
gst_element_add_pad (GST_ELEMENT_CAST (self), self->sink1);
if (klass->info->plugin_type == F0R_PLUGIN_TYPE_MIXER3) {
@@ -764,8 +764,8 @@ gst_frei0r_mixer_init (GstFrei0rMixer * self, GstFrei0rMixerClass * klass)
GST_DEBUG_FUNCPTR (gst_frei0r_mixer_set_caps));
gst_pad_set_query_function (self->sink0,
GST_DEBUG_FUNCPTR (gst_frei0r_mixer_sink_query));
- gst_collect_pads2_add_pad (self->collect, self->sink2,
- sizeof (GstCollectData2));
+ gst_collect_pads_add_pad (self->collect, self->sink2,
+ sizeof (GstCollectData));
gst_element_add_pad (GST_ELEMENT_CAST (self), self->sink2);
}
diff --git a/gst/frei0r/gstfrei0rmixer.h b/gst/frei0r/gstfrei0rmixer.h
index 19bb2d98..7cb66005 100644
--- a/gst/frei0r/gstfrei0rmixer.h
+++ b/gst/frei0r/gstfrei0rmixer.h
@@ -22,7 +22,7 @@
#include <gst/gst.h>
#include <gst/video/video.h>
-#include <gst/base/gstcollectpads2.h>
+#include <gst/base/gstcollectpads.h>
#include "frei0r.h"
#include "gstfrei0r.h"
@@ -42,7 +42,7 @@ typedef struct _GstFrei0rMixerClass GstFrei0rMixerClass;
struct _GstFrei0rMixer {
GstElement parent;
- GstCollectPads2 *collect;
+ GstCollectPads *collect;
GstPad *src;
GstPad *sink0, *sink1, *sink2;
diff --git a/gst/gaudieffects/Makefile.in b/gst/gaudieffects/Makefile.in
index eead4184..65a2c2c1 100644
--- a/gst/gaudieffects/Makefile.in
+++ b/gst/gaudieffects/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -467,6 +467,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -483,6 +485,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -515,10 +518,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -649,7 +651,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/gaudieffects/gstburn.c b/gst/gaudieffects/gstburn.c
index 2aedfffb..fb982c6e 100644
--- a/gst/gaudieffects/gstburn.c
+++ b/gst/gaudieffects/gstburn.c
@@ -1,7 +1,7 @@
/*
* GStreamer
- * Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>
- *
+ * Copyright (C) >2010-2012> Luis de Bethencourt <luis@debethencourt.com>
+ *
* Burn - curve adjustment video effect.
* Based on Pete Warden's FreeFrame plugin with the same name.
*
@@ -67,16 +67,16 @@
#include "gstplugin.h"
#include "gstburn.h"
-#include <gst/video/video.h>
-#include <gst/controller/gstcontroller.h>
+#define gst_burn_parent_class parent_class
+G_DEFINE_TYPE (GstBurn, gst_burn, GST_TYPE_VIDEO_FILTER);
GST_DEBUG_CATEGORY_STATIC (gst_burn_debug);
#define GST_CAT_DEFAULT gst_burn_debug
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define CAPS_STR GST_VIDEO_CAPS_BGRx ";" GST_VIDEO_CAPS_RGBx
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ BGRx, RGBx }")
#else
-#define CAPS_STR GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ xBGR, xRGB }")
#endif
/* Filter signals and args. */
@@ -101,58 +101,53 @@ static void transform (guint32 * src, guint32 * dest, gint video_area,
/* The capabilities of the inputs and outputs. */
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+static GstStaticPadTemplate gst_burn_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+static GstStaticPadTemplate gst_burn_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-GST_BOILERPLATE (GstBurn, gst_burn, GstVideoFilter, GST_TYPE_VIDEO_FILTER);
-
static void gst_burn_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_burn_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
-static gboolean gst_burn_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps);
-static GstFlowReturn gst_burn_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf);
+static void gst_burn_finalize (GObject * object);
+
+static GstFlowReturn gst_burn_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame);
/* GObject vmethod implementations */
+/* Initialize the burn's class. */
static void
-gst_burn_base_init (gpointer gclass)
+gst_burn_class_init (GstBurnClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *gstelement_class = (GstElementClass *) klass;
+ GstVideoFilterClass *vfilter_class = (GstVideoFilterClass *) klass;
- gst_element_class_set_details_simple (element_class,
- "Burn",
+ gst_element_class_set_details_simple (gstelement_class, "Burn",
"Filter/Effect/Video",
"Burn adjusts the colors in the video signal.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
-}
-
-/* Initialize the burn's class. */
-static void
-gst_burn_class_init (GstBurnClass * klass)
-{
- GObjectClass *gobject_class = (GObjectClass *) klass;
- GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_burn_sink_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_burn_src_template));
gobject_class->set_property = gst_burn_set_property;
gobject_class->get_property = gst_burn_get_property;
+ gobject_class->finalize = gst_burn_finalize;
g_object_class_install_property (gobject_class, PROP_ADJUSTMENT,
g_param_spec_uint ("adjustment", "Adjustment",
@@ -163,8 +158,7 @@ gst_burn_class_init (GstBurnClass * klass)
g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_burn_set_caps);
- trans_class->transform = GST_DEBUG_FUNCPTR (gst_burn_transform);
+ vfilter_class->transform_frame = GST_DEBUG_FUNCPTR (gst_burn_transform_frame);
}
/* Initialize the element,
@@ -173,7 +167,7 @@ gst_burn_class_init (GstBurnClass * klass)
* initialize instance structure.
*/
static void
-gst_burn_init (GstBurn * filter, GstBurnClass * gclass)
+gst_burn_init (GstBurn * filter)
{
filter->adjustment = DEFAULT_ADJUSTMENT;
filter->silent = FALSE;
@@ -219,47 +213,38 @@ gst_burn_get_property (GObject * object, guint prop_id,
GST_OBJECT_UNLOCK (filter);
}
-/* GstElement vmethod implementations */
-
-/* Handle the link with other elements. */
-static gboolean
-gst_burn_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
- GstCaps * outcaps)
+static void
+gst_burn_finalize (GObject * object)
{
- GstBurn *filter = GST_BURN (btrans);
- GstStructure *structure;
- gboolean ret = FALSE;
-
- structure = gst_caps_get_structure (incaps, 0);
-
- GST_OBJECT_LOCK (filter);
- if (gst_structure_get_int (structure, "width", &filter->width) &&
- gst_structure_get_int (structure, "height", &filter->height)) {
- ret = TRUE;
- }
- GST_OBJECT_UNLOCK (filter);
-
- return ret;
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
+/* GstElement vmethod implementations */
+
/* Actual processing. */
static GstFlowReturn
-gst_burn_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf)
+gst_burn_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame)
{
- GstBurn *filter = GST_BURN (btrans);
- gint video_size, adjustment;
- guint32 *src = (guint32 *) GST_BUFFER_DATA (in_buf);
- guint32 *dest = (guint32 *) GST_BUFFER_DATA (out_buf);
+ GstBurn *filter = GST_BURN (vfilter);
+ gint video_size, adjustment, width, height;
+ guint32 *src, *dest;
GstClockTime timestamp;
gint64 stream_time;
- video_size = filter->width * filter->height;
+ src = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
+ dest = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
+
+ width = GST_VIDEO_FRAME_WIDTH (in_frame);
+ height = GST_VIDEO_FRAME_HEIGHT (in_frame);
+
+ video_size = width * height;
/* GstController: update the properties */
- timestamp = GST_BUFFER_TIMESTAMP (in_buf);
+ timestamp = GST_BUFFER_TIMESTAMP (in_frame->buffer);
stream_time =
- gst_segment_to_stream_time (&btrans->segment, GST_FORMAT_TIME, timestamp);
+ gst_segment_to_stream_time (&GST_BASE_TRANSFORM (filter)->segment,
+ GST_FORMAT_TIME, timestamp);
GST_DEBUG_OBJECT (filter, "sync to %" GST_TIME_FORMAT,
GST_TIME_ARGS (timestamp));
diff --git a/gst/gaudieffects/gstburn.h b/gst/gaudieffects/gstburn.h
index 1a3ed58e..656808c3 100644
--- a/gst/gaudieffects/gstburn.h
+++ b/gst/gaudieffects/gstburn.h
@@ -1,7 +1,7 @@
/*
* GStreamer
* Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>
- *
+ *
* Burn - curve adjustment film video effect.
*
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -48,6 +48,7 @@
#include <gst/gst.h>
+#include <gst/video/video.h>
#include <gst/video/gstvideofilter.h>
G_BEGIN_DECLS
@@ -73,8 +74,6 @@ struct _GstBurn
/* < private > */
- gint width, height;
-
gint adjustment;
gboolean silent;
};
diff --git a/gst/gaudieffects/gstchromium.c b/gst/gaudieffects/gstchromium.c
index ea8e01a9..68590ed6 100644
--- a/gst/gaudieffects/gstchromium.c
+++ b/gst/gaudieffects/gstchromium.c
@@ -1,7 +1,7 @@
/*
* GStreamer
- * Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>
- *
+ * Copyright (C) <2010-2012> Luis de Bethencourt <luis@debethencourt.com>
+ *
* Chromium - burning chrome video effect.
* Based on Pete Warden's FreeFrame plugin with the same name.
*
@@ -63,20 +63,20 @@
#include <math.h>
#include <gst/gst.h>
-#include <gst/controller/gstcontroller.h>
#include "gstplugin.h"
#include "gstchromium.h"
-#include <gst/video/video.h>
+#define gst_chromium_parent_class parent_class
+G_DEFINE_TYPE (GstChromium, gst_chromium, GST_TYPE_VIDEO_FILTER);
GST_DEBUG_CATEGORY_STATIC (gst_chromium_debug);
#define GST_CAT_DEFAULT gst_chromium_debug
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define CAPS_STR GST_VIDEO_CAPS_BGRx ";" GST_VIDEO_CAPS_RGBx
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ BGRx, RGBx }")
#else
-#define CAPS_STR GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ xBGR, xRGB }")
#endif
/* Filter signals and args. */
@@ -116,59 +116,52 @@ static void transform (guint32 * src, guint32 * dest, gint video_area,
/* The capabilities of the inputs and outputs. */
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+static GstStaticPadTemplate gst_chromium_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+static GstStaticPadTemplate gst_chromium_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-GST_BOILERPLATE (GstChromium, gst_chromium, GstVideoFilter,
- GST_TYPE_VIDEO_FILTER);
-
static void gst_chromium_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_chromium_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
+static void gst_chromium_finalize (GObject * object);
-static gboolean gst_chromium_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps);
-static GstFlowReturn gst_chromium_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf);
+static GstFlowReturn gst_chromium_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame);
/* GObject vmethod implementations */
+/* Initialize the chromium's class. */
static void
-gst_chromium_base_init (gpointer gclass)
+gst_chromium_class_init (GstChromiumClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *gstelement_class = (GstElementClass *) klass;
+ GstVideoFilterClass *vfilter_class = (GstVideoFilterClass *) klass;
- gst_element_class_set_details_simple (element_class,
- "Chromium",
+ gst_element_class_set_details_simple (gstelement_class, "Chromium",
"Filter/Effect/Video",
"Chromium breaks the colors of the video signal.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
-}
-
-/* Initialize the chromium's class. */
-static void
-gst_chromium_class_init (GstChromiumClass * klass)
-{
- GObjectClass *gobject_class = (GObjectClass *) klass;
- GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_chromium_sink_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_chromium_src_template));
gobject_class->set_property = gst_chromium_set_property;
gobject_class->get_property = gst_chromium_get_property;
+ gobject_class->finalize = gst_chromium_finalize;
g_object_class_install_property (gobject_class, PROP_EDGE_A,
g_param_spec_uint ("edge-a", "Edge A",
@@ -184,8 +177,8 @@ gst_chromium_class_init (GstChromiumClass * klass)
g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_chromium_set_caps);
- trans_class->transform = GST_DEBUG_FUNCPTR (gst_chromium_transform);
+ vfilter_class->transform_frame =
+ GST_DEBUG_FUNCPTR (gst_chromium_transform_frame);
}
/* Initialize the element,
@@ -194,7 +187,7 @@ gst_chromium_class_init (GstChromiumClass * klass)
* initialize instance structure.
*/
static void
-gst_chromium_init (GstChromium * filter, GstChromiumClass * gclass)
+gst_chromium_init (GstChromium * filter)
{
filter->edge_a = DEFAULT_EDGE_A;
filter->edge_b = DEFAULT_EDGE_B;
@@ -225,7 +218,6 @@ gst_chromium_set_property (GObject * object, guint prop_id,
}
}
-
static void
gst_chromium_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec)
@@ -250,45 +242,36 @@ gst_chromium_get_property (GObject * object, guint prop_id,
GST_OBJECT_UNLOCK (filter);
}
-/* GstElement vmethod implementations */
-
-/* Handle the link with other elements. */
-static gboolean
-gst_chromium_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
- GstCaps * outcaps)
+static void
+gst_chromium_finalize (GObject * object)
{
- GstChromium *filter = GST_CHROMIUM (btrans);
- GstStructure *structure;
- gboolean ret = FALSE;
-
- structure = gst_caps_get_structure (incaps, 0);
-
- GST_OBJECT_LOCK (filter);
- if (gst_structure_get_int (structure, "width", &filter->width) &&
- gst_structure_get_int (structure, "height", &filter->height)) {
- ret = TRUE;
- }
- GST_OBJECT_UNLOCK (filter);
-
- return ret;
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
+/* GstElement vmethod implementations */
+
/* Actual processing. */
static GstFlowReturn
-gst_chromium_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf)
+gst_chromium_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame)
{
- GstChromium *filter = GST_CHROMIUM (btrans);
- gint video_size, edge_a, edge_b;
- guint32 *src = (guint32 *) GST_BUFFER_DATA (in_buf);
- guint32 *dest = (guint32 *) GST_BUFFER_DATA (out_buf);
+ GstChromium *filter = GST_CHROMIUM (vfilter);
+ gint video_size, edge_a, edge_b, width, height;
+ guint32 *src, *dest;
GstClockTime timestamp;
gint64 stream_time;
+ src = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
+ dest = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
+
+ width = GST_VIDEO_FRAME_WIDTH (in_frame);
+ height = GST_VIDEO_FRAME_HEIGHT (in_frame);
+
/* GstController: update the properties */
- timestamp = GST_BUFFER_TIMESTAMP (in_buf);
+ timestamp = GST_BUFFER_TIMESTAMP (in_frame->buffer);
stream_time =
- gst_segment_to_stream_time (&btrans->segment, GST_FORMAT_TIME, timestamp);
+ gst_segment_to_stream_time (&GST_BASE_TRANSFORM (filter)->segment,
+ GST_FORMAT_TIME, timestamp);
GST_DEBUG_OBJECT (filter, "sync to %" GST_TIME_FORMAT,
GST_TIME_ARGS (timestamp));
@@ -301,7 +284,7 @@ gst_chromium_transform (GstBaseTransform * btrans,
edge_b = filter->edge_b;
GST_OBJECT_UNLOCK (filter);
- video_size = filter->width * filter->height;
+ video_size = width * height;
transform (src, dest, video_size, edge_a, edge_b);
return GST_FLOW_OK;
diff --git a/gst/gaudieffects/gstchromium.h b/gst/gaudieffects/gstchromium.h
index 4f41f1d7..e7ea4f8e 100644
--- a/gst/gaudieffects/gstchromium.h
+++ b/gst/gaudieffects/gstchromium.h
@@ -1,7 +1,7 @@
/*
* GStreamer
* Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>>
- *
+ *
* Chromium - burning chrome video effect.
*
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -68,7 +68,6 @@ typedef struct GstChromiumClass GstChromiumClass;
struct GstChromium
{
GstVideoFilter videofilter;
- gint width, height;
/* < private > */
gint edge_a, edge_b;
diff --git a/gst/gaudieffects/gstdilate.c b/gst/gaudieffects/gstdilate.c
index 32170997..51602d58 100644
--- a/gst/gaudieffects/gstdilate.c
+++ b/gst/gaudieffects/gstdilate.c
@@ -1,7 +1,7 @@
/*
* GStreamer
- * Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>
- *
+ * Copyright (C) <2010-2012> Luis de Bethencourt <luis@debethencourt.com>
+ *
* Dilate - dilated eye video effect.
* Based on Pete Warden's FreeFrame plugin with the same name.
*
@@ -67,18 +67,18 @@
#include "gstplugin.h"
#include "gstdilate.h"
-#include <gst/video/video.h>
-#include <gst/controller/gstcontroller.h>
-
GST_DEBUG_CATEGORY_STATIC (gst_dilate_debug);
#define GST_CAT_DEFAULT gst_dilate_debug
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define CAPS_STR GST_VIDEO_CAPS_BGRx ";" GST_VIDEO_CAPS_RGBx
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ BGRx, RGBx }")
#else
-#define CAPS_STR GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ xBGR, xRGB }")
#endif
+#define gst_dilate_parent_class parent_class
+G_DEFINE_TYPE (GstDilate, gst_dilate, GST_TYPE_VIDEO_FILTER);
+
/* Filter signals and args. */
enum
{
@@ -102,58 +102,53 @@ static inline guint32 get_luminance (guint32 in);
/* The capabilities of the inputs and outputs. */
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+static GstStaticPadTemplate gst_dilate_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+static GstStaticPadTemplate gst_dilate_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-GST_BOILERPLATE (GstDilate, gst_dilate, GstVideoFilter, GST_TYPE_VIDEO_FILTER);
-
static void gst_dilate_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_dilate_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
+static void gst_dilate_finalize (GObject * object);
-static gboolean gst_dilate_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps);
-static GstFlowReturn gst_dilate_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf);
+static GstFlowReturn gst_dilate_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame);
/* GObject vmethod implementations */
+/* Initialize the dilate's class. */
static void
-gst_dilate_base_init (gpointer gclass)
+gst_dilate_class_init (GstDilateClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *gstelement_class = (GstElementClass *) klass;
+ GstVideoFilterClass *vfilter_class = (GstVideoFilterClass *) klass;
- gst_element_class_set_details_simple (element_class,
+ gst_element_class_set_details_simple (gstelement_class,
"Dilate",
"Filter/Effect/Video",
"Dilate copies the brightest pixel around.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
-}
-
-/* Initialize the dilate's class. */
-static void
-gst_dilate_class_init (GstDilateClass * klass)
-{
- GObjectClass *gobject_class = (GObjectClass *) klass;
- GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_dilate_sink_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_dilate_src_template));
gobject_class->set_property = gst_dilate_set_property;
gobject_class->get_property = gst_dilate_get_property;
+ gobject_class->finalize = gst_dilate_finalize;
g_object_class_install_property (gobject_class, PROP_ERODE,
g_param_spec_boolean ("erode", "Erode", "Erode parameter", FALSE,
@@ -163,8 +158,8 @@ gst_dilate_class_init (GstDilateClass * klass)
g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_dilate_set_caps);
- trans_class->transform = GST_DEBUG_FUNCPTR (gst_dilate_transform);
+ vfilter_class->transform_frame =
+ GST_DEBUG_FUNCPTR (gst_dilate_transform_frame);
}
/* Initialize the element,
@@ -173,7 +168,7 @@ gst_dilate_class_init (GstDilateClass * klass)
* initialize instance structure.
*/
static void
-gst_dilate_init (GstDilate * filter, GstDilateClass * gclass)
+gst_dilate_init (GstDilate * filter)
{
filter->erode = DEFAULT_ERODE;
filter->silent = FALSE;
@@ -219,48 +214,37 @@ gst_dilate_get_property (GObject * object, guint prop_id,
GST_OBJECT_UNLOCK (filter);
}
-/* GstElement vmethod implementations */
-
-/* Handle the link with other elements. */
-static gboolean
-gst_dilate_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
- GstCaps * outcaps)
+static void
+gst_dilate_finalize (GObject * object)
{
- GstDilate *filter = GST_DILATE (btrans);
- GstStructure *structure;
- gboolean ret = TRUE;
-
- structure = gst_caps_get_structure (incaps, 0);
-
- GST_OBJECT_LOCK (filter);
- if (gst_structure_get_int (structure, "width", &filter->width) &&
- gst_structure_get_int (structure, "height", &filter->height)) {
- ret = TRUE;
- }
- GST_OBJECT_UNLOCK (filter);
-
- return ret;
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
+/* GstElement vmethod implementations */
+
/* Actual processing. */
static GstFlowReturn
-gst_dilate_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf)
+gst_dilate_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame)
{
- GstDilate *filter = GST_DILATE (btrans);
- gint video_size;
+ GstDilate *filter = GST_DILATE (vfilter);
+ gint video_size, width, height;
gboolean erode;
- guint32 *src = (guint32 *) GST_BUFFER_DATA (in_buf);
- guint32 *dest = (guint32 *) GST_BUFFER_DATA (out_buf);
+ guint32 *src, *dest;
GstClockTime timestamp;
gint64 stream_time;
- video_size = filter->width * filter->height;
+ src = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
+ dest = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
+
+ width = GST_VIDEO_FRAME_WIDTH (in_frame);
+ height = GST_VIDEO_FRAME_HEIGHT (in_frame);
/* GstController: update the properties */
- timestamp = GST_BUFFER_TIMESTAMP (in_buf);
+ timestamp = GST_BUFFER_TIMESTAMP (in_frame->buffer);
stream_time =
- gst_segment_to_stream_time (&btrans->segment, GST_FORMAT_TIME, timestamp);
+ gst_segment_to_stream_time (&GST_BASE_TRANSFORM (filter)->segment,
+ GST_FORMAT_TIME, timestamp);
GST_DEBUG_OBJECT (filter, "sync to %" GST_TIME_FORMAT,
GST_TIME_ARGS (timestamp));
@@ -272,7 +256,8 @@ gst_dilate_transform (GstBaseTransform * btrans,
erode = filter->erode;
GST_OBJECT_UNLOCK (filter);
- transform (src, dest, video_size, filter->width, filter->height, erode);
+ video_size = width * height;
+ transform (src, dest, video_size, width, height, erode);
return GST_FLOW_OK;
}
diff --git a/gst/gaudieffects/gstdilate.h b/gst/gaudieffects/gstdilate.h
index 29e32f12..09e886ae 100644
--- a/gst/gaudieffects/gstdilate.h
+++ b/gst/gaudieffects/gstdilate.h
@@ -1,7 +1,7 @@
/*
* GStreamer
* Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>
- *
+ *
* Dilate - curve adjustment film video effect.
*
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -48,6 +48,7 @@
#include <gst/gst.h>
+#include <gst/video/video.h>
#include <gst/video/gstvideofilter.h>
G_BEGIN_DECLS
@@ -72,9 +73,6 @@ struct _GstDilate
GstVideoFilter videofilter;
/* < private > */
-
- gint width, height;
-
gboolean silent;
gboolean erode;
};
diff --git a/gst/gaudieffects/gstdodge.c b/gst/gaudieffects/gstdodge.c
index ff61aa7e..41cac51b 100644
--- a/gst/gaudieffects/gstdodge.c
+++ b/gst/gaudieffects/gstdodge.c
@@ -1,7 +1,7 @@
/*
* GStreamer
- * Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>
- *
+ * Copyright (C) <2010-2012> Luis de Bethencourt <luis@debethencourt.com>
+ *
* Dodge - saturation video effect.
* Based on Pete Warden's FreeFrame plugin with the same name.
*
@@ -67,18 +67,18 @@
#include "gstplugin.h"
#include "gstdodge.h"
-#include <gst/video/video.h>
-#include <gst/controller/gstcontroller.h>
-
GST_DEBUG_CATEGORY_STATIC (gst_dodge_debug);
#define GST_CAT_DEFAULT gst_dodge_debug
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define CAPS_STR GST_VIDEO_CAPS_BGRx ";" GST_VIDEO_CAPS_RGBx
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ BGRx, RGBx }")
#else
-#define CAPS_STR GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ xBGR, xRGB }")
#endif
+#define gst_dodge_parent_class parent_class
+G_DEFINE_TYPE (GstDodge, gst_dodge, GST_TYPE_VIDEO_FILTER);
+
/* Filter signals and args. */
enum
{
@@ -98,65 +98,60 @@ static void transform (guint32 * src, guint32 * dest, gint video_area);
/* The capabilities of the inputs and outputs. */
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+static GstStaticPadTemplate gst_dodge_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+static GstStaticPadTemplate gst_dodge_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-GST_BOILERPLATE (GstDodge, gst_dodge, GstVideoFilter, GST_TYPE_VIDEO_FILTER);
-
static void gst_dodge_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_dodge_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
+static void gst_dodge_finalize (GObject * object);
-static gboolean gst_dodge_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps);
-static GstFlowReturn gst_dodge_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf);
+static GstFlowReturn gst_dodge_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame);
/* GObject vmethod implementations */
+/* Initialize the dodge's class. */
static void
-gst_dodge_base_init (gpointer gclass)
+gst_dodge_class_init (GstDodgeClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *gstelement_class = (GstElementClass *) klass;
+ GstVideoFilterClass *vfilter_class = (GstVideoFilterClass *) klass;
- gst_element_class_set_details_simple (element_class,
+ gst_element_class_set_details_simple (gstelement_class,
"Dodge",
"Filter/Effect/Video",
"Dodge saturates the colors in the video signal.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
-}
-
-/* Initialize the dodge's class. */
-static void
-gst_dodge_class_init (GstDodgeClass * klass)
-{
- GObjectClass *gobject_class = (GObjectClass *) klass;
- GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_dodge_sink_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_dodge_src_template));
gobject_class->set_property = gst_dodge_set_property;
gobject_class->get_property = gst_dodge_get_property;
+ gobject_class->finalize = gst_dodge_finalize;
g_object_class_install_property (gobject_class, PROP_SILENT,
g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_dodge_set_caps);
- trans_class->transform = GST_DEBUG_FUNCPTR (gst_dodge_transform);
+ vfilter_class->transform_frame =
+ GST_DEBUG_FUNCPTR (gst_dodge_transform_frame);
}
/* Initialize the element,
@@ -165,7 +160,7 @@ gst_dodge_class_init (GstDodgeClass * klass)
* initialize instance structure.
*/
static void
-gst_dodge_init (GstDodge * filter, GstDodgeClass * gclass)
+gst_dodge_init (GstDodge * filter)
{
filter->silent = FALSE;
}
@@ -204,40 +199,44 @@ gst_dodge_get_property (GObject * object, guint prop_id,
GST_OBJECT_UNLOCK (filter);
}
+static void
+gst_dodge_finalize (GObject * object)
+{
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
/* GstElement vmethod implementations */
-/* Handle the link with other elements. */
-static gboolean
-gst_dodge_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
- GstCaps * outcaps)
+/* Actual processing. */
+static GstFlowReturn
+gst_dodge_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame)
{
- GstDodge *filter = GST_DODGE (btrans);
- GstStructure *structure;
- gboolean ret = TRUE;
+ GstDodge *filter = GST_DODGE (vfilter);
+ guint32 *src, *dest;
+ gint video_size, width, height;
- structure = gst_caps_get_structure (incaps, 0);
+ GstClockTime timestamp;
+ gint64 stream_time;
- GST_OBJECT_LOCK (filter);
- if (gst_structure_get_int (structure, "width", &filter->width) &&
- gst_structure_get_int (structure, "height", &filter->height)) {
- ret = TRUE;
- }
- GST_OBJECT_UNLOCK (filter);
+ src = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
+ dest = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
- return ret;
-}
+ width = GST_VIDEO_FRAME_WIDTH (in_frame);
+ height = GST_VIDEO_FRAME_HEIGHT (in_frame);
-/* Actual processing. */
-static GstFlowReturn
-gst_dodge_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf)
-{
- GstDodge *filter = GST_DODGE (btrans);
- guint32 *src = (guint32 *) GST_BUFFER_DATA (in_buf);
- guint32 *dest = (guint32 *) GST_BUFFER_DATA (out_buf);
- gint video_size;
+ timestamp = GST_BUFFER_TIMESTAMP (in_frame->buffer);
+ stream_time =
+ gst_segment_to_stream_time (&GST_BASE_TRANSFORM (filter)->segment,
+ GST_FORMAT_TIME, timestamp);
+
+ GST_DEBUG_OBJECT (filter, "sync to %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (timestamp));
+
+ if (GST_CLOCK_TIME_IS_VALID (stream_time))
+ gst_object_sync_values (GST_OBJECT (filter), stream_time);
- video_size = filter->width * filter->height;
+ video_size = width * height;
transform (src, dest, video_size);
diff --git a/gst/gaudieffects/gstdodge.h b/gst/gaudieffects/gstdodge.h
index 41191312..9181115b 100644
--- a/gst/gaudieffects/gstdodge.h
+++ b/gst/gaudieffects/gstdodge.h
@@ -1,7 +1,7 @@
/*
* GStreamer
- * Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>>
- *
+ * Copyright (C) <2010-2012> Luis de Bethencourt <luis@debethencourt.com>>
+ *
* Dodge - saturation video effect.
*
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -48,6 +48,7 @@
#include <gst/gst.h>
+#include <gst/video/video.h>
#include <gst/video/gstvideofilter.h>
G_BEGIN_DECLS
@@ -73,8 +74,6 @@ struct _GstDodge
/* < private > */
- gint width, height;
-
gboolean silent;
};
diff --git a/gst/gaudieffects/gstexclusion.c b/gst/gaudieffects/gstexclusion.c
index bfdebdfe..b5ac8065 100644
--- a/gst/gaudieffects/gstexclusion.c
+++ b/gst/gaudieffects/gstexclusion.c
@@ -1,7 +1,7 @@
/*
* GStreamer
- * Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>
- *
+ * Copyright (C) <2010-2012> Luis de Bethencourt <luis@debethencourt.com>
+ *
* Exclusion - color exclusion video effect.
* Based on Pete Warden's FreeFrame plugin with the same name.
*
@@ -68,15 +68,14 @@
#include "gstexclusion.h"
#include <gst/video/video.h>
-#include <gst/controller/gstcontroller.h>
GST_DEBUG_CATEGORY_STATIC (gst_exclusion_debug);
#define GST_CAT_DEFAULT gst_exclusion_debug
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define CAPS_STR GST_VIDEO_CAPS_BGRx ";" GST_VIDEO_CAPS_RGBx
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ BGRx, RGBx }")
#else
-#define CAPS_STR GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ xBGR, xRGB }")
#endif
/* Filter signals and args. */
@@ -102,59 +101,55 @@ static void transform (guint32 * src, guint32 * dest, gint video_area,
/* The capabilities of the inputs and outputs. */
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+static GstStaticPadTemplate gst_exclusion_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+static GstStaticPadTemplate gst_exclusion_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-GST_BOILERPLATE (GstExclusion, gst_exclusion, GstVideoFilter,
- GST_TYPE_VIDEO_FILTER);
+#define gst_exclusion_parent_class parent_class
+G_DEFINE_TYPE (GstExclusion, gst_exclusion, GST_TYPE_VIDEO_FILTER);
static void gst_exclusion_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_exclusion_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
+static void gst_exclusion_finalize (GObject * object);
-static gboolean gst_exclusion_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps);
-static GstFlowReturn gst_exclusion_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf);
+static GstFlowReturn gst_exclusion_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame);
/* GObject vmethod implementations */
+/* Initialize the exclusion's class. */
static void
-gst_exclusion_base_init (gpointer gclass)
+gst_exclusion_class_init (GstExclusionClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *gstelement_class = (GstElementClass *) klass;
+ GstVideoFilterClass *vfilter_class = (GstVideoFilterClass *) klass;
- gst_element_class_set_details_simple (element_class,
- "Exclusion",
+ gst_element_class_set_details_simple (gstelement_class, "Exclusion",
"Filter/Effect/Video",
"Exclusion exclodes the colors in the video signal.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
-}
-
-/* Initialize the exclusion's class. */
-static void
-gst_exclusion_class_init (GstExclusionClass * klass)
-{
- GObjectClass *gobject_class = (GObjectClass *) klass;
- GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_exclusion_sink_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_exclusion_src_template));
gobject_class->set_property = gst_exclusion_set_property;
gobject_class->get_property = gst_exclusion_get_property;
+ gobject_class->finalize = gst_exclusion_finalize;
g_object_class_install_property (gobject_class, PROP_FACTOR,
g_param_spec_uint ("factor", "Factor",
@@ -165,8 +160,8 @@ gst_exclusion_class_init (GstExclusionClass * klass)
g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_exclusion_set_caps);
- trans_class->transform = GST_DEBUG_FUNCPTR (gst_exclusion_transform);
+ vfilter_class->transform_frame =
+ GST_DEBUG_FUNCPTR (gst_exclusion_transform_frame);
}
/* Initialize the element,
@@ -175,7 +170,7 @@ gst_exclusion_class_init (GstExclusionClass * klass)
* initialize instance structure.
*/
static void
-gst_exclusion_init (GstExclusion * filter, GstExclusionClass * gclass)
+gst_exclusion_init (GstExclusion * filter)
{
filter->factor = DEFAULT_FACTOR;
filter->silent = FALSE;
@@ -221,43 +216,36 @@ gst_exclusion_get_property (GObject * object, guint prop_id,
GST_OBJECT_UNLOCK (filter);
}
-/* GstElement vmethod implementations */
-/* Handle the link with other elements. */
-static gboolean
-gst_exclusion_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
- GstCaps * outcaps)
+static void
+gst_exclusion_finalize (GObject * object)
{
- GstExclusion *filter = GST_EXCLUSION (btrans);
- GstStructure *structure;
- gboolean ret = FALSE;
-
- GST_OBJECT_LOCK (filter);
- structure = gst_caps_get_structure (incaps, 0);
- if (gst_structure_get_int (structure, "width", &filter->width) &&
- gst_structure_get_int (structure, "height", &filter->height)) {
- ret = TRUE;
- }
- GST_OBJECT_UNLOCK (filter);
-
- return ret;
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
+/* GstElement vmethod implementations */
+
/* Actual processing. */
static GstFlowReturn
-gst_exclusion_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf)
+gst_exclusion_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame)
{
- GstExclusion *filter = GST_EXCLUSION (btrans);
- gint video_size, factor;
- guint32 *src = (guint32 *) GST_BUFFER_DATA (in_buf);
- guint32 *dest = (guint32 *) GST_BUFFER_DATA (out_buf);
+ GstExclusion *filter = GST_EXCLUSION (vfilter);
+ gint video_size, factor, width, height;
+ guint32 *src, *dest;
GstClockTime timestamp;
gint64 stream_time;
+ src = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
+ dest = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
+
+ width = GST_VIDEO_FRAME_WIDTH (in_frame);
+ height = GST_VIDEO_FRAME_HEIGHT (in_frame);
+
/* GstController: update the properties */
- timestamp = GST_BUFFER_TIMESTAMP (in_buf);
+ timestamp = GST_BUFFER_TIMESTAMP (in_frame->buffer);
stream_time =
- gst_segment_to_stream_time (&btrans->segment, GST_FORMAT_TIME, timestamp);
+ gst_segment_to_stream_time (&GST_BASE_TRANSFORM (filter)->segment,
+ GST_FORMAT_TIME, timestamp);
GST_DEBUG_OBJECT (filter, "sync to %" GST_TIME_FORMAT,
GST_TIME_ARGS (timestamp));
@@ -269,7 +257,7 @@ gst_exclusion_transform (GstBaseTransform * btrans,
factor = filter->factor;
GST_OBJECT_UNLOCK (filter);
- video_size = filter->width * filter->height;
+ video_size = width * height;
transform (src, dest, video_size, factor);
return GST_FLOW_OK;
diff --git a/gst/gaudieffects/gstexclusion.h b/gst/gaudieffects/gstexclusion.h
index b47eef1b..9e34c261 100644
--- a/gst/gaudieffects/gstexclusion.h
+++ b/gst/gaudieffects/gstexclusion.h
@@ -1,7 +1,7 @@
/*
* GStreamer
- * Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>>
- *
+ * Copyright (C) <2010-2012> Luis de Bethencourt <luis@debethencourt.com>>
+ *
* Exclusion - color exclusion video effect.
*
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -49,6 +49,7 @@
#include <gst/gst.h>
#include <gst/video/gstvideofilter.h>
+#include <gst/video/video.h>
G_BEGIN_DECLS
@@ -73,8 +74,6 @@ struct _GstExclusion
/* < private > */
- gint width, height;
-
gint factor;
gboolean silent;
};
diff --git a/gst/gaudieffects/gstgaussblur.c b/gst/gaudieffects/gstgaussblur.c
index 861bbf9d..b53da3a8 100644
--- a/gst/gaudieffects/gstgaussblur.c
+++ b/gst/gaudieffects/gstgaussblur.c
@@ -1,44 +1,108 @@
+/*
+ * GStreamer
+ * Copyright (C) <2010> Jan Schmidt <thaytan@noraisin.net>
+ * Copyright (C) <2012> Luis de Bethencourt <luis@debethencourt.com>
+ *
+ * Chromium - burning chrome video effect.
+ * Based on Pete Warden's FreeFrame plugin with the same name.
+ *
+ * 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.
+ */
+
+/**
+ * SECTION:element-gaussianblur
+ *
+ * Gaussianblur blurs the video stream in realtime.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch -v videotestsrc ! gaussianblur ! ffmpegcolorspace ! autovideosink
+ * ]| This pipeline shows the effect of gaussianblur on a test stream
+ * </refsect2>
+ */
+
#ifdef HAVE_CONFIG_H
-# include <config.h>
+#include <config.h>
+#include <string.h>
#endif
#include <math.h>
#include <gst/gst.h>
-#include <gst/controller/gstcontroller.h>
#include "gstplugin.h"
#include "gstgaussblur.h"
-static gboolean gauss_blur_stop (GstBaseTransform * btrans);
-static gboolean gauss_blur_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps);
-static GstFlowReturn gauss_blur_process_frame (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf);
+static void gst_gaussianblur_finalize (GObject * object);
+
+static gboolean gst_gaussianblur_set_info (GstVideoFilter * filter,
+ GstCaps * incaps, GstVideoInfo * in_info, GstCaps * outcaps,
+ GstVideoInfo * out_info);
+static GstFlowReturn gst_gaussianblur_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame);
-static void gauss_blur_set_property (GObject * object,
+static void gst_gaussianblur_set_property (GObject * object,
guint prop_id, const GValue * value, GParamSpec * pspec);
-static void gauss_blur_get_property (GObject * object,
+static void gst_gaussianblur_get_property (GObject * object,
guint prop_id, GValue * value, GParamSpec * pspec);
GST_DEBUG_CATEGORY_STATIC (gst_gauss_blur_debug);
#define GST_CAT_DEFAULT gst_gauss_blur_debug
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define CAPS_STR_RGB GST_VIDEO_CAPS_BGRx ";" GST_VIDEO_CAPS_RGBx
+#define CAPS_STR_RGB GST_VIDEO_CAPS_MAKE ("{ BGRx, RGBx }")
#else
-#define CAPS_STR_RGB GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR
+#define CAPS_STR_RGB GST_VIDEO_CAPS_MAKE ("{ xBGR, xRGB }")
#endif
-#define CAPS_STR GST_VIDEO_CAPS_YUV("AYUV")
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("AYUV")
/* The capabilities of the inputs and outputs. */
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+static GstStaticPadTemplate gst_gaussianblur_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+static GstStaticPadTemplate gst_gaussianblur_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
@@ -51,62 +115,79 @@ enum
PROP_LAST
};
-static void cleanup (GaussBlur * gb);
-static gboolean make_gaussian_kernel (GaussBlur * gb, float sigma);
-static void gaussian_smooth (GaussBlur * gb, guint8 * image,
+static gboolean make_gaussian_kernel (GstGaussianBlur * gb, float sigma);
+static void gaussian_smooth (GstGaussianBlur * gb, guint8 * image,
guint8 * out_image);
-GST_BOILERPLATE (GaussBlur, gauss_blur, GstVideoFilter, GST_TYPE_VIDEO_FILTER);
+#define gst_gaussianblur_parent_class parent_class
+G_DEFINE_TYPE (GstGaussianBlur, gst_gaussianblur, GST_TYPE_VIDEO_FILTER);
#define DEFAULT_SIGMA 1.2
+/* Initalize the gaussianblur's class. */
static void
-gauss_blur_base_init (gpointer gclass)
+gst_gaussianblur_class_init (GstGaussianBlurClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *gstelement_class = (GstElementClass *) klass;
+ GstVideoFilterClass *vfilter_class = (GstVideoFilterClass *) klass;
- gst_element_class_set_details_simple (element_class,
- "GaussBlur",
+ gst_element_class_set_details_simple (gstelement_class,
+ "GstGaussianBlur",
"Filter/Effect/Video",
"Perform Gaussian blur/sharpen on a video",
"Jan Schmidt <thaytan@noraisin.net>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
-}
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_gaussianblur_sink_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_gaussianblur_src_template));
-static void
-gauss_blur_class_init (GaussBlurClass * klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
-
- object_class->set_property = gauss_blur_set_property;
- object_class->get_property = gauss_blur_get_property;
+ gobject_class->set_property = gst_gaussianblur_set_property;
+ gobject_class->get_property = gst_gaussianblur_get_property;
+ gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_gaussianblur_finalize);
- trans_class->stop = gauss_blur_stop;
- trans_class->set_caps = gauss_blur_set_caps;
- trans_class->transform = gauss_blur_process_frame;
-
- g_object_class_install_property (object_class, PROP_SIGMA,
+ g_object_class_install_property (gobject_class, PROP_SIGMA,
g_param_spec_double ("sigma", "Sigma",
"Sigma value for gaussian blur (negative for sharpen)",
-20.0, 20.0, DEFAULT_SIGMA,
G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+
+ vfilter_class->transform_frame =
+ GST_DEBUG_FUNCPTR (gst_gaussianblur_transform_frame);
+ vfilter_class->set_info = GST_DEBUG_FUNCPTR (gst_gaussianblur_set_info);
+}
+
+static gboolean
+gst_gaussianblur_set_info (GstVideoFilter * filter, GstCaps * incaps,
+ GstVideoInfo * in_info, GstCaps * outcaps, GstVideoInfo * out_info)
+{
+ GstGaussianBlur *gb = GST_GAUSSIANBLUR (filter);
+ guint32 n_elems;
+
+ gb->width = GST_VIDEO_INFO_WIDTH (in_info);
+ gb->height = GST_VIDEO_INFO_HEIGHT (in_info);
+
+ /* get stride */
+ gb->stride = GST_VIDEO_INFO_COMP_STRIDE (in_info, 0);
+ n_elems = gb->stride * gb->height;
+ gb->tempim = g_malloc (sizeof (gfloat) * n_elems);
+
+ return TRUE;
}
static void
-gauss_blur_init (GaussBlur * gb, GaussBlurClass * gclass)
+gst_gaussianblur_init (GstGaussianBlur * gb)
{
gb->sigma = DEFAULT_SIGMA;
gb->cur_sigma = -1.0;
}
static void
-cleanup (GaussBlur * gb)
+gst_gaussianblur_finalize (GObject * object)
{
+ GstGaussianBlur *gb = GST_GAUSSIANBLUR (object);
+
g_free (gb->tempim);
gb->tempim = NULL;
@@ -117,73 +198,46 @@ cleanup (GaussBlur * gb)
gb->kernel = NULL;
g_free (gb->kernel_sum);
gb->kernel_sum = NULL;
-}
-
-static gboolean
-gauss_blur_stop (GstBaseTransform * btrans)
-{
- GaussBlur *gb = GAUSS_BLUR (btrans);
-
- cleanup (gb);
-
- return TRUE;
-}
-
-static gboolean
-gauss_blur_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps)
-{
- GaussBlur *gb = GAUSS_BLUR (btrans);
- GstStructure *structure;
- GstVideoFormat format;
- guint32 n_elems;
- structure = gst_caps_get_structure (incaps, 0);
- g_return_val_if_fail (structure != NULL, FALSE);
-
- if (!gst_video_format_parse_caps (incaps, &format, &gb->width, &gb->height))
- return FALSE;
-
- /* get stride */
- gb->stride = gst_video_format_get_row_stride (format, 0, gb->width);
-
- n_elems = gb->stride * gb->height;
-
- gb->tempim = g_malloc (sizeof (gfloat) * n_elems);
- //gb->smoothedim = g_malloc (sizeof (guint16) * n_elems);
-
- return TRUE;
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
static GstFlowReturn
-gauss_blur_process_frame (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf)
+gst_gaussianblur_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame)
{
- GaussBlur *gb = GAUSS_BLUR (btrans);
+ GstGaussianBlur *filter = GST_GAUSSIANBLUR (vfilter);
GstClockTime timestamp;
gint64 stream_time;
gfloat sigma;
+ guint8 *src, *dest;
/* GstController: update the properties */
- timestamp = GST_BUFFER_TIMESTAMP (in_buf);
+ timestamp = GST_BUFFER_TIMESTAMP (in_frame->buffer);
stream_time =
- gst_segment_to_stream_time (&btrans->segment, GST_FORMAT_TIME, timestamp);
+ gst_segment_to_stream_time (&GST_BASE_TRANSFORM (filter)->segment,
+ GST_FORMAT_TIME, timestamp);
+
+ GST_DEBUG_OBJECT (filter, "sync to %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (timestamp));
+
if (GST_CLOCK_TIME_IS_VALID (stream_time))
- gst_object_sync_values (GST_OBJECT (gb), stream_time);
-
- GST_OBJECT_LOCK (gb);
- sigma = gb->sigma;
- GST_OBJECT_UNLOCK (gb);
-
- if (gb->cur_sigma != sigma) {
- g_free (gb->kernel);
- gb->kernel = NULL;
- g_free (gb->kernel_sum);
- gb->kernel_sum = NULL;
- gb->cur_sigma = sigma;
+ gst_object_sync_values (GST_OBJECT (filter), stream_time);
+
+ GST_OBJECT_LOCK (filter);
+ sigma = filter->sigma;
+ GST_OBJECT_UNLOCK (filter);
+
+ if (filter->cur_sigma != sigma) {
+ g_free (filter->kernel);
+ filter->kernel = NULL;
+ g_free (filter->kernel_sum);
+ filter->kernel_sum = NULL;
+ filter->cur_sigma = sigma;
}
- if (gb->kernel == NULL && !make_gaussian_kernel (gb, gb->cur_sigma)) {
- GST_ELEMENT_ERROR (btrans, RESOURCE, NO_SPACE_LEFT, ("Out of memory"),
+ if (filter->kernel == NULL &&
+ !make_gaussian_kernel (filter, filter->cur_sigma)) {
+ GST_ELEMENT_ERROR (filter, RESOURCE, NO_SPACE_LEFT, ("Out of memory"),
("Failed to allocation gaussian kernel"));
return GST_FLOW_ERROR;
}
@@ -192,15 +246,16 @@ gauss_blur_process_frame (GstBaseTransform * btrans,
* Perform gaussian smoothing on the image using the input standard
* deviation.
*/
- memcpy (GST_BUFFER_DATA (out_buf), GST_BUFFER_DATA (in_buf),
- gb->height * gb->stride);
- gaussian_smooth (gb, GST_BUFFER_DATA (in_buf), GST_BUFFER_DATA (out_buf));
+ src = GST_VIDEO_FRAME_COMP_DATA (in_frame, 0);
+ dest = GST_VIDEO_FRAME_COMP_DATA (out_frame, 0);
+ gst_video_frame_copy (out_frame, in_frame);
+ gaussian_smooth (filter, src, dest);
return GST_FLOW_OK;
}
static void
-blur_row_x (GaussBlur * gb, guint8 * in_row, gfloat * out_row)
+blur_row_x (GstGaussianBlur * gb, guint8 * in_row, gfloat * out_row)
{
int c, cc, center;
float dot[4], sum;
@@ -238,7 +293,7 @@ blur_row_x (GaussBlur * gb, guint8 * in_row, gfloat * out_row)
}
static void
-gaussian_smooth (GaussBlur * gb, guint8 * image, guint8 * out_image)
+gaussian_smooth (GstGaussianBlur * gb, guint8 * image, guint8 * out_image)
{
int r, c, rr, center;
float dot[4], sum;
@@ -302,7 +357,7 @@ gaussian_smooth (GaussBlur * gb, guint8 * image, guint8 * out_image)
* Create a one dimensional gaussian kernel.
*/
static gboolean
-make_gaussian_kernel (GaussBlur * gb, float sigma)
+make_gaussian_kernel (GstGaussianBlur * gb, float sigma)
{
int i, center, left, right;
float sum, sum2;
@@ -365,10 +420,10 @@ make_gaussian_kernel (GaussBlur * gb, float sigma)
}
static void
-gauss_blur_set_property (GObject * object,
+gst_gaussianblur_set_property (GObject * object,
guint prop_id, const GValue * value, GParamSpec * pspec)
{
- GaussBlur *gb = GAUSS_BLUR (object);
+ GstGaussianBlur *gb = GST_GAUSSIANBLUR (object);
switch (prop_id) {
case PROP_SIGMA:
GST_OBJECT_LOCK (object);
@@ -382,10 +437,10 @@ gauss_blur_set_property (GObject * object,
}
static void
-gauss_blur_get_property (GObject * object,
+gst_gaussianblur_get_property (GObject * object,
guint prop_id, GValue * value, GParamSpec * pspec)
{
- GaussBlur *gb = GAUSS_BLUR (object);
+ GstGaussianBlur *gb = GST_GAUSSIANBLUR (object);
switch (prop_id) {
case PROP_SIGMA:
GST_OBJECT_LOCK (gb);
@@ -407,5 +462,5 @@ gst_gauss_blur_plugin_init (GstPlugin * plugin)
0, "Gaussian Blur video effect");
return gst_element_register (plugin, "gaussianblur", GST_RANK_NONE,
- GST_TYPE_GAUSS_BLUR);
+ GST_TYPE_GAUSSIANBLUR);
}
diff --git a/gst/gaudieffects/gstgaussblur.h b/gst/gaudieffects/gstgaussblur.h
index e582d181..2f0ee6bc 100644
--- a/gst/gaudieffects/gstgaussblur.h
+++ b/gst/gaudieffects/gstgaussblur.h
@@ -1,3 +1,50 @@
+/*
+ * GStreamer
+ * Copyright (C) <2010> Jan Schmidt <thaytan@noraisin.net>
+ * Copyright (C) <2012> Luis de Bethencourt <luis@debethencourt.com>
+ *
+ * Chromium - burning chrome video effect.
+ * Based on Pete Warden's FreeFrame plugin with the same name.
+ *
+ * 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_GAUSS_BLUR_H__
#define __GST_GAUSS_BLUR_H__
@@ -7,14 +54,14 @@
G_BEGIN_DECLS
-#define GST_TYPE_GAUSS_BLUR (gauss_blur_get_type())
-#define GAUSS_BLUR(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GAUSS_BLUR, GaussBlur))
+#define GST_TYPE_GAUSSIANBLUR (gst_gaussianblur_get_type())
+#define GST_GAUSSIANBLUR(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GAUSSIANBLUR, GstGaussianBlur))
-typedef struct GaussBlur GaussBlur;
-typedef struct GaussBlurClass GaussBlurClass;
+typedef struct GstGaussianBlur GstGaussianBlur;
+typedef struct GstGaussianBlurClass GstGaussianBlurClass;
-struct GaussBlur
+struct GstGaussianBlur
{
GstVideoFilter videofilter;
gint width, height, stride;
@@ -28,12 +75,12 @@ struct GaussBlur
gint16 *smoothedim;
};
-struct GaussBlurClass
+struct GstGaussianBlurClass
{
GstVideoFilterClass parent_class;
};
-GType gauss_blur_get_type(void);
+GType gst_gaussianblur_get_type(void);
G_END_DECLS
diff --git a/gst/gaudieffects/gstsolarize.c b/gst/gaudieffects/gstsolarize.c
index e5023d22..087e0a7d 100644
--- a/gst/gaudieffects/gstsolarize.c
+++ b/gst/gaudieffects/gstsolarize.c
@@ -1,7 +1,7 @@
/*
* GStreamer
- * Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>
- *
+ * Copyright (C) <2010-2012> Luis de Bethencourt <luis@debethencourt.com>
+ *
* Solarize - curve adjustment video effect.
* Based on Pete Warden's FreeFrame plugin with the same name.
*
@@ -67,16 +67,13 @@
#include "gstplugin.h"
#include "gstsolarize.h"
-#include <gst/video/video.h>
-#include <gst/controller/gstcontroller.h>
-
GST_DEBUG_CATEGORY_STATIC (gst_solarize_debug);
#define GST_CAT_DEFAULT gst_solarize_debug
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define CAPS_STR GST_VIDEO_CAPS_BGRx ";" GST_VIDEO_CAPS_RGBx
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ BGRx, RGBx }")
#else
-#define CAPS_STR GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR
+#define CAPS_STR GST_VIDEO_CAPS_MAKE ("{ xBGR, xRGB }")
#endif
/* Filter signals and args. */
@@ -106,59 +103,56 @@ static void transform (guint32 * src, guint32 * dest, gint video_area,
/* The capabilities of the inputs and outputs. */
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+static GstStaticPadTemplate gst_solarize_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+static GstStaticPadTemplate gst_solarize_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CAPS_STR)
);
-GST_BOILERPLATE (GstSolarize, gst_solarize, GstVideoFilter,
- GST_TYPE_VIDEO_FILTER);
+#define gst_solarize_parent_class parent_class
+G_DEFINE_TYPE (GstSolarize, gst_solarize, GST_TYPE_VIDEO_FILTER);
static void gst_solarize_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_solarize_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
+static void gst_solarize_finalize (GObject * object);
-static gboolean gst_solarize_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps);
-static GstFlowReturn gst_solarize_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf);
+static GstFlowReturn gst_solarize_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame);
/* GObject vmethod implementations */
+/* Initialize the solarize's class. */
static void
-gst_solarize_base_init (gpointer gclass)
+gst_solarize_class_init (GstSolarizeClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *gstelement_class = (GstElementClass *) klass;
+ GstVideoFilterClass *vfilter_class = (GstVideoFilterClass *) klass;
- gst_element_class_set_details_simple (element_class,
+ gst_element_class_set_details_simple (gstelement_class,
"Solarize",
"Filter/Effect/Video",
"Solarize tunable inverse in the video signal.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
-}
-
-/* Initialize the solarize's class. */
-static void
-gst_solarize_class_init (GstSolarizeClass * klass)
-{
- GObjectClass *gobject_class = (GObjectClass *) klass;
- GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_solarize_sink_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_solarize_src_template));
gobject_class->set_property = gst_solarize_set_property;
gobject_class->get_property = gst_solarize_get_property;
+ gobject_class->finalize = gst_solarize_finalize;
g_object_class_install_property (gobject_class, PROP_THRESHOLD,
g_param_spec_uint ("threshold", "Threshold",
@@ -179,8 +173,8 @@ gst_solarize_class_init (GstSolarizeClass * klass)
g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_solarize_set_caps);
- trans_class->transform = GST_DEBUG_FUNCPTR (gst_solarize_transform);
+ vfilter_class->transform_frame =
+ GST_DEBUG_FUNCPTR (gst_solarize_transform_frame);
}
/* Initialize the element,
@@ -189,7 +183,7 @@ gst_solarize_class_init (GstSolarizeClass * klass)
* initialize instance structure.
*/
static void
-gst_solarize_init (GstSolarize * filter, GstSolarizeClass * gclass)
+gst_solarize_init (GstSolarize * filter)
{
filter->threshold = DEFAULT_THRESHOLD;
filter->start = DEFAULT_START;
@@ -249,44 +243,36 @@ gst_solarize_get_property (GObject * object, guint prop_id,
GST_OBJECT_UNLOCK (filter);
}
-/* GstElement vmethod implementations */
-
-/* Handle the link with other elements. */
-static gboolean
-gst_solarize_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
- GstCaps * outcaps)
+static void
+gst_solarize_finalize (GObject * object)
{
- GstSolarize *filter = GST_SOLARIZE (btrans);
- GstStructure *structure;
- gboolean ret = FALSE;
-
- GST_OBJECT_LOCK (filter);
- structure = gst_caps_get_structure (incaps, 0);
- if (gst_structure_get_int (structure, "width", &filter->width) &&
- gst_structure_get_int (structure, "height", &filter->height)) {
- ret = TRUE;
- }
- GST_OBJECT_UNLOCK (filter);
-
- return ret;
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
+/* GstElement vmethod implementations */
+
/* Actual processing. */
static GstFlowReturn
-gst_solarize_transform (GstBaseTransform * btrans,
- GstBuffer * in_buf, GstBuffer * out_buf)
+gst_solarize_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame)
{
- GstSolarize *filter = GST_SOLARIZE (btrans);
- gint video_size, threshold, start, end;
- guint32 *src = (guint32 *) GST_BUFFER_DATA (in_buf);
- guint32 *dest = (guint32 *) GST_BUFFER_DATA (out_buf);
+ GstSolarize *filter = GST_SOLARIZE (vfilter);
+ gint video_size, threshold, start, end, width, height;
+ guint32 *src, *dest;
GstClockTime timestamp;
gint64 stream_time;
+ src = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
+ dest = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
+
+ width = GST_VIDEO_FRAME_WIDTH (in_frame);
+ height = GST_VIDEO_FRAME_HEIGHT (in_frame);
+
/* GstController: update the properties */
- timestamp = GST_BUFFER_TIMESTAMP (in_buf);
+ timestamp = GST_BUFFER_TIMESTAMP (in_frame->buffer);
stream_time =
- gst_segment_to_stream_time (&btrans->segment, GST_FORMAT_TIME, timestamp);
+ gst_segment_to_stream_time (&GST_BASE_TRANSFORM (filter)->segment,
+ GST_FORMAT_TIME, timestamp);
GST_DEBUG_OBJECT (filter, "sync to %" GST_TIME_FORMAT,
GST_TIME_ARGS (timestamp));
@@ -300,7 +286,7 @@ gst_solarize_transform (GstBaseTransform * btrans,
end = filter->end;
GST_OBJECT_UNLOCK (filter);
- video_size = filter->width * filter->height;
+ video_size = width * height;
transform (src, dest, video_size, threshold, start, end);
return GST_FLOW_OK;
diff --git a/gst/gaudieffects/gstsolarize.h b/gst/gaudieffects/gstsolarize.h
index 0d26a85e..a304369b 100644
--- a/gst/gaudieffects/gstsolarize.h
+++ b/gst/gaudieffects/gstsolarize.h
@@ -1,7 +1,7 @@
/*
* GStreamer
- * Copyright (C) 2010 Luis de Bethencourt <luis@debethencourt.com>
- *
+ * Copyright (C) <2010-2012> Luis de Bethencourt <luis@debethencourt.com>
+ *
* Solarize - smart inverse film video effect.
*
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -48,6 +48,7 @@
#include <gst/gst.h>
+#include <gst/video/video.h>
#include <gst/video/gstvideofilter.h>
G_BEGIN_DECLS
@@ -73,8 +74,6 @@ struct _GstSolarize
/* < private > */
- gint width, height;
-
gint threshold, start, end;
gboolean silent;
};
diff --git a/gst/geometrictransform/Makefile.am b/gst/geometrictransform/Makefile.am
index 4f11c8a2..b34007bc 100644
--- a/gst/geometrictransform/Makefile.am
+++ b/gst/geometrictransform/Makefile.am
@@ -24,7 +24,6 @@ libgstgeometrictransform_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) \
$(GST_PLUGINS_BASE_CFLAGS)
libgstgeometrictransform_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
-lgstvideo-@GST_API_VERSION@ \
- -lgstinterfaces-@GST_API_VERSION@ \
$(GST_BASE_LIBS) \
$(GST_LIBS) $(LIBM)
libgstgeometrictransform_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
diff --git a/gst/geometrictransform/Makefile.in b/gst/geometrictransform/Makefile.in
index e853e171..2fd20395 100644
--- a/gst/geometrictransform/Makefile.in
+++ b/gst/geometrictransform/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -482,6 +482,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -498,6 +500,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -530,10 +533,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -631,7 +633,6 @@ libgstgeometrictransform_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) \
libgstgeometrictransform_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
-lgstvideo-@GST_API_VERSION@ \
- -lgstinterfaces-@GST_API_VERSION@ \
$(GST_BASE_LIBS) \
$(GST_LIBS) $(LIBM)
@@ -700,7 +701,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/geometrictransform/gstbulge.c b/gst/geometrictransform/gstbulge.c
index abfc0096..674f401e 100644
--- a/gst/geometrictransform/gstbulge.c
+++ b/gst/geometrictransform/gstbulge.c
@@ -62,8 +62,8 @@ enum
#define DEFAULT_ZOOM 3.0
-GST_BOILERPLATE (GstBulge, gst_bulge, GstCircleGeometricTransform,
- GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
+#define gst_bulge_parent_class parent_class
+G_DEFINE_TYPE (GstBulge, gst_bulge, GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
static void
gst_bulge_set_property (GObject * object, guint prop_id, const GValue * value,
@@ -117,20 +117,6 @@ gst_bulge_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_bulge_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "bulge",
- "Transform/Effect/Video",
- "Adds a protuberance in the center point",
- "Filippo Argiolas <filippo.argiolas@gmail.com>");
-}
-
static gboolean
bulge_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -181,13 +167,21 @@ static void
gst_bulge_class_init (GstBulgeClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "bulge",
+ "Transform/Effect/Video",
+ "Adds a protuberance in the center point",
+ "Filippo Argiolas <filippo.argiolas@gmail.com>");
+
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_bulge_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_bulge_get_property);
@@ -204,7 +198,7 @@ gst_bulge_class_init (GstBulgeClass * klass)
}
static void
-gst_bulge_init (GstBulge * filter, GstBulgeClass * gclass)
+gst_bulge_init (GstBulge * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gstcircle.c b/gst/geometrictransform/gstcircle.c
index 7cfe67c2..72d8bcb4 100644
--- a/gst/geometrictransform/gstcircle.c
+++ b/gst/geometrictransform/gstcircle.c
@@ -74,8 +74,8 @@ enum
#define DEFAULT_HEIGHT 20
#define DEFAULT_SPREAD_ANGLE G_PI
-GST_BOILERPLATE (GstCircle, gst_circle, GstCircleGeometricTransform,
- GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
+#define gst_circle_parent_class parent_class
+G_DEFINE_TYPE (GstCircle, gst_circle, GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
static void
gst_circle_set_property (GObject * object, guint prop_id, const GValue * value,
@@ -150,20 +150,6 @@ gst_circle_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_circle_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "circle",
- "Transform/Effect/Video",
- "Warps the picture into an arc shaped form",
- "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
-}
-
static gboolean
circle_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -196,13 +182,21 @@ static void
gst_circle_class_init (GstCircleClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "circle",
+ "Transform/Effect/Video",
+ "Warps the picture into an arc shaped form",
+ "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_circle_finalize);
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_circle_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_circle_get_property);
@@ -227,7 +221,7 @@ gst_circle_class_init (GstCircleClass * klass)
}
static void
-gst_circle_init (GstCircle * filter, GstCircleClass * gclass)
+gst_circle_init (GstCircle * filter)
{
filter->angle = DEFAULT_ANGLE;
filter->spread_angle = DEFAULT_SPREAD_ANGLE;
diff --git a/gst/geometrictransform/gstdiffuse.c b/gst/geometrictransform/gstdiffuse.c
index 5f43a2b1..16d27749 100644
--- a/gst/geometrictransform/gstdiffuse.c
+++ b/gst/geometrictransform/gstdiffuse.c
@@ -68,8 +68,8 @@ enum
#define DEFAULT_SCALE 4
-GST_BOILERPLATE (GstDiffuse, gst_diffuse, GstGeometricTransform,
- GST_TYPE_GEOMETRIC_TRANSFORM);
+#define gst_diffuse_parent_class parent_class
+G_DEFINE_TYPE (GstDiffuse, gst_diffuse, GST_TYPE_GEOMETRIC_TRANSFORM);
static void
gst_diffuse_set_property (GObject * object, guint prop_id, const GValue * value,
@@ -130,18 +130,6 @@ gst_diffuse_finalize (GObject * obj)
/* GObject vmethod implementations */
-static void
-gst_diffuse_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "diffuse",
- "Transform/Effect/Video",
- "Diffuses the image by moving its pixels in random directions",
- "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
-}
-
static gboolean
diffuse_prepare (GstGeometricTransform * trans)
{
@@ -187,13 +175,21 @@ static void
gst_diffuse_class_init (GstDiffuseClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "diffuse",
+ "Transform/Effect/Video",
+ "Diffuses the image by moving its pixels in random directions",
+ "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_diffuse_finalize);
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_diffuse_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_diffuse_get_property);
@@ -209,7 +205,7 @@ gst_diffuse_class_init (GstDiffuseClass * klass)
}
static void
-gst_diffuse_init (GstDiffuse * filter, GstDiffuseClass * gclass)
+gst_diffuse_init (GstDiffuse * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gstfisheye.c b/gst/geometrictransform/gstfisheye.c
index 46318b04..2227aab3 100644
--- a/gst/geometrictransform/gstfisheye.c
+++ b/gst/geometrictransform/gstfisheye.c
@@ -53,22 +53,8 @@
GST_DEBUG_CATEGORY_STATIC (gst_fisheye_debug);
#define GST_CAT_DEFAULT gst_fisheye_debug
-GST_BOILERPLATE (GstFisheye, gst_fisheye, GstGeometricTransform,
- GST_TYPE_GEOMETRIC_TRANSFORM);
-
-/* GObject vmethod implementations */
-
-static void
-gst_fisheye_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "fisheye",
- "Transform/Effect/Video",
- "Split the image into two halves and reflect one over each other",
- "Filippo Argiolas <filippo.argiolas@gmail.com>");
-}
+#define gst_fisheye_parent_class parent_class
+G_DEFINE_TYPE (GstFisheye, gst_fisheye, GST_TYPE_GEOMETRIC_TRANSFORM);
static gboolean
fisheye_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
@@ -123,17 +109,24 @@ fisheye_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
static void
gst_fisheye_class_init (GstFisheyeClass * klass)
{
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "fisheye",
+ "Transform/Effect/Video",
+ "Split the image into two halves and reflect one over each other",
+ "Filippo Argiolas <filippo.argiolas@gmail.com>");
gstgt_class->map_func = fisheye_map;
}
static void
-gst_fisheye_init (GstFisheye * filter, GstFisheyeClass * gclass)
+gst_fisheye_init (GstFisheye * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gstgeometrictransform.c b/gst/geometrictransform/gstgeometrictransform.c
index 4fceaef5..c840d8a8 100644
--- a/gst/geometrictransform/gstgeometrictransform.c
+++ b/gst/geometrictransform/gstgeometrictransform.c
@@ -23,52 +23,25 @@
#include "gstgeometrictransform.h"
#include "geometricmath.h"
-#include <gst/controller/gstcontroller.h>
#include <string.h>
GST_DEBUG_CATEGORY_STATIC (geometric_transform_debug);
#define GST_CAT_DEFAULT geometric_transform_debug
static GstStaticPadTemplate gst_geometric_transform_src_template =
- GST_STATIC_PAD_TEMPLATE ("src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_ABGR "; "
- GST_VIDEO_CAPS_ARGB "; "
- GST_VIDEO_CAPS_BGR "; "
- GST_VIDEO_CAPS_BGRA "; "
- GST_VIDEO_CAPS_BGRx "; "
- GST_VIDEO_CAPS_RGB "; "
- GST_VIDEO_CAPS_RGBA "; "
- GST_VIDEO_CAPS_RGBx "; "
- GST_VIDEO_CAPS_YUV ("AYUV") "; "
- GST_VIDEO_CAPS_xBGR "; "
- GST_VIDEO_CAPS_xRGB "; "
- GST_VIDEO_CAPS_GRAY8 "; "
- GST_VIDEO_CAPS_GRAY16 ("BIG_ENDIAN") "; "
- GST_VIDEO_CAPS_GRAY16 ("LITTLE_ENDIAN")
- )
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ ARGB, BGR, BGRA, BGRx, RGB, "
+ "RGBA, RGBx, AYUV, xBGR, xRGB, GRAY8, GRAY16_BE, GRAY16_LE }"))
);
static GstStaticPadTemplate gst_geometric_transform_sink_template =
- GST_STATIC_PAD_TEMPLATE ("sink",
+GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_ABGR "; "
- GST_VIDEO_CAPS_ARGB "; "
- GST_VIDEO_CAPS_BGR "; "
- GST_VIDEO_CAPS_BGRA "; "
- GST_VIDEO_CAPS_BGRx "; "
- GST_VIDEO_CAPS_RGB "; "
- GST_VIDEO_CAPS_RGBA "; "
- GST_VIDEO_CAPS_RGBx "; "
- GST_VIDEO_CAPS_YUV ("AYUV") "; "
- GST_VIDEO_CAPS_xBGR "; "
- GST_VIDEO_CAPS_xRGB "; "
- GST_VIDEO_CAPS_GRAY8 "; "
- GST_VIDEO_CAPS_GRAY16 ("BIG_ENDIAN") "; "
- GST_VIDEO_CAPS_GRAY16 ("LITTLE_ENDIAN")
- )
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ ARGB, BGR, BGRA, BGRx, RGB, "
+ "RGBA, RGBx, AYUV, xBGR, xRGB, GRAY8, GRAY16_BE, GRAY16_LE }"))
);
static GstVideoFilterClass *parent_class = NULL;
@@ -155,47 +128,45 @@ end:
}
static gboolean
-gst_geometric_transform_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
- GstCaps * outcaps)
+gst_geometric_transform_set_info (GstVideoFilter * vfilter, GstCaps * incaps,
+ GstVideoInfo * in_info, GstCaps * outcaps, GstVideoInfo * out_info)
{
GstGeometricTransform *gt;
- gboolean ret;
+ gboolean ret = TRUE;
gint old_width;
gint old_height;
GstGeometricTransformClass *klass;
- gt = GST_GEOMETRIC_TRANSFORM_CAST (btrans);
+ gt = GST_GEOMETRIC_TRANSFORM_CAST (vfilter);
klass = GST_GEOMETRIC_TRANSFORM_GET_CLASS (gt);
old_width = gt->width;
old_height = gt->height;
- ret = gst_video_format_parse_caps (incaps, &gt->format, &gt->width,
- &gt->height);
- if (ret) {
- gt->row_stride = gst_video_format_get_row_stride (gt->format, 0, gt->width);
- gt->pixel_stride = gst_video_format_get_pixel_stride (gt->format, 0);
+ gt->width = in_info->width;
+ gt->height = in_info->height;
+ gt->row_stride = in_info->stride[0];
+ gt->pixel_stride = GST_VIDEO_INFO_COMP_PSTRIDE (in_info, 0);
- /* regenerate the map */
- GST_OBJECT_LOCK (gt);
- if (gt->map == NULL || old_width == 0 || old_height == 0
- || gt->width != old_width || gt->height != old_height) {
- if (klass->prepare_func)
- if (!klass->prepare_func (gt)) {
- GST_OBJECT_UNLOCK (gt);
- return FALSE;
- }
- if (gt->precalc_map)
- gst_geometric_transform_generate_map (gt);
- }
- GST_OBJECT_UNLOCK (gt);
+ /* regenerate the map */
+ GST_OBJECT_LOCK (gt);
+ if (gt->map == NULL || old_width == 0 || old_height == 0
+ || gt->width != old_width || gt->height != old_height) {
+ if (klass->prepare_func)
+ if (!klass->prepare_func (gt)) {
+ GST_OBJECT_UNLOCK (gt);
+ return FALSE;
+ }
+ if (gt->precalc_map)
+ gst_geometric_transform_generate_map (gt);
}
+ GST_OBJECT_UNLOCK (gt);
return ret;
}
static void
-gst_geometric_transform_do_map (GstGeometricTransform * gt, GstBuffer * inbuf,
- GstBuffer * outbuf, gint x, gint y, gdouble in_x, gdouble in_y)
+gst_geometric_transform_do_map (GstGeometricTransform * gt, guint8 * in_data,
+ guint8 * out_data, gint x, gint y, gdouble in_x, gdouble in_y)
{
gint in_offset;
gint out_offset;
@@ -230,8 +201,7 @@ gst_geometric_transform_do_map (GstGeometricTransform * gt, GstBuffer * inbuf,
trunc_y < gt->height) {
in_offset = trunc_y * gt->row_stride + trunc_x * gt->pixel_stride;
- memcpy (GST_BUFFER_DATA (outbuf) + out_offset,
- GST_BUFFER_DATA (inbuf) + in_offset, gt->pixel_stride);
+ memcpy (out_data + out_offset, in_data + in_offset, gt->pixel_stride);
}
}
}
@@ -254,27 +224,31 @@ gst_geometric_transform_before_transform (GstBaseTransform * trans,
}
static GstFlowReturn
-gst_geometric_transform_transform (GstBaseTransform * trans, GstBuffer * buf,
- GstBuffer * outbuf)
+gst_geometric_transform_transform_frame (GstVideoFilter * vfilter,
+ GstVideoFrame * in_frame, GstVideoFrame * out_frame)
{
GstGeometricTransform *gt;
GstGeometricTransformClass *klass;
gint x, y;
GstFlowReturn ret = GST_FLOW_OK;
gdouble *ptr;
+ guint8 *in_data;
+ guint8 *out_data;
- gt = GST_GEOMETRIC_TRANSFORM_CAST (trans);
+ gt = GST_GEOMETRIC_TRANSFORM_CAST (vfilter);
klass = GST_GEOMETRIC_TRANSFORM_GET_CLASS (gt);
- memset (GST_BUFFER_DATA (outbuf), 0, GST_BUFFER_SIZE (outbuf));
+ in_data = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0);
+ out_data = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0);
+ memset (out_data, 0, out_frame->map[0].size);
GST_OBJECT_LOCK (gt);
if (gt->precalc_map) {
if (gt->needs_remap) {
if (klass->prepare_func)
if (!klass->prepare_func (gt)) {
- GST_OBJECT_UNLOCK (gt);
- return FALSE;
+ ret = FALSE;
+ goto end;
}
gst_geometric_transform_generate_map (gt);
}
@@ -283,7 +257,8 @@ gst_geometric_transform_transform (GstBaseTransform * trans, GstBuffer * buf,
for (y = 0; y < gt->height; y++) {
for (x = 0; x < gt->width; x++) {
/* do the mapping */
- gst_geometric_transform_do_map (gt, buf, outbuf, x, y, ptr[0], ptr[1]);
+ gst_geometric_transform_do_map (gt, in_data, out_data, x, y, ptr[0],
+ ptr[1]);
ptr += 2;
}
}
@@ -293,7 +268,8 @@ gst_geometric_transform_transform (GstBaseTransform * trans, GstBuffer * buf,
gdouble in_x, in_y;
if (klass->map_func (gt, x, y, &in_x, &in_y)) {
- gst_geometric_transform_do_map (gt, buf, outbuf, x, y, in_x, in_y);
+ gst_geometric_transform_do_map (gt, in_data, out_data, x, y, in_x,
+ in_y);
} else {
GST_WARNING_OBJECT (gt, "Failed to do mapping for %d %d", x, y);
ret = GST_FLOW_ERROR;
@@ -378,9 +354,11 @@ gst_geometric_transform_class_init (gpointer klass, gpointer class_data)
{
GObjectClass *obj_class;
GstBaseTransformClass *trans_class;
+ GstVideoFilterClass *vfilter_class;
obj_class = (GObjectClass *) klass;
trans_class = (GstBaseTransformClass *) klass;
+ vfilter_class = (GstVideoFilterClass *) klass;
parent_class = g_type_class_peek_parent (klass);
@@ -390,12 +368,14 @@ gst_geometric_transform_class_init (gpointer klass, gpointer class_data)
GST_DEBUG_FUNCPTR (gst_geometric_transform_get_property);
trans_class->stop = GST_DEBUG_FUNCPTR (gst_geometric_transform_stop);
- trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_geometric_transform_set_caps);
- trans_class->transform =
- GST_DEBUG_FUNCPTR (gst_geometric_transform_transform);
trans_class->before_transform =
GST_DEBUG_FUNCPTR (gst_geometric_transform_before_transform);
+ vfilter_class->set_info =
+ GST_DEBUG_FUNCPTR (gst_geometric_transform_set_info);
+ vfilter_class->transform_frame =
+ GST_DEBUG_FUNCPTR (gst_geometric_transform_transform_frame);
+
g_object_class_install_property (obj_class, PROP_OFF_EDGE_PIXELS,
g_param_spec_enum ("off-edge-pixels", "Off edge pixels",
"What to do with off edge pixels",
diff --git a/gst/geometrictransform/gstkaleidoscope.c b/gst/geometrictransform/gstkaleidoscope.c
index 384037b3..71cdcefe 100644
--- a/gst/geometrictransform/gstkaleidoscope.c
+++ b/gst/geometrictransform/gstkaleidoscope.c
@@ -73,7 +73,8 @@ enum
#define DEFAULT_ANGLE2 0
#define DEFAULT_SIDES 3
-GST_BOILERPLATE (GstKaleidoscope, gst_kaleidoscope, GstCircleGeometricTransform,
+#define gst_kaleidoscope_parent_class parent_class
+G_DEFINE_TYPE (GstKaleidoscope, gst_kaleidoscope,
GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
static void
@@ -149,20 +150,6 @@ gst_kaleidoscope_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_kaleidoscope_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "kaleidoscope",
- "Transform/Effect/Video",
- "Applies 'kaleidoscope' geometric transform to the image",
- "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
-}
-
static gboolean
kaleidoscope_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -200,13 +187,21 @@ static void
gst_kaleidoscope_class_init (GstKaleidoscopeClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "kaleidoscope",
+ "Transform/Effect/Video",
+ "Applies 'kaleidoscope' geometric transform to the image",
+ "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_kaleidoscope_finalize);
gobject_class->set_property =
GST_DEBUG_FUNCPTR (gst_kaleidoscope_set_property);
@@ -233,7 +228,7 @@ gst_kaleidoscope_class_init (GstKaleidoscopeClass * klass)
}
static void
-gst_kaleidoscope_init (GstKaleidoscope * filter, GstKaleidoscopeClass * gclass)
+gst_kaleidoscope_init (GstKaleidoscope * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gstmarble.c b/gst/geometrictransform/gstmarble.c
index 2c2ab64a..4efbbfea 100644
--- a/gst/geometrictransform/gstmarble.c
+++ b/gst/geometrictransform/gstmarble.c
@@ -74,8 +74,8 @@ enum
#define DEFAULT_AMOUNT 1
#define DEFAULT_TURBULENCE 1
-GST_BOILERPLATE (GstMarble, gst_marble, GstGeometricTransform,
- GST_TYPE_GEOMETRIC_TRANSFORM);
+#define gst_marble_parent_class parent_class
+G_DEFINE_TYPE (GstMarble, gst_marble, GST_TYPE_GEOMETRIC_TRANSFORM);
static void
gst_marble_set_property (GObject * object, guint prop_id, const GValue * value,
@@ -165,20 +165,6 @@ gst_marble_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_marble_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "marble",
- "Transform/Effect/Video",
- "Applies a marbling effect to the image",
- "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
-}
-
static gboolean
marble_prepare (GstGeometricTransform * trans)
{
@@ -228,13 +214,21 @@ static void
gst_marble_class_init (GstMarbleClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "marble",
+ "Transform/Effect/Video",
+ "Applies a marbling effect to the image",
+ "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_marble_finalize);
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_marble_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_marble_get_property);
@@ -265,7 +259,7 @@ gst_marble_class_init (GstMarbleClass * klass)
}
static void
-gst_marble_init (GstMarble * filter, GstMarbleClass * gclass)
+gst_marble_init (GstMarble * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gstmirror.c b/gst/geometrictransform/gstmirror.c
index a06adf08..85df121d 100644
--- a/gst/geometrictransform/gstmirror.c
+++ b/gst/geometrictransform/gstmirror.c
@@ -61,8 +61,8 @@ enum
#define DEFAULT_PROP_MODE GST_MIRROR_MODE_LEFT
-GST_BOILERPLATE (GstMirror, gst_mirror, GstGeometricTransform,
- GST_TYPE_GEOMETRIC_TRANSFORM);
+#define gst_mirror_parent_class parent_class
+G_DEFINE_TYPE (GstMirror, gst_mirror, GST_TYPE_GEOMETRIC_TRANSFORM);
#define GST_TYPE_MIRROR_MODE (gst_mirror_mode_get_type())
static GType
@@ -123,18 +123,6 @@ gst_mirror_get_property (GObject * object, guint prop_id,
}
}
-static void
-gst_mirror_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "mirror",
- "Transform/Effect/Video",
- "Split the image into two halves and reflect one over each other",
- "Filippo Argiolas <filippo.argiolas@gmail.com>");
-}
-
static gboolean
mirror_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -187,11 +175,19 @@ static void
gst_mirror_class_init (GstMirrorClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
+ gst_element_class_set_details_simple (gstelement_class,
+ "mirror",
+ "Transform/Effect/Video",
+ "Split the image into two halves and reflect one over each other",
+ "Filippo Argiolas <filippo.argiolas@gmail.com>");
+
gobject_class->set_property = gst_mirror_set_property;
gobject_class->get_property = gst_mirror_get_property;
@@ -207,7 +203,7 @@ gst_mirror_class_init (GstMirrorClass * klass)
}
static void
-gst_mirror_init (GstMirror * filter, GstMirrorClass * gclass)
+gst_mirror_init (GstMirror * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gstpinch.c b/gst/geometrictransform/gstpinch.c
index 9a6ae9ca..537997d8 100644
--- a/gst/geometrictransform/gstpinch.c
+++ b/gst/geometrictransform/gstpinch.c
@@ -68,8 +68,8 @@ enum
#define DEFAULT_INTENSITY 0.5
-GST_BOILERPLATE (GstPinch, gst_pinch, GstCircleGeometricTransform,
- GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
+#define gst_pinch_parent_class parent_class
+G_DEFINE_TYPE (GstPinch, gst_pinch, GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
static void
gst_pinch_set_property (GObject * object, guint prop_id, const GValue * value,
@@ -123,20 +123,6 @@ gst_pinch_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_pinch_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "pinch",
- "Transform/Effect/Video",
- "Applies 'pinch' geometric transform to the image",
- "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
-}
-
static gboolean
pinch_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -182,13 +168,21 @@ static void
gst_pinch_class_init (GstPinchClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "pinch",
+ "Transform/Effect/Video",
+ "Applies 'pinch' geometric transform to the image",
+ "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_pinch_finalize);
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_pinch_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_pinch_get_property);
@@ -204,7 +198,7 @@ gst_pinch_class_init (GstPinchClass * klass)
}
static void
-gst_pinch_init (GstPinch * filter, GstPinchClass * gclass)
+gst_pinch_init (GstPinch * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gstrotate.c b/gst/geometrictransform/gstrotate.c
index 764feb56..cf4cf0ef 100644
--- a/gst/geometrictransform/gstrotate.c
+++ b/gst/geometrictransform/gstrotate.c
@@ -69,8 +69,8 @@ enum
#define DEFAULT_ANGLE 0
-GST_BOILERPLATE (GstRotate, gst_rotate, GstGeometricTransform,
- GST_TYPE_GEOMETRIC_TRANSFORM);
+#define gst_rotate_parent_class parent_class
+G_DEFINE_TYPE (GstRotate, gst_rotate, GST_TYPE_GEOMETRIC_TRANSFORM);
static void
gst_rotate_set_property (GObject * object, guint prop_id, const GValue * value,
@@ -124,20 +124,6 @@ gst_rotate_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_rotate_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "rotate",
- "Transform/Effect/Video",
- "Rotates the picture by an arbitrary angle",
- "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
-}
-
static gboolean
rotate_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -190,13 +176,21 @@ static void
gst_rotate_class_init (GstRotateClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "rotate",
+ "Transform/Effect/Video",
+ "Rotates the picture by an arbitrary angle",
+ "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_rotate_finalize);
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_rotate_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_rotate_get_property);
@@ -211,7 +205,7 @@ gst_rotate_class_init (GstRotateClass * klass)
}
static void
-gst_rotate_init (GstRotate * filter, GstRotateClass * gclass)
+gst_rotate_init (GstRotate * filter)
{
filter->angle = DEFAULT_ANGLE;
}
diff --git a/gst/geometrictransform/gstsphere.c b/gst/geometrictransform/gstsphere.c
index b398e6d1..7d5d5e67 100644
--- a/gst/geometrictransform/gstsphere.c
+++ b/gst/geometrictransform/gstsphere.c
@@ -68,8 +68,8 @@ enum
#define DEFAULT_REFRACTION 1.5
-GST_BOILERPLATE (GstSphere, gst_sphere, GstCircleGeometricTransform,
- GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
+#define gst_sphere_parent_class parent_class
+G_DEFINE_TYPE (GstSphere, gst_sphere, GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
static void
gst_sphere_set_property (GObject * object, guint prop_id, const GValue * value,
@@ -123,20 +123,6 @@ gst_sphere_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_sphere_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "sphere",
- "Transform/Effect/Video",
- "Applies 'sphere' geometric transform to the image",
- "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
-}
-
/* TODO we could have horizontal and vertical 'radius' */
static gboolean
sphere_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
@@ -194,13 +180,21 @@ static void
gst_sphere_class_init (GstSphereClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "sphere",
+ "Transform/Effect/Video",
+ "Applies 'sphere' geometric transform to the image",
+ "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_sphere_finalize);
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_sphere_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_sphere_get_property);
@@ -215,7 +209,7 @@ gst_sphere_class_init (GstSphereClass * klass)
}
static void
-gst_sphere_init (GstSphere * filter, GstSphereClass * gclass)
+gst_sphere_init (GstSphere * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gstsquare.c b/gst/geometrictransform/gstsquare.c
index a7b2fc59..86ecf58f 100644
--- a/gst/geometrictransform/gstsquare.c
+++ b/gst/geometrictransform/gstsquare.c
@@ -65,8 +65,8 @@ enum
#define DEFAULT_HEIGHT 0.5
#define DEFAULT_ZOOM 2.0
-GST_BOILERPLATE (GstSquare, gst_square, GstGeometricTransform,
- GST_TYPE_GEOMETRIC_TRANSFORM);
+#define gst_square_parent_class parent_class
+G_DEFINE_TYPE (GstSquare, gst_square, GST_TYPE_GEOMETRIC_TRANSFORM);
/* GObject vmethod implementations */
@@ -137,18 +137,6 @@ gst_square_get_property (GObject * object, guint prop_id,
}
}
-static void
-gst_square_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "square",
- "Transform/Effect/Video",
- "Distort center part of the image into a square",
- "Filippo Argiolas <filippo.argiolas@gmail.com>");
-}
-
static gboolean
square_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -190,12 +178,21 @@ static void
gst_square_class_init (GstSquareClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+
+ gst_element_class_set_details_simple (gstelement_class,
+ "square",
+ "Transform/Effect/Video",
+ "Distort center part of the image into a square",
+ "Filippo Argiolas <filippo.argiolas@gmail.com>");
+
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_square_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_square_get_property);
@@ -219,7 +216,7 @@ gst_square_class_init (GstSquareClass * klass)
}
static void
-gst_square_init (GstSquare * filter, GstSquareClass * gclass)
+gst_square_init (GstSquare * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gststretch.c b/gst/geometrictransform/gststretch.c
index cc92c783..e9c1f9d3 100644
--- a/gst/geometrictransform/gststretch.c
+++ b/gst/geometrictransform/gststretch.c
@@ -63,8 +63,8 @@ enum
#define DEFAULT_INTENSITY 0.5
#define MAX_SHRINK_AMOUNT 3.0
-GST_BOILERPLATE (GstStretch, gst_stretch, GstCircleGeometricTransform,
- GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
+#define gst_stretch_parent_class parent_class
+G_DEFINE_TYPE (GstStretch, gst_stretch, GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
static void
gst_stretch_set_property (GObject * object, guint prop_id, const GValue * value,
@@ -118,20 +118,6 @@ gst_stretch_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_stretch_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "stretch",
- "Transform/Effect/Video",
- "Stretch the image in a circle around the center point",
- "Filippo Argiolas <filippo.argiolas@gmail.com>");
-}
-
static gboolean
stretch_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -183,13 +169,21 @@ static void
gst_stretch_class_init (GstStretchClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "stretch",
+ "Transform/Effect/Video",
+ "Stretch the image in a circle around the center point",
+ "Filippo Argiolas <filippo.argiolas@gmail.com>");
+
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_stretch_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_stretch_get_property);
@@ -206,7 +200,7 @@ gst_stretch_class_init (GstStretchClass * klass)
}
static void
-gst_stretch_init (GstStretch * filter, GstStretchClass * gclass)
+gst_stretch_init (GstStretch * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gsttunnel.c b/gst/geometrictransform/gsttunnel.c
index 3bda98a6..27ea1b81 100644
--- a/gst/geometrictransform/gsttunnel.c
+++ b/gst/geometrictransform/gsttunnel.c
@@ -54,8 +54,8 @@
GST_DEBUG_CATEGORY_STATIC (gst_tunnel_debug);
#define GST_CAT_DEFAULT gst_tunnel_debug
-GST_BOILERPLATE (GstTunnel, gst_tunnel, GstCircleGeometricTransform,
- GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
+#define gst_tunnel_parent_class parent_class
+G_DEFINE_TYPE (GstTunnel, gst_tunnel, GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
/* Clean up */
static void
@@ -64,19 +64,6 @@ gst_tunnel_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_tunnel_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "tunnel",
- "Transform/Effect/Video",
- "Light tunnel effect", "Filippo Argiolas <filippo.argiolas@gmail.com>");
-}
-
static gboolean
tunnel_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -120,20 +107,27 @@ static void
gst_tunnel_class_init (GstTunnelClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "tunnel",
+ "Transform/Effect/Video",
+ "Light tunnel effect", "Filippo Argiolas <filippo.argiolas@gmail.com>");
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_tunnel_finalize);
gstgt_class->map_func = tunnel_map;
}
static void
-gst_tunnel_init (GstTunnel * filter, GstTunnelClass * gclass)
+gst_tunnel_init (GstTunnel * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gsttwirl.c b/gst/geometrictransform/gsttwirl.c
index 8d31d8ee..f41da660 100644
--- a/gst/geometrictransform/gsttwirl.c
+++ b/gst/geometrictransform/gsttwirl.c
@@ -68,8 +68,8 @@ enum
#define DEFAULT_ANGLE (G_PI)
-GST_BOILERPLATE (GstTwirl, gst_twirl, GstCircleGeometricTransform,
- GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
+#define gst_twirl_parent_class parent_class
+G_DEFINE_TYPE (GstTwirl, gst_twirl, GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
static void
gst_twirl_set_property (GObject * object, guint prop_id, const GValue * value,
@@ -123,20 +123,6 @@ gst_twirl_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_twirl_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "twirl",
- "Transform/Effect/Video",
- "Twists the image from the center out",
- "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
-}
-
static gboolean
twirl_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -172,13 +158,21 @@ static void
gst_twirl_class_init (GstTwirlClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "twirl",
+ "Transform/Effect/Video",
+ "Twists the image from the center out",
+ "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_twirl_finalize);
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_twirl_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_twirl_get_property);
@@ -194,7 +188,7 @@ gst_twirl_class_init (GstTwirlClass * klass)
}
static void
-gst_twirl_init (GstTwirl * filter, GstTwirlClass * gclass)
+gst_twirl_init (GstTwirl * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/geometrictransform/gstwaterripple.c b/gst/geometrictransform/gstwaterripple.c
index 7e911df7..a8d694c1 100644
--- a/gst/geometrictransform/gstwaterripple.c
+++ b/gst/geometrictransform/gstwaterripple.c
@@ -72,7 +72,8 @@ enum
#define DEFAULT_PHASE 0.0
#define DEFAULT_WAVELENGTH 16.0
-GST_BOILERPLATE (GstWaterRipple, gst_water_ripple, GstCircleGeometricTransform,
+#define gst_water_ripple_parent_class parent_class
+G_DEFINE_TYPE (GstWaterRipple, gst_water_ripple,
GST_TYPE_CIRCLE_GEOMETRIC_TRANSFORM);
static void
@@ -147,20 +148,6 @@ gst_water_ripple_finalize (GObject * obj)
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
-/* GObject vmethod implementations */
-
-static void
-gst_water_ripple_base_init (gpointer gclass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_set_details_simple (element_class,
- "waterripple",
- "Transform/Effect/Video",
- "Creates a water ripple effect on the image",
- "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
-}
-
static gboolean
water_ripple_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x,
gdouble * in_y)
@@ -201,13 +188,21 @@ static void
gst_water_ripple_class_init (GstWaterRippleClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstGeometricTransformClass *gstgt_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstgt_class = (GstGeometricTransformClass *) klass;
parent_class = g_type_class_peek_parent (klass);
+ gst_element_class_set_details_simple (gstelement_class,
+ "waterripple",
+ "Transform/Effect/Video",
+ "Creates a water ripple effect on the image",
+ "Thiago Santos<thiago.sousa.santos@collabora.co.uk>");
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_water_ripple_finalize);
gobject_class->set_property =
GST_DEBUG_FUNCPTR (gst_water_ripple_set_property);
@@ -231,7 +226,7 @@ gst_water_ripple_class_init (GstWaterRippleClass * klass)
}
static void
-gst_water_ripple_init (GstWaterRipple * filter, GstWaterRippleClass * gclass)
+gst_water_ripple_init (GstWaterRipple * filter)
{
GstGeometricTransform *gt = GST_GEOMETRIC_TRANSFORM (filter);
diff --git a/gst/hdvparse/Makefile.in b/gst/hdvparse/Makefile.in
index c67a20d1..e87886e3 100644
--- a/gst/hdvparse/Makefile.in
+++ b/gst/hdvparse/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -638,7 +640,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/hls/Makefile.in b/gst/hls/Makefile.in
index 90def3cb..60fc76ae 100644
--- a/gst/hls/Makefile.in
+++ b/gst/hls/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -652,7 +654,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/hls/gstfragment.c b/gst/hls/gstfragment.c
index 00a3b4ce..e21c1401 100644
--- a/gst/hls/gstfragment.c
+++ b/gst/hls/gstfragment.c
@@ -20,6 +20,7 @@
*/
#include <glib.h>
+#include <gst/base/gsttypefindhelper.h>
#include "gstfragmented.h"
#include "gstfragment.h"
@@ -34,15 +35,16 @@ enum
PROP_NAME,
PROP_DURATION,
PROP_DISCONTINOUS,
- PROP_BUFFER_LIST,
+ PROP_BUFFER,
+ PROP_CAPS,
PROP_LAST
};
struct _GstFragmentPrivate
{
- GstBufferList *buffer_list;
- GstBufferListIterator *buffer_iterator;
- gboolean headers_set;
+ GstBuffer *buffer;
+ GstCaps *caps;
+ GMutex lock;
};
G_DEFINE_TYPE (GstFragment, gst_fragment, G_TYPE_OBJECT);
@@ -51,6 +53,24 @@ static void gst_fragment_dispose (GObject * object);
static void gst_fragment_finalize (GObject * object);
static void
+gst_fragment_set_property (GObject * object,
+ guint property_id, const GValue * value, GParamSpec * pspec)
+{
+ GstFragment *fragment = GST_FRAGMENT (object);
+
+ switch (property_id) {
+ case PROP_CAPS:
+ gst_fragment_set_caps (fragment, g_value_get_boxed (value));
+ break;
+
+ default:
+ /* We don't have any other property... */
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
gst_fragment_get_property (GObject * object,
guint property_id, GValue * value, GParamSpec * pspec)
{
@@ -73,8 +93,12 @@ gst_fragment_get_property (GObject * object,
g_value_set_boolean (value, fragment->discontinuous);
break;
- case PROP_BUFFER_LIST:
- g_value_set_object (value, gst_fragment_get_buffer_list (fragment));
+ case PROP_BUFFER:
+ g_value_set_boxed (value, gst_fragment_get_buffer (fragment));
+ break;
+
+ case PROP_CAPS:
+ g_value_set_boxed (value, gst_fragment_get_caps (fragment));
break;
default:
@@ -84,6 +108,8 @@ gst_fragment_get_property (GObject * object,
}
}
+
+
static void
gst_fragment_class_init (GstFragmentClass * klass)
{
@@ -91,6 +117,7 @@ gst_fragment_class_init (GstFragmentClass * klass)
g_type_class_add_private (klass, sizeof (GstFragmentPrivate));
+ gobject_class->set_property = gst_fragment_set_property;
gobject_class->get_property = gst_fragment_get_property;
gobject_class->dispose = gst_fragment_dispose;
gobject_class->finalize = gst_fragment_finalize;
@@ -112,10 +139,15 @@ gst_fragment_class_init (GstFragmentClass * klass)
g_param_spec_uint64 ("duration", "Fragment duration",
"Duration of the fragment", 0, G_MAXUINT64, 0, G_PARAM_READABLE));
- g_object_class_install_property (gobject_class, PROP_BUFFER_LIST,
- g_param_spec_object ("buffer-list", "Buffer List",
- "A list with the fragment's buffers", GST_TYPE_FRAGMENT,
- G_PARAM_READABLE));
+ g_object_class_install_property (gobject_class, PROP_BUFFER,
+ g_param_spec_boxed ("buffer", "Buffer",
+ "The fragment's buffer", GST_TYPE_BUFFER,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class, PROP_CAPS,
+ g_param_spec_boxed ("caps", "Fragment caps",
+ "The caps of the fragment's buffer. (NULL = detect)", GST_TYPE_CAPS,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
static void
@@ -125,10 +157,8 @@ gst_fragment_init (GstFragment * fragment)
fragment->priv = priv = GST_FRAGMENT_GET_PRIVATE (fragment);
- priv->buffer_list = gst_buffer_list_new ();
- priv->buffer_iterator = gst_buffer_list_iterate (priv->buffer_list);
- gst_buffer_list_iterator_add_group (priv->buffer_iterator);
- priv->headers_set = FALSE;
+ g_mutex_init (&fragment->priv->lock);
+ priv->buffer = NULL;
fragment->download_start_time = g_get_real_time ();
fragment->start_time = 0;
fragment->stop_time = 0;
@@ -150,6 +180,7 @@ gst_fragment_finalize (GObject * gobject)
GstFragment *fragment = GST_FRAGMENT (gobject);
g_free (fragment->name);
+ g_mutex_clear (&fragment->priv->lock);
G_OBJECT_CLASS (gst_fragment_parent_class)->finalize (gobject);
}
@@ -159,45 +190,57 @@ gst_fragment_dispose (GObject * object)
{
GstFragmentPrivate *priv = GST_FRAGMENT (object)->priv;
- if (priv->buffer_list != NULL) {
- gst_buffer_list_iterator_free (priv->buffer_iterator);
- gst_buffer_list_unref (priv->buffer_list);
- priv->buffer_list = NULL;
+ if (priv->buffer != NULL) {
+ gst_buffer_unref (priv->buffer);
+ priv->buffer = NULL;
+ }
+
+ if (priv->caps != NULL) {
+ gst_caps_unref (priv->caps);
+ priv->caps = NULL;
}
G_OBJECT_CLASS (gst_fragment_parent_class)->dispose (object);
}
-GstBufferList *
-gst_fragment_get_buffer_list (GstFragment * fragment)
+GstBuffer *
+gst_fragment_get_buffer (GstFragment * fragment)
{
g_return_val_if_fail (fragment != NULL, NULL);
if (!fragment->completed)
return NULL;
- gst_buffer_list_ref (fragment->priv->buffer_list);
- return fragment->priv->buffer_list;
+ gst_buffer_ref (fragment->priv->buffer);
+ return fragment->priv->buffer;
}
-gboolean
-gst_fragment_set_headers (GstFragment * fragment, GstBuffer ** buffer,
- guint count)
+void
+gst_fragment_set_caps (GstFragment * fragment, GstCaps * caps)
{
- guint i;
+ g_return_if_fail (fragment != NULL);
- g_return_val_if_fail (fragment != NULL, FALSE);
- g_return_val_if_fail (buffer != NULL, FALSE);
+ g_mutex_lock (&fragment->priv->lock);
+ gst_caps_replace (&fragment->priv->caps, caps);
+ g_mutex_unlock (&fragment->priv->lock);
+}
- if (fragment->priv->headers_set)
- return FALSE;
+GstCaps *
+gst_fragment_get_caps (GstFragment * fragment)
+{
+ g_return_val_if_fail (fragment != NULL, NULL);
- for (i = 0; i < count; i++) {
- /* We steal the buffers you pass in */
- gst_buffer_list_iterator_add (fragment->priv->buffer_iterator, buffer[i]);
- gst_buffer_list_iterator_add_group (fragment->priv->buffer_iterator);
- }
- return TRUE;
+ if (!fragment->completed)
+ return NULL;
+
+ g_mutex_lock (&fragment->priv->lock);
+ if (fragment->priv->caps == NULL)
+ fragment->priv->caps =
+ gst_type_find_helper_for_buffer (NULL, fragment->priv->buffer, NULL);
+ gst_caps_ref (fragment->priv->caps);
+ g_mutex_unlock (&fragment->priv->lock);
+
+ return fragment->priv->caps;
}
gboolean
@@ -211,12 +254,11 @@ gst_fragment_add_buffer (GstFragment * fragment, GstBuffer * buffer)
return FALSE;
}
- /* if this is the first buffer forbid setting the headers anymore */
- if (G_UNLIKELY (fragment->priv->headers_set == FALSE))
- fragment->priv->headers_set = TRUE;
-
GST_DEBUG ("Adding new buffer to the fragment");
/* We steal the buffers you pass in */
- gst_buffer_list_iterator_add (fragment->priv->buffer_iterator, buffer);
+ if (fragment->priv->buffer == NULL)
+ fragment->priv->buffer = buffer;
+ else
+ fragment->priv->buffer = gst_buffer_append (fragment->priv->buffer, buffer);
return TRUE;
}
diff --git a/gst/hls/gstfragment.h b/gst/hls/gstfragment.h
index 9ea01860..0cc905f3 100644
--- a/gst/hls/gstfragment.h
+++ b/gst/hls/gstfragment.h
@@ -60,8 +60,9 @@ struct _GstFragmentClass
GType gst_fragment_get_type (void);
-GstBufferList * gst_fragment_get_buffer_list (GstFragment *fragment);
-gboolean gst_fragment_set_headers (GstFragment *fragment, GstBuffer **buffer, guint count);
+GstBuffer * gst_fragment_get_buffer (GstFragment *fragment);
+void gst_fragment_set_caps (GstFragment * fragment, GstCaps * caps);
+GstCaps * gst_fragment_get_caps (GstFragment * fragment);
gboolean gst_fragment_add_buffer (GstFragment *fragment, GstBuffer *buffer);
GstFragment * gst_fragment_new (void);
diff --git a/gst/hls/gsthlsdemux.c b/gst/hls/gsthlsdemux.c
index ca3d64e0..8de5b417 100644
--- a/gst/hls/gsthlsdemux.c
+++ b/gst/hls/gsthlsdemux.c
@@ -46,7 +46,6 @@
#define GLIB_DISABLE_DEPRECATION_WARNINGS
#include <string.h>
-#include <gst/base/gsttypefindhelper.h>
#include <gst/glib-compat-private.h>
#include "gsthlsdemux.h"
@@ -68,7 +67,8 @@ enum
PROP_0,
PROP_FRAGMENTS_CACHE,
- PROP_BITRATE_SWITCH_TOLERANCE,
+ PROP_BITRATE_LIMIT,
+ PROP_CONNECTION_SPEED,
PROP_LAST
};
@@ -76,7 +76,8 @@ static const float update_interval_factor[] = { 1, 0.5, 1.5, 3 };
#define DEFAULT_FRAGMENTS_CACHE 3
#define DEFAULT_FAILED_COUNT 3
-#define DEFAULT_BITRATE_SWITCH_TOLERANCE 0.4
+#define DEFAULT_BITRATE_LIMIT 0.8
+#define DEFAULT_CONNECTION_SPEED 0
/* GObject */
static void gst_hls_demux_set_property (GObject * object, guint prop_id,
@@ -90,10 +91,14 @@ static GstStateChangeReturn
gst_hls_demux_change_state (GstElement * element, GstStateChange transition);
/* GstHLSDemux */
-static GstFlowReturn gst_hls_demux_chain (GstPad * pad, GstBuffer * buf);
-static gboolean gst_hls_demux_sink_event (GstPad * pad, GstEvent * event);
-static gboolean gst_hls_demux_src_event (GstPad * pad, GstEvent * event);
-static gboolean gst_hls_demux_src_query (GstPad * pad, GstQuery * query);
+static GstFlowReturn gst_hls_demux_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
+static gboolean gst_hls_demux_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static gboolean gst_hls_demux_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static gboolean gst_hls_demux_src_query (GstPad * pad, GstObject * parent,
+ GstQuery * query);
static void gst_hls_demux_stream_loop (GstHLSDemux * demux);
static void gst_hls_demux_updates_loop (GstHLSDemux * demux);
static void gst_hls_demux_stop (GstHLSDemux * demux);
@@ -102,40 +107,15 @@ static gboolean gst_hls_demux_schedule (GstHLSDemux * demux);
static gboolean gst_hls_demux_switch_playlist (GstHLSDemux * demux);
static gboolean gst_hls_demux_get_next_fragment (GstHLSDemux * demux,
gboolean caching);
-static gboolean gst_hls_demux_update_playlist (GstHLSDemux * demux);
+static gboolean gst_hls_demux_update_playlist (GstHLSDemux * demux,
+ gboolean update);
static void gst_hls_demux_reset (GstHLSDemux * demux, gboolean dispose);
static gboolean gst_hls_demux_set_location (GstHLSDemux * demux,
const gchar * uri);
static gchar *gst_hls_src_buf_to_utf8_playlist (GstBuffer * buf);
-static void
-_do_init (GType type)
-{
- GST_DEBUG_CATEGORY_INIT (gst_hls_demux_debug, "hlsdemux", 0,
- "hlsdemux element");
-}
-
-GST_BOILERPLATE_FULL (GstHLSDemux, gst_hls_demux, GstElement,
- GST_TYPE_ELEMENT, _do_init);
-
-static void
-gst_hls_demux_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sinktemplate));
-
- gst_element_class_set_details_simple (element_class,
- "HLS Demuxer",
- "Demuxer/URIList",
- "HTTP Live Streaming demuxer",
- "Marc-Andre Lureau <marcandre.lureau@gmail.com>\n"
- "Andoni Morales Alastruey <ylatuya@gmail.com>");
-}
+#define gst_hls_demux_parent_class parent_class
+G_DEFINE_TYPE (GstHLSDemux, gst_hls_demux, GST_TYPE_ELEMENT);
static void
gst_hls_demux_dispose (GObject * obj)
@@ -149,7 +129,7 @@ gst_hls_demux_dispose (GObject * obj)
gst_task_join (demux->stream_task);
}
gst_object_unref (demux->stream_task);
- g_static_rec_mutex_free (&demux->stream_lock);
+ g_rec_mutex_clear (&demux->stream_lock);
demux->stream_task = NULL;
}
@@ -160,8 +140,8 @@ gst_hls_demux_dispose (GObject * obj)
gst_task_join (demux->updates_task);
}
gst_object_unref (demux->updates_task);
- g_mutex_free (demux->updates_timed_lock);
- g_static_rec_mutex_free (&demux->updates_lock);
+ g_mutex_clear (&demux->updates_timed_lock);
+ g_rec_mutex_clear (&demux->updates_lock);
demux->updates_task = NULL;
}
@@ -181,10 +161,10 @@ static void
gst_hls_demux_class_init (GstHLSDemuxClass * klass)
{
GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
+ GstElementClass *element_class;
gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
+ element_class = (GstElementClass *) klass;
gobject_class->set_property = gst_hls_demux_set_property;
gobject_class->get_property = gst_hls_demux_get_property;
@@ -196,20 +176,40 @@ gst_hls_demux_class_init (GstHLSDemuxClass * klass)
2, G_MAXUINT, DEFAULT_FRAGMENTS_CACHE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_BITRATE_SWITCH_TOLERANCE,
- g_param_spec_float ("bitrate-switch-tolerance",
- "Bitrate switch tolerance",
- "Tolerance with respect of the fragment duration to switch to "
- "a different bitrate if the client is too slow/fast.",
- 0, 1, DEFAULT_BITRATE_SWITCH_TOLERANCE,
+ g_object_class_install_property (gobject_class, PROP_BITRATE_LIMIT,
+ g_param_spec_float ("bitrate-limit",
+ "Bitrate limit in %",
+ "Limit of the available bitrate to use when switching to alternates.",
+ 0, 1, DEFAULT_BITRATE_LIMIT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gstelement_class->change_state =
- GST_DEBUG_FUNCPTR (gst_hls_demux_change_state);
+ g_object_class_install_property (gobject_class, PROP_CONNECTION_SPEED,
+ g_param_spec_uint ("connection-speed", "Connection Speed",
+ "Network connection speed in kbps (0 = unknown)",
+ 0, G_MAXUINT / 1000, DEFAULT_CONNECTION_SPEED,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ element_class->change_state = GST_DEBUG_FUNCPTR (gst_hls_demux_change_state);
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&srctemplate));
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&sinktemplate));
+
+ gst_element_class_set_details_simple (element_class,
+ "HLS Demuxer",
+ "Demuxer/URIList",
+ "HTTP Live Streaming demuxer",
+ "Marc-Andre Lureau <marcandre.lureau@gmail.com>\n"
+ "Andoni Morales Alastruey <ylatuya@gmail.com>");
+
+ GST_DEBUG_CATEGORY_INIT (gst_hls_demux_debug, "hlsdemux", 0,
+ "hlsdemux element");
}
static void
-gst_hls_demux_init (GstHLSDemux * demux, GstHLSDemuxClass * klass)
+gst_hls_demux_init (GstHLSDemux * demux)
{
/* sink pad */
demux->sinkpad = gst_pad_new_from_static_template (&sinktemplate, "sink");
@@ -226,21 +226,22 @@ gst_hls_demux_init (GstHLSDemux * demux, GstHLSDemuxClass * klass)
/* Properties */
demux->fragments_cache = DEFAULT_FRAGMENTS_CACHE;
- demux->bitrate_switch_tol = DEFAULT_BITRATE_SWITCH_TOLERANCE;
+ demux->bitrate_limit = DEFAULT_BITRATE_LIMIT;
+ demux->connection_speed = DEFAULT_CONNECTION_SPEED;
demux->queue = g_queue_new ();
/* Updates task */
- g_static_rec_mutex_init (&demux->updates_lock);
+ g_rec_mutex_init (&demux->updates_lock);
demux->updates_task =
- gst_task_create ((GstTaskFunction) gst_hls_demux_updates_loop, demux);
+ gst_task_new ((GstTaskFunction) gst_hls_demux_updates_loop, demux);
gst_task_set_lock (demux->updates_task, &demux->updates_lock);
- demux->updates_timed_lock = g_mutex_new ();
+ g_mutex_init (&demux->updates_timed_lock);
/* Streaming task */
- g_static_rec_mutex_init (&demux->stream_lock);
+ g_rec_mutex_init (&demux->stream_lock);
demux->stream_task =
- gst_task_create ((GstTaskFunction) gst_hls_demux_stream_loop, demux);
+ gst_task_new ((GstTaskFunction) gst_hls_demux_stream_loop, demux);
gst_task_set_lock (demux->stream_task, &demux->stream_lock);
}
@@ -254,8 +255,11 @@ gst_hls_demux_set_property (GObject * object, guint prop_id,
case PROP_FRAGMENTS_CACHE:
demux->fragments_cache = g_value_get_uint (value);
break;
- case PROP_BITRATE_SWITCH_TOLERANCE:
- demux->bitrate_switch_tol = g_value_get_float (value);
+ case PROP_BITRATE_LIMIT:
+ demux->bitrate_limit = g_value_get_float (value);
+ break;
+ case PROP_CONNECTION_SPEED:
+ demux->connection_speed = g_value_get_uint (value) * 1000;
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -273,8 +277,11 @@ gst_hls_demux_get_property (GObject * object, guint prop_id, GValue * value,
case PROP_FRAGMENTS_CACHE:
g_value_set_uint (value, demux->fragments_cache);
break;
- case PROP_BITRATE_SWITCH_TOLERANCE:
- g_value_set_float (value, demux->bitrate_switch_tol);
+ case PROP_BITRATE_LIMIT:
+ g_value_set_float (value, demux->bitrate_limit);
+ break;
+ case PROP_CONNECTION_SPEED:
+ g_value_set_uint (value, demux->connection_speed / 1000);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -323,11 +330,11 @@ gst_hls_demux_change_state (GstElement * element, GstStateChange transition)
}
static gboolean
-gst_hls_demux_src_event (GstPad * pad, GstEvent * event)
+gst_hls_demux_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstHLSDemux *demux;
- demux = GST_HLS_DEMUX (gst_pad_get_element_private (pad));
+ demux = GST_HLS_DEMUX (parent);
switch (event->type) {
case GST_EVENT_SEEK:
@@ -338,7 +345,7 @@ gst_hls_demux_src_event (GstPad * pad, GstEvent * event)
GstSeekType start_type, stop_type;
gint64 start, stop;
GList *walk;
- GstClockTime current_pos, target_pos;
+ GstClockTime position, current_pos, target_pos;
gint current_sequence;
GstM3U8MediaFile *file;
@@ -393,32 +400,32 @@ gst_hls_demux_src_event (GstPad * pad, GstEvent * event)
gst_task_pause (demux->stream_task);
/* wait for streaming to finish */
- g_static_rec_mutex_lock (&demux->stream_lock);
+ g_rec_mutex_lock (&demux->stream_lock);
demux->need_cache = TRUE;
while (!g_queue_is_empty (demux->queue)) {
- GstBufferList *buf_list = g_queue_pop_head (demux->queue);
- gst_buffer_list_unref (buf_list);
+ GstFragment *fragment = g_queue_pop_head (demux->queue);
+ g_object_unref (fragment);
}
g_queue_clear (demux->queue);
GST_M3U8_CLIENT_LOCK (demux->client);
GST_DEBUG_OBJECT (demux, "seeking to sequence %d", current_sequence);
demux->client->sequence = current_sequence;
- gst_m3u8_client_get_current_position (demux->client, &demux->position);
- demux->position_shift = start - demux->position;
+ gst_m3u8_client_get_current_position (demux->client, &position);
+ demux->position_shift = start - position;
demux->need_segment = TRUE;
GST_M3U8_CLIENT_UNLOCK (demux->client);
if (flags & GST_SEEK_FLAG_FLUSH) {
GST_DEBUG_OBJECT (demux, "sending flush stop");
- gst_pad_push_event (demux->srcpad, gst_event_new_flush_stop ());
+ gst_pad_push_event (demux->srcpad, gst_event_new_flush_stop (TRUE));
}
demux->cancelled = FALSE;
gst_task_start (demux->stream_task);
- g_static_rec_mutex_unlock (&demux->stream_lock);
+ g_rec_mutex_unlock (&demux->stream_lock);
return TRUE;
}
@@ -426,21 +433,22 @@ gst_hls_demux_src_event (GstPad * pad, GstEvent * event)
break;
}
- return gst_pad_event_default (pad, event);
+ return gst_pad_event_default (pad, parent, event);
}
static gboolean
-gst_hls_demux_sink_event (GstPad * pad, GstEvent * event)
+gst_hls_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
- GstHLSDemux *demux = GST_HLS_DEMUX (gst_pad_get_parent (pad));
+ GstHLSDemux *demux;
GstQuery *query;
gboolean ret;
gchar *uri;
+ demux = GST_HLS_DEMUX (parent);
switch (event->type) {
case GST_EVENT_EOS:{
- gchar *playlist;
+ gchar *playlist = NULL;
if (demux->playlist == NULL) {
GST_WARNING_OBJECT (demux, "Received EOS without a playlist.");
@@ -483,7 +491,7 @@ gst_hls_demux_sink_event (GstPad * pad, GstEvent * event)
gst_event_unref (event);
return TRUE;
}
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_SEGMENT:
/* Swallow newsegments, we'll push our own */
gst_event_unref (event);
return TRUE;
@@ -491,11 +499,11 @@ gst_hls_demux_sink_event (GstPad * pad, GstEvent * event)
break;
}
- return gst_pad_event_default (pad, event);
+ return gst_pad_event_default (pad, parent, event);
}
static gboolean
-gst_hls_demux_src_query (GstPad * pad, GstQuery * query)
+gst_hls_demux_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
{
GstHLSDemux *hlsdemux;
gboolean ret = FALSE;
@@ -503,7 +511,7 @@ gst_hls_demux_src_query (GstPad * pad, GstQuery * query)
if (query == NULL)
return FALSE;
- hlsdemux = GST_HLS_DEMUX (gst_pad_get_element_private (pad));
+ hlsdemux = GST_HLS_DEMUX (parent);
switch (query->type) {
case GST_QUERY_DURATION:{
@@ -563,17 +571,15 @@ gst_hls_demux_src_query (GstPad * pad, GstQuery * query)
}
static GstFlowReturn
-gst_hls_demux_chain (GstPad * pad, GstBuffer * buf)
+gst_hls_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
- GstHLSDemux *demux = GST_HLS_DEMUX (gst_pad_get_parent (pad));
+ GstHLSDemux *demux = GST_HLS_DEMUX (parent);
if (demux->playlist == NULL)
demux->playlist = buf;
else
demux->playlist = gst_buffer_append (demux->playlist, buf);
- gst_object_unref (demux);
-
return GST_FLOW_OK;
}
@@ -600,18 +606,6 @@ switch_pads (GstHLSDemux * demux, GstCaps * newcaps)
GST_DEBUG ("Switching pads (oldpad:%p) with caps: %" GST_PTR_FORMAT, oldpad,
newcaps);
- /* FIXME: This is a workaround for a bug in playsink.
- * If we're switching from an audio-only or video-only fragment
- * to an audio-video segment, the new sink doesn't know about
- * the current running time and audio/video will go out of sync.
- *
- * This should be fixed in playsink by distributing the
- * current running time to newly created sinks and is
- * fixed in 0.11 with the new segments.
- */
- if (demux->srcpad)
- gst_pad_push_event (demux->srcpad, gst_event_new_flush_stop ());
-
/* First create and activate new pad */
demux->srcpad = gst_pad_new_from_static_template (&srctemplate, NULL);
gst_pad_set_event_function (demux->srcpad,
@@ -620,7 +614,9 @@ switch_pads (GstHLSDemux * demux, GstCaps * newcaps)
GST_DEBUG_FUNCPTR (gst_hls_demux_src_query));
gst_pad_set_element_private (demux->srcpad, demux);
gst_pad_set_active (demux->srcpad, TRUE);
+ gst_pad_push_event (demux->srcpad, gst_event_new_stream_start ());
gst_pad_set_caps (demux->srcpad, newcaps);
+ gst_pad_push_event (demux->srcpad, gst_event_new_caps (newcaps));
gst_element_add_pad (GST_ELEMENT (demux), demux->srcpad);
gst_element_no_more_pads (GST_ELEMENT (demux));
@@ -636,9 +632,10 @@ switch_pads (GstHLSDemux * demux, GstCaps * newcaps)
static void
gst_hls_demux_stream_loop (GstHLSDemux * demux)
{
- GstBufferList *buffer_list;
+ GstFragment *fragment;
GstBuffer *buf;
GstFlowReturn ret;
+ GstCaps *bufcaps, *srccaps = NULL;
/* Loop for the source pad task. The task is started when we have
* received the main playlist from the source element. It tries first to
@@ -663,32 +660,40 @@ gst_hls_demux_stream_loop (GstHLSDemux * demux)
goto pause_task;
}
- buffer_list = g_queue_pop_head (demux->queue);
- /* Work with the first buffer of the list */
- buf = gst_buffer_list_get (buffer_list, 0, 0);
+ fragment = g_queue_pop_head (demux->queue);
+ buf = gst_fragment_get_buffer (fragment);
+
/* Figure out if we need to create/switch pads */
- if (G_UNLIKELY (!demux->srcpad
- || GST_BUFFER_CAPS (buf) != GST_PAD_CAPS (demux->srcpad)
+ if (G_LIKELY (demux->srcpad))
+ srccaps = gst_pad_get_current_caps (demux->srcpad);
+ bufcaps = gst_fragment_get_caps (fragment);
+ if (G_UNLIKELY (!srccaps || !gst_caps_is_equal_fixed (bufcaps, srccaps)
|| demux->need_segment)) {
- switch_pads (demux, GST_BUFFER_CAPS (buf));
+ switch_pads (demux, bufcaps);
demux->need_segment = TRUE;
}
+ gst_caps_unref (bufcaps);
+ if (G_LIKELY (srccaps))
+ gst_caps_unref (srccaps);
+ g_object_unref (fragment);
+
if (demux->need_segment) {
- GstClockTime start = demux->position + demux->position_shift;
+ GstSegment segment;
+ GstClockTime start = GST_BUFFER_PTS (buf);
+
+ start += demux->position_shift;
/* And send a newsegment */
GST_DEBUG_OBJECT (demux, "Sending new-segment. segment start:%"
GST_TIME_FORMAT, GST_TIME_ARGS (start));
- gst_pad_push_event (demux->srcpad,
- gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME,
- start, GST_CLOCK_TIME_NONE, start));
+ gst_segment_init (&segment, GST_FORMAT_TIME);
+ segment.start = start;
+ segment.time = start;
+ gst_pad_push_event (demux->srcpad, gst_event_new_segment (&segment));
demux->need_segment = FALSE;
demux->position_shift = 0;
}
- if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DURATION (buf)))
- demux->position += GST_BUFFER_DURATION (buf);
-
- ret = gst_pad_push_list (demux->srcpad, buffer_list);
+ ret = gst_pad_push (demux->srcpad, buf);
if (ret != GST_FLOW_OK)
goto error_pushing;
@@ -733,7 +738,6 @@ static void
gst_hls_demux_reset (GstHLSDemux * demux, gboolean dispose)
{
demux->need_cache = TRUE;
- demux->accumulated_delay = 0;
demux->end_of_playlist = FALSE;
demux->cancelled = FALSE;
demux->do_typefind = TRUE;
@@ -758,12 +762,11 @@ gst_hls_demux_reset (GstHLSDemux * demux, gboolean dispose)
}
while (!g_queue_is_empty (demux->queue)) {
- GstBufferList *buffer_list = g_queue_pop_head (demux->queue);
- gst_buffer_list_unref (buffer_list);
+ GstFragment *fragment = g_queue_pop_head (demux->queue);
+ g_object_unref (fragment);
}
g_queue_clear (demux->queue);
- demux->position = 0;
demux->position_shift = 0;
demux->need_segment = TRUE;
}
@@ -788,20 +791,23 @@ gst_hls_demux_updates_loop (GstHLSDemux * demux)
* switch to a different bitrate */
/* block until the next scheduled update or the signal to quit this thread */
- g_mutex_lock (demux->updates_timed_lock);
+ g_mutex_lock (&demux->updates_timed_lock);
GST_DEBUG_OBJECT (demux, "Started updates task");
while (TRUE) {
+ /* schedule the next update */
+ gst_hls_demux_schedule (demux);
+
+ /* block until the next scheduled update or the signal to quit this thread */
if (g_cond_timed_wait (GST_TASK_GET_COND (demux->updates_task),
- demux->updates_timed_lock, &demux->next_update)) {
+ &demux->updates_timed_lock, &demux->next_update)) {
goto quit;
}
/* update the playlist for live sources */
if (gst_m3u8_client_is_live (demux->client)) {
- if (!gst_hls_demux_update_playlist (demux)) {
+ if (!gst_hls_demux_update_playlist (demux, TRUE)) {
demux->client->update_failed_count++;
if (demux->client->update_failed_count < DEFAULT_FAILED_COUNT) {
GST_WARNING_OBJECT (demux, "Could not update the playlist");
- gst_hls_demux_schedule (demux);
continue;
} else {
GST_ELEMENT_ERROR (demux, RESOURCE, NOT_FOUND,
@@ -811,9 +817,6 @@ gst_hls_demux_updates_loop (GstHLSDemux * demux)
}
}
- /* schedule the next update */
- gst_hls_demux_schedule (demux);
-
/* if it's a live source and the playlist couldn't be updated, there aren't
* more fragments in the playlist, so we just wait for the next schedulled
* update */
@@ -841,10 +844,10 @@ gst_hls_demux_updates_loop (GstHLSDemux * demux)
}
} else {
demux->client->update_failed_count = 0;
- }
- /* try to switch to another bitrate if needed */
- gst_hls_demux_switch_playlist (demux);
+ /* try to switch to another bitrate if needed */
+ gst_hls_demux_switch_playlist (demux);
+ }
}
}
@@ -852,7 +855,7 @@ quit:
{
GST_DEBUG_OBJECT (demux, "Stopped updates task");
gst_hls_demux_stop (demux);
- g_mutex_unlock (demux->updates_timed_lock);
+ g_mutex_unlock (&demux->updates_timed_lock);
}
}
@@ -866,29 +869,27 @@ gst_hls_demux_cache_fragments (GstHLSDemux * demux)
if (gst_m3u8_client_has_variant_playlist (demux->client)) {
GstM3U8 *child = NULL;
- GST_M3U8_CLIENT_LOCK (demux->client);
- child = demux->client->main->current_variant->data;
- GST_M3U8_CLIENT_UNLOCK (demux->client);
+ if (demux->connection_speed == 0) {
+
+ GST_M3U8_CLIENT_LOCK (demux->client);
+ child = demux->client->main->current_variant->data;
+ GST_M3U8_CLIENT_UNLOCK (demux->client);
+ } else {
+ GList *tmp = gst_m3u8_client_get_playlist_for_bitrate (demux->client,
+ demux->connection_speed);
+
+ child = GST_M3U8 (tmp->data);
+ }
+
gst_m3u8_client_set_current (demux->client, child);
- if (!gst_hls_demux_update_playlist (demux)) {
+ if (!gst_hls_demux_update_playlist (demux, FALSE)) {
GST_ERROR_OBJECT (demux, "Could not fetch the child playlist %s",
child->uri);
return FALSE;
}
}
- /* If it's a live source, set the sequence number to the end of the list
- * and substract the 'fragmets_cache' to start from the last fragment*/
- if (gst_m3u8_client_is_live (demux->client)) {
- GST_M3U8_CLIENT_LOCK (demux->client);
- demux->client->sequence += g_list_length (demux->client->current->files);
- if (demux->client->sequence >= demux->fragments_cache)
- demux->client->sequence -= demux->fragments_cache;
- else
- demux->client->sequence = 0;
- gst_m3u8_client_get_current_position (demux->client, &demux->position);
- GST_M3U8_CLIENT_UNLOCK (demux->client);
- } else {
+ if (!gst_m3u8_client_is_live (demux->client)) {
GstClockTime duration = gst_m3u8_client_get_duration (demux->client);
GST_DEBUG_OBJECT (demux, "Sending duration message : %" GST_TIME_FORMAT,
@@ -905,9 +906,6 @@ gst_hls_demux_cache_fragments (GstHLSDemux * demux)
gst_message_new_buffering (GST_OBJECT (demux),
100 * i / demux->fragments_cache));
g_get_current_time (&demux->next_update);
- g_time_val_add (&demux->next_update,
- gst_m3u8_client_get_target_duration (demux->client)
- / GST_SECOND * G_USEC_PER_SEC);
if (!gst_hls_demux_get_next_fragment (demux, TRUE)) {
if (demux->end_of_playlist)
break;
@@ -933,31 +931,36 @@ gst_hls_demux_cache_fragments (GstHLSDemux * demux)
static gchar *
gst_hls_src_buf_to_utf8_playlist (GstBuffer * buf)
{
- gint size;
- gchar *data;
+ GstMapInfo info;
gchar *playlist;
- data = (gchar *) GST_BUFFER_DATA (buf);
- size = GST_BUFFER_SIZE (buf);
-
- if (!g_utf8_validate (data, size, NULL))
+ if (!gst_buffer_map (buf, &info, GST_MAP_READ))
return NULL;
+ if (!g_utf8_validate ((gchar *) info.data, info.size, NULL))
+ goto validate_error;
+
/* alloc size + 1 to end with a null character */
- playlist = g_malloc0 (size + 1);
- memcpy (playlist, data, size + 1);
+ playlist = g_malloc0 (info.size + 1);
+ memcpy (playlist, info.data, info.size + 1);
+ gst_buffer_unmap (buf, &info);
gst_buffer_unref (buf);
return playlist;
+
+validate_error:
+ gst_buffer_unmap (buf, &info);
+ gst_buffer_unref (buf);
+ return NULL;
}
static gboolean
-gst_hls_demux_update_playlist (GstHLSDemux * demux)
+gst_hls_demux_update_playlist (GstHLSDemux * demux, gboolean update)
{
GstFragment *download;
- GstBufferListIterator *it;
GstBuffer *buf;
gchar *playlist;
+ gboolean updated = FALSE;
const gchar *uri = gst_m3u8_client_get_current_uri (demux->client);
@@ -966,64 +969,102 @@ gst_hls_demux_update_playlist (GstHLSDemux * demux)
if (download == NULL)
return FALSE;
- /* Merge all the buffers in the list to build a unique buffer with the
- * playlist */
- it = gst_buffer_list_iterate (gst_fragment_get_buffer_list (download));
-
- /* skip the first group, which contains the headers, which are not set in the
- * demuxer*/
- gst_buffer_list_iterator_next_group (it);
- buf = gst_buffer_list_iterator_merge_group (it);
-
+ buf = gst_fragment_get_buffer (download);
playlist = gst_hls_src_buf_to_utf8_playlist (buf);
- gst_buffer_list_iterator_free (it);
g_object_unref (download);
if (playlist == NULL) {
GST_WARNING_OBJECT (demux, "Couldn't not validate playlist encoding");
return FALSE;
}
- gst_m3u8_client_update (demux->client, playlist);
- return TRUE;
+
+ updated = gst_m3u8_client_update (demux->client, playlist);
+
+ /* If it's a live source, do not let the sequence number go beyond
+ * three fragments before the end of the list */
+ if (updated && update == FALSE && demux->client->current &&
+ gst_m3u8_client_is_live (demux->client)) {
+ guint last_sequence;
+
+ GST_M3U8_CLIENT_LOCK (demux->client);
+ last_sequence =
+ GST_M3U8_MEDIA_FILE (g_list_last (demux->client->current->
+ files)->data)->sequence;
+
+ if (demux->client->sequence >= last_sequence - 3) {
+ GST_DEBUG_OBJECT (demux, "Sequence is beyond playlist. Moving back to %d",
+ last_sequence - 3);
+ demux->need_segment = TRUE;
+ demux->client->sequence = last_sequence - 3;
+ }
+ GST_M3U8_CLIENT_UNLOCK (demux->client);
+ }
+
+ return updated;
}
static gboolean
-gst_hls_demux_change_playlist (GstHLSDemux * demux, gboolean is_fast)
+gst_hls_demux_change_playlist (GstHLSDemux * demux, guint max_bitrate)
{
- GList *list;
- GstStructure *s;
- gint new_bandwidth;
+ GList *previous_variant, *current_variant;
+ gint old_bandwidth, new_bandwidth;
- GST_M3U8_CLIENT_LOCK (demux->client);
- if (is_fast)
- list = g_list_next (demux->client->main->current_variant);
- else
- list = g_list_previous (demux->client->main->current_variant);
+ /* If user specifies a connection speed never use a playlist with a bandwidth
+ * superior than it */
+ if (demux->connection_speed != 0 && max_bitrate > demux->connection_speed)
+ max_bitrate = demux->connection_speed;
+
+ previous_variant = demux->client->main->current_variant;
+ current_variant = gst_m3u8_client_get_playlist_for_bitrate (demux->client,
+ max_bitrate);
+
+retry_failover_protection:
+ old_bandwidth = GST_M3U8 (previous_variant->data)->bandwidth;
+ new_bandwidth = GST_M3U8 (current_variant->data)->bandwidth;
/* Don't do anything else if the playlist is the same */
- if (!list || list->data == demux->client->current) {
- GST_M3U8_CLIENT_UNLOCK (demux->client);
+ if (new_bandwidth == old_bandwidth) {
return TRUE;
}
- demux->client->main->current_variant = list;
+ demux->client->main->current_variant = current_variant;
GST_M3U8_CLIENT_UNLOCK (demux->client);
- gst_m3u8_client_set_current (demux->client, list->data);
+ gst_m3u8_client_set_current (demux->client, current_variant->data);
- GST_M3U8_CLIENT_LOCK (demux->client);
- new_bandwidth = demux->client->current->bandwidth;
- GST_M3U8_CLIENT_UNLOCK (demux->client);
+ GST_INFO_OBJECT (demux, "Client was on %dbps, max allowed is %dbps, switching"
+ " to bitrate %dbps", old_bandwidth, max_bitrate, new_bandwidth);
- gst_hls_demux_update_playlist (demux);
- GST_INFO_OBJECT (demux, "Client is %s, switching to bitrate %d",
- is_fast ? "fast" : "slow", new_bandwidth);
+ if (gst_hls_demux_update_playlist (demux, FALSE)) {
+ GstStructure *s;
+
+ s = gst_structure_new ("playlist",
+ "uri", G_TYPE_STRING, gst_m3u8_client_get_current_uri (demux->client),
+ "bitrate", G_TYPE_INT, new_bandwidth, NULL);
+ gst_element_post_message (GST_ELEMENT_CAST (demux),
+ gst_message_new_element (GST_OBJECT_CAST (demux), s));
+ } else {
+ GList *failover = NULL;
- s = gst_structure_new ("playlist",
- "uri", G_TYPE_STRING, gst_m3u8_client_get_current_uri (demux->client),
- "bitrate", G_TYPE_INT, new_bandwidth, NULL);
- gst_element_post_message (GST_ELEMENT_CAST (demux),
- gst_message_new_element (GST_OBJECT_CAST (demux), s));
+ GST_INFO_OBJECT (demux, "Unable to update playlist. Switching back");
+ GST_M3U8_CLIENT_LOCK (demux->client);
+
+ failover = g_list_previous (current_variant);
+ if (failover && new_bandwidth == GST_M3U8 (failover->data)->bandwidth) {
+ current_variant = failover;
+ goto retry_failover_protection;
+ }
+
+ demux->client->main->current_variant = previous_variant;
+ GST_M3U8_CLIENT_UNLOCK (demux->client);
+ gst_m3u8_client_set_current (demux->client, previous_variant->data);
+ /* Try a lower bitrate (or stop if we just tried the lowest) */
+ if (new_bandwidth ==
+ GST_M3U8 (g_list_first (demux->client->main->lists)->data)->bandwidth)
+ return FALSE;
+ else
+ return gst_hls_demux_change_playlist (demux, new_bandwidth - 1);
+ }
/* Force typefinding since we might have changed media type */
demux->do_typefind = TRUE;
@@ -1064,9 +1105,12 @@ static gboolean
gst_hls_demux_switch_playlist (GstHLSDemux * demux)
{
GTimeVal now;
- gint64 diff, limit;
+ GstClockTime diff;
+ gsize size;
+ gint bitrate;
+ GstFragment *fragment = g_queue_peek_tail (demux->queue);
+ GstBuffer *buffer;
- g_get_current_time (&now);
GST_M3U8_CLIENT_LOCK (demux->client);
if (!demux->client->main->lists) {
GST_M3U8_CLIENT_UNLOCK (demux->client);
@@ -1076,33 +1120,17 @@ gst_hls_demux_switch_playlist (GstHLSDemux * demux)
/* compare the time when the fragment was downloaded with the time when it was
* scheduled */
- diff = (GST_TIMEVAL_TO_TIME (demux->next_update) - GST_TIMEVAL_TO_TIME (now));
- limit = gst_m3u8_client_get_target_duration (demux->client)
- * demux->bitrate_switch_tol;
-
- GST_DEBUG ("diff:%s%" GST_TIME_FORMAT ", limit:%" GST_TIME_FORMAT,
- diff < 0 ? "-" : " ", GST_TIME_ARGS (ABS (diff)), GST_TIME_ARGS (limit));
-
- /* if we are on time switch to a higher bitrate */
- if (diff > limit) {
- while (diff > limit) {
- gst_hls_demux_change_playlist (demux, TRUE);
- diff -= limit;
- }
- demux->accumulated_delay = 0;
- } else if (diff < 0) {
- /* if the client is too slow wait until it has accumulated a certain delay to
- * switch to a lower bitrate */
- demux->accumulated_delay -= diff;
- if (demux->accumulated_delay >= limit) {
- while (demux->accumulated_delay >= limit) {
- gst_hls_demux_change_playlist (demux, FALSE);
- demux->accumulated_delay -= limit;
- }
- demux->accumulated_delay = 0;
- }
- }
- return TRUE;
+ g_get_current_time (&now);
+ diff = (GST_TIMEVAL_TO_TIME (now) - GST_TIMEVAL_TO_TIME (demux->next_update));
+ buffer = gst_fragment_get_buffer (fragment);
+ size = gst_buffer_get_size (buffer);
+ bitrate = (size * 8) / ((double) diff / GST_SECOND);
+
+ GST_DEBUG ("Downloaded %d bytes in %" GST_TIME_FORMAT ". Bitrate is : %d",
+ size, GST_TIME_ARGS (diff), bitrate);
+
+ gst_buffer_unref (buffer);
+ return gst_hls_demux_change_playlist (demux, bitrate * demux->bitrate_limit);
}
static gboolean
@@ -1112,7 +1140,6 @@ gst_hls_demux_get_next_fragment (GstHLSDemux * demux, gboolean caching)
const gchar *next_fragment_uri;
GstClockTime duration;
GstClockTime timestamp;
- GstBufferList *buffer_list;
GstBuffer *buf;
gboolean discont;
@@ -1132,14 +1159,13 @@ gst_hls_demux_get_next_fragment (GstHLSDemux * demux, gboolean caching)
if (download == NULL)
goto error;
- buffer_list = gst_fragment_get_buffer_list (download);
- buf = gst_buffer_list_get (buffer_list, 0, 0);
+ buf = gst_fragment_get_buffer (download);
GST_BUFFER_DURATION (buf) = duration;
- GST_BUFFER_TIMESTAMP (buf) = timestamp;
+ GST_BUFFER_PTS (buf) = timestamp;
/* We actually need to do this every time we switch bitrate */
if (G_UNLIKELY (demux->do_typefind)) {
- GstCaps *caps = gst_type_find_helper_for_buffer (NULL, buf, NULL);
+ GstCaps *caps = gst_fragment_get_caps (download);
if (!demux->input_caps || !gst_caps_is_equal (caps, demux->input_caps)) {
gst_caps_replace (&demux->input_caps, caps);
@@ -1147,22 +1173,22 @@ gst_hls_demux_get_next_fragment (GstHLSDemux * demux, gboolean caching)
GST_INFO_OBJECT (demux, "Input source caps: %" GST_PTR_FORMAT,
demux->input_caps);
demux->do_typefind = FALSE;
- } else
- gst_caps_unref (caps);
+ }
+ gst_caps_unref (caps);
+ } else {
+ gst_fragment_set_caps (download, demux->input_caps);
}
- gst_buffer_set_caps (buf, demux->input_caps);
if (discont) {
GST_DEBUG_OBJECT (demux, "Marking fragment as discontinuous");
GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
}
- g_queue_push_tail (demux->queue, buffer_list);
- g_object_unref (download);
+ g_queue_push_tail (demux->queue, download);
if (!caching) {
GST_TASK_SIGNAL (demux->updates_task);
+ gst_task_start (demux->stream_task);
}
-
return TRUE;
error:
diff --git a/gst/hls/gsthlsdemux.h b/gst/hls/gsthlsdemux.h
index 16c86775..78202f90 100644
--- a/gst/hls/gsthlsdemux.h
+++ b/gst/hls/gsthlsdemux.h
@@ -41,6 +41,8 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_HLS_DEMUX))
#define GST_IS_HLS_DEMUX_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_HLS_DEMUX))
+#define GST_HLS_DEMUX_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj),GST_TYPE_HLS_DEMUX,GstHLSDemuxClass))
typedef struct _GstHLSDemux GstHLSDemux;
typedef struct _GstHLSDemuxClass GstHLSDemuxClass;
@@ -63,27 +65,26 @@ struct _GstHLSDemux
GQueue *queue; /* Queue storing the fetched fragments */
gboolean need_cache; /* Wheter we need to cache some fragments before starting to push data */
gboolean end_of_playlist;
- gboolean do_typefind; /* Whether we need to typefind the next buffer */
+ gboolean do_typefind; /* Whether we need to typefind the next buffer */
/* Properties */
guint fragments_cache; /* number of fragments needed to be cached to start playing */
- gfloat bitrate_switch_tol; /* tolerance with respect to the fragment duration to switch the bitarate*/
+ gfloat bitrate_limit; /* limit of the available bitrate to use */
+ guint connection_speed; /* Network connection speed in kbps (0 = unknown) */
/* Streaming task */
GstTask *stream_task;
- GStaticRecMutex stream_lock;
+ GRecMutex stream_lock;
gboolean stop_stream_task;
/* Updates task */
GstTask *updates_task;
- GStaticRecMutex updates_lock;
- GMutex *updates_timed_lock;
+ GRecMutex updates_lock;
+ GMutex updates_timed_lock;
GTimeVal next_update; /* Time of the next update */
- gint64 accumulated_delay; /* Delay accumulated fetching fragments, used to decide a playlist switch */
gboolean cancelled;
/* Position in the stream */
- GstClockTime position;
GstClockTime position_shift;
gboolean need_segment;
};
diff --git a/gst/hls/gsturidownloader.c b/gst/hls/gsturidownloader.c
index e208efe1..bd59075c 100644
--- a/gst/hls/gsturidownloader.c
+++ b/gst/hls/gsturidownloader.c
@@ -39,15 +39,17 @@ struct _GstUriDownloaderPrivate
GstPad *pad;
GTimeVal *timeout;
GstFragment *download;
- GMutex *lock;
- GCond *cond;
+ GMutex lock;
+ GCond cond;
};
static void gst_uri_downloader_finalize (GObject * object);
static void gst_uri_downloader_dispose (GObject * object);
-static GstFlowReturn gst_uri_downloader_chain (GstPad * pad, GstBuffer * buf);
-static gboolean gst_uri_downloader_sink_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_uri_downloader_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
+static gboolean gst_uri_downloader_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstBusSyncReply gst_uri_downloader_bus_handler (GstBus * bus,
GstMessage * message, gpointer data);
@@ -91,13 +93,13 @@ gst_uri_downloader_init (GstUriDownloader * downloader)
gst_pad_set_event_function (downloader->priv->pad,
GST_DEBUG_FUNCPTR (gst_uri_downloader_sink_event));
gst_pad_set_element_private (downloader->priv->pad, downloader);
- gst_pad_activate_push (downloader->priv->pad, TRUE);
+ gst_pad_set_active (downloader->priv->pad, TRUE);
/* Create a bus to handle error and warning message from the source element */
downloader->priv->bus = gst_bus_new ();
- downloader->priv->lock = g_mutex_new ();
- downloader->priv->cond = g_cond_new ();
+ g_mutex_init (&downloader->priv->lock);
+ g_cond_init (&downloader->priv->cond);
}
static void
@@ -133,8 +135,8 @@ gst_uri_downloader_finalize (GObject * object)
{
GstUriDownloader *downloader = GST_URI_DOWNLOADER (object);
- g_mutex_free (downloader->priv->lock);
- g_cond_free (downloader->priv->cond);
+ g_mutex_clear (&downloader->priv->lock);
+ g_cond_clear (&downloader->priv->cond);
G_OBJECT_CLASS (gst_uri_downloader_parent_class)->finalize (object);
}
@@ -146,10 +148,13 @@ gst_uri_downloader_new (void)
}
static gboolean
-gst_uri_downloader_sink_event (GstPad * pad, GstEvent * event)
+gst_uri_downloader_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
- GstUriDownloader *downloader =
- (GstUriDownloader *) (gst_pad_get_element_private (pad));
+ gboolean ret = FALSE;
+ GstUriDownloader *downloader;
+
+ downloader = GST_URI_DOWNLOADER (gst_pad_get_element_private (pad));
switch (event->type) {
case GST_EVENT_EOS:{
@@ -161,19 +166,19 @@ gst_uri_downloader_sink_event (GstPad * pad, GstEvent * event)
downloader->priv->download->download_stop_time = g_get_real_time ();
GST_OBJECT_UNLOCK (downloader);
GST_DEBUG_OBJECT (downloader, "Signaling chain funtion");
- g_cond_signal (downloader->priv->cond);
-
+ g_cond_signal (&downloader->priv->cond);
} else {
GST_OBJECT_UNLOCK (downloader);
}
+ gst_event_unref (event);
break;
}
default:
+ ret = gst_pad_event_default (pad, parent, event);
break;
}
- gst_event_unref (event);
- return FALSE;
+ return ret;
}
static GstBusSyncReply
@@ -205,10 +210,11 @@ gst_uri_downloader_bus_handler (GstBus * bus,
}
static GstFlowReturn
-gst_uri_downloader_chain (GstPad * pad, GstBuffer * buf)
+gst_uri_downloader_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
- GstUriDownloader *downloader =
- (GstUriDownloader *) gst_pad_get_element_private (pad);
+ GstUriDownloader *downloader;
+
+ downloader = GST_URI_DOWNLOADER (gst_pad_get_element_private (pad));
/* HTML errors (404, 500, etc...) are also pushed through this pad as
* response but the source element will also post a warning or error message
@@ -222,7 +228,7 @@ gst_uri_downloader_chain (GstPad * pad, GstBuffer * buf)
}
GST_LOG_OBJECT (downloader, "The uri fetcher received a new buffer "
- "of size %u", GST_BUFFER_SIZE (buf));
+ "of size %" G_GSIZE_FORMAT, gst_buffer_get_size (buf));
if (!gst_fragment_add_buffer (downloader->priv->download, buf))
GST_WARNING_OBJECT (downloader, "Could not add buffer to fragment");
GST_OBJECT_UNLOCK (downloader);
@@ -264,7 +270,7 @@ gst_uri_downloader_cancel (GstUriDownloader * downloader)
downloader->priv->download = NULL;
GST_OBJECT_UNLOCK (downloader);
GST_DEBUG_OBJECT (downloader, "Signaling chain funtion");
- g_cond_signal (downloader->priv->cond);
+ g_cond_signal (&downloader->priv->cond);
} else {
GST_OBJECT_UNLOCK (downloader);
GST_DEBUG_OBJECT (downloader,
@@ -305,7 +311,7 @@ gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri)
GstStateChangeReturn ret;
GstFragment *download = NULL;
- g_mutex_lock (downloader->priv->lock);
+ g_mutex_lock (&downloader->priv->lock);
if (!gst_uri_downloader_set_uri (downloader, uri)) {
goto quit;
@@ -326,7 +332,7 @@ gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri)
* - the download was canceled
*/
GST_DEBUG_OBJECT (downloader, "Waiting to fetch the URI");
- g_cond_wait (downloader->priv->cond, downloader->priv->lock);
+ g_cond_wait (&downloader->priv->cond, &downloader->priv->lock);
GST_OBJECT_LOCK (downloader);
download = downloader->priv->download;
@@ -341,7 +347,7 @@ gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri)
quit:
{
gst_uri_downloader_stop (downloader);
- g_mutex_unlock (downloader->priv->lock);
+ g_mutex_unlock (&downloader->priv->lock);
return download;
}
}
diff --git a/gst/hls/m3u8.c b/gst/hls/m3u8.c
index eecb467e..65afa8bb 100644
--- a/gst/hls/m3u8.c
+++ b/gst/hls/m3u8.c
@@ -647,3 +647,30 @@ gst_m3u8_client_is_live (GstM3U8Client * client)
GST_M3U8_CLIENT_UNLOCK (client);
return ret;
}
+
+GList *
+gst_m3u8_client_get_playlist_for_bitrate (GstM3U8Client * client, guint bitrate)
+{
+ GList *list, *current_variant;
+
+ GST_M3U8_CLIENT_LOCK (client);
+ current_variant = client->main->current_variant;
+
+ /* Go to the highest possible bandwidth allowed */
+ while (GST_M3U8 (current_variant->data)->bandwidth < bitrate) {
+ list = g_list_next (current_variant);
+ if (!list)
+ break;
+ current_variant = list;
+ }
+
+ while (GST_M3U8 (current_variant->data)->bandwidth > bitrate) {
+ list = g_list_previous (current_variant);
+ if (!list)
+ break;
+ current_variant = list;
+ }
+ GST_M3U8_CLIENT_UNLOCK (client);
+
+ return current_variant;
+}
diff --git a/gst/hls/m3u8.h b/gst/hls/m3u8.h
index a0382871..6d608096 100644
--- a/gst/hls/m3u8.h
+++ b/gst/hls/m3u8.h
@@ -92,6 +92,8 @@ const gchar *gst_m3u8_client_get_uri(GstM3U8Client * client);
const gchar *gst_m3u8_client_get_current_uri(GstM3U8Client * client);
gboolean gst_m3u8_client_has_variant_playlist(GstM3U8Client * client);
gboolean gst_m3u8_client_is_live(GstM3U8Client * client);
+GList * gst_m3u8_client_get_playlist_for_bitrate (GstM3U8Client * client,
+ guint bitrate);
G_END_DECLS
#endif /* __M3U8_H__ */
diff --git a/gst/id3tag/Makefile.in b/gst/id3tag/Makefile.in
index 37ac490f..356f6b5d 100644
--- a/gst/id3tag/Makefile.in
+++ b/gst/id3tag/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -644,7 +646,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/inter/Makefile.in b/gst/inter/Makefile.in
index a2f6f623..c713e48f 100644
--- a/gst/inter/Makefile.in
+++ b/gst/inter/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -477,6 +477,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -493,6 +495,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -525,10 +528,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -691,7 +693,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/interlace/Makefile.in b/gst/interlace/Makefile.in
index 0432e2dc..b0b85eca 100644
--- a/gst/interlace/Makefile.in
+++ b/gst/interlace/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -457,6 +457,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -473,6 +475,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -505,10 +508,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -639,7 +641,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/ivfparse/Makefile.in b/gst/ivfparse/Makefile.in
index 0c3c902a..069e1c97 100644
--- a/gst/ivfparse/Makefile.in
+++ b/gst/ivfparse/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -640,7 +642,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/jp2kdecimator/Makefile.in b/gst/jp2kdecimator/Makefile.in
index 6a4f3307..7c61d6fb 100644
--- a/gst/jp2kdecimator/Makefile.in
+++ b/gst/jp2kdecimator/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -643,7 +645,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/jpegformat/Makefile.in b/gst/jpegformat/Makefile.in
index 631e617a..5f73869f 100644
--- a/gst/jpegformat/Makefile.in
+++ b/gst/jpegformat/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -642,7 +644,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/jpegformat/gstjpegparse.c b/gst/jpegformat/gstjpegparse.c
index fd977dc7..24072138 100644
--- a/gst/jpegformat/gstjpegparse.c
+++ b/gst/jpegformat/gstjpegparse.c
@@ -821,7 +821,7 @@ gst_jpeg_parse_set_new_caps (GstJpegParse * parse, gboolean header_ok)
if (!GST_CLOCK_TIME_IS_VALID (parse->priv->duration)
&& parse->priv->framerate_numerator != 0) {
parse->priv->duration = gst_util_uint64_scale_int (GST_SECOND,
- parse->priv->framerate_numerator, parse->priv->framerate_denominator);
+ parse->priv->framerate_denominator, parse->priv->framerate_numerator);
}
} else {
/* unknown duration */
@@ -928,7 +928,8 @@ gst_jpeg_parse_chain (GstPad * pad, GstBuffer * buf)
if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (parse->priv->next_ts)))
parse->priv->next_ts = timestamp;
- parse->priv->duration = duration;
+ if (G_LIKELY (GST_CLOCK_TIME_IS_VALID (duration)))
+ parse->priv->duration = duration;
/* check if we already have a EOI */
len = gst_jpeg_parse_get_image_length (parse);
@@ -971,6 +972,7 @@ gst_jpeg_parse_sink_event (GstPad * pad, GstEvent * event)
}
case GST_EVENT_FLUSH_STOP:
parse->priv->next_ts = GST_CLOCK_TIME_NONE;
+ parse->priv->duration = GST_CLOCK_TIME_NONE;
parse->priv->last_offset = 0;
parse->priv->last_entropy_len = 0;
parse->priv->last_resync = FALSE;
@@ -1039,6 +1041,7 @@ gst_jpeg_parse_change_state (GstElement * element, GstStateChange transition)
parse->priv->new_segment = FALSE;
parse->priv->next_ts = GST_CLOCK_TIME_NONE;
+ parse->priv->duration = GST_CLOCK_TIME_NONE;
parse->priv->last_offset = 0;
parse->priv->last_entropy_len = 0;
diff --git a/gst/legacyresample/Makefile.in b/gst/legacyresample/Makefile.in
index 46201b8f..a9bdde9a 100644
--- a/gst/legacyresample/Makefile.in
+++ b/gst/legacyresample/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -467,6 +467,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -483,6 +485,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -515,10 +518,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -654,7 +656,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/librfb/Makefile.am b/gst/librfb/Makefile.am
index ad4dd4fb..58d7af94 100644
--- a/gst/librfb/Makefile.am
+++ b/gst/librfb/Makefile.am
@@ -5,7 +5,7 @@ plugin_LTLIBRARIES = libgstrfbsrc.la
libgstrfbsrc_la_SOURCES = gstrfbsrc.c
libgstrfbsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(X11_CFLAGS) -I$(srcdir)/..
-libgstrfbsrc_la_LIBADD = $(GST_BASE_LIBS) $(X11_LIBS) librfb.la
+libgstrfbsrc_la_LIBADD = $(GST_BASE_LIBS) $(X11_LIBS) $(WINSOCK2_LIBS) librfb.la
libgstrfbsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstrfbsrc_la_LIBTOOLFLAGS = --tag=disable-static
diff --git a/gst/librfb/Makefile.in b/gst/librfb/Makefile.in
index 7a995cb3..c0c0ebcd 100644
--- a/gst/librfb/Makefile.in
+++ b/gst/librfb/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -130,7 +130,7 @@ am__installdirs = "$(DESTDIR)$(plugindir)"
LTLIBRARIES = $(noinst_LTLIBRARIES) $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
libgstrfbsrc_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) librfb.la
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) librfb.la
am_libgstrfbsrc_la_OBJECTS = libgstrfbsrc_la-gstrfbsrc.lo
libgstrfbsrc_la_OBJECTS = $(am_libgstrfbsrc_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
@@ -469,6 +469,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -485,6 +487,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -517,10 +520,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -596,7 +598,7 @@ noinst_LTLIBRARIES = librfb.la
plugin_LTLIBRARIES = libgstrfbsrc.la
libgstrfbsrc_la_SOURCES = gstrfbsrc.c
libgstrfbsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(X11_CFLAGS) -I$(srcdir)/..
-libgstrfbsrc_la_LIBADD = $(GST_BASE_LIBS) $(X11_LIBS) librfb.la
+libgstrfbsrc_la_LIBADD = $(GST_BASE_LIBS) $(X11_LIBS) $(WINSOCK2_LIBS) librfb.la
libgstrfbsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstrfbsrc_la_LIBTOOLFLAGS = --tag=disable-static
librfb_la_SOURCES = \
@@ -670,7 +672,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/librfb/gstrfbsrc.c b/gst/librfb/gstrfbsrc.c
index e19de559..235acd5a 100644
--- a/gst/librfb/gstrfbsrc.c
+++ b/gst/librfb/gstrfbsrc.c
@@ -34,6 +34,10 @@
#include <X11/Xlib.h>
#endif
+#ifdef G_OS_WIN32
+#include <winsock2.h>
+#endif
+
enum
{
ARG_0,
@@ -70,7 +74,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
"height = (int) [ 16, 4096 ], " "framerate = (fraction) 0/1")
);
-static void gst_rfb_src_dispose (GObject * object);
+static void gst_rfb_src_finalize (GObject * object);
static void gst_rfb_src_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_rfb_src_get_property (GObject * object, guint prop_id,
@@ -114,7 +118,7 @@ gst_rfb_src_class_init (GstRfbSrcClass * klass)
gstbasesrc_class = (GstBaseSrcClass *) klass;
gstpushsrc_class = (GstPushSrcClass *) klass;
- gobject_class->dispose = gst_rfb_src_dispose;
+ gobject_class->finalize = gst_rfb_src_finalize;
gobject_class->set_property = gst_rfb_src_set_property;
gobject_class->get_property = gst_rfb_src_get_property;
@@ -188,10 +192,19 @@ gst_rfb_src_init (GstRfbSrc * src, GstRfbSrcClass * klass)
src->decoder = rfb_decoder_new ();
+#ifdef G_OS_WIN32
+ {
+ WSADATA wsa_data;
+
+ if (WSAStartup (MAKEWORD (2, 2), &wsa_data) != 0) {
+ GST_ERROR_OBJECT (sink, "WSAStartup failed: 0x%08x", WSAGetLastError ());
+ }
+ }
+#endif
}
static void
-gst_rfb_src_dispose (GObject * object)
+gst_rfb_src_finalize (GObject * object)
{
GstRfbSrc *src = GST_RFB_SRC (object);
@@ -201,8 +214,11 @@ gst_rfb_src_dispose (GObject * object)
g_free (src->decoder);
src->decoder = NULL;
}
+#ifdef G_OS_WIN32
+ WSACleanup ();
+#endif
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
diff --git a/gst/liveadder/Makefile.in b/gst/liveadder/Makefile.in
index 5d1e8464..e022f7b2 100644
--- a/gst/liveadder/Makefile.in
+++ b/gst/liveadder/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -637,7 +639,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/mpegdemux/Makefile.in b/gst/mpegdemux/Makefile.in
index 20bfa6c2..6b497603 100644
--- a/gst/mpegdemux/Makefile.in
+++ b/gst/mpegdemux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -666,7 +668,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/mpegpsmux/Makefile.in b/gst/mpegpsmux/Makefile.in
index 0df3f703..c8687774 100644
--- a/gst/mpegpsmux/Makefile.in
+++ b/gst/mpegpsmux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -463,6 +463,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -479,6 +481,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -511,10 +514,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -652,7 +654,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/mpegpsmux/mpegpsmux.c b/gst/mpegpsmux/mpegpsmux.c
index fb2de5a1..da31df28 100644
--- a/gst/mpegpsmux/mpegpsmux.c
+++ b/gst/mpegpsmux/mpegpsmux.c
@@ -98,7 +98,7 @@ static gboolean new_packet_cb (guint8 * data, guint len, void *user_data);
static void release_buffer_cb (guint8 * data, void *user_data);
static gboolean mpegpsdemux_prepare_srcpad (MpegPsMux * mux);
-static GstFlowReturn mpegpsmux_collected (GstCollectPads2 * pads,
+static GstFlowReturn mpegpsmux_collected (GstCollectPads * pads,
MpegPsMux * mux);
static GstPad *mpegpsmux_request_new_pad (GstElement * element,
GstPadTemplate * templ, const gchar * name);
@@ -153,9 +153,9 @@ mpegpsmux_init (MpegPsMux * mux, MpegPsMuxClass * g_class)
gst_pad_use_fixed_caps (mux->srcpad);
gst_element_add_pad (GST_ELEMENT (mux), mux->srcpad);
- mux->collect = gst_collect_pads2_new ();
- gst_collect_pads2_set_function (mux->collect,
- (GstCollectPads2Function) GST_DEBUG_FUNCPTR (mpegpsmux_collected), mux);
+ mux->collect = gst_collect_pads_new ();
+ gst_collect_pads_set_function (mux->collect,
+ (GstCollectPadsFunction) GST_DEBUG_FUNCPTR (mpegpsmux_collected), mux);
mux->psmux = psmux_new ();
psmux_set_write_func (mux->psmux, new_packet_cb, mux);
@@ -371,7 +371,7 @@ mpegpsmux_create_streams (MpegPsMux * mux)
/* Create the streams */
while (walk) {
- GstCollectData2 *c_data = (GstCollectData2 *) walk->data;
+ GstCollectData *c_data = (GstCollectData *) walk->data;
MpegPsPadData *ps_data = (MpegPsPadData *) walk->data;
walk = g_slist_next (walk);
@@ -396,11 +396,11 @@ mpegpsmux_choose_best_stream (MpegPsMux * mux)
/* Choose from which stream to mux with */
MpegPsPadData *best = NULL;
- GstCollectData2 *c_best = NULL;
+ GstCollectData *c_best = NULL;
GSList *walk;
for (walk = mux->collect->data; walk != NULL; walk = g_slist_next (walk)) {
- GstCollectData2 *c_data = (GstCollectData2 *) walk->data;
+ GstCollectData *c_data = (GstCollectData *) walk->data;
MpegPsPadData *ps_data = (MpegPsPadData *) walk->data;
if (ps_data->eos == FALSE) {
@@ -408,7 +408,7 @@ mpegpsmux_choose_best_stream (MpegPsMux * mux)
GstBuffer *buf;
ps_data->queued_buf = buf =
- gst_collect_pads2_peek (mux->collect, c_data);
+ gst_collect_pads_peek (mux->collect, c_data);
if (buf != NULL) {
if (ps_data->prepare_func) {
@@ -469,7 +469,7 @@ mpegpsmux_choose_best_stream (MpegPsMux * mux)
}
}
if (c_best) {
- gst_buffer_unref (gst_collect_pads2_pop (mux->collect, c_best));
+ gst_buffer_unref (gst_collect_pads_pop (mux->collect, c_best));
}
return best;
@@ -490,7 +490,7 @@ mpegpsmux_push_gop_list (MpegPsMux * mux)
}
static GstFlowReturn
-mpegpsmux_collected (GstCollectPads2 * pads, MpegPsMux * mux)
+mpegpsmux_collected (GstCollectPads * pads, MpegPsMux * mux)
{
/* main muxing function */
@@ -597,7 +597,7 @@ mpegpsmux_request_new_pad (GstElement * element,
pad = gst_pad_new_from_template (templ, name);
- pad_data = (MpegPsPadData *) gst_collect_pads2_add_pad (mux->collect, pad,
+ pad_data = (MpegPsPadData *) gst_collect_pads_add_pad (mux->collect, pad,
sizeof (MpegPsPadData));
if (pad_data == NULL)
goto pad_failure;
@@ -614,7 +614,7 @@ mpegpsmux_request_new_pad (GstElement * element,
could_not_add:
GST_ELEMENT_ERROR (element, STREAM, FAILED,
("Internal data stream error."), ("Could not add pad to element"));
- gst_collect_pads2_remove_pad (mux->collect, pad);
+ gst_collect_pads_remove_pad (mux->collect, pad);
gst_object_unref (pad);
return NULL;
pad_failure:
@@ -649,7 +649,7 @@ mpegpsmux_release_pad (GstElement * element, GstPad * pad)
mux->video_stream_id = 0;
GST_OBJECT_UNLOCK (pad);
- gst_collect_pads2_remove_pad (mux->collect, pad);
+ gst_collect_pads_remove_pad (mux->collect, pad);
}
static void
@@ -763,12 +763,12 @@ mpegpsmux_change_state (GstElement * element, GstStateChange transition)
case GST_STATE_CHANGE_NULL_TO_READY:
break;
case GST_STATE_CHANGE_READY_TO_PAUSED:
- gst_collect_pads2_start (mux->collect);
+ gst_collect_pads_start (mux->collect);
break;
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
break;
case GST_STATE_CHANGE_PAUSED_TO_READY:
- gst_collect_pads2_stop (mux->collect);
+ gst_collect_pads_stop (mux->collect);
break;
case GST_STATE_CHANGE_READY_TO_NULL:
break;
diff --git a/gst/mpegpsmux/mpegpsmux.h b/gst/mpegpsmux/mpegpsmux.h
index 69de48a5..6d994f45 100644
--- a/gst/mpegpsmux/mpegpsmux.h
+++ b/gst/mpegpsmux/mpegpsmux.h
@@ -46,7 +46,7 @@
#define __MPEGPSMUX_H__
#include <gst/gst.h>
-#include <gst/base/gstcollectpads2.h>
+#include <gst/base/gstcollectpads.h>
#include <gst/base/gstadapter.h>
G_BEGIN_DECLS
@@ -70,7 +70,7 @@ struct MpegPsMux {
guint video_stream_id; /* stream id of primary video stream */
- GstCollectPads2 *collect; /* pads collector */
+ GstCollectPads *collect; /* pads collector */
PsMux *psmux;
@@ -88,7 +88,7 @@ struct MpegPsMuxClass {
};
struct MpegPsPadData {
- GstCollectData2 collect; /* Parent */
+ GstCollectData collect; /* Parent */
guint8 stream_id;
guint8 stream_id_ext;
diff --git a/gst/mpegtsdemux/Makefile.in b/gst/mpegtsdemux/Makefile.in
index 7182f1d0..4ec2fff7 100644
--- a/gst/mpegtsdemux/Makefile.in
+++ b/gst/mpegtsdemux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -466,6 +466,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -482,6 +484,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -514,10 +517,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -662,7 +664,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index 7193429d..38beef2e 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -81,14 +81,15 @@ static void mpegts_base_dispose (GObject * object);
static void mpegts_base_finalize (GObject * object);
static void mpegts_base_free_program (MpegTSBaseProgram * program);
static void mpegts_base_free_stream (MpegTSBaseStream * ptream);
-static gboolean mpegts_base_sink_activate (GstPad * pad);
-static gboolean mpegts_base_sink_activate_pull (GstPad * pad, gboolean active);
-static gboolean mpegts_base_sink_activate_push (GstPad * pad, gboolean active);
-static GstFlowReturn mpegts_base_chain (GstPad * pad, GstBuffer * buf);
-static gboolean mpegts_base_sink_event (GstPad * pad, GstEvent * event);
+static gboolean mpegts_base_sink_activate (GstPad * pad, GstObject * parent);
+static gboolean mpegts_base_sink_activate_mode (GstPad * pad,
+ GstObject * parent, GstPadMode mode, gboolean active);
+static GstFlowReturn mpegts_base_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
+static gboolean mpegts_base_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstStateChangeReturn mpegts_base_change_state (GstElement * element,
GstStateChange transition);
-static void _extra_init (GType type);
static void mpegts_base_get_tags_from_sdt (MpegTSBase * base,
GstStructure * sdt_info);
static void mpegts_base_get_tags_from_eit (MpegTSBase * base,
@@ -97,9 +98,20 @@ static gboolean
remove_each_program (gpointer key, MpegTSBaseProgram * program,
MpegTSBase * base);
-GST_BOILERPLATE_FULL (MpegTSBase, mpegts_base, GstElement, GST_TYPE_ELEMENT,
- _extra_init);
+static void
+_extra_init (void)
+{
+ QUARK_PROGRAMS = g_quark_from_string ("programs");
+ QUARK_PROGRAM_NUMBER = g_quark_from_string ("program-number");
+ QUARK_PID = g_quark_from_string ("pid");
+ QUARK_PCR_PID = g_quark_from_string ("pcr-pid");
+ QUARK_STREAMS = g_quark_from_string ("streams");
+ QUARK_STREAM_TYPE = g_quark_from_string ("stream-type");
+}
+#define mpegts_base_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (MpegTSBase, mpegts_base, GST_TYPE_ELEMENT,
+ _extra_init ());
static const guint32 crc_tab[256] = {
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
@@ -161,25 +173,6 @@ mpegts_base_calc_crc32 (guint8 * data, guint datalen)
}
static void
-_extra_init (GType type)
-{
- QUARK_PROGRAMS = g_quark_from_string ("programs");
- QUARK_PROGRAM_NUMBER = g_quark_from_string ("program-number");
- QUARK_PID = g_quark_from_string ("pid");
- QUARK_PCR_PID = g_quark_from_string ("pcr-pid");
- QUARK_STREAMS = g_quark_from_string ("streams");
- QUARK_STREAM_TYPE = g_quark_from_string ("stream-type");
-}
-
-static void
-mpegts_base_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_static_pad_template (element_class, &sink_template);
-}
-
-static void
mpegts_base_class_init (MpegTSBaseClass * klass)
{
GObjectClass *gobject_class;
@@ -188,6 +181,9 @@ mpegts_base_class_init (MpegTSBaseClass * klass)
element_class = GST_ELEMENT_CLASS (klass);
element_class->change_state = mpegts_base_change_state;
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&sink_template));
+
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->set_property = mpegts_base_set_property;
gobject_class->get_property = mpegts_base_get_property;
@@ -237,14 +233,12 @@ mpegts_base_reset (MpegTSBase * base)
}
static void
-mpegts_base_init (MpegTSBase * base, MpegTSBaseClass * klass)
+mpegts_base_init (MpegTSBase * base)
{
base->sinkpad = gst_pad_new_from_static_template (&sink_template, "sink");
gst_pad_set_activate_function (base->sinkpad, mpegts_base_sink_activate);
- gst_pad_set_activatepull_function (base->sinkpad,
- mpegts_base_sink_activate_pull);
- gst_pad_set_activatepush_function (base->sinkpad,
- mpegts_base_sink_activate_push);
+ gst_pad_set_activatemode_function (base->sinkpad,
+ mpegts_base_sink_activate_mode);
gst_pad_set_chain_function (base->sinkpad, mpegts_base_chain);
gst_pad_set_event_function (base->sinkpad, mpegts_base_sink_event);
gst_element_add_pad (GST_ELEMENT (base), base->sinkpad);
@@ -495,21 +489,31 @@ mpegts_base_free_program (MpegTSBaseProgram * program)
/* FIXME : This is being called by tsdemux::find_timestamps()
* We need to avoid re-entrant code like that */
+static gboolean
+mpegts_base_stop_program (MpegTSBase * base, MpegTSBaseProgram * program)
+{
+ MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base);
+
+ GST_DEBUG_OBJECT (base, "program_number : %d", program->program_number);
+
+ if (klass->program_stopped)
+ klass->program_stopped (base, program);
+
+ return TRUE;
+}
+
void
mpegts_base_remove_program (MpegTSBase * base, gint program_number)
{
MpegTSBaseProgram *program;
- MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base);
GST_DEBUG_OBJECT (base, "program_number : %d", program_number);
+ program =
+ (MpegTSBaseProgram *) g_hash_table_lookup (base->programs,
+ GINT_TO_POINTER (program_number));
+ if (program)
+ mpegts_base_stop_program (base, program);
- if (klass->program_stopped) {
- program =
- (MpegTSBaseProgram *) g_hash_table_lookup (base->programs,
- GINT_TO_POINTER (program_number));
- if (program)
- klass->program_stopped (base, program);
- }
g_hash_table_remove (base->programs, GINT_TO_POINTER (program_number));
}
@@ -1056,11 +1060,15 @@ mpegts_base_handle_psi (MpegTSBase * base, MpegTSPacketizerSection * section)
/* table ids 0x70 - 0x73 do not have a crc */
if (G_LIKELY (section->table_id < 0x70 || section->table_id > 0x73)) {
- if (G_UNLIKELY (mpegts_base_calc_crc32 (GST_BUFFER_DATA (section->buffer),
- GST_BUFFER_SIZE (section->buffer)) != 0)) {
+ GstMapInfo map;
+
+ gst_buffer_map (section->buffer, &map, GST_MAP_READ);
+ if (G_UNLIKELY (mpegts_base_calc_crc32 (map.data, map.size) != 0)) {
+ gst_buffer_unmap (section->buffer, &map);
GST_WARNING_OBJECT (base, "bad crc in psi pid 0x%x", section->pid);
return FALSE;
}
+ gst_buffer_unmap (section->buffer, &map);
}
switch (section->table_id) {
@@ -1195,7 +1203,7 @@ mpegts_base_get_tags_from_sdt (MpegTSBase * base, GstStructure * sdt_info)
program = mpegts_base_get_program (base, program_number);
if (program && !program->tags) {
- program->tags = gst_tag_list_new_full (GST_TAG_ARTIST,
+ program->tags = gst_tag_list_new (GST_TAG_ARTIST,
gst_structure_get_string (service, "name"), NULL);
}
}
@@ -1236,7 +1244,7 @@ mpegts_base_get_tags_from_eit (MpegTSBase * base, GstStructure * eit_info)
gst_structure_get_uint (event, "duration", &duration);
program->event_id = event_id;
- program->tags = gst_tag_list_new_full (GST_TAG_TITLE,
+ program->tags = gst_tag_list_new (GST_TAG_TITLE,
title, GST_TAG_DURATION, duration * GST_SECOND, NULL);
}
}
@@ -1280,43 +1288,34 @@ mpegts_base_flush (MpegTSBase * base)
}
static gboolean
-mpegts_base_sink_event (GstPad * pad, GstEvent * event)
+mpegts_base_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean res = TRUE;
- MpegTSBase *base = GST_MPEGTS_BASE (gst_object_get_parent (GST_OBJECT (pad)));
+ MpegTSBase *base = GST_MPEGTS_BASE (parent);
GST_WARNING_OBJECT (base, "Got event %s",
gst_event_type_get_name (GST_EVENT_TYPE (event)));
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_NEWSEGMENT:
- {
- gboolean update;
- gdouble rate, applied_rate;
- GstFormat format;
- gint64 start, stop, position;
-
- gst_event_parse_new_segment_full (event, &update, &rate, &applied_rate,
- &format, &start, &stop, &position);
- GST_DEBUG_OBJECT (base,
- "Segment update:%d, rate:%f, applied_rate:%f, format:%s", update,
- rate, applied_rate, gst_format_get_name (format));
- GST_DEBUG_OBJECT (base,
- " start:%" G_GINT64_FORMAT ", stop:%" G_GINT64_FORMAT
- ", position:%" G_GINT64_FORMAT, start, stop, position);
- gst_segment_set_newsegment_full (&base->segment, update, rate,
- applied_rate, format, start, stop, position);
+ case GST_EVENT_SEGMENT:
+ gst_event_copy_segment (event, &base->segment);
+ gst_event_unref (event);
+ break;
+ case GST_EVENT_STREAM_START:
gst_event_unref (event);
- }
break;
case GST_EVENT_EOS:
res = gst_mpegts_base_handle_eos (base);
+ gst_event_unref (event);
+ break;
+ case GST_EVENT_CAPS:
+ /* FIXME, do something */
+ gst_event_unref (event);
break;
case GST_EVENT_FLUSH_START:
mpegts_packetizer_flush (base->packetizer);
mpegts_base_flush (base);
res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event);
- gst_event_unref (event);
break;
case GST_EVENT_FLUSH_STOP:
gst_segment_init (&base->segment, GST_FORMAT_UNDEFINED);
@@ -1324,10 +1323,8 @@ mpegts_base_sink_event (GstPad * pad, GstEvent * event)
/* Passthrough */
default:
res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event);
- gst_event_unref (event);
}
- gst_object_unref (base);
return res;
}
@@ -1363,7 +1360,7 @@ mpegts_base_push (MpegTSBase * base, MpegTSPacketizerPacket * packet,
}
static GstFlowReturn
-mpegts_base_chain (GstPad * pad, GstBuffer * buf)
+mpegts_base_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstFlowReturn res = GST_FLOW_OK;
MpegTSBase *base;
@@ -1372,7 +1369,7 @@ mpegts_base_chain (GstPad * pad, GstBuffer * buf)
MpegTSPacketizer2 *packetizer;
MpegTSPacketizerPacket packet;
- base = GST_MPEGTS_BASE (gst_object_get_parent (GST_OBJECT (pad)));
+ base = GST_MPEGTS_BASE (parent);
packetizer = base->packetizer;
if (G_UNLIKELY (base->queried_latency == FALSE)) {
@@ -1380,11 +1377,20 @@ mpegts_base_chain (GstPad * pad, GstBuffer * buf)
}
mpegts_packetizer_push (base->packetizer, buf);
- while (((pret = mpegts_packetizer_next_packet (base->packetizer,
- &packet)) != PACKET_NEED_MORE) && res == GST_FLOW_OK) {
- if (G_UNLIKELY (pret == PACKET_BAD))
+
+ while (res == GST_FLOW_OK) {
+ pret = mpegts_packetizer_next_packet (base->packetizer, &packet);
+
+ /* If we don't have enough data, return */
+ if (G_UNLIKELY (pret == PACKET_NEED_MORE))
+ break;
+
+ if (G_UNLIKELY (pret == PACKET_BAD)) {
/* bad header, skip the packet */
+ GST_DEBUG_OBJECT (base, "bad packet, skipping");
+ gst_buffer_unref (packet.buffer);
goto next;
+ }
/* base PSI data */
if (packet.payload != NULL && mpegts_base_is_psi (base, &packet)) {
@@ -1418,7 +1424,6 @@ mpegts_base_chain (GstPad * pad, GstBuffer * buf)
mpegts_packetizer_clear_packet (base->packetizer, &packet);
}
- gst_object_unref (base);
return res;
}
@@ -1426,7 +1431,7 @@ static GstFlowReturn
mpegts_base_scan (MpegTSBase * base)
{
GstFlowReturn ret;
- GstBuffer *buf;
+ GstBuffer *buf = NULL;
guint i;
gboolean done = FALSE;
MpegTSPacketizerPacketReturn pret;
@@ -1447,6 +1452,7 @@ mpegts_base_scan (MpegTSBase * base)
/* Push to packetizer */
mpegts_packetizer_push (base->packetizer, buf);
+ buf = NULL;
if (mpegts_packetizer_has_packets (base->packetizer)) {
if (base->seek_offset == -1) {
@@ -1480,7 +1486,7 @@ mpegts_base_scan (MpegTSBase * base)
/* Get the size of upstream */
format = GST_FORMAT_BYTES;
- if (!gst_pad_query_peer_duration (base->sinkpad, &format, &tmpval))
+ if (!gst_pad_peer_query_duration (base->sinkpad, format, &tmpval))
goto beach;
upstream_size = tmpval;
done = FALSE;
@@ -1496,6 +1502,7 @@ mpegts_base_scan (MpegTSBase * base)
/* Push to packetizer */
mpegts_packetizer_push (base->packetizer, buf);
+ buf = NULL;
if (mpegts_packetizer_has_packets (base->packetizer)) {
while (1) {
@@ -1545,7 +1552,7 @@ mpegts_base_loop (MpegTSBase * base)
break;
case BASE_MODE_STREAMING:
{
- GstBuffer *buf;
+ GstBuffer *buf = NULL;
GST_DEBUG ("Pulling data from %" G_GUINT64_FORMAT, base->seek_offset);
@@ -1553,8 +1560,8 @@ mpegts_base_loop (MpegTSBase * base)
100 * base->packetsize, &buf);
if (G_UNLIKELY (ret != GST_FLOW_OK))
goto error;
- base->seek_offset += GST_BUFFER_SIZE (buf);
- ret = mpegts_base_chain (base->sinkpad, buf);
+ base->seek_offset += gst_buffer_get_size (buf);
+ ret = mpegts_base_chain (base->sinkpad, GST_OBJECT_CAST (base), buf);
if (G_UNLIKELY (ret != GST_FLOW_OK))
goto error;
}
@@ -1570,16 +1577,9 @@ error:
{
const gchar *reason = gst_flow_get_name (ret);
GST_DEBUG_OBJECT (base, "Pausing task, reason %s", reason);
- if (ret == GST_FLOW_UNEXPECTED) {
- /* Push EOS downstream */
- if (!GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base,
- gst_event_new_eos ())) {
- /* If that failed, emit an error so the pipeline can be stopped */
- GST_ELEMENT_ERROR (base, STREAM, DEMUX, (NULL),
- ("got eos but no streams (yet)"));
-
- }
- } else if (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_UNEXPECTED) {
+ if (ret == GST_FLOW_EOS) {
+ GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, gst_event_new_eos ());
+ } else if (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS) {
GST_ELEMENT_ERROR (base, STREAM, FAILED,
(_("Internal data stream error.")),
("stream stopped, reason %s", reason));
@@ -1609,11 +1609,17 @@ mpegts_base_handle_seek_event (MpegTSBase * base, GstPad * pad,
if (format != GST_FORMAT_TIME)
return FALSE;
- /* First try if upstream supports seeking in TIME format */
- if (gst_pad_push_event (base->sinkpad, gst_event_ref (event))) {
- GST_DEBUG ("upstream handled SEEK event");
- gst_event_unref (event);
- return TRUE;
+ if (base->mode == BASE_MODE_PUSHING) {
+ /* First try if upstream supports seeking in TIME format */
+ if (gst_pad_push_event (base->sinkpad, gst_event_ref (event))) {
+ GST_DEBUG ("upstream handled SEEK event");
+ gst_event_unref (event);
+ return TRUE;
+ }
+ /* FIXME : Actually ... it is supported, we just need to convert
+ * the seek event to BYTES */
+ GST_ERROR ("seeking in push mode not supported");
+ goto push_mode;
}
GST_DEBUG ("seek event, rate: %f start: %" GST_TIME_FORMAT
@@ -1622,13 +1628,6 @@ mpegts_base_handle_seek_event (MpegTSBase * base, GstPad * pad,
flush = flags & GST_SEEK_FLAG_FLUSH;
- if (base->mode == BASE_MODE_PUSHING) {
- /* FIXME : Actually ... it is supported, we just need to convert
- * the seek event to BYTES */
- GST_ERROR ("seeking in push mode not supported");
- goto push_mode;
- }
-
/* stop streaming, either by flushing or by pausing the task */
base->mode = BASE_MODE_SEEKING;
if (flush) {
@@ -1645,7 +1644,7 @@ mpegts_base_handle_seek_event (MpegTSBase * base, GstPad * pad,
if (flush) {
/* send a FLUSH_STOP for the sinkpad, since we need data for seeking */
GST_DEBUG_OBJECT (base, "sending flush stop");
- gst_pad_push_event (base->sinkpad, gst_event_new_flush_stop ());
+ gst_pad_push_event (base->sinkpad, gst_event_new_flush_stop (TRUE));
/* And actually flush our pending data */
mpegts_base_flush (base);
mpegts_packetizer_flush (base->packetizer);
@@ -1674,7 +1673,7 @@ mpegts_base_handle_seek_event (MpegTSBase * base, GstPad * pad,
GST_DEBUG_OBJECT (base, "sending flush stop");
//gst_pad_push_event (base->sinkpad, gst_event_new_flush_stop ());
GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base,
- gst_event_new_flush_stop ());
+ gst_event_new_flush_stop (TRUE));
}
//else
done:
@@ -1686,38 +1685,62 @@ push_mode:
static gboolean
-mpegts_base_sink_activate (GstPad * pad)
+mpegts_base_sink_activate (GstPad * sinkpad, GstObject * parent)
{
- if (gst_pad_check_pull_range (pad)) {
- GST_DEBUG_OBJECT (pad, "activating pull");
- return gst_pad_activate_pull (pad, TRUE);
- } else {
- GST_DEBUG_OBJECT (pad, "activating push");
- return gst_pad_activate_push (pad, TRUE);
+ GstQuery *query;
+ gboolean pull_mode;
+
+ query = gst_query_new_scheduling ();
+
+ if (!gst_pad_peer_query (sinkpad, query)) {
+ gst_query_unref (query);
+ goto activate_push;
}
-}
-static gboolean
-mpegts_base_sink_activate_pull (GstPad * pad, gboolean active)
-{
- MpegTSBase *base = GST_MPEGTS_BASE (GST_OBJECT_PARENT (pad));
- if (active) {
- base->mode = BASE_MODE_SCANNING;
- base->packetizer->calculate_offset = TRUE;
- return gst_pad_start_task (pad, (GstTaskFunction) mpegts_base_loop, base);
- } else
- return gst_pad_stop_task (pad);
+ pull_mode = gst_query_has_scheduling_mode (query, GST_PAD_MODE_PULL);
+ gst_query_unref (query);
+
+ if (!pull_mode)
+ goto activate_push;
+
+ GST_DEBUG_OBJECT (sinkpad, "activating pull");
+ return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PULL, TRUE);
+
+activate_push:
+ {
+ GST_DEBUG_OBJECT (sinkpad, "activating push");
+ return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PUSH, TRUE);
+ }
}
static gboolean
-mpegts_base_sink_activate_push (GstPad * pad, gboolean active)
+mpegts_base_sink_activate_mode (GstPad * pad, GstObject * parent,
+ GstPadMode mode, gboolean active)
{
- MpegTSBase *base = GST_MPEGTS_BASE (GST_OBJECT_PARENT (pad));
- base->mode = BASE_MODE_PUSHING;
- base->packetizer->calculate_skew = TRUE;
- return TRUE;
-}
+ gboolean res;
+ MpegTSBase *base = GST_MPEGTS_BASE (parent);
+ switch (mode) {
+ case GST_PAD_MODE_PUSH:
+ base->mode = BASE_MODE_PUSHING;
+ base->packetizer->calculate_skew = TRUE;
+ res = TRUE;
+ break;
+ case GST_PAD_MODE_PULL:
+ if (active) {
+ base->mode = BASE_MODE_SCANNING;
+ base->packetizer->calculate_offset = TRUE;
+ res =
+ gst_pad_start_task (pad, (GstTaskFunction) mpegts_base_loop, base);
+ } else
+ res = gst_pad_stop_task (pad);
+ break;
+ default:
+ res = FALSE;
+ break;
+ }
+ return res;
+}
static GstStateChangeReturn
mpegts_base_change_state (GstElement * element, GstStateChange transition)
diff --git a/gst/mpegtsdemux/mpegtsbase.h b/gst/mpegtsdemux/mpegtsbase.h
index edce58d5..225d53dc 100644
--- a/gst/mpegtsdemux/mpegtsbase.h
+++ b/gst/mpegtsdemux/mpegtsbase.h
@@ -146,6 +146,7 @@ struct _MpegTSBaseClass {
/* Virtual methods */
void (*reset) (MpegTSBase *base);
GstFlowReturn (*push) (MpegTSBase *base, MpegTSPacketizerPacket *packet, MpegTSPacketizerSection * section);
+ /* takes ownership of @event */
gboolean (*push_event) (MpegTSBase *base, GstEvent * event);
/* program_started gets called when program's pmt arrives for first time */
diff --git a/gst/mpegtsdemux/mpegtspacketizer.c b/gst/mpegtsdemux/mpegtspacketizer.c
index 41ff6dd3..69e38ba0 100644
--- a/gst/mpegtsdemux/mpegtspacketizer.c
+++ b/gst/mpegtsdemux/mpegtspacketizer.c
@@ -357,6 +357,8 @@ mpegts_packetizer_parse_packet (MpegTSPacketizer2 * packetizer,
packet->data = data;
+ gst_buffer_unmap (packet->buffer, &packet->bufmap);
+
if (packet->adaptation_field_control & 0x02)
if (!mpegts_packetizer_parse_adaptation_field_control (packetizer, packet))
return FALSE;
@@ -373,6 +375,7 @@ static gboolean
mpegts_packetizer_parse_section_header (MpegTSPacketizer2 * packetizer,
MpegTSPacketizerStream * stream, MpegTSPacketizerSection * section)
{
+ GstMapInfo map;
guint8 tmp;
guint8 *data, *crc_data;
MpegTSPacketizerStreamSubtable *subtable;
@@ -382,7 +385,8 @@ mpegts_packetizer_parse_section_header (MpegTSPacketizer2 * packetizer,
/* get the section buffer, pass the ownership to the caller */
section->buffer = gst_adapter_take_buffer (stream->section_adapter,
3 + stream->section_length);
- data = GST_BUFFER_DATA (section->buffer);
+ gst_buffer_map (section->buffer, &map, GST_MAP_READ);
+ data = map.data;
GST_BUFFER_OFFSET (section->buffer) = stream->offset;
section->table_id = *data++;
@@ -418,8 +422,7 @@ mpegts_packetizer_parse_section_header (MpegTSPacketizer2 * packetizer,
goto not_applicable;
/* CRC is at the end of the section */
- crc_data =
- GST_BUFFER_DATA (section->buffer) + GST_BUFFER_SIZE (section->buffer) - 4;
+ crc_data = map.data + map.size - 4;
section->crc = GST_READ_UINT32_BE (crc_data);
if (section->version_number == subtable->version_number &&
@@ -430,6 +433,8 @@ mpegts_packetizer_parse_section_header (MpegTSPacketizer2 * packetizer,
subtable->crc = section->crc;
stream->section_table_id = section->table_id;
+ gst_buffer_unmap (section->buffer, &map);
+
return TRUE;
not_applicable:
@@ -438,6 +443,7 @@ not_applicable:
section->pid, section->table_id, section->subtable_extension,
section->current_next_indicator, section->version_number, section->crc);
section->complete = FALSE;
+ gst_buffer_unmap (section->buffer, &map);
gst_buffer_unref (section->buffer);
return TRUE;
}
@@ -491,6 +497,7 @@ mpegts_packetizer_parse_pat (MpegTSPacketizer2 * packetizer,
MpegTSPacketizerSection * section)
{
GstStructure *pat_info = NULL;
+ GstMapInfo map;
guint8 *data, *end;
guint transport_stream_id;
guint8 tmp;
@@ -501,7 +508,8 @@ mpegts_packetizer_parse_pat (MpegTSPacketizer2 * packetizer,
GstStructure *entry = NULL;
gchar *struct_name;
- data = GST_BUFFER_DATA (section->buffer);
+ gst_buffer_map (section->buffer, &map, GST_MAP_READ);
+ data = map.data;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -517,11 +525,11 @@ mpegts_packetizer_parse_pat (MpegTSPacketizer2 * packetizer,
/* skip section_number and last_section_number */
data += 2;
- pat_info = gst_structure_id_new (QUARK_PAT,
+ pat_info = gst_structure_new_id (QUARK_PAT,
QUARK_TRANSPORT_STREAM_ID, G_TYPE_UINT, transport_stream_id, NULL);
g_value_init (&entries, GST_TYPE_LIST);
/* stop at the CRC */
- end = GST_BUFFER_DATA (section->buffer) + GST_BUFFER_SIZE (section->buffer);
+ end = map.data + map.size;
while (data < end - 4) {
program_number = GST_READ_UINT16_BE (data);
data += 2;
@@ -530,7 +538,7 @@ mpegts_packetizer_parse_pat (MpegTSPacketizer2 * packetizer,
data += 2;
struct_name = g_strdup_printf ("program-%d", program_number);
- entry = gst_structure_new (struct_name, NULL);
+ entry = gst_structure_new_empty (struct_name);
g_free (struct_name);
gst_structure_id_set (entry, QUARK_PROGRAM_NUMBER, G_TYPE_UINT,
program_number, QUARK_PID, G_TYPE_UINT, pmt_pid, NULL);
@@ -544,6 +552,8 @@ mpegts_packetizer_parse_pat (MpegTSPacketizer2 * packetizer,
gst_structure_id_set_value (pat_info, QUARK_PROGRAMS, &entries);
g_value_unset (&entries);
+ gst_buffer_unmap (section->buffer, &map);
+
if (data != end - 4) {
/* FIXME: check the CRC before parsing the packet */
GST_ERROR ("at the end of PAT data != end - 4");
@@ -560,6 +570,7 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer,
MpegTSPacketizerSection * section)
{
GstStructure *pmt = NULL;
+ GstMapInfo map;
guint8 *data, *end;
guint16 program_number;
guint8 tmp;
@@ -574,15 +585,17 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer,
GstStructure *stream_info = NULL;
gchar *struct_name;
+ gst_buffer_map (section->buffer, &map, GST_MAP_READ);
+ data = map.data;
+
/* fixed header + CRC == 16 */
- if (GST_BUFFER_SIZE (section->buffer) < 16) {
+ if (map.size < 16) {
GST_WARNING ("PID %d invalid PMT size %d",
section->pid, section->section_length);
goto error;
}
- data = GST_BUFFER_DATA (section->buffer);
- end = data + GST_BUFFER_SIZE (section->buffer);
+ end = map.data + map.size;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -606,7 +619,7 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer,
program_info_length = GST_READ_UINT16_BE (data) & 0x0FFF;
data += 2;
- pmt = gst_structure_id_new (QUARK_PMT,
+ pmt = gst_structure_new_id (QUARK_PMT,
QUARK_PROGRAM_NUMBER, G_TYPE_UINT, program_number,
QUARK_PCR_PID, G_TYPE_UINT, pcr_pid,
QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number, NULL);
@@ -653,7 +666,7 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer,
}
struct_name = g_strdup_printf ("pid-%d", pid);
- stream_info = gst_structure_new (struct_name, NULL);
+ stream_info = gst_structure_new_empty (struct_name);
g_free (struct_name);
gst_structure_id_set (stream_info,
QUARK_PID, G_TYPE_UINT, pid, QUARK_STREAM_TYPE, G_TYPE_UINT,
@@ -755,6 +768,8 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer,
gst_structure_id_set_value (pmt, QUARK_STREAMS, &programs);
g_value_unset (&programs);
+ gst_buffer_unmap (section->buffer, &map);
+
g_assert (data == end - 4);
return pmt;
@@ -762,6 +777,7 @@ mpegts_packetizer_parse_pmt (MpegTSPacketizer2 * packetizer,
error:
if (pmt)
gst_structure_free (pmt);
+ gst_buffer_unmap (section->buffer, &map);
return NULL;
}
@@ -771,6 +787,7 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer2 * packetizer,
MpegTSPacketizerSection * section)
{
GstStructure *nit = NULL, *transport = NULL, *delivery_structure = NULL;
+ GstMapInfo map;
guint8 *data, *end, *entry_begin;
guint16 network_id, transport_stream_id, original_network_id;
guint tmp;
@@ -780,15 +797,18 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer2 * packetizer,
GValueArray *descriptors = NULL;
GST_DEBUG ("NIT");
+
+ gst_buffer_map (section->buffer, &map, GST_MAP_READ);
+ data = map.data;
+
/* fixed header + CRC == 16 */
- if (GST_BUFFER_SIZE (section->buffer) < 23) {
+ if (map.size < 23) {
GST_WARNING ("PID %d invalid NIT size %d",
section->pid, section->section_length);
goto error;
}
- data = GST_BUFFER_DATA (section->buffer);
- end = data + GST_BUFFER_SIZE (section->buffer);
+ end = map.data + map.size;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -813,7 +833,7 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer2 * packetizer,
descriptors_loop_length = GST_READ_UINT16_BE (data) & 0x0FFF;
data += 2;
- nit = gst_structure_id_new (QUARK_NIT,
+ nit = gst_structure_new_id (QUARK_NIT,
QUARK_NETWORK_ID, G_TYPE_UINT, network_id,
QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number,
QUARK_CURRENT_NEXT_INDICATOR, G_TYPE_UINT,
@@ -891,7 +911,7 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer2 * packetizer,
data += 2;
transport_name = g_strdup_printf ("transport-%d", transport_stream_id);
- transport = gst_structure_new (transport_name, NULL);
+ transport = gst_structure_new_empty (transport_name);
g_free (transport_name);
gst_structure_id_set (transport,
QUARK_TRANSPORT_STREAM_ID, G_TYPE_UINT, transport_stream_id,
@@ -1376,15 +1396,16 @@ mpegts_packetizer_parse_nit (MpegTSPacketizer2 * packetizer,
}
if (data != end - 4) {
- GST_WARNING ("PID %d invalid NIT parsed %d length %d",
- section->pid, (gint) (data - GST_BUFFER_DATA (section->buffer)),
- GST_BUFFER_SIZE (section->buffer));
+ GST_WARNING ("PID %d invalid NIT parsed %d length %" G_GSIZE_FORMAT,
+ section->pid, (gint) (data - map.data), map.size);
goto error;
}
gst_structure_id_set_value (nit, QUARK_TRANSPORTS, &transports);
g_value_unset (&transports);
+ gst_buffer_unmap (section->buffer, &map);
+
GST_DEBUG ("NIT %" GST_PTR_FORMAT, nit);
return nit;
@@ -1393,6 +1414,8 @@ error:
if (nit)
gst_structure_free (nit);
+ gst_buffer_unmap (section->buffer, &map);
+
if (GST_VALUE_HOLDS_LIST (&transports))
g_value_unset (&transports);
@@ -1403,6 +1426,7 @@ GstStructure *
mpegts_packetizer_parse_sdt (MpegTSPacketizer2 * packetizer,
MpegTSPacketizerSection * section)
{
+ GstMapInfo map;
GstStructure *sdt = NULL, *service = NULL;
guint8 *data, *end, *entry_begin;
guint16 transport_stream_id, original_network_id, service_id;
@@ -1416,15 +1440,18 @@ mpegts_packetizer_parse_sdt (MpegTSPacketizer2 * packetizer,
GValue service_value = { 0 };
GST_DEBUG ("SDT");
+
+ gst_buffer_map (section->buffer, &map, GST_MAP_READ);
+ data = map.data;
+
/* fixed header + CRC == 16 */
- if (GST_BUFFER_SIZE (section->buffer) < 14) {
+ if (map.size < 14) {
GST_WARNING ("PID %d invalid SDT size %d",
section->pid, section->section_length);
goto error;
}
- data = GST_BUFFER_DATA (section->buffer);
- end = data + GST_BUFFER_SIZE (section->buffer);
+ end = map.data + map.size;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -1452,7 +1479,7 @@ mpegts_packetizer_parse_sdt (MpegTSPacketizer2 * packetizer,
/* skip reserved byte */
data += 1;
- sdt = gst_structure_id_new (QUARK_SDT,
+ sdt = gst_structure_new_id (QUARK_SDT,
QUARK_TRANSPORT_STREAM_ID, G_TYPE_UINT, transport_stream_id,
QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number,
QUARK_CURRENT_NEXT_INDICATOR, G_TYPE_UINT,
@@ -1491,7 +1518,7 @@ mpegts_packetizer_parse_sdt (MpegTSPacketizer2 * packetizer,
/* TODO send tag event down relevant pad for channel name and provider */
service_name = g_strdup_printf ("service-%d", service_id);
- service = gst_structure_new (service_name, NULL);
+ service = gst_structure_new_empty (service_name);
g_free (service_name);
if (descriptors_loop_length) {
@@ -1581,21 +1608,24 @@ mpegts_packetizer_parse_sdt (MpegTSPacketizer2 * packetizer,
}
if (data != end - 4) {
- GST_WARNING ("PID %d invalid SDT parsed %d length %d",
- section->pid, (gint) (data - GST_BUFFER_DATA (section->buffer)),
- GST_BUFFER_SIZE (section->buffer));
+ GST_WARNING ("PID %d invalid SDT parsed %d length %" G_GSIZE_FORMAT,
+ section->pid, (gint) (data - map.data), map.size);
goto error;
}
gst_structure_id_set_value (sdt, QUARK_SERVICES, &services);
g_value_unset (&services);
+ gst_buffer_unmap (section->buffer, &map);
+
return sdt;
error:
if (sdt)
gst_structure_free (sdt);
+ gst_buffer_unmap (section->buffer, &map);
+
if (GST_VALUE_HOLDS_LIST (&services))
g_value_unset (&services);
@@ -1614,6 +1644,7 @@ mpegts_packetizer_parse_eit (MpegTSPacketizer2 * packetizer,
guint16 mjd;
guint year, month, day, hour, minute, second;
guint duration;
+ GstMapInfo map;
guint8 *data, *end, *duration_ptr, *utc_ptr;
guint16 descriptors_loop_length;
GValue events = { 0 };
@@ -1622,15 +1653,17 @@ mpegts_packetizer_parse_eit (MpegTSPacketizer2 * packetizer,
gchar *event_name;
guint tmp;
+ gst_buffer_map (section->buffer, &map, GST_MAP_READ);
+ data = map.data;
+
/* fixed header + CRC == 16 */
- if (GST_BUFFER_SIZE (section->buffer) < 18) {
+ if (map.size < 18) {
GST_WARNING ("PID %d invalid EIT size %d",
section->pid, section->section_length);
goto error;
}
- data = GST_BUFFER_DATA (section->buffer);
- end = data + GST_BUFFER_SIZE (section->buffer);
+ end = map.data + map.size;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -1661,7 +1694,7 @@ mpegts_packetizer_parse_eit (MpegTSPacketizer2 * packetizer,
last_table_id = *data;
data += 1;
- eit = gst_structure_id_new (QUARK_EIT,
+ eit = gst_structure_new_id (QUARK_EIT,
QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number,
QUARK_CURRENT_NEXT_INDICATOR, G_TYPE_UINT,
section->current_next_indicator, QUARK_SERVICE_ID, G_TYPE_UINT,
@@ -2040,15 +2073,16 @@ mpegts_packetizer_parse_eit (MpegTSPacketizer2 * packetizer,
}
if (data != end - 4) {
- GST_WARNING ("PID %d invalid EIT parsed %d length %d",
- section->pid, (gint) (data - GST_BUFFER_DATA (section->buffer)),
- GST_BUFFER_SIZE (section->buffer));
+ GST_WARNING ("PID %d invalid EIT parsed %d length %" G_GSIZE_FORMAT,
+ section->pid, (gint) (data - map.data), map.size);
goto error;
}
gst_structure_id_set_value (eit, QUARK_EVENTS, &events);
g_value_unset (&events);
+ gst_buffer_unmap (section->buffer, &map);
+
GST_DEBUG ("EIT %" GST_PTR_FORMAT, eit);
return eit;
@@ -2057,6 +2091,8 @@ error:
if (eit)
gst_structure_free (eit);
+ gst_buffer_unmap (section->buffer, &map);
+
if (GST_VALUE_HOLDS_LIST (&events))
g_value_unset (&events);
@@ -2070,18 +2106,22 @@ mpegts_packetizer_parse_tdt (MpegTSPacketizer2 * packetizer,
GstStructure *tdt = NULL;
guint16 mjd;
guint year, month, day, hour, minute, second;
+ GstMapInfo map;
guint8 *data, *end, *utc_ptr;
GST_DEBUG ("TDT");
+
+ gst_buffer_map (section->buffer, &map, GST_MAP_READ);
+ data = map.data;
+
/* length always 8 */
- if (G_UNLIKELY (GST_BUFFER_SIZE (section->buffer) != 8)) {
+ if (G_UNLIKELY (map.size != 8)) {
GST_WARNING ("PID %d invalid TDT size %d",
section->pid, section->section_length);
goto error;
}
- data = GST_BUFFER_DATA (section->buffer);
- end = data + GST_BUFFER_SIZE (section->buffer);
+ end = map.data + map.size;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -2122,12 +2162,16 @@ mpegts_packetizer_parse_tdt (MpegTSPacketizer2 * packetizer,
"hour", G_TYPE_UINT, hour,
"minute", G_TYPE_UINT, minute, "second", G_TYPE_UINT, second, NULL);
+ gst_buffer_unmap (section->buffer, &map);
+
return tdt;
error:
if (tdt)
gst_structure_free (tdt);
+ gst_buffer_unmap (section->buffer, &map);
+
return NULL;
}
@@ -2164,12 +2208,11 @@ mpegts_packetizer_flush (MpegTSPacketizer2 * packetizer)
int i;
for (i = 0; i < 8192; i++) {
if (packetizer->streams[i]) {
- gst_adapter_flush (packetizer->streams[i]->section_adapter,
- packetizer->streams[i]->section_adapter->size);
+ gst_adapter_clear (packetizer->streams[i]->section_adapter);
}
}
}
- gst_adapter_flush (packetizer->adapter, packetizer->adapter->size);
+ gst_adapter_clear (packetizer->adapter);
packetizer->offset = 0;
packetizer->empty = TRUE;
@@ -2205,8 +2248,8 @@ mpegts_packetizer_push (MpegTSPacketizer2 * packetizer, GstBuffer * buffer)
packetizer->offset = GST_BUFFER_OFFSET (buffer);
}
- GST_DEBUG ("Pushing %u byte from offset %" G_GUINT64_FORMAT,
- GST_BUFFER_SIZE (buffer), GST_BUFFER_OFFSET (buffer));
+ GST_DEBUG ("Pushing %" G_GSIZE_FORMAT " byte from offset %" G_GUINT64_FORMAT,
+ gst_buffer_get_size (buffer), GST_BUFFER_OFFSET (buffer));
gst_adapter_push (packetizer->adapter, buffer);
}
@@ -2225,7 +2268,8 @@ mpegts_try_discover_packet_size (MpegTSPacketizer2 * packetizer)
dest = g_malloc (MPEGTS_MAX_PACKETSIZE * 4);
/* wait for 3 sync bytes */
- while (packetizer->adapter->size >= MPEGTS_MAX_PACKETSIZE * 4) {
+ while (gst_adapter_available (packetizer->adapter) >=
+ MPEGTS_MAX_PACKETSIZE * 4) {
/* check for sync bytes */
gst_adapter_copy (packetizer->adapter, dest, 0, MPEGTS_MAX_PACKETSIZE * 4);
@@ -2290,7 +2334,7 @@ mpegts_packetizer_has_packets (MpegTSPacketizer2 * packetizer)
if (!mpegts_try_discover_packet_size (packetizer))
return FALSE;
}
- return packetizer->adapter->size >= packetizer->packet_size;
+ return gst_adapter_available (packetizer->adapter) >= packetizer->packet_size;
}
MpegTSPacketizerPacketReturn
@@ -2306,16 +2350,24 @@ mpegts_packetizer_next_packet (MpegTSPacketizer2 * packetizer,
return PACKET_NEED_MORE;
}
- while ((avail = packetizer->adapter->size) >= packetizer->packet_size) {
+ while ((avail =
+ gst_adapter_available (packetizer->adapter)) >=
+ packetizer->packet_size) {
+ guint i;
+ GstBuffer *tmpbuf;
+ guint8 *bufdata;
+
packet->buffer = gst_adapter_take_buffer (packetizer->adapter,
packetizer->packet_size);
+ gst_buffer_map (packet->buffer, &packet->bufmap, GST_MAP_READ);
+
+ bufdata = packet->data_start = packet->bufmap.data;
+
/* M2TS packets don't start with the sync byte, all other variants do */
- if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE) {
- packet->data_start = GST_BUFFER_DATA (packet->buffer) + 4;
- } else {
- packet->data_start = GST_BUFFER_DATA (packet->buffer);
- }
+ if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE)
+ packet->data_start += 4;
+
/* ALL mpeg-ts variants contain 188 bytes of data. Those with bigger packet
* sizes contain either extra data (timesync, FEC, ..) either before or after
* the data */
@@ -2323,52 +2375,51 @@ mpegts_packetizer_next_packet (MpegTSPacketizer2 * packetizer,
GST_BUFFER_OFFSET (packet->buffer) = packet->offset = packetizer->offset;
GST_DEBUG ("offset %" G_GUINT64_FORMAT, packet->offset);
packetizer->offset += packetizer->packet_size;
- GST_MEMDUMP ("buffer", GST_BUFFER_DATA (packet->buffer), 16);
+ GST_MEMDUMP ("buffer", bufdata, 16);
GST_MEMDUMP ("data_start", packet->data_start, 16);
GST_BUFFER_TIMESTAMP (packet->buffer) =
gst_adapter_prev_timestamp (packetizer->adapter, NULL);
/* Check sync byte */
- if (G_UNLIKELY (packet->data_start[0] != 0x47)) {
- guint i;
- GstBuffer *tmpbuf;
-
- GST_LOG ("Lost sync %d", packetizer->packet_size);
- /* Find the 0x47 in the buffer */
- for (i = 0; i < packetizer->packet_size; i++)
- if (GST_BUFFER_DATA (packet->buffer)[i] == 0x47)
- break;
- if (G_UNLIKELY (i == packetizer->packet_size)) {
- GST_ERROR ("REALLY lost the sync");
- gst_buffer_unref (packet->buffer);
- goto done;
- }
+ if (G_LIKELY (packet->data_start[0] == 0x47))
+ goto got_valid_packet;
- if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE) {
- if (i >= 4)
- i -= 4;
- else
- i += 188;
- }
+ GST_LOG ("Lost sync %d", packetizer->packet_size);
- /* Pop out the remaining data... */
- GST_BUFFER_DATA (packet->buffer) += i;
- GST_BUFFER_SIZE (packet->buffer) -= i;
- GST_BUFFER_OFFSET (packet->buffer) += i;
- tmpbuf =
- gst_adapter_take_buffer (packetizer->adapter,
- packetizer->adapter->size);
- /* ... and push everything back in */
- gst_adapter_push (packetizer->adapter, packet->buffer);
- gst_adapter_push (packetizer->adapter, tmpbuf);
- continue;
+ /* Find the 0x47 in the buffer */
+ for (i = 0; i < packetizer->packet_size; i++)
+ if (bufdata[i] == 0x47)
+ break;
+ gst_buffer_unmap (packet->buffer, &packet->bufmap);
+ if (G_UNLIKELY (i == packetizer->packet_size)) {
+ GST_ERROR ("REALLY lost the sync");
+ gst_buffer_unref (packet->buffer);
+ goto done;
}
- return mpegts_packetizer_parse_packet (packetizer, packet);
+ if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE) {
+ if (i >= 4)
+ i -= 4;
+ else
+ i += 188;
+ }
+
+ /* Pop out the remaining data... */
+ gst_buffer_resize (packet->buffer, i, packet->bufmap.size - i);
+ GST_BUFFER_OFFSET (packet->buffer) += i;
+ tmpbuf =
+ gst_adapter_take_buffer (packetizer->adapter,
+ gst_adapter_available (packetizer->adapter));
+ /* ... and push everything back in */
+ gst_adapter_push (packetizer->adapter, packet->buffer);
+ gst_adapter_push (packetizer->adapter, tmpbuf);
}
done:
return PACKET_NEED_MORE;
+
+got_valid_packet:
+ return mpegts_packetizer_parse_packet (packetizer, packet);
}
MpegTSPacketizerPacketReturn
@@ -2422,14 +2473,15 @@ mpegts_packetizer_push_section (MpegTSPacketizer2 * packetizer,
if (packet->pid == 0x14) {
table_id = data[0];
section->section_length = GST_READ_UINT24_BE (data) & 0x000FFF;
- if (data - GST_BUFFER_DATA (packet->buffer) + section->section_length + 3 >
- GST_BUFFER_SIZE (packet->buffer)) {
+ if (data - packet->bufmap.data + section->section_length + 3 >
+ packet->bufmap.size) {
GST_WARNING ("PID %dd PSI section length extends past the end "
"of the buffer", packet->pid);
goto out;
}
- section->buffer = gst_buffer_create_sub (packet->buffer,
- data - GST_BUFFER_DATA (packet->buffer), section->section_length + 3);
+ section->buffer =
+ gst_buffer_copy_region (packet->buffer, GST_BUFFER_COPY_ALL,
+ data - packet->bufmap.data, section->section_length + 3);
section->table_id = table_id;
section->complete = TRUE;
res = TRUE;
@@ -2440,8 +2492,8 @@ mpegts_packetizer_push_section (MpegTSPacketizer2 * packetizer,
/* create a sub buffer from the start of the section (table_id and
* section_length included) to the end */
- sub_buf = gst_buffer_create_sub (packet->buffer,
- data - GST_BUFFER_DATA (packet->buffer), packet->data_end - data);
+ sub_buf = gst_buffer_copy_region (packet->buffer, GST_BUFFER_COPY_ALL,
+ data - packet->bufmap.data, packet->data_end - data);
stream = packetizer->streams[packet->pid];
if (stream == NULL) {
@@ -2465,10 +2517,12 @@ mpegts_packetizer_push_section (MpegTSPacketizer2 * packetizer,
if (stream->continuity_counter != CONTINUITY_UNSET) {
GST_DEBUG
("PID %d table_id %d sub_table_extension %d payload_unit_start_indicator set but section "
- "not complete (last_continuity: %d continuity: %d sec len %d buffer %d avail %d",
- packet->pid, table_id, subtable_extension, stream->continuity_counter,
- packet->continuity_counter, section_length, GST_BUFFER_SIZE (sub_buf),
- stream->section_adapter->size);
+ "not complete (last_continuity: %d continuity: %d sec len %d buffer %"
+ G_GSIZE_FORMAT " avail %" G_GSIZE_FORMAT, packet->pid, table_id,
+ subtable_extension, stream->continuity_counter,
+ packet->continuity_counter, section_length,
+ gst_buffer_get_size (sub_buf),
+ gst_adapter_available (stream->section_adapter));
mpegts_packetizer_clear_section (packetizer, stream);
} else {
GST_DEBUG
@@ -2507,9 +2561,10 @@ mpegts_packetizer_push_section (MpegTSPacketizer2 * packetizer,
/* >= as sections can be padded and padding is not included in
* section_length */
- if (stream->section_adapter->size >= stream->section_length + 3) {
- res = mpegts_packetizer_parse_section_header (packetizer,
- stream, section);
+ if (gst_adapter_available (stream->section_adapter) >=
+ stream->section_length + 3) {
+ res =
+ mpegts_packetizer_parse_section_header (packetizer, stream, section);
/* flush stuffing bytes */
mpegts_packetizer_clear_section (packetizer, stream);
diff --git a/gst/mpegtsdemux/mpegtspacketizer.h b/gst/mpegtsdemux/mpegtspacketizer.h
index 418da084..f588cd35 100644
--- a/gst/mpegtsdemux/mpegtspacketizer.h
+++ b/gst/mpegtsdemux/mpegtspacketizer.h
@@ -124,6 +124,8 @@ typedef struct
guint8 continuity_counter;
guint8 *payload;
+ GstMapInfo bufmap;
+
guint8 *data_start;
guint8 *data_end;
guint8 *data;
@@ -176,7 +178,7 @@ MpegTSPacketizerPacketReturn mpegts_packetizer_next_packet (MpegTSPacketizer2 *p
MpegTSPacketizerPacketReturn
mpegts_packetizer_process_next_packet(MpegTSPacketizer2 * packetizer);
void mpegts_packetizer_clear_packet (MpegTSPacketizer2 *packetizer,
- MpegTSPacketizerPacket *packet);
+ MpegTSPacketizerPacket *packet);
void mpegts_packetizer_remove_stream(MpegTSPacketizer2 *packetizer,
gint16 pid);
diff --git a/gst/mpegtsdemux/mpegtsparse.c b/gst/mpegtsdemux/mpegtsparse.c
index 37b6da6e..b66efcc0 100644
--- a/gst/mpegtsdemux/mpegtsparse.c
+++ b/gst/mpegtsdemux/mpegtsparse.c
@@ -70,13 +70,13 @@ struct _MpegTSParsePad
};
static GstStaticPadTemplate src_template =
-GST_STATIC_PAD_TEMPLATE ("src%d", GST_PAD_SRC,
+GST_STATIC_PAD_TEMPLATE ("src_%u", GST_PAD_SRC,
GST_PAD_REQUEST,
GST_STATIC_CAPS ("video/mpegts, " "systemstream = (boolean) true ")
);
static GstStaticPadTemplate program_template =
-GST_STATIC_PAD_TEMPLATE ("program_%d", GST_PAD_SRC,
+GST_STATIC_PAD_TEMPLATE ("program_%u", GST_PAD_SRC,
GST_PAD_SOMETIMES,
GST_STATIC_CAPS ("video/mpegts, " "systemstream = (boolean) true ")
);
@@ -113,27 +113,14 @@ static void mpegts_parse_reset_selected_programs (MpegTSParse2 * parse,
static void mpegts_parse_pad_removed (GstElement * element, GstPad * pad);
static GstPad *mpegts_parse_request_new_pad (GstElement * element,
- GstPadTemplate * templ, const gchar * name);
+ GstPadTemplate * templ, const gchar * name, const GstCaps * caps);
static void mpegts_parse_release_pad (GstElement * element, GstPad * pad);
-static gboolean mpegts_parse_src_pad_query (GstPad * pad, GstQuery * query);
+static gboolean mpegts_parse_src_pad_query (GstPad * pad, GstObject * parent,
+ GstQuery * query);
static gboolean push_event (MpegTSBase * base, GstEvent * event);
-GST_BOILERPLATE (MpegTSParse2, mpegts_parse, MpegTSBase, GST_TYPE_MPEGTS_BASE);
-
-static void
-mpegts_parse_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_static_pad_template (element_class, &src_template);
- gst_element_class_add_static_pad_template (element_class, &program_template);
-
- gst_element_class_set_details_simple (element_class,
- "MPEG transport stream parser", "Codec/Parser",
- "Parses MPEG2 transport streams",
- "Alessandro Decina <alessandro@nnva.org>, "
- "Zaheer Abbas Merali <zaheerabbas at merali dot org>");
-}
+#define mpegts_parse_parent_class parent_class
+G_DEFINE_TYPE (MpegTSParse2, mpegts_parse, GST_TYPE_MPEGTS_BASE);
static void
mpegts_parse_class_init (MpegTSParse2Class * klass)
@@ -147,6 +134,17 @@ mpegts_parse_class_init (MpegTSParse2Class * klass)
element_class->request_new_pad = mpegts_parse_request_new_pad;
element_class->release_pad = mpegts_parse_release_pad;
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&src_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&program_template));
+
+ gst_element_class_set_details_simple (element_class,
+ "MPEG transport stream parser", "Codec/Parser",
+ "Parses MPEG2 transport streams",
+ "Alessandro Decina <alessandro@nnva.org>, "
+ "Zaheer Abbas Merali <zaheerabbas at merali dot org>");
+
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->set_property = mpegts_parse_set_property;
gobject_class->get_property = mpegts_parse_get_property;
@@ -166,7 +164,7 @@ mpegts_parse_class_init (MpegTSParse2Class * klass)
}
static void
-mpegts_parse_init (MpegTSParse2 * parse, MpegTSParse2Class * klass)
+mpegts_parse_init (MpegTSParse2 * parse)
{
parse->need_sync_program_pads = FALSE;
parse->program_numbers = g_strdup ("");
@@ -224,7 +222,7 @@ mpegts_parse_activate_program (MpegTSParse2 * parse,
gchar *pad_name;
pad_name =
- g_strdup_printf ("program_%d",
+ g_strdup_printf ("program_%u",
((MpegTSBaseProgram *) program)->program_number);
tspad = mpegts_parse_create_tspad (parse, pad_name);
@@ -251,6 +249,9 @@ push_event (MpegTSBase * base, GstEvent * event)
gst_pad_push_event (pad, event);
}
}
+
+ gst_event_unref (event);
+
return TRUE;
}
@@ -427,7 +428,7 @@ mpegts_parse_pad_removed (GstElement * element, GstPad * pad)
static GstPad *
mpegts_parse_request_new_pad (GstElement * element, GstPadTemplate * template,
- const gchar * unused)
+ const gchar * unused, const GstCaps * caps)
{
MpegTSParse2 *parse;
gchar *name;
@@ -439,11 +440,12 @@ mpegts_parse_request_new_pad (GstElement * element, GstPadTemplate * template,
parse = GST_MPEGTS_PARSE (element);
GST_OBJECT_LOCK (element);
- name = g_strdup_printf ("src%d", parse->req_pads++);
+ name = g_strdup_printf ("src_%u", parse->req_pads++);
GST_OBJECT_UNLOCK (element);
pad = mpegts_parse_create_tspad (parse, name)->pad;
gst_pad_set_active (pad, TRUE);
+ gst_pad_push_event (pad, gst_event_new_stream_start ());
gst_element_add_pad (element, pad);
g_free (name);
@@ -509,8 +511,7 @@ mpegts_parse_tspad_push (MpegTSParse2 * parse, MpegTSParsePad * tspad,
MpegTSBaseProgram *bp = (MpegTSBaseProgram *) tspad->program;
pad_pids = bp->streams;
if (bp->tags) {
- gst_element_found_tags_for_pad (GST_ELEMENT_CAST (parse), tspad->pad,
- bp->tags);
+ gst_pad_push_event (tspad->pad, gst_event_new_tag (bp->tags));
bp->tags = NULL;
}
} else {
@@ -562,9 +563,7 @@ mpegts_parse_push (MpegTSBase * base, MpegTSPacketizerPacket * packet,
mpegts_parse_sync_program_pads (parse);
pid = packet->pid;
- buffer = gst_buffer_make_metadata_writable (packet->buffer);
- /* we have the same caps on all the src pads */
- gst_buffer_set_caps (buffer, base->packetizer->caps);
+ buffer = packet->buffer;
GST_OBJECT_LOCK (parse);
/* clear tspad->pushed on pads */
@@ -672,9 +671,9 @@ mpegts_parse_program_stopped (MpegTSBase * base, MpegTSBaseProgram * program)
}
static gboolean
-mpegts_parse_src_pad_query (GstPad * pad, GstQuery * query)
+mpegts_parse_src_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
{
- MpegTSParse2 *parse = GST_MPEGTS_PARSE (gst_pad_get_parent (pad));
+ MpegTSParse2 *parse = GST_MPEGTS_PARSE (parent);
gboolean res;
switch (GST_QUERY_TYPE (query)) {
@@ -697,9 +696,8 @@ mpegts_parse_src_pad_query (GstPad * pad, GstQuery * query)
break;
}
default:
- res = gst_pad_query_default (pad, query);
+ res = gst_pad_query_default (pad, parent, query);
}
- gst_object_unref (parse);
return res;
}
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
index 96eb75cd..647611e2 100644
--- a/gst/mpegtsdemux/tsdemux.c
+++ b/gst/mpegtsdemux/tsdemux.c
@@ -73,13 +73,13 @@
#define SEGMENT_FORMAT "[format:%s, rate:%f, start:%" \
GST_TIME_FORMAT", stop:%"GST_TIME_FORMAT", time:%"GST_TIME_FORMAT \
- ", accum:%"GST_TIME_FORMAT", last_stop:%"GST_TIME_FORMAT \
+ ", base:%"GST_TIME_FORMAT", position:%"GST_TIME_FORMAT \
", duration:%"GST_TIME_FORMAT"]"
#define SEGMENT_ARGS(a) gst_format_get_name((a).format), (a).rate, \
GST_TIME_ARGS((a).start), GST_TIME_ARGS((a).stop), \
- GST_TIME_ARGS((a).time), GST_TIME_ARGS((a).accum), \
- GST_TIME_ARGS((a).last_stop), GST_TIME_ARGS((a).duration)
+ GST_TIME_ARGS((a).time), GST_TIME_ARGS((a).base), \
+ GST_TIME_ARGS((a).position), GST_TIME_ARGS((a).duration)
GST_DEBUG_CATEGORY_STATIC (ts_demux_debug);
@@ -134,8 +134,6 @@ struct _TSDemuxStream
guint current_size;
/* Current data to be pushed out */
- GstBufferList *current;
- GstBufferListIterator *currentit;
GList *currentlist;
/* Current PTS/DTS for this stream */
@@ -165,7 +163,7 @@ struct _TSDemuxStream
"video/x-dirac;" \
"video/x-wmv," \
"wmvversion = (int) 3, " \
- "format = (fourcc) WVC1" \
+ "format = (string) WVC1" \
)
#define AUDIO_CAPS \
@@ -252,13 +250,9 @@ gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream);
static void gst_ts_demux_stream_flush (TSDemuxStream * stream);
static gboolean push_event (MpegTSBase * base, GstEvent * event);
-static void _extra_init (GType type);
-
-GST_BOILERPLATE_FULL (GstTSDemux, gst_ts_demux, MpegTSBase,
- GST_TYPE_MPEGTS_BASE, _extra_init);
static void
-_extra_init (GType type)
+_extra_init (void)
{
QUARK_TSDEMUX = g_quark_from_string ("tsdemux");
QUARK_PID = g_quark_from_string ("pid");
@@ -269,29 +263,15 @@ _extra_init (GType type)
QUARK_OFFSET = g_quark_from_string ("offset");
}
-static void
-gst_ts_demux_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_static_pad_template (element_class, &video_template);
- gst_element_class_add_static_pad_template (element_class, &audio_template);
- gst_element_class_add_static_pad_template (element_class,
- &subpicture_template);
- gst_element_class_add_static_pad_template (element_class, &private_template);
-
- gst_element_class_set_details_simple (element_class,
- "MPEG transport stream demuxer",
- "Codec/Demuxer",
- "Demuxes MPEG2 transport streams",
- "Zaheer Abbas Merali <zaheerabbas at merali dot org>\n"
- "Edward Hervey <edward.hervey@collabora.co.uk>");
-}
+#define gst_ts_demux_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstTSDemux, gst_ts_demux, GST_TYPE_MPEGTS_BASE,
+ _extra_init ());
static void
gst_ts_demux_class_init (GstTSDemuxClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *element_class;
MpegTSBaseClass *ts_class;
gobject_class = G_OBJECT_CLASS (klass);
@@ -308,6 +288,22 @@ gst_ts_demux_class_init (GstTSDemuxClass * klass)
"Emit messages for every pcr/opcr/pts/dts", FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ element_class = GST_ELEMENT_CLASS (klass);
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&video_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&audio_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&subpicture_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&private_template));
+
+ gst_element_class_set_details_simple (element_class,
+ "MPEG transport stream demuxer",
+ "Codec/Demuxer",
+ "Demuxes MPEG2 transport streams",
+ "Zaheer Abbas Merali <zaheerabbas at merali dot org>\n"
+ "Edward Hervey <edward.hervey@collabora.co.uk>");
ts_class = GST_MPEGTS_BASE_CLASS (klass);
ts_class->reset = GST_DEBUG_FUNCPTR (gst_ts_demux_reset);
@@ -341,7 +337,7 @@ gst_ts_demux_reset (MpegTSBase * base)
}
static void
-gst_ts_demux_init (GstTSDemux * demux, GstTSDemuxClass * klass)
+gst_ts_demux_init (GstTSDemux * demux)
{
GST_MPEGTS_BASE (demux)->stream_size = sizeof (TSDemuxStream);
@@ -387,28 +383,15 @@ gst_ts_demux_get_property (GObject * object, guint prop_id,
}
}
-static const GstQueryType *
-gst_ts_demux_srcpad_query_types (GstPad * pad)
-{
- static const GstQueryType query_types[] = {
- GST_QUERY_DURATION,
- GST_QUERY_SEEKING,
- GST_QUERY_LATENCY,
- 0
- };
-
- return query_types;
-}
-
static gboolean
-gst_ts_demux_srcpad_query (GstPad * pad, GstQuery * query)
+gst_ts_demux_srcpad_query (GstPad * pad, GstObject * parent, GstQuery * query)
{
gboolean res = TRUE;
GstFormat format;
GstTSDemux *demux;
MpegTSBase *base;
- demux = GST_TS_DEMUX (gst_pad_get_parent (pad));
+ demux = GST_TS_DEMUX (parent);
base = GST_MPEGTS_BASE (demux);
switch (GST_QUERY_TYPE (query)) {
@@ -421,7 +404,7 @@ gst_ts_demux_srcpad_query (GstPad * pad, GstQuery * query)
gint64 val;
format = GST_FORMAT_BYTES;
- if (!gst_pad_query_peer_duration (base->sinkpad, &format, &val))
+ if (!gst_pad_peer_query_duration (base->sinkpad, format, &val))
res = FALSE;
else {
GstClockTime dur =
@@ -485,10 +468,9 @@ gst_ts_demux_srcpad_query (GstPad * pad, GstQuery * query)
break;
}
default:
- res = gst_pad_query_default (pad, query);
+ res = gst_pad_query_default (pad, parent, query);
}
- gst_object_unref (demux);
return res;
}
@@ -535,7 +517,7 @@ gst_ts_demux_do_seek (MpegTSBase * base, GstEvent * event)
GST_DEBUG ("seeksegment before set_seek " SEGMENT_FORMAT,
SEGMENT_ARGS (seeksegment));
- gst_segment_set_seek (&seeksegment, rate, format, flags, start_type, start,
+ gst_segment_do_seek (&seeksegment, rate, format, flags, start_type, start,
stop_type, stop, &update);
GST_DEBUG ("seeksegment after set_seek " SEGMENT_FORMAT,
@@ -561,7 +543,7 @@ gst_ts_demux_do_seek (MpegTSBase * base, GstEvent * event)
if (demux->segment.flags & GST_SEEK_FLAG_SEGMENT) {
gst_element_post_message (GST_ELEMENT_CAST (demux),
gst_message_new_segment_start (GST_OBJECT_CAST (demux),
- demux->segment.format, demux->segment.last_stop));
+ demux->segment.format, demux->segment.stop));
}
done:
@@ -569,10 +551,10 @@ done:
}
static gboolean
-gst_ts_demux_srcpad_event (GstPad * pad, GstEvent * event)
+gst_ts_demux_srcpad_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean res = TRUE;
- GstTSDemux *demux = GST_TS_DEMUX (gst_pad_get_parent (pad));
+ GstTSDemux *demux = GST_TS_DEMUX (parent);
GST_DEBUG_OBJECT (pad, "Got event %s",
gst_event_type_get_name (GST_EVENT_TYPE (event)));
@@ -585,10 +567,9 @@ gst_ts_demux_srcpad_event (GstPad * pad, GstEvent * event)
gst_event_unref (event);
break;
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
}
- gst_object_unref (demux);
return res;
}
@@ -598,8 +579,10 @@ push_event (MpegTSBase * base, GstEvent * event)
GstTSDemux *demux = (GstTSDemux *) base;
GList *tmp;
- if (G_UNLIKELY (demux->program == NULL))
+ if (G_UNLIKELY (demux->program == NULL)) {
+ gst_event_unref (event);
return FALSE;
+ }
for (tmp = demux->program->stream_list; tmp; tmp = tmp->next) {
TSDemuxStream *stream = (TSDemuxStream *) tmp->data;
@@ -609,6 +592,8 @@ push_event (MpegTSBase * base, GstEvent * event)
}
}
+ gst_event_unref (event);
+
return TRUE;
}
@@ -687,7 +672,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
GST_LOG ("ac3 audio");
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-ac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-ac3");
g_free (desc);
break;
}
@@ -698,7 +683,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
GST_LOG ("ac3 audio");
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-eac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-eac3");
g_free (desc);
break;
}
@@ -708,7 +693,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
GST_LOG ("teletext");
template = gst_static_pad_template_get (&private_template);
name = g_strdup_printf ("private_%04x", bstream->pid);
- caps = gst_caps_new_simple ("private/teletext", NULL);
+ caps = gst_caps_new_empty_simple ("private/teletext");
g_free (desc);
break;
}
@@ -719,7 +704,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
GST_LOG ("subtitling");
template = gst_static_pad_template_get (&private_template);
name = g_strdup_printf ("private_%04x", bstream->pid);
- caps = gst_caps_new_simple ("subpicture/x-dvb", NULL);
+ caps = gst_caps_new_empty_simple ("subpicture/x-dvb");
g_free (desc);
break;
}
@@ -735,7 +720,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
GST_LOG ("subtitling");
template = gst_static_pad_template_get (&private_template);
name = g_strdup_printf ("private_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-dts", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-dts");
break;
}
g_free (desc);
@@ -812,7 +797,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
/* dirac in hex */
template = gst_static_pad_template_get (&video_template);
name = g_strdup_printf ("video_%04x", bstream->pid);
- caps = gst_caps_new_simple ("video/x-dirac", NULL);
+ caps = gst_caps_new_empty_simple ("video/x-dirac");
}
}
g_free (desc);
@@ -832,8 +817,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
name = g_strdup_printf ("video_%04x", bstream->pid);
caps = gst_caps_new_simple ("video/x-wmv",
"wmvversion", G_TYPE_INT, 3,
- "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('W', 'V', 'C', '1'),
- NULL);
+ "format", G_TYPE_STRING, "WVC1", NULL);
}
}
g_free (desc);
@@ -856,13 +840,13 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
GST_LOG ("ac3 audio");
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-ac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-ac3");
g_free (ac3_desc);
} else {
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-eac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-eac3");
}
}
@@ -879,7 +863,7 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
if (desc) {
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-eac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-eac3");
g_free (desc);
break;
}
@@ -896,38 +880,38 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
g_free (desc);
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-ac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-ac3");
break;
}
case ST_BD_AUDIO_EAC3:
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-eac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-eac3");
break;
case ST_PS_AUDIO_DTS:
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-dts", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-dts");
break;
case ST_PS_AUDIO_LPCM:
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-lpcm", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-lpcm");
break;
case ST_BD_AUDIO_LPCM:
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-private-ts-lpcm", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-private-ts-lpcm");
break;
case ST_PS_DVD_SUBPICTURE:
template = gst_static_pad_template_get (&subpicture_template);
name = g_strdup_printf ("subpicture_%04x", bstream->pid);
- caps = gst_caps_new_simple ("video/x-dvd-subpicture", NULL);
+ caps = gst_caps_new_empty_simple ("video/x-dvd-subpicture");
break;
case ST_BD_PGS_SUBPICTURE:
template = gst_static_pad_template_get (&subpicture_template);
name = g_strdup_printf ("subpicture_%04x", bstream->pid);
- caps = gst_caps_new_simple ("subpicture/x-pgs", NULL);
+ caps = gst_caps_new_empty_simple ("subpicture/x-pgs");
break;
default:
GST_WARNING ("Non-media stream (stream_type:0x%x). Not creating pad",
@@ -938,16 +922,18 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
GST_LOG ("stream:%p creating pad with name %s and caps %s", stream, name,
gst_caps_to_string (caps));
pad = gst_pad_new_from_template (template, name);
+ gst_pad_set_active (pad, TRUE);
gst_pad_use_fixed_caps (pad);
+ gst_pad_push_event (pad, gst_event_new_stream_start ());
gst_pad_set_caps (pad, caps);
- gst_pad_set_query_type_function (pad, gst_ts_demux_srcpad_query_types);
gst_pad_set_query_function (pad, gst_ts_demux_srcpad_query);
gst_pad_set_event_function (pad, gst_ts_demux_srcpad_event);
}
if (name)
g_free (name);
-
+ if (template)
+ gst_object_unref (template);
if (caps)
gst_caps_unref (caps);
@@ -1009,7 +995,6 @@ activate_pad_for_stream (GstTSDemux * tsdemux, TSDemuxStream * stream)
if (stream->pad) {
GST_DEBUG_OBJECT (tsdemux, "Activating pad %s:%s for stream %p",
GST_DEBUG_PAD_NAME (stream->pad), stream);
- gst_pad_set_active (stream->pad, TRUE);
gst_element_add_pad ((GstElement *) tsdemux, stream->pad);
stream->active = TRUE;
GST_DEBUG_OBJECT (stream->pad, "done adding pad");
@@ -1032,25 +1017,15 @@ gst_ts_demux_stream_flush (TSDemuxStream * stream)
memset (stream->pendingbuffers, 0, TS_MAX_PENDING_BUFFERS);
stream->nbpending = 0;
- if (stream->current) {
- gst_buffer_list_unref (stream->current);
- stream->current = NULL;
- }
-
- if (stream->currentit) {
- gst_buffer_list_iterator_free (stream->currentit);
- stream->currentit = NULL;
- }
-
if (stream->currentlist) {
g_list_foreach (stream->currentlist, (GFunc) gst_buffer_unref, NULL);
g_list_free (stream->currentlist);
stream->currentlist = NULL;
}
+ stream->state = PENDING_PACKET_EMPTY;
stream->expected_size = 0;
stream->current_size = 0;
- stream->current = NULL;
stream->need_newsegment = TRUE;
stream->pts = GST_CLOCK_TIME_NONE;
stream->dts = GST_CLOCK_TIME_NONE;
@@ -1091,11 +1066,7 @@ gst_ts_demux_program_started (MpegTSBase * base, MpegTSBaseProgram * program)
/* If we have an upstream time segment and it's the initial program, just use that */
if (program->initial_program && base->segment.format == GST_FORMAT_TIME) {
demux->segment = base->segment;
- demux->segment_event =
- gst_event_new_new_segment_full (FALSE, base->segment.rate,
- base->segment.applied_rate, GST_FORMAT_TIME, base->segment.start,
- base->segment.stop, base->segment.time);
- GST_EVENT_SRC (demux->segment_event) = gst_object_ref (demux);
+ demux->segment_event = gst_event_new_segment (&demux->segment);
}
/* FIXME : When do we emit no_more_pads ? */
@@ -1121,7 +1092,7 @@ gst_ts_demux_record_pcr (GstTSDemux * demux, TSDemuxStream * stream,
if (G_UNLIKELY (demux->emit_statistics)) {
GstStructure *st;
- st = gst_structure_id_empty_new (QUARK_TSDEMUX);
+ st = gst_structure_new_id_empty (QUARK_TSDEMUX);
gst_structure_id_set (st,
QUARK_PID, G_TYPE_UINT, bs->pid,
QUARK_OFFSET, G_TYPE_UINT64, offset, QUARK_PCR, G_TYPE_UINT64, pcr,
@@ -1145,7 +1116,7 @@ gst_ts_demux_record_opcr (GstTSDemux * demux, TSDemuxStream * stream,
if (G_UNLIKELY (demux->emit_statistics)) {
GstStructure *st;
- st = gst_structure_id_empty_new (QUARK_TSDEMUX);
+ st = gst_structure_new_id_empty (QUARK_TSDEMUX);
gst_structure_id_set (st,
QUARK_PID, G_TYPE_UINT, bs->pid,
QUARK_OFFSET, G_TYPE_UINT64, offset,
@@ -1191,7 +1162,7 @@ gst_ts_demux_record_pts (GstTSDemux * demux, TSDemuxStream * stream,
if (G_UNLIKELY (demux->emit_statistics)) {
GstStructure *st;
- st = gst_structure_id_empty_new (QUARK_TSDEMUX);
+ st = gst_structure_new_id_empty (QUARK_TSDEMUX);
gst_structure_id_set (st,
QUARK_PID, G_TYPE_UINT, bs->pid,
QUARK_OFFSET, G_TYPE_UINT64, offset, QUARK_PTS, G_TYPE_UINT64, pts,
@@ -1236,7 +1207,7 @@ gst_ts_demux_record_dts (GstTSDemux * demux, TSDemuxStream * stream,
if (G_UNLIKELY (demux->emit_statistics)) {
GstStructure *st;
- st = gst_structure_id_empty_new (QUARK_TSDEMUX);
+ st = gst_structure_new_id_empty (QUARK_TSDEMUX);
gst_structure_id_set (st,
QUARK_PID, G_TYPE_UINT, bs->pid,
QUARK_OFFSET, G_TYPE_UINT64, offset, QUARK_DTS, G_TYPE_UINT64, dts,
@@ -1251,20 +1222,22 @@ gst_ts_demux_parse_pes_header (GstTSDemux * demux, TSDemuxStream * stream)
{
MpegTSBase *base = (MpegTSBase *) demux;
PESHeader header;
+ GstBuffer *buf;
GstFlowReturn res = GST_FLOW_OK;
gint offset = 0;
- guint8 *data;
- guint32 length;
+ GstMapInfo map;
guint64 bufferoffset;
PESParsingResult parseres;
- data = GST_BUFFER_DATA (stream->pendingbuffers[0]);
- length = GST_BUFFER_SIZE (stream->pendingbuffers[0]);
- bufferoffset = GST_BUFFER_OFFSET (stream->pendingbuffers[0]);
+ buf = stream->pendingbuffers[0] =
+ gst_buffer_make_writable (stream->pendingbuffers[0]);
+ gst_buffer_map (buf, &map, GST_MAP_READ);
+ bufferoffset = GST_BUFFER_OFFSET (buf);
- GST_MEMDUMP ("Header buffer", data, MIN (length, 32));
+ GST_MEMDUMP ("Header buffer", map.data, MIN (map.size, 32));
- parseres = mpegts_parse_pes_header (data, length, &header, &offset);
+ parseres = mpegts_parse_pes_header (map.data, map.size, &header, &offset);
+ gst_buffer_unmap (buf, &map);
if (G_UNLIKELY (parseres == PES_PARSING_NEED_MORE))
goto discont;
if (G_UNLIKELY (parseres == PES_PARSING_BAD)) {
@@ -1287,34 +1260,27 @@ gst_ts_demux_parse_pes_header (GstTSDemux * demux, TSDemuxStream * stream)
{
MpegTSPacketizer2 *packetizer = base->packetizer;
- GST_BUFFER_TIMESTAMP (stream->pendingbuffers[0]) =
+ GST_BUFFER_DTS (buf) =
+ mpegts_packetizer_pts_to_ts (packetizer, stream->dts);
+ GST_BUFFER_PTS (buf) =
mpegts_packetizer_pts_to_ts (packetizer, stream->pts);
}
- GST_DEBUG ("buf %" GST_TIME_FORMAT,
- GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (stream->pendingbuffers[0])));
+ GST_DEBUG ("buf %" GST_TIME_FORMAT, GST_TIME_ARGS (GST_BUFFER_PTS (buf)));
}
/* Remove PES headers */
- GST_DEBUG ("Moving data forward by %d bytes (packet_size:%d, have:%d)",
- header.header_size, header.packet_length,
- GST_BUFFER_SIZE (stream->pendingbuffers[0]));
+ GST_DEBUG ("Moving data forward by %d bytes (packet_size:%d, have:%"
+ G_GSIZE_FORMAT ")", header.header_size, header.packet_length, map.size);
stream->expected_size = header.packet_length;
- GST_BUFFER_DATA (stream->pendingbuffers[0]) += header.header_size;
- GST_BUFFER_SIZE (stream->pendingbuffers[0]) -= header.header_size;
+ gst_buffer_resize (buf, header.header_size, map.size - header.header_size);
/* FIXME : responsible for switching to PENDING_PACKET_BUFFER and
* creating the bufferlist */
if (1) {
/* Append to the buffer list */
- if (G_UNLIKELY (stream->current == NULL)) {
+ if (G_UNLIKELY (stream->currentlist == NULL)) {
guint8 i;
- /* Create a new bufferlist */
- stream->current = gst_buffer_list_new ();
- stream->currentit = gst_buffer_list_iterate (stream->current);
- stream->currentlist = NULL;
- gst_buffer_list_iterator_add_group (stream->currentit);
-
/* Push pending buffers into the list */
for (i = stream->nbpending; i; i--)
stream->currentlist =
@@ -1345,10 +1311,12 @@ gst_ts_demux_queue_data (GstTSDemux * demux, TSDemuxStream * stream,
GST_DEBUG ("state:%d", stream->state);
buf = packet->buffer;
- /* HACK : Instead of creating a new buffer, we just modify the data/size
- * of the buffer to point to the payload */
- GST_BUFFER_DATA (buf) = packet->payload;
- GST_BUFFER_SIZE (buf) = packet->data_end - packet->payload;
+
+ GST_DEBUG ("Resizing buffer to %d (size:%d) (Was %" G_GSIZE_FORMAT
+ " bytes long)", (int) (packet->payload - packet->bufmap.data),
+ (int) (packet->data_end - packet->payload), packet->bufmap.size);
+ gst_buffer_resize (buf, packet->payload - packet->bufmap.data,
+ packet->data_end - packet->payload);
if (stream->state == PENDING_PACKET_EMPTY) {
if (G_UNLIKELY (!packet->payload_unit_start_indicator)) {
@@ -1357,10 +1325,6 @@ gst_ts_demux_queue_data (GstTSDemux * demux, TSDemuxStream * stream,
} else {
GST_LOG ("EMPTY=>HEADER");
stream->state = PENDING_PACKET_HEADER;
- if (stream->pad) {
- GST_DEBUG ("Setting pad caps on buffer %p", buf);
- gst_buffer_set_caps (buf, GST_PAD_CAPS (stream->pad));
- }
}
}
@@ -1370,7 +1334,7 @@ gst_ts_demux_queue_data (GstTSDemux * demux, TSDemuxStream * stream,
GST_LOG ("HEADER: appending data to array");
/* Append to the array */
stream->pendingbuffers[stream->nbpending++] = buf;
- stream->current_size += GST_BUFFER_SIZE (buf);
+ stream->current_size += packet->bufmap.size;
/* parse the header */
gst_ts_demux_parse_pes_header (demux, stream);
@@ -1380,7 +1344,7 @@ gst_ts_demux_queue_data (GstTSDemux * demux, TSDemuxStream * stream,
{
GST_LOG ("BUFFER: appending data to bufferlist");
stream->currentlist = g_list_prepend (stream->currentlist, buf);
- stream->current_size += GST_BUFFER_SIZE (buf);
+ stream->current_size += packet->bufmap.size;
break;
}
case PENDING_PACKET_DISCONT:
@@ -1437,39 +1401,30 @@ calculate_and_push_newsegment (GstTSDemux * demux, TSDemuxStream * stream)
GST_DEBUG ("Calculating update segment");
/* If we have a valid segment, create an update of that */
if (demux->segment.format == GST_FORMAT_TIME) {
+ GstSegment update_segment;
GST_DEBUG ("Re-using segment " SEGMENT_FORMAT,
SEGMENT_ARGS (demux->segment));
- demux->update_segment =
- gst_event_new_new_segment_full (TRUE, demux->segment.rate,
- demux->segment.applied_rate, GST_FORMAT_TIME, demux->segment.start,
- firstts, demux->segment.time);
- GST_EVENT_SRC (demux->update_segment) = gst_object_ref (demux);
+ gst_segment_copy_into (&demux->segment, &update_segment);
+ update_segment.stop = firstts;
+ demux->update_segment = gst_event_new_segment (&update_segment);
}
demux->calculate_update_segment = FALSE;
}
if (!demux->segment_event) {
- gint64 start, stop, time;
+ GstSegment new_segment;
GST_DEBUG ("Calculating actual segment");
- if (demux->segment.format == GST_FORMAT_TIME) {
- /* if we have a TIME segment, set NS.start to the target ts so downstream
- * can clip
- */
- start = demux->segment.start;
- stop = demux->segment.stop;
- time = demux->segment.time;
- } else {
- /* ...else start from the first ts/pts */
- start = firstts;
- stop = GST_CLOCK_TIME_NONE;
- time = firstts;
+ gst_segment_copy_into (&demux->segment, &new_segment);
+ if (new_segment.format != GST_FORMAT_TIME) {
+ /* Start from the first ts/pts */
+ new_segment.start = firstts;
+ new_segment.stop = GST_CLOCK_TIME_NONE;
+ new_segment.position = firstts;
}
- demux->segment_event =
- gst_event_new_new_segment_full (FALSE, demux->segment.rate,
- demux->segment.applied_rate, GST_FORMAT_TIME, start, stop, time);
- GST_EVENT_SRC (demux->segment_event) = gst_object_ref (demux);
+
+ demux->segment_event = gst_event_new_segment (&new_segment);
}
push_new_segment:
@@ -1492,16 +1447,17 @@ static GstFlowReturn
gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream)
{
GstFlowReturn res = GST_FLOW_OK;
+ GList *tmp;
MpegTSBaseStream *bs = (MpegTSBaseStream *) stream;
- /* MpegTSBase *base = (MpegTSBase*) demux; */
- GstBuffer *firstbuffer = NULL;
MpegTSPacketizer2 *packetizer = MPEG_TS_BASE_PACKETIZER (demux);
+ GstBuffer *buf;
+ GstClockTime ts;
GST_DEBUG_OBJECT (stream->pad,
"stream:%p, pid:0x%04x stream_type:%d state:%d", stream, bs->pid,
bs->stream_type, stream->state);
- if (G_UNLIKELY (stream->current == NULL)) {
+ if (G_UNLIKELY (stream->currentlist == NULL)) {
GST_LOG ("stream->current == NULL");
goto beach;
}
@@ -1522,8 +1478,7 @@ gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream)
if (G_UNLIKELY (stream->pad == NULL)) {
g_list_foreach (stream->currentlist, (GFunc) gst_buffer_unref, NULL);
g_list_free (stream->currentlist);
- gst_buffer_list_iterator_free (stream->currentit);
- gst_buffer_list_unref (stream->current);
+ stream->currentlist = NULL;
goto beach;
}
@@ -1533,24 +1488,32 @@ gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream)
/* We have a confirmed buffer, let's push it out */
GST_LOG_OBJECT (stream->pad, "Putting pending data into GstBufferList");
stream->currentlist = g_list_reverse (stream->currentlist);
- gst_buffer_list_iterator_add_list (stream->currentit, stream->currentlist);
- stream->currentlist = NULL;
- gst_buffer_list_iterator_free (stream->currentit);
+ buf = gst_buffer_make_writable ((GstBuffer *) stream->currentlist->data);
- firstbuffer = gst_buffer_list_get (stream->current, 0, 0);
+ ts = GST_BUFFER_PTS (buf);
GST_DEBUG_OBJECT (stream->pad, "stream->pts %" GST_TIME_FORMAT,
GST_TIME_ARGS (stream->pts));
if (GST_CLOCK_TIME_IS_VALID (stream->pts)
- && !GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (firstbuffer)))
- GST_BUFFER_TIMESTAMP (firstbuffer) =
- mpegts_packetizer_pts_to_ts (packetizer, stream->pts);
+ && !GST_CLOCK_TIME_IS_VALID (ts))
+ ts = mpegts_packetizer_pts_to_ts (packetizer, stream->pts);
+
+ for (tmp = stream->currentlist->next; tmp; tmp = tmp->next) {
+ gst_buffer_copy_into (buf, (GstBuffer *) tmp->data, GST_BUFFER_COPY_MEMORY,
+ 0, -1);
+ gst_buffer_unref ((GstBuffer *) tmp->data);
+ }
+
+ g_list_free (stream->currentlist);
+ stream->currentlist = NULL;
+ GST_BUFFER_PTS (buf) = ts;
+ GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT);
GST_DEBUG_OBJECT (stream->pad,
"Pushing buffer list with timestamp: %" GST_TIME_FORMAT,
- GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (firstbuffer)));
+ GST_TIME_ARGS (GST_BUFFER_PTS (buf)));
- res = gst_pad_push_list (stream->pad, stream->current);
+ res = gst_pad_push (stream->pad, buf);
GST_DEBUG_OBJECT (stream->pad, "Returned %s", gst_flow_get_name (res));
res = tsdemux_combine_flows (demux, stream, res);
GST_DEBUG_OBJECT (stream->pad, "combined %s", gst_flow_get_name (res));
@@ -1561,10 +1524,13 @@ beach:
stream->state = PENDING_PACKET_EMPTY;
memset (stream->pendingbuffers, 0, TS_MAX_PENDING_BUFFERS);
stream->nbpending = 0;
- stream->current = NULL;
- stream->currentit = NULL;
stream->expected_size = 0;
stream->current_size = 0;
+ if (stream->currentlist) {
+ g_list_foreach (stream->currentlist, (GFunc) gst_buffer_unref, NULL);
+ g_list_free (stream->currentlist);
+ }
+ stream->currentlist = NULL;
return res;
}
@@ -1575,8 +1541,10 @@ gst_ts_demux_handle_packet (GstTSDemux * demux, TSDemuxStream * stream,
{
GstFlowReturn res = GST_FLOW_OK;
+#if 0
GST_DEBUG ("buffer:%p, data:%p", GST_BUFFER_DATA (packet->buffer),
packet->data);
+#endif
GST_LOG ("pid 0x%04x pusi:%d, afc:%d, cont:%d, payload:%p",
packet->pid,
packet->payload_unit_start_indicator,
@@ -1584,8 +1552,8 @@ gst_ts_demux_handle_packet (GstTSDemux * demux, TSDemuxStream * stream,
packet->continuity_counter, packet->payload);
if (section) {
- GST_DEBUG ("section complete:%d, buffer size %d",
- section->complete, GST_BUFFER_SIZE (section->buffer));
+ GST_DEBUG ("section complete:%d, buffer size %" G_GSIZE_FORMAT,
+ section->complete, gst_buffer_get_size (section->buffer));
gst_buffer_unref (packet->buffer);
return res;
}
diff --git a/gst/mpegtsmux/Makefile.in b/gst/mpegtsmux/Makefile.in
index 1543117e..001bcbc9 100644
--- a/gst/mpegtsmux/Makefile.in
+++ b/gst/mpegtsmux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -502,6 +502,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -518,6 +520,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -550,10 +553,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -687,7 +689,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/mpegtsmux/mpegtsmux.c b/gst/mpegtsmux/mpegtsmux.c
index c243f1af..4ddee407 100644
--- a/gst/mpegtsmux/mpegtsmux.c
+++ b/gst/mpegtsmux/mpegtsmux.c
@@ -151,7 +151,7 @@ static gboolean new_packet_cb (guint8 * data, guint len, void *user_data,
static void release_buffer_cb (guint8 * data, void *user_data);
static void mpegtsdemux_prepare_srcpad (MpegTsMux * mux);
-static GstFlowReturn mpegtsmux_collected (GstCollectPads2 * pads,
+static GstFlowReturn mpegtsmux_collected (GstCollectPads * pads,
MpegTsMux * mux);
static GstPad *mpegtsmux_request_new_pad (GstElement * element,
GstPadTemplate * templ, const gchar * name);
@@ -228,9 +228,9 @@ mpegtsmux_init (MpegTsMux * mux, MpegTsMuxClass * g_class)
gst_pad_set_event_function (mux->srcpad, mpegtsmux_src_event);
gst_element_add_pad (GST_ELEMENT (mux), mux->srcpad);
- mux->collect = gst_collect_pads2_new ();
- gst_collect_pads2_set_function (mux->collect,
- (GstCollectPads2Function) GST_DEBUG_FUNCPTR (mpegtsmux_collected), mux);
+ mux->collect = gst_collect_pads_new ();
+ gst_collect_pads_set_function (mux->collect,
+ (GstCollectPadsFunction) GST_DEBUG_FUNCPTR (mpegtsmux_collected), mux);
mux->tsmux = tsmux_new ();
tsmux_set_write_func (mux->tsmux, new_packet_cb, mux);
@@ -292,6 +292,7 @@ mpegtsmux_dispose (GObject * object)
g_list_free (mux->streamheader);
mux->streamheader = NULL;
}
+ gst_event_replace (&mux->force_key_unit_event, NULL);
GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object));
}
@@ -522,7 +523,7 @@ mpegtsmux_create_streams (MpegTsMux * mux)
/* Create the streams */
while (walk) {
- GstCollectData2 *c_data = (GstCollectData2 *) walk->data;
+ GstCollectData *c_data = (GstCollectData *) walk->data;
MpegTsPadData *ts_data = (MpegTsPadData *) walk->data;
gchar *name = NULL;
@@ -582,11 +583,11 @@ static MpegTsPadData *
mpegtsmux_choose_best_stream (MpegTsMux * mux)
{
MpegTsPadData *best = NULL;
- GstCollectData2 *c_best = NULL;
+ GstCollectData *c_best = NULL;
GSList *walk;
for (walk = mux->collect->data; walk != NULL; walk = g_slist_next (walk)) {
- GstCollectData2 *c_data = (GstCollectData2 *) walk->data;
+ GstCollectData *c_data = (GstCollectData *) walk->data;
MpegTsPadData *ts_data = (MpegTsPadData *) walk->data;
if (ts_data->eos == FALSE) {
@@ -594,7 +595,7 @@ mpegtsmux_choose_best_stream (MpegTsMux * mux)
GstBuffer *buf;
ts_data->queued_buf = buf =
- gst_collect_pads2_peek (mux->collect, c_data);
+ gst_collect_pads_peek (mux->collect, c_data);
if (buf != NULL) {
if (ts_data->prepare_func) {
@@ -656,14 +657,14 @@ mpegtsmux_choose_best_stream (MpegTsMux * mux)
}
if (c_best) {
GstBuffer *buffer;
- if ((buffer = gst_collect_pads2_pop (mux->collect, c_best)))
+ if ((buffer = gst_collect_pads_pop (mux->collect, c_best)))
gst_buffer_unref (buffer);
}
return best;
}
-#define COLLECT_DATA_PAD(collect_data) (((GstCollectData2 *)(collect_data))->pad)
+#define COLLECT_DATA_PAD(collect_data) (((GstCollectData *)(collect_data))->pad)
static gboolean
mpegtsmux_sink_event (GstPad * pad, GstEvent * event)
@@ -714,6 +715,8 @@ mpegtsmux_sink_event (GstPad * pad, GstEvent * event)
out:
if (forward)
res = ts_data->eventfunc (pad, event);
+ else
+ gst_event_unref (event);
gst_object_unref (mux);
return res;
@@ -723,7 +726,7 @@ static gboolean
mpegtsmux_src_event (GstPad * pad, GstEvent * event)
{
MpegTsMux *mux = GST_MPEG_TSMUX (gst_pad_get_parent (pad));
- gboolean res = TRUE;
+ gboolean res = TRUE, forward = TRUE;
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CUSTOM_UPSTREAM:
@@ -738,6 +741,8 @@ mpegtsmux_src_event (GstPad * pad, GstEvent * event)
if (!gst_video_event_is_force_key_unit (event))
break;
+ forward = FALSE;
+
gst_video_event_parse_upstream_force_key_unit (event,
&running_time, &all_headers, &count);
@@ -778,15 +783,18 @@ mpegtsmux_src_event (GstPad * pad, GstEvent * event)
break;
}
}
-
- gst_event_unref (event);
+ gst_iterator_free (iter);
break;
}
default:
- res = gst_pad_event_default (pad, event);
break;
}
+ if (forward)
+ res = gst_pad_event_default (pad, event);
+ else
+ gst_event_unref (event);
+
gst_object_unref (mux);
return res;
}
@@ -840,7 +848,7 @@ out:
}
static GstFlowReturn
-mpegtsmux_collected (GstCollectPads2 * pads, MpegTsMux * mux)
+mpegtsmux_collected (GstCollectPads * pads, MpegTsMux * mux)
{
GstFlowReturn ret = GST_FLOW_OK;
MpegTsPadData *best = NULL;
@@ -983,7 +991,7 @@ mpegtsmux_request_new_pad (GstElement * element,
pad = gst_pad_new_from_template (templ, pad_name);
g_free (pad_name);
- pad_data = (MpegTsPadData *) gst_collect_pads2_add_pad (mux->collect, pad,
+ pad_data = (MpegTsPadData *) gst_collect_pads_add_pad (mux->collect, pad,
sizeof (MpegTsPadData));
if (pad_data == NULL)
goto pad_failure;
@@ -1012,7 +1020,7 @@ stream_exists:
could_not_add:
GST_ELEMENT_ERROR (element, STREAM, FAILED,
("Internal data stream error."), ("Could not add pad to element"));
- gst_collect_pads2_remove_pad (mux->collect, pad);
+ gst_collect_pads_remove_pad (mux->collect, pad);
gst_object_unref (pad);
return NULL;
pad_failure:
@@ -1030,7 +1038,7 @@ mpegtsmux_release_pad (GstElement * element, GstPad * pad)
GST_DEBUG_OBJECT (mux, "Pad %" GST_PTR_FORMAT " being released", pad);
if (mux->collect) {
- gst_collect_pads2_remove_pad (mux->collect, pad);
+ gst_collect_pads_remove_pad (mux->collect, pad);
}
/* chain up */
@@ -1292,12 +1300,12 @@ mpegtsmux_change_state (GstElement * element, GstStateChange transition)
case GST_STATE_CHANGE_NULL_TO_READY:
break;
case GST_STATE_CHANGE_READY_TO_PAUSED:
- gst_collect_pads2_start (mux->collect);
+ gst_collect_pads_start (mux->collect);
break;
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
break;
case GST_STATE_CHANGE_PAUSED_TO_READY:
- gst_collect_pads2_stop (mux->collect);
+ gst_collect_pads_stop (mux->collect);
break;
case GST_STATE_CHANGE_READY_TO_NULL:
if (mux->adapter)
diff --git a/gst/mpegtsmux/mpegtsmux.h b/gst/mpegtsmux/mpegtsmux.h
index c31707b4..26003a87 100644
--- a/gst/mpegtsmux/mpegtsmux.h
+++ b/gst/mpegtsmux/mpegtsmux.h
@@ -84,7 +84,7 @@
#define __MPEGTSMUX_H__
#include <gst/gst.h>
-#include <gst/base/gstcollectpads2.h>
+#include <gst/base/gstcollectpads.h>
#include <gst/base/gstadapter.h>
G_BEGIN_DECLS
@@ -108,7 +108,7 @@ struct MpegTsMux {
GstPad *srcpad;
- GstCollectPads2 *collect;
+ GstCollectPads *collect;
TsMux *tsmux;
TsMuxProgram **programs;
@@ -139,7 +139,7 @@ struct MpegTsMuxClass {
#define MPEG_TS_PAD_DATA(data) ((MpegTsPadData *)(data))
struct MpegTsPadData {
- GstCollectData2 collect; /* Parent */
+ GstCollectData collect; /* Parent */
gint pid;
TsMuxStream *stream;
diff --git a/gst/mpegtsmux/tsmux/Makefile.in b/gst/mpegtsmux/tsmux/Makefile.in
index d8773188..c7f78174 100644
--- a/gst/mpegtsmux/tsmux/Makefile.in
+++ b/gst/mpegtsmux/tsmux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -431,6 +431,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -447,6 +449,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -479,10 +482,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/gst/mve/Makefile.in b/gst/mve/Makefile.in
index a67c8340..8c2fdea6 100644
--- a/gst/mve/Makefile.in
+++ b/gst/mve/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -649,7 +651,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/mxf/Makefile.in b/gst/mxf/Makefile.in
index 6eec67c4..7ac34c24 100644
--- a/gst/mxf/Makefile.in
+++ b/gst/mxf/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -468,6 +468,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -484,6 +486,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -516,10 +519,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -679,7 +681,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/mxf/mxfmux.c b/gst/mxf/mxfmux.c
index 87f5dd56..7d215676 100644
--- a/gst/mxf/mxfmux.c
+++ b/gst/mxf/mxfmux.c
@@ -146,9 +146,9 @@ gst_mxf_mux_init (GstMXFMux * mux, GstMXFMuxClass * g_class)
gst_caps_unref (caps);
gst_element_add_pad (GST_ELEMENT (mux), mux->srcpad);
- mux->collect = gst_collect_pads2_new ();
- gst_collect_pads2_set_function (mux->collect,
- (GstCollectPads2Function) GST_DEBUG_FUNCPTR (gst_mxf_mux_collected), mux);
+ mux->collect = gst_collect_pads_new ();
+ gst_collect_pads_set_function (mux->collect,
+ (GstCollectPadsFunction) GST_DEBUG_FUNCPTR (gst_mxf_mux_collected), mux);
gst_mxf_mux_reset (mux);
}
@@ -209,7 +209,7 @@ gst_mxf_mux_reset (GstMXFMux * mux)
g_object_unref (cpad->adapter);
g_free (cpad->mapping_data);
- gst_collect_pads2_remove_pad (mux->collect, cpad->collect.pad);
+ gst_collect_pads_remove_pad (mux->collect, cpad->collect.pad);
}
mux->state = GST_MXF_MUX_STATE_HEADER;
@@ -268,7 +268,7 @@ gst_mxf_mux_handle_sink_event (GstPad * pad, GstEvent * event)
break;
}
- /* now GstCollectPads2 can take care of the rest, e.g. EOS */
+ /* now GstCollectPads can take care of the rest, e.g. EOS */
if (ret)
ret = mux->collect_event (pad, event);
gst_object_unref (mux);
@@ -420,13 +420,13 @@ gst_mxf_mux_request_new_pad (GstElement * element,
pad = gst_pad_new_from_template (templ, name);
g_free (name);
cpad = (GstMXFMuxPad *)
- gst_collect_pads2_add_pad (mux->collect, pad, sizeof (GstMXFMuxPad));
+ gst_collect_pads_add_pad (mux->collect, pad, sizeof (GstMXFMuxPad));
cpad->last_timestamp = 0;
cpad->adapter = gst_adapter_new ();
cpad->writer = writer;
/* FIXME: hacked way to override/extend the event function of
- * GstCollectPads2; because it sets its own event function giving the
+ * GstCollectPads; because it sets its own event function giving the
* element no access to events.
*/
mux->collect_event = (GstPadEventFunction) GST_PAD_EVENTFUNC (pad);
@@ -450,7 +450,7 @@ gst_mxf_mux_release_pad (GstElement * element, GstPad * pad)
g_object_unref (cpad->adapter);
g_free (cpad->mapping_data);
- gst_collect_pads2_remove_pad (mux->collect, pad);
+ gst_collect_pads_remove_pad (mux->collect, pad);
gst_element_remove_pad (element, pad); */
}
@@ -1099,7 +1099,7 @@ gst_mxf_mux_handle_buffer (GstMXFMux * mux, GstMXFMuxPad * cpad)
GstBuffer *packet;
GstFlowReturn ret = GST_FLOW_OK;
guint8 slen, ber[9];
- gboolean flush = ((cpad->collect.state & GST_COLLECT_PADS2_STATE_EOS)
+ gboolean flush = ((cpad->collect.state & GST_COLLECT_PADS_STATE_EOS)
&& !cpad->have_complete_edit_unit && cpad->collect.buffer == NULL);
if (cpad->have_complete_edit_unit) {
@@ -1108,7 +1108,7 @@ gst_mxf_mux_handle_buffer (GstMXFMux * mux, GstMXFMuxPad * cpad)
cpad->source_track->parent.track_id, cpad->pos);
buf = NULL;
} else if (!flush) {
- buf = gst_collect_pads2_pop (mux->collect, &cpad->collect);
+ buf = gst_collect_pads_pop (mux->collect, &cpad->collect);
}
if (buf) {
@@ -1369,7 +1369,7 @@ _sort_mux_pads (gconstpointer a, gconstpointer b)
}
static GstFlowReturn
-gst_mxf_mux_collected (GstCollectPads2 * pads, gpointer user_data)
+gst_mxf_mux_collected (GstCollectPads * pads, gpointer user_data)
{
GstMXFMux *mux = GST_MXF_MUX (user_data);
GstMXFMuxPad *best = NULL;
@@ -1430,7 +1430,7 @@ gst_mxf_mux_collected (GstCollectPads2 * pads, gpointer user_data)
gst_util_uint64_scale ((mux->last_gc_position + 1) * GST_SECOND,
mux->min_edit_rate.d, mux->min_edit_rate.n);
- pad_eos = cpad->collect.state & GST_COLLECT_PADS2_STATE_EOS;
+ pad_eos = cpad->collect.state & GST_COLLECT_PADS_STATE_EOS;
if (!pad_eos)
eos = FALSE;
@@ -1482,12 +1482,12 @@ gst_mxf_mux_change_state (GstElement * element, GstStateChange transition)
case GST_STATE_CHANGE_NULL_TO_READY:
break;
case GST_STATE_CHANGE_READY_TO_PAUSED:
- gst_collect_pads2_start (mux->collect);
+ gst_collect_pads_start (mux->collect);
break;
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
break;
case GST_STATE_CHANGE_PAUSED_TO_READY:
- gst_collect_pads2_stop (mux->collect);
+ gst_collect_pads_stop (mux->collect);
break;
default:
break;
diff --git a/gst/mxf/mxfmux.h b/gst/mxf/mxfmux.h
index 20600ae7..94330c46 100644
--- a/gst/mxf/mxfmux.h
+++ b/gst/mxf/mxfmux.h
@@ -22,7 +22,7 @@
#include <gst/gst.h>
#include <gst/base/gstadapter.h>
-#include <gst/base/gstcollectpads2.h>
+#include <gst/base/gstcollectpads.h>
#include "mxfessence.h"
@@ -41,7 +41,7 @@ G_BEGIN_DECLS
typedef struct
{
- GstCollectData2 collect;
+ GstCollectData collect;
guint64 pos;
GstClockTime last_timestamp;
@@ -71,7 +71,7 @@ typedef struct _GstMXFMux {
GstElement element;
GstPad *srcpad;
- GstCollectPads2 *collect;
+ GstCollectPads *collect;
/* <private> */
GstPadEventFunction collect_event;
diff --git a/gst/nsf/Makefile.in b/gst/nsf/Makefile.in
index ab303649..1d54b445 100644
--- a/gst/nsf/Makefile.in
+++ b/gst/nsf/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -465,6 +465,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -481,6 +483,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -513,10 +516,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -663,7 +665,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/nuvdemux/Makefile.in b/gst/nuvdemux/Makefile.in
index 52dde133..e0a4d9cf 100644
--- a/gst/nuvdemux/Makefile.in
+++ b/gst/nuvdemux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -459,6 +459,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -475,6 +477,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -507,10 +510,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -633,7 +635,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/patchdetect/Makefile.in b/gst/patchdetect/Makefile.in
index efa45d33..5a355d74 100644
--- a/gst/patchdetect/Makefile.in
+++ b/gst/patchdetect/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -648,7 +650,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/pcapparse/Makefile.am b/gst/pcapparse/Makefile.am
index 6c357f20..1c56fe86 100644
--- a/gst/pcapparse/Makefile.am
+++ b/gst/pcapparse/Makefile.am
@@ -1,12 +1,5 @@
plugin_LTLIBRARIES = libgstpcapparse.la
-# when compiling for windows we need to link with the winsock library
-if HAVE_WINSOCK2_H
- WINSOCK2_LIBS = -lws2_32
-else
- WINSOCK2_LIBS =
-endif
-
libgstpcapparse_la_SOURCES = \
gstpcapparse.c gstirtspparse.c plugin.c
@@ -30,4 +23,4 @@ Android.mk: Makefile.am $(BUILT_SOURCES)
-ldl \
-:PASSTHROUGH LOCAL_ARM_MODE:=arm \
LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
- > $@ \ No newline at end of file
+ > $@
diff --git a/gst/pcapparse/Makefile.in b/gst/pcapparse/Makefile.in
index 7ad31887..3166f56a 100644
--- a/gst/pcapparse/Makefile.in
+++ b/gst/pcapparse/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -586,10 +588,6 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
plugin_LTLIBRARIES = libgstpcapparse.la
-@HAVE_WINSOCK2_H_FALSE@WINSOCK2_LIBS =
-
-# when compiling for windows we need to link with the winsock library
-@HAVE_WINSOCK2_H_TRUE@WINSOCK2_LIBS = -lws2_32
libgstpcapparse_la_SOURCES = \
gstpcapparse.c gstirtspparse.c plugin.c
@@ -644,7 +642,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/pnm/Makefile.in b/gst/pnm/Makefile.in
index 65ac08f4..b2d1c4ef 100644
--- a/gst/pnm/Makefile.in
+++ b/gst/pnm/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -636,7 +638,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/rawparse/Makefile.in b/gst/rawparse/Makefile.in
index 08fe3641..cd41254d 100644
--- a/gst/rawparse/Makefile.in
+++ b/gst/rawparse/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -654,7 +656,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/real/Makefile.in b/gst/real/Makefile.in
index 693649a4..e9192d41 100644
--- a/gst/real/Makefile.in
+++ b/gst/real/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -650,7 +652,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/removesilence/Makefile.in b/gst/removesilence/Makefile.in
index d664c44b..33e241e5 100644
--- a/gst/removesilence/Makefile.in
+++ b/gst/removesilence/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -639,7 +641,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/rtpmux/Makefile.in b/gst/rtpmux/Makefile.in
index d8a51cf1..2110aafb 100644
--- a/gst/rtpmux/Makefile.in
+++ b/gst/rtpmux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -637,7 +639,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/rtpvp8/Makefile.in b/gst/rtpvp8/Makefile.in
index f892448d..7971d4b3 100644
--- a/gst/rtpvp8/Makefile.in
+++ b/gst/rtpvp8/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -647,7 +649,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/scaletempo/Makefile.in b/gst/scaletempo/Makefile.in
index 2cac122f..41a99af4 100644
--- a/gst/scaletempo/Makefile.in
+++ b/gst/scaletempo/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -647,7 +649,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/sdi/Makefile.in b/gst/sdi/Makefile.in
index 77d41888..e6882b60 100644
--- a/gst/sdi/Makefile.in
+++ b/gst/sdi/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -640,7 +642,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/sdp/Makefile.am b/gst/sdp/Makefile.am
index b030401c..b506f284 100644
--- a/gst/sdp/Makefile.am
+++ b/gst/sdp/Makefile.am
@@ -4,9 +4,8 @@ libgstsdpelem_la_SOURCES = gstsdpelem.c gstsdpdemux.h gstsdpdemux.c
libgstsdpelem_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS)
libgstsdpelem_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GIO_LIBS) \
- -lgstinterfaces-@GST_API_VERSION@ \
-lgstrtp-@GST_API_VERSION@ -lgstsdp-@GST_API_VERSION@ \
- $(GST_LIBS) $(WIN32_LIBS)
+ $(GST_LIBS) $(WINSOCK2_LIBS)
libgstsdpelem_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstsdpelem_la_LIBTOOLFLAGS = --tag=disable-static
diff --git a/gst/sdp/Makefile.in b/gst/sdp/Makefile.in
index 79158c25..b8aabb74 100644
--- a/gst/sdp/Makefile.in
+++ b/gst/sdp/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -589,9 +591,8 @@ plugin_LTLIBRARIES = libgstsdpelem.la
libgstsdpelem_la_SOURCES = gstsdpelem.c gstsdpdemux.h gstsdpdemux.c
libgstsdpelem_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS)
libgstsdpelem_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GIO_LIBS) \
- -lgstinterfaces-@GST_API_VERSION@ \
-lgstrtp-@GST_API_VERSION@ -lgstsdp-@GST_API_VERSION@ \
- $(GST_LIBS) $(WIN32_LIBS)
+ $(GST_LIBS) $(WINSOCK2_LIBS)
libgstsdpelem_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstsdpelem_la_LIBTOOLFLAGS = --tag=disable-static
@@ -640,7 +641,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/segmentclip/Makefile.in b/gst/segmentclip/Makefile.in
index 805e2867..7b8248a3 100644
--- a/gst/segmentclip/Makefile.in
+++ b/gst/segmentclip/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -638,7 +640,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/siren/Makefile.in b/gst/siren/Makefile.in
index b72e3d82..3849a75a 100644
--- a/gst/siren/Makefile.in
+++ b/gst/siren/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -645,7 +647,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/smooth/Makefile.in b/gst/smooth/Makefile.in
index e15d7539..7d1691f5 100644
--- a/gst/smooth/Makefile.in
+++ b/gst/smooth/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -642,7 +644,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/speed/Makefile.in b/gst/speed/Makefile.in
index da2a5d01..a6fec86f 100644
--- a/gst/speed/Makefile.in
+++ b/gst/speed/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -634,7 +636,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/stereo/Makefile.in b/gst/stereo/Makefile.in
index 05594819..2351f902 100644
--- a/gst/stereo/Makefile.in
+++ b/gst/stereo/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -635,7 +637,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/subenc/Makefile.in b/gst/subenc/Makefile.in
index 06cc6fdd..89ddc3bb 100644
--- a/gst/subenc/Makefile.in
+++ b/gst/subenc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -641,7 +643,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/tta/Makefile.in b/gst/tta/Makefile.in
index 0ac7bdd6..4733ac44 100644
--- a/gst/tta/Makefile.in
+++ b/gst/tta/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -640,7 +642,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/videofilters/Makefile.in b/gst/videofilters/Makefile.in
index 1c7259ac..9645052b 100644
--- a/gst/videofilters/Makefile.in
+++ b/gst/videofilters/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -466,6 +466,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -482,6 +484,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -514,10 +517,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -663,7 +665,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/videomeasure/Makefile.in b/gst/videomeasure/Makefile.in
index f95b6a78..c590e110 100644
--- a/gst/videomeasure/Makefile.in
+++ b/gst/videomeasure/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -649,7 +651,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/videomeasure/gstvideomeasure_ssim.c b/gst/videomeasure/gstvideomeasure_ssim.c
index 3a354bd6..948787a1 100644
--- a/gst/videomeasure/gstvideomeasure_ssim.c
+++ b/gst/videomeasure/gstvideomeasure_ssim.c
@@ -114,7 +114,7 @@ static void gst_ssim_release_pad (GstElement * element, GstPad * pad);
static GstStateChangeReturn gst_ssim_change_state (GstElement * element,
GstStateChange transition);
-static GstFlowReturn gst_ssim_collected (GstCollectPads2 * pads,
+static GstFlowReturn gst_ssim_collected (GstCollectPads * pads,
gpointer user_data);
static GstElementClass *parent_class = NULL;
@@ -901,7 +901,7 @@ gst_ssim_src_event (GstPad * pad, GstEvent * event)
/* check if we are flushing */
if (flags & GST_SEEK_FLAG_FLUSH) {
/* make sure we accept nothing anymore and return WRONG_STATE */
- gst_collect_pads2_set_flushing (ssim->collect, TRUE);
+ gst_collect_pads_set_flushing (ssim->collect, TRUE);
/* flushing seek, start flush downstream, the flush will be done
* when all pads received a FLUSH_STOP. */
@@ -991,7 +991,7 @@ gst_ssim_sink_event (GstPad * pad, GstEvent * event)
break;
}
- /* now GstCollectPads2 can take care of the rest, e.g. EOS */
+ /* now GstCollectPads can take care of the rest, e.g. EOS */
GST_DEBUG ("Dispatching %s event on pad %s:%s", GST_EVENT_TYPE_NAME (event),
GST_DEBUG_PAD_NAME (pad));
ret = ssim->collect_event (pad, event);
@@ -1158,10 +1158,10 @@ gst_ssim_request_new_pad (GstElement * element, GstPadTemplate * templ,
gst_pad_set_getcaps_function (newpad,
GST_DEBUG_FUNCPTR (gst_ssim_sink_getcaps));
gst_pad_set_setcaps_function (newpad, GST_DEBUG_FUNCPTR (gst_ssim_setcaps));
- gst_collect_pads2_add_pad (ssim->collect, newpad, sizeof (GstCollectData2));
+ gst_collect_pads_add_pad (ssim->collect, newpad, sizeof (GstCollectData));
/* FIXME: hacked way to override/extend the event function of
- * GstCollectPads2; because it sets its own event function giving the
+ * GstCollectPads; because it sets its own event function giving the
* element no access to events
*/
GST_DEBUG_OBJECT (ssim, "Current collect_event is %p, changing to %p",
@@ -1233,7 +1233,7 @@ could_not_add_src:
could_not_add_sink:
{
GST_DEBUG_OBJECT (ssim, "could not add sink pad");
- gst_collect_pads2_remove_pad (ssim->collect, newpad);
+ gst_collect_pads_remove_pad (ssim->collect, newpad);
gst_object_unref (newpad);
return NULL;
}
@@ -1248,7 +1248,7 @@ gst_ssim_release_pad (GstElement * element, GstPad * pad)
GST_DEBUG_OBJECT (ssim, "release pad %s:%s", GST_DEBUG_PAD_NAME (pad));
- gst_collect_pads2_remove_pad (ssim->collect, pad);
+ gst_collect_pads_remove_pad (ssim->collect, pad);
gst_element_remove_pad (element, pad);
}
@@ -1267,8 +1267,8 @@ gst_ssim_init (GstSSim * ssim)
ssim->sinkcaps = NULL;
/* keep track of the sinkpads requested */
- ssim->collect = gst_collect_pads2_new ();
- gst_collect_pads2_set_function (ssim->collect,
+ ssim->collect = gst_collect_pads_new ();
+ gst_collect_pads_set_function (ssim->collect,
GST_DEBUG_FUNCPTR (gst_ssim_collected), ssim);
}
@@ -1407,7 +1407,7 @@ gst_ssim_regenerate_windows (GstSSim * ssim)
}
static GstFlowReturn
-gst_ssim_collected (GstCollectPads2 * pads, gpointer user_data)
+gst_ssim_collected (GstCollectPads * pads, gpointer user_data)
{
GstSSim *ssim;
GSList *collected;
@@ -1440,12 +1440,12 @@ gst_ssim_collected (GstCollectPads2 * pads, gpointer user_data)
}
for (collected = pads->data; collected; collected = g_slist_next (collected)) {
- GstCollectData2 *collect_data;
+ GstCollectData *collect_data;
GstBuffer *inbuf;
- collect_data = (GstCollectData2 *) collected->data;
+ collect_data = (GstCollectData *) collected->data;
- inbuf = gst_collect_pads2_peek (pads, collect_data);
+ inbuf = gst_collect_pads_peek (pads, collect_data);
if (inbuf == NULL) {
GST_LOG_OBJECT (ssim, "channel %p: no bytes available", collect_data);
@@ -1469,12 +1469,12 @@ gst_ssim_collected (GstCollectPads2 * pads, gpointer user_data)
for (collected = pads->data; collected;
collected = g_slist_next (collected)) {
- GstCollectData2 *collect_data;
+ GstCollectData *collect_data;
- collect_data = (GstCollectData2 *) collected->data;
+ collect_data = (GstCollectData *) collected->data;
if (collect_data->pad == ssim->orig) {
- orgbuf = gst_collect_pads2_pop (pads, collect_data);;
+ orgbuf = gst_collect_pads_pop (pads, collect_data);;
GST_DEBUG_OBJECT (ssim, "Original stream - flags(0x%x), timestamp(%"
GST_TIME_FORMAT "), duration(%" GST_TIME_FORMAT ")",
@@ -1491,14 +1491,14 @@ gst_ssim_collected (GstCollectPads2 * pads, gpointer user_data)
GST_LOG_OBJECT (ssim, "starting to cycle through streams");
for (collected = pads->data; collected; collected = g_slist_next (collected)) {
- GstCollectData2 *collect_data;
+ GstCollectData *collect_data;
GstBuffer *inbuf;
guint8 *indata;
- collect_data = (GstCollectData2 *) collected->data;
+ collect_data = (GstCollectData *) collected->data;
if (collect_data->pad != ssim->orig) {
- inbuf = gst_collect_pads2_pop (pads, collect_data);
+ inbuf = gst_collect_pads_pop (pads, collect_data);
indata = GST_BUFFER_DATA (inbuf);
@@ -1659,7 +1659,7 @@ gst_ssim_change_state (GstElement * element, GstStateChange transition)
ssim->segment_position = 0;
ssim->segment_rate = 1.0;
gst_segment_init (&ssim->segment, GST_FORMAT_UNDEFINED);
- gst_collect_pads2_start (ssim->collect);
+ gst_collect_pads_start (ssim->collect);
break;
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
break;
@@ -1667,7 +1667,7 @@ gst_ssim_change_state (GstElement * element, GstStateChange transition)
/* need to unblock the collectpads before calling the
* parent change_state so that streaming can finish
*/
- gst_collect_pads2_stop (ssim->collect);
+ gst_collect_pads_stop (ssim->collect);
break;
default:
break;
diff --git a/gst/videomeasure/gstvideomeasure_ssim.h b/gst/videomeasure/gstvideomeasure_ssim.h
index 2760d032..57e0907f 100644
--- a/gst/videomeasure/gstvideomeasure_ssim.h
+++ b/gst/videomeasure/gstvideomeasure_ssim.h
@@ -21,7 +21,7 @@
#define __GST_SSIM_H__
#include <gst/gst.h>
-#include <gst/base/gstcollectpads2.h>
+#include <gst/base/gstcollectpads.h>
#include <gst/video/video.h>
G_BEGIN_DECLS
@@ -85,7 +85,7 @@ struct _GstSSim {
gint padcount;
- GstCollectPads2 *collect;
+ GstCollectPads *collect;
GstPad *orig;
gint frame_rate;
diff --git a/gst/videoparsers/Makefile.in b/gst/videoparsers/Makefile.in
index 23c8d9a1..1d7abad3 100644
--- a/gst/videoparsers/Makefile.in
+++ b/gst/videoparsers/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -470,6 +470,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -486,6 +488,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -518,10 +521,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -661,7 +663,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/videoparsers/gstmpegvideoparse.c b/gst/videoparsers/gstmpegvideoparse.c
index fd72aa67..42c1025f 100644
--- a/gst/videoparsers/gstmpegvideoparse.c
+++ b/gst/videoparsers/gstmpegvideoparse.c
@@ -227,15 +227,27 @@ gst_mpegv_parse_process_config (GstMpegvParse * mpvparse, GstBuffer * buf,
guint size)
{
GList *tmp;
- GstMapInfo map;
guint8 *data;
+ guint8 *data_with_prefix;
+ GstMapInfo map;
gst_buffer_map (buf, &map, GST_MAP_READ);
data = map.data + mpvparse->seq_offset;
+ if (mpvparse->seq_offset < 4) {
+ /* This shouldn't happen, but just in case... */
+ GST_WARNING_OBJECT (mpvparse, "Sequence header start code missing.");
+ return FALSE;
+ }
+ /* pointer to sequence header data including the start code prefix -
+ used for codec private data */
+ data_with_prefix = data - 4;
- /* only do stuff if something new */
+ /* only do stuff if something new; only compare first 11 bytes, changes in
+ quantiser matrix doesn't matter here. Also changing the matrices in
+ codec_data seems to cause problem with decoders */
if (mpvparse->config && size == gst_buffer_get_size (mpvparse->config) &&
- gst_buffer_memcmp (mpvparse->config, 0, data, size) == 0) {
+ gst_buffer_memcmp (mpvparse->config, 0, data_with_prefix, MIN (size,
+ 11)) == 0) {
gst_buffer_unmap (buf, &map);
return TRUE;
}
@@ -271,7 +283,7 @@ gst_mpegv_parse_process_config (GstMpegvParse * mpvparse, GstBuffer * buf,
map.data, map.size, tpoffsz->offset)) {
mpvparse->fps_num =
mpvparse->sequencehdr.fps_n * (mpvparse->sequenceext.fps_n_ext +
- 1) * 2;
+ 1);
mpvparse->fps_den =
mpvparse->sequencehdr.fps_d * (mpvparse->sequenceext.fps_d_ext +
1);
@@ -285,7 +297,7 @@ gst_mpegv_parse_process_config (GstMpegvParse * mpvparse, GstBuffer * buf,
gst_buffer_unref (mpvparse->config);
mpvparse->config = gst_buffer_new_and_alloc (size);
- gst_buffer_fill (mpvparse->config, 0, data, size);
+ gst_buffer_fill (mpvparse->config, 0, data_with_prefix, size);
/* trigger src caps update */
mpvparse->update_caps = TRUE;
@@ -525,9 +537,6 @@ gst_mpegv_parse_handle_frame (GstBaseParse * parse,
GST_LOG_OBJECT (mpvparse, "next start code at %d", codoffsz->offset);
- if (codoffsz->size < 0)
- break;
-
ret = gst_mpegv_parse_process_sc (mpvparse, buf, codoffsz->offset,
codoffsz->type);
@@ -541,15 +550,14 @@ gst_mpegv_parse_handle_frame (GstBaseParse * parse,
end:
if (fsize > 0) {
ret = TRUE;
+ mpvparse->last_sc = -1;
} else if (GST_BASE_PARSE_DRAINING (parse)) {
fsize = buf_size;
ret = TRUE;
} else {
/* resume scan where we left it */
- if (!mpvparse->last_sc)
- *skipsize = mpvparse->last_sc = buf_size - 3;
- else if (mpvparse->typeoffsize)
+ if (mpvparse->typeoffsize)
mpvparse->last_sc = buf_size - 3;
else
*skipsize = 0;
@@ -724,8 +732,10 @@ gst_mpegv_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
GST_BUFFER_DURATION (buffer) = 0;
}
- GST_BUFFER_DURATION (buffer) =
- (1 + mpvparse->frame_repeat_count) * GST_BUFFER_DURATION (buffer);
+ if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DURATION (buffer))) {
+ GST_BUFFER_DURATION (buffer) =
+ (1 + mpvparse->frame_repeat_count) * GST_BUFFER_DURATION (buffer) / 2;
+ }
if (G_UNLIKELY (mpvparse->drop && !mpvparse->config)) {
GST_DEBUG_OBJECT (mpvparse, "dropping frame as no config yet");
diff --git a/gst/videosignal/Makefile.in b/gst/videosignal/Makefile.in
index 43df91bc..6f606d57 100644
--- a/gst/videosignal/Makefile.in
+++ b/gst/videosignal/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -644,7 +646,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/vmnc/Makefile.in b/gst/vmnc/Makefile.in
index 5728e86f..1c1f6b7f 100644
--- a/gst/vmnc/Makefile.in
+++ b/gst/vmnc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -457,6 +457,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -473,6 +475,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -505,10 +508,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -630,7 +632,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/y4m/Makefile.in b/gst/y4m/Makefile.in
index 215fd99d..8dcc5549 100644
--- a/gst/y4m/Makefile.in
+++ b/gst/y4m/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -638,7 +640,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/gst/y4m/gsty4mdec.c b/gst/y4m/gsty4mdec.c
index 177d5c3c..3e5778ce 100644
--- a/gst/y4m/gsty4mdec.c
+++ b/gst/y4m/gsty4mdec.c
@@ -383,14 +383,10 @@ gst_y4m_dec_parse_header (GstY4mDec * y4mdec, char *header)
case '?':
case 'p':
y4mdec->info.interlace_mode = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE;
- y4mdec->info.flags &= ~GST_VIDEO_FLAG_INTERLACED;
break;
case 't':
case 'b':
y4mdec->info.interlace_mode = GST_VIDEO_INTERLACE_MODE_INTERLEAVED;
- y4mdec->info.flags |= GST_VIDEO_FLAG_INTERLACED;
- if (interlaced_char == 't')
- y4mdec->info.flags |= GST_VIDEO_FLAG_TFF;
break;
default:
GST_WARNING_OBJECT (y4mdec, "Unknown interlaced char '%c'",
@@ -539,9 +535,6 @@ gst_y4m_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
GST_BUFFER_DURATION (buffer) =
gst_y4m_dec_frames_to_timestamp (y4mdec, y4mdec->frame_index + 1) -
GST_BUFFER_TIMESTAMP (buffer);
- if (y4mdec->info.flags & GST_VIDEO_FLAG_TFF) {
- GST_BUFFER_FLAG_SET (buffer, GST_VIDEO_BUFFER_FLAG_TFF);
- }
y4mdec->frame_index++;
diff --git a/m4/Makefile.in b/m4/Makefile.in
index 8f77ad17..9b4dfb27 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -393,6 +393,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -409,6 +411,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -441,10 +444,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index 9ff71b76..ca7272e3 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -432,6 +432,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -448,6 +450,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -480,10 +483,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -636,7 +638,7 @@ install-pkgconfigDATA: $(pkgconfig_DATA)
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
diff --git a/po/af.gmo b/po/af.gmo
index ddf80ce1..398daeaf 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 2e066ee0..e761c621 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins 0.7.6\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2004-03-18 14:16+0200\n"
"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
"Language-Team: Afrikaans <i18n@af.org.za>\n"
diff --git a/po/az.gmo b/po/az.gmo
index eda9a964..c13e0ad6 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index c1639b01..85359101 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-0.8.0\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2004-03-19 18:29+0200\n"
"Last-Translator: Metin Amiroff <metin@karegen.com>\n"
"Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
diff --git a/po/bg.gmo b/po/bg.gmo
index 8fae92e6..2a5701c8 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 2200933a..7b522974 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-26 22:30+0300\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
diff --git a/po/ca.gmo b/po/ca.gmo
index 7732d125..30c265ec 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 3444a199..bc79f5ff 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2012-01-01 14:19+0100\n"
"Last-Translator: Gil Forcada <gforcada@gnome.org>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
diff --git a/po/cs.gmo b/po/cs.gmo
index b46c32e9..7232a830 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index cf8a92e1..282d700f 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2009-08-29 01:48+0200\n"
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
diff --git a/po/da.gmo b/po/da.gmo
index 68899008..e644d343 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 4f74f6a3..a2060d50 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad-0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-28 11:28+0200\n"
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
diff --git a/po/de.gmo b/po/de.gmo
index e917ba89..6b33106e 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index d0d25512..93c7e00f 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-28 00:04+0200\n"
"Last-Translator: Christian Kirbach <christian.kirbach@googlemail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
diff --git a/po/el.gmo b/po/el.gmo
index 6f273d84..295cf397 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index e9846c41..547c1046 100644
--- a/po/el.po
+++ b/po/el.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.18.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2010-09-02 12:32+0300\n"
"Last-Translator: Simos Xenitellis <simos.lists@googlemail.com>\n"
"Language-Team: Greek <team@lists.gnome.gr>\n"
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index ca3a62c1..99de6a6a 100644
--- a/po/en_GB.gmo
+++ b/po/en_GB.gmo
Binary files differ
diff --git a/po/en_GB.po b/po/en_GB.po
index 026fd464..4c835f1e 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins 0.8.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2004-04-26 10:41-0400\n"
"Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
"Language-Team: English (British) <en_gb@li.org>\n"
diff --git a/po/eo.gmo b/po/eo.gmo
index 5e9b29c5..0f86ae09 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 0a413d81..b1c05651 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-06-04 22:18+0200\n"
"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
diff --git a/po/es.gmo b/po/es.gmo
index 43cd1725..c18d6619 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 5088724b..78afd7fe 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-10-02 15:47+0200\n"
"Last-Translator: Jorge González González <aloriel@gmail.com>\n"
"Language-Team: Spanish <es@li.org>\n"
diff --git a/po/eu.gmo b/po/eu.gmo
index 37811d0b..ee6af257 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 5fd59617..4c723985 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad-0.10.17.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2010-03-25 12:30+0100\n"
"Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
"Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
diff --git a/po/fi.gmo b/po/fi.gmo
index b776b1aa..0730dd4e 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index d5338a02..64ed06f8 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2009-08-12 22:13+0300\n"
"Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
diff --git a/po/fr.gmo b/po/fr.gmo
index f4b47119..3c980188 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 27d5daea..d7072c58 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-28 09:13+0200\n"
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
"Language-Team: French <traduc@traduc.org>\n"
diff --git a/po/gl.gmo b/po/gl.gmo
index 7a20df57..3161cfdf 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 1b7df917..68d5f6dd 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-09-05 12:50+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
diff --git a/po/gst-plugins-bad-1.0.pot b/po/gst-plugins-bad-1.0.pot
index c27f9ffc..553ff3b8 100644
--- a/po/gst-plugins-bad-1.0.pot
+++ b/po/gst-plugins-bad-1.0.pot
@@ -5,9 +5,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-bad 0.11.90\n"
+"Project-Id-Version: gst-plugins-bad 0.11.91\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/po/hu.gmo b/po/hu.gmo
index af871187..737fcf58 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index fab9f13b..cf4a2f69 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2009-08-12 23:33+0200\n"
"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
diff --git a/po/id.gmo b/po/id.gmo
index 5ac025ae..9d3d2eb2 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index fe004b22..368038b6 100644
--- a/po/id.po
+++ b/po/id.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2012-01-28 10:27+0700\n"
"Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
diff --git a/po/it.gmo b/po/it.gmo
index f4cc808b..e913f59a 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 5f7e7e44..17f8793b 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2009-08-14 00:12+0200\n"
"Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
diff --git a/po/ja.gmo b/po/ja.gmo
index 5e61b7e3..1e94092f 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 99bf440b..45874096 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-26 19:38+0900\n"
"Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
diff --git a/po/ky.gmo b/po/ky.gmo
index 78828023..21b879ab 100644
--- a/po/ky.gmo
+++ b/po/ky.gmo
Binary files differ
diff --git a/po/ky.po b/po/ky.po
index 200cd99f..ed9c6741 100644
--- a/po/ky.po
+++ b/po/ky.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.5\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2007-11-13 17:16+0600\n"
"Last-Translator: Ilyas Bakirov <just_ilyas@yahoo.com>\n"
"Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
diff --git a/po/lt.gmo b/po/lt.gmo
index 2f3fba61..95f6358d 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index c726c098..677ea3f8 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad-0.10.6.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2008-05-14 02:13+0300\n"
"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
diff --git a/po/lv.gmo b/po/lv.gmo
index 5be53e7f..9b85da69 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index 7a6e972e..f87c25a2 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-09-02 12:04-0000\n"
"Last-Translator: Rihards Priedītis <rprieditis@gmail.com>\n"
"Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
diff --git a/po/mt.gmo b/po/mt.gmo
index e29794ed..f969bb83 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index f2e4398f..0c6f0475 100644
--- a/po/mt.po
+++ b/po/mt.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad-0.10.8.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2008-10-26 20:27+0100\n"
"Last-Translator: Michel Bugeja <michelbugeja@rabatmalta.com>\n"
"Language-Team: Maltese <translation-team-mt@lists.sourceforge.net>\n"
diff --git a/po/nb.gmo b/po/nb.gmo
index a8b5f543..327c323f 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index c986d264..e3e4956e 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.5\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2007-11-03 14:46+0100\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
diff --git a/po/nl.gmo b/po/nl.gmo
index 3711e967..83012526 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 6784064e..b4c2d555 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-27 00:16+0200\n"
"Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
diff --git a/po/or.gmo b/po/or.gmo
index 73dbceaf..5bb1cf64 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 734664d2..a1ba83ce 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-0.8.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2004-09-27 13:32+0530\n"
"Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n"
"Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n"
diff --git a/po/pl.gmo b/po/pl.gmo
index 4c20d028..d17891f2 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 69b21432..d278181d 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-26 17:57+0200\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 07a56211..603514ee 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index b33dd804..21fcc4aa 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad-0.10.18.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2010-05-26 00:00-0300\n"
"Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
diff --git a/po/ro.gmo b/po/ro.gmo
index 35ab08ec..460e03e5 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index a8fe25da..43f48fdd 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.18.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2010-08-16 03:11+0300\n"
"Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
diff --git a/po/ru.gmo b/po/ru.gmo
index b489c98e..d285a30b 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 8319c7df..483d04e2 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-26 20:31+0400\n"
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@mx.ru>\n"
diff --git a/po/sk.gmo b/po/sk.gmo
index fd92e045..036b5709 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index d797bcd9..c228f9b9 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.17.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2010-03-08 09:20+0100\n"
"Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
diff --git a/po/sl.gmo b/po/sl.gmo
index 8d079ebc..3c0ff1af 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index f1472445..786668ce 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-26 15:21+0100\n"
"Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n"
"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
diff --git a/po/sq.gmo b/po/sq.gmo
index 083412d9..6ed01a8b 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index d435edce..6c80fb6c 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.7.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2008-08-15 16:07+0200\n"
"Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
"Language-Team: Albanian <translation-team-sq@lists.sourceforge.net>\n"
diff --git a/po/sr.gmo b/po/sr.gmo
index 9fb83582..b4103fea 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 184e70b7..047eabc4 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad-0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-12-04 09:59+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnu@prevod.org>\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 6388887a..3b13485b 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 270a7030..1878bc40 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2009-08-12 20:29+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
diff --git a/po/tr.gmo b/po/tr.gmo
index adea7780..7d3f84e1 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index fcc7db10..f7e06d3a 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad-0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-26 19:21+0200\n"
"Last-Translator: Server Acim <serveracim@gmail.com>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index 6f6ec3d2..a3e7da8d 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 43248585..09b9ef87 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2011-04-30 14:00+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
diff --git a/po/vi.gmo b/po/vi.gmo
index af3a6962..2c0160cf 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 2e5e2274..59a242b2 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.17.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2010-03-06 22:09+1030\n"
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index ea659246..6bd106e8 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 97dd5ccf..c66f1744 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.16.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-04-12 10:47+0200\n"
+"POT-Creation-Date: 2012-05-13 16:42+0200\n"
"PO-Revision-Date: 2009-11-20 18:12中国标准时间\n"
"Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
diff --git a/sys/Makefile.in b/sys/Makefile.in
index 4ded7e5f..4a09fc3d 100644
--- a/sys/Makefile.in
+++ b/sys/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -438,6 +438,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -454,6 +456,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -486,10 +489,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/sys/acmenc/Makefile.in b/sys/acmenc/Makefile.in
index b55ff6ba..4688af44 100644
--- a/sys/acmenc/Makefile.in
+++ b/sys/acmenc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -457,6 +457,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -473,6 +475,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -505,10 +508,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -639,7 +641,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/acmmp3dec/Makefile.in b/sys/acmmp3dec/Makefile.in
index 70a26e9e..db5505f1 100644
--- a/sys/acmmp3dec/Makefile.in
+++ b/sys/acmmp3dec/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -457,6 +457,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -473,6 +475,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -505,10 +508,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -639,7 +641,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/applemedia/Makefile.am b/sys/applemedia/Makefile.am
index e2b5395e..6b75328c 100644
--- a/sys/applemedia/Makefile.am
+++ b/sys/applemedia/Makefile.am
@@ -25,7 +25,6 @@ libgstapplemedia_la_OBJCFLAGS = \
libgstapplemedia_la_LIBADD = \
$(GST_BASE_LIBS) \
$(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-$(GST_API_VERSION) \
-lgstvideo-$(GST_API_VERSION)
libgstapplemedia_la_LIBTOOLFLAGS = --tag=disable-static
diff --git a/sys/applemedia/Makefile.in b/sys/applemedia/Makefile.in
index 2991a493..809c31f2 100644
--- a/sys/applemedia/Makefile.in
+++ b/sys/applemedia/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -516,6 +516,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -532,6 +534,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -564,10 +567,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -656,7 +658,6 @@ libgstapplemedia_la_OBJCFLAGS = \
libgstapplemedia_la_LIBADD = \
$(GST_BASE_LIBS) \
$(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-$(GST_API_VERSION) \
-lgstvideo-$(GST_API_VERSION)
libgstapplemedia_la_LIBTOOLFLAGS = --tag=disable-static
@@ -732,7 +733,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/applemedia/corevideobuffer.c b/sys/applemedia/corevideobuffer.c
index 2666ce8d..67ed5d8c 100644
--- a/sys/applemedia/corevideobuffer.c
+++ b/sys/applemedia/corevideobuffer.c
@@ -126,7 +126,8 @@ gst_core_video_buffer_new (GstCoreMediaCtx * ctx, CVBufferRef cvbuf,
GstVideoMeta *video_meta;
width = vinfo->width;
- video_meta = gst_buffer_add_video_meta_full (buf, GST_VIDEO_FLAG_NONE,
+ video_meta =
+ gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE,
GST_VIDEO_FORMAT_NV12, width, height, n_planes, offset, stride);
}
diff --git a/sys/avc/Makefile.in b/sys/avc/Makefile.in
index b3c1ae27..786f3e27 100644
--- a/sys/avc/Makefile.in
+++ b/sys/avc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -461,6 +461,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -477,6 +479,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -509,10 +512,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -650,7 +652,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/d3dvideosink/Makefile.in b/sys/d3dvideosink/Makefile.in
index da9bdfb4..9b56327e 100644
--- a/sys/d3dvideosink/Makefile.in
+++ b/sys/d3dvideosink/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -467,6 +467,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -483,6 +485,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -515,10 +518,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -652,7 +654,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/d3dvideosink/d3dvideosink.c b/sys/d3dvideosink/d3dvideosink.c
index a7cf4167..7e76c60c 100644
--- a/sys/d3dvideosink/d3dvideosink.c
+++ b/sys/d3dvideosink/d3dvideosink.c
@@ -28,10 +28,10 @@
#define IDT_DEVICELOST 1
/* Provide access to data that will be shared among all instantiations of this element */
-#define GST_D3DVIDEOSINK_SHARED_D3D_LOCK g_static_mutex_lock (&shared_d3d_lock);
-#define GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK g_static_mutex_unlock (&shared_d3d_lock);
-#define GST_D3DVIDEOSINK_SHARED_D3D_HOOK_LOCK g_static_mutex_lock (&shared_d3d_hook_lock);
-#define GST_D3DVIDEOSINK_SHARED_D3D_HOOK_UNLOCK g_static_mutex_unlock (&shared_d3d_hook_lock);
+#define GST_D3DVIDEOSINK_SHARED_D3D_LOCK g_static_mutex_lock (&shared_d3d_lock)
+#define GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK g_static_mutex_unlock (&shared_d3d_lock)
+#define GST_D3DVIDEOSINK_SHARED_D3D_HOOK_LOCK g_static_mutex_lock (&shared_d3d_hook_lock)
+#define GST_D3DVIDEOSINK_SHARED_D3D_HOOK_UNLOCK g_static_mutex_unlock (&shared_d3d_hook_lock)
typedef struct _GstD3DVideoSinkShared GstD3DVideoSinkShared;
struct _GstD3DVideoSinkShared
{
@@ -662,11 +662,9 @@ SharedHiddenWndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
/* Did we receive a message to check if the device is available again? */
if (wParam == IDT_DEVICELOST) {
- GST_D3DVIDEOSINK_SWAP_CHAIN_LOCK (sink);
/* This will synchronously call SharedHiddenWndProc() because this thread is the one that created the window. */
SendMessage (hWnd, WM_DIRECTX_D3D_DEVICELOST, 0,
(LPARAM) shared.device_lost_sink);
- GST_D3DVIDEOSINK_SWAP_CHAIN_UNLOCK (sink);
return 0;
}
break;
@@ -1136,9 +1134,10 @@ gst_d3dvideosink_set_window_for_renderer (GstD3DVideoSink * sink)
/* when we're done. */
GST_DEBUG ("Unable to set window procedure. Error: %s",
g_win32_error_message (GetLastError ()));
- GST_D3DVIDEOSINK_SHARED_D3D_HOOK_LOCK
- gst_d3dvideosink_hook_window_for_renderer (sink);
- GST_D3DVIDEOSINK_SHARED_D3D_HOOK_UNLOCK} else {
+ GST_D3DVIDEOSINK_SHARED_D3D_HOOK_LOCK;
+ gst_d3dvideosink_hook_window_for_renderer (sink);
+ GST_D3DVIDEOSINK_SHARED_D3D_HOOK_UNLOCK;
+ } else {
GST_DEBUG ("Set wndproc to %p from %p", WndProcHook, sink->prevWndProc);
GST_DEBUG ("Set renderer window to %p", sink->window_handle);
}
@@ -1307,12 +1306,13 @@ gst_d3dvideosink_unhook_all_windows (void)
/* Unhook all windows that may be currently hooked. This is mainly a precaution in case */
/* a wayward process doesn't properly set state back to NULL (which would remove the hook). */
- GST_D3DVIDEOSINK_SHARED_D3D_LOCK GST_D3DVIDEOSINK_SHARED_D3D_HOOK_LOCK
+ GST_D3DVIDEOSINK_SHARED_D3D_LOCK;
+ GST_D3DVIDEOSINK_SHARED_D3D_HOOK_LOCK;
{
GList *item;
GstD3DVideoSink *s;
- GST_DEBUG ("Attempting to unhook all windows for process %lu",
+ GST_DEBUG ("Attempting to unhook all windows for process %lu",
GetCurrentProcessId ());
for (item = g_list_first (shared.element_list); item; item = item->next) {
@@ -1320,7 +1320,9 @@ gst_d3dvideosink_unhook_all_windows (void)
gst_d3dvideosink_unhook_window_for_renderer (s);
}
}
-GST_D3DVIDEOSINK_SHARED_D3D_HOOK_UNLOCK GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK}
+ GST_D3DVIDEOSINK_SHARED_D3D_HOOK_UNLOCK;
+ GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK;
+}
static void
gst_d3dvideosink_remove_window_for_renderer (GstD3DVideoSink * sink)
@@ -1345,11 +1347,11 @@ gst_d3dvideosink_remove_window_for_renderer (GstD3DVideoSink * sink)
}
}
- GST_D3DVIDEOSINK_SHARED_D3D_HOOK_LOCK
- gst_d3dvideosink_unhook_window_for_renderer (sink);
- GST_D3DVIDEOSINK_SHARED_D3D_HOOK_UNLOCK
- /* Remove the property associating our sink with the window */
- RemoveProp (sink->window_handle, TEXT ("GstD3DVideoSink"));
+ GST_D3DVIDEOSINK_SHARED_D3D_HOOK_LOCK;
+ gst_d3dvideosink_unhook_window_for_renderer (sink);
+ GST_D3DVIDEOSINK_SHARED_D3D_HOOK_UNLOCK;
+ /* Remove the property associating our sink with the window */
+ RemoveProp (sink->window_handle, TEXT ("GstD3DVideoSink"));
}
}
@@ -1834,7 +1836,7 @@ error:
static gboolean
gst_d3dvideosink_update_all (GstD3DVideoSink * sink)
{
- GST_D3DVIDEOSINK_SHARED_D3D_LOCK {
+ GST_D3DVIDEOSINK_SHARED_D3D_LOCK; {
GList *item;
GstD3DVideoSink *s;
for (item = g_list_first (shared.element_list); item; item = item->next) {
@@ -1843,7 +1845,8 @@ gst_d3dvideosink_update_all (GstD3DVideoSink * sink)
}
}
/*success:*/
- GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK return TRUE;
+ GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK;
+ return TRUE;
/*error:*/
/* GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK */
/* */
@@ -1853,7 +1856,7 @@ gst_d3dvideosink_update_all (GstD3DVideoSink * sink)
static gboolean
gst_d3dvideosink_refresh_all (GstD3DVideoSink * sink)
{
- GST_D3DVIDEOSINK_SHARED_D3D_LOCK {
+ GST_D3DVIDEOSINK_SHARED_D3D_LOCK; {
GList *item;
GstD3DVideoSink *s;
for (item = g_list_first (shared.element_list); item; item = item->next) {
@@ -1862,7 +1865,8 @@ gst_d3dvideosink_refresh_all (GstD3DVideoSink * sink)
}
}
/*success:*/
- GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK return TRUE;
+ GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK;
+ return TRUE;
/*error:*/
/* GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK */
/* return FALSE; */
@@ -1971,10 +1975,10 @@ gst_d3dvideosink_initialize_direct3d (GstD3DVideoSink * sink)
return FALSE;
}
- GST_D3DVIDEOSINK_SHARED_D3D_LOCK
- /* Add to our GList containing all of our elements. */
- /* GLists are doubly-linked lists and calling prepend() prevents it from having to traverse the entire list just to add one item. */
- shared.element_list = g_list_prepend (shared.element_list, sink);
+ GST_D3DVIDEOSINK_SHARED_D3D_LOCK;
+ /* Add to our GList containing all of our elements. */
+ /* GLists are doubly-linked lists and calling prepend() prevents it from having to traverse the entire list just to add one item. */
+ shared.element_list = g_list_prepend (shared.element_list, sink);
/* Increment our count of the number of elements we have */
shared.element_count++;
@@ -2018,9 +2022,11 @@ gst_d3dvideosink_initialize_direct3d (GstD3DVideoSink * sink)
goto error;
success:
- GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK return TRUE;
+ GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK;
+ return TRUE;
error:
- GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK return FALSE;
+ GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK;
+ return FALSE;
}
static gboolean
@@ -2346,9 +2352,9 @@ static gboolean
gst_d3dvideosink_release_direct3d (GstD3DVideoSink * sink)
{
GST_DEBUG ("Cleaning all Direct3D objects");
- GST_D3DVIDEOSINK_SHARED_D3D_LOCK
- /* Be absolutely sure that we've released this sink's hook (if any). */
- gst_d3dvideosink_unhook_window_for_renderer (sink);
+ GST_D3DVIDEOSINK_SHARED_D3D_LOCK;
+ /* Be absolutely sure that we've released this sink's hook (if any). */
+ gst_d3dvideosink_unhook_window_for_renderer (sink);
/* Remove item from the list */
shared.element_list = g_list_remove (shared.element_list, sink);
@@ -2374,7 +2380,8 @@ gst_d3dvideosink_release_direct3d (GstD3DVideoSink * sink)
gst_d3dvideosink_close_shared_hidden_window (sink);
success:
- GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK return TRUE;
+ GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK;
+ return TRUE;
/*error:*/
/* GST_D3DVIDEOSINK_SHARED_D3D_UNLOCK */
/* return FALSE; */
diff --git a/sys/decklink/Makefile.in b/sys/decklink/Makefile.in
index 58d79527..44043936 100644
--- a/sys/decklink/Makefile.in
+++ b/sys/decklink/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -479,6 +479,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -495,6 +497,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -527,10 +530,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -688,7 +690,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/decklink/gstdecklinksrc.cpp b/sys/decklink/gstdecklinksrc.cpp
index d1a776dc..891b88ee 100644
--- a/sys/decklink/gstdecklinksrc.cpp
+++ b/sys/decklink/gstdecklinksrc.cpp
@@ -1153,7 +1153,7 @@ gst_decklink_src_video_src_event (GstPad * pad, GstEvent * event)
static gboolean
gst_decklink_src_video_src_query (GstPad * pad, GstQuery * query)
{
- gboolean ret;
+ gboolean ret = FALSE;
GstDecklinkSrc *decklinksrc;
decklinksrc = GST_DECKLINK_SRC (gst_pad_get_parent (pad));
diff --git a/sys/directdraw/Makefile.in b/sys/directdraw/Makefile.in
index cf98e07f..ea8ad87e 100644
--- a/sys/directdraw/Makefile.in
+++ b/sys/directdraw/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -463,6 +463,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -479,6 +481,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -511,10 +514,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -642,7 +644,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/directsound/Makefile.in b/sys/directsound/Makefile.in
index 404d7a0c..8cc79772 100644
--- a/sys/directsound/Makefile.in
+++ b/sys/directsound/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -463,6 +463,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -479,6 +481,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -511,10 +514,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -642,7 +644,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/dshowdecwrapper/Makefile.in b/sys/dshowdecwrapper/Makefile.in
index ec1c1d78..9a85a8e1 100644
--- a/sys/dshowdecwrapper/Makefile.in
+++ b/sys/dshowdecwrapper/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -466,6 +466,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -482,6 +484,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -514,10 +517,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -647,7 +649,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/dshowsrcwrapper/Makefile.in b/sys/dshowsrcwrapper/Makefile.in
index 6c069b38..8328837a 100644
--- a/sys/dshowsrcwrapper/Makefile.in
+++ b/sys/dshowsrcwrapper/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -396,6 +396,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -412,6 +414,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -444,10 +447,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/sys/dshowvideosink/Makefile.in b/sys/dshowvideosink/Makefile.in
index 4177f61b..f1fce288 100644
--- a/sys/dshowvideosink/Makefile.in
+++ b/sys/dshowvideosink/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -396,6 +396,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -412,6 +414,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -444,10 +447,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/sys/dshowvideosink/dshowvideosink.cpp b/sys/dshowvideosink/dshowvideosink.cpp
index 119962ee..6458b638 100644
--- a/sys/dshowvideosink/dshowvideosink.cpp
+++ b/sys/dshowvideosink/dshowvideosink.cpp
@@ -30,6 +30,10 @@
#include "windows.h"
+#ifdef _WIN64
+#define GWL_WNDPROC GWLP_WNDPROC
+#endif
+
#define WM_GRAPH_NOTIFY WM_APP + 1 /* Private message */
GST_DEBUG_CATEGORY (dshowvideosink_debug);
@@ -556,7 +560,7 @@ LRESULT APIENTRY WndProcHook (HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
/* Handle certain actions specially on the window passed to us.
* Then forward back to the original window.
*/
- GstDshowVideoSink *sink = (GstDshowVideoSink *)GetProp (hWnd, L"GstDShowVideoSink");
+ GstDshowVideoSink *sink = (GstDshowVideoSink *)GetProp (hWnd, (LPCSTR)"GstDShowVideoSink");
g_assert (sink != NULL);
switch (message) {
@@ -635,7 +639,7 @@ gst_dshowvideosink_window_thread (GstDshowVideoSink * sink)
memset (&WndClass, 0, sizeof (WNDCLASS));
WndClass.style = CS_HREDRAW | CS_VREDRAW;
WndClass.hInstance = GetModuleHandle (NULL);
- WndClass.lpszClassName = L"GST-DShowSink";
+ WndClass.lpszClassName = (LPCSTR)"GST-DShowSink";
WndClass.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
@@ -697,8 +701,8 @@ gst_dshowvideosink_window_thread (GstDshowVideoSink * sink)
exstyle = 0;
}
- HWND video_window = CreateWindowEx (exstyle, L"GST-DShowSink",
- L"GStreamer DirectShow sink default window",
+ HWND video_window = CreateWindowEx (exstyle, (LPCSTR)"GST-DShowSink",
+ (LPCSTR)"GStreamer DirectShow sink default window",
style, offx, offy, width, height, NULL, NULL,
WndClass.hInstance, NULL);
if (video_window == NULL) {
@@ -786,7 +790,7 @@ static void gst_dshowvideosink_set_window_for_renderer (GstDshowVideoSink *sink)
/* Application has requested a specific window ID */
sink->prevWndProc = (WNDPROC) SetWindowLong (sink->window_id, GWL_WNDPROC, (LONG)WndProcHook);
GST_DEBUG_OBJECT (sink, "Set wndproc to %p from %p", WndProcHook, sink->prevWndProc);
- SetProp (sink->window_id, L"GstDShowVideoSink", sink);
+ SetProp (sink->window_id, (LPCSTR)"GstDShowVideoSink", sink);
/* This causes the new WNDPROC to become active */
SetWindowPos (sink->window_id, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
@@ -978,7 +982,7 @@ gst_dshowvideosink_stop_graph (GstDshowVideoSink *sink)
if (sink->window_id) {
/* Return control of application window */
SetWindowLong (sink->window_id, GWL_WNDPROC, (LONG)sink->prevWndProc);
- RemoveProp (sink->window_id, L"GstDShowVideoSink");
+ RemoveProp (sink->window_id, (LPCSTR)"GstDShowVideoSink");
SetWindowPos (sink->window_id, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
sink->prevWndProc = NULL;
}
@@ -1928,7 +1932,7 @@ plugin_init (GstPlugin * plugin)
{
/* PRIMARY: this is the best videosink to use on windows */
if (!gst_element_register (plugin, "dshowvideosink",
- GST_RANK_PRIMARY, GST_TYPE_DSHOWVIDEOSINK))
+ GST_RANK_SECONDARY, GST_TYPE_DSHOWVIDEOSINK))
return FALSE;
return TRUE;
diff --git a/sys/dvb/Makefile.in b/sys/dvb/Makefile.in
index 249b835b..8e6e9217 100644
--- a/sys/dvb/Makefile.in
+++ b/sys/dvb/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -469,6 +469,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -485,6 +487,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -517,10 +520,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -672,7 +674,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c
index c13f3363..3fd7963a 100644
--- a/sys/dvb/gstdvbsrc.c
+++ b/sys/dvb/gstdvbsrc.c
@@ -897,8 +897,8 @@ gst_dvbsrc_plugin_init (GstPlugin * plugin)
GST_TYPE_DVBSRC);
}
-static GstBuffer *
-gst_dvbsrc_read_device (GstDvbSrc * object, int size)
+static GstFlowReturn
+gst_dvbsrc_read_device (GstDvbSrc * object, int size, GstBuffer ** buffer)
{
gint count = 0;
gint ret_val = 0;
@@ -906,10 +906,10 @@ gst_dvbsrc_read_device (GstDvbSrc * object, int size)
GstClockTime timeout = object->timeout * GST_USECOND;
GstMapInfo map;
- g_return_val_if_fail (GST_IS_BUFFER (buf), NULL);
+ g_return_val_if_fail (GST_IS_BUFFER (buf), GST_FLOW_ERROR);
if (object->fd_dvr < 0)
- return NULL;
+ return GST_FLOW_ERROR;
gst_buffer_map (buf, &map, GST_MAP_WRITE);
while (count < size) {
@@ -943,20 +943,25 @@ gst_dvbsrc_read_device (GstDvbSrc * object, int size)
gst_buffer_unmap (buf, &map);
gst_buffer_resize (buf, 0, count);
- return buf;
+ *buffer = buf;
-stopped:
- GST_DEBUG_OBJECT (object, "stop called");
- gst_buffer_unmap (buf, &map);
- gst_buffer_unref (buf);
- return NULL;
+ return GST_FLOW_OK;
+stopped:
+ {
+ GST_DEBUG_OBJECT (object, "stop called");
+ gst_buffer_unmap (buf, &map);
+ gst_buffer_unref (buf);
+ return GST_FLOW_WRONG_STATE;
+ }
select_error:
- GST_ELEMENT_ERROR (object, RESOURCE, READ, (NULL),
- ("select error %d: %s (%d)", ret_val, g_strerror (errno), errno));
- gst_buffer_unmap (buf, &map);
- gst_buffer_unref (buf);
- return NULL;
+ {
+ GST_ELEMENT_ERROR (object, RESOURCE, READ, (NULL),
+ ("select error %d: %s (%d)", ret_val, g_strerror (errno), errno));
+ gst_buffer_unmap (buf, &map);
+ gst_buffer_unref (buf);
+ return GST_FLOW_ERROR;
+ }
}
static GstFlowReturn
@@ -979,10 +984,7 @@ gst_dvbsrc_create (GstPushSrc * element, GstBuffer ** buf)
if (object->fd_dvr > -1) {
/* --- Read TS from DVR device --- */
GST_DEBUG_OBJECT (object, "Reading from DVR device");
- *buf = gst_dvbsrc_read_device (object, buffer_size);
- if (*buf != NULL) {
- retval = GST_FLOW_OK;
- }
+ retval = gst_dvbsrc_read_device (object, buffer_size, buf);
if (object->stats_interval != 0 &&
++object->stats_counter == object->stats_interval) {
diff --git a/sys/fbdev/Makefile.in b/sys/fbdev/Makefile.in
index 4a7fd571..2b0be348 100644
--- a/sys/fbdev/Makefile.in
+++ b/sys/fbdev/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -642,7 +644,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/linsys/Makefile.in b/sys/linsys/Makefile.in
index ef70fc94..6b382d60 100644
--- a/sys/linsys/Makefile.in
+++ b/sys/linsys/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -654,7 +656,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/osxvideo/Makefile.in b/sys/osxvideo/Makefile.in
index cdf3a666..4d24d70d 100644
--- a/sys/osxvideo/Makefile.in
+++ b/sys/osxvideo/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -462,6 +462,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -478,6 +480,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -510,10 +513,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -643,7 +645,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/pvr2d/Makefile.in b/sys/pvr2d/Makefile.in
index 91d5bc24..3c6a75e4 100644
--- a/sys/pvr2d/Makefile.in
+++ b/sys/pvr2d/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -464,6 +464,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -480,6 +482,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -512,10 +515,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -651,7 +653,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/pvr2d/gstpvrbufferpool.c b/sys/pvr2d/gstpvrbufferpool.c
index 5b2d43ef..fdc68b95 100644
--- a/sys/pvr2d/gstpvrbufferpool.c
+++ b/sys/pvr2d/gstpvrbufferpool.c
@@ -272,8 +272,9 @@ pvr_buffer_pool_alloc (GstBufferPool * pool, GstBuffer ** buffer,
GST_DEBUG_OBJECT (pool, "adding GstVideoMeta");
/* these are just the defaults for now */
- meta = gst_buffer_add_video_meta (pvr, 0, GST_VIDEO_INFO_FORMAT (info),
- pvrpool->padded_width, pvrpool->padded_height);
+ meta = gst_buffer_add_video_meta (pvr, GST_VIDEO_FRAME_FLAG_NONE,
+ GST_VIDEO_INFO_FORMAT (info), pvrpool->padded_width,
+ pvrpool->padded_height);
if (G_UNLIKELY (meta == NULL))
GST_WARNING_OBJECT (pool, "Failed to add GstVideoMeta");
diff --git a/sys/qtwrapper/Makefile.in b/sys/qtwrapper/Makefile.in
index 9678dd0a..4b53cf0b 100644
--- a/sys/qtwrapper/Makefile.in
+++ b/sys/qtwrapper/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -465,6 +465,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -481,6 +483,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -513,10 +516,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -658,7 +660,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/shm/Makefile.in b/sys/shm/Makefile.in
index 46d4ac00..fbcc215b 100644
--- a/sys/shm/Makefile.in
+++ b/sys/shm/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -467,6 +467,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -483,6 +485,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -515,10 +518,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -644,7 +646,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/shm/shmpipe.c b/sys/shm/shmpipe.c
index 583aa384..bde4c4e7 100644
--- a/sys/shm/shmpipe.c
+++ b/sys/shm/shmpipe.c
@@ -177,7 +177,7 @@ struct CommandBuffer
static ShmArea *sp_open_shm (char *path, int id, mode_t perms, size_t size);
static void sp_close_shm (ShmArea * area);
static int sp_shmbuf_dec (ShmPipe * self, ShmBuffer * buf,
- ShmBuffer * prev_buf);
+ ShmBuffer * prev_buf, ShmClient * client);
static void sp_shm_area_dec (ShmPipe * self, ShmArea * area);
@@ -696,7 +696,7 @@ sp_writer_recv (ShmPipe * self, ShmClient * client)
for (buf = self->buffers; buf; buf = buf->next) {
if (buf->shm_area->id == cb.area_id &&
buf->offset == cb.payload.ack_buffer.offset) {
- sp_shmbuf_dec (self, buf, prev_buf);
+ sp_shmbuf_dec (self, buf, prev_buf, client);
break;
}
prev_buf = buf;
@@ -811,8 +811,27 @@ error:
}
static int
-sp_shmbuf_dec (ShmPipe * self, ShmBuffer * buf, ShmBuffer * prev_buf)
-{
+sp_shmbuf_dec (ShmPipe * self, ShmBuffer * buf, ShmBuffer * prev_buf,
+ ShmClient * client)
+{
+ int i;
+ int had_client = 0;
+
+ /**
+ * Remove client from the list of buffer users. Here we make sure that
+ * if a client closes connection but already decremented the use count
+ * for this buffer, but other clients didn't have time to decrement
+ * buffer will not be freed too early in sp_writer_close_client.
+ */
+ for (i = 0; i < buf->num_clients; i++) {
+ if (buf->clients[i] == client->fd) {
+ buf->clients[i] = -1;
+ had_client = 1;
+ break;
+ }
+ }
+ assert (had_client);
+
buf->use_count--;
if (buf->use_count == 0) {
@@ -827,7 +846,6 @@ sp_shmbuf_dec (ShmPipe * self, ShmBuffer * buf, ShmBuffer * prev_buf)
spalloc_free1 (sizeof (ShmBuffer) + sizeof (int) * buf->num_clients, buf);
return 0;
}
-
return 1;
}
@@ -845,8 +863,7 @@ again:
for (i = 0; i < buffer->num_clients; i++) {
if (buffer->clients[i] == client->fd) {
- buffer->clients[i] = -1;
- if (!sp_shmbuf_dec (self, buffer, prev_buf))
+ if (!sp_shmbuf_dec (self, buffer, prev_buf, client))
goto again;
break;
}
diff --git a/sys/vcd/Makefile.in b/sys/vcd/Makefile.in
index f8d54534..058d2cd9 100644
--- a/sys/vcd/Makefile.in
+++ b/sys/vcd/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -634,7 +636,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/vdpau/Makefile.in b/sys/vdpau/Makefile.in
index 1e7322ea..b0eb5b8a 100644
--- a/sys/vdpau/Makefile.in
+++ b/sys/vdpau/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -508,6 +508,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -524,6 +526,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -556,10 +559,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -717,7 +719,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/vdpau/basevideodecoder/Makefile.in b/sys/vdpau/basevideodecoder/Makefile.in
index c3e258b9..bdb7eb4e 100644
--- a/sys/vdpau/basevideodecoder/Makefile.in
+++ b/sys/vdpau/basevideodecoder/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -435,6 +435,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -451,6 +453,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -483,10 +486,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/sys/vdpau/gstvdp/Makefile.in b/sys/vdpau/gstvdp/Makefile.in
index cf91f3f9..c89c691c 100644
--- a/sys/vdpau/gstvdp/Makefile.in
+++ b/sys/vdpau/gstvdp/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -476,6 +476,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -492,6 +494,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -524,10 +527,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -682,7 +684,7 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libdir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
@@ -841,7 +843,7 @@ install-libgstvdp_@GST_API_VERSION@includeHEADERS: $(libgstvdp_@GST_API_VERSION@
@list='$(libgstvdp_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstvdp_@GST_API_VERSION@includedir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(libgstvdp_@GST_API_VERSION@includedir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(libgstvdp_@GST_API_VERSION@includedir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(libgstvdp_@GST_API_VERSION@includedir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
diff --git a/sys/vdpau/gstvdpsink.c b/sys/vdpau/gstvdpsink.c
index 5a5677eb..35ea182a 100644
--- a/sys/vdpau/gstvdpsink.c
+++ b/sys/vdpau/gstvdpsink.c
@@ -30,6 +30,8 @@
#include <gst/interfaces/navigation.h>
#include <gst/interfaces/xoverlay.h>
+#include <X11/XKBlib.h>
+
/* Debugging category */
#include <gst/gstinfo.h>
@@ -387,7 +389,8 @@ gst_vdp_sink_handle_xevents (VdpSink * vdp_sink)
e.xkey.keycode, e.xkey.x, e.xkey.x);
g_mutex_lock (vdp_sink->x_lock);
keysym =
- XKeycodeToKeysym (vdp_sink->device->display, e.xkey.keycode, 0);
+ XkbKeycodeToKeysym (vdp_sink->device->display, e.xkey.keycode, 0,
+ 0);
g_mutex_unlock (vdp_sink->x_lock);
if (keysym != NoSymbol) {
char *key_str = NULL;
diff --git a/sys/wasapi/Makefile.in b/sys/wasapi/Makefile.in
index 9cd98e0e..1558fb00 100644
--- a/sys/wasapi/Makefile.in
+++ b/sys/wasapi/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -393,6 +393,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -409,6 +411,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -441,10 +444,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/sys/wininet/Makefile.in b/sys/wininet/Makefile.in
index 106ec41e..31b4248f 100644
--- a/sys/wininet/Makefile.in
+++ b/sys/wininet/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -460,6 +460,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -476,6 +478,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -508,10 +511,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -634,7 +636,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/sys/winks/Makefile.in b/sys/winks/Makefile.in
index 8e82a1d0..af24f137 100644
--- a/sys/winks/Makefile.in
+++ b/sys/winks/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -396,6 +396,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -412,6 +414,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -444,10 +447,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/sys/winks/kshelpers.c b/sys/winks/kshelpers.c
index d170180a..787b3158 100644
--- a/sys/winks/kshelpers.c
+++ b/sys/winks/kshelpers.c
@@ -318,7 +318,7 @@ gchar *
ks_guid_to_string (const GUID * guid)
{
return g_strdup_printf ("{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
- guid->Data1, guid->Data2, guid->Data3, guid->Data4[0], guid->Data4[1],
+ guid->Data1, guid->Data, guid->Data3, guid->Data4[0], guid->Data4[1],
guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5],
guid->Data4[6], guid->Data4[7]);
}
diff --git a/sys/winks/ksvideohelpers.c b/sys/winks/ksvideohelpers.c
index 1772e5bc..e8981222 100644
--- a/sys/winks/ksvideohelpers.c
+++ b/sys/winks/ksvideohelpers.c
@@ -229,7 +229,7 @@ ks_video_format_to_structure (GUID subtype_guid, GUID format_guid)
"format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('d', 'v', 's', 'd'),
NULL);
}
- } else if (memcmp (&subtype_guid.Data2, &MEDIASUBTYPE_FOURCC.Data2,
+ } else if (memcmp (&subtype_guid.Data, &MEDIASUBTYPE_FOURCC.Data,
sizeof (subtype_guid) - sizeof (subtype_guid.Data1)) == 0) {
guint8 *p = (guint8 *) & subtype_guid.Data1;
@@ -240,7 +240,7 @@ ks_video_format_to_structure (GUID subtype_guid, GUID format_guid)
if (!structure) {
GST_DEBUG ("Unknown DirectShow Video GUID %08x-%04x-%04x-%04x-%08x%04x",
- subtype_guid.Data1, subtype_guid.Data2, subtype_guid.Data3,
+ subtype_guid.Data1, subtype_guid.Data, subtype_guid.Data3,
*(WORD *) subtype_guid.Data4, *(DWORD *) & subtype_guid.Data4[2],
*(WORD *) & subtype_guid.Data4[6]);
}
diff --git a/sys/winscreencap/Makefile.in b/sys/winscreencap/Makefile.in
index b0501aa2..0753d989 100644
--- a/sys/winscreencap/Makefile.in
+++ b/sys/winscreencap/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -463,6 +463,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -479,6 +481,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -511,10 +514,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -641,7 +643,7 @@ install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) '$(DESTDIR)$(plugindir)' || exit 1; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
}
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 3f00f90b..cd0f3171 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -432,6 +432,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -448,6 +450,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -480,10 +483,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index dd9d357b..e4e6aa9a 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -14,7 +14,7 @@ TESTS_ENVIRONMENT = \
GST_PLUGIN_SYSTEM_PATH= \
GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(GST_PLUGINS_FFMPEG_DIR):$(GST_PLUGINS_UGLY_DIR):$(GST_PLUGINS_GOOD_DIR):$(GST_PLUGINS_BASE_DIR):$(GST_PLUGINS_DIR) \
GST_PLUGIN_LOADING_WHITELIST="gstreamer@$(GST_PLUGINS_DIR):gst-plugins-base@$(GSTPB_PLUGINS_DIR):gst-plugins-good:gst-plugins-ugly:gst-ffmpeg:gst-plugins-bad@$(top_builddir)" \
- GST_STATE_IGNORE_ELEMENTS="apexsink camerabin camerabin2 cdaudio dc1394src \
+ GST_STATE_IGNORE_ELEMENTS="apexsink camerabin cdaudio dc1394src \
dccpclientsrc dccpclientsink dccpserversrc dccpserversink decklinksrc \
decklinksink dvbsrc dvbbasebin dfbvideosink festival gsettingsvideosrc \
gsettingsvideosink gsettingsaudiosrc gsettingsaudiosink linsyssdisrc linsyssdisink nassink \
@@ -147,6 +147,15 @@ else
check_opus =
endif
+if USE_CURL
+check_curl = elements/curlhttpsink \
+ elements/curlfilesink \
+ elements/curlftpsink \
+ elements/curlsmtpsink
+else
+check_curl =
+endif
+
VALGRIND_TO_FIX = \
elements/mpeg2enc \
elements/mplex \
@@ -177,12 +186,12 @@ check_PROGRAMS = \
$(check_timidity) \
$(check_kate) \
$(check_opus) \
+ $(check_curl) \
elements/autoconvert \
elements/autovideoconvert \
elements/asfmux \
elements/baseaudiovisualizer \
elements/camerabin \
- elements/camerabin2 \
elements/dataurisrc \
elements/legacyresample \
$(check_jifmux) \
@@ -306,21 +315,11 @@ elements_camerabin_CFLAGS = \
$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS) -DGST_USE_UNSTABLE_API
elements_camerabin_LDADD = \
- $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
- $(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-@GST_API_VERSION@ \
- $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
-
-elements_camerabin_SOURCES = elements/camerabin.c
-
-elements_camerabin2_CFLAGS = \
- $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS) -DGST_USE_UNSTABLE_API
-elements_camerabin2_LDADD = \
$(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
$(top_builddir)/gst-libs/gst/basecamerabinsrc/libgstbasecamerabinsrc-@GST_API_VERSION@.la \
-lgstpbutils-$(GST_API_VERSION) \
$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
-elements_camerabin2_SOURCES = elements/camerabin2.c
+elements_camerabin_SOURCES = elements/camerabin.c
elements_jifmux_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(EXIF_CFLAGS) $(AM_CFLAGS)
elements_jifmux_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) $(GST_CHECK_LIBS) $(EXIF_LIBS) $(LDADD)
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index bbd924a0..8088a622 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -55,27 +55,28 @@ build_triplet = @build@
host_triplet = @host@
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(top_srcdir)/common/check.mak
-noinst_PROGRAMS = pipelines/colorspace$(EXEEXT) $(am__EXEEXT_19)
+noinst_PROGRAMS = pipelines/colorspace$(EXEEXT) $(am__EXEEXT_20)
check_PROGRAMS = generic/states$(EXEEXT) $(am__EXEEXT_1) \
$(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \
$(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \
$(am__EXEEXT_8) $(am__EXEEXT_9) $(am__EXEEXT_10) \
- $(am__EXEEXT_11) elements/autoconvert$(EXEEXT) \
+ $(am__EXEEXT_11) $(am__EXEEXT_12) \
+ elements/autoconvert$(EXEEXT) \
elements/autovideoconvert$(EXEEXT) elements/asfmux$(EXEEXT) \
elements/baseaudiovisualizer$(EXEEXT) \
- elements/camerabin$(EXEEXT) elements/camerabin2$(EXEEXT) \
- elements/dataurisrc$(EXEEXT) elements/legacyresample$(EXEEXT) \
- $(am__EXEEXT_12) elements/jpegparse$(EXEEXT) $(am__EXEEXT_13) \
+ elements/camerabin$(EXEEXT) elements/dataurisrc$(EXEEXT) \
+ elements/legacyresample$(EXEEXT) $(am__EXEEXT_13) \
+ elements/jpegparse$(EXEEXT) $(am__EXEEXT_14) \
elements/h263parse$(EXEEXT) elements/h264parse$(EXEEXT) \
elements/mpegtsmux$(EXEEXT) elements/mpegvideoparse$(EXEEXT) \
elements/mpeg4videoparse$(EXEEXT) elements/mxfdemux$(EXEEXT) \
elements/mxfmux$(EXEEXT) elements/id3mux$(EXEEXT) \
- pipelines/mxf$(EXEEXT) $(am__EXEEXT_14) \
+ pipelines/mxf$(EXEEXT) $(am__EXEEXT_15) \
elements/rtpmux$(EXEEXT) libs/mpegvideoparser$(EXEEXT) \
libs/h264parser$(EXEEXT) libs/vc1parser$(EXEEXT) \
- $(am__EXEEXT_15) $(am__EXEEXT_16) \
- elements/viewfinderbin$(EXEEXT) $(am__EXEEXT_17) \
- $(am__EXEEXT_18)
+ $(am__EXEEXT_16) $(am__EXEEXT_17) \
+ elements/viewfinderbin$(EXEEXT) $(am__EXEEXT_18) \
+ $(am__EXEEXT_19)
subdir = tests/check
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -140,15 +141,19 @@ libparser_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
@USE_TIMIDITY_TRUE@am__EXEEXT_9 = elements/timidity$(EXEEXT)
@USE_KATE_TRUE@am__EXEEXT_10 = elements/kate$(EXEEXT)
@USE_OPUS_TRUE@am__EXEEXT_11 = elements/opus$(EXEEXT)
-@USE_EXIF_TRUE@am__EXEEXT_12 = elements/jifmux$(EXEEXT)
-@USE_COG_TRUE@am__EXEEXT_13 = elements/logoinsert$(EXEEXT)
-@USE_MIMIC_TRUE@am__EXEEXT_14 = pipelines/mimic$(EXEEXT)
-@USE_SCHRO_TRUE@am__EXEEXT_15 = elements/schroenc$(EXEEXT)
-@USE_VP8_TRUE@am__EXEEXT_16 = elements/vp8enc$(EXEEXT) \
+@USE_CURL_TRUE@am__EXEEXT_12 = elements/curlhttpsink$(EXEEXT) \
+@USE_CURL_TRUE@ elements/curlfilesink$(EXEEXT) \
+@USE_CURL_TRUE@ elements/curlftpsink$(EXEEXT) \
+@USE_CURL_TRUE@ elements/curlsmtpsink$(EXEEXT)
+@USE_EXIF_TRUE@am__EXEEXT_13 = elements/jifmux$(EXEEXT)
+@USE_COG_TRUE@am__EXEEXT_14 = elements/logoinsert$(EXEEXT)
+@USE_MIMIC_TRUE@am__EXEEXT_15 = pipelines/mimic$(EXEEXT)
+@USE_SCHRO_TRUE@am__EXEEXT_16 = elements/schroenc$(EXEEXT)
+@USE_VP8_TRUE@am__EXEEXT_17 = elements/vp8enc$(EXEEXT) \
@USE_VP8_TRUE@ elements/vp8dec$(EXEEXT)
-@USE_ZBAR_TRUE@am__EXEEXT_17 = elements/zbar$(EXEEXT)
-@HAVE_ORC_TRUE@am__EXEEXT_18 = orc/cog$(EXEEXT)
-@USE_NEON_TRUE@am__EXEEXT_19 = elements/neonhttpsrc$(EXEEXT)
+@USE_ZBAR_TRUE@am__EXEEXT_18 = elements/zbar$(EXEEXT)
+@HAVE_ORC_TRUE@am__EXEEXT_19 = orc/cog$(EXEEXT)
+@USE_NEON_TRUE@am__EXEEXT_20 = elements/neonhttpsrc$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
elements_asfmux_SOURCES = elements/asfmux.c
elements_asfmux_OBJECTS = asfmux.$(OBJEXT)
@@ -189,23 +194,29 @@ am_elements_camerabin_OBJECTS = \
elements_camerabin-camerabin.$(OBJEXT)
elements_camerabin_OBJECTS = $(am_elements_camerabin_OBJECTS)
elements_camerabin_DEPENDENCIES = $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
+ $(top_builddir)/gst-libs/gst/basecamerabinsrc/libgstbasecamerabinsrc-@GST_API_VERSION@.la \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
elements_camerabin_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(elements_camerabin_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
-am_elements_camerabin2_OBJECTS = \
- elements_camerabin2-camerabin2.$(OBJEXT)
-elements_camerabin2_OBJECTS = $(am_elements_camerabin2_OBJECTS)
-elements_camerabin2_DEPENDENCIES = $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
- $(top_builddir)/gst-libs/gst/basecamerabinsrc/libgstbasecamerabinsrc-@GST_API_VERSION@.la \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
-elements_camerabin2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(elements_camerabin2_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
+elements_curlfilesink_SOURCES = elements/curlfilesink.c
+elements_curlfilesink_OBJECTS = curlfilesink.$(OBJEXT)
+elements_curlfilesink_LDADD = $(LDADD)
+elements_curlfilesink_DEPENDENCIES = $(am__DEPENDENCIES_1)
+elements_curlftpsink_SOURCES = elements/curlftpsink.c
+elements_curlftpsink_OBJECTS = curlftpsink.$(OBJEXT)
+elements_curlftpsink_LDADD = $(LDADD)
+elements_curlftpsink_DEPENDENCIES = $(am__DEPENDENCIES_1)
+elements_curlhttpsink_SOURCES = elements/curlhttpsink.c
+elements_curlhttpsink_OBJECTS = curlhttpsink.$(OBJEXT)
+elements_curlhttpsink_LDADD = $(LDADD)
+elements_curlhttpsink_DEPENDENCIES = $(am__DEPENDENCIES_1)
+elements_curlsmtpsink_SOURCES = elements/curlsmtpsink.c
+elements_curlsmtpsink_OBJECTS = curlsmtpsink.$(OBJEXT)
+elements_curlsmtpsink_LDADD = $(LDADD)
+elements_curlsmtpsink_DEPENDENCIES = $(am__DEPENDENCIES_1)
elements_dataurisrc_SOURCES = elements/dataurisrc.c
elements_dataurisrc_OBJECTS = dataurisrc.$(OBJEXT)
elements_dataurisrc_LDADD = $(LDADD)
@@ -443,11 +454,12 @@ SOURCES = $(libparser_la_SOURCES) elements/asfmux.c \
elements/assrender.c elements/autoconvert.c \
elements/autovideoconvert.c \
$(elements_baseaudiovisualizer_SOURCES) \
- $(elements_camerabin_SOURCES) $(elements_camerabin2_SOURCES) \
- elements/dataurisrc.c elements/faac.c elements/faad.c \
- elements/h263parse.c elements/h264parse.c elements/id3mux.c \
- $(elements_jifmux_SOURCES) elements/jpegparse.c \
- elements/kate.c elements/legacyresample.c \
+ $(elements_camerabin_SOURCES) elements/curlfilesink.c \
+ elements/curlftpsink.c elements/curlhttpsink.c \
+ elements/curlsmtpsink.c elements/dataurisrc.c elements/faac.c \
+ elements/faad.c elements/h263parse.c elements/h264parse.c \
+ elements/id3mux.c $(elements_jifmux_SOURCES) \
+ elements/jpegparse.c elements/kate.c elements/legacyresample.c \
elements/logoinsert.c elements/mpeg2enc.c \
elements/mpeg4videoparse.c elements/mpegtsmux.c \
elements/mpegvideoparse.c elements/mplex.c elements/mxfdemux.c \
@@ -463,11 +475,12 @@ DIST_SOURCES = $(libparser_la_SOURCES) elements/asfmux.c \
elements/assrender.c elements/autoconvert.c \
elements/autovideoconvert.c \
$(elements_baseaudiovisualizer_SOURCES) \
- $(elements_camerabin_SOURCES) $(elements_camerabin2_SOURCES) \
- elements/dataurisrc.c elements/faac.c elements/faad.c \
- elements/h263parse.c elements/h264parse.c elements/id3mux.c \
- $(elements_jifmux_SOURCES) elements/jpegparse.c \
- elements/kate.c elements/legacyresample.c \
+ $(elements_camerabin_SOURCES) elements/curlfilesink.c \
+ elements/curlftpsink.c elements/curlhttpsink.c \
+ elements/curlsmtpsink.c elements/dataurisrc.c elements/faac.c \
+ elements/faad.c elements/h263parse.c elements/h264parse.c \
+ elements/id3mux.c $(elements_jifmux_SOURCES) \
+ elements/jpegparse.c elements/kate.c elements/legacyresample.c \
elements/logoinsert.c elements/mpeg2enc.c \
elements/mpeg4videoparse.c elements/mpegtsmux.c \
elements/mpegvideoparse.c elements/mplex.c elements/mxfdemux.c \
@@ -775,6 +788,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -791,6 +806,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -823,10 +839,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -914,7 +929,7 @@ TESTS_ENVIRONMENT = \
GST_PLUGIN_SYSTEM_PATH= \
GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(GST_PLUGINS_FFMPEG_DIR):$(GST_PLUGINS_UGLY_DIR):$(GST_PLUGINS_GOOD_DIR):$(GST_PLUGINS_BASE_DIR):$(GST_PLUGINS_DIR) \
GST_PLUGIN_LOADING_WHITELIST="gstreamer@$(GST_PLUGINS_DIR):gst-plugins-base@$(GSTPB_PLUGINS_DIR):gst-plugins-good:gst-plugins-ugly:gst-ffmpeg:gst-plugins-bad@$(top_builddir)" \
- GST_STATE_IGNORE_ELEMENTS="apexsink camerabin camerabin2 cdaudio dc1394src \
+ GST_STATE_IGNORE_ELEMENTS="apexsink camerabin cdaudio dc1394src \
dccpclientsrc dccpclientsink dccpserversrc dccpserversink decklinksrc \
decklinksink dvbsrc dvbbasebin dfbvideosink festival gsettingsvideosrc \
gsettingsvideosink gsettingsaudiosrc gsettingsaudiosink linsyssdisrc linsyssdisink nassink \
@@ -963,6 +978,12 @@ SUPPRESSIONS = $(top_srcdir)/common/gst.supp $(srcdir)/gst-plugins-bad.supp
@USE_ZBAR_TRUE@check_zbar = elements/zbar
@USE_OPUS_FALSE@check_opus =
@USE_OPUS_TRUE@check_opus = elements/opus
+@USE_CURL_FALSE@check_curl =
+@USE_CURL_TRUE@check_curl = elements/curlhttpsink \
+@USE_CURL_TRUE@ elements/curlfilesink \
+@USE_CURL_TRUE@ elements/curlftpsink \
+@USE_CURL_TRUE@ elements/curlsmtpsink
+
VALGRIND_TO_FIX = \
elements/mpeg2enc \
elements/mplex \
@@ -1073,22 +1094,12 @@ elements_camerabin_CFLAGS = \
$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS) -DGST_USE_UNSTABLE_API
elements_camerabin_LDADD = \
- $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
- $(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-@GST_API_VERSION@ \
- $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
-
-elements_camerabin_SOURCES = elements/camerabin.c
-elements_camerabin2_CFLAGS = \
- $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS) -DGST_USE_UNSTABLE_API
-
-elements_camerabin2_LDADD = \
$(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
$(top_builddir)/gst-libs/gst/basecamerabinsrc/libgstbasecamerabinsrc-@GST_API_VERSION@.la \
-lgstpbutils-$(GST_API_VERSION) \
$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
-elements_camerabin2_SOURCES = elements/camerabin2.c
+elements_camerabin_SOURCES = elements/camerabin.c
elements_jifmux_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(EXIF_CFLAGS) $(AM_CFLAGS)
elements_jifmux_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) $(GST_CHECK_LIBS) $(EXIF_LIBS) $(LDADD)
elements_jifmux_SOURCES = elements/jifmux.c
@@ -1190,9 +1201,18 @@ elements/baseaudiovisualizer$(EXEEXT): $(elements_baseaudiovisualizer_OBJECTS) $
elements/camerabin$(EXEEXT): $(elements_camerabin_OBJECTS) $(elements_camerabin_DEPENDENCIES) $(EXTRA_elements_camerabin_DEPENDENCIES) elements/$(am__dirstamp)
@rm -f elements/camerabin$(EXEEXT)
$(AM_V_CCLD)$(elements_camerabin_LINK) $(elements_camerabin_OBJECTS) $(elements_camerabin_LDADD) $(LIBS)
-elements/camerabin2$(EXEEXT): $(elements_camerabin2_OBJECTS) $(elements_camerabin2_DEPENDENCIES) $(EXTRA_elements_camerabin2_DEPENDENCIES) elements/$(am__dirstamp)
- @rm -f elements/camerabin2$(EXEEXT)
- $(AM_V_CCLD)$(elements_camerabin2_LINK) $(elements_camerabin2_OBJECTS) $(elements_camerabin2_LDADD) $(LIBS)
+elements/curlfilesink$(EXEEXT): $(elements_curlfilesink_OBJECTS) $(elements_curlfilesink_DEPENDENCIES) $(EXTRA_elements_curlfilesink_DEPENDENCIES) elements/$(am__dirstamp)
+ @rm -f elements/curlfilesink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(elements_curlfilesink_OBJECTS) $(elements_curlfilesink_LDADD) $(LIBS)
+elements/curlftpsink$(EXEEXT): $(elements_curlftpsink_OBJECTS) $(elements_curlftpsink_DEPENDENCIES) $(EXTRA_elements_curlftpsink_DEPENDENCIES) elements/$(am__dirstamp)
+ @rm -f elements/curlftpsink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(elements_curlftpsink_OBJECTS) $(elements_curlftpsink_LDADD) $(LIBS)
+elements/curlhttpsink$(EXEEXT): $(elements_curlhttpsink_OBJECTS) $(elements_curlhttpsink_DEPENDENCIES) $(EXTRA_elements_curlhttpsink_DEPENDENCIES) elements/$(am__dirstamp)
+ @rm -f elements/curlhttpsink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(elements_curlhttpsink_OBJECTS) $(elements_curlhttpsink_LDADD) $(LIBS)
+elements/curlsmtpsink$(EXEEXT): $(elements_curlsmtpsink_OBJECTS) $(elements_curlsmtpsink_DEPENDENCIES) $(EXTRA_elements_curlsmtpsink_DEPENDENCIES) elements/$(am__dirstamp)
+ @rm -f elements/curlsmtpsink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(elements_curlsmtpsink_OBJECTS) $(elements_curlsmtpsink_LDADD) $(LIBS)
elements/dataurisrc$(EXEEXT): $(elements_dataurisrc_OBJECTS) $(elements_dataurisrc_DEPENDENCIES) $(EXTRA_elements_dataurisrc_DEPENDENCIES) elements/$(am__dirstamp)
@rm -f elements/dataurisrc$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(elements_dataurisrc_OBJECTS) $(elements_dataurisrc_LDADD) $(LIBS)
@@ -1330,12 +1350,15 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/autoconvert.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/autovideoconvert.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colorspace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curlfilesink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curlftpsink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curlhttpsink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curlsmtpsink.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dataurisrc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_assrender-assrender.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_baseaudiovisualizer-baseaudiovisualizer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_baseaudiovisualizer-gstbaseaudiovisualizer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_camerabin-camerabin.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_camerabin2-camerabin2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_faac-faac.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_faad-faad.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_jifmux-jifmux.Po@am__quote@
@@ -1500,19 +1523,61 @@ elements_camerabin-camerabin.obj: elements/camerabin.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_camerabin_CFLAGS) $(CFLAGS) -c -o elements_camerabin-camerabin.obj `if test -f 'elements/camerabin.c'; then $(CYGPATH_W) 'elements/camerabin.c'; else $(CYGPATH_W) '$(srcdir)/elements/camerabin.c'; fi`
-elements_camerabin2-camerabin2.o: elements/camerabin2.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_camerabin2_CFLAGS) $(CFLAGS) -MT elements_camerabin2-camerabin2.o -MD -MP -MF $(DEPDIR)/elements_camerabin2-camerabin2.Tpo -c -o elements_camerabin2-camerabin2.o `test -f 'elements/camerabin2.c' || echo '$(srcdir)/'`elements/camerabin2.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_camerabin2-camerabin2.Tpo $(DEPDIR)/elements_camerabin2-camerabin2.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/camerabin2.c' object='elements_camerabin2-camerabin2.o' libtool=no @AMDEPBACKSLASH@
+curlfilesink.o: elements/curlfilesink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curlfilesink.o -MD -MP -MF $(DEPDIR)/curlfilesink.Tpo -c -o curlfilesink.o `test -f 'elements/curlfilesink.c' || echo '$(srcdir)/'`elements/curlfilesink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curlfilesink.Tpo $(DEPDIR)/curlfilesink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/curlfilesink.c' object='curlfilesink.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curlfilesink.o `test -f 'elements/curlfilesink.c' || echo '$(srcdir)/'`elements/curlfilesink.c
+
+curlfilesink.obj: elements/curlfilesink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curlfilesink.obj -MD -MP -MF $(DEPDIR)/curlfilesink.Tpo -c -o curlfilesink.obj `if test -f 'elements/curlfilesink.c'; then $(CYGPATH_W) 'elements/curlfilesink.c'; else $(CYGPATH_W) '$(srcdir)/elements/curlfilesink.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curlfilesink.Tpo $(DEPDIR)/curlfilesink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/curlfilesink.c' object='curlfilesink.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curlfilesink.obj `if test -f 'elements/curlfilesink.c'; then $(CYGPATH_W) 'elements/curlfilesink.c'; else $(CYGPATH_W) '$(srcdir)/elements/curlfilesink.c'; fi`
+
+curlftpsink.o: elements/curlftpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curlftpsink.o -MD -MP -MF $(DEPDIR)/curlftpsink.Tpo -c -o curlftpsink.o `test -f 'elements/curlftpsink.c' || echo '$(srcdir)/'`elements/curlftpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curlftpsink.Tpo $(DEPDIR)/curlftpsink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/curlftpsink.c' object='curlftpsink.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curlftpsink.o `test -f 'elements/curlftpsink.c' || echo '$(srcdir)/'`elements/curlftpsink.c
+
+curlftpsink.obj: elements/curlftpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curlftpsink.obj -MD -MP -MF $(DEPDIR)/curlftpsink.Tpo -c -o curlftpsink.obj `if test -f 'elements/curlftpsink.c'; then $(CYGPATH_W) 'elements/curlftpsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/curlftpsink.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curlftpsink.Tpo $(DEPDIR)/curlftpsink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/curlftpsink.c' object='curlftpsink.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curlftpsink.obj `if test -f 'elements/curlftpsink.c'; then $(CYGPATH_W) 'elements/curlftpsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/curlftpsink.c'; fi`
+
+curlhttpsink.o: elements/curlhttpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curlhttpsink.o -MD -MP -MF $(DEPDIR)/curlhttpsink.Tpo -c -o curlhttpsink.o `test -f 'elements/curlhttpsink.c' || echo '$(srcdir)/'`elements/curlhttpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curlhttpsink.Tpo $(DEPDIR)/curlhttpsink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/curlhttpsink.c' object='curlhttpsink.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curlhttpsink.o `test -f 'elements/curlhttpsink.c' || echo '$(srcdir)/'`elements/curlhttpsink.c
+
+curlhttpsink.obj: elements/curlhttpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curlhttpsink.obj -MD -MP -MF $(DEPDIR)/curlhttpsink.Tpo -c -o curlhttpsink.obj `if test -f 'elements/curlhttpsink.c'; then $(CYGPATH_W) 'elements/curlhttpsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/curlhttpsink.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curlhttpsink.Tpo $(DEPDIR)/curlhttpsink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/curlhttpsink.c' object='curlhttpsink.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curlhttpsink.obj `if test -f 'elements/curlhttpsink.c'; then $(CYGPATH_W) 'elements/curlhttpsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/curlhttpsink.c'; fi`
+
+curlsmtpsink.o: elements/curlsmtpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curlsmtpsink.o -MD -MP -MF $(DEPDIR)/curlsmtpsink.Tpo -c -o curlsmtpsink.o `test -f 'elements/curlsmtpsink.c' || echo '$(srcdir)/'`elements/curlsmtpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curlsmtpsink.Tpo $(DEPDIR)/curlsmtpsink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/curlsmtpsink.c' object='curlsmtpsink.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_camerabin2_CFLAGS) $(CFLAGS) -c -o elements_camerabin2-camerabin2.o `test -f 'elements/camerabin2.c' || echo '$(srcdir)/'`elements/camerabin2.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curlsmtpsink.o `test -f 'elements/curlsmtpsink.c' || echo '$(srcdir)/'`elements/curlsmtpsink.c
-elements_camerabin2-camerabin2.obj: elements/camerabin2.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_camerabin2_CFLAGS) $(CFLAGS) -MT elements_camerabin2-camerabin2.obj -MD -MP -MF $(DEPDIR)/elements_camerabin2-camerabin2.Tpo -c -o elements_camerabin2-camerabin2.obj `if test -f 'elements/camerabin2.c'; then $(CYGPATH_W) 'elements/camerabin2.c'; else $(CYGPATH_W) '$(srcdir)/elements/camerabin2.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_camerabin2-camerabin2.Tpo $(DEPDIR)/elements_camerabin2-camerabin2.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/camerabin2.c' object='elements_camerabin2-camerabin2.obj' libtool=no @AMDEPBACKSLASH@
+curlsmtpsink.obj: elements/curlsmtpsink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curlsmtpsink.obj -MD -MP -MF $(DEPDIR)/curlsmtpsink.Tpo -c -o curlsmtpsink.obj `if test -f 'elements/curlsmtpsink.c'; then $(CYGPATH_W) 'elements/curlsmtpsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/curlsmtpsink.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curlsmtpsink.Tpo $(DEPDIR)/curlsmtpsink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/curlsmtpsink.c' object='curlsmtpsink.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_camerabin2_CFLAGS) $(CFLAGS) -c -o elements_camerabin2-camerabin2.obj `if test -f 'elements/camerabin2.c'; then $(CYGPATH_W) 'elements/camerabin2.c'; else $(CYGPATH_W) '$(srcdir)/elements/camerabin2.c'; fi`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curlsmtpsink.obj `if test -f 'elements/curlsmtpsink.c'; then $(CYGPATH_W) 'elements/curlsmtpsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/curlsmtpsink.c'; fi`
dataurisrc.o: elements/dataurisrc.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dataurisrc.o -MD -MP -MF $(DEPDIR)/dataurisrc.Tpo -c -o dataurisrc.o `test -f 'elements/dataurisrc.c' || echo '$(srcdir)/'`elements/dataurisrc.c
diff --git a/tests/check/elements/camerabin.c b/tests/check/elements/camerabin.c
index 6d353d97..a5f94a65 100644
--- a/tests/check/elements/camerabin.c
+++ b/tests/check/elements/camerabin.c
@@ -1,7 +1,8 @@
/* GStreamer
*
* unit test for camerabin basic operations
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
+ * Copyright (C) 2010 Nokia Corporation <multimedia@maemo.org>
+ * Copyright (C) 2010 Thiago Santos <thiago.sousa.santos@collabora.co.uk>
*
*
* This library is free software; you can redistribute it and/or
@@ -28,182 +29,221 @@
#include <glib.h>
#include <glib/gstdio.h>
#include <gst/gst.h>
+#include <gst/video/video.h>
#include <gst/check/gstcheck.h>
-#include <gst/interfaces/photography.h>
+#include <gst/basecamerabinsrc/gstbasecamerasrc.h>
+#include <gst/pbutils/encoding-profile.h>
-#define SINGLE_IMAGE_FILENAME "image"
-#define SINGLE_IMAGE_WITH_FLAGS_FILENAME "image_with_flags"
-#define SEQUENTIAL_IMAGES_FILENAME "sequential_image"
-#define BURST_IMAGE_FILENAME "burst_image"
+#define IMAGE_FILENAME "image"
#define VIDEO_FILENAME "video"
-#define VIDEO_WITH_FLAGS_FILENAME "video_with_flags"
-#define VIDEO_PAUSE_FILENAME "video_pause"
-#define VIDEO_NOAUDIO_FILENAME "video_noaudio"
-#define CYCLE_IMAGE_FILENAME "cycle_image"
-#define CYCLE_VIDEO_FILENAME "cycle_video"
-#define TAGLISTS_COUNT 3
-#define CYCLE_COUNT_MAX 2
-#define SEQUENTIAL_IMAGES_COUNT 3
-#define MAX_BURST_IMAGES 10
-#define PHOTO_SETTING_DELAY_US 0
+#define CAPTURE_COUNT 3
+#define VIDEO_DURATION 5
+
+#define VIDEO_PAD_SUPPORTED_CAPS "video/x-raw, format=RGB, width=600, height=480"
+#define IMAGE_PAD_SUPPORTED_CAPS "video/x-raw, format=RGB, width=800, height=600"
+
+/* custom test camera src element */
+#define GST_TYPE_TEST_CAMERA_SRC \
+ (gst_test_camera_src_get_type())
+#define GST_TEST_CAMERA_SRC(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TEST_CAMERA_SRC,GstTestCameraSrc))
+#define GST_TEST_CAMERA_SRC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_TEST_CAMERA_SRC,GstTestCameraSrcClass))
+#define GST_IS_TEST_REVERSE_NEGOTIATION_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TEST_CAMERA_SRC))
+#define GST_IS_TEST_REVERSE_NEGOTIATION_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_TEST_CAMERA_SRC))
+#define GST_TEST_CAMERA_SRC_CAST(obj) ((GstTestCameraSrc *)obj)
+
+typedef struct _GstTestCameraSrc GstTestCameraSrc;
+typedef struct _GstTestCameraSrcClass GstTestCameraSrcClass;
+struct _GstTestCameraSrc
+{
+ GstBaseCameraSrc element;
-static GstElement *camera;
-static guint bus_source;
-static GMainLoop *main_loop;
-static guint cycle_count = 0;
-static gboolean received_preview_msg = FALSE;
-static GstTagList *taglists[TAGLISTS_COUNT];
-static GstTagList *validation_taglist;
+ GstPad *vfpad;
+ GstPad *vidpad;
+ GstPad *imgpad;
-/* helper function for filenames */
-static const gchar *
-make_test_file_name (const gchar * base_name, gint num)
+ GstCameraBinMode mode;
+};
+
+struct _GstTestCameraSrcClass
{
- static gchar file_name[1000];
+ GstBaseCameraSrcClass parent_class;
+};
- g_snprintf (file_name, 999, "%s" G_DIR_SEPARATOR_S
- "gstcamerabintest_%s_%03d.cap", g_get_tmp_dir (), base_name, num);
+GType gst_test_camera_src_get_type (void);
- GST_INFO ("capturing to: %s (cycle: %d)", file_name, cycle_count);
- return file_name;
-}
+#define gst_test_camera_src_parent_class parent_class
+G_DEFINE_TYPE (GstTestCameraSrc, gst_test_camera_src, GST_TYPE_BASE_CAMERA_SRC);
-/* burst capture is not supported in camerabin for the moment */
-#ifdef ENABLE_BURST_CAPTURE
-static const gchar *
-make_test_seq_file_name (const gchar * base_name)
+static gboolean
+gst_test_camera_src_set_mode (GstBaseCameraSrc * src, GstCameraBinMode mode)
{
- static gchar file_name[1000];
+ GstTestCameraSrc *self = GST_TEST_CAMERA_SRC (src);
- g_snprintf (file_name, 999, "%s" G_DIR_SEPARATOR_S "%02u_%s",
- g_get_tmp_dir (), captured_images, base_name);
-
- GST_INFO ("capturing to: %s", file_name);
- return file_name;
+ self->mode = mode;
+ return TRUE;
}
-#endif
-/* signal handlers */
static gboolean
-handle_image_captured_cb (gpointer data)
+gst_test_camera_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
{
- GMainLoop *loop = (GMainLoop *) data;
+ GstTestCameraSrc *self = (GstTestCameraSrc *) GST_PAD_PARENT (pad);
+ GstCaps *result = NULL;
+ gboolean ret = FALSE;
- /* unblock viewfinder */
- g_object_set (camera, "block-after-capture", FALSE, NULL);
+ switch (GST_QUERY_TYPE (query)) {
+ case GST_QUERY_CAPS:
+ if (pad == self->vfpad) {
+ result = gst_caps_new_any ();
+ } else if (pad == self->vidpad) {
+ result = gst_caps_from_string (VIDEO_PAD_SUPPORTED_CAPS);
+ } else if (pad == self->imgpad) {
+ result = gst_caps_from_string (IMAGE_PAD_SUPPORTED_CAPS);
+ } else {
+ g_assert_not_reached ();
+ }
+ if (result) {
+ GstCaps *filter;
+
+ gst_query_parse_caps (query, &filter);
+ if (filter) {
+ GstCaps *tmp;
+ tmp = gst_caps_intersect (result, filter);
+ gst_caps_replace (&result, tmp);
+ gst_caps_unref (tmp);
+ }
+ gst_query_set_caps_result (query, result);
+ ret = TRUE;
+ }
+ break;
+ default:
+ break;
+ }
- GST_DEBUG ("handle_image_captured_cb, cycle: %d", cycle_count);
- if (cycle_count == 0) {
- GST_DEBUG ("all cycles done");
- g_main_loop_quit (loop);
- } else {
- /* Set video recording mode */
- g_object_set (camera, "mode", 1,
- "filename", make_test_file_name (CYCLE_VIDEO_FILENAME, cycle_count),
- NULL);
- /* Record video */
- g_signal_emit_by_name (camera, "capture-start", NULL);
- g_usleep (G_USEC_PER_SEC);
- g_signal_emit_by_name (camera, "capture-stop", NULL);
- GST_DEBUG ("video captured");
-
- /* Set still image mode */
- g_object_set (camera, "mode", 0,
- "filename", make_test_file_name (CYCLE_IMAGE_FILENAME, cycle_count),
- NULL);
-
- cycle_count--;
- GST_DEBUG ("next cycle: %d", cycle_count);
-
- /* Take a picture */
- g_signal_emit_by_name (camera, "capture-start", NULL);
- }
- GST_DEBUG ("handle_image_captured_cb done");
- return FALSE;
+ return ret;
}
-static gboolean
-capture_done (GstElement * elem, const gchar * filename, gpointer user_data)
+static void
+gst_test_camera_src_class_init (GstTestCameraSrcClass * klass)
{
- GMainLoop *loop = (GMainLoop *) user_data;
+ GstBaseCameraSrcClass *gstbasecamera_class;
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
- g_idle_add ((GSourceFunc) handle_image_captured_cb, loop);
+ gstbasecamera_class = GST_BASE_CAMERA_SRC_CLASS (klass);
+ gstbasecamera_class->set_mode = gst_test_camera_src_set_mode;
- GST_INFO ("image saved");
+ gst_element_class_set_details_simple (gstelement_class,
+ "Test Camera Src",
+ "Camera/Src",
+ "Some test camera src",
+ "Thiago Santos <thiago.sousa.santos@collabora.com>");
+}
- return FALSE;
+static void
+gst_test_camera_src_init (GstTestCameraSrc * self)
+{
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (parent_class);
+ GstPadTemplate *template;
+
+ /* create pads */
+ template = gst_element_class_get_pad_template (gstelement_class,
+ GST_BASE_CAMERA_SRC_VIEWFINDER_PAD_NAME);
+ self->vfpad = gst_pad_new_from_template (template,
+ GST_BASE_CAMERA_SRC_VIEWFINDER_PAD_NAME);
+ gst_element_add_pad (GST_ELEMENT_CAST (self), self->vfpad);
+
+ template = gst_element_class_get_pad_template (gstelement_class,
+ GST_BASE_CAMERA_SRC_IMAGE_PAD_NAME);
+ self->imgpad = gst_pad_new_from_template (template,
+ GST_BASE_CAMERA_SRC_IMAGE_PAD_NAME);
+ gst_element_add_pad (GST_ELEMENT_CAST (self), self->imgpad);
+
+ template = gst_element_class_get_pad_template (gstelement_class,
+ GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME);
+ self->vidpad = gst_pad_new_from_template (template,
+ GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME);
+ gst_element_add_pad (GST_ELEMENT_CAST (self), self->vidpad);
+
+ /* add get caps functions */
+ gst_pad_set_query_function (self->vfpad, gst_test_camera_src_query);
+ gst_pad_set_query_function (self->vidpad, gst_test_camera_src_query);
+ gst_pad_set_query_function (self->imgpad, gst_test_camera_src_query);
}
-/* configuration */
+/* end of custom test camera src element */
+
+
+static GstElement *camera;
+static guint bus_source;
+static GMainLoop *main_loop;
+static gint capture_count = 0;
+guint32 test_id = 0;
+static gchar *image_filename;
+static gchar *video_filename;
+
+static GstBuffer *preview_buffer;
+static gchar *preview_filename;
+static GstCaps *preview_caps;
+static GstTagList *tags_found;
static gboolean
-set_and_check_camerabin_element (GstElement * camera, const char *property,
- GstElement * element)
-{
- GstElement *element_check;
- gboolean ret = FALSE;
+validity_bus_cb (GstBus * bus, GstMessage * message, gpointer data);
- if (element) {
- g_object_set (camera, property, element, NULL);
- g_object_get (camera, property, &element_check, NULL);
- if (element_check == element)
- ret = TRUE;
- if (element_check)
- g_object_unref (element_check);
- }
- return ret;
-}
+static GstMessage *wait_for_element_message (GstElement * camera,
+ const gchar * name, GstClockTime timeout);
static void
-setup_camerabin_elements (GstElement * camera)
+validate_taglist_foreach (const GstTagList * list, const gchar * tag,
+ gpointer user_data)
{
- GstElement *vfsink, *audiosrc, *videosrc, *audioenc, *videoenc, *imageenc,
- *videomux, *viewfinder_filter, *imagepp, *videopp, *formatter;
- GstCaps *audiocaps, *videocaps;
+ GstTagList *other = GST_TAG_LIST (user_data);
- /* Use fakesink for view finder */
- vfsink = gst_element_factory_make ("fakesink", NULL);
- g_object_set (vfsink, "sync", TRUE, NULL);
- audiosrc = gst_element_factory_make ("audiotestsrc", NULL);
- g_object_set (audiosrc, "is-live", TRUE, NULL);
- videosrc = gst_element_factory_make ("videotestsrc", NULL);
- /* Set pattern to white (3) to avoid timeouts */
- g_object_set (videosrc, "is-live", TRUE, "pattern", 3, NULL);
- audioenc = gst_element_factory_make ("capsfilter", NULL);
- audiocaps = gst_caps_from_string ("audio/x-raw-int");
- g_object_set (audioenc, "caps", audiocaps, NULL);
- gst_caps_unref (audiocaps);
- videoenc = gst_element_factory_make ("capsfilter", NULL);
- videocaps = gst_caps_from_string ("video/x-raw-yuv");
- g_object_set (videoenc, "caps", videocaps, NULL);
- gst_caps_unref (videocaps);
- videomux = gst_element_factory_make ("avimux", NULL);
- imageenc = gst_element_factory_make ("jpegenc", NULL);
- viewfinder_filter = gst_element_factory_make ("identity", NULL);
- imagepp = gst_element_factory_make ("identity", NULL);
- videopp = gst_element_factory_make ("identity", NULL);
- formatter = gst_element_factory_make ("jifmux", NULL);
-
- if (set_and_check_camerabin_element (camera, "viewfinder-sink", vfsink)
- && set_and_check_camerabin_element (camera, "audio-source", audiosrc)
- && set_and_check_camerabin_element (camera, "video-source", videosrc)
- && set_and_check_camerabin_element (camera, "audio-encoder", audioenc)
- && set_and_check_camerabin_element (camera, "video-encoder", videoenc)
- && set_and_check_camerabin_element (camera, "image-encoder", imageenc)
- && set_and_check_camerabin_element (camera, "video-muxer", videomux)
- && set_and_check_camerabin_element (camera, "viewfinder-filter",
- viewfinder_filter)
- && set_and_check_camerabin_element (camera, "image-post-processing",
- imagepp)
- && set_and_check_camerabin_element (camera, "video-post-processing",
- videopp)
- && set_and_check_camerabin_element (camera, "image-formatter", formatter)) {
- GST_INFO ("element properties set and checked");
+ const GValue *val1 = gst_tag_list_get_value_index (list, tag, 0);
+ const GValue *val2 = gst_tag_list_get_value_index (other, tag, 0);
+
+ GST_DEBUG ("checking tag '%s'", tag);
+
+ fail_if (val1 == NULL);
+ fail_if (val2 == NULL);
+
+ fail_unless (gst_value_compare (val1, val2) == GST_VALUE_EQUAL);
+}
+
+
+/* helper function for filenames */
+static gchar *
+make_test_file_name (const gchar * base_name, gint num)
+{
+ /* num == -1 means to keep the %d in the resulting string to be used on
+ * multifilesink like location */
+ if (num == -1) {
+ return g_strdup_printf ("%s" G_DIR_SEPARATOR_S
+ "gstcamerabintest_%s_%u_%%03d.cap", g_get_tmp_dir (), base_name,
+ test_id);
} else {
- GST_WARNING ("error setting up test plugins");
+ return g_strdup_printf ("%s" G_DIR_SEPARATOR_S
+ "gstcamerabintest_%s_%u_%03d.cap", g_get_tmp_dir (), base_name,
+ test_id, num);
}
}
+static const gchar *
+make_const_file_name (const gchar * filename, gint num)
+{
+ static gchar file_name[1000];
+
+ /* num == -1 means to keep the %d in the resulting string to be used on
+ * multifilesink like location */
+ g_snprintf (file_name, 999, filename, num);
+
+ return file_name;
+}
+
+/* configuration */
+
static gboolean
capture_bus_cb (GstBus * bus, GstMessage * message, gpointer data)
{
@@ -246,90 +286,135 @@ capture_bus_cb (GstBus * bus, GstMessage * message, gpointer data)
break;
default:
st = gst_message_get_structure (message);
- if (st && gst_structure_has_name (st, "image-captured")) {
- gboolean ready = FALSE;
+ if (st && gst_structure_has_name (st, "image-done")) {
GST_INFO ("image captured");
- g_object_get (camera, "ready-for-capture", &ready, NULL);
- fail_if (!ready, "not ready for capture");
+ } else if (st && gst_structure_has_name (st,
+ GST_BASE_CAMERA_SRC_PREVIEW_MESSAGE_NAME)) {
+ GstBuffer *buf;
+ const GValue *value;
+
+ value = gst_structure_get_value (st, "buffer");
+ fail_unless (value != NULL);
+ buf = gst_value_get_buffer (value);
+
+ if (preview_buffer)
+ gst_buffer_unref (preview_buffer);
+ preview_buffer = gst_buffer_ref (buf);
+ g_free (preview_filename);
+ preview_filename = g_strdup (gst_structure_get_string (st, "location"));
}
break;
}
return TRUE;
}
-static GstBusSyncReply
-bus_sync_callback (GstBus * bus, GstMessage * message, gpointer data)
+static void
+check_preview_image (GstElement * camera, const gchar * filename, gint index)
{
- const GstStructure *st;
- st = gst_message_get_structure (message);
- if (st) {
- if (gst_structure_has_name (st, "preview-image")) {
- GST_DEBUG ("get preview-image message");
- received_preview_msg = TRUE;
+ gchar *prev_filename = NULL;
+
+ if (!preview_buffer && camera) {
+ GstMessage *msg = wait_for_element_message (camera,
+ GST_BASE_CAMERA_SRC_PREVIEW_MESSAGE_NAME, GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
+ }
+ fail_unless (preview_buffer != NULL);
+ if (filename) {
+ if (index >= 0) {
+ prev_filename = g_strdup_printf (filename, index);
+ } else {
+ prev_filename = g_strdup (filename);
}
+ fail_unless (preview_filename != NULL);
+ fail_unless (strcmp (preview_filename, prev_filename) == 0);
}
+ if (preview_caps) {
+ /* TODO porting
+ fail_unless (GST_BUFFER_CAPS (preview_buffer) != NULL);
+ fail_unless (gst_caps_can_intersect (GST_BUFFER_CAPS (preview_buffer),
+ preview_caps));
+ */
+ }
+ g_free (prev_filename);
+}
+
+static void
+extract_jpeg_tags (const gchar * filename, gint num)
+{
+ GstBus *bus;
+ GMainLoop *loop = g_main_loop_new (NULL, FALSE);
+ const gchar *filepath = make_const_file_name (filename, num);
+ gchar *pipeline_str = g_strdup_printf ("filesrc location=%s ! "
+ "jpegparse ! fakesink", filepath);
+ GstElement *pipeline;
+ guint source;
+ pipeline = gst_parse_launch (pipeline_str, NULL);
+ fail_unless (pipeline != NULL);
+ g_free (pipeline_str);
- return GST_BUS_PASS;
+ bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
+ source = gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
+ g_main_loop_run (loop);
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+
+ gst_object_unref (bus);
+ g_source_remove (source);
+ gst_object_unref (pipeline);
+ g_main_loop_unref (loop);
}
static void
-setup (void)
+setup_wrappercamerabinsrc_videotestsrc (void)
{
- GstTagSetter *setter;
- gchar *desc_str;
- GstCaps *filter_caps;
GstBus *bus;
- gint i;
+ GstElement *vfbin;
+ GstElement *fakevideosink;
+ GstElement *src;
+ GstElement *testsrc;
+ GstElement *audiosrc;
GST_INFO ("init");
+ test_id = g_random_int ();
+ bus_source = 0;
+
main_loop = g_main_loop_new (NULL, TRUE);
camera = gst_check_setup_element ("camerabin");
+ fakevideosink = gst_element_factory_make ("fakesink", NULL);
+ src = gst_element_factory_make ("wrappercamerabinsrc", NULL);
+ testsrc = gst_element_factory_make ("videotestsrc", NULL);
+ audiosrc = gst_element_factory_make ("audiotestsrc", NULL);
- setup_camerabin_elements (camera);
+ preview_caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
+ 320, "height", G_TYPE_INT, 240, NULL);
- g_signal_connect (camera, "image-done", G_CALLBACK (capture_done), main_loop);
+ g_object_set (G_OBJECT (testsrc), "is-live", TRUE, NULL);
+ g_object_set (G_OBJECT (audiosrc), "is-live", TRUE, NULL);
+ g_object_set (G_OBJECT (src), "video-source", testsrc, NULL);
+ g_object_set (G_OBJECT (camera), "camera-source", src, "preview-caps",
+ preview_caps, "post-previews", TRUE, "audio-source", audiosrc, NULL);
+ gst_object_unref (src);
+ gst_object_unref (testsrc);
+ gst_object_unref (audiosrc);
+
+ vfbin = gst_bin_get_by_name (GST_BIN (camera), "vf-bin");
+ g_object_set (G_OBJECT (vfbin), "video-sink", fakevideosink, NULL);
+ gst_object_unref (vfbin);
+ gst_object_unref (fakevideosink);
bus = gst_pipeline_get_bus (GST_PIPELINE (camera));
bus_source = gst_bus_add_watch (bus, (GstBusFunc) capture_bus_cb, main_loop);
- gst_bus_set_sync_handler (bus, bus_sync_callback, main_loop);
gst_object_unref (bus);
- filter_caps = gst_caps_from_string ("video/x-raw-yuv,format=(fourcc)I420");
- g_object_set (G_OBJECT (camera), "filter-caps", filter_caps, NULL);
- gst_caps_unref (filter_caps);
-
- /* force a low framerate here to not timeout the tests because of the
- * encoders */
- g_signal_emit_by_name (camera, "set-video-resolution-fps", 320, 240, 5, 1,
- NULL);
-
- /* Set some default tags */
- setter = GST_TAG_SETTER (camera);
- desc_str = g_strdup_printf ("Created by %s", g_get_real_name ());
-
- gst_tag_setter_add_tags (setter, GST_TAG_MERGE_REPLACE,
- GST_TAG_DESCRIPTION, desc_str, NULL);
- g_free (desc_str);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
-
- /* create the taglists */
- for (i = 0; i < TAGLISTS_COUNT; i++) {
- taglists[i] = gst_tag_list_new (GST_TAG_ARTIST, "test-artist",
- GST_TAG_GEO_LOCATION_LONGITUDE, g_random_double_range (-180, 180),
- GST_TAG_GEO_LOCATION_LATITUDE, g_random_double_range (-90, 90),
- GST_TAG_GEO_LOCATION_ELEVATION, g_random_double_range (0, 3000), NULL);
- }
+ tags_found = NULL;
+ capture_count = 0;
+ image_filename = make_test_file_name (IMAGE_FILENAME, -1);
+ video_filename = make_test_file_name (VIDEO_FILENAME, -1);
GST_INFO ("init finished");
}
@@ -337,43 +422,41 @@ setup (void)
static void
teardown (void)
{
- gint i;
-
- g_source_remove (bus_source);
+ gst_element_set_state (camera, GST_STATE_NULL);
if (camera)
gst_check_teardown_element (camera);
+ camera = NULL;
- for (i = 0; i < TAGLISTS_COUNT; i++) {
- gst_tag_list_free (taglists[i]);
- }
+ if (bus_source)
+ g_source_remove (bus_source);
- GST_INFO ("done");
-}
+ if (main_loop)
+ g_main_loop_unref (main_loop);
+ main_loop = NULL;
-static void
-test_camerabin_properties (GstElement * cam)
-{
- guint flags;
- gfloat zoom;
- gboolean mute;
+ if (preview_caps)
+ gst_caps_unref (preview_caps);
+ preview_caps = NULL;
- flags = 0x1f;
- g_object_set (G_OBJECT (cam), "flags", flags, NULL);
- g_object_get (G_OBJECT (cam), "flags", &flags, NULL);
- fail_if (flags != 0x1f, "setting camerabin flags failed");
+ if (preview_buffer)
+ gst_buffer_unref (preview_buffer);
+ preview_buffer = NULL;
- zoom = 2.0;
- g_object_set (G_OBJECT (cam), "zoom", zoom, NULL);
- g_object_get (G_OBJECT (cam), "zoom", &zoom, NULL);
- fail_if (zoom != 2.0, "setting camerabin zoom failed");
- g_object_set (G_OBJECT (cam), "zoom", 1.0f, NULL);
+ g_free (preview_filename);
+ preview_filename = NULL;
- mute = TRUE;
- g_object_set (G_OBJECT (cam), "mute", mute, NULL);
- g_object_get (G_OBJECT (cam), "mute", &mute, NULL);
- fail_if (mute != TRUE, "setting camerabin mute failed");
- g_object_set (G_OBJECT (cam), "mute", FALSE, NULL);
+ if (tags_found)
+ gst_tag_list_free (tags_found);
+ tags_found = NULL;
+
+ g_free (video_filename);
+ video_filename = NULL;
+
+ g_free (image_filename);
+ image_filename = NULL;
+
+ GST_INFO ("done");
}
static gboolean
@@ -381,95 +464,105 @@ validity_bus_cb (GstBus * bus, GstMessage * message, gpointer data)
{
GMainLoop *loop = (GMainLoop *) data;
switch (GST_MESSAGE_TYPE (message)) {
- case GST_MESSAGE_ERROR:
+ case GST_MESSAGE_ERROR:{
+ GError *err = NULL;
+ gchar *debug = NULL;
+
+ gst_message_parse_error (message, &err, &debug);
+
+ GST_ERROR ("Error: %s : %s", err->message, debug);
+ g_error_free (err);
+ g_free (debug);
+
fail_if (TRUE, "validating captured data failed");
g_main_loop_quit (loop);
+ }
break;
case GST_MESSAGE_EOS:
g_main_loop_quit (loop);
GST_DEBUG ("eos");
break;
case GST_MESSAGE_TAG:{
- GstTagList *tags = NULL;
- gst_message_parse_tag (message, &tags);
- if (validation_taglist) {
- gst_tag_list_insert (validation_taglist, tags, GST_TAG_MERGE_REPLACE);
- gst_tag_list_free (tags);
- } else
- validation_taglist = tags;
- break;
+ GstTagList *taglist = NULL;
+
+ gst_message_parse_tag (message, &taglist);
+ if (tags_found) {
+ gst_tag_list_insert (tags_found, taglist, GST_TAG_MERGE_REPLACE);
+ gst_tag_list_free (taglist);
+ } else {
+ tags_found = taglist;
+ }
+ GST_DEBUG ("tags: %" GST_PTR_FORMAT, tags_found);
}
+ break;
default:
break;
}
return TRUE;
}
-static void
-validate_taglist_foreach (const GstTagList * list, const gchar * tag,
- gpointer user_data)
-{
- GstTagList *other = GST_TAG_LIST (user_data);
-
- const GValue *val1 = gst_tag_list_get_value_index (list, tag, 0);
- const GValue *val2 = gst_tag_list_get_value_index (other, tag, 0);
-
- fail_if (val1 == NULL);
- fail_if (val2 == NULL);
-
- fail_unless (gst_value_can_intersect (val1, val2));
-}
-
-static void
-extract_jpeg_tags (const gchar * filename, gint num)
+/* checks that tags in @tags_a are in @tags_b */
+static gboolean
+taglist_is_subset (GstTagList * tags_a, GstTagList * tags_b)
{
- guint source;
- GstBus *bus;
- GMainLoop *loop = g_main_loop_new (NULL, FALSE);
- const gchar *filepath = make_test_file_name (filename, num);
- gchar *pipeline_str = g_strdup_printf ("filesrc location=%s ! "
- "jpegparse ! fakesink", filepath);
- GstElement *pipeline;
-
- pipeline = gst_parse_launch (pipeline_str, NULL);
- fail_unless (pipeline != NULL);
- g_free (pipeline_str);
-
- bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
- source = gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
-
- gst_element_set_state (pipeline, GST_STATE_PLAYING);
- g_main_loop_run (loop);
- gst_element_set_state (pipeline, GST_STATE_NULL);
-
- g_main_loop_unref (loop);
- g_source_remove (source);
- gst_object_unref (bus);
- gst_object_unref (pipeline);
+ gst_tag_list_foreach (tags_a, validate_taglist_foreach, tags_b);
+ return TRUE;
}
/* Validate captured files by playing them with playbin
* and checking that no errors occur. */
+#define WITH_AUDIO TRUE
+#define NO_AUDIO FALSE
static gboolean
-check_file_validity (const gchar * filename, gint num, GstTagList * taglist)
+check_file_validity (const gchar * filename, gint num, GstTagList * taglist,
+ gint width, gint height, gboolean has_audio)
{
- guint source;
GstBus *bus;
+ GstPad *pad;
+ GstCaps *caps;
+ gint caps_width, caps_height;
+ GstState state;
+ guint source;
+
GMainLoop *loop = g_main_loop_new (NULL, FALSE);
- GstElement *playbin = gst_element_factory_make ("playbin2", NULL);
+ GstElement *playbin = gst_element_factory_make ("playbin", NULL);
GstElement *fakevideo = gst_element_factory_make ("fakesink", NULL);
GstElement *fakeaudio = gst_element_factory_make ("fakesink", NULL);
- gchar *uri = g_strconcat ("file://", make_test_file_name (filename, num),
+ gchar *uri = g_strconcat ("file://", make_const_file_name (filename, num),
NULL);
GST_DEBUG ("checking uri: %s", uri);
g_object_set (G_OBJECT (playbin), "uri", uri, "video-sink", fakevideo,
"audio-sink", fakeaudio, NULL);
- validation_taglist = NULL;
bus = gst_pipeline_get_bus (GST_PIPELINE (playbin));
source = gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
+ gst_element_set_state (playbin, GST_STATE_PAUSED);
+ gst_element_get_state (playbin, &state, NULL, GST_SECOND * 3);
+
+ if (width != 0 && height != 0) {
+ g_signal_emit_by_name (playbin, "get-video-pad", 0, &pad, NULL);
+ g_assert (pad != NULL);
+ caps = gst_pad_get_current_caps (pad);
+
+ g_assert (gst_structure_get_int (gst_caps_get_structure (caps, 0),
+ "width", &caps_width));
+ g_assert (gst_structure_get_int (gst_caps_get_structure (caps, 0),
+ "height", &caps_height));
+
+ g_assert (width == caps_width);
+ g_assert (height == caps_height);
+
+ gst_caps_unref (caps);
+ gst_object_unref (pad);
+ }
+ if (has_audio) {
+ g_signal_emit_by_name (playbin, "get-audio-pad", 0, &pad, NULL);
+ g_assert (pad != NULL);
+ gst_object_unref (pad);
+ }
+
gst_element_set_state (playbin, GST_STATE_PLAYING);
g_main_loop_run (loop);
gst_element_set_state (playbin, GST_STATE_NULL);
@@ -480,18 +573,10 @@ check_file_validity (const gchar * filename, gint num, GstTagList * taglist)
extract_jpeg_tags (filename, num);
}
- /* check taglist */
if (taglist) {
- fail_if (validation_taglist == NULL);
-
- GST_DEBUG ("Comparing taglists %" GST_PTR_FORMAT "; with %" GST_PTR_FORMAT,
- taglist, validation_taglist);
-
- gst_tag_list_foreach (taglist, validate_taglist_foreach,
- validation_taglist);
+ fail_unless (tags_found != NULL);
+ fail_unless (taglist_is_subset (taglist, tags_found));
}
- if (validation_taglist)
- gst_tag_list_free (validation_taglist);
g_free (uri);
g_source_remove (source);
@@ -507,340 +592,993 @@ remove_file (const gchar * fn_template, guint num)
{
const gchar *fn;
- fn = make_test_file_name (fn_template, num);
+ fn = make_const_file_name (fn_template, num);
GST_INFO ("removing %s", fn);
g_unlink (fn);
}
-GST_START_TEST (test_single_image_capture)
+static GstPadProbeReturn
+filter_buffer_count (GstPad * pad, GstPadProbeInfo * info, gpointer data)
+{
+ gint *counter = data;
+
+ (*counter)++;
+
+ return GST_PAD_PROBE_OK;
+}
+
+static GstMessage *
+wait_for_element_message (GstElement * camera, const gchar * name,
+ GstClockTime timeout)
+{
+ GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (camera));
+ GstMessage *msg;
+
+ while (1) {
+ msg = gst_bus_timed_pop_filtered (bus, timeout, GST_MESSAGE_ERROR |
+ GST_MESSAGE_EOS | GST_MESSAGE_ELEMENT);
+
+ if (msg) {
+ if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ELEMENT) {
+ const GstStructure *st = gst_message_get_structure (msg);
+ if (gst_structure_has_name (st,
+ GST_BASE_CAMERA_SRC_PREVIEW_MESSAGE_NAME)) {
+ GstBuffer *buf;
+ const GValue *value;
+
+ value = gst_structure_get_value (st, "buffer");
+ fail_unless (value != NULL);
+ buf = gst_value_get_buffer (value);
+
+ if (preview_buffer)
+ gst_buffer_unref (preview_buffer);
+ preview_buffer = gst_buffer_ref (buf);
+ g_free (preview_filename);
+ preview_filename =
+ g_strdup (gst_structure_get_string (st, "location"));
+ }
+
+ if (gst_structure_has_name (st, name))
+ break;
+ else
+ gst_message_unref (msg);
+ } else {
+ gst_message_unref (msg);
+ msg = NULL;
+ break;
+ }
+ }
+ }
+
+ gst_object_unref (bus);
+ return msg;
+}
+
+static void
+wait_for_idle_state (void)
{
- gboolean ready = FALSE;
gboolean idle = FALSE;
+
+ /* not the ideal way, but should be enough for testing */
+ while (idle == FALSE) {
+ g_object_get (camera, "idle", &idle, NULL);
+ if (idle)
+ break;
+
+ GST_LOG ("waiting for idle state..");
+ g_usleep (G_USEC_PER_SEC / 5);
+ }
+ fail_unless (idle);
+}
+
+GST_START_TEST (test_single_image_capture)
+{
+ gboolean idle;
+ GstMessage *msg;
if (!camera)
return;
- /* Test photography iface settings */
- gst_element_get_state (GST_ELEMENT (camera), NULL, NULL, (2 * GST_SECOND));
- test_camerabin_properties (camera);
+ /* set still image mode */
+ g_object_set (camera, "mode", 1, "location", image_filename, NULL);
+
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
+ GST_INFO ("starting capture");
+ fail_unless (camera != NULL);
+ g_object_get (camera, "idle", &idle, NULL);
+ fail_unless (idle);
+ g_signal_emit_by_name (camera, "start-capture", NULL);
- /* set flags to disable additional elements */
- g_object_set (camera, "flags", 0, NULL);
+ msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
- /* set still image mode */
- g_object_set (camera, "mode", 0,
- "filename", make_test_file_name (SINGLE_IMAGE_FILENAME, 0), NULL);
+ /* check that we got a preview image */
+ check_preview_image (camera, image_filename, 0);
- /* don't run viewfinder after capture */
- g_object_set (camera, "block-after-capture", TRUE, NULL);
+ wait_for_idle_state ();
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ check_file_validity (image_filename, 0, NULL, 0, 0, NO_AUDIO);
+ remove_file (image_filename, 0);
+}
- /* check that capturing is possible */
- g_object_get (camera, "ready-for-capture", &ready, NULL);
- fail_if (!ready, "not ready for capture");
+GST_END_TEST;
- /* check that the camera is idle */
- g_object_get (camera, "idle", &idle, NULL);
- fail_if (!idle, "camera should be idle");
- GST_INFO ("starting capture");
- g_signal_emit_by_name (camera, "capture-start", NULL);
+GST_START_TEST (test_multiple_image_captures)
+{
+ gboolean idle;
+ gint i;
+ gint widths[] = { 800, 640, 1280 };
+ gint heights[] = { 600, 480, 1024 };
- g_object_get (camera, "ready-for-capture", &ready, NULL);
- fail_if (ready, "ready for capture during capture");
+ if (!camera)
+ return;
- g_main_loop_run (main_loop);
+ /* set still image mode */
+ g_object_set (camera, "mode", 1, "location", image_filename, NULL);
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
+ fail_unless (camera != NULL);
g_object_get (camera, "idle", &idle, NULL);
- fail_if (!idle, "camera should be idle");
+ fail_unless (idle);
+ GST_INFO ("starting capture");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ for (i = 0; i < 3; i++) {
+ GstMessage *msg;
+ GstCaps *caps;
+
+ caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
+ widths[i], "height", G_TYPE_INT, heights[i], NULL);
+
+ g_object_set (camera, "image-capture-caps", caps, NULL);
+ gst_caps_unref (caps);
+
+ g_signal_emit_by_name (camera, "start-capture", NULL);
- check_file_validity (SINGLE_IMAGE_FILENAME, 0, NULL);
- remove_file (SINGLE_IMAGE_FILENAME, 0);
+ msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
+
+ check_preview_image (camera, image_filename, i);
+ }
+
+ wait_for_idle_state ();
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ for (i = 0; i < 3; i++) {
+ check_file_validity (image_filename, i, NULL, widths[i], heights[i],
+ NO_AUDIO);
+ remove_file (image_filename, i);
+ }
}
GST_END_TEST;
-GST_START_TEST (test_single_image_capture_with_flags)
+GST_START_TEST (test_single_video_recording)
{
+ GstMessage *msg;
+ gboolean idle;
if (!camera)
return;
- /* set flags to enable modifier elements */
- g_object_set (camera, "flags", 79, NULL);
+ /* Set video recording mode */
+ g_object_set (camera, "mode", 2, "location", video_filename, NULL);
- /* set still image mode */
- g_object_set (camera, "mode", 0,
- "filename", make_test_file_name (SINGLE_IMAGE_WITH_FLAGS_FILENAME, 0),
- NULL);
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
GST_INFO ("starting capture");
- g_signal_emit_by_name (camera, "capture-start", NULL);
+ fail_unless (camera != NULL);
+ g_object_get (camera, "idle", &idle, NULL);
+ fail_unless (idle);
+ g_signal_emit_by_name (camera, "start-capture", NULL);
+ g_object_get (camera, "idle", &idle, NULL);
+ fail_unless (!idle);
+
+ /* Record for one seconds */
+ g_timeout_add_seconds (VIDEO_DURATION, (GSourceFunc) g_main_loop_quit,
+ main_loop);
g_main_loop_run (main_loop);
+
+ g_signal_emit_by_name (camera, "stop-capture", NULL);
+
+ check_preview_image (camera, video_filename, 0);
+
+ msg = wait_for_element_message (camera, "video-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
+
+ wait_for_idle_state ();
gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- check_file_validity (SINGLE_IMAGE_WITH_FLAGS_FILENAME, 0, NULL);
- remove_file (SINGLE_IMAGE_WITH_FLAGS_FILENAME, 0);
+ check_file_validity (video_filename, 0, NULL, 0, 0, WITH_AUDIO);
+ remove_file (video_filename, 0);
+
}
GST_END_TEST;
-GST_START_TEST (test_video_recording)
+GST_START_TEST (test_multiple_video_recordings)
{
- GstCaps *preview_caps;
- gboolean idle = FALSE;
- preview_caps = gst_caps_from_string ("video/x-raw-rgb,width=320,height=240");
+ gboolean idle;
+ gint i;
+ gint widths[] = { 800, 640, 1280 };
+ gint heights[] = { 600, 480, 1024 };
+ gint fr[] = { 20, 30, 5 };
if (!camera)
return;
- /* set flags to disable additional elements */
- g_object_set (camera, "flags", 0, NULL);
-
/* Set video recording mode */
- g_object_set (camera, "mode", 1,
- "filename", make_test_file_name (VIDEO_WITH_FLAGS_FILENAME, 0), NULL);
+ g_object_set (camera, "mode", 2, "location", video_filename, NULL);
- /* Set preview-caps */
- g_object_set (camera, "preview-caps", preview_caps, NULL);
- gst_caps_unref (preview_caps);
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
- /* check that the camera is idle */
+ GST_INFO ("starting capture");
+ fail_unless (camera != NULL);
g_object_get (camera, "idle", &idle, NULL);
- fail_if (!idle, "camera should be idle");
+ fail_unless (idle);
+ for (i = 0; i < 3; i++) {
+ GstMessage *msg;
+ GstCaps *caps;
+
+ caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
+ widths[i], "height", G_TYPE_INT, heights[i], "framerate",
+ GST_TYPE_FRACTION, fr[i], 1, NULL);
+
+ g_object_set (camera, "video-capture-caps", caps, NULL);
+
+ gst_caps_unref (caps);
+
+ GST_LOG ("starting #%d with caps %" GST_PTR_FORMAT, i, caps);
+ g_signal_emit_by_name (camera, "start-capture", NULL);
+
+ g_object_get (camera, "idle", &idle, NULL);
+ fail_unless (!idle);
+
+ g_timeout_add_seconds (VIDEO_DURATION, (GSourceFunc) g_main_loop_quit,
+ main_loop);
+ g_main_loop_run (main_loop);
+
+ GST_LOG ("stopping run %d", i);
+ g_signal_emit_by_name (camera, "stop-capture", NULL);
+
+ msg = wait_for_element_message (camera, "video-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
+
+ GST_LOG ("video done, checking preview image");
+ check_preview_image (camera, video_filename, i);
+
+ GST_LOG ("waiting for idle state");
+ wait_for_idle_state ();
+ GST_LOG ("finished run %d", i);
+ }
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+
+ for (i = 0; i < 3; i++) {
+ check_file_validity (video_filename, i, NULL, widths[i], heights[i],
+ WITH_AUDIO);
+ remove_file (video_filename, i);
+ }
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_image_video_cycle)
+{
+ gint i;
+
+ if (!camera)
+ return;
+
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
GST_INFO ("starting capture");
- g_signal_emit_by_name (camera, "capture-start", NULL);
+ for (i = 0; i < 2; i++) {
+ GstMessage *msg;
+ const gchar *img_filename;
+ const gchar *vid_filename;
- g_object_get (camera, "idle", &idle, NULL);
- fail_if (idle, "camera should not be idle");
+ wait_for_idle_state ();
- /* Record for one seconds */
- g_usleep (G_USEC_PER_SEC);
+ /* take a picture */
+ img_filename = make_const_file_name (image_filename, i);
+ g_object_set (camera, "mode", 1, NULL);
+ g_object_set (camera, "location", img_filename, NULL);
+ g_signal_emit_by_name (camera, "start-capture", NULL);
- g_signal_emit_by_name (camera, "capture-stop", NULL);
+ msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
- g_object_get (camera, "idle", &idle, NULL);
- fail_if (!idle, "camera should be idle");
+ check_preview_image (camera, img_filename, i);
+
+ /* now go to video */
+ vid_filename = make_const_file_name (video_filename, i);
+ g_object_set (camera, "mode", 2, NULL);
+ g_object_set (camera, "location", vid_filename, NULL);
- /* check if receiving the preview-image message */
- fail_if (!received_preview_msg,
- "creating video recording preview image failed");
+ g_signal_emit_by_name (camera, "start-capture", NULL);
+ g_timeout_add_seconds (VIDEO_DURATION, (GSourceFunc) g_main_loop_quit,
+ main_loop);
+ g_main_loop_run (main_loop);
+ g_signal_emit_by_name (camera, "stop-capture", NULL);
+
+ msg = wait_for_element_message (camera, "video-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
+
+ check_preview_image (camera, vid_filename, i);
+ }
+ wait_for_idle_state ();
gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- check_file_validity (VIDEO_WITH_FLAGS_FILENAME, 0, NULL);
- remove_file (VIDEO_WITH_FLAGS_FILENAME, 0);
+ /* validate all the files */
+ for (i = 0; i < 2; i++) {
+ check_file_validity (image_filename, i, NULL, 0, 0, NO_AUDIO);
+ remove_file (image_filename, i);
+ check_file_validity (video_filename, i, NULL, 0, 0, WITH_AUDIO);
+ remove_file (video_filename, i);
+ }
}
GST_END_TEST;
-GST_START_TEST (test_video_recording_with_flags)
+
+GST_START_TEST (test_image_capture_previews)
{
- GstCaps *preview_caps;
- preview_caps = gst_caps_from_string ("video/x-raw-rgb,width=320,height=240");
+ gint i;
+ gint widths[] = { 800, 640, 1280 };
+ gint heights[] = { 600, 480, 1024 };
if (!camera)
return;
- /* set flags to enable modifier elements */
- g_object_set (camera, "flags", 95, NULL);
+ /* set still image mode */
+ g_object_set (camera, "mode", 1, "location", image_filename, NULL);
- /* Set video recording mode */
- g_object_set (camera, "mode", 1,
- "filename", make_test_file_name (VIDEO_FILENAME, 0), NULL);
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
+ fail_unless (camera != NULL);
+ GST_INFO ("starting capture");
+
+ for (i = 0; i < 3; i++) {
+ GstMessage *msg;
+ GstCaps *caps;
+
+ caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
+ widths[i], "height", G_TYPE_INT, heights[i], NULL);
+
+ g_object_set (camera, "preview-caps", caps, NULL);
+ gst_caps_replace (&preview_caps, caps);
+ gst_caps_unref (caps);
+
+ g_signal_emit_by_name (camera, "start-capture", NULL);
+
+ msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
+
+ check_preview_image (camera, image_filename, i);
+ remove_file (image_filename, i);
+
+ if (preview_buffer)
+ gst_buffer_unref (preview_buffer);
+ preview_buffer = NULL;
+ gst_caps_replace (&preview_caps, NULL);
+ }
+
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+}
+
+GST_END_TEST;
- /* Set preview-caps */
- g_object_set (camera, "preview-caps", preview_caps, NULL);
- gst_caps_unref (preview_caps);
+GST_START_TEST (test_image_capture_with_tags)
+{
+ gint i;
+ GstTagList *taglists[3];
+
+ if (!camera)
+ return;
+
+ taglists[0] = gst_tag_list_new (GST_TAG_COMMENT, "test1",
+ GST_TAG_GEO_LOCATION_LATITUDE, 36.6, GST_TAG_GEO_LOCATION_LONGITUDE,
+ -12.5,
+ GST_TAG_COPYRIGHT, "My copyright notice",
+ GST_TAG_DEVICE_MANUFACTURER, "MyFavoriteBrand",
+ GST_TAG_DEVICE_MODEL, "123v42.1",
+ GST_TAG_DESCRIPTION, "some description",
+ GST_TAG_APPLICATION_NAME, "camerabin test",
+ GST_TAG_GEO_LOCATION_ELEVATION, 300.85, NULL);
+ taglists[1] = gst_tag_list_new (GST_TAG_COMMENT, "test2",
+ GST_TAG_GEO_LOCATION_LATITUDE, 1.6, GST_TAG_GEO_LOCATION_LONGITUDE,
+ 0.0,
+ GST_TAG_COPYRIGHT, "some cp",
+ GST_TAG_DEVICE_MANUFACTURER, "ABRAND",
+ GST_TAG_DEVICE_MODEL, "abcd",
+ GST_TAG_DESCRIPTION, "desc",
+ GST_TAG_APPLICATION_NAME, "another cam test",
+ GST_TAG_GEO_LOCATION_ELEVATION, 10.0, NULL);
+ taglists[2] = gst_tag_list_new (GST_TAG_COMMENT, "test3",
+ GST_TAG_GEO_LOCATION_LATITUDE, 1.3, GST_TAG_GEO_LOCATION_LONGITUDE,
+ -5.0,
+ GST_TAG_COPYRIGHT, "CC",
+ GST_TAG_DEVICE_MANUFACTURER, "Homemade",
+ GST_TAG_DEVICE_MODEL, "xpto",
+ GST_TAG_DESCRIPTION, "another description",
+ GST_TAG_APPLICATION_NAME, "cam2 test",
+ GST_TAG_GEO_LOCATION_ELEVATION, 0.0, NULL);
+
+ /* set still image mode */
+ g_object_set (camera, "mode", 1, "location", image_filename, NULL);
+
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
+ fail_unless (camera != NULL);
GST_INFO ("starting capture");
- g_signal_emit_by_name (camera, "capture-start", NULL);
- /* Record for one seconds */
- g_usleep (G_USEC_PER_SEC);
- g_signal_emit_by_name (camera, "capture-stop", NULL);
- /*check if receiving the preview-image message */
- fail_if (!received_preview_msg,
- "creating video recording preview image failed");
+ for (i = 0; i < 3; i++) {
+ GstMessage *msg;
+ gst_tag_setter_merge_tags (GST_TAG_SETTER (camera), taglists[i],
+ GST_TAG_MERGE_REPLACE);
+
+ g_signal_emit_by_name (camera, "start-capture", NULL);
+
+ msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
+ }
gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- check_file_validity (VIDEO_FILENAME, 0, NULL);
- remove_file (VIDEO_FILENAME, 0);
+ for (i = 0; i < 3; i++) {
+ check_file_validity (image_filename, i, taglists[i], 0, 0, NO_AUDIO);
+ gst_tag_list_free (taglists[i]);
+ remove_file (image_filename, i);
+ }
}
GST_END_TEST;
-GST_START_TEST (test_video_recording_pause)
+
+GST_START_TEST (test_video_capture_with_tags)
{
- gboolean idle = FALSE;
+ gint i;
+ GstTagList *taglists[3];
+
if (!camera)
return;
- /* Set video recording mode */
- g_object_set (camera, "mode", 1,
- "filename", make_test_file_name (VIDEO_PAUSE_FILENAME, 0), NULL);
+ taglists[0] = gst_tag_list_new (GST_TAG_COMMENT, "test1", NULL);
+ taglists[1] = gst_tag_list_new (GST_TAG_COMMENT, "test2", NULL);
+ taglists[2] = gst_tag_list_new (GST_TAG_COMMENT, "test3", NULL);
+
+ /* set video mode */
+ g_object_set (camera, "mode", 2, "location", video_filename, NULL);
+
+ /* set a profile that has xmp support for more tags being saved */
+ {
+ GstEncodingContainerProfile *profile;
+ GstCaps *caps;
+
+ caps =
+ gst_caps_new_simple ("video/quicktime", "variant", G_TYPE_STRING,
+ "apple", NULL);
+ profile = gst_encoding_container_profile_new ("qt", "jpeg+qt", caps, NULL);
+ gst_caps_unref (caps);
+
+ caps = gst_caps_new_simple ("image/jpeg", NULL, NULL);
+ if (!gst_encoding_container_profile_add_profile (profile,
+ (GstEncodingProfile *) gst_encoding_video_profile_new (caps,
+ NULL, NULL, 1))) {
+ GST_WARNING_OBJECT (camera, "Failed to create encoding profiles");
+ }
+ gst_caps_unref (caps);
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (idle, "camera should be idle");
+ g_object_set (camera, "video-profile", profile, NULL);
+ gst_encoding_profile_unref (profile);
+ }
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
+ fail_unless (camera != NULL);
GST_INFO ("starting capture");
- g_signal_emit_by_name (camera, "capture-start", NULL);
- g_object_get (camera, "idle", &idle, NULL);
- fail_if (idle, "camera shouldn't be idle when recording");
+ for (i = 0; i < 3; i++) {
+ GstMessage *msg;
- /* Record for one seconds */
- g_usleep (G_USEC_PER_SEC);
+ gst_tag_setter_merge_tags (GST_TAG_SETTER (camera), taglists[i],
+ GST_TAG_MERGE_REPLACE);
- GST_INFO ("pause capture");
- g_signal_emit_by_name (camera, "capture-pause", NULL);
+ g_signal_emit_by_name (camera, "start-capture", NULL);
- g_object_get (camera, "idle", &idle, NULL);
- fail_if (idle, "camera shouldn't be idle when recording and paused");
+ g_timeout_add_seconds (3, (GSourceFunc) g_main_loop_quit, main_loop);
+ g_main_loop_run (main_loop);
- /* Record for one seconds */
- g_usleep (G_USEC_PER_SEC);
+ g_signal_emit_by_name (camera, "stop-capture", NULL);
+
+ msg = wait_for_element_message (camera, "video-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
+ }
+
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+
+ for (i = 0; i < 3; i++) {
+ check_file_validity (video_filename, i, taglists[i], 0, 0, NO_AUDIO);
+ gst_tag_list_free (taglists[i]);
+ remove_file (video_filename, i);
+ }
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_supported_caps)
+{
+ GstCaps *padcaps = NULL;
+ GstCaps *expectedcaps;
+ GstElement *src;
+
+ if (!camera)
+ return;
+
+ src = g_object_new (GST_TYPE_TEST_CAMERA_SRC, NULL);
+ g_object_set (camera, "camera-source", src, NULL);
+ gst_object_unref (src);
+
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
+ g_assert (camera != NULL);
+
+ expectedcaps = gst_caps_from_string (VIDEO_PAD_SUPPORTED_CAPS);
+ g_object_get (G_OBJECT (camera), "video-capture-supported-caps", &padcaps,
+ NULL);
+ g_assert (expectedcaps != NULL);
+ g_assert (padcaps != NULL);
+ g_assert (gst_caps_is_equal (padcaps, expectedcaps));
+ gst_caps_unref (expectedcaps);
+ gst_caps_unref (padcaps);
+
+ expectedcaps = gst_caps_from_string (IMAGE_PAD_SUPPORTED_CAPS);
+ g_object_get (G_OBJECT (camera), "image-capture-supported-caps", &padcaps,
+ NULL);
+ g_assert (expectedcaps != NULL);
+ g_assert (padcaps != NULL);
+ g_assert (gst_caps_is_equal (padcaps, expectedcaps));
+ gst_caps_unref (expectedcaps);
+ gst_caps_unref (padcaps);
+
+ gst_element_set_state (camera, GST_STATE_NULL);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_idle_property)
+{
+ GstMessage *msg;
+ gboolean idle;
+ if (!camera)
+ return;
+
+ /* Set video recording mode */
+ g_object_set (camera, "mode", 2, "location", video_filename, NULL);
- GST_INFO ("continue capture");
- g_signal_emit_by_name (camera, "capture-start", NULL);
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
+ GST_INFO ("starting capture");
+ fail_unless (camera != NULL);
+ g_object_get (camera, "idle", &idle, NULL);
+ fail_unless (idle);
+ g_signal_emit_by_name (camera, "start-capture", NULL);
g_object_get (camera, "idle", &idle, NULL);
- fail_if (idle, "camera shouldn't be idle when recording");
+ fail_unless (!idle);
+
+ /* emit a second start-capture that should be ignored */
+ g_signal_emit_by_name (camera, "start-capture", NULL);
+ g_object_get (camera, "idle", &idle, NULL);
+ fail_unless (!idle);
/* Record for one seconds */
- g_usleep (G_USEC_PER_SEC);
- g_signal_emit_by_name (camera, "capture-stop", NULL);
+ g_timeout_add_seconds (VIDEO_DURATION, (GSourceFunc) g_main_loop_quit,
+ main_loop);
+ g_main_loop_run (main_loop);
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (idle, "camera should be idle after capture-stop");
+ g_signal_emit_by_name (camera, "stop-capture", NULL);
+
+ msg = wait_for_element_message (camera, "video-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
+
+ check_preview_image (camera, video_filename, 0);
+
+ wait_for_idle_state ();
gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- check_file_validity (VIDEO_PAUSE_FILENAME, 0, NULL);
- remove_file (VIDEO_PAUSE_FILENAME, 0);
+ check_file_validity (video_filename, 0, NULL, 0, 0, WITH_AUDIO);
+ remove_file (video_filename, 0);
}
GST_END_TEST;
-GST_START_TEST (test_video_recording_no_audio)
+
+GST_START_TEST (test_image_custom_filter)
{
- GstCaps *preview_caps;
- preview_caps = gst_caps_from_string ("video/x-raw-rgb,width=320,height=240");
+ GstElement *vf_filter;
+ GstElement *image_filter;
+ GstElement *preview_filter;
+ GstPad *pad;
+ gint vf_probe_counter = 0;
+ gint image_probe_counter = 0;
+ gint preview_probe_counter = 0;
if (!camera)
return;
- /* set flags to disable audio elements */
- g_object_set (camera, "flags", 32, NULL);
+ vf_filter = gst_element_factory_make ("identity", "vf-filter");
+ image_filter = gst_element_factory_make ("identity", "img-filter");
+ preview_filter = gst_element_factory_make ("identity", "preview-filter");
- /* Set video recording mode */
+ pad = gst_element_get_static_pad (vf_filter, "src");
+ gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
+ &vf_probe_counter, NULL);
+ gst_object_unref (pad);
+
+ pad = gst_element_get_static_pad (image_filter, "src");
+ gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
+ &image_probe_counter, NULL);
+ gst_object_unref (pad);
+
+ pad = gst_element_get_static_pad (preview_filter, "src");
+ gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
+ &preview_probe_counter, NULL);
+ gst_object_unref (pad);
+
+ /* set still image mode and filters */
g_object_set (camera, "mode", 1,
- "filename", make_test_file_name (VIDEO_NOAUDIO_FILENAME, 0), NULL);
+ "location", image_filename,
+ "viewfinder-filter", vf_filter, "image-filter", image_filter,
+ "preview-filter", preview_filter, NULL);
- /* Set preview-caps */
- g_object_set (camera, "preview-caps", preview_caps, NULL);
- gst_caps_unref (preview_caps);
+ gst_object_unref (vf_filter);
+ gst_object_unref (preview_filter);
+ gst_object_unref (image_filter);
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
GST_INFO ("starting capture");
- g_signal_emit_by_name (camera, "capture-start", NULL);
- /* Record for one seconds */
- g_usleep (G_USEC_PER_SEC);
- g_signal_emit_by_name (camera, "capture-stop", NULL);
+ fail_unless (camera != NULL);
+ g_signal_emit_by_name (camera, "start-capture", NULL);
+
+ g_timeout_add_seconds (3, (GSourceFunc) g_main_loop_quit, main_loop);
+ g_main_loop_run (main_loop);
- /* check if receiving the preview-image message */
- fail_if (!received_preview_msg,
- "creating video recording preview image failed");
+ /* check that we got a preview image */
+ check_preview_image (camera, image_filename, 0);
gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ check_file_validity (image_filename, 0, NULL, 0, 0, NO_AUDIO);
+ remove_file (image_filename, 0);
- check_file_validity (VIDEO_NOAUDIO_FILENAME, 0, NULL);
- remove_file (VIDEO_NOAUDIO_FILENAME, 0);
+ fail_unless (vf_probe_counter > 0);
+ fail_unless (image_probe_counter == 1);
+ fail_unless (preview_probe_counter == 1);
}
GST_END_TEST;
-GST_START_TEST (test_image_video_cycle)
+
+GST_START_TEST (test_video_custom_filter)
{
- gint i;
+ GstElement *vf_filter;
+ GstElement *video_filter;
+ GstElement *preview_filter;
+ GstElement *audio_filter;
+ GstPad *pad;
+ gint vf_probe_counter = 0;
+ gint video_probe_counter = 0;
+ gint preview_probe_counter = 0;
+ gint audio_probe_counter = 0;
if (!camera)
return;
- cycle_count = CYCLE_COUNT_MAX;
-
- /* set still image mode */
- g_object_set (camera, "mode", 0,
- "filename", make_test_file_name (CYCLE_IMAGE_FILENAME, cycle_count),
- NULL);
+ vf_filter = gst_element_factory_make ("identity", "vf-filter");
+ video_filter = gst_element_factory_make ("identity", "video-filter");
+ preview_filter = gst_element_factory_make ("identity", "preview-filter");
+ audio_filter = gst_element_factory_make ("identity", "audio-filter");
+
+ pad = gst_element_get_static_pad (vf_filter, "src");
+ gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
+ &vf_probe_counter, NULL);
+ gst_object_unref (pad);
+
+ pad = gst_element_get_static_pad (video_filter, "src");
+ gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
+ &video_probe_counter, NULL);
+ gst_object_unref (pad);
+
+ pad = gst_element_get_static_pad (audio_filter, "src");
+ gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
+ &audio_probe_counter, NULL);
+ gst_object_unref (pad);
+
+ pad = gst_element_get_static_pad (preview_filter, "src");
+ gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
+ &preview_probe_counter, NULL);
+ gst_object_unref (pad);
+
+ /* set still image mode and filters */
+ g_object_set (camera, "mode", 2,
+ "location", video_filename,
+ "viewfinder-filter", vf_filter, "video-filter", video_filter,
+ "preview-filter", preview_filter, "audio-filter", audio_filter, NULL);
+
+ gst_object_unref (vf_filter);
+ gst_object_unref (preview_filter);
+ gst_object_unref (video_filter);
+ gst_object_unref (audio_filter);
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
+ }
GST_INFO ("starting capture");
- g_signal_emit_by_name (camera, "capture-start", NULL);
+ fail_unless (camera != NULL);
+ g_signal_emit_by_name (camera, "start-capture", NULL);
+ g_timeout_add_seconds (VIDEO_DURATION, (GSourceFunc) g_main_loop_quit,
+ main_loop);
g_main_loop_run (main_loop);
+ g_signal_emit_by_name (camera, "stop-capture", NULL);
+
+ /* check that we got a preview image */
+ check_preview_image (camera, video_filename, 0);
+
gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ check_file_validity (video_filename, 0, NULL, 0, 0, WITH_AUDIO);
+ remove_file (video_filename, 0);
- /* validate all the files */
- for (i = 2; i > 0; i--) {
- check_file_validity (CYCLE_IMAGE_FILENAME, i, NULL);
- remove_file (CYCLE_IMAGE_FILENAME, i);
- check_file_validity (CYCLE_VIDEO_FILENAME, i, NULL);
- remove_file (CYCLE_VIDEO_FILENAME, i);
- }
+ fail_unless (vf_probe_counter > 0);
+ fail_unless (video_probe_counter > 0);
+ fail_unless (audio_probe_counter > 0);
+ fail_unless (preview_probe_counter == 1);
}
GST_END_TEST;
-GST_START_TEST (test_image_tags_setting)
+#define LOCATION_SWITCHING_FILENAMES_COUNT 5
+
+static gboolean
+image_location_switch_do_capture (gpointer data)
+{
+ gchar **filenames = data;
+ if (capture_count >= LOCATION_SWITCHING_FILENAMES_COUNT) {
+ g_main_loop_quit (main_loop);
+ }
+
+ g_object_set (camera, "location", filenames[capture_count], NULL);
+ g_signal_emit_by_name (camera, "start-capture", NULL);
+ capture_count++;
+ return FALSE;
+}
+
+static void
+image_location_switch_readyforcapture (GObject * obj, GParamSpec * pspec,
+ gpointer user_data)
{
+ gboolean ready;
+
+ g_object_get (obj, "ready-for-capture", &ready, NULL);
+ if (ready) {
+ g_idle_add (image_location_switch_do_capture, user_data);
+ }
+};
+
+/*
+ * Tests that setting the location and then doing an image
+ * capture will set this capture resulting filename to the
+ * correct location.
+ *
+ * There was a bug in which setting the location, issuing a capture
+ * and then setting a new location would cause this capture to have
+ * the location set after this capture. This test should prevent it
+ * from happening again.
+ */
+GST_START_TEST (test_image_location_switching)
+{
+ gchar *filenames[LOCATION_SWITCHING_FILENAMES_COUNT + 1];
gint i;
+ glong notify_id;
+ GstCaps *caps;
+ GstElement *src;
+ GstMessage *msg;
- g_object_set (camera, "flags", 0, NULL);
- g_object_set (camera, "block-after-capture", TRUE, NULL);
+ if (!camera)
+ return;
- GST_INFO ("starting capture series");
+ g_object_get (camera, "camera-source", &src, NULL);
- for (i = 0; i < SEQUENTIAL_IMAGES_COUNT; i++) {
- g_object_set (camera, "filename",
- make_test_file_name (SEQUENTIAL_IMAGES_FILENAME, i), NULL);
- gst_tag_setter_merge_tags (GST_TAG_SETTER (camera),
- taglists[i % TAGLISTS_COUNT],
- gst_tag_setter_get_tag_merge_mode (GST_TAG_SETTER (camera)));
- g_signal_emit_by_name (camera, "capture-start", NULL);
- g_main_loop_run (main_loop);
+ for (i = 0; i < LOCATION_SWITCHING_FILENAMES_COUNT; i++) {
+ filenames[i] = make_test_file_name ("image-switching-filename-test", i);
+ }
+ filenames[LOCATION_SWITCHING_FILENAMES_COUNT] = NULL;
+
+ /* set still image mode */
+ g_object_set (camera, "mode", 1, NULL);
+ caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
+ 800, "height", G_TYPE_INT, 600, NULL);
+ g_object_set (camera, "image-capture-caps", caps, NULL);
+ gst_caps_unref (caps);
+
+ if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE) {
+ GST_WARNING ("setting camerabin to PLAYING failed");
+ gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
+ gst_object_unref (camera);
+ camera = NULL;
}
+ fail_unless (camera != NULL);
+ GST_INFO ("starting capture");
+
+ notify_id = g_signal_connect (G_OBJECT (src),
+ "notify::ready-for-capture",
+ G_CALLBACK (image_location_switch_readyforcapture), filenames);
+
+ g_idle_add (image_location_switch_do_capture, filenames);
+ g_main_loop_run (main_loop);
+
+ msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
+ fail_unless (msg != NULL);
+ gst_message_unref (msg);
+
gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- for (i = 0; i < SEQUENTIAL_IMAGES_COUNT; i++) {
- check_file_validity (SEQUENTIAL_IMAGES_FILENAME, i,
- taglists[i % TAGLISTS_COUNT]);
- remove_file (SEQUENTIAL_IMAGES_FILENAME, i);
+ for (i = 0; i < LOCATION_SWITCHING_FILENAMES_COUNT; i++) {
+ GST_INFO ("Checking for file: %s", filenames[i]);
+ fail_unless (g_file_test (filenames[i], G_FILE_TEST_IS_REGULAR));
+ }
+
+ for (i = 0; i < LOCATION_SWITCHING_FILENAMES_COUNT; i++) {
+ g_unlink (filenames[i]);
+ g_free (filenames[i]);
}
+ g_signal_handler_disconnect (src, notify_id);
}
GST_END_TEST;
+
+typedef struct _TestCaseDef
+{
+ const gchar *name;
+ gpointer setup_func;
+} TestCaseDef;
+
+TestCaseDef tests[] = {
+ {"wrappercamerabinsrc", setup_wrappercamerabinsrc_videotestsrc}
+};
+
static Suite *
camerabin_suite (void)
{
+ GstElementFactory *jpegenc_factory;
Suite *s = suite_create ("camerabin");
- TCase *tc_basic = tcase_create ("general");
-
- /* Test that basic operations run without errors */
- suite_add_tcase (s, tc_basic);
- /* Increase timeout due to video recording */
- tcase_set_timeout (tc_basic, 20);
- tcase_add_checked_fixture (tc_basic, setup, teardown);
- tcase_add_test (tc_basic, test_single_image_capture);
- tcase_add_test (tc_basic, test_single_image_capture_with_flags);
- tcase_add_test (tc_basic, test_video_recording);
- tcase_add_test (tc_basic, test_video_recording_with_flags);
- tcase_add_test (tc_basic, test_video_recording_pause);
- tcase_add_test (tc_basic, test_video_recording_no_audio);
- tcase_add_test (tc_basic, test_image_video_cycle);
- tcase_add_test (tc_basic, test_image_tags_setting);
+ gint i;
+ TCase *tc_generic = tcase_create ("generic");
+
+ jpegenc_factory = gst_element_factory_find ("jpegenc");
+ if (jpegenc_factory == NULL) {
+ GST_WARNING ("Skipping camerabin tests because jpegenc is missing");
+ goto end;
+ }
+
+ suite_add_tcase (s, tc_generic);
+ tcase_add_checked_fixture (tc_generic, setup_wrappercamerabinsrc_videotestsrc,
+ teardown);
+ tcase_add_test (tc_generic, test_supported_caps);
+
+ for (i = 0; i < G_N_ELEMENTS (tests); i++) {
+ TCase *tc_basic = tcase_create (tests[i].name);
+ suite_add_tcase (s, tc_basic);
+
+ /* Increase timeout due to video recording */
+ tcase_set_timeout (tc_basic, 60);
+ tcase_add_checked_fixture (tc_basic, tests[i].setup_func, teardown);
+
+ tcase_add_test (tc_basic, test_single_image_capture);
+ tcase_add_test (tc_basic, test_single_video_recording);
+ tcase_add_test (tc_basic, test_image_video_cycle);
+ if (gst_plugin_feature_check_version ((GstPluginFeature *) jpegenc_factory,
+ 0, 10, 27))
+ tcase_add_test (tc_basic, test_multiple_image_captures);
+ else
+ GST_WARNING ("Skipping image capture test because -good 0.10.27 is "
+ "needed");
+ tcase_add_test (tc_basic, test_multiple_video_recordings);
+
+ tcase_add_test (tc_basic, test_image_capture_previews);
+ tcase_add_test (tc_basic, test_image_capture_with_tags);
+
+ tcase_add_test (tc_basic, test_video_capture_with_tags);
+
+ tcase_add_test (tc_basic, test_idle_property);
+
+ tcase_add_test (tc_basic, test_image_custom_filter);
+ tcase_add_test (tc_basic, test_video_custom_filter);
+
+ tcase_add_test (tc_basic, test_image_location_switching);
+ }
+end:
return s;
}
diff --git a/tests/check/elements/camerabin2.c b/tests/check/elements/camerabin2.c
deleted file mode 100644
index d8bea462..00000000
--- a/tests/check/elements/camerabin2.c
+++ /dev/null
@@ -1,1585 +0,0 @@
-/* GStreamer
- *
- * unit test for camerabin2 basic operations
- * Copyright (C) 2010 Nokia Corporation <multimedia@maemo.org>
- * Copyright (C) 2010 Thiago Santos <thiago.sousa.santos@collabora.co.uk>
- *
- *
- * 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 <unistd.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-#include <gst/gst.h>
-#include <gst/video/video.h>
-#include <gst/check/gstcheck.h>
-#include <gst/basecamerabinsrc/gstbasecamerasrc.h>
-#include <gst/pbutils/encoding-profile.h>
-
-#define IMAGE_FILENAME "image"
-#define VIDEO_FILENAME "video"
-#define CAPTURE_COUNT 3
-#define VIDEO_DURATION 5
-
-#define VIDEO_PAD_SUPPORTED_CAPS "video/x-raw, format=RGB, width=600, height=480"
-#define IMAGE_PAD_SUPPORTED_CAPS "video/x-raw, format=RGB, width=800, height=600"
-
-/* custom test camera src element */
-#define GST_TYPE_TEST_CAMERA_SRC \
- (gst_test_camera_src_get_type())
-#define GST_TEST_CAMERA_SRC(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TEST_CAMERA_SRC,GstTestCameraSrc))
-#define GST_TEST_CAMERA_SRC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_TEST_CAMERA_SRC,GstTestCameraSrcClass))
-#define GST_IS_TEST_REVERSE_NEGOTIATION_SINK(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TEST_CAMERA_SRC))
-#define GST_IS_TEST_REVERSE_NEGOTIATION_SINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_TEST_CAMERA_SRC))
-#define GST_TEST_CAMERA_SRC_CAST(obj) ((GstTestCameraSrc *)obj)
-
-typedef struct _GstTestCameraSrc GstTestCameraSrc;
-typedef struct _GstTestCameraSrcClass GstTestCameraSrcClass;
-struct _GstTestCameraSrc
-{
- GstBaseCameraSrc element;
-
- GstPad *vfpad;
- GstPad *vidpad;
- GstPad *imgpad;
-
- GstCameraBinMode mode;
-};
-
-struct _GstTestCameraSrcClass
-{
- GstBaseCameraSrcClass parent_class;
-};
-
-GType gst_test_camera_src_get_type (void);
-
-#define gst_test_camera_src_parent_class parent_class
-G_DEFINE_TYPE (GstTestCameraSrc, gst_test_camera_src, GST_TYPE_BASE_CAMERA_SRC);
-
-static gboolean
-gst_test_camera_src_set_mode (GstBaseCameraSrc * src, GstCameraBinMode mode)
-{
- GstTestCameraSrc *self = GST_TEST_CAMERA_SRC (src);
-
- self->mode = mode;
- return TRUE;
-}
-
-static gboolean
-gst_test_camera_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
-{
- GstTestCameraSrc *self = (GstTestCameraSrc *) GST_PAD_PARENT (pad);
- GstCaps *result = NULL;
- gboolean ret = FALSE;
-
- switch (GST_QUERY_TYPE (query)) {
- case GST_QUERY_CAPS:
- if (pad == self->vfpad) {
- result = gst_caps_new_any ();
- } else if (pad == self->vidpad) {
- result = gst_caps_from_string (VIDEO_PAD_SUPPORTED_CAPS);
- } else if (pad == self->imgpad) {
- result = gst_caps_from_string (IMAGE_PAD_SUPPORTED_CAPS);
- } else {
- g_assert_not_reached ();
- }
- if (result) {
- GstCaps *filter;
-
- gst_query_parse_caps (query, &filter);
- if (filter) {
- GstCaps *tmp;
- tmp = gst_caps_intersect (result, filter);
- gst_caps_replace (&result, tmp);
- gst_caps_unref (tmp);
- }
- gst_query_set_caps_result (query, result);
- ret = TRUE;
- }
- break;
- default:
- break;
- }
-
- return ret;
-}
-
-static void
-gst_test_camera_src_class_init (GstTestCameraSrcClass * klass)
-{
- GstBaseCameraSrcClass *gstbasecamera_class;
- GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
-
- gstbasecamera_class = GST_BASE_CAMERA_SRC_CLASS (klass);
- gstbasecamera_class->set_mode = gst_test_camera_src_set_mode;
-
- gst_element_class_set_details_simple (gstelement_class,
- "Test Camera Src",
- "Camera/Src",
- "Some test camera src",
- "Thiago Santos <thiago.sousa.santos@collabora.com>");
-}
-
-static void
-gst_test_camera_src_init (GstTestCameraSrc * self)
-{
- GstElementClass *gstelement_class = GST_ELEMENT_CLASS (parent_class);
- GstPadTemplate *template;
-
- /* create pads */
- template = gst_element_class_get_pad_template (gstelement_class,
- GST_BASE_CAMERA_SRC_VIEWFINDER_PAD_NAME);
- self->vfpad = gst_pad_new_from_template (template,
- GST_BASE_CAMERA_SRC_VIEWFINDER_PAD_NAME);
- gst_element_add_pad (GST_ELEMENT_CAST (self), self->vfpad);
-
- template = gst_element_class_get_pad_template (gstelement_class,
- GST_BASE_CAMERA_SRC_IMAGE_PAD_NAME);
- self->imgpad = gst_pad_new_from_template (template,
- GST_BASE_CAMERA_SRC_IMAGE_PAD_NAME);
- gst_element_add_pad (GST_ELEMENT_CAST (self), self->imgpad);
-
- template = gst_element_class_get_pad_template (gstelement_class,
- GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME);
- self->vidpad = gst_pad_new_from_template (template,
- GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME);
- gst_element_add_pad (GST_ELEMENT_CAST (self), self->vidpad);
-
- /* add get caps functions */
- gst_pad_set_query_function (self->vfpad, gst_test_camera_src_query);
- gst_pad_set_query_function (self->vidpad, gst_test_camera_src_query);
- gst_pad_set_query_function (self->imgpad, gst_test_camera_src_query);
-}
-
-/* end of custom test camera src element */
-
-
-static GstElement *camera;
-static guint bus_source;
-static GMainLoop *main_loop;
-static gint capture_count = 0;
-guint32 test_id = 0;
-static gchar *image_filename;
-static gchar *video_filename;
-
-static GstBuffer *preview_buffer;
-static gchar *preview_filename;
-static GstCaps *preview_caps;
-static GstTagList *tags_found;
-
-static gboolean
-validity_bus_cb (GstBus * bus, GstMessage * message, gpointer data);
-
-static GstMessage *wait_for_element_message (GstElement * camera,
- const gchar * name, GstClockTime timeout);
-
-static void
-validate_taglist_foreach (const GstTagList * list, const gchar * tag,
- gpointer user_data)
-{
- GstTagList *other = GST_TAG_LIST (user_data);
-
- const GValue *val1 = gst_tag_list_get_value_index (list, tag, 0);
- const GValue *val2 = gst_tag_list_get_value_index (other, tag, 0);
-
- GST_DEBUG ("checking tag '%s'", tag);
-
- fail_if (val1 == NULL);
- fail_if (val2 == NULL);
-
- fail_unless (gst_value_compare (val1, val2) == GST_VALUE_EQUAL);
-}
-
-
-/* helper function for filenames */
-static gchar *
-make_test_file_name (const gchar * base_name, gint num)
-{
- /* num == -1 means to keep the %d in the resulting string to be used on
- * multifilesink like location */
- if (num == -1) {
- return g_strdup_printf ("%s" G_DIR_SEPARATOR_S
- "gstcamerabin2test_%s_%u_%%03d.cap", g_get_tmp_dir (), base_name,
- test_id);
- } else {
- return g_strdup_printf ("%s" G_DIR_SEPARATOR_S
- "gstcamerabin2test_%s_%u_%03d.cap", g_get_tmp_dir (), base_name,
- test_id, num);
- }
-}
-
-static const gchar *
-make_const_file_name (const gchar * filename, gint num)
-{
- static gchar file_name[1000];
-
- /* num == -1 means to keep the %d in the resulting string to be used on
- * multifilesink like location */
- g_snprintf (file_name, 999, filename, num);
-
- return file_name;
-}
-
-/* configuration */
-
-static gboolean
-capture_bus_cb (GstBus * bus, GstMessage * message, gpointer data)
-{
- GMainLoop *loop = (GMainLoop *) data;
- const GstStructure *st;
-
- switch (GST_MESSAGE_TYPE (message)) {
- case GST_MESSAGE_ERROR:{
- GError *err = NULL;
- gchar *debug = NULL;
-
- gst_message_parse_error (message, &err, &debug);
- GST_WARNING ("ERROR: %s [%s]", err->message, debug);
- g_error_free (err);
- g_free (debug);
- /* Write debug graph to file */
- GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (camera),
- GST_DEBUG_GRAPH_SHOW_ALL, "camerabin.error");
-
- fail_if (TRUE, "error while capturing");
- g_main_loop_quit (loop);
- break;
- }
- case GST_MESSAGE_WARNING:{
- GError *err = NULL;
- gchar *debug = NULL;
-
- gst_message_parse_warning (message, &err, &debug);
- GST_WARNING ("WARNING: %s [%s]", err->message, debug);
- g_error_free (err);
- g_free (debug);
- /* Write debug graph to file */
- GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (camera),
- GST_DEBUG_GRAPH_SHOW_ALL, "camerabin.warning");
- break;
- }
- case GST_MESSAGE_EOS:
- GST_DEBUG ("eos");
- g_main_loop_quit (loop);
- break;
- default:
- st = gst_message_get_structure (message);
- if (st && gst_structure_has_name (st, "image-done")) {
- GST_INFO ("image captured");
- } else if (st && gst_structure_has_name (st,
- GST_BASE_CAMERA_SRC_PREVIEW_MESSAGE_NAME)) {
- GstBuffer *buf;
- const GValue *value;
-
- value = gst_structure_get_value (st, "buffer");
- fail_unless (value != NULL);
- buf = gst_value_get_buffer (value);
-
- if (preview_buffer)
- gst_buffer_unref (preview_buffer);
- preview_buffer = gst_buffer_ref (buf);
- g_free (preview_filename);
- preview_filename = g_strdup (gst_structure_get_string (st, "location"));
- }
- break;
- }
- return TRUE;
-}
-
-static void
-check_preview_image (GstElement * camera, const gchar * filename, gint index)
-{
- gchar *prev_filename = NULL;
-
- if (!preview_buffer && camera) {
- GstMessage *msg = wait_for_element_message (camera,
- GST_BASE_CAMERA_SRC_PREVIEW_MESSAGE_NAME, GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
- }
- fail_unless (preview_buffer != NULL);
- if (filename) {
- if (index >= 0) {
- prev_filename = g_strdup_printf (filename, index);
- } else {
- prev_filename = g_strdup (filename);
- }
- fail_unless (preview_filename != NULL);
- fail_unless (strcmp (preview_filename, prev_filename) == 0);
- }
- if (preview_caps) {
- /* TODO porting
- fail_unless (GST_BUFFER_CAPS (preview_buffer) != NULL);
- fail_unless (gst_caps_can_intersect (GST_BUFFER_CAPS (preview_buffer),
- preview_caps));
- */
- }
- g_free (prev_filename);
-}
-
-static void
-extract_jpeg_tags (const gchar * filename, gint num)
-{
- GstBus *bus;
- GMainLoop *loop = g_main_loop_new (NULL, FALSE);
- const gchar *filepath = make_const_file_name (filename, num);
- gchar *pipeline_str = g_strdup_printf ("filesrc location=%s ! "
- "jpegparse ! fakesink", filepath);
- GstElement *pipeline;
- guint source;
-
- pipeline = gst_parse_launch (pipeline_str, NULL);
- fail_unless (pipeline != NULL);
- g_free (pipeline_str);
-
- bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
- source = gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
-
- gst_element_set_state (pipeline, GST_STATE_PLAYING);
- g_main_loop_run (loop);
- gst_element_set_state (pipeline, GST_STATE_NULL);
-
- gst_object_unref (bus);
- g_source_remove (source);
- gst_object_unref (pipeline);
- g_main_loop_unref (loop);
-}
-
-static void
-setup_wrappercamerabinsrc_videotestsrc (void)
-{
- GstBus *bus;
- GstElement *vfbin;
- GstElement *fakevideosink;
- GstElement *src;
- GstElement *testsrc;
- GstElement *audiosrc;
-
- GST_INFO ("init");
-
- test_id = g_random_int ();
- bus_source = 0;
-
- main_loop = g_main_loop_new (NULL, TRUE);
-
- camera = gst_check_setup_element ("camerabin2");
- fakevideosink = gst_element_factory_make ("fakesink", NULL);
- src = gst_element_factory_make ("wrappercamerabinsrc", NULL);
- testsrc = gst_element_factory_make ("videotestsrc", NULL);
- audiosrc = gst_element_factory_make ("audiotestsrc", NULL);
-
- preview_caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
- 320, "height", G_TYPE_INT, 240, NULL);
-
- g_object_set (G_OBJECT (testsrc), "is-live", TRUE, NULL);
- g_object_set (G_OBJECT (audiosrc), "is-live", TRUE, NULL);
- g_object_set (G_OBJECT (src), "video-source", testsrc, NULL);
- g_object_set (G_OBJECT (camera), "camera-source", src, "preview-caps",
- preview_caps, "post-previews", TRUE, "audio-source", audiosrc, NULL);
- gst_object_unref (src);
- gst_object_unref (testsrc);
- gst_object_unref (audiosrc);
-
- vfbin = gst_bin_get_by_name (GST_BIN (camera), "vf-bin");
- g_object_set (G_OBJECT (vfbin), "video-sink", fakevideosink, NULL);
- gst_object_unref (vfbin);
- gst_object_unref (fakevideosink);
-
- bus = gst_pipeline_get_bus (GST_PIPELINE (camera));
- bus_source = gst_bus_add_watch (bus, (GstBusFunc) capture_bus_cb, main_loop);
- gst_object_unref (bus);
-
- tags_found = NULL;
- capture_count = 0;
- image_filename = make_test_file_name (IMAGE_FILENAME, -1);
- video_filename = make_test_file_name (VIDEO_FILENAME, -1);
-
- GST_INFO ("init finished");
-}
-
-static void
-teardown (void)
-{
- gst_element_set_state (camera, GST_STATE_NULL);
-
- if (camera)
- gst_check_teardown_element (camera);
- camera = NULL;
-
- if (bus_source)
- g_source_remove (bus_source);
-
- if (main_loop)
- g_main_loop_unref (main_loop);
- main_loop = NULL;
-
- if (preview_caps)
- gst_caps_unref (preview_caps);
- preview_caps = NULL;
-
- if (preview_buffer)
- gst_buffer_unref (preview_buffer);
- preview_buffer = NULL;
-
- g_free (preview_filename);
- preview_filename = NULL;
-
- if (tags_found)
- gst_tag_list_free (tags_found);
- tags_found = NULL;
-
- g_free (video_filename);
- video_filename = NULL;
-
- g_free (image_filename);
- image_filename = NULL;
-
- GST_INFO ("done");
-}
-
-static gboolean
-validity_bus_cb (GstBus * bus, GstMessage * message, gpointer data)
-{
- GMainLoop *loop = (GMainLoop *) data;
- switch (GST_MESSAGE_TYPE (message)) {
- case GST_MESSAGE_ERROR:{
- GError *err = NULL;
- gchar *debug = NULL;
-
- gst_message_parse_error (message, &err, &debug);
-
- GST_ERROR ("Error: %s : %s", err->message, debug);
- g_error_free (err);
- g_free (debug);
-
- fail_if (TRUE, "validating captured data failed");
- g_main_loop_quit (loop);
- }
- break;
- case GST_MESSAGE_EOS:
- g_main_loop_quit (loop);
- GST_DEBUG ("eos");
- break;
- case GST_MESSAGE_TAG:{
- GstTagList *taglist = NULL;
-
- gst_message_parse_tag (message, &taglist);
- if (tags_found) {
- gst_tag_list_insert (tags_found, taglist, GST_TAG_MERGE_REPLACE);
- gst_tag_list_free (taglist);
- } else {
- tags_found = taglist;
- }
- GST_DEBUG ("tags: %" GST_PTR_FORMAT, tags_found);
- }
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-/* checks that tags in @tags_a are in @tags_b */
-static gboolean
-taglist_is_subset (GstTagList * tags_a, GstTagList * tags_b)
-{
- gst_tag_list_foreach (tags_a, validate_taglist_foreach, tags_b);
- return TRUE;
-}
-
-/* Validate captured files by playing them with playbin
- * and checking that no errors occur. */
-#define WITH_AUDIO TRUE
-#define NO_AUDIO FALSE
-static gboolean
-check_file_validity (const gchar * filename, gint num, GstTagList * taglist,
- gint width, gint height, gboolean has_audio)
-{
- GstBus *bus;
- GstPad *pad;
- GstCaps *caps;
- gint caps_width, caps_height;
- GstState state;
- guint source;
-
- GMainLoop *loop = g_main_loop_new (NULL, FALSE);
- GstElement *playbin = gst_element_factory_make ("playbin2", NULL);
- GstElement *fakevideo = gst_element_factory_make ("fakesink", NULL);
- GstElement *fakeaudio = gst_element_factory_make ("fakesink", NULL);
- gchar *uri = g_strconcat ("file://", make_const_file_name (filename, num),
- NULL);
-
- GST_DEBUG ("checking uri: %s", uri);
- g_object_set (G_OBJECT (playbin), "uri", uri, "video-sink", fakevideo,
- "audio-sink", fakeaudio, NULL);
-
- bus = gst_pipeline_get_bus (GST_PIPELINE (playbin));
- source = gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
-
- gst_element_set_state (playbin, GST_STATE_PAUSED);
- gst_element_get_state (playbin, &state, NULL, GST_SECOND * 3);
-
- if (width != 0 && height != 0) {
- g_signal_emit_by_name (playbin, "get-video-pad", 0, &pad, NULL);
- g_assert (pad != NULL);
- caps = gst_pad_get_current_caps (pad);
-
- g_assert (gst_structure_get_int (gst_caps_get_structure (caps, 0),
- "width", &caps_width));
- g_assert (gst_structure_get_int (gst_caps_get_structure (caps, 0),
- "height", &caps_height));
-
- g_assert (width == caps_width);
- g_assert (height == caps_height);
-
- gst_caps_unref (caps);
- gst_object_unref (pad);
- }
- if (has_audio) {
- g_signal_emit_by_name (playbin, "get-audio-pad", 0, &pad, NULL);
- g_assert (pad != NULL);
- gst_object_unref (pad);
- }
-
- gst_element_set_state (playbin, GST_STATE_PLAYING);
- g_main_loop_run (loop);
- gst_element_set_state (playbin, GST_STATE_NULL);
-
- /* special handling for images (jpg) as jpegparse isn't plugged by
- * default due to its current low rank */
- if (taglist && strstr (filename, "image")) {
- extract_jpeg_tags (filename, num);
- }
-
- if (taglist) {
- fail_unless (tags_found != NULL);
- fail_unless (taglist_is_subset (taglist, tags_found));
- }
-
- g_free (uri);
- g_source_remove (source);
- gst_object_unref (bus);
- gst_object_unref (playbin);
- g_main_loop_unref (loop);
-
- return TRUE;
-}
-
-static void
-remove_file (const gchar * fn_template, guint num)
-{
- const gchar *fn;
-
- fn = make_const_file_name (fn_template, num);
- GST_INFO ("removing %s", fn);
- g_unlink (fn);
-}
-
-static GstPadProbeReturn
-filter_buffer_count (GstPad * pad, GstPadProbeInfo * info, gpointer data)
-{
- gint *counter = data;
-
- (*counter)++;
-
- return GST_PAD_PROBE_OK;
-}
-
-static GstMessage *
-wait_for_element_message (GstElement * camera, const gchar * name,
- GstClockTime timeout)
-{
- GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (camera));
- GstMessage *msg;
-
- while (1) {
- msg = gst_bus_timed_pop_filtered (bus, timeout, GST_MESSAGE_ERROR |
- GST_MESSAGE_EOS | GST_MESSAGE_ELEMENT);
-
- if (msg) {
- if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ELEMENT) {
- const GstStructure *st = gst_message_get_structure (msg);
- if (gst_structure_has_name (st,
- GST_BASE_CAMERA_SRC_PREVIEW_MESSAGE_NAME)) {
- GstBuffer *buf;
- const GValue *value;
-
- value = gst_structure_get_value (st, "buffer");
- fail_unless (value != NULL);
- buf = gst_value_get_buffer (value);
-
- if (preview_buffer)
- gst_buffer_unref (preview_buffer);
- preview_buffer = gst_buffer_ref (buf);
- g_free (preview_filename);
- preview_filename =
- g_strdup (gst_structure_get_string (st, "location"));
- }
-
- if (gst_structure_has_name (st, name))
- break;
- else
- gst_message_unref (msg);
- } else {
- gst_message_unref (msg);
- msg = NULL;
- break;
- }
- }
- }
-
- gst_object_unref (bus);
- return msg;
-}
-
-static void
-wait_for_idle_state (void)
-{
- gboolean idle = FALSE;
-
- /* not the ideal way, but should be enough for testing */
- while (idle == FALSE) {
- g_object_get (camera, "idle", &idle, NULL);
- if (idle)
- break;
-
- GST_LOG ("waiting for idle state..");
- g_usleep (G_USEC_PER_SEC / 5);
- }
- fail_unless (idle);
-}
-
-GST_START_TEST (test_single_image_capture)
-{
- gboolean idle;
- GstMessage *msg;
- if (!camera)
- return;
-
- /* set still image mode */
- g_object_set (camera, "mode", 1, "location", image_filename, NULL);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
- GST_INFO ("starting capture");
- fail_unless (camera != NULL);
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (idle);
- g_signal_emit_by_name (camera, "start-capture", NULL);
-
- msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
-
- /* check that we got a preview image */
- check_preview_image (camera, image_filename, 0);
-
- wait_for_idle_state ();
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- check_file_validity (image_filename, 0, NULL, 0, 0, NO_AUDIO);
- remove_file (image_filename, 0);
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_multiple_image_captures)
-{
- gboolean idle;
- gint i;
- gint widths[] = { 800, 640, 1280 };
- gint heights[] = { 600, 480, 1024 };
-
- if (!camera)
- return;
-
- /* set still image mode */
- g_object_set (camera, "mode", 1, "location", image_filename, NULL);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
- fail_unless (camera != NULL);
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (idle);
- GST_INFO ("starting capture");
-
- for (i = 0; i < 3; i++) {
- GstMessage *msg;
- GstCaps *caps;
-
- caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
- widths[i], "height", G_TYPE_INT, heights[i], NULL);
-
- g_object_set (camera, "image-capture-caps", caps, NULL);
- gst_caps_unref (caps);
-
- g_signal_emit_by_name (camera, "start-capture", NULL);
-
- msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
-
- check_preview_image (camera, image_filename, i);
- }
-
- wait_for_idle_state ();
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- for (i = 0; i < 3; i++) {
- check_file_validity (image_filename, i, NULL, widths[i], heights[i],
- NO_AUDIO);
- remove_file (image_filename, i);
- }
-}
-
-GST_END_TEST;
-
-GST_START_TEST (test_single_video_recording)
-{
- GstMessage *msg;
- gboolean idle;
- if (!camera)
- return;
-
- /* Set video recording mode */
- g_object_set (camera, "mode", 2, "location", video_filename, NULL);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
-
- GST_INFO ("starting capture");
- fail_unless (camera != NULL);
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (idle);
- g_signal_emit_by_name (camera, "start-capture", NULL);
-
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (!idle);
-
- /* Record for one seconds */
- g_timeout_add_seconds (VIDEO_DURATION, (GSourceFunc) g_main_loop_quit,
- main_loop);
- g_main_loop_run (main_loop);
-
- g_signal_emit_by_name (camera, "stop-capture", NULL);
-
- check_preview_image (camera, video_filename, 0);
-
- msg = wait_for_element_message (camera, "video-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
-
- wait_for_idle_state ();
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
-
- check_file_validity (video_filename, 0, NULL, 0, 0, WITH_AUDIO);
- remove_file (video_filename, 0);
-
-}
-
-GST_END_TEST;
-
-GST_START_TEST (test_multiple_video_recordings)
-{
- gboolean idle;
- gint i;
- gint widths[] = { 800, 640, 1280 };
- gint heights[] = { 600, 480, 1024 };
- gint fr[] = { 20, 30, 5 };
-
- if (!camera)
- return;
-
- /* Set video recording mode */
- g_object_set (camera, "mode", 2, "location", video_filename, NULL);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
-
- GST_INFO ("starting capture");
- fail_unless (camera != NULL);
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (idle);
- for (i = 0; i < 3; i++) {
- GstMessage *msg;
- GstCaps *caps;
-
- caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
- widths[i], "height", G_TYPE_INT, heights[i], "framerate",
- GST_TYPE_FRACTION, fr[i], 1, NULL);
-
- g_object_set (camera, "video-capture-caps", caps, NULL);
-
- gst_caps_unref (caps);
-
- GST_LOG ("starting #%d with caps %" GST_PTR_FORMAT, i, caps);
- g_signal_emit_by_name (camera, "start-capture", NULL);
-
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (!idle);
-
- g_timeout_add_seconds (VIDEO_DURATION, (GSourceFunc) g_main_loop_quit,
- main_loop);
- g_main_loop_run (main_loop);
-
- GST_LOG ("stopping run %d", i);
- g_signal_emit_by_name (camera, "stop-capture", NULL);
-
- msg = wait_for_element_message (camera, "video-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
-
- GST_LOG ("video done, checking preview image");
- check_preview_image (camera, video_filename, i);
-
- GST_LOG ("waiting for idle state");
- wait_for_idle_state ();
- GST_LOG ("finished run %d", i);
- }
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
-
- for (i = 0; i < 3; i++) {
- check_file_validity (video_filename, i, NULL, widths[i], heights[i],
- WITH_AUDIO);
- remove_file (video_filename, i);
- }
-}
-
-GST_END_TEST;
-
-GST_START_TEST (test_image_video_cycle)
-{
- gint i;
-
- if (!camera)
- return;
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
-
- GST_INFO ("starting capture");
- for (i = 0; i < 2; i++) {
- GstMessage *msg;
- const gchar *img_filename;
- const gchar *vid_filename;
-
- wait_for_idle_state ();
-
- /* take a picture */
- img_filename = make_const_file_name (image_filename, i);
- g_object_set (camera, "mode", 1, NULL);
- g_object_set (camera, "location", img_filename, NULL);
- g_signal_emit_by_name (camera, "start-capture", NULL);
-
- msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
-
- check_preview_image (camera, img_filename, i);
-
- /* now go to video */
- vid_filename = make_const_file_name (video_filename, i);
- g_object_set (camera, "mode", 2, NULL);
- g_object_set (camera, "location", vid_filename, NULL);
-
- g_signal_emit_by_name (camera, "start-capture", NULL);
- g_timeout_add_seconds (VIDEO_DURATION, (GSourceFunc) g_main_loop_quit,
- main_loop);
- g_main_loop_run (main_loop);
- g_signal_emit_by_name (camera, "stop-capture", NULL);
-
- msg = wait_for_element_message (camera, "video-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
-
- check_preview_image (camera, vid_filename, i);
- }
-
- wait_for_idle_state ();
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
-
- /* validate all the files */
- for (i = 0; i < 2; i++) {
- check_file_validity (image_filename, i, NULL, 0, 0, NO_AUDIO);
- remove_file (image_filename, i);
- check_file_validity (video_filename, i, NULL, 0, 0, WITH_AUDIO);
- remove_file (video_filename, i);
- }
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_image_capture_previews)
-{
- gint i;
- gint widths[] = { 800, 640, 1280 };
- gint heights[] = { 600, 480, 1024 };
-
- if (!camera)
- return;
-
- /* set still image mode */
- g_object_set (camera, "mode", 1, "location", image_filename, NULL);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
- fail_unless (camera != NULL);
- GST_INFO ("starting capture");
-
- for (i = 0; i < 3; i++) {
- GstMessage *msg;
- GstCaps *caps;
-
- caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
- widths[i], "height", G_TYPE_INT, heights[i], NULL);
-
- g_object_set (camera, "preview-caps", caps, NULL);
- gst_caps_replace (&preview_caps, caps);
- gst_caps_unref (caps);
-
- g_signal_emit_by_name (camera, "start-capture", NULL);
-
- msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
-
- check_preview_image (camera, image_filename, i);
- remove_file (image_filename, i);
-
- if (preview_buffer)
- gst_buffer_unref (preview_buffer);
- preview_buffer = NULL;
- gst_caps_replace (&preview_caps, NULL);
- }
-
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_image_capture_with_tags)
-{
- gint i;
- GstTagList *taglists[3];
-
- if (!camera)
- return;
-
- taglists[0] = gst_tag_list_new (GST_TAG_COMMENT, "test1",
- GST_TAG_GEO_LOCATION_LATITUDE, 36.6, GST_TAG_GEO_LOCATION_LONGITUDE,
- -12.5,
- GST_TAG_COPYRIGHT, "My copyright notice",
- GST_TAG_DEVICE_MANUFACTURER, "MyFavoriteBrand",
- GST_TAG_DEVICE_MODEL, "123v42.1",
- GST_TAG_DESCRIPTION, "some description",
- GST_TAG_APPLICATION_NAME, "camerabin2 test",
- GST_TAG_GEO_LOCATION_ELEVATION, 300.85, NULL);
- taglists[1] = gst_tag_list_new (GST_TAG_COMMENT, "test2",
- GST_TAG_GEO_LOCATION_LATITUDE, 1.6, GST_TAG_GEO_LOCATION_LONGITUDE,
- 0.0,
- GST_TAG_COPYRIGHT, "some cp",
- GST_TAG_DEVICE_MANUFACTURER, "ABRAND",
- GST_TAG_DEVICE_MODEL, "abcd",
- GST_TAG_DESCRIPTION, "desc",
- GST_TAG_APPLICATION_NAME, "another cam test",
- GST_TAG_GEO_LOCATION_ELEVATION, 10.0, NULL);
- taglists[2] = gst_tag_list_new (GST_TAG_COMMENT, "test3",
- GST_TAG_GEO_LOCATION_LATITUDE, 1.3, GST_TAG_GEO_LOCATION_LONGITUDE,
- -5.0,
- GST_TAG_COPYRIGHT, "CC",
- GST_TAG_DEVICE_MANUFACTURER, "Homemade",
- GST_TAG_DEVICE_MODEL, "xpto",
- GST_TAG_DESCRIPTION, "another description",
- GST_TAG_APPLICATION_NAME, "cam2 test",
- GST_TAG_GEO_LOCATION_ELEVATION, 0.0, NULL);
-
- /* set still image mode */
- g_object_set (camera, "mode", 1, "location", image_filename, NULL);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
- fail_unless (camera != NULL);
- GST_INFO ("starting capture");
-
- for (i = 0; i < 3; i++) {
- GstMessage *msg;
- gst_tag_setter_merge_tags (GST_TAG_SETTER (camera), taglists[i],
- GST_TAG_MERGE_REPLACE);
-
- g_signal_emit_by_name (camera, "start-capture", NULL);
-
- msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
- }
-
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
-
- for (i = 0; i < 3; i++) {
- check_file_validity (image_filename, i, taglists[i], 0, 0, NO_AUDIO);
- gst_tag_list_free (taglists[i]);
- remove_file (image_filename, i);
- }
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_video_capture_with_tags)
-{
- gint i;
- GstTagList *taglists[3];
-
- if (!camera)
- return;
-
- taglists[0] = gst_tag_list_new (GST_TAG_COMMENT, "test1", NULL);
- taglists[1] = gst_tag_list_new (GST_TAG_COMMENT, "test2", NULL);
- taglists[2] = gst_tag_list_new (GST_TAG_COMMENT, "test3", NULL);
-
- /* set video mode */
- g_object_set (camera, "mode", 2, "location", video_filename, NULL);
-
- /* set a profile that has xmp support for more tags being saved */
- {
- GstEncodingContainerProfile *profile;
- GstCaps *caps;
-
- caps =
- gst_caps_new_simple ("video/quicktime", "variant", G_TYPE_STRING,
- "apple", NULL);
- profile = gst_encoding_container_profile_new ("qt", "jpeg+qt", caps, NULL);
- gst_caps_unref (caps);
-
- caps = gst_caps_new_simple ("image/jpeg", NULL, NULL);
- if (!gst_encoding_container_profile_add_profile (profile,
- (GstEncodingProfile *) gst_encoding_video_profile_new (caps,
- NULL, NULL, 1))) {
- GST_WARNING_OBJECT (camera, "Failed to create encoding profiles");
- }
- gst_caps_unref (caps);
-
- g_object_set (camera, "video-profile", profile, NULL);
- gst_encoding_profile_unref (profile);
- }
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
- fail_unless (camera != NULL);
- GST_INFO ("starting capture");
-
- for (i = 0; i < 3; i++) {
- GstMessage *msg;
-
- gst_tag_setter_merge_tags (GST_TAG_SETTER (camera), taglists[i],
- GST_TAG_MERGE_REPLACE);
-
- g_signal_emit_by_name (camera, "start-capture", NULL);
-
- g_timeout_add_seconds (3, (GSourceFunc) g_main_loop_quit, main_loop);
- g_main_loop_run (main_loop);
-
- g_signal_emit_by_name (camera, "stop-capture", NULL);
-
- msg = wait_for_element_message (camera, "video-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
- }
-
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
-
- for (i = 0; i < 3; i++) {
- check_file_validity (video_filename, i, taglists[i], 0, 0, NO_AUDIO);
- gst_tag_list_free (taglists[i]);
- remove_file (video_filename, i);
- }
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_supported_caps)
-{
- GstCaps *padcaps = NULL;
- GstCaps *expectedcaps;
- GstElement *src;
-
- if (!camera)
- return;
-
- src = g_object_new (GST_TYPE_TEST_CAMERA_SRC, NULL);
- g_object_set (camera, "camera-source", src, NULL);
- gst_object_unref (src);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
- g_assert (camera != NULL);
-
- expectedcaps = gst_caps_from_string (VIDEO_PAD_SUPPORTED_CAPS);
- g_object_get (G_OBJECT (camera), "video-capture-supported-caps", &padcaps,
- NULL);
- g_assert (expectedcaps != NULL);
- g_assert (padcaps != NULL);
- g_assert (gst_caps_is_equal (padcaps, expectedcaps));
- gst_caps_unref (expectedcaps);
- gst_caps_unref (padcaps);
-
- expectedcaps = gst_caps_from_string (IMAGE_PAD_SUPPORTED_CAPS);
- g_object_get (G_OBJECT (camera), "image-capture-supported-caps", &padcaps,
- NULL);
- g_assert (expectedcaps != NULL);
- g_assert (padcaps != NULL);
- g_assert (gst_caps_is_equal (padcaps, expectedcaps));
- gst_caps_unref (expectedcaps);
- gst_caps_unref (padcaps);
-
- gst_element_set_state (camera, GST_STATE_NULL);
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_idle_property)
-{
- GstMessage *msg;
- gboolean idle;
- if (!camera)
- return;
-
- /* Set video recording mode */
- g_object_set (camera, "mode", 2, "location", video_filename, NULL);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
-
- GST_INFO ("starting capture");
- fail_unless (camera != NULL);
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (idle);
- g_signal_emit_by_name (camera, "start-capture", NULL);
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (!idle);
-
- /* emit a second start-capture that should be ignored */
- g_signal_emit_by_name (camera, "start-capture", NULL);
- g_object_get (camera, "idle", &idle, NULL);
- fail_unless (!idle);
-
- /* Record for one seconds */
- g_timeout_add_seconds (VIDEO_DURATION, (GSourceFunc) g_main_loop_quit,
- main_loop);
- g_main_loop_run (main_loop);
-
- g_signal_emit_by_name (camera, "stop-capture", NULL);
-
- msg = wait_for_element_message (camera, "video-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
-
- check_preview_image (camera, video_filename, 0);
-
- wait_for_idle_state ();
-
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
-
- check_file_validity (video_filename, 0, NULL, 0, 0, WITH_AUDIO);
- remove_file (video_filename, 0);
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_image_custom_filter)
-{
- GstElement *vf_filter;
- GstElement *image_filter;
- GstElement *preview_filter;
- GstPad *pad;
- gint vf_probe_counter = 0;
- gint image_probe_counter = 0;
- gint preview_probe_counter = 0;
-
- if (!camera)
- return;
-
- vf_filter = gst_element_factory_make ("identity", "vf-filter");
- image_filter = gst_element_factory_make ("identity", "img-filter");
- preview_filter = gst_element_factory_make ("identity", "preview-filter");
-
- pad = gst_element_get_static_pad (vf_filter, "src");
- gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
- &vf_probe_counter, NULL);
- gst_object_unref (pad);
-
- pad = gst_element_get_static_pad (image_filter, "src");
- gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
- &image_probe_counter, NULL);
- gst_object_unref (pad);
-
- pad = gst_element_get_static_pad (preview_filter, "src");
- gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
- &preview_probe_counter, NULL);
- gst_object_unref (pad);
-
- /* set still image mode and filters */
- g_object_set (camera, "mode", 1,
- "location", image_filename,
- "viewfinder-filter", vf_filter, "image-filter", image_filter,
- "preview-filter", preview_filter, NULL);
-
- gst_object_unref (vf_filter);
- gst_object_unref (preview_filter);
- gst_object_unref (image_filter);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
- GST_INFO ("starting capture");
- fail_unless (camera != NULL);
- g_signal_emit_by_name (camera, "start-capture", NULL);
-
- g_timeout_add_seconds (3, (GSourceFunc) g_main_loop_quit, main_loop);
- g_main_loop_run (main_loop);
-
- /* check that we got a preview image */
- check_preview_image (camera, image_filename, 0);
-
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- check_file_validity (image_filename, 0, NULL, 0, 0, NO_AUDIO);
- remove_file (image_filename, 0);
-
- fail_unless (vf_probe_counter > 0);
- fail_unless (image_probe_counter == 1);
- fail_unless (preview_probe_counter == 1);
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_video_custom_filter)
-{
- GstElement *vf_filter;
- GstElement *video_filter;
- GstElement *preview_filter;
- GstElement *audio_filter;
- GstPad *pad;
- gint vf_probe_counter = 0;
- gint video_probe_counter = 0;
- gint preview_probe_counter = 0;
- gint audio_probe_counter = 0;
-
- if (!camera)
- return;
-
- vf_filter = gst_element_factory_make ("identity", "vf-filter");
- video_filter = gst_element_factory_make ("identity", "video-filter");
- preview_filter = gst_element_factory_make ("identity", "preview-filter");
- audio_filter = gst_element_factory_make ("identity", "audio-filter");
-
- pad = gst_element_get_static_pad (vf_filter, "src");
- gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
- &vf_probe_counter, NULL);
- gst_object_unref (pad);
-
- pad = gst_element_get_static_pad (video_filter, "src");
- gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
- &video_probe_counter, NULL);
- gst_object_unref (pad);
-
- pad = gst_element_get_static_pad (audio_filter, "src");
- gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
- &audio_probe_counter, NULL);
- gst_object_unref (pad);
-
- pad = gst_element_get_static_pad (preview_filter, "src");
- gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, filter_buffer_count,
- &preview_probe_counter, NULL);
- gst_object_unref (pad);
-
- /* set still image mode and filters */
- g_object_set (camera, "mode", 2,
- "location", video_filename,
- "viewfinder-filter", vf_filter, "video-filter", video_filter,
- "preview-filter", preview_filter, "audio-filter", audio_filter, NULL);
-
- gst_object_unref (vf_filter);
- gst_object_unref (preview_filter);
- gst_object_unref (video_filter);
- gst_object_unref (audio_filter);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
- GST_INFO ("starting capture");
- fail_unless (camera != NULL);
- g_signal_emit_by_name (camera, "start-capture", NULL);
-
- g_timeout_add_seconds (VIDEO_DURATION, (GSourceFunc) g_main_loop_quit,
- main_loop);
- g_main_loop_run (main_loop);
- g_signal_emit_by_name (camera, "stop-capture", NULL);
-
- /* check that we got a preview image */
- check_preview_image (camera, video_filename, 0);
-
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- check_file_validity (video_filename, 0, NULL, 0, 0, WITH_AUDIO);
- remove_file (video_filename, 0);
-
- fail_unless (vf_probe_counter > 0);
- fail_unless (video_probe_counter > 0);
- fail_unless (audio_probe_counter > 0);
- fail_unless (preview_probe_counter == 1);
-}
-
-GST_END_TEST;
-
-#define LOCATION_SWITCHING_FILENAMES_COUNT 5
-
-static gboolean
-image_location_switch_do_capture (gpointer data)
-{
- gchar **filenames = data;
- if (capture_count >= LOCATION_SWITCHING_FILENAMES_COUNT) {
- g_main_loop_quit (main_loop);
- }
-
- g_object_set (camera, "location", filenames[capture_count], NULL);
- g_signal_emit_by_name (camera, "start-capture", NULL);
- capture_count++;
- return FALSE;
-}
-
-static void
-image_location_switch_readyforcapture (GObject * obj, GParamSpec * pspec,
- gpointer user_data)
-{
- gboolean ready;
-
- g_object_get (obj, "ready-for-capture", &ready, NULL);
- if (ready) {
- g_idle_add (image_location_switch_do_capture, user_data);
- }
-};
-
-/*
- * Tests that setting the location and then doing an image
- * capture will set this capture resulting filename to the
- * correct location.
- *
- * There was a bug in which setting the location, issuing a capture
- * and then setting a new location would cause this capture to have
- * the location set after this capture. This test should prevent it
- * from happening again.
- */
-GST_START_TEST (test_image_location_switching)
-{
- gchar *filenames[LOCATION_SWITCHING_FILENAMES_COUNT + 1];
- gint i;
- glong notify_id;
- GstCaps *caps;
- GstElement *src;
- GstMessage *msg;
-
- if (!camera)
- return;
-
- g_object_get (camera, "camera-source", &src, NULL);
-
- for (i = 0; i < LOCATION_SWITCHING_FILENAMES_COUNT; i++) {
- filenames[i] = make_test_file_name ("image-switching-filename-test", i);
- }
- filenames[LOCATION_SWITCHING_FILENAMES_COUNT] = NULL;
-
- /* set still image mode */
- g_object_set (camera, "mode", 1, NULL);
- caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
- 800, "height", G_TYPE_INT, 600, NULL);
- g_object_set (camera, "image-capture-caps", caps, NULL);
- gst_caps_unref (caps);
-
- if (gst_element_set_state (GST_ELEMENT (camera), GST_STATE_PLAYING) ==
- GST_STATE_CHANGE_FAILURE) {
- GST_WARNING ("setting camerabin to PLAYING failed");
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
- gst_object_unref (camera);
- camera = NULL;
- }
- fail_unless (camera != NULL);
- GST_INFO ("starting capture");
-
- notify_id = g_signal_connect (G_OBJECT (src),
- "notify::ready-for-capture",
- G_CALLBACK (image_location_switch_readyforcapture), filenames);
-
- g_idle_add (image_location_switch_do_capture, filenames);
- g_main_loop_run (main_loop);
-
- msg = wait_for_element_message (camera, "image-done", GST_CLOCK_TIME_NONE);
- fail_unless (msg != NULL);
- gst_message_unref (msg);
-
- gst_element_set_state (GST_ELEMENT (camera), GST_STATE_NULL);
-
- for (i = 0; i < LOCATION_SWITCHING_FILENAMES_COUNT; i++) {
- GST_INFO ("Checking for file: %s", filenames[i]);
- fail_unless (g_file_test (filenames[i], G_FILE_TEST_IS_REGULAR));
- }
-
- for (i = 0; i < LOCATION_SWITCHING_FILENAMES_COUNT; i++) {
- g_unlink (filenames[i]);
- g_free (filenames[i]);
- }
- g_signal_handler_disconnect (src, notify_id);
-}
-
-GST_END_TEST;
-
-
-typedef struct _TestCaseDef
-{
- const gchar *name;
- gpointer setup_func;
-} TestCaseDef;
-
-TestCaseDef tests[] = {
- {"wrappercamerabinsrc", setup_wrappercamerabinsrc_videotestsrc}
-};
-
-static Suite *
-camerabin_suite (void)
-{
- GstElementFactory *jpegenc_factory;
- Suite *s = suite_create ("camerabin2");
- gint i;
- TCase *tc_generic = tcase_create ("generic");
-
- jpegenc_factory = gst_element_factory_find ("jpegenc");
- if (jpegenc_factory == NULL) {
- GST_WARNING ("Skipping camerabin2 tests because jpegenc is missing");
- goto end;
- }
-
- suite_add_tcase (s, tc_generic);
- tcase_add_checked_fixture (tc_generic, setup_wrappercamerabinsrc_videotestsrc,
- teardown);
- tcase_add_test (tc_generic, test_supported_caps);
-
- for (i = 0; i < G_N_ELEMENTS (tests); i++) {
- TCase *tc_basic = tcase_create (tests[i].name);
- suite_add_tcase (s, tc_basic);
-
- /* Increase timeout due to video recording */
- tcase_set_timeout (tc_basic, 60);
- tcase_add_checked_fixture (tc_basic, tests[i].setup_func, teardown);
-
- tcase_add_test (tc_basic, test_single_image_capture);
- tcase_add_test (tc_basic, test_single_video_recording);
- tcase_add_test (tc_basic, test_image_video_cycle);
- if (gst_plugin_feature_check_version ((GstPluginFeature *) jpegenc_factory,
- 0, 10, 27))
- tcase_add_test (tc_basic, test_multiple_image_captures);
- else
- GST_WARNING ("Skipping image capture test because -good 0.10.27 is "
- "needed");
- tcase_add_test (tc_basic, test_multiple_video_recordings);
-
- tcase_add_test (tc_basic, test_image_capture_previews);
- tcase_add_test (tc_basic, test_image_capture_with_tags);
-
- tcase_add_test (tc_basic, test_video_capture_with_tags);
-
- tcase_add_test (tc_basic, test_idle_property);
-
- tcase_add_test (tc_basic, test_image_custom_filter);
- tcase_add_test (tc_basic, test_video_custom_filter);
-
- tcase_add_test (tc_basic, test_image_location_switching);
- }
-
-end:
- return s;
-}
-
-GST_CHECK_MAIN (camerabin);
diff --git a/tests/check/elements/curlfilesink.c b/tests/check/elements/curlfilesink.c
new file mode 100644
index 00000000..088ac40c
--- /dev/null
+++ b/tests/check/elements/curlfilesink.c
@@ -0,0 +1,510 @@
+/*
+ * Unittest for curlfilesink
+ */
+
+#include <gst/check/gstcheck.h>
+#include <glib/gstdio.h>
+#include <curl/curl.h>
+#include <unistd.h>
+
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+static GstPad *srcpad;
+
+static GstElement *sink;
+
+static GstElement *
+setup_curlfilesink (void)
+{
+ GST_DEBUG ("setup_curlfielsink");
+ sink = gst_check_setup_element ("curlfilesink");
+ srcpad = gst_check_setup_src_pad (sink, &srctemplate);
+ gst_pad_set_active (srcpad, TRUE);
+
+ return sink;
+}
+
+static void
+cleanup_curlfilesink (GstElement * sink)
+{
+ GST_DEBUG ("cleanup_curlfilesink");
+
+ gst_check_teardown_src_pad (sink);
+ gst_check_teardown_element (sink);
+}
+
+static void
+test_verify_file_data (const gchar *dir, gchar *file_name,
+ const gchar *expected_file_content)
+{
+ GError *err = NULL;
+ gchar *res_file_content = NULL;
+ gchar *path = NULL;
+
+ path = g_strdup_printf ("%s/%s", dir, file_name);
+ g_free (file_name);
+
+ if (!g_file_get_contents (path, &res_file_content, NULL, &err)) {
+ GST_WARNING ("Error loading file: %s (%s)", file_name, err->message);
+ g_error_free (err);
+ }
+
+ fail_unless (res_file_content != NULL);
+
+ fail_unless (strncmp (res_file_content, expected_file_content,
+ strlen (expected_file_content)) == 0);
+ g_free (res_file_content);
+ g_unlink (path);
+ g_free (path);
+}
+
+static void
+test_set_and_play_buffer (const gchar * _data)
+{
+ gpointer data = (gpointer) _data;
+ GstBuffer *buffer;
+ gint num_bytes;
+
+ num_bytes = strlen (data);
+ buffer = gst_buffer_new ();
+ gst_buffer_insert_memory (buffer, 0,
+ gst_memory_new_wrapped (GST_MEMORY_FLAG_READONLY,
+ data, num_bytes, 0, num_bytes, data, NULL));
+
+ fail_unless (gst_pad_push (srcpad, buffer) == GST_FLOW_OK);
+}
+
+static void
+test_set_and_fail_to_play_buffer (const gchar * _data)
+{
+ gpointer data = (gpointer) _data;
+ GstBuffer *buffer;
+ gint num_bytes;
+
+ num_bytes = strlen (data);
+ buffer = gst_buffer_new ();
+ gst_buffer_insert_memory (buffer, 0,
+ gst_memory_new_wrapped (GST_MEMORY_FLAG_READONLY,
+ data, num_bytes, 0, num_bytes, data, NULL));
+
+ fail_unless (gst_pad_push (srcpad, buffer) == GST_FLOW_ERROR);
+}
+
+static gboolean
+sebras_gst_pad_set_caps (GstPad * pad, GstCaps * caps)
+{
+ GstEvent *event;
+ gboolean res = TRUE;
+
+ GST_WARNING ("sebraz: a %p %p", pad, caps);
+ g_return_val_if_fail (GST_IS_PAD (pad), FALSE);
+ GST_WARNING ("sebraz: b");
+ g_return_val_if_fail (caps != NULL && gst_caps_is_fixed (caps), FALSE);
+ GST_WARNING ("sebraz: c");
+
+ GST_WARNING ("sebraz: d");
+ event = gst_event_new_caps (caps);
+ GST_WARNING ("sebraz: e");
+
+ if (GST_PAD_IS_SRC (pad)) {
+ GST_WARNING ("sebraz: f1");
+ res = gst_pad_push_event (pad, event);
+ } else {
+ GST_WARNING ("sebraz: f2");
+ res = gst_pad_send_event (pad, event);
+ }
+
+ GST_WARNING ("sebraz: g");
+
+ return res;
+}
+
+GST_START_TEST (test_properties)
+{
+ GstElement *sink;
+ GstCaps *caps;
+ const gchar *location= "file:///tmp/";
+ const gchar *file_contents = "line 1\r\n";
+ gchar *file_name = g_strdup_printf ("curlfilesink_%d", g_random_int ());
+ gchar *res_location = NULL;
+ gchar *res_file_name = NULL;
+ gboolean res_create_dirs = FALSE;
+ gchar *path = NULL;
+
+ GST_WARNING ("sebras: a");
+
+ sink = setup_curlfilesink ();
+ GST_WARNING ("sebras: b");
+
+ g_object_set (G_OBJECT (sink), "location", "mylocation", NULL);
+ g_object_set (G_OBJECT (sink), "file-name", "myfile", NULL);
+ g_object_set (G_OBJECT (sink), "create-dirs", TRUE, NULL);
+ GST_WARNING ("sebras: c");
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ "create-dirs", &res_create_dirs,
+ NULL);
+ GST_WARNING ("sebras: d");
+
+ fail_unless (strncmp (res_location, "mylocation", strlen ("mylocation"))
+ == 0);
+ GST_WARNING ("sebras: e");
+ fail_unless (strncmp (res_file_name, "myfile", strlen ("myfile"))
+ == 0);
+ GST_WARNING ("sebras: f");
+ fail_unless (res_create_dirs == TRUE);
+ GST_WARNING ("sebras: g");
+ g_free (res_location);
+ g_free (res_file_name);
+ GST_WARNING ("sebras: h");
+
+ /* change properties */
+ g_object_set (G_OBJECT (sink), "location", location, NULL);
+ g_object_set (G_OBJECT (sink), "file-name", file_name, NULL);
+ g_object_set (G_OBJECT (sink), "create-dirs", FALSE, NULL);
+ GST_WARNING ("sebras: i");
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ "create-dirs", &res_create_dirs,
+ NULL);
+ GST_WARNING ("sebras: j");
+
+ fail_unless (strncmp (res_location, location, strlen (location))
+ == 0);
+ GST_WARNING ("sebras: k");
+ fail_unless (strncmp (res_file_name, file_name, strlen (file_name))
+ == 0);
+ GST_WARNING ("sebras: l");
+ fail_unless (res_create_dirs == FALSE);
+ GST_WARNING ("sebras: m");
+ g_free (res_location);
+ g_free (res_file_name);
+ GST_WARNING ("sebras: n");
+
+ /* start playing */
+ ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC);
+ GST_WARNING ("sebras: o");
+ caps = gst_caps_from_string ("application/x-gst-check");
+ GST_WARNING ("sebras: p");
+ fail_unless (sebras_gst_pad_set_caps (srcpad, caps));
+ fail_unless (gst_pad_set_caps (srcpad, caps));
+ GST_WARNING ("sebras: q");
+
+ /* setup buffer */
+ test_set_and_play_buffer (file_contents);
+ GST_WARNING ("sebras: r");
+
+ /* try to change location property while in PLAYING state */
+ g_object_set (G_OBJECT (sink), "location", "newlocation", NULL);
+ g_object_get (sink, "location", &res_location, NULL);
+
+ /* verify that locaiton has not been altered */
+ fail_unless (strncmp (res_location, location, strlen (location))
+ == 0);
+ g_free (res_location);
+
+ /* eos */
+ fail_unless (gst_pad_push_event (srcpad, gst_event_new_eos ()));
+ ASSERT_SET_STATE (sink, GST_STATE_NULL, GST_STATE_CHANGE_SUCCESS);
+
+ gst_caps_unref (caps);
+ cleanup_curlfilesink (sink);
+
+ path = g_strdup_printf ("/tmp/%s", file_name);
+ g_unlink (path);
+ g_free (file_name);
+ g_free (path);
+}
+GST_END_TEST;
+
+GST_START_TEST (test_one_file)
+{
+ GstElement *sink;
+ GstCaps *caps;
+ const gchar *location= "file:///tmp/";
+ gchar *file_name = g_strdup_printf ("curlfilesink_%d", g_random_int ());
+ const gchar *file_content = "line 1\r\n";
+ gchar *res_location = NULL;
+ gchar *res_file_name = NULL;
+
+ sink = setup_curlfilesink ();
+
+ g_object_set (G_OBJECT (sink), "location", location, NULL);
+ g_object_set (G_OBJECT (sink), "file-name", file_name, NULL);
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ NULL);
+
+ fail_unless (strncmp (res_location, location, strlen (location))
+ == 0);
+ fail_unless (strncmp (res_file_name, file_name, strlen (file_name))
+ == 0);
+
+ g_free (res_location);
+ g_free (res_file_name);
+
+ /* start playing */
+ ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC);
+ caps = gst_caps_from_string ("application/x-gst-check");
+ fail_unless (gst_pad_set_caps (srcpad, caps));
+
+ /* setup buffer */
+ test_set_and_play_buffer (file_content);
+
+ /* eos */
+ fail_unless (gst_pad_push_event (srcpad, gst_event_new_eos ()));
+ ASSERT_SET_STATE (sink, GST_STATE_NULL, GST_STATE_CHANGE_SUCCESS);
+
+ gst_caps_unref (caps);
+ cleanup_curlfilesink (sink);
+
+ /* verify file content */
+ test_verify_file_data ("/tmp", file_name, file_content);
+}
+GST_END_TEST;
+
+GST_START_TEST (test_one_big_file)
+{
+ GstElement *sink;
+ GstCaps *caps;
+ const gchar *location= "file:///tmp/";
+ gchar *file_name = g_strdup_printf ("curlfilesink_%d", g_random_int ());
+ const gchar *file_line1 = "line 1\r\n";
+ const gchar *file_line2 = "line 2\r\n";
+ const gchar *file_line3 = "line 3\r\n";
+ const gchar *expected_file_content = "line 1\r\n" \
+ "line 2\r\n" \
+ "line 3\r\n";
+ gchar *res_location = NULL;
+ gchar *res_file_name = NULL;
+
+ sink = setup_curlfilesink ();
+
+ g_object_set (G_OBJECT (sink), "location", location, NULL);
+ g_object_set (G_OBJECT (sink), "file-name", file_name, NULL);
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ NULL);
+
+ fail_unless (strncmp (res_location, location, strlen (location))
+ == 0);
+ fail_unless (strncmp (res_file_name, file_name, strlen (file_name))
+ == 0);
+
+ g_free (res_location);
+ g_free (res_file_name);
+
+ /* start playing */
+ ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC);
+ caps = gst_caps_from_string ("application/x-gst-check");
+ fail_unless (gst_pad_set_caps (srcpad, caps));
+
+ /* setup first buffer */
+ test_set_and_play_buffer (file_line1);
+
+ /* setup second buffer */
+ test_set_and_play_buffer (file_line2);
+
+ /* setup third buffer */
+ test_set_and_play_buffer (file_line3);
+
+ /* eos */
+ fail_unless (gst_pad_push_event (srcpad, gst_event_new_eos ()));
+ ASSERT_SET_STATE (sink, GST_STATE_NULL, GST_STATE_CHANGE_SUCCESS);
+
+ gst_caps_unref (caps);
+ cleanup_curlfilesink (sink);
+
+ /* verify file content */
+ test_verify_file_data ("/tmp", file_name, expected_file_content);
+}
+GST_END_TEST;
+
+GST_START_TEST (test_two_files)
+{
+ GstElement *sink;
+ GstCaps *caps;
+ const gchar *location= "file:///tmp/";
+ gchar *file_name1 = g_strdup_printf ("curlfilesink_%d", g_random_int ());
+ gchar *file_name2 = g_strdup_printf ("curlfilesink_%d", g_random_int ());
+ const gchar *file_content1 = "file content 1\r\n";
+ const gchar *file_content2 = "file content 2\r\n";
+ gchar *res_location = NULL;
+ gchar *res_file_name = NULL;
+
+ sink = setup_curlfilesink ();
+
+ g_object_set (G_OBJECT (sink), "location", location, NULL);
+ g_object_set (G_OBJECT (sink), "file-name", file_name1, NULL);
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ NULL);
+
+ fail_unless (strncmp (res_location, location, strlen (location))
+ == 0);
+ fail_unless (strncmp (res_file_name, file_name1, strlen (file_name1))
+ == 0);
+
+ g_free (res_location);
+ g_free (res_file_name);
+
+ /* start playing */
+ ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC);
+ caps = gst_caps_from_string ("application/x-gst-check");
+ fail_unless (gst_pad_set_caps (srcpad, caps));
+
+ /* setup first buffer - content of the first file */
+ test_set_and_play_buffer (file_content1);
+
+ g_object_set (G_OBJECT (sink), "file-name", file_name2, NULL);
+ g_object_get (sink, "file-name", &res_file_name, NULL);
+ fail_unless (strncmp (res_file_name, file_name2, strlen (file_name2))
+ == 0);
+ g_free (res_file_name);
+
+ /* setup second buffer - content of the second file */
+ test_set_and_play_buffer (file_content2);
+
+ /* eos */
+ fail_unless (gst_pad_push_event (srcpad, gst_event_new_eos ()));
+ ASSERT_SET_STATE (sink, GST_STATE_NULL, GST_STATE_CHANGE_SUCCESS);
+
+ gst_caps_unref (caps);
+ cleanup_curlfilesink (sink);
+
+ /* verify file contents of the first file */
+ test_verify_file_data ("/tmp", file_name1, file_content1);
+ test_verify_file_data ("/tmp", file_name2, file_content2);
+}
+GST_END_TEST;
+
+GST_START_TEST (test_create_dirs)
+{
+ GstElement *sink;
+ GstCaps *caps;
+ gchar *tmp_dir = g_strdup ("/tmp/curlfilesink_XXXXXX");
+ gchar *sub_dir;
+ gchar *sub_sub_dir;
+ gchar *location;
+ gchar *file_name = g_strdup_printf ("curlfilesink_%d", g_random_int ());
+ const gchar *file_content = "line 1\r\n";
+
+ /* create temp dir as base dir (mkdtemp saves dir name in tmp_dir) */
+ fail_unless (mkdtemp (tmp_dir) != NULL);
+
+ /* use sub-sub directory as location */
+ sub_dir = g_strdup_printf ("%s/a", tmp_dir);
+ sub_sub_dir = g_strdup_printf ("%s/b", sub_dir);
+ location = g_strdup_printf ("file://%s/", sub_sub_dir);
+
+ sink = setup_curlfilesink ();
+
+ g_object_set (G_OBJECT (sink), "location", location, NULL);
+ g_object_set (G_OBJECT (sink), "file-name", file_name, NULL);
+ g_object_set (G_OBJECT (sink), "create-dirs", TRUE, NULL);
+
+ /* start playing */
+ ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC);
+ caps = gst_caps_from_string ("application/x-gst-check");
+ fail_unless (gst_pad_set_caps (srcpad, caps));
+
+ /* setup buffer */
+ test_set_and_play_buffer (file_content);
+
+ /* eos */
+ fail_unless (gst_pad_push_event (srcpad, gst_event_new_eos ()));
+ ASSERT_SET_STATE (sink, GST_STATE_NULL, GST_STATE_CHANGE_SUCCESS);
+
+ gst_caps_unref (caps);
+ cleanup_curlfilesink (sink);
+
+ /* verify file content in sub-sub dir created by sink */
+ test_verify_file_data (sub_sub_dir, file_name, file_content);
+
+ /* remove directories */
+ fail_unless (g_rmdir (sub_sub_dir) == 0);
+ fail_unless (g_rmdir (sub_dir) == 0);
+ fail_unless (g_rmdir (tmp_dir) == 0);
+ g_free (sub_sub_dir);
+ g_free (sub_dir);
+ g_free (tmp_dir);
+}
+GST_END_TEST;
+
+GST_START_TEST (test_missing_path)
+{
+ GstElement *sink;
+ GstCaps *caps;
+ const gchar *location= "file:///missing/path/";
+ gchar *file_name = g_strdup_printf ("curlfilesink_%d", g_random_int ());
+ const gchar *file_content = "line 1\r\n";
+ gchar *res_location = NULL;
+ gchar *res_file_name = NULL;
+
+ sink = setup_curlfilesink ();
+
+ g_object_set (G_OBJECT (sink), "location", location, NULL);
+ g_object_set (G_OBJECT (sink), "file-name", file_name, NULL);
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ NULL);
+
+ fail_unless (strncmp (res_location, location, strlen (location))
+ == 0);
+ fail_unless (strncmp (res_file_name, file_name, strlen (file_name))
+ == 0);
+
+ g_free (res_location);
+ g_free (res_file_name);
+
+ /* start playing */
+ ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC);
+ caps = gst_caps_from_string ("application/x-gst-check");
+ fail_unless (gst_pad_set_caps (srcpad, caps));
+
+ /* setup & play buffer which should fail due to the missing path */
+ test_set_and_fail_to_play_buffer (file_content);
+
+ /* eos */
+ fail_unless (gst_pad_push_event (srcpad, gst_event_new_eos ()));
+ ASSERT_SET_STATE (sink, GST_STATE_NULL, GST_STATE_CHANGE_SUCCESS);
+
+ gst_caps_unref (caps);
+ cleanup_curlfilesink (sink);
+}
+GST_END_TEST;
+
+static Suite *
+curlsink_suite (void)
+{
+ Suite *s = suite_create ("curlfilesink");
+ TCase *tc_chain = tcase_create ("general");
+
+ suite_add_tcase (s, tc_chain);
+ tcase_set_timeout (tc_chain, 20);
+ tcase_add_test (tc_chain, test_properties);
+ tcase_add_test (tc_chain, test_one_file);
+ tcase_add_test (tc_chain, test_one_big_file);
+ tcase_add_test (tc_chain, test_two_files);
+ tcase_add_test (tc_chain, test_missing_path);
+ tcase_add_test (tc_chain, test_create_dirs);
+
+ return s;
+}
+
+GST_CHECK_MAIN (curlsink);
diff --git a/tests/check/elements/curlftpsink.c b/tests/check/elements/curlftpsink.c
new file mode 100644
index 00000000..05a9f60f
--- /dev/null
+++ b/tests/check/elements/curlftpsink.c
@@ -0,0 +1,119 @@
+/*
+ * Unittest for curlftpsink
+ */
+
+#include <gst/check/gstcheck.h>
+#include <glib/gstdio.h>
+#include <curl/curl.h>
+
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+static GstPad *srcpad;
+
+static GstElement *sink;
+
+static GstElement *
+setup_curlftpsink (void)
+{
+ GST_DEBUG ("setup_curlftpsink");
+ sink = gst_check_setup_element ("curlftpsink");
+ srcpad = gst_check_setup_src_pad (sink, &srctemplate);
+ gst_pad_set_active (srcpad, TRUE);
+
+ return sink;
+}
+
+static void
+cleanup_curlftpsink (GstElement * sink)
+{
+ GST_DEBUG ("cleanup_curlftpsink");
+
+ gst_check_teardown_src_pad (sink);
+ gst_check_teardown_element (sink);
+}
+
+GST_START_TEST (test_properties)
+{
+ GstElement *sink;
+ gchar *res_location = NULL;
+ gchar *res_file_name = NULL;
+ gchar *res_ftp_port = NULL;
+ gboolean res_epsv_mode;
+ gboolean res_create_dirs;
+
+ sink = setup_curlftpsink ();
+
+ g_object_set (G_OBJECT (sink), "location", "mylocation", NULL);
+ g_object_set (G_OBJECT (sink), "file-name", "myfile", NULL);
+ g_object_set (G_OBJECT (sink), "ftp-port", "1.2.3.4:0", NULL);
+ g_object_set (G_OBJECT (sink), "epsv-mode", FALSE, NULL);
+ g_object_set (G_OBJECT (sink), "create-dirs", FALSE, NULL);
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ "ftp-port", &res_ftp_port,
+ "epsv-mode", &res_epsv_mode,
+ "create-dirs", &res_create_dirs,
+ NULL);
+
+ fail_unless (strncmp (res_location, "mylocation", strlen ("mylocation"))
+ == 0);
+ fail_unless (strncmp (res_file_name, "myfile", strlen ("myfile"))
+ == 0);
+ fail_unless (strncmp (res_ftp_port, "1.2.3.4:0", strlen ("1.2.3.4:0"))
+ == 0);
+ fail_unless (res_epsv_mode == FALSE);
+ fail_unless (res_create_dirs == FALSE);
+ g_free (res_location);
+ g_free (res_file_name);
+ g_free (res_ftp_port);
+
+ /* change properties */
+ g_object_set (G_OBJECT (sink), "location", "newlocation", NULL);
+ g_object_set (G_OBJECT (sink), "file-name", "newfilename", NULL);
+ g_object_set (G_OBJECT (sink), "ftp-port", "", NULL);
+ g_object_set (G_OBJECT (sink), "epsv-mode", TRUE, NULL);
+ g_object_set (G_OBJECT (sink), "create-dirs", TRUE, NULL);
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ "ftp-port", &res_ftp_port,
+ "epsv-mode", &res_epsv_mode,
+ "create-dirs", &res_create_dirs,
+ NULL);
+
+ fail_unless (strncmp (res_location, "newlocation", strlen ("newlocation"))
+ == 0);
+ fail_unless (strncmp (res_file_name, "newfilename", strlen ("newfilename"))
+ == 0);
+ fail_unless (strncmp (res_ftp_port, "", strlen (""))
+ == 0);
+ fail_unless (res_epsv_mode == TRUE);
+ fail_unless (res_create_dirs == TRUE);
+ g_free (res_location);
+ g_free (res_file_name);
+ g_free (res_ftp_port);
+
+ cleanup_curlftpsink (sink);
+}
+GST_END_TEST;
+
+static Suite *
+curlsink_suite (void)
+{
+ Suite *s = suite_create ("curlftpsink");
+ TCase *tc_chain = tcase_create ("general");
+
+ suite_add_tcase (s, tc_chain);
+ tcase_set_timeout (tc_chain, 20);
+ tcase_add_test (tc_chain, test_properties);
+
+ return s;
+}
+
+GST_CHECK_MAIN (curlsink);
diff --git a/tests/check/elements/curlhttpsink.c b/tests/check/elements/curlhttpsink.c
new file mode 100644
index 00000000..c2b0ef08
--- /dev/null
+++ b/tests/check/elements/curlhttpsink.c
@@ -0,0 +1,136 @@
+/*
+ * Unittest for curlhttpsink
+ */
+
+#include <gst/check/gstcheck.h>
+#include <glib/gstdio.h>
+#include <curl/curl.h>
+
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+static GstPad *srcpad;
+
+static GstElement *sink;
+
+static GstElement *
+setup_curlhttpsink (void)
+{
+ GST_DEBUG ("setup_curlhttpsink");
+ sink = gst_check_setup_element ("curlhttpsink");
+ srcpad = gst_check_setup_src_pad (sink, &srctemplate);
+ gst_pad_set_active (srcpad, TRUE);
+
+ return sink;
+}
+
+static void
+cleanup_curlhttpsink (GstElement * sink)
+{
+ GST_DEBUG ("cleanup_curlhttpsink");
+
+ gst_check_teardown_src_pad (sink);
+ gst_check_teardown_element (sink);
+}
+
+
+GST_START_TEST (test_properties)
+{
+ GstElement *sink;
+ gchar *res_location = NULL;
+ gchar *res_file_name = NULL;
+ gchar *res_user;
+ gchar *res_passwd;
+ gchar *res_proxy;
+ guint res_proxy_port;
+ gchar *res_proxy_user;
+ gchar *res_proxy_passwd;
+ gchar *res_content_type;
+ gboolean res_use_content_length;
+
+ sink = setup_curlhttpsink ();
+
+ g_object_set (G_OBJECT (sink),
+ "location", "mylocation",
+ "file-name","myfile",
+ "user", "user",
+ "passwd", "passwd",
+ "proxy", "myproxy",
+ "proxy-port", 7777,
+ "proxy-user", "proxy_user",
+ "proxy-passwd", "proxy_passwd",
+ "content-type", "image/jpeg",
+ "use-content-length", TRUE,
+ NULL);
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ "user", &res_user,
+ "passwd", &res_passwd,
+ "proxy", &res_proxy,
+ "proxy-port", &res_proxy_port,
+ "proxy-user", &res_proxy_user,
+ "proxy-passwd", &res_proxy_passwd,
+ "content-type", &res_content_type,
+ "use-content-length", &res_use_content_length,
+ NULL);
+
+ fail_unless (strncmp (res_location, "mylocation", strlen ("mylocation"))
+ == 0);
+ fail_unless (strncmp (res_file_name, "myfile", strlen ("myfile"))
+ == 0);
+ fail_unless (strncmp (res_user, "user", strlen ("user")) == 0);
+ fail_unless (strncmp (res_passwd, "passwd", strlen ("passwd")) == 0);
+ fail_unless (strncmp (res_proxy, "myproxy", strlen ("myproxy")) == 0);
+ fail_unless (res_proxy_port == 7777);
+ fail_unless (strncmp (res_proxy_user, "proxy_user", strlen ("proxy_user"))
+ == 0);
+ fail_unless (strncmp (res_proxy_passwd, "proxy_passwd",
+ strlen ("proxy_passwd")) == 0);
+ fail_unless (strncmp (res_content_type, "image/jpeg", strlen ("image/jpeg"))
+ == 0);
+ fail_unless (res_use_content_length == TRUE);
+
+ g_free (res_location);
+ g_free (res_file_name);
+ g_free (res_user);
+ g_free (res_passwd);
+ g_free (res_proxy);
+ g_free (res_proxy_user);
+ g_free (res_proxy_passwd);
+ g_free (res_content_type);
+
+ /* new properties */
+ g_object_set (G_OBJECT (sink), "location", "newlocation", NULL);
+ g_object_get (sink, "location", &res_location, NULL);
+ fail_unless (strncmp (res_location, "newlocation", strlen ("newlocation"))
+ == 0);
+ g_free (res_location);
+
+ g_object_set (G_OBJECT (sink), "file-name", "newfile", NULL);
+ g_object_get (sink, "file-name", &res_file_name, NULL);
+ fail_unless (strncmp (res_file_name, "newfile", strlen ("newfile"))
+ == 0);
+ g_free (res_file_name);
+
+ cleanup_curlhttpsink (sink);
+}
+GST_END_TEST;
+
+static Suite *
+curlsink_suite (void)
+{
+ Suite *s = suite_create ("curlhttpsink");
+ TCase *tc_chain = tcase_create ("general");
+
+ suite_add_tcase (s, tc_chain);
+ tcase_set_timeout (tc_chain, 20);
+ tcase_add_test (tc_chain, test_properties);
+
+ return s;
+}
+
+GST_CHECK_MAIN (curlsink);
diff --git a/tests/check/elements/curlsmtpsink.c b/tests/check/elements/curlsmtpsink.c
new file mode 100644
index 00000000..8b401e12
--- /dev/null
+++ b/tests/check/elements/curlsmtpsink.c
@@ -0,0 +1,208 @@
+/*
+ * Unittest for curlsmtpsink
+ */
+
+#include <gst/check/gstcheck.h>
+#include <glib/gstdio.h>
+#include <curl/curl.h>
+
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+static GstPad *srcpad;
+
+static GstElement *sink;
+
+static GstElement *
+setup_curlsmtpsink (void)
+{
+ GST_DEBUG ("setup_curlsmtpsink");
+ sink = gst_check_setup_element ("curlsmtpsink");
+ srcpad = gst_check_setup_src_pad (sink, &srctemplate);
+ gst_pad_set_active (srcpad, TRUE);
+
+ return sink;
+}
+
+static void
+cleanup_curlsmtpsink (GstElement * sink)
+{
+ GST_DEBUG ("cleanup_curlsmtpsink");
+
+ gst_check_teardown_src_pad (sink);
+ gst_check_teardown_element (sink);
+}
+
+GST_START_TEST (test_properties)
+{
+ GstElement *sink;
+ gchar *res_location = NULL;
+ gchar *res_file_name = NULL;
+ gchar *res_mail_rcpt = NULL;
+ gchar *res_mail_from = NULL;
+ gchar *res_subj = NULL;
+ gchar *res_msg = NULL;
+ gchar *res_usr = NULL;
+ gchar *res_passwd = NULL;
+ gchar *res_pop_location = NULL;
+ gchar *res_pop_usr = NULL;
+ gchar *res_pop_passwd = NULL;
+ guint res_nbr_attach;
+ gboolean res_use_ssl;
+
+ sink = setup_curlsmtpsink ();
+
+ g_object_set (G_OBJECT (sink), "location", "mylocation", NULL);
+ g_object_set (G_OBJECT (sink), "file-name", "myfile", NULL);
+ g_object_set (G_OBJECT (sink), "user", "usr", NULL);
+ g_object_set (G_OBJECT (sink), "passwd", "passwd", NULL);
+ g_object_set (G_OBJECT (sink), "mail-rcpt", "rcpt", NULL);
+ g_object_set (G_OBJECT (sink), "mail-from", "sender", NULL);
+ g_object_set (G_OBJECT (sink), "subject", "subject", NULL);
+ g_object_set (G_OBJECT (sink), "message-body", "message", NULL);
+ g_object_set (G_OBJECT (sink), "nbr-attachments", 5, NULL);
+ g_object_set (G_OBJECT (sink), "use-ssl", TRUE, NULL);
+ g_object_set (G_OBJECT (sink), "pop-location", "poploc", NULL);
+ g_object_set (G_OBJECT (sink), "pop-user", "popusr", NULL);
+ g_object_set (G_OBJECT (sink), "pop-passwd", "poppasswd", NULL);
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ "user", &res_usr,
+ "passwd", &res_passwd,
+ "mail-rcpt", &res_mail_rcpt,
+ "mail-from", &res_mail_from,
+ "subject", &res_subj,
+ "message-body", &res_msg,
+ "nbr-attachments", &res_nbr_attach,
+ "use-ssl", &res_use_ssl,
+ "pop-location", &res_pop_location,
+ "pop_user", &res_pop_usr,
+ "pop-passwd", &res_pop_passwd,
+ NULL);
+
+ fail_unless (strncmp (res_location, "mylocation", strlen ("mylocation"))
+ == 0);
+ fail_unless (strncmp (res_file_name, "myfile", strlen ("myfile"))
+ == 0);
+ fail_unless (strncmp (res_usr, "usr", strlen ("usr"))
+ == 0);
+ fail_unless (strncmp (res_passwd, "passwd", strlen ("passwd"))
+ == 0);
+ fail_unless (strncmp (res_mail_rcpt, "rcpt", strlen ("rcpt"))
+ == 0);
+ fail_unless (strncmp (res_mail_from, "sender", strlen ("sender"))
+ == 0);
+ fail_unless (strncmp (res_subj, "subject", strlen ("subject"))
+ == 0);
+ fail_unless (strncmp (res_msg, "message", strlen ("message"))
+ == 0);
+ fail_unless (strncmp (res_pop_location, "poploc", strlen ("poploc"))
+ == 0);
+ fail_unless (strncmp (res_pop_usr, "popusr", strlen ("popusr"))
+ == 0);
+ fail_unless (strncmp (res_pop_passwd, "poppasswd", strlen ("poppasswd"))
+ == 0);
+ fail_unless (res_nbr_attach == 5);
+ fail_unless (res_use_ssl == TRUE);
+ g_free (res_location);
+ g_free (res_file_name);
+ g_free (res_usr);
+ g_free (res_passwd);
+ g_free (res_mail_rcpt);
+ g_free (res_mail_from);
+ g_free (res_subj);
+ g_free (res_msg);
+ g_free (res_pop_location);
+ g_free (res_pop_usr);
+ g_free (res_pop_passwd);
+
+ /* change properties */
+ g_object_set (G_OBJECT (sink), "location", "newlocation", NULL);
+ g_object_set (G_OBJECT (sink), "file-name", "newfilename", NULL);
+ g_object_set (G_OBJECT (sink), "user", "newusr", NULL);
+ g_object_set (G_OBJECT (sink), "passwd", "newpasswd", NULL);
+ g_object_set (G_OBJECT (sink), "mail-rcpt", "rcpt1,rcpt2,rcpt3", NULL);
+ g_object_set (G_OBJECT (sink), "mail-from", "newsender", NULL);
+ g_object_set (G_OBJECT (sink), "subject", "newsubject", NULL);
+ g_object_set (G_OBJECT (sink), "message-body", "newmessage", NULL);
+ g_object_set (G_OBJECT (sink), "nbr-attachments", 1, NULL);
+ g_object_set (G_OBJECT (sink), "use-ssl", FALSE, NULL);
+ g_object_set (G_OBJECT (sink), "pop-location", "newpoploc", NULL);
+ g_object_set (G_OBJECT (sink), "pop-user", "newpopusr", NULL);
+ g_object_set (G_OBJECT (sink), "pop-passwd", "newpoppasswd", NULL);
+
+ g_object_get (sink,
+ "location", &res_location,
+ "file-name", &res_file_name,
+ "user", &res_usr,
+ "passwd", &res_passwd,
+ "pop_user", &res_pop_usr,
+ "pop-passwd", &res_pop_passwd,
+ "pop-location", &res_pop_location,
+ "nbr-attachments", &res_nbr_attach,
+ "subject", &res_subj,
+ "use-ssl", &res_use_ssl,
+ "message-body", &res_msg,
+ "mail-from", &res_mail_from,
+ "mail-rcpt", &res_mail_rcpt,
+ NULL);
+
+ fail_unless (strncmp (res_location, "newlocation", strlen ("newlocation"))
+ == 0);
+ fail_unless (strncmp (res_file_name, "newfilename", strlen ("newfilename"))
+ == 0);
+ fail_unless (strncmp (res_usr, "newusr", strlen ("newusr"))
+ == 0);
+ fail_unless (strncmp (res_passwd, "newpasswd", strlen ("newpasswd"))
+ == 0);
+ fail_unless (strncmp (res_mail_rcpt, "rcpt1,rcpt2,rcpt3",
+ strlen ("rcpt1,rcpt2,rcpt3")) == 0);
+ fail_unless (strncmp (res_mail_from, "newsender", strlen ("newsender"))
+ == 0);
+ fail_unless (strncmp (res_subj, "newsubject", strlen ("newsubject"))
+ == 0);
+ fail_unless (strncmp (res_msg, "newmessage", strlen ("newmessage"))
+ == 0);
+ fail_unless (strncmp (res_pop_location, "newpoploc", strlen ("newpoploc"))
+ == 0);
+ fail_unless (strncmp (res_pop_usr, "newpopusr", strlen ("newpopusr"))
+ == 0);
+ fail_unless (strncmp (res_pop_passwd, "newpoppasswd", strlen ("newpoppasswd"))
+ == 0);
+
+ fail_unless (res_nbr_attach == 1);
+ fail_unless (res_use_ssl == FALSE);
+ g_free (res_location);
+ g_free (res_file_name);
+ g_free (res_usr);
+ g_free (res_passwd);
+ g_free (res_mail_from);
+ g_free (res_mail_rcpt);
+ g_free (res_subj);
+ g_free (res_msg);
+ g_free (res_pop_location);
+ g_free (res_pop_usr);
+ g_free (res_pop_passwd);
+
+ cleanup_curlsmtpsink (sink);
+}
+GST_END_TEST;
+
+static Suite *
+curlsink_suite (void)
+{
+ Suite *s = suite_create ("curlsmtpsink");
+ TCase *tc_chain = tcase_create ("general");
+
+ suite_add_tcase (s, tc_chain);
+ tcase_set_timeout (tc_chain, 20);
+ tcase_add_test (tc_chain, test_properties);
+
+ return s;
+}
+
+GST_CHECK_MAIN (curlsink);
diff --git a/tests/check/elements/mpegtsmux.c b/tests/check/elements/mpegtsmux.c
index a95cee1a..c7de27d1 100644
--- a/tests/check/elements/mpegtsmux.c
+++ b/tests/check/elements/mpegtsmux.c
@@ -42,8 +42,6 @@ static GstStaticPadTemplate audio_src_template = GST_STATIC_PAD_TEMPLATE ("src",
typedef struct _TestData
{
GstEvent *sink_event;
- GstEvent *src_event1;
- GstEvent *src_event2;
gint src_events;
} TestData;
@@ -60,14 +58,10 @@ src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
TestData *data = (TestData *) gst_pad_get_element_private (pad);
- if (event->type == GST_EVENT_CUSTOM_UPSTREAM) {
+ if (event->type == GST_EVENT_CUSTOM_UPSTREAM)
data->src_events += 1;
- if (data->src_event1 != NULL)
- data->src_event2 = event;
- else
- data->src_event1 = event;
- }
+ gst_event_unref (event);
return TRUE;
}
@@ -79,6 +73,7 @@ sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
if (event->type == GST_EVENT_CUSTOM_DOWNSTREAM)
data->sink_event = event;
+ gst_event_unref (event);
return TRUE;
}
diff --git a/tests/examples/Makefile.am b/tests/examples/Makefile.am
index 5183dfeb..eef73e6c 100644
--- a/tests/examples/Makefile.am
+++ b/tests/examples/Makefile.am
@@ -1,5 +1,5 @@
if HAVE_GTK
-GTK_EXAMPLES=camerabin mxf scaletempo camerabin2
+GTK_EXAMPLES=mxf scaletempo camerabin2
else
GTK_EXAMPLES=
endif
@@ -13,6 +13,6 @@ endif
OPENCV_EXAMPLES=opencv
SUBDIRS= $(DIRECTFB_DIR) $(GTK_EXAMPLES) $(OPENCV_EXAMPLES)
-DIST_SUBDIRS= camerabin camerabin2 directfb mxf scaletempo opencv
+DIST_SUBDIRS= camerabin2 directfb mxf scaletempo opencv
include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in
index 91df5c90..c8aeba6b 100644
--- a/tests/examples/Makefile.in
+++ b/tests/examples/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -438,6 +438,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -454,6 +456,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -486,10 +489,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -562,12 +564,12 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
@HAVE_GTK_FALSE@GTK_EXAMPLES =
-@HAVE_GTK_TRUE@GTK_EXAMPLES = camerabin mxf scaletempo camerabin2
+@HAVE_GTK_TRUE@GTK_EXAMPLES = mxf scaletempo camerabin2
@USE_DIRECTFB_FALSE@DIRECTFB_DIR =
@USE_DIRECTFB_TRUE@DIRECTFB_DIR = directfb
OPENCV_EXAMPLES = opencv
SUBDIRS = $(DIRECTFB_DIR) $(GTK_EXAMPLES) $(OPENCV_EXAMPLES)
-DIST_SUBDIRS = camerabin camerabin2 directfb mxf scaletempo opencv
+DIST_SUBDIRS = camerabin2 directfb mxf scaletempo opencv
all: all-recursive
.SUFFIXES:
diff --git a/tests/examples/camerabin/Makefile.am b/tests/examples/camerabin/Makefile.am
deleted file mode 100644
index 28f0441c..00000000
--- a/tests/examples/camerabin/Makefile.am
+++ /dev/null
@@ -1,56 +0,0 @@
-GST_CAMERABIN_UI_FILES = gst-camera.ui
-
-if HAVE_GTK
-
-GST_CAMERABIN_GTK_EXAMPLES = gst-camera
-
-gst_camera_SOURCES = gst-camera.h gst-camera.c
-gst_camera_CFLAGS = \
- $(GST_PLUGINS_BAD_CFLAGS) \
- $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
- $(GTK_CFLAGS) \
- $(GMODULE_EXPORT_CFLAGS) \
- -DGST_USE_UNSTABLE_API
-gst_camera_LDADD = \
- $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-@GST_API_VERSION@ \
- -lgstvideo-@GST_API_VERSION@ \
- $(GST_LIBS) \
- $(GTK_LIBS) \
- $(GMODULE_EXPORT_LIBS)
-
-noinst_DATA = $(GST_CAMERABIN_UI_FILES)
-
-INCLUDES = -DCAMERA_APPS_UIDIR=\""$(srcdir)"\"
-
-else
-GST_CAMERABIN_GTK_EXAMPLES =
-endif
-
-gst_camera_perf_SOURCES = gst-camera-perf.c
-gst_camera_perf_CFLAGS = $(GST_CFLAGS)
-gst_camera_perf_LDADD = $(GST_LIBS)
-
-if HAVE_X11
-
-GST_CAMERABIN_X11_EXAMPLES = gst-camerabin-test
-
-gst_camerabin_test_SOURCES = gst-camerabin-test.c
-gst_camerabin_test_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
-gst_camerabin_test_LDADD = \
- $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
- -lgstinterfaces-@GST_API_VERSION@ \
- -lgstvideo-@GST_API_VERSION@ \
- $(GST_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) \
- $(X11_LIBS)
-
-else
-GST_CAMERABIN_X11_EXAMPLES =
-endif
-
-noinst_PROGRAMS = gst-camera-perf $(GST_CAMERABIN_X11_EXAMPLES) $(GST_CAMERABIN_GTK_EXAMPLES)
-
-EXTRA_DIST = $(GST_CAMERABIN_UI_FILES)
-
diff --git a/tests/examples/camerabin/gst-camera-perf.c b/tests/examples/camerabin/gst-camera-perf.c
deleted file mode 100644
index e865fdf8..00000000
--- a/tests/examples/camerabin/gst-camera-perf.c
+++ /dev/null
@@ -1,1030 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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.
- */
-/*
- * This application runs various tests and messures how long it takes.
- * FIXME: It needs to figure sane defaults for different hardware or support
- * we could use GOption for specifying the parameters
- * The config should have:
- * - target times
- * - filter-caps
- * - preview-caps
- * - user-res-fps
- * - element-names: videoenc, audioenc, videomux, imageenc, videosrc, audiosrc
- * Most of it is interpreted in setup_pipeline()
- *
- * gcc `pkg-config --cflags --libs gstreamer-0.10` gst-camera-perf.c -ogst-camera-perf
- *
- * plain linux:
- * ./gst-camera-perf --src-colorspace=YUY2 --image-width=640 --image-height=480 --video-width=640 --video-height=480 --view-framerate-num=15 --view-framerate-den=1
- *
- * maemo:
- * ./gst-camera-perf --src-colorspace=UYVY --image-width=640 --image-height=480 --video-width=640 --video-height=480 --view-framerate-num=1491 --view-framerate-den=100 --video-src=v4l2camsrc --audio-enc=nokiaaacenc --video-enc=dspmpeg4enc --video-mux=hantromp4mux --image-enc=dspjpegenc --target-times=1000,1500,1500,2000,500,2000,3500,1000,1000
- * ./gst-camera-perf --src-colorspace=UYVY --image-width=2576 --image-height=1936 --video-width=640 --video-height=480 --view-framerate-num=2999 --view-framerate-den=100 --video-src=v4l2camsrc --audio-enc=nokiaaacenc --video-enc=dspmpeg4enc --video-mux=hantromp4mux
- * ./gst-camera-perf --src-colorspace=UYVY --image-width=2576 --image-height=1936 --video-width=640 --video-height=480 --view-framerate-num=126 --view-framerate-den=5 --video-src=v4l2camsrc --audio-enc=nokiaaacenc --video-enc=dspmpeg4enc --video-mux=hantromp4mux --image-enc=dspjpegenc
- */
-
-/*
- * Includes
- */
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* save the snapshot images
- * gcc `pkg-config --cflags --libs gstreamer-0.10 gdk-pixbuf-2.0` gst-camera-perf.c -ogst-camera-perf
- *
-#define SAVE_SNAPSHOT 1
- **/
-#include <gst/gst.h>
-#ifdef SAVE_SNAPSHOT
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/time.h>
-#include <time.h>
-/*
- * debug logging
- */
-GST_DEBUG_CATEGORY_STATIC (camera_perf);
-#define GST_CAT_DEFAULT camera_perf
-
-
-/*
- * enums, typedefs and defines
- */
-
-#define GET_TIME(t) \
-do { \
- t = gst_util_get_timestamp (); \
- GST_DEBUG("%2d ----------------------------------------", test_ix); \
-} while(0)
-
-#define DIFF_TIME(e,s,d) d=GST_CLOCK_DIFF(s,e)
-
-#define CONT_SHOTS 10
-#define TEST_CASES 9
-
-typedef struct _ResultType
-{
- GstClockTime avg;
- GstClockTime min;
- GstClockTime max;
- guint32 times;
-} ResultType;
-
-/*
- * Global vars
- */
-static GstElement *camera_bin = NULL;
-static GMainLoop *loop = NULL;
-
-/* commandline options */
-static gchar *audiosrc_name = NULL;
-static gchar *videosrc_name = NULL;
-static gchar *audioenc_name = NULL;
-static gchar *videoenc_name = NULL;
-static gchar *imageenc_name = NULL;
-static gchar *videomux_name = NULL;
-static gchar *src_csp = NULL;
-static gint image_width = 0;
-static gint image_height = 0;
-static gint video_width = 0;
-static gint video_height = 0;
-static gint view_framerate_num = 0;
-static gint view_framerate_den = 0;
-
-/* test configuration for common callbacks */
-static GString *filename = NULL;
-static guint32 num_pics = 0;
-static guint32 num_pics_cont = 0;
-//static guint32 num_vids = 0;
-static guint test_ix = 0;
-static gboolean signal_vf_sink = FALSE;
-static gboolean signal_vid_sink = FALSE;
-static gboolean signal_img_enc = FALSE;
-static gboolean signal_shot = FALSE;
-static gboolean signal_cont = FALSE;
-
-static gboolean need_pad_probe = FALSE;
-static gboolean need_ienc_pad_probe = FALSE;
-static gboolean need_vmux_pad_probe = FALSE;
-
-static gboolean have_img_captured = FALSE;
-static gboolean have_img_done = FALSE;
-
-/* time samples and test results */
-static GstClockTime t_initial = G_GUINT64_CONSTANT (0);
-static GstClockTime t_final[CONT_SHOTS] = { G_GUINT64_CONSTANT (0), };
-
-static GstClockTime test_06_taget, test_09_taget;
-static GstClockTimeDiff diff;
-static ResultType result;
-
-/* these can be overridden with commandline args --target-times */
-static GstClockTime target[TEST_CASES] = {
- 1000 * GST_MSECOND,
- 1500 * GST_MSECOND,
- 1500 * GST_MSECOND,
- 2000 * GST_MSECOND, /* this should be shorter, as we can take next picture before preview is ready */
- 500 * GST_MSECOND,
- 2000 * GST_MSECOND,
- 3500 * GST_MSECOND,
- 1000 * GST_MSECOND,
- 1000 * GST_MSECOND
-};
-
-static const gchar *test_names[TEST_CASES] = {
- "Camera OFF to VF on",
- "(3A latency)", /* time to get AF? */
- "Shot to snapshot",
- "Shot to shot",
- "Serial shooting",
- "Shutter lag",
- "Image saved",
- "Mode change",
- "Video recording"
-};
-
-/*
- * Prototypes
- */
-
-static void print_result (void);
-static gboolean run_test (gpointer user_data);
-static gboolean setup_add_pad_probe (GstElement * elem, const gchar * pad_name,
- GstPadProbeCallback handler, gpointer data);
-
-
-/*
- * Callbacks
- */
-
-static GstPadProbeReturn
-pad_has_buffer (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
-{
- gboolean *signal_sink = (gboolean *) user_data;
- gboolean print_and_restart = FALSE;
-
- if (*signal_sink) {
- *signal_sink = FALSE;
- GET_TIME (t_final[0]);
- GST_DEBUG_OBJECT (pad, "%2d pad has buffer", test_ix);
- switch (test_ix) {
- case 5: // shutter lag
- DIFF_TIME (t_final[num_pics_cont], t_initial, diff);
- result.avg = result.min = result.max = diff;
- print_and_restart = TRUE;
- break;
- case 8: // video recording start
- DIFF_TIME (t_final[num_pics_cont], t_initial, diff);
- result.avg = result.min = result.max = diff;
- //g_signal_emit_by_name (camera_bin, "capture-stop", 0);
- print_and_restart = TRUE;
- break;
- default:
- GST_WARNING_OBJECT (pad, "%2d pad has buffer, not handled", test_ix);
- break;
- }
- }
- if (print_and_restart) {
- print_result ();
- g_idle_add ((GSourceFunc) run_test, NULL);
- }
- return GST_PAD_PROBE_OK;
-}
-
-static void
-element_added (GstBin * bin, GstElement * element, gpointer user_data)
-{
- GstElement *elem;
-
- if (GST_IS_BIN (element)) {
- g_signal_connect (element, "element-added", (GCallback) element_added,
- NULL);
- }
-
- if (need_vmux_pad_probe) {
- g_object_get (camera_bin, "video-muxer", &elem, NULL);
- if (elem) {
- need_vmux_pad_probe = FALSE;
- GST_INFO_OBJECT (elem, "got default video muxer");
- if (setup_add_pad_probe (elem, "src", pad_has_buffer, &signal_vid_sink)) {
- /* enable test */
- target[8] = test_09_taget;
- }
- }
- }
- if (need_ienc_pad_probe) {
- g_object_get (camera_bin, "image-encoder", &elem, NULL);
- if (elem) {
- need_ienc_pad_probe = FALSE;
- GST_INFO_OBJECT (elem, "got default image encoder");
- if (setup_add_pad_probe (elem, "src", pad_has_buffer, &signal_img_enc)) {
- /* enable test */
- target[5] = test_06_taget;
- }
- }
- }
-}
-
-static gboolean
-img_capture_done (GstElement * camera, GString * fname, gpointer user_data)
-{
- gboolean ret = FALSE;
- gboolean print_and_restart = FALSE;
-
- GST_DEBUG ("shot %d, cont %d, num %d", signal_shot, signal_cont,
- num_pics_cont);
-
- if (signal_shot) {
- GET_TIME (t_final[num_pics_cont]);
- signal_shot = FALSE;
- switch (test_ix) {
- case 6:
- DIFF_TIME (t_final[num_pics_cont], t_initial, diff);
- result.avg = result.min = result.max = diff;
- print_and_restart = TRUE;
- break;
- }
- GST_DEBUG ("%2d shot done", test_ix);
- }
-
- if (signal_cont) {
- gint i;
-
- if (num_pics_cont < CONT_SHOTS) {
- gchar tmp[6];
-
- GET_TIME (t_final[num_pics_cont]);
- num_pics_cont++;
- for (i = filename->len - 1; i > 0; --i) {
- if (filename->str[i] == '_')
- break;
- }
- snprintf (tmp, 6, "_%04d", num_pics_cont);
- memcpy (filename->str + i, tmp, 5);
- GST_DEBUG ("%2d cont new filename '%s'", test_ix, filename->str);
- g_object_set (camera_bin, "filename", filename->str, NULL);
- // FIXME: is burst capture broken? new filename and return TRUE should be enough
- // as a workaround we will kick next image from here
- // but this needs sync so that we have received "image-captured" message already
- if (have_img_captured) {
- have_img_captured = FALSE;
- g_signal_emit_by_name (camera_bin, "capture-start", NULL);
- } else {
- have_img_done = TRUE;
- }
- ret = TRUE;
- } else {
- GstClockTime max = 0;
- GstClockTime min = -1;
- GstClockTime total = 0;
-
- num_pics_cont = 0;
- signal_cont = FALSE;
-
- DIFF_TIME (t_final[0], t_initial, diff);
- max < diff ? max = diff : max;
- min > diff ? min = diff : min;
- total += diff;
-
- DIFF_TIME (t_final[1], t_final[0], diff);
- max < diff ? max = diff : max;
- min > diff ? min = diff : min;
- total += diff;
-
- for (i = 2; i < CONT_SHOTS; ++i) {
- DIFF_TIME (t_final[i], t_final[i - 1], diff);
-
- max < diff ? max = diff : max;
- min > diff ? min = diff : min;
- total += diff;
- }
-
- result.avg = total / CONT_SHOTS;
- result.min = min;
- result.max = max;
- print_and_restart = TRUE;
- GST_DEBUG ("%2d cont done", test_ix);
- }
- }
-
- switch (test_ix) {
- case 2:
- case 3:
- print_and_restart = TRUE;
- break;
- }
-
- if (print_and_restart) {
- print_result ();
- g_idle_add ((GSourceFunc) run_test, NULL);
- return FALSE;
- }
- return ret;
-}
-
-static gboolean
-bus_callback (GstBus * bus, GstMessage * message, gpointer data)
-{
- const GstStructure *st;
-
- switch (GST_MESSAGE_TYPE (message)) {
- case GST_MESSAGE_ERROR:{
- GError *err;
- gchar *debug;
-
- gst_message_parse_error (message, &err, &debug);
- g_print ("Error: %s\n", err->message);
- g_error_free (err);
- g_free (debug);
-
- /* Write debug graph to file */
- GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (camera_bin),
- GST_DEBUG_GRAPH_SHOW_ALL, "camerabin.error");
-
- g_main_loop_quit (loop);
- break;
- }
- case GST_MESSAGE_STATE_CHANGED:
- if (GST_IS_BIN (GST_MESSAGE_SRC (message))) {
- GstState oldstate, newstate;
-
- gst_message_parse_state_changed (message, &oldstate, &newstate, NULL);
- GST_DEBUG_OBJECT (GST_MESSAGE_SRC (message), "state-changed: %s -> %s",
- gst_element_state_get_name (oldstate),
- gst_element_state_get_name (newstate));
- if (GST_MESSAGE_SRC (message) == GST_OBJECT (camera_bin)) {
- if (GST_STATE_TRANSITION (oldstate,
- newstate) == GST_STATE_CHANGE_PAUSED_TO_PLAYING) {
- switch (test_ix) {
- case 0: // camera on
- GET_TIME (t_final[0]);
- DIFF_TIME (t_final[0], t_initial, diff);
-
- result.avg = result.min = result.max = diff;
- print_result ();
- g_idle_add ((GSourceFunc) run_test, NULL);
- break;
- }
- }
- }
- }
- break;
- case GST_MESSAGE_EOS:
- /* end-of-stream */
- GST_INFO ("got eos() - should not happen");
- g_main_loop_quit (loop);
- break;
- default:
- st = gst_message_get_structure (message);
- if (st) {
- if (gst_structure_has_name (st, "image-captured")) {
- GST_DEBUG ("%2d image-captured", test_ix);
- switch (test_ix) {
- case 3:
- GET_TIME (t_final[num_pics_cont]);
- DIFF_TIME (t_final[num_pics_cont], t_initial, diff);
- result.avg = result.min = result.max = diff;
- break;
- case 4:
- // we need to have this received before we can take next one
- if (have_img_done) {
- have_img_done = FALSE;
- g_signal_emit_by_name (camera_bin, "capture-start", NULL);
- } else {
- have_img_captured = TRUE;
- }
- break;
- }
- } else if (gst_structure_has_name (st, "preview-image")) {
- GST_DEBUG ("%2d preview-image", test_ix);
- switch (test_ix) {
- case 2:
- GET_TIME (t_final[num_pics_cont]);
- DIFF_TIME (t_final[num_pics_cont], t_initial, diff);
- result.avg = result.min = result.max = diff;
- /* turn off preview image generation again */
- g_object_set (camera_bin, "preview-caps", NULL, NULL);
- break;
- }
-#ifdef SAVE_SNAPSHOT
- {
- const GValue *value = gst_structure_get_value (st, "buffer");
- GstBuffer *buf = gst_value_get_buffer (value);
- GstCaps *caps = GST_BUFFER_CAPS (buf);
- GstStructure *buf_st = gst_caps_get_structure (caps, 0);
- gint width, height, rowstride;
- GdkPixbuf *pixbuf;
- guchar *data;
-
- GST_INFO ("preview : buf=%p, size=%d, format=%" GST_PTR_FORMAT,
- buf, GST_BUFFER_SIZE (buf), caps);
-
- data = GST_BUFFER_DATA (buff);
- gst_structure_get_int (buf_st, "width", &width);
- gst_structure_get_int (buf_st, "height", &height);
- rowstride = GST_ROUND_UP_4 (width * 3);
-
- pixbuf = gdk_pixbuf_new_from_data (data, GDK_COLORSPACE_RGB, FALSE,
- 8, width, height, rowstride, NULL, NULL);
- gdk_pixbuf_save (pixbuf, "/tmp/gst-camerabin-preview.png", "png",
- NULL, NULL);
- gdk_pixbuf_unref (pixbuf);
- }
-#endif
- }
- }
- /* unhandled message */
- break;
- }
- return TRUE;
-}
-
-
-/*
- * Helpers
- */
-
-static void
-cleanup_pipeline (void)
-{
- if (camera_bin) {
- GST_INFO_OBJECT (camera_bin, "stopping and destroying");
- gst_element_set_state (camera_bin, GST_STATE_NULL);
- gst_object_unref (camera_bin);
- camera_bin = NULL;
- }
-}
-
-static gboolean
-setup_add_pad_probe (GstElement * elem, const gchar * pad_name,
- GstPadProbeCallback handler, gpointer data)
-{
- GstPad *pad = NULL;
-
- if (!(pad = gst_element_get_static_pad (elem, pad_name))) {
- GST_WARNING ("sink has no pad named '%s'", pad_name);
- return FALSE;
- }
-
- gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BLOCK | GST_PAD_PROBE_TYPE_BUFFER,
- handler, data, NULL);
- gst_object_unref (pad);
-
- return TRUE;
-}
-
-static gboolean
-setup_pipeline_element (const gchar * property_name, const gchar * element_name,
- GstElement ** res_elem)
-{
- gboolean res = TRUE;
- GstElement *elem = NULL;
-
- if (element_name) {
- elem = gst_element_factory_make (element_name, NULL);
- if (elem) {
- g_object_set (camera_bin, property_name, elem, NULL);
- } else {
- GST_WARNING ("can't create element '%s' for property '%s'", element_name,
- property_name);
- res = FALSE;
- }
- } else {
- GST_DEBUG ("no element for property '%s' given", property_name);
- }
- if (res_elem)
- *res_elem = elem;
- return res;
-}
-
-static gboolean
-setup_pipeline (void)
-{
- GstBus *bus;
- gboolean res = TRUE;
- GstElement *vmux, *ienc, *sink;
-
- g_string_printf (filename, "test_%04u.jpg", num_pics);
-
- camera_bin = gst_element_factory_make ("camerabin", NULL);
- if (NULL == camera_bin) {
- g_warning ("can't create camerabin element\n");
- goto error;
- }
-
- g_signal_connect (camera_bin, "image-done", (GCallback) img_capture_done,
- NULL);
-
- bus = gst_pipeline_get_bus (GST_PIPELINE (camera_bin));
- gst_bus_add_watch (bus, bus_callback, NULL);
- gst_object_unref (bus);
-
- GST_INFO_OBJECT (camera_bin, "camerabin created");
-
- /* configure used elements */
- res &= setup_pipeline_element ("viewfinder-sink", "fakesink", &sink);
- res &= setup_pipeline_element ("audio-source", audiosrc_name, NULL);
- res &= setup_pipeline_element ("video-source", videosrc_name, NULL);
- res &= setup_pipeline_element ("audio-encoder", audioenc_name, NULL);
- res &= setup_pipeline_element ("video-encoder", videoenc_name, NULL);
- res &= setup_pipeline_element ("image-encoder", imageenc_name, &ienc);
- res &= setup_pipeline_element ("video-muxer", videomux_name, &vmux);
- if (!res) {
- goto error;
- }
-
- GST_INFO_OBJECT (camera_bin, "elements created");
-
- if (GST_STATE_CHANGE_FAILURE ==
- gst_element_set_state (camera_bin, GST_STATE_READY)) {
- g_warning ("can't set camerabin to ready\n");
- goto error;
- }
- GST_INFO_OBJECT (camera_bin, "camera ready");
-
- /* set properties */
- g_object_set (camera_bin, "filename", filename->str, NULL);
-
- if (src_csp) {
- GstCaps *filter_caps;
-
- /* FIXME: why do we need to set this? */
- filter_caps = gst_caps_new_simple ("video/x-raw",
- "format", G_TYPE_STRING, src_csp, NULL);
- if (filter_caps) {
- g_object_set (camera_bin, "filter-caps", filter_caps, NULL);
- gst_caps_unref (filter_caps);
- } else {
- g_warning ("can't make filter-caps with format=%s\n", src_csp);
- goto error;
- }
- }
-
- g_object_set (sink, "sync", TRUE, NULL);
-
- GST_INFO_OBJECT (camera_bin, "elements configured");
-
- /* connect signal handlers */
- g_assert (sink);
- if (!setup_add_pad_probe (sink, "sink", pad_has_buffer, &signal_vf_sink)) {
- goto error;
- }
- if (!vmux) {
- g_object_get (camera_bin, "video-muxer", &vmux, NULL);
- if (!vmux) {
- need_pad_probe = need_vmux_pad_probe = TRUE;
- /* only run the test if we later get the element */
- test_09_taget = target[8];
- target[8] = G_GUINT64_CONSTANT (0);
- }
- }
- if (vmux) {
- if (!setup_add_pad_probe (vmux, "src", pad_has_buffer, &signal_vid_sink)) {
- goto error;
- }
- }
- if (!ienc) {
- g_object_get (camera_bin, "image-encoder", &ienc, NULL);
- if (!ienc) {
- need_pad_probe = need_ienc_pad_probe = TRUE;
- /* only run the test if we later get the element */
- test_06_taget = target[5];
- target[5] = G_GUINT64_CONSTANT (0);
- }
- }
- if (ienc) {
- if (!setup_add_pad_probe (ienc, "src", pad_has_buffer, &signal_img_enc)) {
- goto error;
- }
- }
- if (need_pad_probe) {
- g_signal_connect (camera_bin, "element-added", (GCallback) element_added,
- NULL);
- }
- GST_INFO_OBJECT (camera_bin, "probe signals connected");
-
- /* configure a resolution and framerate for video and viewfinder */
- if (image_width && image_height) {
- g_signal_emit_by_name (camera_bin, "set-image-resolution", image_width,
- image_height, NULL);
- }
- /* configure a resolution and framerate for video and viewfinder */
- if (video_width && video_height && view_framerate_num && view_framerate_den) {
- g_signal_emit_by_name (camera_bin, "set-video-resolution-fps", video_width,
- video_height, view_framerate_num, view_framerate_den, NULL);
- }
-
- if (GST_STATE_CHANGE_FAILURE ==
- gst_element_set_state (camera_bin, GST_STATE_PLAYING)) {
- g_warning ("can't set camerabin to playing\n");
- goto error;
- }
- GST_INFO_OBJECT (camera_bin, "camera started");
- return TRUE;
-error:
- cleanup_pipeline ();
- return FALSE;
-}
-
-/*
- * Tests
- */
-
-/* 01) Camera OFF to VF On
- *
- * This only tests the time it takes to create the pipeline and CameraBin
- * element and have the first video frame available in ViewFinder.
- * It is not testing the real init time. To do it, the timer must start before
- * the app.
- */
-static gboolean
-test_01 (void)
-{
- gboolean res;
-
- GET_TIME (t_initial);
- if (setup_pipeline ()) {
- /* the actual results are fetched in bus_callback::state-changed */
- res = FALSE;
- } else {
- GET_TIME (t_final[0]);
- DIFF_TIME (t_final[0], t_initial, diff);
-
- result.avg = result.min = result.max = diff;
- res = TRUE;
- }
- result.times = 1;
- return res;
-}
-
-
-/* 03) Shot to snapshot
- *
- * It tests the time between pressing the Shot button and having the photo shown
- * in ViewFinder
- */
-static gboolean
-test_03 (void)
-{
- GstCaps *snap_caps;
-
- /* FIXME: add options */
- snap_caps = gst_caps_from_string ("video/x-raw-rgb,width=320,height=240");
- g_object_set (camera_bin, "preview-caps", snap_caps, NULL);
- gst_caps_unref (snap_caps);
-
- /* switch to image mode */
- g_object_set (camera_bin, "mode", 0, NULL);
- g_object_set (camera_bin, "filename", filename->str, NULL);
- GET_TIME (t_initial);
- g_signal_emit_by_name (camera_bin, "capture-start", 0);
-
- /* the actual results are fetched in bus_callback::preview-image */
- result.times = 1;
- return FALSE;
-}
-
-
-/* 04) Shot to shot
- * It tests the time for being able to take a second shot after the first one.
- */
-static gboolean
-test_04 (void)
-{
- /* switch to image mode */
- g_object_set (camera_bin, "mode", 0, NULL);
- GET_TIME (t_initial);
- g_signal_emit_by_name (camera_bin, "capture-start", 0);
-
- /* the actual results are fetched in bus_callback::image-captured */
- result.times = 1;
- return FALSE;
-}
-
-
-/* 05) Serial shooting
- *
- * It tests the time between shots in continuous mode.
- */
-static gboolean
-test_05 (void)
-{
- signal_cont = TRUE;
- have_img_captured = have_img_done = FALSE;
- /* switch to image mode */
- g_object_set (camera_bin, "mode", 0, NULL);
- GET_TIME (t_initial);
- g_signal_emit_by_name (camera_bin, "capture-start", 0);
-
- /* the actual results are fetched in img_capture_done */
- result.times = CONT_SHOTS;
- return FALSE;
-}
-
-
-/* 06) Shutter lag
- *
- * It tests the time from user-start signal to buffer reaching img-enc
- */
-static gboolean
-test_06 (void)
-{
- signal_img_enc = TRUE;
-
- /* switch to image mode */
- g_object_set (camera_bin, "mode", 0, NULL);
- g_object_set (camera_bin, "filename", filename->str, NULL);
- GET_TIME (t_initial);
- g_signal_emit_by_name (camera_bin, "capture-start", 0);
-
- /* the actual results are fetched in pad_has_buffer */
- result.times = 1;
- return FALSE;
-}
-
-
-/* 07) Image saved
- *
- * It tests the time between pressing the Shot and the final image is saved to
- * file system.
- */
-static gboolean
-test_07 (void)
-{
- signal_shot = TRUE;
-
- /* switch to image mode */
- g_object_set (camera_bin, "mode", 0, NULL);
- g_object_set (camera_bin, "filename", filename->str, NULL);
- GET_TIME (t_initial);
- g_signal_emit_by_name (camera_bin, "capture-start", 0);
- /* the actual results are fetched in img_capture_done */
- result.times = 1;
- return FALSE;
-}
-
-
-/* 08) Mode change
- *
- * It tests the time it takes to change between still image and video recording
- * mode (In this test we change the mode few times).
- */
-static gboolean
-test_08 (void)
-{
- GstClockTime total = 0;
- GstClockTime max = 0;
- GstClockTime min = -1;
- const gint count = 6;
- gint i;
-
- /* switch to image mode */
- g_object_set (camera_bin, "mode", 0, NULL);
- g_object_set (camera_bin, "filename", filename->str, NULL);
-
- for (i = 0; i < count; ++i) {
- GET_TIME (t_final[i]);
- g_object_set (camera_bin, "mode", (i + 1) & 1, NULL);
- GET_TIME (t_final[i + 1]);
- }
-
- for (i = 0; i < count; ++i) {
- DIFF_TIME (t_final[i + 1], t_final[i], diff);
- total += diff;
- if (diff > max)
- max = diff;
- if (diff < min)
- min = diff;
- }
-
- result.avg = total / count;
- result.min = min;
- result.max = max;
- result.times = count;
-
- /* just make sure we are back to still image mode again */
- g_object_set (camera_bin, "mode", 0, NULL);
- return TRUE;
-}
-
-
-/* 09) Video recording
- *
- * It tests the time it takes to start video recording.
- * FIXME: shouldn't we wait for the buffer arriving on the venc instead of sink?
- */
-static gboolean
-test_09 (void)
-{
- signal_vid_sink = TRUE;
-
- /* switch to video mode */
- g_object_set (camera_bin, "mode", 1, NULL);
- g_object_set (camera_bin, "filename", filename->str, NULL);
- GET_TIME (t_initial);
- g_signal_emit_by_name (camera_bin, "capture-start", 0);
-
- /* the actual results are fetched in pad_has_buffer */
- result.times = 1;
- return FALSE;
-}
-
-
-typedef gboolean (*test_case) (void);
-static test_case test_cases[TEST_CASES] = {
- test_01,
- NULL,
- test_03,
- test_04,
- test_05,
- test_06,
- test_07,
- test_08,
- test_09
-};
-
-static void
-print_result (void)
-{
- if (test_ix >= TEST_CASES) {
- GST_WARNING ("text case index overrun");
- return;
- }
- printf ("| %6.02f%% ", 100.0f * (float) result.avg / (float) target[test_ix]);
- printf ("|%5u ms ", (guint) GST_TIME_AS_MSECONDS (target[test_ix]));
- printf ("|%5u ms ", (guint) GST_TIME_AS_MSECONDS (result.avg));
- printf ("|%5u ms ", (guint) GST_TIME_AS_MSECONDS (result.min));
- printf ("|%5u ms ", (guint) GST_TIME_AS_MSECONDS (result.max));
- printf ("| %3d ", result.times);
- printf ("| %-19s |\n", test_names[test_ix]);
- test_ix++;
-}
-
-static gboolean
-run_test (gpointer user_data)
-{
- gboolean ret = TRUE;
- guint old_test_ix = test_ix;
-
- if (test_ix >= TEST_CASES) {
- GST_INFO ("done");
- g_main_loop_quit (loop);
- return FALSE;
- }
-
- printf ("| %02d ", test_ix + 1);
- fflush (stdout);
- if (test_cases[test_ix]) {
- if (target[test_ix]) {
- memset (&result, 0, sizeof (ResultType));
- ret = test_cases[test_ix] ();
-
- //while (g_main_context_pending (NULL)) g_main_context_iteration (NULL,FALSE);
- if (ret) {
- print_result ();
- }
- } else {
- printf ("| test skipped ");
- printf ("| %-19s |\n", test_names[test_ix]);
- test_ix++;
- }
- } else {
- printf ("| test not implemented ");
- printf ("| %-19s |\n", test_names[test_ix]);
- test_ix++;
- }
- fflush (stdout);
-
- if (old_test_ix == 0 && ret == TRUE && !camera_bin) {
- GST_INFO ("done (camerabin creation failed)");
- g_main_loop_quit (loop);
- return FALSE;
- }
- if (old_test_ix > 0 && !camera_bin) {
- GST_INFO ("done (camerabin was destroyed)");
- g_main_loop_quit (loop);
- return FALSE;
- }
- if (test_ix >= TEST_CASES) {
- GST_INFO ("done");
- g_main_loop_quit (loop);
- return FALSE;
- }
- GST_INFO ("%2d result: %d", test_ix, ret);
- return ret;
-}
-
-int
-main (int argc, char *argv[])
-{
- gchar *target_times = NULL;
- GOptionEntry options[] = {
- {"audio-src", '\0', 0, G_OPTION_ARG_STRING, &audiosrc_name,
- "audio source used in video recording", NULL},
- {"video-src", '\0', 0, G_OPTION_ARG_STRING, &videosrc_name,
- "video source used in still capture and video recording", NULL},
- {"audio-enc", '\0', 0, G_OPTION_ARG_STRING, &audioenc_name,
- "audio encoder used in video recording", NULL},
- {"video-enc", '\0', 0, G_OPTION_ARG_STRING, &videoenc_name,
- "video encoder used in video recording", NULL},
- {"image-enc", '\0', 0, G_OPTION_ARG_STRING, &imageenc_name,
- "image encoder used in still capture", NULL},
- {"video-mux", '\0', 0, G_OPTION_ARG_STRING, &videomux_name,
- "muxer used in video recording", NULL},
- {"image-width", '\0', 0, G_OPTION_ARG_INT, &image_width,
- "width for image capture", NULL},
- {"image-height", '\0', 0, G_OPTION_ARG_INT, &image_height,
- "height for image capture", NULL},
- {"video-width", '\0', 0, G_OPTION_ARG_INT, &video_width,
- "width for image capture", NULL},
- {"video-height", '\0', 0, G_OPTION_ARG_INT, &video_height,
- "height for image capture", NULL},
- {"view-framerate-num", '\0', 0, G_OPTION_ARG_INT, &view_framerate_num,
- "framerate numerator for viewfinder", NULL},
- {"view-framerate-den", '\0', 0, G_OPTION_ARG_INT, &view_framerate_den,
- "framerate denominator for viewfinder", NULL},
- {"src-colorspace", '\0', 0, G_OPTION_ARG_STRING, &src_csp,
- "colorspace format for videosource (e.g. YUY2, UYVY)", NULL},
- {"target-times", '\0', 0, G_OPTION_ARG_STRING, &target_times,
- "target test times in ms as comma separated values (0 to skip test)",
- NULL},
- {NULL}
- };
- GOptionContext *ctx;
- GError *err = NULL;
-
- ctx = g_option_context_new (NULL);
- g_option_context_add_main_entries (ctx, options, NULL);
- g_option_context_add_group (ctx, gst_init_get_option_group ());
- if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
- g_print ("Error initializing: %s\n", err->message);
- exit (1);
- }
- g_option_context_free (ctx);
-
- GST_DEBUG_CATEGORY_INIT (camera_perf, "camera-perf", 0,
- "camera performcance test");
-
- /* init */
- filename = g_string_new_len ("", 16);
- loop = g_main_loop_new (NULL, FALSE);
-
- if (target_times) {
- gchar **numbers;
- gint i;
-
- numbers = g_strsplit (target_times, ",", TEST_CASES);
- for (i = 0; (numbers[i] && i < TEST_CASES); i++) {
- target[i] = GST_MSECOND * atoi (numbers[i]);
- }
- g_strfreev (numbers);
- }
-
- /* run */
- puts ("");
- puts ("+---------------------------------------------------------------------------------------+");
- puts ("| test | rate | target | avg | min | max | trials | description |");
- puts ("+---------------------------------------------------------------------------------------+");
- g_idle_add ((GSourceFunc) run_test, NULL);
- g_main_loop_run (loop);
- puts ("+---------------------------------------------------------------------------------------+");
- puts ("");
-
- fflush (stdout);
-
- /* free */
- cleanup_pipeline ();
- g_main_loop_unref (loop);
- g_string_free (filename, TRUE);
- g_free (audiosrc_name);
- g_free (videosrc_name);
- g_free (audioenc_name);
- g_free (videoenc_name);
- g_free (imageenc_name);
- g_free (videomux_name);
- g_free (src_csp);
- g_free (target_times);
-
- return 0;
-}
diff --git a/tests/examples/camerabin/gst-camera.c b/tests/examples/camerabin/gst-camera.c
deleted file mode 100644
index 610b32f0..00000000
--- a/tests/examples/camerabin/gst-camera.c
+++ /dev/null
@@ -1,1705 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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.
- */
-/*
- * This is a demo application to test the camerabin element.
- * If you have question don't hesitate in contact me edgard.lima@indt.org.br
- */
-
-/*
- * Includes
- */
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include "gst-camera.h"
-
-#include <gst/gst.h>
-#include <gst/video/videooverlay.h>
-#include <gst/video/colorbalance.h>
-#include <gst/interfaces/photography.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkx.h>
-#include <gdk/gdkkeysyms.h>
-
-#include <string.h>
-
-#include <sys/time.h>
-#include <time.h>
-#include <glib/gstdio.h> // g_fopen()
-
-#if !GTK_CHECK_VERSION (2, 17, 7)
-static void
-gtk_widget_get_allocation (GtkWidget * w, GtkAllocation * a)
-{
- *a = w->allocation;
-}
-#endif
-
-/*
- * enums, typedefs and defines
- */
-
-#ifdef USE_MP4
-#define VID_FILE_EXT "mp4"
-#else
-#define VID_FILE_EXT "ogg"
-#endif
-
-#define PREVIEW_TIME_MS (2 * 1000)
-#define N_BURST_IMAGES 10
-#define UI_FILE CAMERA_APPS_UIDIR G_DIR_SEPARATOR_S "gst-camera.ui"
-
-/* Names of default elements */
-#define CAMERA_APP_VIDEOSRC "v4l2src"
-#define CAMERA_APP_IMAGE_POSTPROC "dummy"
-
-#ifdef HAVE_GST_PHOTO_IFACE_H
-#define EV_COMP_MAX 3.0
-#define EV_COMP_MIN -3.0
-#define EV_COMP_STEP 0.5
-#endif
-
-#define DEFAULT_VF_CAPS \
- "video/x-raw-yuv, width = (int) 320, height = (int) 240, framerate = (fraction) 1496/100;" \
- "video/x-raw-yuv, width = (int) 640, height = (int) 480, framerate = (fraction) 1494/100;" \
- "video/x-raw-yuv, width = (int) 800, height = (int) 480, framerate = (fraction) 2503/100;" \
- "video/x-raw-yuv, width = (int) 800, height = (int) 480, framerate = (fraction) 2988/100;" \
- "video/x-raw-yuv, width = (int) 800, height = (int) 480, framerate = (fraction) 1494/100;" \
- "video/x-raw-yuv, width = (int) 720, height = (int) 480, framerate = (fraction) 1494/100"
-
-#define PREVIEW_CAPS \
- "video/x-raw-rgb, width = (int) 640, height = (int) 480"
-
-/* states:
- (image) <---> (video_stopped) <---> (video_recording)
-*/
-typedef enum _tag_CaptureState
-{
- CAP_STATE_IMAGE,
- CAP_STATE_VIDEO_STOPED,
- CAP_STATE_VIDEO_PAUSED,
- CAP_STATE_VIDEO_RECORDING,
-} CaptureState;
-
-/*
- * Global Vars
- */
-
-static GtkBuilder *builder = NULL;
-static GtkWidget *ui_main_window = NULL;
-static GtkWidget *ui_drawing = NULL;
-static GtkWidget *ui_drawing_frame = NULL;
-static GtkWidget *ui_chk_continous = NULL;
-static GtkButton *ui_bnt_shot = NULL;
-static GtkButton *ui_bnt_pause = NULL;
-static GtkWidget *ui_chk_mute = NULL;
-static GtkWidget *ui_vbox_color_controls = NULL;
-static GtkWidget *ui_chk_rawmsg = NULL;
-
-static GtkWidget *ui_rdbntImageCapture = NULL;
-static GtkWidget *ui_rdbntVideoCapture = NULL;
-static GtkWidget *ui_menuitem_photography = NULL;
-static GtkWidget *ui_menuitem_capture = NULL;
-
-static GtkComboBox *ui_cbbox_resolution = NULL;
-static guint ui_cbbox_resolution_count = 0;
-
-static CaptureState capture_state = CAP_STATE_IMAGE;
-
-static GstElement *gst_camera_bin = NULL;
-static GstElement *gst_videosrc = NULL;
-
-static GString *filename = NULL;
-static guint32 num_pics = 0;
-static guint32 num_pics_cont = 0;
-static guint32 num_vids = 0;
-
-static gint max_fr_n = 0;
-static gint max_fr_d = 0;
-static const gchar *video_post;
-static const gchar *image_post;
-
-static GList *video_caps_list = NULL;
-
-static guint bus_handler_id = 0;
-
-#ifdef HAVE_GST_PHOTO_IFACE_H
-static gchar *iso_speed_labels[] = { "auto", "100", "200", "400" };
-
-static struct
-{
- const gchar *label;
- gint width;
- gint height;
-} image_resolution_label_map[] = {
- {
- "View finder resolution", 0, 0}, {
- "VGA", 640, 480}, {
- "1,3Mpix (1280x960)", 1280, 960}, {
- "3Mpix (2048x1536)", 2048, 1536}, {
- "3,7Mpix 16:9 (2592x1456)", 2592, 1456}, {
- "5Mpix (2592x1968)", 2592, 1968}
-};
-#endif
-
-/*
- * functions prototypes
- */
-static gboolean me_gst_setup_pipeline (const gchar * imagepost,
- const gchar * videopost);
-static void me_gst_cleanup_element (void);
-
-static gboolean capture_mode_set_state (CaptureState state);
-static void capture_mode_config_gui (void);
-static gboolean capture_mode_stop (void);
-
-static void ui_connect_signals (void);
-static gboolean ui_create (void);
-static void destroy_color_controls (void);
-static void create_color_controls (void);
-static void init_view_finder_resolution_combobox (void);
-
-#ifdef HAVE_GST_PHOTO_IFACE_H
-static void menuitem_toggle_active (GtkWidget * widget, gpointer data);
-static void sub_menu_initialize (GtkWidget * widget, gpointer data);
-static void fill_photography_menu (GtkMenuItem * parent_item);
-#endif
-
-/*
- * functions implementation
- */
-
-static void
-set_filename (GString * name)
-{
- const gchar *datadir;
-
- if (capture_state == CAP_STATE_IMAGE) {
- g_string_printf (name, G_DIR_SEPARATOR_S "test_%04u.jpg", num_pics);
- datadir = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES);
- } else {
- g_string_printf (name, G_DIR_SEPARATOR_S "test_%04u.%s", num_vids,
- VID_FILE_EXT);
- datadir = g_get_user_special_dir (G_USER_DIRECTORY_VIDEOS);
- }
-
- if (datadir == NULL) {
- gchar *curdir = g_get_current_dir ();
- g_string_prepend (name, curdir);
- g_free (curdir);
- } else {
- g_string_prepend (name, datadir);
- }
- GST_INFO ("capture to %s", name->str);
-}
-
-/* Write raw image buffer to file if found from message */
-static void
-handle_element_message (GstMessage * msg)
-{
- const GstStructure *st;
- const GValue *image;
- GstBuffer *buf = NULL;
- gchar *filename = NULL;
- FILE *f = NULL;
- size_t written;
-
- st = gst_message_get_structure (msg);
- if (g_str_equal (gst_structure_get_name (st), "autofocus-done")) {
- gtk_button_set_label (ui_bnt_pause, "Focus");
- } else if (gst_structure_has_field_typed (st, "buffer", GST_TYPE_BUFFER)) {
- image = gst_structure_get_value (st, "buffer");
- if (image) {
- buf = gst_value_get_buffer (image);
- if (g_str_equal (gst_structure_get_name (st), "raw-image")) {
- filename = g_strdup_printf ("test_%04u.raw", num_pics);
- } else if (g_str_equal (gst_structure_get_name (st), "preview-image")) {
- filename = g_strdup_printf ("test_%04u_vga.rgb", num_pics);
- } else {
- /* for future purposes */
- g_print ("unknown buffer received\n");
- return;
- }
- g_print ("writing buffer to %s\n", filename);
- f = g_fopen (filename, "w");
- if (f) {
- GstMapInfo map;
-
- gst_buffer_map (buf, &map, GST_MAP_READ);
- written = fwrite (map.data, map.size, 1, f);
- gst_buffer_unmap (buf, &map);
- if (!written) {
- g_print ("errro writing file\n");
- }
- fclose (f);
- } else {
- g_print ("error opening file for raw image writing\n");
- }
- g_free (filename);
- }
- } else if (g_str_equal (gst_structure_get_name (st), "photo-capture-start")) {
- g_print ("=== CLICK ===\n");
- }
-}
-
-static GstBusSyncReply
-my_bus_sync_callback (GstBus * bus, GstMessage * message, gpointer data)
-{
- if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
- return GST_BUS_PASS;
-
- if (!gst_message_has_name (message, "prepare-xwindow-id"))
- return GST_BUS_PASS;
-
- /* FIXME: make sure to get XID in main thread */
- gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (message->src),
-#if GTK_CHECK_VERSION (2, 91, 6)
- GDK_WINDOW_XID (gtk_widget_get_window (ui_drawing)));
-#else
- GDK_WINDOW_XWINDOW (gtk_widget_get_window (ui_drawing)));
-#endif
-
- gst_message_unref (message);
- return GST_BUS_DROP;
-}
-
-static void
-print_error_message (GstMessage * msg)
-{
- GError *err = NULL;
- gchar *dbg = NULL;
-
- gst_message_parse_error (msg, &err, &dbg);
-
- g_printerr ("Camerabin won't start up!\nError: %s\nDebug Info: %s\n",
- err->message, (dbg) ? dbg : "None");
-
- g_error_free (err);
- g_free (dbg);
-}
-
-static gboolean
-my_bus_callback (GstBus * bus, GstMessage * message, gpointer data)
-{
- switch (GST_MESSAGE_TYPE (message)) {
- case GST_MESSAGE_WARNING:{
- GError *err;
- gchar *debug;
-
- gst_message_parse_warning (message, &err, &debug);
- g_print ("Warning: %s\n", err->message);
- g_error_free (err);
- g_free (debug);
- break;
- }
- case GST_MESSAGE_ERROR:{
- print_error_message (message);
- me_gst_cleanup_element ();
- gtk_main_quit ();
- break;
- }
- case GST_MESSAGE_EOS:
- /* end-of-stream */
- gtk_main_quit ();
- break;
- case GST_MESSAGE_STATE_CHANGED:{
- GstState old, new, pending;
-
- gst_message_parse_state_changed (message, &old, &new, &pending);
-
- GST_DEBUG_OBJECT (GST_MESSAGE_SRC (message), "state-change %s -> %s",
- gst_element_state_get_name (old), gst_element_state_get_name (new));
-
- /* Create/destroy color controls according videosrc state */
- if (GST_MESSAGE_SRC (message) == GST_OBJECT (gst_videosrc)) {
- GST_INFO_OBJECT (GST_MESSAGE_SRC (message), "state-change %s -> %s",
- gst_element_state_get_name (old), gst_element_state_get_name (new));
-
- if (old == GST_STATE_READY && new == GST_STATE_NULL) {
- destroy_color_controls ();
- } else if (old == GST_STATE_NULL && new == GST_STATE_READY) {
- create_color_controls ();
- }
- }
-
- /* we only care about pipeline state change messages */
- if (GST_IS_PIPELINE (GST_MESSAGE_SRC (message))) {
- /* dump graph for pipeline state changes */
- gchar *dump_name = g_strdup_printf ("camerabin.%s_%s",
- gst_element_state_get_name (old),
- gst_element_state_get_name (new));
- GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (GST_MESSAGE_SRC (message)),
- GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE |
- GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS, dump_name);
- g_free (dump_name);
- }
- break;
- }
- case GST_MESSAGE_ELEMENT:
- {
- handle_element_message (message);
- break;
- }
- default:
- /* unhandled message */
- break;
- }
- return TRUE;
-}
-
-static void
-me_set_next_cont_file_name (GString * filename)
-{
- /* FIXME: better file naming (possible with signal) */
- if (G_UNLIKELY (num_pics_cont == 1)) {
- gint i;
- for (i = filename->len - 1; i > 0; --i) {
- if (filename->str[i] == '.')
- break;
- }
- g_string_insert (filename, i, "_0001");
- } else {
- gchar tmp[6];
- gint i;
- for (i = filename->len - 1; i > 0; --i) {
- if (filename->str[i] == '_')
- break;
- }
- snprintf (tmp, 6, "_%04d", num_pics_cont);
- memcpy (filename->str + i, tmp, 5);
- }
-}
-
-static gboolean
-stop_image_preview (gpointer data)
-{
- g_return_val_if_fail (data != NULL, FALSE);
-
- g_signal_emit_by_name (data, "capture-stop", 0);
-
- return FALSE;
-}
-
-static gboolean
-me_image_capture_done (GstElement * camera, const gchar * fname,
- gpointer user_data)
-{
- gboolean cont =
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ui_chk_continous));
- GString *filename = g_string_new (fname);
-
- if (num_pics_cont < N_BURST_IMAGES && cont) {
- num_pics_cont++;
- me_set_next_cont_file_name (filename);
- g_object_set (G_OBJECT (camera), "filename", filename->str, NULL);
- g_string_free (filename, TRUE);
- } else {
- gtk_widget_set_sensitive (GTK_WIDGET (ui_bnt_shot), TRUE);
- printf ("%u image(s) saved\n", num_pics_cont + 1);
- fflush (stdout);
- num_pics_cont = 0;
-
- g_timeout_add (PREVIEW_TIME_MS, (GSourceFunc) stop_image_preview, camera);
-
- cont = FALSE;
- }
- return cont;
-}
-
-static gboolean
-me_gst_setup_pipeline_create_post_bin (const gchar * post, gboolean video)
-{
- GstElement *vpp = NULL;
- GstElement *bin, *c1, *c2, *filter;
- GstPad *pad;
- GstCaps *caps;
-
- /* this function uses a bin just because it needs ffmpegcolorspace. For
- * performance reason one should provide an element without need for color
- * convertion */
-
- vpp = gst_element_factory_make (post, NULL);
- if (NULL == vpp) {
- fprintf (stderr, "cannot create \'%s\' element\n", post);
- fflush (stderr);
- goto done;
- }
- c1 = gst_element_factory_make ("ffmpegcolorspace", NULL);
- c2 = gst_element_factory_make ("ffmpegcolorspace", NULL);
- if (NULL == c1 || NULL == c2) {
- fprintf (stderr, "cannot create \'ffmpegcolorspace\' element\n");
- fflush (stderr);
- goto done;
- }
- filter = gst_element_factory_make ("capsfilter", NULL);
- if (NULL == filter) {
- fprintf (stderr, "cannot create \'capsfilter\' element\n");
- fflush (stderr);
- goto done;
- }
- bin = gst_bin_new (video ? "vid_postproc_bin" : "img_postproc_bin");
- if (NULL == bin) {
- goto done;
- }
-
- caps = gst_caps_new_simple ("video/x-raw-yuv",
- "format", G_TYPE_STRING, "I420", NULL);
- g_object_set (G_OBJECT (filter), "caps", caps, NULL);
- gst_caps_unref (caps);
-
- gst_bin_add_many (GST_BIN (bin), c1, vpp, c2, filter, NULL);
- if (!gst_element_link_many (c1, vpp, c2, filter, NULL)) {
- fprintf (stderr, "cannot link video post proc elements\n");
- fflush (stderr);
- goto done;
- }
-
- pad = gst_element_get_static_pad (c1, "sink");
- gst_element_add_pad (bin, gst_ghost_pad_new ("sink", pad));
- gst_object_unref (GST_OBJECT (pad));
-
- pad = gst_element_get_static_pad (filter, "src");
- gst_element_add_pad (bin, gst_ghost_pad_new ("src", pad));
- gst_object_unref (GST_OBJECT (pad));
-
- g_object_set (gst_camera_bin,
- (video ? "video-post-processing" : "image-post-processing"), bin, NULL);
- return TRUE;
-done:
- return FALSE;
-}
-
-static void
-me_gst_setup_pipeline_create_codecs (void)
-{
-#ifdef USE_MP4
- g_object_set (gst_camera_bin, "video-encoder",
- gst_element_factory_make ("omx_mpeg4enc", NULL), NULL);
-
- g_object_set (gst_camera_bin, "audio-encoder",
- gst_element_factory_make ("omx_aacenc", NULL), NULL);
-
- g_object_set (gst_camera_bin, "video-muxer",
- gst_element_factory_make ("hantromp4mux", NULL), NULL);
-#else
- /* using defaults theora, vorbis, ogg */
-#endif
-}
-
-static gboolean
-me_gst_setup_pipeline_create_img_post_bin (const gchar * imagepost)
-{
- return me_gst_setup_pipeline_create_post_bin (imagepost, FALSE);
-}
-
-static gboolean
-me_gst_setup_pipeline_create_vid_post_bin (const gchar * videopost)
-{
- return me_gst_setup_pipeline_create_post_bin (videopost, TRUE);
-}
-
-static gboolean
-me_gst_setup_pipeline (const gchar * imagepost, const gchar * videopost)
-{
- GstBus *bus;
- GstCaps *preview_caps;
-
- set_filename (filename);
-
- me_gst_cleanup_element ();
-
- gst_camera_bin = gst_element_factory_make ("camerabin", NULL);
- if (NULL == gst_camera_bin) {
- goto done;
- }
-
- g_signal_connect (gst_camera_bin, "image-done",
- (GCallback) me_image_capture_done, NULL);
-
- preview_caps = gst_caps_from_string (PREVIEW_CAPS);
-
- bus = gst_pipeline_get_bus (GST_PIPELINE (gst_camera_bin));
- bus_handler_id = gst_bus_add_watch (bus, my_bus_callback, NULL);
- gst_bus_set_sync_handler (bus, my_bus_sync_callback, NULL);
- gst_object_unref (bus);
-
- /* set properties */
- g_object_set (gst_camera_bin, "filename", filename->str, NULL);
- g_object_set (gst_camera_bin, "preview-caps", preview_caps, NULL);
- g_object_set (gst_camera_bin, "flags", 0xdf, NULL);
- gst_caps_unref (preview_caps);
-
- gst_videosrc = gst_element_factory_make (CAMERA_APP_VIDEOSRC, NULL);
- if (gst_videosrc) {
- g_object_set (G_OBJECT (gst_camera_bin), "video-source", gst_videosrc,
- NULL);
- }
-
- if (imagepost) {
- if (!me_gst_setup_pipeline_create_img_post_bin (imagepost))
- goto done;
- } else {
- /* Use default image postprocessing element */
- GstElement *ipp =
- gst_element_factory_make (CAMERA_APP_IMAGE_POSTPROC, NULL);
- if (ipp) {
- g_object_set (G_OBJECT (gst_camera_bin), "image-post-processing", ipp,
- NULL);
- }
- }
-
- if (videopost) {
- if (!me_gst_setup_pipeline_create_vid_post_bin (videopost))
- goto done;
- }
-
- me_gst_setup_pipeline_create_codecs ();
-
- if (GST_STATE_CHANGE_FAILURE ==
- gst_element_set_state (gst_camera_bin, GST_STATE_READY)) {
- goto done;
- }
-
- if (!gst_videosrc) {
- g_object_get (G_OBJECT (gst_camera_bin), "video-source", &gst_videosrc,
- NULL);
- }
-
- init_view_finder_resolution_combobox ();
-
- gst_element_set_state (gst_camera_bin, GST_STATE_PLAYING);
-
-#ifdef HAVE_GST_PHOTO_IFACE_H
- /* Initialize menus to default settings */
- GtkWidget *sub_menu =
- gtk_menu_item_get_submenu (GTK_MENU_ITEM (ui_menuitem_capture));
- gtk_container_foreach (GTK_CONTAINER (sub_menu), sub_menu_initialize, NULL);
- sub_menu =
- gtk_menu_item_get_submenu (GTK_MENU_ITEM (ui_menuitem_photography));
- gtk_container_foreach (GTK_CONTAINER (sub_menu), sub_menu_initialize, NULL);
-#endif
-
- capture_state = CAP_STATE_IMAGE;
- return TRUE;
-done:
- fprintf (stderr, "error to create pipeline\n");
- fflush (stderr);
- me_gst_cleanup_element ();
- return FALSE;
-}
-
-static gboolean
-me_gst_setup_default_pipeline (gpointer data)
-{
- if (!me_gst_setup_pipeline (NULL, NULL)) {
- gtk_main_quit ();
- }
- return FALSE;
-}
-
-static void
-me_gst_cleanup_element (void)
-{
- if (gst_camera_bin) {
- GstBus *bus;
-
- gst_element_set_state (gst_camera_bin, GST_STATE_NULL);
- gst_element_get_state (gst_camera_bin, NULL, NULL, GST_CLOCK_TIME_NONE);
-
- bus = gst_pipeline_get_bus (GST_PIPELINE (gst_camera_bin));
- gst_bus_set_sync_handler (bus, NULL, NULL);
- g_source_remove (bus_handler_id);
-
- gst_object_unref (gst_camera_bin);
- gst_camera_bin = NULL;
-
- g_list_foreach (video_caps_list, (GFunc) gst_caps_unref, NULL);
- g_list_free (video_caps_list);
- video_caps_list = NULL;
- }
-}
-
-static gboolean
-capture_mode_stop (void)
-{
- if (capture_state == CAP_STATE_VIDEO_PAUSED
- || capture_state == CAP_STATE_VIDEO_RECORDING) {
- return capture_mode_set_state (CAP_STATE_VIDEO_STOPED);
- } else {
- return TRUE;
- }
-}
-
-static void
-capture_mode_config_gui (void)
-{
- switch (capture_state) {
- case CAP_STATE_IMAGE:
- gtk_button_set_label (ui_bnt_shot, "Shot");
- gtk_button_set_label (ui_bnt_pause, "Focus");
- gtk_widget_set_sensitive (GTK_WIDGET (ui_bnt_pause), TRUE);
- gtk_widget_show (ui_chk_continous);
- gtk_widget_show (ui_chk_rawmsg);
- gtk_widget_hide (ui_chk_mute);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ui_rdbntImageCapture),
- TRUE);
- break;
- case CAP_STATE_VIDEO_STOPED:
- gtk_button_set_label (ui_bnt_shot, "Rec");
- gtk_button_set_label (ui_bnt_pause, "Pause");
- gtk_widget_set_sensitive (GTK_WIDGET (ui_bnt_pause), FALSE);
- gtk_widget_show (GTK_WIDGET (ui_bnt_pause));
- gtk_widget_show (ui_chk_mute);
- gtk_widget_hide (ui_chk_continous);
- gtk_widget_hide (ui_chk_rawmsg);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ui_rdbntVideoCapture),
- TRUE);
- break;
- case CAP_STATE_VIDEO_PAUSED:
- gtk_button_set_label (ui_bnt_pause, "Cont");
- break;
- case CAP_STATE_VIDEO_RECORDING:
- gtk_button_set_label (ui_bnt_shot, "Stop");
- gtk_button_set_label (ui_bnt_pause, "Pause");
- gtk_widget_set_sensitive (GTK_WIDGET (ui_bnt_pause), TRUE);
- break;
- default:
- break;
- }
-}
-
-static gboolean
-capture_mode_set_state (CaptureState state)
-{
- if (capture_state == state)
- return TRUE;
-
- switch (capture_state) {
- case CAP_STATE_IMAGE:
- if (state == CAP_STATE_VIDEO_PAUSED) {
- goto done;
- }
- g_object_set (gst_camera_bin, "mode", 1, NULL);
- capture_state = CAP_STATE_VIDEO_STOPED;
- if (state == CAP_STATE_VIDEO_RECORDING)
- capture_mode_set_state (state);
- break;
- case CAP_STATE_VIDEO_STOPED:
- if (state == CAP_STATE_VIDEO_PAUSED) {
- goto done;
- }
- capture_state = state;
- if (state == CAP_STATE_IMAGE)
- g_object_set (gst_camera_bin, "mode", 0, NULL);
- else { /* state == CAP_STATE_VIDEO_RECORDING */
- g_object_set (gst_camera_bin, "mode", 1, NULL);
- g_signal_emit_by_name (gst_camera_bin, "capture-start", 0);
- }
- break;
- case CAP_STATE_VIDEO_PAUSED:
- if (state == CAP_STATE_VIDEO_RECORDING) {
- g_signal_emit_by_name (gst_camera_bin, "capture-start", 0);
- capture_state = CAP_STATE_VIDEO_RECORDING;
- } else {
- g_signal_emit_by_name (gst_camera_bin, "capture-stop", 0);
- capture_state = CAP_STATE_VIDEO_STOPED;
- if (state == CAP_STATE_IMAGE)
- capture_mode_set_state (state);
- }
- break;
- case CAP_STATE_VIDEO_RECORDING:
- if (state == CAP_STATE_VIDEO_PAUSED) {
- g_signal_emit_by_name (gst_camera_bin, "capture-pause", 0);
- capture_state = CAP_STATE_VIDEO_PAUSED;
- } else {
- g_signal_emit_by_name (gst_camera_bin, "capture-stop", 0);
- capture_state = CAP_STATE_VIDEO_STOPED;
- if (state == CAP_STATE_IMAGE)
- capture_mode_set_state (state);
- }
- break;
- }
- return TRUE;
-done:
- return FALSE;
-}
-
-void
-on_windowMain_delete_event (GtkWidget * widget, GdkEvent * event, gpointer data)
-{
- capture_mode_set_state (CAP_STATE_IMAGE);
- capture_mode_config_gui ();
- me_gst_cleanup_element ();
- gtk_main_quit ();
-}
-
-static void
-set_metadata (void)
-{
- /* for more information about image metadata tags, see:
- * http://webcvs.freedesktop.org/gstreamer/gst-plugins-bad/tests/icles/metadata_editor.c
- * and for the mapping:
- * http://webcvs.freedesktop.org/gstreamer/gst-plugins-bad/ext/metadata/metadata_mapping.htm?view=co
- */
-
- GstTagSetter *setter = GST_TAG_SETTER (gst_camera_bin);
- GTimeVal time = { 0, 0 };
- gchar *date_str, *desc_str;
-
- g_get_current_time (&time);
- date_str = g_time_val_to_iso8601 (&time); /* this is UTC */
- desc_str = g_strdup_printf ("picture taken by %s", g_get_real_name ());
-
- gst_tag_setter_add_tags (setter, GST_TAG_MERGE_REPLACE,
- "date-time-original", date_str,
- "date-time-modified", date_str,
- "creator-tool", "camerabin-demo",
- GST_TAG_DESCRIPTION, desc_str,
- GST_TAG_TITLE, "My picture", GST_TAG_COPYRIGHT, "LGPL", NULL);
-
- g_free (date_str);
- g_free (desc_str);
-}
-
-void
-on_buttonShot_clicked (GtkButton * button, gpointer user_data)
-{
- switch (capture_state) {
- case CAP_STATE_IMAGE:
- {
- gtk_widget_set_sensitive (GTK_WIDGET (ui_bnt_shot), FALSE);
- set_filename (filename);
- num_pics++;
- g_object_set (gst_camera_bin, "filename", filename->str, NULL);
-
- set_metadata ();
- g_signal_emit_by_name (gst_camera_bin, "capture-start", 0);
- }
- break;
- case CAP_STATE_VIDEO_STOPED:
- set_filename (filename);
- num_vids++;
- g_object_set (gst_camera_bin, "filename", filename->str, NULL);
- capture_mode_set_state (CAP_STATE_VIDEO_RECORDING);
- capture_mode_config_gui ();
- break;
- case CAP_STATE_VIDEO_PAUSED:
- /* fall trough */
- case CAP_STATE_VIDEO_RECORDING:
- capture_mode_set_state (CAP_STATE_VIDEO_STOPED);
- capture_mode_config_gui ();
- break;
- default:
- break;
- }
-}
-
-void
-on_buttonPause_clicked (GtkButton * button, gpointer user_data)
-{
- switch (capture_state) {
- case CAP_STATE_IMAGE:
- if (g_str_equal (gtk_button_get_label (ui_bnt_pause), "Focus")) {
- /* Start autofocus */
- gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_videosrc), TRUE);
- gtk_button_set_label (ui_bnt_pause, "Cancel Focus");
- } else {
- /* Cancel autofocus */
- gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_videosrc), FALSE);
- gtk_button_set_label (ui_bnt_pause, "Focus");
- }
- break;
- case CAP_STATE_VIDEO_STOPED:
- break;
- case CAP_STATE_VIDEO_PAUSED:
- capture_mode_set_state (CAP_STATE_VIDEO_RECORDING);
- capture_mode_config_gui ();
- break;
- case CAP_STATE_VIDEO_RECORDING:
- capture_mode_set_state (CAP_STATE_VIDEO_PAUSED);
- capture_mode_config_gui ();
- break;
- default:
- break;
- }
-}
-
-void
-on_drawingareaView_realize (GtkWidget * widget, gpointer data)
-{
-#if GTK_CHECK_VERSION (2, 18, 0)
- gdk_window_ensure_native (gtk_widget_get_window (widget));
-#endif
-}
-
-gboolean
-on_drawingareaView_configure_event (GtkWidget * widget,
- GdkEventConfigure * event, gpointer data)
-{
- GtkAllocation a;
-
- gtk_widget_get_allocation (widget, &a);
- gdk_window_move_resize (gtk_widget_get_window (widget),
- a.x, a.y, a.width, a.height);
- gdk_display_sync (gtk_widget_get_display (widget));
-
- return TRUE;
-}
-
-void
-on_comboboxResolution_changed (GtkComboBox * widget, gpointer user_data)
-{
- GstStructure *st;
- gint w = 0, h = 0;
- GstCaps *video_caps =
- g_list_nth_data (video_caps_list, gtk_combo_box_get_active (widget));
-
- if (video_caps) {
- GstState old;
-
- gst_element_get_state (gst_camera_bin, &old, NULL, GST_CLOCK_TIME_NONE);
- GST_DEBUG ("change resolution in %s", gst_element_state_get_name (old));
-
- if (old != GST_STATE_NULL) {
- gst_element_set_state (gst_camera_bin, GST_STATE_READY);
- /* source need to be NULL, otherwise changing the mode fails with device
- * busy:
- * - if src goes from NULL->PLAYING it sets new mode anyway
- * - if src goes form READY->PLAYIN new mode is activated via reverse caps
- * negotiation, but then the device is already streaming
- */
- gst_element_set_state (gst_videosrc, GST_STATE_NULL);
- }
-
- st = gst_caps_get_structure (video_caps, 0);
-
- gst_structure_get_int (st, "width", &w);
- gst_structure_get_int (st, "height", &h);
-
- if (w && h) {
- g_object_set (ui_drawing_frame, "ratio", (gfloat) w / (gfloat) h, NULL);
- }
-
- g_object_set (G_OBJECT (gst_camera_bin), "filter-caps", video_caps, NULL);
-
- if (old != GST_STATE_NULL) {
- gst_element_set_state (gst_camera_bin, old);
- }
- }
-}
-
-void
-on_radiobuttonImageCapture_toggled (GtkToggleButton * togglebutton,
- gpointer user_data)
-{
- if (gtk_toggle_button_get_active (togglebutton)) {
- if (capture_state != CAP_STATE_IMAGE) {
- capture_mode_set_state (CAP_STATE_IMAGE);
- capture_mode_config_gui ();
- }
- }
-}
-
-void
-on_radiobuttonVideoCapture_toggled (GtkToggleButton * togglebutton,
- gpointer user_data)
-{
- if (gtk_toggle_button_get_active (togglebutton)) {
- if (capture_state == CAP_STATE_IMAGE) {
- capture_mode_set_state (CAP_STATE_VIDEO_STOPED);
- capture_mode_config_gui ();
- }
- }
-}
-
-static void
-on_rbBntVidEff_toggled (GtkToggleButton * togglebutton, const gchar * effect)
-{
- if (gtk_toggle_button_get_active (togglebutton)) {
- /* lets also use those effects to image */
- video_post = effect;
- image_post = effect;
- capture_mode_stop ();
-
- me_gst_cleanup_element ();
- if (!me_gst_setup_pipeline (image_post, video_post))
- gtk_main_quit ();
- capture_mode_config_gui ();
- }
-}
-
-void
-on_rbBntVidEffNone_toggled (GtkToggleButton * togglebutton, gpointer data)
-{
- on_rbBntVidEff_toggled (togglebutton, NULL);
-}
-
-void
-on_rbBntVidEffEdge_toggled (GtkToggleButton * togglebutton, gpointer data)
-{
- on_rbBntVidEff_toggled (togglebutton, "edgetv");
-}
-
-void
-on_rbBntVidEffAging_toggled (GtkToggleButton * togglebutton, gpointer user_data)
-{
- on_rbBntVidEff_toggled (togglebutton, "agingtv");
-}
-
-void
-on_rbBntVidEffDice_toggled (GtkToggleButton * togglebutton, gpointer user_data)
-{
- on_rbBntVidEff_toggled (togglebutton, "dicetv");
-}
-
-void
-on_rbBntVidEffWarp_toggled (GtkToggleButton * togglebutton, gpointer data)
-{
- on_rbBntVidEff_toggled (togglebutton, "warptv");
-}
-
-void
-on_rbBntVidEffShagadelic_toggled (GtkToggleButton * togglebutton, gpointer data)
-{
- on_rbBntVidEff_toggled (togglebutton, "shagadelictv");
-}
-
-void
-on_rbBntVidEffVertigo_toggled (GtkToggleButton * togglebutton, gpointer data)
-{
- on_rbBntVidEff_toggled (togglebutton, "vertigotv");
-}
-
-void
-on_rbBntVidEffRev_toggled (GtkToggleButton * togglebutton, gpointer data)
-{
- on_rbBntVidEff_toggled (togglebutton, "revtv");
-}
-
-void
-on_rbBntVidEffQuark_toggled (GtkToggleButton * togglebutton, gpointer data)
-{
- on_rbBntVidEff_toggled (togglebutton, "quarktv");
-}
-
-void
-on_chkbntMute_toggled (GtkToggleButton * togglebutton, gpointer data)
-{
- g_object_set (gst_camera_bin, "mute",
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton)), NULL);
-}
-
-void
-on_chkbtnRawMsg_toggled (GtkToggleButton * togglebutton, gpointer data)
-{
- const gchar *env_var = "CAMSRC_PUBLISH_RAW";
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton))) {
- g_setenv (env_var, "1", TRUE);
- } else {
- g_unsetenv (env_var);
- }
-}
-
-void
-on_hscaleZoom_value_changed (GtkRange * range, gpointer user_data)
-{
- gint zoom = gtk_range_get_value (range);
- g_object_set (gst_camera_bin, "zoom", zoom, NULL);
-}
-
-void
-on_color_control_value_changed (GtkRange * range, gpointer user_data)
-{
- GstColorBalance *balance = GST_COLOR_BALANCE (gst_camera_bin);
- gint val = gtk_range_get_value (range);
- GstColorBalanceChannel *channel = (GstColorBalanceChannel *) user_data;
- gst_color_balance_set_value (balance, channel, val);
-}
-
-#ifndef GDK_KEY_F11
-#define GDK_KEY_F11 GDK_F11
-#endif
-
-gboolean
-on_key_released (GtkWidget * widget, GdkEventKey * event, gpointer user_data)
-{
- g_return_val_if_fail (event != NULL, FALSE);
-
- switch (event->keyval) {
- case GDK_KEY_F11:
-#ifdef HAVE_GST_PHOTO_IFACE_H
- gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_videosrc), FALSE);
-#endif
- break;
- default:
- break;
- }
-
- return FALSE;
-}
-
-gboolean
-on_key_pressed (GtkWidget * widget, GdkEventKey * event, gpointer user_data)
-{
- g_return_val_if_fail (event != NULL, FALSE);
-
- switch (event->keyval) {
- case GDK_KEY_F11:
-#ifdef HAVE_GST_PHOTO_IFACE_H
- gst_photography_set_autofocus (GST_PHOTOGRAPHY (gst_videosrc), TRUE);
-#endif
- break;
- case 0x0:
- on_buttonShot_clicked (NULL, NULL);
- break;
- default:
- break;
- }
-
- return FALSE;
-}
-
-static void
-ui_connect_signals (void)
-{
- gtk_builder_connect_signals (builder, NULL);
-
- g_signal_connect (ui_main_window, "key-press-event",
- (GCallback) on_key_pressed, NULL);
-
- g_signal_connect (ui_main_window, "key-release-event",
- (GCallback) on_key_released, NULL);
-}
-
-static gchar *
-format_value_callback (GtkScale * scale, gdouble value, gpointer user_data)
-{
- GstColorBalanceChannel *channel = (GstColorBalanceChannel *) user_data;
-
- return g_strdup_printf ("%s: %d", channel->label, (gint) value);
-}
-
-static gint
-create_menu_items_from_structure (GstStructure * structure)
-{
- GtkListStore *store;
- const GValue *framerate_list = NULL;
- const gchar *structure_name;
- GString *item_str = NULL;
- guint j, num_items_created = 0, num_framerates = 1;
- gint w = 0, h = 0, n = 0, d = 1;
- const gchar *format = NULL;
-
- g_return_val_if_fail (structure != NULL, 0);
-
- structure_name = gst_structure_get_name (structure);
-
- /* lets filter yuv only */
- if (0 == strcmp (structure_name, "video/x-raw-yuv")) {
- item_str = g_string_new_len ("", 128);
-
- if (gst_structure_has_field_typed (structure, "format", G_TYPE_STRING)) {
- format = gst_structure_get_string (structure, "format");
- }
-
- if (gst_structure_has_field_typed (structure, "width", GST_TYPE_INT_RANGE)) {
- const GValue *wrange = gst_structure_get_value (structure, "width");
- /* If range found, use the maximum */
- w = gst_value_get_int_range_max (wrange);
- } else if (gst_structure_has_field_typed (structure, "width", G_TYPE_INT)) {
- gst_structure_get_int (structure, "width", &w);
- }
-
- if (gst_structure_has_field_typed (structure, "height", GST_TYPE_INT_RANGE)) {
- const GValue *hrange = gst_structure_get_value (structure, "height");
- /* If range found, use the maximum */
- h = gst_value_get_int_range_max (hrange);
- } else if (gst_structure_has_field_typed (structure, "height", G_TYPE_INT)) {
- gst_structure_get_int (structure, "height", &h);
- }
-
- if (gst_structure_has_field_typed (structure, "framerate",
- GST_TYPE_FRACTION)) {
- gst_structure_get_fraction (structure, "framerate", &n, &d);
- } else if (gst_structure_has_field_typed (structure, "framerate",
- GST_TYPE_LIST)) {
- framerate_list = gst_structure_get_value (structure, "framerate");
- num_framerates = gst_value_list_get_size (framerate_list);
- } else if (gst_structure_has_field_typed (structure, "framerate",
- GST_TYPE_FRACTION_RANGE)) {
- const GValue *fr = gst_structure_get_value (structure, "framerate");
- const GValue *frmax = gst_value_get_fraction_range_max (fr);
- max_fr_n = gst_value_get_fraction_numerator (frmax);
- max_fr_d = gst_value_get_fraction_denominator (frmax);
- }
-
- if (max_fr_n || max_fr_d) {
- goto range_found;
- }
-
- store = GTK_LIST_STORE (gtk_combo_box_get_model (ui_cbbox_resolution));
- for (j = 0; j < num_framerates; j++) {
- GstCaps *video_caps;
- GtkTreeIter iter;
-
- if (framerate_list) {
- const GValue *item = gst_value_list_get_value (framerate_list, j);
- n = gst_value_get_fraction_numerator (item);
- d = gst_value_get_fraction_denominator (item);
- }
- g_string_assign (item_str, structure_name);
- g_string_append_printf (item_str, " (%s)", format);
- g_string_append_printf (item_str, ", %dx%d at %d/%d", w, h, n, d);
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter, 0, item_str->str, -1);
-
- video_caps =
- gst_caps_new_simple (structure_name, "format", G_TYPE_STRING,
- format,
- "width", G_TYPE_INT, w, "height", G_TYPE_INT, h,
- "framerate", GST_TYPE_FRACTION, n, d, NULL);
- video_caps_list = g_list_append (video_caps_list, video_caps);
- num_items_created++;
- }
- }
-
-range_found:
-
- if (item_str) {
- g_string_free (item_str, TRUE);
- }
-
- return num_items_created;
-}
-
-static void
-fill_resolution_combo (GstCaps * caps)
-{
- guint size, num_items, i;
- GstStructure *st;
-
- max_fr_n = max_fr_d = 0;
-
- /* Create new items */
- size = gst_caps_get_size (caps);
-
- for (i = 0; i < size; i++) {
- st = gst_caps_get_structure (caps, i);
- num_items = create_menu_items_from_structure (st);
- ui_cbbox_resolution_count += num_items;
- }
-}
-
-static GstCaps *
-create_default_caps (void)
-{
- GstCaps *default_caps;
-
- default_caps = gst_caps_from_string (DEFAULT_VF_CAPS);
-
- return default_caps;
-}
-
-static void
-init_view_finder_resolution_combobox (void)
-{
- GstCaps *input_caps = NULL, *default_caps = NULL, *intersect = NULL;
-
- g_object_get (gst_camera_bin, "video-source-caps", &input_caps, NULL);
- if (input_caps) {
- fill_resolution_combo (input_caps);
- }
-
- /* Fill in default items if supported */
- default_caps = create_default_caps ();
- intersect = gst_caps_intersect (default_caps, input_caps);
- if (intersect) {
- fill_resolution_combo (intersect);
- gst_caps_unref (intersect);
- }
- gst_caps_unref (default_caps);
-
- if (input_caps) {
- gst_caps_unref (input_caps);
- }
-
- /* Set some item active */
- gtk_combo_box_set_active (ui_cbbox_resolution, ui_cbbox_resolution_count - 1);
-}
-
-static void
-destroy_color_controls (void)
-{
- GList *widgets, *item;
- GtkWidget *widget = NULL;
- gpointer user_data = NULL;
-
- widgets = gtk_container_get_children (GTK_CONTAINER (ui_vbox_color_controls));
- for (item = widgets; item; item = g_list_next (item)) {
- widget = GTK_WIDGET (item->data);
- user_data = g_object_get_data (G_OBJECT (widget), "channel");
- g_signal_handlers_disconnect_by_func (widget, (GFunc) format_value_callback,
- user_data);
- g_signal_handlers_disconnect_by_func (widget,
- (GFunc) on_color_control_value_changed, user_data);
- gtk_container_remove (GTK_CONTAINER (ui_vbox_color_controls), widget);
- }
- g_list_free (widgets);
-}
-
-static void
-create_color_controls (void)
-{
- GstColorBalance *balance = NULL;
- const GList *controls, *item;
- GstColorBalanceChannel *channel;
- GtkWidget *hscale;
-
- if (GST_IS_COLOR_BALANCE (gst_camera_bin)) {
- balance = GST_COLOR_BALANCE (gst_camera_bin);
- }
-
- if (NULL == balance) {
- goto done;
- }
-
- controls = gst_color_balance_list_channels (balance);
- for (item = controls; item; item = g_list_next (item)) {
- channel = item->data;
-
- hscale = gtk_hscale_new ((GtkAdjustment *)
- gtk_adjustment_new (gst_color_balance_get_value (balance, channel),
- channel->min_value, channel->max_value, 1, 10, 10));
-
- g_signal_connect (GTK_RANGE (hscale), "value-changed",
- (GCallback) on_color_control_value_changed, (gpointer) channel);
- g_signal_connect (GTK_SCALE (hscale), "format-value",
- (GCallback) format_value_callback, (gpointer) channel);
- g_object_set_data (G_OBJECT (hscale), "channel", (gpointer) channel);
-
- gtk_box_pack_start (GTK_BOX (ui_vbox_color_controls), GTK_WIDGET (hscale),
- FALSE, TRUE, 0);
- }
-
- gtk_widget_show_all (ui_vbox_color_controls);
-done:
- return;
-}
-
-#ifdef HAVE_GST_PHOTO_IFACE_H
-static void
-menuitem_toggle_active (GtkWidget * widget, gpointer data)
-{
- gboolean active;
- g_object_get (G_OBJECT (widget), "active", &active, NULL);
- if (active) {
- gtk_check_menu_item_toggled (GTK_CHECK_MENU_ITEM (widget));
- }
-}
-
-static void
-sub_menu_initialize (GtkWidget * widget, gpointer data)
-{
- GtkWidget *submenu;
- submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
- gtk_container_foreach (GTK_CONTAINER (submenu), menuitem_toggle_active, NULL);
-}
-
-void
-photo_menuitem_toggled_cb (GtkRadioMenuItem * menuitem, gpointer user_data)
-{
- gboolean active = FALSE, ret = FALSE;
- GEnumClass *eclass = (GEnumClass *) user_data;
- GType etype = G_ENUM_CLASS_TYPE (eclass);
- GEnumValue *val;
- gint set_value = -1;
-
- /* Get value using menu item name */
- val =
- g_enum_get_value_by_nick (eclass,
- gtk_widget_get_name (GTK_WIDGET (menuitem)));
-
- g_object_get (G_OBJECT (menuitem), "active", &active, NULL);
- if (active) {
- if (etype == GST_TYPE_WHITE_BALANCE_MODE) {
- GstWhiteBalanceMode mode;
- ret =
- gst_photography_set_white_balance_mode (GST_PHOTOGRAPHY
- (gst_videosrc), val->value);
- gst_photography_get_white_balance_mode (GST_PHOTOGRAPHY (gst_videosrc),
- &mode);
- set_value = (gint) mode;
- } else if (etype == GST_TYPE_SCENE_MODE) {
- GstSceneMode mode;
- ret =
- gst_photography_set_scene_mode (GST_PHOTOGRAPHY (gst_videosrc),
- val->value);
- gst_photography_get_scene_mode (GST_PHOTOGRAPHY (gst_videosrc), &mode);
- set_value = (gint) mode;
- } else if (etype == GST_TYPE_COLOUR_TONE_MODE) {
- GstColourToneMode mode;
- ret =
- gst_photography_set_colour_tone_mode (GST_PHOTOGRAPHY
- (gst_videosrc), val->value);
- gst_photography_get_colour_tone_mode (GST_PHOTOGRAPHY (gst_videosrc),
- &mode);
- set_value = (gint) mode;
- } else if (etype == GST_TYPE_FLASH_MODE) {
- GstFlashMode mode;
- ret =
- gst_photography_set_flash_mode (GST_PHOTOGRAPHY (gst_videosrc),
- val->value);
- gst_photography_get_flash_mode (GST_PHOTOGRAPHY (gst_videosrc), &mode);
- set_value = (gint) mode;
- }
-
- if (!ret) {
- g_print ("%s setting failed\n", val->value_name);
- } else if (val->value != set_value) {
- g_print ("%s setting failed, got %d\n", val->value_nick, set_value);
- }
- }
-}
-
-void
-photo_iso_speed_toggled_cb (GtkRadioMenuItem * menuitem, gpointer user_data)
-{
- gboolean active;
- const gchar *name;
- guint val = 0, set_val = G_MAXUINT;
-
- g_object_get (G_OBJECT (menuitem), "active", &active, NULL);
- if (active) {
- name = gtk_widget_get_name (GTK_WIDGET (menuitem));
- /* iso auto setting = 0 */
- /* FIXME: check what values other than 0 can be set */
- if (!g_str_equal (name, "auto")) {
- sscanf (name, "%d", &val);
- }
- if (!gst_photography_set_iso_speed (GST_PHOTOGRAPHY (gst_videosrc), val)) {
- g_print ("ISO speed (%d) setting failed\n", val);
- } else {
- gst_photography_get_iso_speed (GST_PHOTOGRAPHY (gst_videosrc), &set_val);
- if (val != set_val) {
- g_print ("ISO speed (%d) setting failed, got %d\n", val, set_val);
- }
- }
- }
-}
-
-void
-photo_ev_comp_toggled_cb (GtkRadioMenuItem * menuitem, gpointer user_data)
-{
- gboolean active;
- const gchar *name;
- gfloat val = 0.0, set_val = G_MAXFLOAT;
-
- g_object_get (G_OBJECT (menuitem), "active", &active, NULL);
- if (active) {
- name = gtk_widget_get_name (GTK_WIDGET (menuitem));
- sscanf (name, "%f", &val);
- if (!gst_photography_set_ev_compensation (GST_PHOTOGRAPHY (gst_videosrc),
- val)) {
- g_print ("EV compensation (%.1f) setting failed\n", val);
- } else {
- gst_photography_get_ev_compensation (GST_PHOTOGRAPHY (gst_videosrc),
- &set_val);
- if (val != set_val) {
- g_print ("EV compensation (%.1f) setting failed, got %.1f\n", val,
- set_val);
- }
- }
- }
-}
-
-static void
-photo_add_submenu_from_enum (GtkMenuItem * parent_item, GType enum_type)
-{
- GTypeClass *tclass;
- GEnumClass *eclass;
- GtkWidget *new_item = NULL, *new_submenu = NULL;
- guint i;
- GEnumValue *val;
- GSList *group = NULL;
-
- g_return_if_fail (parent_item && enum_type && G_TYPE_IS_CLASSED (enum_type));
-
- tclass = g_type_class_ref (enum_type);
- eclass = G_ENUM_CLASS (tclass);
- new_submenu = gtk_menu_new ();
-
- for (i = 0; i < eclass->n_values; i++) {
- val = g_enum_get_value (eclass, i);
- new_item = gtk_radio_menu_item_new_with_label (group, val->value_nick);
- /* Store enum nick as the menu item name */
- gtk_widget_set_name (new_item, val->value_nick);
- group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (new_item));
- g_signal_connect (new_item, "toggled",
- (GCallback) photo_menuitem_toggled_cb, eclass);
- gtk_menu_shell_append (GTK_MENU_SHELL (new_submenu), new_item);
- gtk_widget_show (new_item);
- }
-
- gtk_menu_item_set_submenu (parent_item, new_submenu);
- g_type_class_unref (tclass);
-}
-
-static void
-add_submenu_from_list (GtkMenuItem * parent_item, GList * labels,
- GCallback toggled_cb)
-{
- GtkWidget *new_item = NULL, *new_submenu = NULL;
- GSList *group = NULL;
- GList *l;
-
- new_submenu = gtk_menu_new ();
-
- for (l = labels; l != NULL; l = g_list_next (l)) {
- const gchar *label = l->data;
- new_item = gtk_radio_menu_item_new_with_label (group, label);
- if (g_str_equal (label, "0")) {
- /* Let's set zero as default */
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (new_item), TRUE);
- }
- gtk_widget_set_name (new_item, label);
- group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (new_item));
- g_signal_connect (new_item, "toggled", toggled_cb, NULL);
- gtk_menu_shell_append (GTK_MENU_SHELL (new_submenu), new_item);
- gtk_widget_show (new_item);
- }
-
- gtk_menu_item_set_submenu (parent_item, new_submenu);
-}
-
-static GtkMenuItem *
-add_menuitem (GtkMenu * parent_menu, const gchar * item_name)
-{
- GtkWidget *new_item;
-
- new_item = gtk_menu_item_new_with_label (item_name);
- gtk_menu_shell_append (GTK_MENU_SHELL (parent_menu), new_item);
- gtk_widget_show (new_item);
-
- return GTK_MENU_ITEM (new_item);
-}
-
-GList *
-create_iso_speed_labels (void)
-{
- GList *labels = NULL;
- gint i;
- for (i = 0; i < G_N_ELEMENTS (iso_speed_labels); i++) {
- labels = g_list_append (labels, iso_speed_labels[i]);
- }
- return labels;
-}
-
-GList *
-create_ev_comp_labels (void)
-{
- GList *labels = NULL;
- gdouble comp;
- char buf[G_ASCII_DTOSTR_BUF_SIZE];
-
- for (comp = EV_COMP_MIN; comp <= EV_COMP_MAX; comp += EV_COMP_STEP) {
- g_ascii_dtostr (buf, sizeof (buf), comp);
- labels = g_list_append (labels, g_strdup (buf));
- }
- return labels;
-}
-
-static void
-fill_photography_menu (GtkMenuItem * parent_item)
-{
- GtkWidget *photo_menu = gtk_menu_new ();
- GtkMenuItem *item = NULL;
- GList *labels = NULL;
-
- /* Add menu items and create and associate submenus to each item */
- item = add_menuitem (GTK_MENU (photo_menu), "AWB");
- photo_add_submenu_from_enum (item, GST_TYPE_WHITE_BALANCE_MODE);
-
- item = add_menuitem (GTK_MENU (photo_menu), "Colour Tone");
- photo_add_submenu_from_enum (item, GST_TYPE_COLOUR_TONE_MODE);
-
- item = add_menuitem (GTK_MENU (photo_menu), "Scene");
- photo_add_submenu_from_enum (item, GST_TYPE_SCENE_MODE);
-
- item = add_menuitem (GTK_MENU (photo_menu), "Flash");
- photo_add_submenu_from_enum (item, GST_TYPE_FLASH_MODE);
-
- item = add_menuitem (GTK_MENU (photo_menu), "ISO");
- labels = create_iso_speed_labels ();
- add_submenu_from_list (item, labels, (GCallback) photo_iso_speed_toggled_cb);
- g_list_free (labels);
-
- item = add_menuitem (GTK_MENU (photo_menu), "EV comp");
- labels = create_ev_comp_labels ();
- add_submenu_from_list (item, labels, (GCallback) photo_ev_comp_toggled_cb);
- g_list_free (labels);
-
- gtk_menu_item_set_submenu (parent_item, photo_menu);
-}
-
-void
-capture_image_res_toggled_cb (GtkRadioMenuItem * menuitem, gpointer user_data)
-{
- gboolean active;
- const gchar *label;
- gint i;
-
- g_object_get (G_OBJECT (menuitem), "active", &active, NULL);
- if (active) {
- label = gtk_widget_get_name (GTK_WIDGET (menuitem));
- /* Look for width and height corresponding to the label */
- for (i = 0; i < G_N_ELEMENTS (image_resolution_label_map); i++) {
- if (g_str_equal (label, image_resolution_label_map[i].label)) {
- /* set found values */
- g_signal_emit_by_name (gst_camera_bin, "set-image-resolution",
- image_resolution_label_map[i].width,
- image_resolution_label_map[i].height, 0);
- break;
- }
- }
- }
-}
-
-GList *
-create_image_resolution_labels (void)
-{
- GList *labels = NULL;
- int i;
- for (i = 0; i < G_N_ELEMENTS (image_resolution_label_map); i++) {
- labels = g_list_append (labels, image_resolution_label_map[i].label);
- }
- return labels;
-}
-
-static void
-fill_capture_menu (GtkMenuItem * parent_item)
-{
- GtkWidget *capture_menu = gtk_menu_new ();
- GtkMenuItem *item = NULL;
- GList *labels = NULL;
-
- /* Add menu items and create and associate submenus to each item */
- item = add_menuitem (GTK_MENU (capture_menu), "Image resolution");
-
- labels = create_image_resolution_labels ();
- add_submenu_from_list (item, labels,
- (GCallback) capture_image_res_toggled_cb);
- g_list_free (labels);
-
- gtk_menu_item_set_submenu (parent_item, capture_menu);
-}
-#endif /* HAVE_GST_PHOTO_IFACE_H */
-
-static gboolean
-ui_create (void)
-{
- GError *error = NULL;
-
- builder = gtk_builder_new ();
- if (!gtk_builder_add_from_file (builder, UI_FILE, &error)) {
- g_warning ("Couldn't load builder file: %s", error->message);
- g_error_free (error);
- goto done;
- }
-
- ui_main_window = GTK_WIDGET (gtk_builder_get_object (builder, "windowMain"));
- ui_drawing = GTK_WIDGET (gtk_builder_get_object (builder, "drawingareaView"));
- ui_drawing_frame =
- GTK_WIDGET (gtk_builder_get_object (builder, "drawingareaFrame"));
- ui_chk_continous =
- GTK_WIDGET (gtk_builder_get_object (builder, "chkbntContinous"));
- ui_chk_rawmsg = GTK_WIDGET (gtk_builder_get_object (builder, "chkbtnRawMsg"));
- ui_bnt_shot = GTK_BUTTON (gtk_builder_get_object (builder, "buttonShot"));
- ui_bnt_pause = GTK_BUTTON (gtk_builder_get_object (builder, "buttonPause"));
- ui_cbbox_resolution =
- GTK_COMBO_BOX (gtk_builder_get_object (builder, "comboboxResolution"));
- ui_chk_mute = GTK_WIDGET (gtk_builder_get_object (builder, "chkbntMute"));
- ui_vbox_color_controls =
- GTK_WIDGET (gtk_builder_get_object (builder, "vboxColorControls"));
- ui_rdbntImageCapture =
- GTK_WIDGET (gtk_builder_get_object (builder, "radiobuttonImageCapture"));
- ui_rdbntVideoCapture =
- GTK_WIDGET (gtk_builder_get_object (builder, "radiobuttonVideoCapture"));
- ui_menuitem_photography =
- GTK_WIDGET (gtk_builder_get_object (builder, "menuitemPhotography"));
- ui_menuitem_capture =
- GTK_WIDGET (gtk_builder_get_object (builder, "menuitemCapture"));
-
-#ifdef HAVE_GST_PHOTO_IFACE_H
- if (ui_menuitem_photography) {
- fill_photography_menu (GTK_MENU_ITEM (ui_menuitem_photography));
- }
-
- if (ui_menuitem_capture) {
- fill_capture_menu (GTK_MENU_ITEM (ui_menuitem_capture));
- }
-#endif
- if (!(ui_main_window && ui_drawing && ui_chk_continous && ui_bnt_shot &&
- ui_bnt_pause && ui_cbbox_resolution && ui_chk_mute &&
- ui_vbox_color_controls && ui_rdbntImageCapture &&
- ui_rdbntVideoCapture && ui_chk_rawmsg && ui_menuitem_photography &&
- ui_menuitem_capture)) {
- fprintf (stderr, "Some widgets couldn't be created\n");
- fflush (stderr);
- goto done;
- }
-
- gtk_widget_set_double_buffered (ui_drawing, FALSE);
- ui_connect_signals ();
- gtk_widget_show_all (ui_main_window);
- capture_mode_config_gui ();
- return TRUE;
-done:
- return FALSE;
-}
-
-/*
- * main
- */
-
-int
-main (int argc, char *argv[])
-{
- int ret = 0;
-
- gst_init (&argc, &argv);
- gtk_init (&argc, &argv);
-
- filename = g_string_new_len ("", 16);
-
- /* create UI */
- if (!ui_create ()) {
- ret = -1;
- goto done;
- }
- /* create pipeline and run */
- g_idle_add (me_gst_setup_default_pipeline, NULL);
- gtk_main ();
-
-done:
- me_gst_cleanup_element ();
- g_string_free (filename, TRUE);
- return ret;
-}
diff --git a/tests/examples/camerabin/gst-camera.h b/tests/examples/camerabin/gst-camera.h
deleted file mode 100644
index f1d88446..00000000
--- a/tests/examples/camerabin/gst-camera.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008 Nokia Corporation <multimedia@maemo.org>
- *
- * 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.
- */
-/*
- * This is a demo application to test the camerabin element.
- * If you have question don't hesitate in contact me edgard.lima@indt.org.br
- */
-
-#ifndef __GST_CAMERA_BIN_H__
-#define __GST_CAMERA_BIN_H__
-
-#include <gtk/gtk.h>
-
-void
-on_windowMain_delete_event (GtkWidget * widget, GdkEvent * event, gpointer data);
-
-void
-on_buttonShot_clicked (GtkButton * button, gpointer user_data);
-
-void
-on_buttonPause_clicked (GtkButton * button, gpointer user_data);
-
-void
-on_drawingareaView_realize (GtkWidget * widget, gpointer data);
-
-gboolean
-on_drawingareaView_configure_event (GtkWidget * widget,
- GdkEventConfigure * event, gpointer data);
-
-void
-on_comboboxResolution_changed (GtkComboBox * widget, gpointer user_data);
-
-void
-on_radiobuttonImageCapture_toggled (GtkToggleButton * togglebutton,
- gpointer user_data);
-
-void
-on_radiobuttonVideoCapture_toggled (GtkToggleButton * togglebutton,
- gpointer user_data);
-
-void
-on_rbBntVidEffNone_toggled (GtkToggleButton * togglebutton, gpointer data);
-
-void
-on_rbBntVidEffEdge_toggled (GtkToggleButton * togglebutton, gpointer data);
-
-void
-on_rbBntVidEffAging_toggled (GtkToggleButton * togglebutton, gpointer user_data);
-
-void
-on_rbBntVidEffDice_toggled (GtkToggleButton * togglebutton, gpointer user_data);
-
-void
-on_rbBntVidEffWarp_toggled (GtkToggleButton * togglebutton, gpointer data);
-
-void
-on_rbBntVidEffShagadelic_toggled (GtkToggleButton * togglebutton, gpointer data);
-
-void
-on_rbBntVidEffVertigo_toggled (GtkToggleButton * togglebutton, gpointer data);
-
-void
-on_rbBntVidEffRev_toggled (GtkToggleButton * togglebutton, gpointer data);
-
-void
-on_rbBntVidEffQuark_toggled (GtkToggleButton * togglebutton, gpointer data);
-
-void
-on_chkbntMute_toggled (GtkToggleButton * togglebutton, gpointer data);
-
-void
-on_chkbtnRawMsg_toggled (GtkToggleButton * togglebutton, gpointer data);
-
-void
-on_hscaleZoom_value_changed (GtkRange * range, gpointer user_data);
-
-void
-on_color_control_value_changed (GtkRange * range, gpointer user_data);
-
-gboolean
-on_key_released (GtkWidget * widget, GdkEventKey * event, gpointer user_data);
-
-gboolean
-on_key_pressed (GtkWidget * widget, GdkEventKey * event, gpointer user_data);
-
-#endif /* __GST_CAMERA_BIN_H__ */
diff --git a/tests/examples/camerabin/gst-camera.ui b/tests/examples/camerabin/gst-camera.ui
deleted file mode 100644
index 1dcf33cb..00000000
--- a/tests/examples/camerabin/gst-camera.ui
+++ /dev/null
@@ -1,424 +0,0 @@
-<?xml version="1.0"?>
-<interface>
- <requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy project-wide -->
- <object class="GtkWindow" id="windowMain">
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="title" translatable="yes">gst-camera</property>
- <signal name="delete_event" handler="on_windowMain_delete_event"/>
- <child>
- <object class="GtkVBox" id="vboxMain">
- <property name="visible">True</property>
- <child>
- <object class="GtkHBox" id="hbox2">
- <property name="visible">True</property>
- <child>
- <object class="GtkMenuBar" id="menubar1">
- <property name="visible">True</property>
- <child>
- <object class="GtkMenuItem" id="menuitemPhotography">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Photography</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="menu1">
- <property name="visible">True</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="menuitemCapture">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Capture</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="comboboxResolution">
- <property name="visible">True</property>
- <property name="model">liststore1</property>
- <signal name="changed" handler="on_comboboxResolution_changed"/>
- <child>
- <object class="GtkCellRendererText" id="cellrenderertext1"/>
- <attributes>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hboxMode">
- <property name="visible">True</property>
- <child>
- <object class="GtkRadioButton" id="radiobuttonImageCapture">
- <property name="label" translatable="yes">Image capture</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_radiobuttonImageCapture_toggled"/>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="radiobuttonVideoCapture">
- <property name="label" translatable="yes">Video rec</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">radiobuttonImageCapture</property>
- <signal name="toggled" handler="on_radiobuttonVideoCapture_toggled"/>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="buttonShot">
- <property name="label" translatable="yes">Shot</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <signal name="clicked" handler="on_buttonShot_clicked"/>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="buttonPause">
- <property name="label" translatable="yes">Pause</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <signal name="clicked" handler="on_buttonPause_clicked"/>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="chkbntMute">
- <property name="label" translatable="yes">mute</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_chkbntMute_toggled"/>
- </object>
- <packing>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="chkbntContinous">
- <property name="label" translatable="yes">continous</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="position">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="chkbtnRawMsg">
- <property name="label" translatable="yes">raw msg</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Send raw image after still image capture as gstreamer message</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_chkbtnRawMsg_toggled"/>
- </object>
- <packing>
- <property name="position">6</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkTable" id="tableOptions">
- <property name="visible">True</property>
- <property name="n_columns">3</property>
- <child>
- <object class="GtkVBox" id="vboxVidEffect">
- <property name="visible">True</property>
- <child>
- <object class="GtkLabel" id="labelVidEff">
- <property name="visible">True</property>
- <property name="label" translatable="yes">video effects:</property>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="rbBntVidEffNone">
- <property name="label" translatable="yes">none</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_rbBntVidEffNone_toggled"/>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="rbBntVidEffEdge">
- <property name="label" translatable="yes">edged</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">rbBntVidEffNone</property>
- <signal name="toggled" handler="on_rbBntVidEffEdge_toggled"/>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="rbBntVidEffAging">
- <property name="label" translatable="yes">aging</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">rbBntVidEffNone</property>
- <signal name="toggled" handler="on_rbBntVidEffAging_toggled"/>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="rbBntVidEffDice">
- <property name="label" translatable="yes">dice</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">rbBntVidEffNone</property>
- <signal name="toggled" handler="on_rbBntVidEffDice_toggled"/>
- </object>
- <packing>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="rbBntVidEffWarp">
- <property name="label" translatable="yes">warp</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">rbBntVidEffNone</property>
- <signal name="toggled" handler="on_rbBntVidEffWarp_toggled"/>
- </object>
- <packing>
- <property name="position">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="rbBntVidEffShaga">
- <property name="label" translatable="yes">shagadelic</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">rbBntVidEffNone</property>
- <signal name="toggled" handler="on_rbBntVidEffShagadelic_toggled"/>
- </object>
- <packing>
- <property name="position">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="rbBntVidEffVertigo">
- <property name="label" translatable="yes">vertigo</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">rbBntVidEffNone</property>
- <signal name="toggled" handler="on_rbBntVidEffVertigo_toggled"/>
- </object>
- <packing>
- <property name="position">7</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="rbBntVidEffRev">
- <property name="label" translatable="yes">rev</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">rbBntVidEffNone</property>
- <signal name="toggled" handler="on_rbBntVidEffRev_toggled"/>
- </object>
- <packing>
- <property name="position">8</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="rbBntVidEffQuark">
- <property name="label" translatable="yes">quark</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">rbBntVidEffNone</property>
- <signal name="toggled" handler="on_rbBntVidEffQuark_toggled"/>
- </object>
- <packing>
- <property name="position">9</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="x_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrlWndColorControls">
- <property name="width_request">200</property>
- <property name="height_request">200</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
- <child>
- <object class="GtkViewport" id="viewportColorControls">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <child>
- <object class="GtkVBox" id="vboxColorControls">
- <property name="visible">True</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="x_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkAspectFrame" id="drawingareaFrame">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">none</property>
- <property name="obey_child">False</property>
- <child>
- <object class="GtkAlignment" id="alignment1">
- <property name="visible">True</property>
- <child>
- <object class="GtkDrawingArea" id="drawingareaView">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <signal name="configure_event" handler="on_drawingareaView_configure_event"/>
- <signal name="realize" handler="on_drawingareaView_realize"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkHScale" id="hscaleZoom">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">adjustment1</property>
- <property name="digits">0</property>
- <property name="value_pos">left</property>
- <signal name="value_changed" handler="on_hscaleZoom_value_changed"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <object class="GtkAdjustment" id="adjustment1">
- <property name="lower">100</property>
- <property name="upper">1100</property>
- <property name="value">100</property>
- <property name="step_increment">10</property>
- <property name="page_increment">100</property>
- <property name="page_size">100</property>
- </object>
- <object class="GtkListStore" id="liststore1">
- <columns>
- <!-- column-name item text -->
- <column type="gchararray"/>
- </columns>
- </object>
-</interface>
diff --git a/tests/examples/camerabin/gst-camerabin-test.c b/tests/examples/camerabin/gst-camerabin-test.c
deleted file mode 100644
index 023542de..00000000
--- a/tests/examples/camerabin/gst-camerabin-test.c
+++ /dev/null
@@ -1,845 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2010 Nokia Corporation <multimedia@maemo.org>
- *
- * 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.
- */
-
- /*
- Examples:
- ./gst-camerabin-test --image-width=2048 --image-height=1536 --image-enc=dspjpegenc
- ./gst-camerabin-test --mode=1 --capture-time=10 --image-width=848 --image-height=480 --view-framerate-num=2825 \
- --view-framerate-den=100 --audio-src=pulsesrc --audio-enc=nokiaaacenc --video-enc=dspmp4venc \
- --video-mux=mp4mux --src-colorspace=UYVY
-
- gst-camerabin-test --help
- Usage:
- gst-camerabin-test [OPTION...]
-
- camerabin command line test application.
-
- Help Options:
- -h, --help Show help options
- --help-all Show all help options
- --help-gst Show GStreamer Options
-
- Application Options:
- --ev-compensation EV compensation (-2.5..2.5, default = 0)
- --aperture Aperture (size of lens opening, default = 0 (auto))
- --flash-mode Flash mode (default = 0 (auto))
- --scene-mode Scene mode (default = 6 (auto))
- --exposure Exposure (default = 0 (auto))
- --iso-speed ISO speed (default = 0 (auto))
- --white-balance-mode White balance mode (default = 0 (auto))
- --colour-tone-mode Colour tone mode (default = 0 (auto))
- --directory Directory for capture file(s) (default is current directory)
- --mode Capture mode (default = 0 (image), 1 = video)
- --capture-time Time to capture video in seconds (default = 10)
- --capture-total Total number of captures to be done (default = 1)
- --flags Flags for camerabin, (default = 0x9)
- --mute Mute audio
- --zoom Zoom (100 = 1x (default), 200 = 2x etc.)
- --audio-src Audio source used in video recording
- --audio-bitrate Audio bitrate (default 128000)
- --audio-samplerate Audio samplerate (default 48000)
- --audio-channels Audio channels (default 1)
- --video-src Video source used in still capture and video recording
- --audio-enc Audio encoder used in video recording
- --video-enc Video encoder used in video recording
- --image-enc Image encoder used in still capture
- --image-pp Image post-processing element
- --image-formatter Image metadata formatter element
- --video-mux Muxer used in video recording
- --viewfinder-sink Viewfinder sink (default = fakesink)
- --image-width Width for image capture
- --image-height Height for image capture
- --view-framerate-num Framerate numerator for viewfinder
- --view-framerate-den Framerate denominator for viewfinder
- --src-colorspace Colorspace format for video source (e.g. YUY2, UYVY)
- --src-format Video format for video source
- --preview-caps Preview caps (e.g. video/x-raw-rgb,width=320,height=240)
- --video-source-filter Video filter to process all frames from video source
- --viewfinder-filter Filter to process all frames going to viewfinder sink
- --x-width X window width (default = 320)
- --x-height X window height (default = 240)
- --no-xwindow Do not create XWindow
-
- */
-
-/*
- * Includes
- */
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#define GST_USE_UNSTABLE_API 1
-
-#include <gst/gst.h>
-#include <gst/video/videooverlay.h>
-#include <gst/interfaces/photography.h>
-#include <string.h>
-#include <sys/time.h>
-#include <time.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-/*
- * debug logging
- */
-GST_DEBUG_CATEGORY_STATIC (camerabin_test);
-#define GST_CAT_DEFAULT camerabin_test
-typedef struct _ResultType
-{
- GstClockTime avg;
- GstClockTime min;
- GstClockTime max;
- guint32 times;
-} ResultType;
-
-/*
- * Global vars
- */
-static GstElement *camera_bin = NULL;
-static GMainLoop *loop = NULL;
-
-/* commandline options */
-static gchar *audiosrc_name = NULL;
-static gchar *videosrc_name = NULL;
-static gchar *audioenc_name = NULL;
-static gchar *videoenc_name = NULL;
-static gchar *imageenc_name = NULL;
-static gchar *imagepp_name = NULL;
-static gchar *imageformatter_name = NULL;
-static gchar *videomux_name = NULL;
-static gchar *vfsink_name = NULL;
-static gchar *src_csp = NULL;
-static gchar *src_format = NULL;
-static gint image_width = 1280;
-static gint image_height = 720;
-static gint view_framerate_num = 2825;
-static gint view_framerate_den = 100;
-static gboolean no_xwindow = FALSE;
-
-static gint mode = 1;
-static gint flags = 0x4f;
-static gboolean mute = FALSE;
-static gint zoom = 100;
-
-static gint capture_time = 10;
-static gint capture_count = 0;
-static gint capture_total = 1;
-
-/* photography interface command line options */
-#define EV_COMPENSATION_NONE -G_MAXFLOAT
-#define APERTURE_NONE -G_MAXINT
-#define FLASH_MODE_NONE -G_MAXINT
-#define SCENE_MODE_NONE -G_MAXINT
-#define EXPOSURE_NONE -G_MAXINT64
-#define ISO_SPEED_NONE -G_MAXINT
-#define WHITE_BALANCE_MODE_NONE -G_MAXINT
-#define COLOR_TONE_MODE_NONE -G_MAXINT
-static gfloat ev_compensation = EV_COMPENSATION_NONE;
-static gint aperture = APERTURE_NONE;
-static gint flash_mode = FLASH_MODE_NONE;
-static gint scene_mode = SCENE_MODE_NONE;
-static gint64 exposure = EXPOSURE_NONE;
-static gint iso_speed = ISO_SPEED_NONE;
-static gint wb_mode = WHITE_BALANCE_MODE_NONE;
-static gint color_mode = COLOR_TONE_MODE_NONE;
-
-/* audio capsfilter options */
-static gint audio_bitrate = 128000;
-static gint audio_samplerate = 48000;
-static gint audio_channels = 1;
-
-static gchar *video_src_filter = NULL;
-static gchar *viewfinder_filter = NULL;
-
-static int x_width = 320;
-static int x_height = 240;
-
-/* test configuration for common callbacks */
-static GString *filename = NULL;
-
-static gchar *preview_caps_name = NULL;
-
-/* X window variables */
-static Display *display = NULL;
-static Window window = 0;
-
-GTimer *timer = NULL;
-
-/*
- * Prototypes
- */
-static gboolean run_pipeline (gpointer user_data);
-static void set_metadata (GstElement * camera);
-
-static void
-create_host_window (void)
-{
- unsigned long valuemask;
- XSetWindowAttributes attributes;
-
- display = XOpenDisplay (NULL);
- if (display) {
- window =
- XCreateSimpleWindow (display, DefaultRootWindow (display), 0, 0,
- x_width, x_height, 0, 0, 0);
- if (window) {
- valuemask = CWOverrideRedirect;
- attributes.override_redirect = True;
- XChangeWindowAttributes (display, window, valuemask, &attributes);
- XSetWindowBackgroundPixmap (display, window, None);
- XMapRaised (display, window);
- XSync (display, FALSE);
- } else {
- GST_DEBUG ("could not create X window!");
- }
- } else {
- GST_DEBUG ("could not open display!");
- }
-}
-
-static gboolean
-img_capture_done (GstElement * camera, const gchar * fname, gpointer user_data)
-{
- gboolean ret = FALSE;
-
- GST_DEBUG ("image done: %s", fname);
- if (capture_count < capture_total) {
- g_idle_add ((GSourceFunc) run_pipeline, NULL);
- } else {
- g_main_loop_quit (loop);
- }
- return ret;
-}
-
-static GstBusSyncReply
-sync_bus_callback (GstBus * bus, GstMessage * message, gpointer data)
-{
- const GstStructure *st;
- const GValue *image;
- GstBuffer *buf = NULL;
- gchar *preview_filename = NULL;
- FILE *f = NULL;
- size_t written;
-
- switch (GST_MESSAGE_TYPE (message)) {
- case GST_MESSAGE_ELEMENT:{
- st = gst_message_get_structure (message);
- if (st) {
- if (gst_structure_has_name (st, "prepare-xwindow-id")) {
- if (!no_xwindow && window) {
- gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY
- (GST_MESSAGE_SRC (message)), window);
- gst_message_unref (message);
- message = NULL;
- return GST_BUS_DROP;
- }
- } else if (gst_structure_has_name (st, "image-captured")) {
- GST_DEBUG ("image-captured");
- } else if (gst_structure_has_name (st, "preview-image")) {
- GST_DEBUG ("preview-image");
- //extract preview-image from msg
- image = gst_structure_get_value (st, "buffer");
- if (image) {
- GstMapInfo map;
-
- buf = gst_value_get_buffer (image);
- gst_buffer_map (buf, &map, GST_MAP_READ);
- preview_filename = g_strdup_printf ("test_vga.rgb");
- g_print ("writing buffer to %s, elapsed: %.2fs\n",
- preview_filename, g_timer_elapsed (timer, NULL));
- f = g_fopen (preview_filename, "w");
- if (f) {
- written = fwrite (map.data, map.size, 1, f);
- if (!written) {
- g_print ("error writing file\n");
- }
- fclose (f);
- } else {
- g_print ("error opening file for raw image writing\n");
- }
- g_free (preview_filename);
- gst_buffer_unmap (buf, &map);
- }
- }
- }
- break;
- }
- default:
- /* unhandled message */
- break;
- }
- return GST_BUS_PASS;
-}
-
-static gboolean
-bus_callback (GstBus * bus, GstMessage * message, gpointer data)
-{
- switch (GST_MESSAGE_TYPE (message)) {
- case GST_MESSAGE_ERROR:{
- GError *err;
- gchar *debug;
-
- gst_message_parse_error (message, &err, &debug);
- g_print ("Error: %s\n", err->message);
- g_error_free (err);
- g_free (debug);
-
- /* Write debug graph to file */
- GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS (GST_BIN (camera_bin),
- GST_DEBUG_GRAPH_SHOW_ALL, "camerabin.error");
-
- g_main_loop_quit (loop);
- break;
- }
- case GST_MESSAGE_STATE_CHANGED:
- if (GST_IS_BIN (GST_MESSAGE_SRC (message))) {
- GstState oldstate, newstate;
-
- gst_message_parse_state_changed (message, &oldstate, &newstate, NULL);
- GST_DEBUG_OBJECT (GST_MESSAGE_SRC (message), "state-changed: %s -> %s",
- gst_element_state_get_name (oldstate),
- gst_element_state_get_name (newstate));
- }
- break;
- case GST_MESSAGE_EOS:
- /* end-of-stream */
- GST_INFO ("got eos() - should not happen");
- g_main_loop_quit (loop);
- break;
- default:
- /* unhandled message */
- break;
- }
- return TRUE;
-}
-
-/*
- * Helpers
- */
-
-static void
-cleanup_pipeline (void)
-{
- if (camera_bin) {
- GST_INFO_OBJECT (camera_bin, "stopping and destroying");
- gst_element_set_state (camera_bin, GST_STATE_NULL);
- gst_object_unref (camera_bin);
- camera_bin = NULL;
- }
-}
-
-static gboolean
-setup_pipeline_element (const gchar * property_name, const gchar * element_name,
- GstElement ** res_elem)
-{
- gboolean res = TRUE;
- GstElement *elem = NULL;
-
- if (element_name) {
- elem = gst_element_factory_make (element_name, NULL);
- if (elem) {
- g_object_set (camera_bin, property_name, elem, NULL);
- } else {
- GST_WARNING ("can't create element '%s' for property '%s'", element_name,
- property_name);
- res = FALSE;
- }
- } else {
- GST_DEBUG ("no element for property '%s' given", property_name);
- }
- if (res_elem)
- *res_elem = elem;
- return res;
-}
-
-static GstElement *
-create_audioencoder_bin (void)
-{
- GstElement *bin, *aenc, *filter;
- GstPad *pad;
- GstCaps *audio_caps;
-
- bin = gst_bin_new ("aebin");
- filter = gst_element_factory_make ("capsfilter", "aefilter");
- aenc = gst_element_factory_make (audioenc_name, "aenc");
-
- if (!g_ascii_strcasecmp (audioenc_name, "pulsesrc")) {
- g_object_set (G_OBJECT (aenc),
- "bitrate", audio_bitrate, "profile", 2, NULL);
- }
-
- audio_caps = gst_caps_new_simple ("audio/x-raw-int",
- "channels", G_TYPE_INT, audio_channels,
- "rate", G_TYPE_INT, audio_samplerate, NULL);
-
- if (!audio_caps) {
- g_warning ("error generating caps");
- }
-
- g_object_set (G_OBJECT (filter), "caps", audio_caps, NULL);
-
- gst_caps_unref (audio_caps);
-
- gst_bin_add_many (GST_BIN (bin), filter, aenc, NULL);
- gst_element_link (filter, aenc);
-
- pad = gst_element_get_static_pad (filter, "sink");
- gst_element_add_pad (bin, gst_ghost_pad_new ("sink", pad));
- gst_object_unref (GST_OBJECT (pad));
-
- pad = gst_element_get_static_pad (aenc, "src");
- gst_element_add_pad (bin, gst_ghost_pad_new ("src", pad));
- gst_object_unref (GST_OBJECT (pad));
-
- return bin;
-}
-
-static GstElement *
-create_ipp_bin (void)
-{
- GstElement *bin = NULL, *element = NULL;
- GstPad *pad = NULL;
- gchar **elements;
- GList *element_list = NULL, *current = NULL, *next = NULL;
- int i;
-
- bin = gst_bin_new ("ippbin");
-
- elements = g_strsplit (imagepp_name, ",", 0);
-
- for (i = 0; elements[i] != NULL; i++) {
- element = gst_element_factory_make (elements[i], NULL);
- if (element) {
- element_list = g_list_append (element_list, element);
- gst_bin_add (GST_BIN (bin), element);
- } else
- GST_WARNING ("Could create element %s for ippbin", elements[i]);
- }
-
- for (i = 1; i < g_list_length (element_list); i++) {
- current = g_list_nth (element_list, i - 1);
- next = g_list_nth (element_list, i);
- gst_element_link (current->data, next->data);
- }
-
- current = g_list_first (element_list);
- pad = gst_element_get_static_pad (current->data, "sink");
- gst_element_add_pad (bin, gst_ghost_pad_new ("sink", pad));
- gst_object_unref (GST_OBJECT (pad));
-
- current = g_list_last (element_list);
- pad = gst_element_get_static_pad (current->data, "src");
- gst_element_add_pad (bin, gst_ghost_pad_new ("src", pad));
- gst_object_unref (GST_OBJECT (pad));
-
- g_list_free (element_list);
- g_strfreev (elements);
-
- return bin;
-}
-
-static gboolean
-setup_pipeline (void)
-{
- GstBus *bus;
- gboolean res = TRUE;
- GstElement *vmux = NULL, *ienc = NULL, *sink = NULL, *aenc = NULL, *ipp =
- NULL;
- GstCaps *filter_caps = NULL;
-
- camera_bin = gst_element_factory_make ("camerabin", NULL);
- if (NULL == camera_bin) {
- g_warning ("can't create camerabin element\n");
- goto error;
- }
- g_object_set (camera_bin, "flags", flags, NULL);
-
- g_signal_connect (camera_bin, "image-done", (GCallback) img_capture_done,
- NULL);
-
- bus = gst_pipeline_get_bus (GST_PIPELINE (camera_bin));
- /* Add sync handler for time critical messages that need to be handled fast */
- gst_bus_set_sync_handler (bus, sync_bus_callback, NULL);
- /* Handle normal messages asynchronously */
- gst_bus_add_watch (bus, bus_callback, NULL);
- gst_object_unref (bus);
-
- GST_INFO_OBJECT (camera_bin, "camerabin created");
-
- /* configure used elements */
- res &= setup_pipeline_element ("viewfinder-sink", vfsink_name, &sink);
- res &= setup_pipeline_element ("audio-source", audiosrc_name, NULL);
- res &= setup_pipeline_element ("video-source", videosrc_name, NULL);
- res &= setup_pipeline_element ("video-source-filter", video_src_filter, NULL);
- res &= setup_pipeline_element ("viewfinder-filter", viewfinder_filter, NULL);
-
- if (audioenc_name) {
- aenc = create_audioencoder_bin ();
- if (aenc)
- g_object_set (camera_bin, "audio-encoder", aenc, NULL);
- else
- GST_WARNING ("Could not make audio encoder element");
- }
-
- if (imagepp_name) {
- ipp = create_ipp_bin ();
- if (ipp)
- g_object_set (camera_bin, "image-post-processing", ipp, NULL);
- else
- GST_WARNING ("Could not create ipp elements");
- }
-
- res &= setup_pipeline_element ("video-encoder", videoenc_name, NULL);
- res &= setup_pipeline_element ("image-encoder", imageenc_name, &ienc);
- res &= setup_pipeline_element ("image-formatter", imageformatter_name, NULL);
- res &= setup_pipeline_element ("video-muxer", videomux_name, &vmux);
- if (!res) {
- goto error;
- }
- GST_INFO_OBJECT (camera_bin, "elements created");
-
- /* set properties */
- if (src_format) {
- filter_caps = gst_caps_from_string (src_format);
- } else if (src_csp) {
- /* Set requested colorspace format, this is needed if the default
- colorspace negotiated for viewfinder doesn't match with e.g. encoders. */
- filter_caps = gst_caps_new_simple ("video/x-raw",
- "format", G_TYPE_STRING, src_csp, NULL);
- }
-
- if (filter_caps) {
- g_object_set (camera_bin, "filter-caps", filter_caps, NULL);
- gst_caps_unref (filter_caps);
- }
-
- g_object_set (sink, "sync", TRUE, NULL);
-
- GST_INFO_OBJECT (camera_bin, "elements configured");
-
- /* configure a resolution and framerate */
- if (mode == 1) {
- g_signal_emit_by_name (camera_bin, "set-video-resolution-fps", image_width,
- image_height, view_framerate_num, view_framerate_den, NULL);
- } else {
- g_signal_emit_by_name (camera_bin, "set-image-resolution", image_width,
- image_height, NULL);
- }
-
- if (GST_STATE_CHANGE_FAILURE ==
- gst_element_set_state (camera_bin, GST_STATE_READY)) {
- g_warning ("can't set camerabin to ready\n");
- goto error;
- }
- GST_INFO_OBJECT (camera_bin, "camera ready");
-
- if (GST_STATE_CHANGE_FAILURE ==
- gst_element_set_state (camera_bin, GST_STATE_PLAYING)) {
- g_warning ("can't set camerabin to playing\n");
- goto error;
- }
-
- GST_INFO_OBJECT (camera_bin, "camera started");
- return TRUE;
-error:
- cleanup_pipeline ();
- return FALSE;
-}
-
-static gboolean
-stop_capture (gpointer user_data)
-{
- g_signal_emit_by_name (camera_bin, "capture-stop", 0);
- if (capture_count < capture_total) {
- g_idle_add ((GSourceFunc) run_pipeline, NULL);
- } else {
- g_main_loop_quit (loop);
- }
- return FALSE;
-}
-
-static void
-set_metadata (GstElement * camera)
-{
- GstTagSetter *setter = GST_TAG_SETTER (camera);
- GTimeVal time = { 0, 0 };
- gchar *desc_str;
- GDate *date = g_date_new ();
-
- g_get_current_time (&time);
- g_date_set_time_val (date, &time);
-
- desc_str = g_strdup_printf ("captured by %s", g_get_real_name ());
-
- gst_tag_setter_add_tags (setter, GST_TAG_MERGE_REPLACE,
- GST_TAG_DATE, date,
- GST_TAG_DESCRIPTION, desc_str,
- GST_TAG_TITLE, "gst-camerabin-test capture",
- GST_TAG_GEO_LOCATION_LONGITUDE, 1.0,
- GST_TAG_GEO_LOCATION_LATITUDE, 2.0,
- GST_TAG_GEO_LOCATION_ELEVATION, 3.0,
- GST_TAG_DEVICE_MANUFACTURER, "gst-camerabin-test manufacturer",
- GST_TAG_DEVICE_MODEL, "gst-camerabin-test model", NULL);
-
- g_free (desc_str);
- g_date_free (date);
-}
-
-static gboolean
-run_pipeline (gpointer user_data)
-{
- GstCaps *preview_caps = NULL;
- gchar *filename_str = NULL;
- GstElement *video_source = NULL;
- const gchar *filename_suffix;
-
- g_object_set (camera_bin, "mode", mode, NULL);
-
- if (preview_caps_name != NULL) {
- preview_caps = gst_caps_from_string (preview_caps_name);
- if (preview_caps) {
- g_object_set (camera_bin, "preview-caps", preview_caps, NULL);
- GST_DEBUG ("Preview caps set");
- } else
- GST_DEBUG ("Preview caps set but could not create caps from string");
- }
-
- set_metadata (camera_bin);
-
- /* Construct filename */
- if (mode == 1)
- filename_suffix = ".mp4";
- else
- filename_suffix = ".jpg";
- filename_str =
- g_strdup_printf ("%s/test_%04u%s", filename->str, capture_count,
- filename_suffix);
- GST_DEBUG ("Setting filename: %s", filename_str);
- g_object_set (camera_bin, "filename", filename_str, NULL);
- g_free (filename_str);
-
- g_object_get (camera_bin, "video-source", &video_source, NULL);
- if (video_source) {
- if (GST_IS_ELEMENT (video_source) && GST_IS_PHOTOGRAPHY (video_source)) {
- /* Set GstPhotography interface options. If option not given as
- command-line parameter use default of the source element. */
- if (scene_mode != SCENE_MODE_NONE)
- g_object_set (video_source, "scene-mode", scene_mode, NULL);
- if (ev_compensation != EV_COMPENSATION_NONE)
- g_object_set (video_source, "ev-compensation", ev_compensation, NULL);
- if (aperture != APERTURE_NONE)
- g_object_set (video_source, "aperture", aperture, NULL);
- if (flash_mode != FLASH_MODE_NONE)
- g_object_set (video_source, "flash-mode", flash_mode, NULL);
- if (exposure != EXPOSURE_NONE)
- g_object_set (video_source, "exposure", exposure, NULL);
- if (iso_speed != ISO_SPEED_NONE)
- g_object_set (video_source, "iso-speed", iso_speed, NULL);
- if (wb_mode != WHITE_BALANCE_MODE_NONE)
- g_object_set (video_source, "white-balance-mode", wb_mode, NULL);
- if (color_mode != COLOR_TONE_MODE_NONE)
- g_object_set (video_source, "colour-tone-mode", color_mode, NULL);
- }
- g_object_unref (video_source);
- }
- g_object_set (camera_bin, "mute", mute, NULL);
- g_object_set (camera_bin, "zoom", zoom / 100.0f, NULL);
-
- capture_count++;
- g_timer_start (timer);
- g_signal_emit_by_name (camera_bin, "capture-start", 0);
-
-
- if (mode == 1) {
- g_timeout_add ((capture_time * 1000), (GSourceFunc) stop_capture, NULL);
- }
-
- return FALSE;
-}
-
-int
-main (int argc, char *argv[])
-{
- gchar *target_times = NULL;
- gchar *ev_option = NULL;
- gchar *fn_option = NULL;
-
- GOptionEntry options[] = {
- {"ev-compensation", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_STRING,
- &ev_option,
- "EV compensation for source element GstPhotography interface", NULL},
- {"aperture", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT, &aperture,
- "Aperture (size of lens opening) for source element GstPhotography interface",
- NULL},
- {"flash-mode", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
- &flash_mode,
- "Flash mode for source element GstPhotography interface", NULL},
- {"scene-mode", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
- &scene_mode,
- "Scene mode for source element GstPhotography interface", NULL},
- {"exposure", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT64,
- &exposure,
- "Exposure time (in ms) for source element GstPhotography interface",
- NULL},
- {"iso-speed", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
- &iso_speed,
- "ISO speed for source element GstPhotography interface", NULL},
- {"white-balance-mode", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
- &wb_mode,
- "White balance mode for source element GstPhotography interface", NULL},
- {"colour-tone-mode", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
- &color_mode,
- "Colour tone mode for source element GstPhotography interface", NULL},
- {"directory", '\0', 0, G_OPTION_ARG_STRING, &fn_option,
- "Directory for capture file(s) (default is current directory)", NULL},
- {"mode", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT, &mode,
- "Capture mode (default = 0 (image), 1 = video)", NULL},
- {"capture-time", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT,
- &capture_time,
- "Time to capture video in seconds (default = 10)", NULL},
- {"capture-total", '\0', 0, G_OPTION_ARG_INT, &capture_total,
- "Total number of captures to be done (default = 1)", NULL},
- {"flags", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT, &flags,
- "Flags for camerabin, (default = 0x9)", NULL},
- {"mute", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_NONE, &mute,
- "Mute audio", NULL},
- {"zoom", '\0', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_INT, &zoom,
- "Zoom (100 = 1x (default), 200 = 2x etc.)", NULL},
- {"audio-src", '\0', 0, G_OPTION_ARG_STRING, &audiosrc_name,
- "Audio source used in video recording", NULL},
- {"audio-bitrate", '\0', 0, G_OPTION_ARG_INT, &audio_bitrate,
- "Audio bitrate (default 128000)", NULL},
- {"audio-samplerate", '\0', 0, G_OPTION_ARG_INT, &audio_samplerate,
- "Audio samplerate (default 48000)", NULL},
- {"audio-channels", '\0', 0, G_OPTION_ARG_INT, &audio_channels,
- "Audio channels (default 1)", NULL},
- {"video-src", '\0', 0, G_OPTION_ARG_STRING, &videosrc_name,
- "Video source used in still capture and video recording", NULL},
- {"audio-enc", '\0', 0, G_OPTION_ARG_STRING, &audioenc_name,
- "Audio encoder used in video recording", NULL},
- {"video-enc", '\0', 0, G_OPTION_ARG_STRING, &videoenc_name,
- "Video encoder used in video recording", NULL},
- {"image-enc", '\0', 0, G_OPTION_ARG_STRING, &imageenc_name,
- "Image encoder used in still capture", NULL},
- {"image-pp", '\0', 0, G_OPTION_ARG_STRING, &imagepp_name,
- "List of image post-processing elements separated with comma", NULL},
- {"image-formatter", '\0', 0, G_OPTION_ARG_STRING, &imageformatter_name,
- "Image metadata formatter used in still image capture", NULL},
- {"video-mux", '\0', 0, G_OPTION_ARG_STRING, &videomux_name,
- "Muxer used in video recording", NULL},
- {"viewfinder-sink", '\0', 0, G_OPTION_ARG_STRING, &vfsink_name,
- "Viewfinder sink (default = fakesink)", NULL},
- {"image-width", '\0', 0, G_OPTION_ARG_INT, &image_width,
- "Width for image capture", NULL},
- {"image-height", '\0', 0, G_OPTION_ARG_INT, &image_height,
- "Height for image capture", NULL},
- {"view-framerate-num", '\0', 0, G_OPTION_ARG_INT, &view_framerate_num,
- "Framerate numerator for viewfinder", NULL},
- {"view-framerate-den", '\0', 0, G_OPTION_ARG_INT, &view_framerate_den,
- "Framerate denominator for viewfinder", NULL},
- {"src-colorspace", '\0', 0, G_OPTION_ARG_STRING, &src_csp,
- "Colorspace format for video source (e.g. YUY2, UYVY)", NULL},
- {"src-format", '\0', 0, G_OPTION_ARG_STRING, &src_format,
- "Video format for video source", NULL},
- {"preview-caps", '\0', 0, G_OPTION_ARG_STRING, &preview_caps_name,
- "Preview caps (e.g. video/x-raw-rgb,width=320,height=240)", NULL},
- {"video-source-filter", '\0', 0, G_OPTION_ARG_STRING, &video_src_filter,
- "Video filter to process all frames from video source", NULL},
- {"viewfinder-filter", '\0', 0, G_OPTION_ARG_STRING, &viewfinder_filter,
- "Filter to process all frames going to viewfinder sink", NULL},
- {"x-width", '\0', 0, G_OPTION_ARG_INT, &x_width,
- "X window width (default = 320)", NULL},
- {"x-height", '\0', 0, G_OPTION_ARG_INT, &x_height,
- "X window height (default = 240)", NULL},
- {"no-xwindow", '\0', 0, G_OPTION_ARG_NONE, &no_xwindow,
- "Do not create XWindow", NULL},
- {NULL}
- };
-
- GOptionContext *ctx;
- GError *err = NULL;
-
- ctx = g_option_context_new ("\n\ncamerabin command line test application.");
- g_option_context_add_main_entries (ctx, options, NULL);
- g_option_context_add_group (ctx, gst_init_get_option_group ());
- if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
- g_print ("Error initializing: %s\n", err->message);
- exit (1);
- }
- g_option_context_free (ctx);
-
- /* if we fail to create xwindow should we care? */
- if (!no_xwindow)
- create_host_window ();
-
- GST_DEBUG_CATEGORY_INIT (camerabin_test, "camerabin-test", 0,
- "camerabin test");
-
- /* FIXME: error handling */
- if (ev_option != NULL)
- ev_compensation = strtod (ev_option, (char **) NULL);
-
- if (vfsink_name == NULL)
- vfsink_name = g_strdup ("fakesink");
-
- filename = g_string_new (fn_option);
- if (filename->len == 0)
- filename = g_string_append (filename, ".");
-
- timer = g_timer_new ();
-
- /* init */
- if (setup_pipeline ()) {
- loop = g_main_loop_new (NULL, FALSE);
- g_idle_add ((GSourceFunc) run_pipeline, NULL);
- g_main_loop_run (loop);
- cleanup_pipeline ();
- g_main_loop_unref (loop);
- }
- /* free */
- g_string_free (filename, TRUE);
- g_free (ev_option);
- g_free (audiosrc_name);
- g_free (videosrc_name);
- g_free (audioenc_name);
- g_free (videoenc_name);
- g_free (imageenc_name);
- g_free (imageformatter_name);
- g_free (imagepp_name);
- g_free (videomux_name);
- g_free (vfsink_name);
- g_free (src_csp);
- g_free (src_format);
- g_free (target_times);
- g_timer_destroy (timer);
-
- if (window)
- XDestroyWindow (display, window);
-
- if (display)
- XCloseDisplay (display);
-
- return 0;
-}
diff --git a/tests/examples/camerabin2/Makefile.am b/tests/examples/camerabin2/Makefile.am
index 2fb8ab13..74be998a 100644
--- a/tests/examples/camerabin2/Makefile.am
+++ b/tests/examples/camerabin2/Makefile.am
@@ -14,7 +14,6 @@ gst_camera2_CFLAGS = \
gst_camera2_LDADD = \
$(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
$(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-@GST_API_VERSION@ \
-lgstpbutils-@GST_API_VERSION@ \
-lgstvideo-@GST_API_VERSION@ \
$(GST_LIBS) \
@@ -38,7 +37,6 @@ gst_camerabin2_test_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLU
gst_camerabin2_test_LDADD = \
$(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
$(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-@GST_API_VERSION@ \
-lgstpbutils-@GST_API_VERSION@ \
-lgstvideo-@GST_API_VERSION@ \
$(GST_BASE_LIBS) \
diff --git a/tests/examples/camerabin2/Makefile.in b/tests/examples/camerabin2/Makefile.in
index 816b7a70..4472cd0a 100644
--- a/tests/examples/camerabin2/Makefile.in
+++ b/tests/examples/camerabin2/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -447,6 +447,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -463,6 +465,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -495,10 +498,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -584,7 +586,6 @@ GST_CAMERABIN_UI_FILES = gst-camera2.ui
@HAVE_GTK_TRUE@gst_camera2_LDADD = \
@HAVE_GTK_TRUE@ $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
@HAVE_GTK_TRUE@ $(GST_PLUGINS_BASE_LIBS) \
-@HAVE_GTK_TRUE@ -lgstinterfaces-@GST_API_VERSION@ \
@HAVE_GTK_TRUE@ -lgstpbutils-@GST_API_VERSION@ \
@HAVE_GTK_TRUE@ -lgstvideo-@GST_API_VERSION@ \
@HAVE_GTK_TRUE@ $(GST_LIBS) \
@@ -600,7 +601,6 @@ GST_CAMERABIN_UI_FILES = gst-camera2.ui
@HAVE_X11_TRUE@gst_camerabin2_test_LDADD = \
@HAVE_X11_TRUE@ $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-@GST_API_VERSION@.la \
@HAVE_X11_TRUE@ $(GST_PLUGINS_BASE_LIBS) \
-@HAVE_X11_TRUE@ -lgstinterfaces-@GST_API_VERSION@ \
@HAVE_X11_TRUE@ -lgstpbutils-@GST_API_VERSION@ \
@HAVE_X11_TRUE@ -lgstvideo-@GST_API_VERSION@ \
@HAVE_X11_TRUE@ $(GST_BASE_LIBS) \
diff --git a/tests/examples/camerabin2/gst-camera2.c b/tests/examples/camerabin2/gst-camera2.c
index 6a59b47d..fe913ee5 100644
--- a/tests/examples/camerabin2/gst-camera2.c
+++ b/tests/examples/camerabin2/gst-camera2.c
@@ -179,7 +179,7 @@ on_formatComboBox_changed (GtkWidget * widget, gpointer data)
GtkWidget *dialog =
gtk_message_dialog_new (GTK_WINDOW (ui_main_window), GTK_DIALOG_MODAL,
GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
- "Could not initialize camerabin2 with the "
+ "Could not initialize camerabin with the "
"selected format. Your system might not have the required plugins installed.\n"
"Please select another format.");
@@ -197,7 +197,7 @@ bus_sync_callback (GstBus * bus, GstMessage * message, gpointer data)
if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
return GST_BUS_PASS;
- if (!gst_message_has_name (message, "prepare-xwindow-id"))
+ if (!gst_message_has_name (message, "prepare-window-handle"))
return GST_BUS_PASS;
/* FIXME: make sure to get XID in main thread */
@@ -298,7 +298,7 @@ main (int argc, char *argv[])
return 1;
}
- camera = gst_element_factory_make ("camerabin2", "camera");
+ camera = gst_element_factory_make ("camerabin", "camera");
bus = gst_pipeline_get_bus (GST_PIPELINE (camera));
gst_bus_add_watch (bus, bus_callback, NULL);
gst_bus_set_sync_handler (bus, bus_sync_callback, NULL);
diff --git a/tests/examples/camerabin2/gst-camerabin2-test.c b/tests/examples/camerabin2/gst-camerabin2-test.c
index e4dc9633..e6c299c3 100644
--- a/tests/examples/camerabin2/gst-camerabin2-test.c
+++ b/tests/examples/camerabin2/gst-camerabin2-test.c
@@ -81,8 +81,8 @@
startup time, change mode time, shot to save, shot to snapshot,
shot to shot, preview to precapture, shot to buffer.
e.g. 3.5,1.0,5.0,2.5,5.0,1.5,1.0
- * Startup time -> time it takes for camerabin2 to reach playing
- * Change mode time -> time it takes for camerabin2 to change to the selected
+ * Startup time -> time it takes for camerabin to reach playing
+ * Change mode time -> time it takes for camerabin to change to the selected
mode in playing
* Shot to save -> time it takes from start-capture to having the image saved
to disk
@@ -218,7 +218,7 @@ static gchar *video_capture_caps_str = NULL;
static gchar *audio_capture_caps_str = NULL;
static gboolean performance_measure = FALSE;
static gchar *performance_targets_str = NULL;
-static gchar *camerabin2_flags = NULL;
+static gchar *camerabin_flags = NULL;
#define MODE_VIDEO 2
@@ -577,7 +577,7 @@ load_encoding_profile (void)
gep_targetname);
} else
GST_DEBUG
- ("Encoding profile not set, using camerabin2 default encoding profile");
+ ("Encoding profile not set, using camerabin default encoding profile");
return prof;
}
@@ -613,7 +613,7 @@ setup_pipeline_element (GstElement * element, const gchar * property_name,
}
static void
-set_camerabin2_caps_from_string (void)
+set_camerabin_caps_from_string (void)
{
GstCaps *caps = NULL;
if (image_capture_caps_str != NULL) {
@@ -664,7 +664,7 @@ setup_pipeline (void)
initial_time = gst_util_get_timestamp ();
- camerabin = gst_element_factory_make ("camerabin2", NULL);
+ camerabin = gst_element_factory_make ("camerabin", NULL);
if (NULL == camerabin) {
g_warning ("can't create camerabin element\n");
goto error;
@@ -677,9 +677,9 @@ setup_pipeline (void)
gst_bus_add_watch (bus, bus_callback, NULL);
gst_object_unref (bus);
- GST_INFO_OBJECT (camerabin, "camerabin2 created");
+ GST_INFO_OBJECT (camerabin, "camerabin created");
- gst_util_set_object_arg (G_OBJECT (camerabin), "flags", camerabin2_flags);
+ gst_util_set_object_arg (G_OBJECT (camerabin), "flags", camerabin_flags);
if (videosrc_name) {
GstElement *wrapper;
@@ -731,7 +731,7 @@ setup_pipeline (void)
g_object_set (sink, "sync", TRUE, NULL);
} else {
/* Get the inner viewfinder sink, this uses fixed names given
- * by default in camerabin2 */
+ * by default in camerabin */
sink = gst_bin_get_by_name (GST_BIN (camerabin), "vf-bin");
g_assert (sink);
gst_object_unref (sink);
@@ -782,7 +782,7 @@ setup_pipeline (void)
}
}
- set_camerabin2_caps_from_string ();
+ set_camerabin_caps_from_string ();
/* change to the wrong mode if timestamping if performance mode is on so
* we can change it back and measure the time after in playing */
@@ -1242,8 +1242,8 @@ main (int argc, char *argv[])
", shot to snapshot, shot to shot, preview to shot, shot to buffer. "
"e.g. 3.5,1.0,5.0,2.5,5.0,1.5,1.0",
NULL},
- {"flags", '\0', 0, G_OPTION_ARG_STRING, &camerabin2_flags,
- "camerabin2 element flags (default = 0)", NULL},
+ {"flags", '\0', 0, G_OPTION_ARG_STRING, &camerabin_flags,
+ "camerabin element flags (default = 0)", NULL},
{NULL}
};
diff --git a/tests/examples/directfb/Makefile.in b/tests/examples/directfb/Makefile.in
index 3e356014..14fa2b07 100644
--- a/tests/examples/directfb/Makefile.in
+++ b/tests/examples/directfb/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -427,6 +427,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -443,6 +445,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -475,10 +478,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/tests/examples/mxf/Makefile.in b/tests/examples/mxf/Makefile.in
index 058b4a64..8fb56fc5 100644
--- a/tests/examples/mxf/Makefile.in
+++ b/tests/examples/mxf/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -432,6 +432,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -448,6 +450,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -480,10 +483,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/tests/examples/opencv/Makefile.in b/tests/examples/opencv/Makefile.in
index 2085f3d0..affc1d7a 100644
--- a/tests/examples/opencv/Makefile.in
+++ b/tests/examples/opencv/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -433,6 +433,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -449,6 +451,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -481,10 +484,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/tests/examples/scaletempo/Makefile.am b/tests/examples/scaletempo/Makefile.am
index 18a1ab9d..9bb25714 100644
--- a/tests/examples/scaletempo/Makefile.am
+++ b/tests/examples/scaletempo/Makefile.am
@@ -5,7 +5,7 @@ ERROR_CFLAGS=
scaletempo_demo_SOURCES = demo-main.c demo-player.c demo-gui.c
scaletempo_demo_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GTK_CFLAGS)
-scaletempo_demo_LDFLAGS = $(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-@GST_API_VERSION@ $(GST_LIBS) $(GTK_LIBS)
+scaletempo_demo_LDFLAGS = $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) $(GTK_LIBS)
noinst_HEADERS = demo-player.h demo-gui.h
diff --git a/tests/examples/scaletempo/Makefile.in b/tests/examples/scaletempo/Makefile.in
index 7abfea4d..165d5d06 100644
--- a/tests/examples/scaletempo/Makefile.in
+++ b/tests/examples/scaletempo/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -435,6 +435,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -451,6 +453,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -483,10 +486,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -560,7 +562,7 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
scaletempo_demo_SOURCES = demo-main.c demo-player.c demo-gui.c
scaletempo_demo_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GTK_CFLAGS)
-scaletempo_demo_LDFLAGS = $(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-@GST_API_VERSION@ $(GST_LIBS) $(GTK_LIBS)
+scaletempo_demo_LDFLAGS = $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) $(GTK_LIBS)
noinst_HEADERS = demo-player.h demo-gui.h
all: all-am
diff --git a/tests/files/Makefile.in b/tests/files/Makefile.in
index b01269ef..94498b66 100644
--- a/tests/files/Makefile.in
+++ b/tests/files/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -393,6 +393,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -409,6 +411,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -441,10 +444,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/tests/icles/Makefile.in b/tests/icles/Makefile.in
index bd69e0b6..a03aa224 100644
--- a/tests/icles/Makefile.in
+++ b/tests/icles/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -432,6 +432,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -448,6 +450,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -480,10 +483,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 1443eadc..8330e9c7 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.4 from Makefile.am.
+# Makefile.in generated by automake 1.11.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -393,6 +393,8 @@ PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
+RSVG_2_35_0_CFLAGS = @RSVG_2_35_0_CFLAGS@
+RSVG_2_35_0_LIBS = @RSVG_2_35_0_LIBS@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -409,6 +411,7 @@ SLV2_CFLAGS = @SLV2_CFLAGS@
SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
@@ -441,10 +444,9 @@ WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
WAYLAND_LIBS = @WAYLAND_LIBS@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
-XDG_LIBS = @XDG_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
diff --git a/win32/common/config.h b/win32/common/config.h
index e02bd01f..4d772f8b 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -199,7 +199,7 @@
#undef USE_POISONING
/* Version number of package */
-#define VERSION "0.11.90"
+#define VERSION "0.11.91"
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */