From 3985fe5e7372bf83c1cbb3259228700296c88899 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sat, 28 Jun 2014 11:43:14 +0200 Subject: Imported Upstream version 1.3.90 --- ChangeLog | 261 +++++++- Makefile.in | 2 +- NEWS | 13 +- RELEASE | 61 +- compile | 99 ++- config.guess | 346 ++++------- config.sub | 115 ++-- configure | 38 +- configure.ac | 8 +- depcomp | 487 +++++++++------ docs/plugins/gst-plugins-good-plugins.hierarchy | 8 +- .../html/gst-plugins-good-plugins-avimux.html | 2 +- .../html/gst-plugins-good-plugins-flvdemux.html | 2 +- .../html/gst-plugins-good-plugins-flvmux.html | 2 +- .../gst-plugins-good-plugins-osxvideosink.html | 1 - .../html/gst-plugins-good-plugins-plugin-1394.html | 2 +- .../gst-plugins-good-plugins-plugin-aasink.html | 2 +- .../html/gst-plugins-good-plugins-plugin-alaw.html | 2 +- .../gst-plugins-good-plugins-plugin-alpha.html | 2 +- ...gst-plugins-good-plugins-plugin-alphacolor.html | 2 +- .../gst-plugins-good-plugins-plugin-apetag.html | 2 +- .../gst-plugins-good-plugins-plugin-audiofx.html | 2 +- .../gst-plugins-good-plugins-plugin-auparse.html | 2 +- ...gst-plugins-good-plugins-plugin-autodetect.html | 2 +- .../html/gst-plugins-good-plugins-plugin-avi.html | 2 +- .../gst-plugins-good-plugins-plugin-cacasink.html | 2 +- .../gst-plugins-good-plugins-plugin-cairo.html | 2 +- .../gst-plugins-good-plugins-plugin-cutter.html | 2 +- .../gst-plugins-good-plugins-plugin-debug.html | 2 +- ...st-plugins-good-plugins-plugin-deinterlace.html | 2 +- .../html/gst-plugins-good-plugins-plugin-dtmf.html | 2 +- .../html/gst-plugins-good-plugins-plugin-dv.html | 2 +- .../gst-plugins-good-plugins-plugin-effectv.html | 2 +- .../gst-plugins-good-plugins-plugin-equalizer.html | 2 +- .../html/gst-plugins-good-plugins-plugin-flac.html | 2 +- .../html/gst-plugins-good-plugins-plugin-flv.html | 2 +- .../gst-plugins-good-plugins-plugin-flxdec.html | 2 +- .../gst-plugins-good-plugins-plugin-gdkpixbuf.html | 2 +- .../html/gst-plugins-good-plugins-plugin-goom.html | 2 +- .../gst-plugins-good-plugins-plugin-goom2k1.html | 2 +- .../gst-plugins-good-plugins-plugin-icydemux.html | 2 +- .../gst-plugins-good-plugins-plugin-id3demux.html | 2 +- ...st-plugins-good-plugins-plugin-imagefreeze.html | 2 +- ...gst-plugins-good-plugins-plugin-interleave.html | 2 +- .../gst-plugins-good-plugins-plugin-isomp4.html | 2 +- .../html/gst-plugins-good-plugins-plugin-jack.html | 2 +- .../html/gst-plugins-good-plugins-plugin-jpeg.html | 2 +- .../gst-plugins-good-plugins-plugin-level.html | 2 +- .../gst-plugins-good-plugins-plugin-matroska.html | 2 +- .../gst-plugins-good-plugins-plugin-mulaw.html | 2 +- .../gst-plugins-good-plugins-plugin-multifile.html | 2 +- .../gst-plugins-good-plugins-plugin-multipart.html | 2 +- ...plugins-good-plugins-plugin-navigationtest.html | 2 +- .../html/gst-plugins-good-plugins-plugin-oss4.html | 2 +- .../gst-plugins-good-plugins-plugin-ossaudio.html | 2 +- .../html/gst-plugins-good-plugins-plugin-png.html | 2 +- ...gst-plugins-good-plugins-plugin-pulseaudio.html | 2 +- ...gst-plugins-good-plugins-plugin-replaygain.html | 2 +- .../html/gst-plugins-good-plugins-plugin-rtp.html | 2 +- ...gst-plugins-good-plugins-plugin-rtpmanager.html | 2 +- .../html/gst-plugins-good-plugins-plugin-rtsp.html | 2 +- .../gst-plugins-good-plugins-plugin-shapewipe.html | 2 +- ...gst-plugins-good-plugins-plugin-shout2send.html | 2 +- .../gst-plugins-good-plugins-plugin-smpte.html | 2 +- .../html/gst-plugins-good-plugins-plugin-soup.html | 2 +- .../gst-plugins-good-plugins-plugin-spectrum.html | 2 +- .../gst-plugins-good-plugins-plugin-speex.html | 2 +- .../gst-plugins-good-plugins-plugin-taglib.html | 2 +- .../html/gst-plugins-good-plugins-plugin-udp.html | 2 +- ...t-plugins-good-plugins-plugin-video4linux2.html | 2 +- .../gst-plugins-good-plugins-plugin-videobox.html | 2 +- .../gst-plugins-good-plugins-plugin-videocrop.html | 2 +- ...st-plugins-good-plugins-plugin-videofilter.html | 2 +- ...gst-plugins-good-plugins-plugin-videomixer.html | 2 +- .../html/gst-plugins-good-plugins-plugin-vpx.html | 2 +- .../gst-plugins-good-plugins-plugin-wavenc.html | 2 +- .../gst-plugins-good-plugins-plugin-wavpack.html | 2 +- .../gst-plugins-good-plugins-plugin-wavparse.html | 2 +- .../gst-plugins-good-plugins-plugin-ximagesrc.html | 2 +- .../gst-plugins-good-plugins-plugin-y4menc.html | 2 +- .../html/gst-plugins-good-plugins-videomixer.html | 2 +- docs/plugins/html/index.html | 2 +- docs/plugins/inspect/plugin-1394.xml | 2 +- docs/plugins/inspect/plugin-aasink.xml | 2 +- docs/plugins/inspect/plugin-alaw.xml | 2 +- docs/plugins/inspect/plugin-alpha.xml | 2 +- docs/plugins/inspect/plugin-alphacolor.xml | 2 +- docs/plugins/inspect/plugin-apetag.xml | 2 +- docs/plugins/inspect/plugin-audiofx.xml | 2 +- docs/plugins/inspect/plugin-audioparsers.xml | 2 +- docs/plugins/inspect/plugin-auparse.xml | 2 +- docs/plugins/inspect/plugin-autodetect.xml | 2 +- docs/plugins/inspect/plugin-avi.xml | 4 +- docs/plugins/inspect/plugin-cacasink.xml | 2 +- docs/plugins/inspect/plugin-cairo.xml | 2 +- docs/plugins/inspect/plugin-cutter.xml | 2 +- docs/plugins/inspect/plugin-debug.xml | 2 +- docs/plugins/inspect/plugin-deinterlace.xml | 2 +- docs/plugins/inspect/plugin-dtmf.xml | 2 +- docs/plugins/inspect/plugin-dv.xml | 2 +- docs/plugins/inspect/plugin-effectv.xml | 2 +- docs/plugins/inspect/plugin-equalizer.xml | 2 +- docs/plugins/inspect/plugin-flac.xml | 2 +- docs/plugins/inspect/plugin-flv.xml | 6 +- docs/plugins/inspect/plugin-flxdec.xml | 2 +- docs/plugins/inspect/plugin-gdkpixbuf.xml | 2 +- docs/plugins/inspect/plugin-goom.xml | 2 +- docs/plugins/inspect/plugin-goom2k1.xml | 2 +- docs/plugins/inspect/plugin-icydemux.xml | 2 +- docs/plugins/inspect/plugin-id3demux.xml | 2 +- docs/plugins/inspect/plugin-imagefreeze.xml | 2 +- docs/plugins/inspect/plugin-interleave.xml | 2 +- docs/plugins/inspect/plugin-isomp4.xml | 2 +- docs/plugins/inspect/plugin-jack.xml | 2 +- docs/plugins/inspect/plugin-jpeg.xml | 2 +- docs/plugins/inspect/plugin-level.xml | 2 +- docs/plugins/inspect/plugin-matroska.xml | 2 +- docs/plugins/inspect/plugin-mulaw.xml | 2 +- docs/plugins/inspect/plugin-multifile.xml | 2 +- docs/plugins/inspect/plugin-multipart.xml | 2 +- docs/plugins/inspect/plugin-navigationtest.xml | 2 +- docs/plugins/inspect/plugin-oss4.xml | 2 +- docs/plugins/inspect/plugin-ossaudio.xml | 2 +- docs/plugins/inspect/plugin-png.xml | 2 +- docs/plugins/inspect/plugin-pulseaudio.xml | 2 +- docs/plugins/inspect/plugin-replaygain.xml | 2 +- docs/plugins/inspect/plugin-rtp.xml | 2 +- docs/plugins/inspect/plugin-rtpmanager.xml | 2 +- docs/plugins/inspect/plugin-rtsp.xml | 2 +- docs/plugins/inspect/plugin-shapewipe.xml | 2 +- docs/plugins/inspect/plugin-shout2send.xml | 2 +- docs/plugins/inspect/plugin-smpte.xml | 2 +- docs/plugins/inspect/plugin-soup.xml | 2 +- docs/plugins/inspect/plugin-spectrum.xml | 2 +- docs/plugins/inspect/plugin-speex.xml | 2 +- docs/plugins/inspect/plugin-taglib.xml | 2 +- docs/plugins/inspect/plugin-udp.xml | 2 +- docs/plugins/inspect/plugin-video4linux2.xml | 2 +- docs/plugins/inspect/plugin-videobox.xml | 2 +- docs/plugins/inspect/plugin-videocrop.xml | 2 +- docs/plugins/inspect/plugin-videofilter.xml | 2 +- docs/plugins/inspect/plugin-videomixer.xml | 4 +- docs/plugins/inspect/plugin-vpx.xml | 2 +- docs/plugins/inspect/plugin-wavenc.xml | 2 +- docs/plugins/inspect/plugin-wavpack.xml | 2 +- docs/plugins/inspect/plugin-wavparse.xml | 2 +- docs/plugins/inspect/plugin-ximagesrc.xml | 2 +- docs/plugins/inspect/plugin-y4menc.xml | 2 +- ext/pulse/Makefile.am | 4 +- ext/pulse/Makefile.in | 18 +- ext/pulse/plugin.c | 6 +- ext/pulse/pulsedevicemonitor.c | 679 --------------------- ext/pulse/pulsedevicemonitor.h | 98 --- ext/pulse/pulsedeviceprovider.c | 679 +++++++++++++++++++++ ext/pulse/pulsedeviceprovider.h | 98 +++ gst-plugins-good.doap | 10 + gst-plugins-good.spec | 2 +- gst/audiofx/audiopanoramaorc-dist.c | 36 +- gst/avi/gstavimux.c | 6 +- gst/deinterlace/tvtime-dist.c | 2 +- gst/flv/gstflvdemux.c | 5 +- gst/flv/gstflvmux.c | 7 +- gst/isomp4/qtdemux.c | 20 + gst/matroska/matroska-read-common.c | 203 +++--- gst/rtpmanager/gstrtpjitterbuffer.c | 15 +- gst/rtpmanager/gstrtpssrcdemux.c | 3 + gst/videomixer/videomixer2.c | 12 +- gst/videomixer/videomixerorc-dist.c | 206 +++---- gst/wavparse/gstwavparse.c | 1 + install-sh | 14 +- missing | 414 +++++-------- po/af.gmo | Bin 666 -> 666 bytes po/af.po | 2 +- po/az.gmo | Bin 723 -> 723 bytes po/az.po | 2 +- po/bg.gmo | Bin 11149 -> 11149 bytes po/bg.po | 2 +- po/ca.gmo | Bin 9124 -> 9124 bytes po/ca.po | 2 +- po/cs.gmo | Bin 11000 -> 11000 bytes po/cs.po | 2 +- po/da.gmo | Bin 11242 -> 11242 bytes po/da.po | 2 +- po/de.gmo | Bin 12321 -> 12321 bytes po/de.po | 2 +- po/el.gmo | Bin 11597 -> 11597 bytes po/el.po | 2 +- po/en_GB.gmo | Bin 671 -> 671 bytes po/en_GB.po | 2 +- po/eo.gmo | Bin 1328 -> 1328 bytes po/eo.po | 2 +- po/es.gmo | Bin 9369 -> 9369 bytes po/es.po | 2 +- po/eu.gmo | Bin 7626 -> 7626 bytes po/eu.po | 2 +- po/fi.gmo | Bin 8041 -> 8041 bytes po/fi.po | 2 +- po/fr.gmo | Bin 9222 -> 9222 bytes po/fr.po | 2 +- po/gl.gmo | Bin 10938 -> 10938 bytes po/gl.po | 2 +- po/gst-plugins-good-1.0.pot | 8 +- po/hr.gmo | Bin 8525 -> 8525 bytes po/hr.po | 2 +- po/hu.gmo | Bin 12010 -> 12010 bytes po/hu.po | 2 +- po/id.gmo | Bin 11243 -> 11243 bytes po/id.po | 2 +- po/it.gmo | Bin 8539 -> 8539 bytes po/it.po | 2 +- po/ja.gmo | Bin 12052 -> 12052 bytes po/ja.po | 2 +- po/lt.gmo | Bin 7460 -> 7460 bytes po/lt.po | 2 +- po/lv.gmo | Bin 10527 -> 10527 bytes po/lv.po | 2 +- po/mt.gmo | Bin 5942 -> 5942 bytes po/mt.po | 2 +- po/nb.gmo | Bin 10047 -> 10047 bytes po/nb.po | 2 +- po/nl.gmo | Bin 11644 -> 11644 bytes po/nl.po | 2 +- po/or.gmo | Bin 832 -> 832 bytes po/or.po | 2 +- po/pl.gmo | Bin 12125 -> 12125 bytes po/pl.po | 2 +- po/pt_BR.gmo | Bin 10921 -> 10921 bytes po/pt_BR.po | 2 +- po/ro.gmo | Bin 8001 -> 8001 bytes po/ro.po | 2 +- po/ru.gmo | Bin 15628 -> 15628 bytes po/ru.po | 2 +- po/sk.gmo | Bin 10768 -> 10768 bytes po/sk.po | 2 +- po/sl.gmo | Bin 10412 -> 10412 bytes po/sl.po | 2 +- po/sq.gmo | Bin 685 -> 685 bytes po/sq.po | 2 +- po/sr.gmo | Bin 15169 -> 15169 bytes po/sr.po | 2 +- po/sv.gmo | Bin 8861 -> 8861 bytes po/sv.po | 2 +- po/tr.gmo | Bin 9816 -> 9816 bytes po/tr.po | 2 +- po/uk.gmo | Bin 15559 -> 15559 bytes po/uk.po | 2 +- po/vi.gmo | Bin 12111 -> 12111 bytes po/vi.po | 2 +- po/zh_CN.gmo | Bin 6295 -> 6295 bytes po/zh_CN.po | 2 +- po/zh_HK.gmo | Bin 1571 -> 1571 bytes po/zh_HK.po | 2 +- po/zh_TW.gmo | Bin 1570 -> 1570 bytes po/zh_TW.po | 2 +- sys/osxvideo/osxvideosink.h | 1 - sys/osxvideo/osxvideosink.m | 72 +-- sys/v4l2/Makefile.am | 4 +- sys/v4l2/Makefile.in | 18 +- sys/v4l2/gstv4l2.c | 6 +- sys/v4l2/gstv4l2devicemonitor.c | 505 --------------- sys/v4l2/gstv4l2devicemonitor.h | 101 --- sys/v4l2/gstv4l2deviceprovider.c | 507 +++++++++++++++ sys/v4l2/gstv4l2deviceprovider.h | 101 +++ test-driver | 20 +- tests/check/Makefile.am | 7 + tests/check/Makefile.in | 55 +- tests/check/elements/udpsink.c | 161 ++--- tests/check/elements/videobox.c | 238 ++++++++ win32/common/config.h | 8 +- 269 files changed, 3334 insertions(+), 2817 deletions(-) delete mode 100644 ext/pulse/pulsedevicemonitor.c delete mode 100644 ext/pulse/pulsedevicemonitor.h create mode 100644 ext/pulse/pulsedeviceprovider.c create mode 100644 ext/pulse/pulsedeviceprovider.h delete mode 100644 sys/v4l2/gstv4l2devicemonitor.c delete mode 100644 sys/v4l2/gstv4l2devicemonitor.h create mode 100644 sys/v4l2/gstv4l2deviceprovider.c create mode 100644 sys/v4l2/gstv4l2deviceprovider.h create mode 100644 tests/check/elements/videobox.c diff --git a/ChangeLog b/ChangeLog index 682d2649..f8a2bc53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,266 @@ +=== release 1.3.90 === + +2014-06-28 Sebastian Dröge + + * configure.ac: + releasing 1.3.90 + +2014-06-26 14:52:57 -0400 Olivier Crête + + * ext/pulse/Makefile.am: + * ext/pulse/plugin.c: + * ext/pulse/pulsedevicemonitor.c: + * ext/pulse/pulsedevicemonitor.h: + * ext/pulse/pulsedeviceprovider.c: + * ext/pulse/pulsedeviceprovider.h: + * sys/v4l2/Makefile.am: + * sys/v4l2/gstv4l2.c: + * sys/v4l2/gstv4l2devicemonitor.c: + * sys/v4l2/gstv4l2devicemonitor.h: + * sys/v4l2/gstv4l2deviceprovider.c: + * sys/v4l2/gstv4l2deviceprovider.h: + Rename GstDeviceMonitor to GstDeviceProvider + +2014-06-24 09:14:40 +0530 Ravi Kiran K N + + * tests/check/Makefile.am: + * tests/check/elements/.gitignore: + * tests/check/elements/videobox.c: + videobox: Add unit test + https://bugzilla.gnome.org/show_bug.cgi?id=732144 + +2014-06-16 11:35:39 +0200 Thibault Saunier + + * gst/videomixer/videomixer2.c: + videomixer: Declare as Compositor in 'klass' + +2014-06-26 13:50:19 +0100 Tim-Philipp Müller + + * gst/flv/gstflvdemux.c: + flvdemux: fix speex caps + Decoder complains about "notification: Invalid mode encountered. + The stream is corrupted" though, even if it works, so there's + probably something wrong with the generated codec headers. + +2014-06-26 13:43:33 +0100 Tim-Philipp Müller + + * gst/flv/gstflvmux.c: + flvmux: fix speex in FLV + Speex in FLV is always mono @ 16kHz, see + http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf + section E.4.2.1: "If the SoundFormat indicates Speex, the audio is + compressed mono sampled at 16 kHz, the SoundRate shall be 0, the + SoundSize shall be 1, and the SoundType shall be 0" + Also see https://bugzilla.gnome.org/show_bug.cgi?id=683622 + +2014-06-26 05:19:57 +1000 Jan Schmidt + + * gst/isomp4/qtdemux.c: + isomp4: Add object type id and fourcc for DTS/DTS-HD + Enables playback for files with DTS audio tracks. + Also add an extra AC-3 variant fourcc from Nero + +2014-03-13 10:35:30 +0100 David Fernandez + + * gst/videomixer/videomixer2.c: + videomixer2: Solve segmentation fault when src caps are configured + Change function pointers to NULL while holding the lock to avoid + race conditions + https://bugzilla.gnome.org/show_bug.cgi?id=701110 + +2014-06-25 14:34:21 +0200 Wim Taymans + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: improve SR packet handling + Implement 3 different cases for handling the SR: + 1) we don't have enough timing information to handle the SR packet and + we need to wait a little for more RTP packets. In that case we keep + the SR packet around and retry when we get an RTP packet in the + chain function. + 2) the SR packet has a too old timestamp and should be discarded. It is + labeled invalid and the last_sr is cleared. + 3) the SR packet is ok and there is enough timing information, proceed + with processing the SR packet. + Before this patch, case 2) and 1) were handled in the same way, + resulting that SR packets with too old timestamps were checked over and + over again for each RTP packet. + +2014-06-24 10:47:33 +0100 Tim-Philipp Müller + + * tests/check/elements/udpsink.c: + tests: add udpsink test to check client add/remove + +2014-06-23 16:13:27 +0100 Tim-Philipp Müller + + * tests/check/elements/udpsink.c: + tests: port udpsink tests to 1.0 + They all seem a bit pointless though. + +2014-06-23 19:55:29 -0400 Olivier Crête + + * gst/avi/gstavimux.c: + avimux: Add UYVY format + +2014-06-06 11:20:21 +0200 Miguel París Díaz + + * gst/rtpmanager/gstrtpssrcdemux.c: + gstrtpssrcdemux: manage ssrc of RTCP RR packets + https://bugzilla.gnome.org/show_bug.cgi?id=731324 + +2014-06-23 20:53:50 +0200 Sebastian Dröge + + * gst/wavparse/gstwavparse.c: + wavparse: Update offset after parsing adtl chunk + Otherwise we will parse it over and over again without ever + getting past it. + https://bugzilla.gnome.org/show_bug.cgi?id=731533 + +2013-07-07 20:18:27 +0200 Andoni Morales Alastruey + + * sys/osxvideo/osxvideosink.h: + * sys/osxvideo/osxvideosink.m: + osxvideosink: remove legacy code for passing a window handle + "have-ns-view" and the "embed" property was kept in 0.10 for + backwards compatibility but it's no longer used in favor of + the GstVideoOverlay interface + https://bugzilla.gnome.org/show_bug.cgi?id=703753 + +2014-06-22 19:36:14 +0200 Sebastian Dröge + + * configure.ac: + Back to development + +2014-06-22 19:26:03 +0200 Sebastian Dröge + + * gst/matroska/matroska-read-common.c: + matroskademux: Don't call GST_DEBUG_OBJECT() and other macros with non-GObject objects + It will crash with latest GLib GIT and was never supposed to work before + either. + === release 1.3.3 === -2014-06-22 Sebastian Dröge +2014-06-22 18:08:03 +0200 Sebastian Dröge + * ChangeLog: + * NEWS: + * RELEASE: * configure.ac: - releasing 1.3.3 + * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/gst-plugins-good-plugins.signals: + * docs/plugins/inspect/plugin-1394.xml: + * docs/plugins/inspect/plugin-aasink.xml: + * docs/plugins/inspect/plugin-alaw.xml: + * docs/plugins/inspect/plugin-alpha.xml: + * docs/plugins/inspect/plugin-alphacolor.xml: + * docs/plugins/inspect/plugin-apetag.xml: + * docs/plugins/inspect/plugin-audiofx.xml: + * docs/plugins/inspect/plugin-audioparsers.xml: + * docs/plugins/inspect/plugin-auparse.xml: + * docs/plugins/inspect/plugin-autodetect.xml: + * docs/plugins/inspect/plugin-avi.xml: + * docs/plugins/inspect/plugin-cacasink.xml: + * docs/plugins/inspect/plugin-cairo.xml: + * docs/plugins/inspect/plugin-cutter.xml: + * docs/plugins/inspect/plugin-debug.xml: + * docs/plugins/inspect/plugin-deinterlace.xml: + * docs/plugins/inspect/plugin-dtmf.xml: + * docs/plugins/inspect/plugin-dv.xml: + * docs/plugins/inspect/plugin-effectv.xml: + * docs/plugins/inspect/plugin-equalizer.xml: + * docs/plugins/inspect/plugin-flac.xml: + * docs/plugins/inspect/plugin-flv.xml: + * docs/plugins/inspect/plugin-flxdec.xml: + * docs/plugins/inspect/plugin-gdkpixbuf.xml: + * docs/plugins/inspect/plugin-goom.xml: + * docs/plugins/inspect/plugin-goom2k1.xml: + * docs/plugins/inspect/plugin-icydemux.xml: + * docs/plugins/inspect/plugin-id3demux.xml: + * docs/plugins/inspect/plugin-imagefreeze.xml: + * docs/plugins/inspect/plugin-interleave.xml: + * docs/plugins/inspect/plugin-isomp4.xml: + * docs/plugins/inspect/plugin-jack.xml: + * docs/plugins/inspect/plugin-jpeg.xml: + * docs/plugins/inspect/plugin-level.xml: + * docs/plugins/inspect/plugin-matroska.xml: + * docs/plugins/inspect/plugin-mulaw.xml: + * docs/plugins/inspect/plugin-multifile.xml: + * docs/plugins/inspect/plugin-multipart.xml: + * docs/plugins/inspect/plugin-navigationtest.xml: + * docs/plugins/inspect/plugin-oss4.xml: + * docs/plugins/inspect/plugin-ossaudio.xml: + * docs/plugins/inspect/plugin-png.xml: + * docs/plugins/inspect/plugin-pulseaudio.xml: + * docs/plugins/inspect/plugin-replaygain.xml: + * docs/plugins/inspect/plugin-rtp.xml: + * docs/plugins/inspect/plugin-rtpmanager.xml: + * docs/plugins/inspect/plugin-rtsp.xml: + * docs/plugins/inspect/plugin-shapewipe.xml: + * docs/plugins/inspect/plugin-shout2send.xml: + * docs/plugins/inspect/plugin-smpte.xml: + * docs/plugins/inspect/plugin-soup.xml: + * docs/plugins/inspect/plugin-spectrum.xml: + * docs/plugins/inspect/plugin-speex.xml: + * docs/plugins/inspect/plugin-taglib.xml: + * docs/plugins/inspect/plugin-udp.xml: + * docs/plugins/inspect/plugin-video4linux2.xml: + * docs/plugins/inspect/plugin-videobox.xml: + * docs/plugins/inspect/plugin-videocrop.xml: + * docs/plugins/inspect/plugin-videofilter.xml: + * docs/plugins/inspect/plugin-videomixer.xml: + * docs/plugins/inspect/plugin-vpx.xml: + * docs/plugins/inspect/plugin-wavenc.xml: + * docs/plugins/inspect/plugin-wavpack.xml: + * docs/plugins/inspect/plugin-wavparse.xml: + * docs/plugins/inspect/plugin-ximagesrc.xml: + * docs/plugins/inspect/plugin-y4menc.xml: + * gst-plugins-good.doap: + * win32/common/config.h: + Release 1.3.3 + +2014-06-22 17:36:28 +0200 Sebastian Dröge + + * 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/hr.po: + * po/hu.po: + * po/id.po: + * po/it.po: + * po/ja.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: + * po/zh_HK.po: + * po/zh_TW.po: + Update .po files 2014-06-22 14:24:24 +0200 Sebastian Dröge diff --git a/Makefile.in b/Makefile.in index 01c90974..53f65c47 100644 --- a/Makefile.in +++ b/Makefile.in @@ -98,7 +98,7 @@ DIST_COMMON = $(top_srcdir)/common/win32.mak \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in $(srcdir)/gst-plugins-good.spec.in \ ABOUT-NLS $(noinst_HEADERS) COPYING compile config.guess \ - config.rpath config.sub depcomp install-sh missing ltmain.sh + config.rpath config.sub install-sh missing ltmain.sh subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ diff --git a/NEWS b/NEWS index de3b8050..ea07e569 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -This is GStreamer Good Plugins 1.3.3 +This is GStreamer Good Plugins 1.3.90 Changes since 1.2: @@ -129,7 +129,7 @@ Major changes: with downstream via caps. ∘ Lots of fixes for coverity warnings all over the place. ∘ Negotiation related performance improvements. - ∘ 500+ fixed bug reports, and many other bug fixes and other + ∘ 800+ fixed bug reports, and many other bug fixes and other improvements everywhere that had no bug report. Things to look out for: @@ -137,6 +137,9 @@ Things to look out for: element. • The mfcdec element was removed and replaced by v4l2videodec. • osxvideosink is only available in OS X 10.6 or newer. - • The GstDeviceMonitor API will likely change slightly before the - 1.4.0 release. - + • On Android the namespace of the automatically generated Java class + for initialization of GStreamer has changed from com.gstreamer to + org.freedesktop.gstreamer to prevent namespace pollution. + • On iOS you have to update your gst_ios_init.h and gst_ios_init.m in + your projects from the one included in the binaries if you used the + GnuTLS GIO module before. The loading mechanism has slightly changed. diff --git a/RELEASE b/RELEASE index 141e24b4..45edb371 100644 --- a/RELEASE +++ b/RELEASE @@ -1,22 +1,27 @@ -Release notes for GStreamer Good Plugins 1.3.3 +Release notes for GStreamer Good Plugins 1.3.90 -The GStreamer team is pleased to announce the third release of the unstable -1.3 release series. The 1.3 release series is adding new features on top of -the 1.0 and 1.2 series and is part of the API and ABI-stable 1.x release -series of the GStreamer multimedia framework. The unstable 1.3 release series -will lead to the stable 1.4 release series in the next weeks, and newly added -API can still change until that point. +The GStreamer team is pleased to announce the first release candidate of +the stable 1.4 release series. The 1.4 release series is adding new features +on top of the 1.0 and 1.2 series and is part of the API and ABI-stable 1.x +release series of the GStreamer multimedia framework. -This is hopefully the last 1.3 development release and will be followed by -the first 1.4.0 release candidate (1.3.90) in 1-2 weeks. Which then hopefully -is followed by 1.4.0 soonish in early July. +This release candidate will hopefully shortly be followed by the stable 1.4.0 +release if no bigger regressions or bigger issues are detected, and enough +testing of the release candidate happened. The new API that was added during +the 1.3 release series is not expected to change anymore at this point. -Binaries for Android, iOS, Mac OS X and Windows will be provided separately -during the unstable 1.3 release series. +Binaries for Android, iOS, Mac OS X and Windows are provided together with this +release. + + +The stable 1.4 release series is API and ABI compatible with 1.0.x, 1.2.x and +any other 1.x release series in the future. Compared to 1.2.x it contains some +new features and more intrusive changes that were considered too risky as a +bugfix. @@ -63,19 +68,11 @@ contains a set of codecs plugins based on libav (formerly gst-ffmpeg) Bugs fixed in this release - * 725903 : flvdemux: set RESYNC buffer flag when bridging large PTS gaps - * 726512 : some svq3/mov files stall on start - * 726556 : POTFILES.in is out of date - * 728501 : rtpaux/rtprtx: Unit tests are racy and take very long sometimes - * 729707 : souphttpsrc: Add custom sticky event to contain the HTTP request and response headers - * 730473 : rtspsrc: add support for key length parameters - * 730476 : v4l2videodec: stalls on large seeks - * 730563 : Propagate DISCONT and DELTAUNIT flags through H264 and Jpeg payloaders - * 730698 : v4lsrc: Fails using glimagesink in userptr - * 730722 : Cannot seek in a m4a AAC audio file - * 731169 : wavparse: Puts codec_data on raw audio caps - * 731475 : multipartdemux: Got data flow before stream-start - * 722303 : v4l2sink: Enable rendering of the preroll buffer + * 701110 : videomixer: sinkpads GSList is not protected for multi-threading + * 703753 : osxvideosink: remove legacy code for passing a windows ID + * 731324 : rtpssrcdemux: manage ssrc of RTCP RR packets + * 731533 : wavparse: Infinite loop in wavparse with some files + * 732144 : videobox: Add unit tests ==== Download ==== @@ -112,18 +109,14 @@ subscribe to the gstreamer-devel list. Contributors to this release - * Aleix Conchillo Flaqué - * Edward Hervey - * Guillaume Desmottes - * Jan Alexander Steffens (heftig) - * Julien Isorce - * Nicolas Dufresne + * Andoni Morales Alastruey + * David Fernandez + * Jan Schmidt + * Miguel París Díaz * Olivier Crête - * Piotr Drąg * Ravi Kiran K N * Sebastian Dröge - * Thiago Santos + * Thibault Saunier * Tim-Philipp Müller - * Vincent Penquerc'h * Wim Taymans   \ No newline at end of file diff --git a/compile b/compile index b1f47491..531136b0 100755 --- a/compile +++ b/compile @@ -1,10 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-01-04.17; # UTC +scriptversion=2012-10-14.11; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free -# Software Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -79,6 +78,53 @@ func_file_conv () esac } +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () @@ -109,43 +155,34 @@ func_cl_wrapper () ;; esac ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; -l*) - lib=${1#-l} - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - set x "$@" "$dir/$lib.dll.lib" - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - set x "$@" "$dir/$lib.lib" - break - fi - done - IFS=$save_IFS - - test "$found" != yes && set x "$@" "$lib.lib" + func_cl_dashl "${1#-l}" + set x "$@" "$lib" shift ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; -L*) - func_file_conv "${1#-L}" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" + func_cl_dashL "${1#-L}" ;; -static) shared=false diff --git a/config.guess b/config.guess index d622a44e..1f5c50c0 100755 --- a/config.guess +++ b/config.guess @@ -1,14 +1,12 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# Copyright 1992-2014 Free Software Foundation, Inc. -timestamp='2012-02-10' +timestamp='2014-03-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -22,19 +20,17 @@ timestamp='2012-02-10' # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). # -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. +# Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches with a ChangeLog entry to config-patches@gnu.org. + me=`echo "$0" | sed -e 's,.*/,,'` @@ -54,9 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in @@ -200,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} @@ -302,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) + arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) @@ -801,10 +820,13 @@ EOF i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - i*:MSYS*:*) + *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) @@ -852,21 +874,21 @@ EOF exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in @@ -879,59 +901,54 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build @@ -950,54 +967,63 @@ EOF #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; - or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-gnu + echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu + echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu + echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -1201,6 +1227,9 @@ EOF BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; @@ -1227,19 +1256,31 @@ EOF exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) @@ -1256,7 +1297,7 @@ EOF NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; - NSE-?:NONSTOP_KERNEL:*:*) + NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) @@ -1330,157 +1371,6 @@ EOF exit ;; esac -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - cat >&2 <. @@ -26,11 +20,12 @@ timestamp='2012-02-10' # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. +# Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -73,9 +68,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -123,7 +116,7 @@ esac maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) @@ -156,7 +149,7 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) + -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; @@ -225,6 +218,12 @@ case $os in -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; -lynx*) os=-lynxos ;; @@ -253,10 +252,12 @@ case $basic_machine in | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | be32 | be64 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ | bfin \ - | c4x | clipper \ + | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ @@ -264,10 +265,11 @@ case $basic_machine in | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ @@ -281,20 +283,22 @@ case $basic_machine in | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ - | nios | nios2 \ + | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ - | open8 \ - | or32 \ + | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ @@ -322,7 +326,7 @@ case $basic_machine in c6x) basic_machine=tic6x-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -364,13 +368,13 @@ case $basic_machine in | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ @@ -379,11 +383,13 @@ case $basic_machine in | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ @@ -397,18 +403,22 @@ case $basic_machine in | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ + | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ @@ -782,11 +792,15 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; - microblaze) + microblaze*) basic_machine=microblaze-xilinx ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; mingw32) - basic_machine=i386-pc + basic_machine=i686-pc os=-mingw32 ;; mingw32ce) @@ -822,7 +836,7 @@ case $basic_machine in basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) - basic_machine=i386-pc + basic_machine=i686-pc os=-msys ;; mvs) @@ -1013,7 +1027,11 @@ case $basic_machine in basic_machine=i586-unknown os=-pw32 ;; - rdos) + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) basic_machine=i386-pc os=-rdos ;; @@ -1340,21 +1358,21 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ + | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ @@ -1362,7 +1380,7 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1486,9 +1504,6 @@ case $os in -aros*) os=-aros ;; - -kaos*) - os=-kaos - ;; -zvmoe) os=-zvmoe ;; @@ -1537,6 +1552,12 @@ case $basic_machine in c4x-* | tic4x-*) os=-coff ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; tic54x-*) os=-coff ;; diff --git a/configure b/configure index d9623157..9373ad8a 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for GStreamer Good Plug-ins 1.3.3. +# Generated by GNU Autoconf 2.69 for GStreamer Good Plug-ins 1.3.90. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='GStreamer Good Plug-ins' PACKAGE_TARNAME='gst-plugins-good' -PACKAGE_VERSION='1.3.3' -PACKAGE_STRING='GStreamer Good Plug-ins 1.3.3' +PACKAGE_VERSION='1.3.90' +PACKAGE_STRING='GStreamer Good Plug-ins 1.3.90' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer' PACKAGE_URL='' @@ -1945,7 +1945,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 Good Plug-ins 1.3.3 to adapt to many kinds of systems. +\`configure' configures GStreamer Good Plug-ins 1.3.90 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2021,7 +2021,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GStreamer Good Plug-ins 1.3.3:";; + short | recursive ) echo "Configuration of GStreamer Good Plug-ins 1.3.90:";; esac cat <<\_ACEOF @@ -2384,7 +2384,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GStreamer Good Plug-ins configure 1.3.3 +GStreamer Good Plug-ins configure 1.3.90 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3195,7 +3195,7 @@ 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 Good Plug-ins $as_me 1.3.3, which was +It was created by GStreamer Good Plug-ins $as_me 1.3.90, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4177,7 +4177,7 @@ fi # Define the identity of the package. PACKAGE='gst-plugins-good' - VERSION='1.3.3' + VERSION='1.3.90' cat >>confdefs.h <<_ACEOF @@ -4388,9 +4388,9 @@ fi - PACKAGE_VERSION_MAJOR=$(echo 1.3.3 | cut -d'.' -f1) - PACKAGE_VERSION_MINOR=$(echo 1.3.3 | cut -d'.' -f2) - PACKAGE_VERSION_MICRO=$(echo 1.3.3 | cut -d'.' -f3) + PACKAGE_VERSION_MAJOR=$(echo 1.3.90 | cut -d'.' -f1) + PACKAGE_VERSION_MINOR=$(echo 1.3.90 | cut -d'.' -f2) + PACKAGE_VERSION_MICRO=$(echo 1.3.90 | cut -d'.' -f3) @@ -4401,7 +4401,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5 $as_echo_n "checking nano version... " >&6; } - NANO=$(echo 1.3.3 | cut -d'.' -f4) + NANO=$(echo 1.3.90 | cut -d'.' -f4) if test x"$NANO" = x || test "x$NANO" = "x0" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5 @@ -9057,10 +9057,10 @@ fi done - GST_CURRENT=303 + GST_CURRENT=390 GST_REVISION=0 - GST_AGE=303 - GST_LIBVERSION=303:0:303 + GST_AGE=390 + GST_LIBVERSION=390:0:390 @@ -13385,8 +13385,8 @@ CC="$lt_save_CC" -GST_REQ=1.3.3 -GSTPB_REQ=1.3.3 +GST_REQ=1.3.90 +GSTPB_REQ=1.3.90 @@ -37425,7 +37425,7 @@ 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 Good Plug-ins $as_me 1.3.3, which was +This file was extended by GStreamer Good Plug-ins $as_me 1.3.90, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -37491,7 +37491,7 @@ _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 Good Plug-ins config.status 1.3.3 +GStreamer Good Plug-ins config.status 1.3.90 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 9532a5af..ffa20932 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ dnl please read gstreamer/docs/random/autotools before changing this file dnl initialize autoconf dnl releases only do -Wall, git and prerelease does -Werror too dnl use a three digit version number for releases, and four for git/pre -AC_INIT([GStreamer Good Plug-ins],[1.3.3],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-good]) +AC_INIT([GStreamer Good Plug-ins],[1.3.90],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-good]) AG_GST_INIT @@ -43,11 +43,11 @@ AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION", [GStreamer API Version]) AG_GST_LIBTOOL_PREPARE -AS_LIBTOOL(GST, 303, 0, 303) +AS_LIBTOOL(GST, 390, 0, 390) dnl *** required versions of GStreamer stuff *** -GST_REQ=1.3.3 -GSTPB_REQ=1.3.3 +GST_REQ=1.3.90 +GSTPB_REQ=1.3.90 dnl *** autotools stuff **** diff --git a/depcomp b/depcomp index bd0ac089..4ebd5b3a 100755 --- a/depcomp +++ b/depcomp @@ -1,10 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2011-12-04.11; # UTC +scriptversion=2013-05-30.07; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011 Free Software Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,9 +27,9 @@ scriptversion=2011-12-04.11; # UTC case $1 in '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] @@ -40,8 +39,8 @@ as side-effects. Environment variables: depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. @@ -57,6 +56,66 @@ EOF ;; esac +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 @@ -69,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" +# Avoid interferences from the environment. +gccflag= dashmflag= + # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case @@ -80,26 +142,32 @@ if test "$depmode" = hp; then fi if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc fi case "$depmode" in @@ -122,8 +190,7 @@ gcc3) done "$@" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -131,13 +198,17 @@ gcc3) ;; gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then @@ -145,33 +216,31 @@ gcc) fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. + # The second -e expression handles DOS-style file names with drive + # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. +## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory +## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -189,8 +258,7 @@ sgi) "$@" -MDupdate "$tmpdepfile" fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -198,43 +266,41 @@ sgi) if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the + # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" ;; +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the + # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u @@ -247,9 +313,7 @@ aix) "$@" -M fi stat=$? - - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi @@ -258,44 +322,100 @@ aix) do test -f "$tmpdepfile" && break done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : + # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -307,8 +427,8 @@ icc) sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -319,9 +439,8 @@ hp2) # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d @@ -332,8 +451,7 @@ hp2) "$@" +Maked fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi @@ -343,77 +461,61 @@ hp2) test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" else - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; msvc7) if test "$libtool" = yes; then @@ -424,8 +526,7 @@ msvc7) "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" - if test "$stat" = 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -443,14 +544,15 @@ msvc7) p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g -s/\(.*\)/ \1 \\/p +s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { - s/.*/ / + s/.*/'"$tab"'/ G p }' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; @@ -478,7 +580,7 @@ dashmstdout) shift fi - # Remove `-o $object'. + # Remove '-o $object'. IFS=" " for arg do @@ -498,18 +600,18 @@ dashmstdout) done test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' + # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -562,11 +664,12 @@ makedepend) # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; @@ -583,7 +686,7 @@ cpp) shift fi - # Remove `-o $object'. + # Remove '-o $object'. IFS=" " for arg do @@ -602,10 +705,10 @@ cpp) esac done - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" @@ -637,23 +740,23 @@ msvisualcpp) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; + set fnord "$@" + shift + shift + ;; *) - set fnord "$@" "$arg" - shift - shift - ;; + set fnord "$@" "$arg" + shift + shift + ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; diff --git a/docs/plugins/gst-plugins-good-plugins.hierarchy b/docs/plugins/gst-plugins-good-plugins.hierarchy index 11075f7b..75fa1949 100644 --- a/docs/plugins/gst-plugins-good-plugins.hierarchy +++ b/docs/plugins/gst-plugins-good-plugins.hierarchy @@ -14,9 +14,9 @@ GObject GstAudioClock GstControlBinding GstControlSource - GstDeviceMonitor - GstPulseDeviceMonitor - GstV4l2DeviceMonitor + GstDeviceProvider + GstPulseDeviceProvider + GstV4l2DeviceProvider GstElement Gst3GPPMux GstALawDec @@ -297,7 +297,7 @@ GObject GstPadTemplate GstPlugin GstPluginFeature - GstDeviceMonitorFactory + GstDeviceProviderFactory GstElementFactory GstTypeFindFactory GstRegistry diff --git a/docs/plugins/html/gst-plugins-good-plugins-avimux.html b/docs/plugins/html/gst-plugins-good-plugins-avimux.html index 53572c81..62481cac 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-avimux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-avimux.html @@ -228,7 +228,7 @@ only work if you have the necessary encoder elements installed of course.

details

-video/x-raw, format=(string){ YUY2, I420, BGR, BGRx, BGRA, GRAY8 }, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ] +video/x-raw, format=(string){ YUY2, I420, BGR, BGRx, BGRA, GRAY8, UYVY }, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]

diff --git a/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html b/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html index 4247c3b3..e7a19f14 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html @@ -173,7 +173,7 @@

- audio/x-speex, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 } + audio/x-speex, channels=(int)1, rate=(int)16000 diff --git a/docs/plugins/html/gst-plugins-good-plugins-flvmux.html b/docs/plugins/html/gst-plugins-good-plugins-flvmux.html index c366711e..a91ed9c4 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flvmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flvmux.html @@ -179,7 +179,7 @@ GstFlvMux implements

- audio/x-speex, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 } + audio/x-speex, channels=(int)1, rate=(int)16000 diff --git a/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html b/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html index 252a7915..9bec70ca 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html @@ -124,7 +124,6 @@ void *osxvideosinkobject; NSView *superview; gboolean keep_par; - gboolean embed; GstVideoInfo info; }; diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html index de6fe145..ad5b3cba 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html index 3b0a5287..78f921fe 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html index 525be0ce..45990b50 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html index 92af448f..207fbeff 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html index 8828d656..91e2156e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html index 51e20cb7..7f569a33 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html index 1c745a4b..87c5a05f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html index 7197eb47..f66e1f7e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html index 434774bd..1b9f18e0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html index adba93bc..8c086e29 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html index e7e51bd3..163284e8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html index f23a619b..6bd6efd1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html index 577a046e..2a1a6e66 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html index 7a47005c..6729e8fe 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html index 801ee6aa..93391bb9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html index ef12f757..3031e8a1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html index 54159145..7b83ee96 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html index fdf3b22d..de410e4a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html index 80baa9b9..60d751ff 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html index 39935333..b6c780b9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html index 10f9ba2d..85dda917 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html index 77e92d04..797d4594 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html index 7bd51a48..de2cd750 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html index d7ca1a73..9ebf5c3b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html index 2fe0aaa3..26665a22 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html index 6011dbb7..a6f9d6a8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html index c9e54424..533edc36 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html index a5b3334c..a5c94f98 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html index e007b17b..ed9fbde7 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html index 192b1ee9..4047d42d 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html index 5fe12842..16d24f6d 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html index 007ac4d0..75390da5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html index be96de83..fdfa61f8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html index 9626d250..a81f7a14 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html index 9832a59a..35c1b201 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html index 6fd63d24..ea4677d9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html index 5423aacd..81bedd94 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html index 527ce6af..66bff8bb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html index 63e68f58..fb6a110f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html index 8b59b3d6..93a5ed89 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html index c7c3357b..d3235ed8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html index d5d46052..62ced3f2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html index 39572d06..a3a4e79e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html index ee6508c7..c4d5ecbf 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html index 63633fe7..bf2623c0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html index 07d55778..80918747 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html index 81a5f951..c16bf16c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html index 1bd97568..5cc15997 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html index 402bce57..361ac5bb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html index 33fbed0d..02a3fa61 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html index 7b3163f9..b433e469 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html index fd5c257c..224c6d46 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html index c8a911ea..87a8d583 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html index a8cea4b0..d795e742 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html index 89cec1b4..c6268680 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html index 14d8d22f..af3781aa 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html index d14fb959..89979d13 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html index b816380b..00e5cff6 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html index 065c79db..0fd27019 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html index d0c29d30..f7c86778 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html index 5c48d5f0..76fccd2b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html index a16e880b..742802a8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html index 6463ba80..9361c4c2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html index 60680fbf..a8845fcd 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html index 6cd6a7bc..ac8768d0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html @@ -42,7 +42,7 @@

version

-1.3.3 +1.3.90

run-time license

diff --git a/docs/plugins/html/gst-plugins-good-plugins-videomixer.html b/docs/plugins/html/gst-plugins-good-plugins-videomixer.html index 8edbd67d..d136e059 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videomixer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videomixer.html @@ -165,7 +165,7 @@ framerate of the output video is 10 frames per second.

class

-Filter/Editor/Video +Filter/Editor/Video/Compositor diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html index 5fc42220..ce5edcc2 100644 --- a/docs/plugins/html/index.html +++ b/docs/plugins/html/index.html @@ -15,7 +15,7 @@

- for GStreamer Good Plugins 1.0 (1.3.3) + for GStreamer Good Plugins 1.0 (1.3.90) The latest version of this documentation can be found on-line at http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good/html/.

diff --git a/docs/plugins/inspect/plugin-1394.xml b/docs/plugins/inspect/plugin-1394.xml index 0e3a3357..e301926b 100644 --- a/docs/plugins/inspect/plugin-1394.xml +++ b/docs/plugins/inspect/plugin-1394.xml @@ -3,7 +3,7 @@ Source for video data via IEEE1394 interface ../../ext/raw1394/.libs/libgst1394.so libgst1394.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-aasink.xml b/docs/plugins/inspect/plugin-aasink.xml index 1413dbf1..2942e4bb 100644 --- a/docs/plugins/inspect/plugin-aasink.xml +++ b/docs/plugins/inspect/plugin-aasink.xml @@ -3,7 +3,7 @@ ASCII Art video sink ../../ext/aalib/.libs/libgstaasink.so libgstaasink.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-alaw.xml b/docs/plugins/inspect/plugin-alaw.xml index 5a3141ff..6b5aca18 100644 --- a/docs/plugins/inspect/plugin-alaw.xml +++ b/docs/plugins/inspect/plugin-alaw.xml @@ -3,7 +3,7 @@ ALaw audio conversion routines ../../gst/law/.libs/libgstalaw.so libgstalaw.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-alpha.xml b/docs/plugins/inspect/plugin-alpha.xml index 413ac89f..1f8a7c7e 100644 --- a/docs/plugins/inspect/plugin-alpha.xml +++ b/docs/plugins/inspect/plugin-alpha.xml @@ -3,7 +3,7 @@ adds an alpha channel to video - constant or via chroma-keying ../../gst/alpha/.libs/libgstalpha.so libgstalpha.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-alphacolor.xml b/docs/plugins/inspect/plugin-alphacolor.xml index f0da08cd..f74eb25c 100644 --- a/docs/plugins/inspect/plugin-alphacolor.xml +++ b/docs/plugins/inspect/plugin-alphacolor.xml @@ -3,7 +3,7 @@ RGBA from/to AYUV colorspace conversion preserving the alpha channel ../../gst/alpha/.libs/libgstalphacolor.so libgstalphacolor.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-apetag.xml b/docs/plugins/inspect/plugin-apetag.xml index e475e948..7daadd28 100644 --- a/docs/plugins/inspect/plugin-apetag.xml +++ b/docs/plugins/inspect/plugin-apetag.xml @@ -3,7 +3,7 @@ APEv1/2 tag reader ../../gst/apetag/.libs/libgstapetag.so libgstapetag.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-audiofx.xml b/docs/plugins/inspect/plugin-audiofx.xml index 3be61098..19b803e1 100644 --- a/docs/plugins/inspect/plugin-audiofx.xml +++ b/docs/plugins/inspect/plugin-audiofx.xml @@ -3,7 +3,7 @@ Audio effects plugin ../../gst/audiofx/.libs/libgstaudiofx.so libgstaudiofx.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-audioparsers.xml b/docs/plugins/inspect/plugin-audioparsers.xml index 51e28f20..7b50c6e9 100644 --- a/docs/plugins/inspect/plugin-audioparsers.xml +++ b/docs/plugins/inspect/plugin-audioparsers.xml @@ -3,7 +3,7 @@ Parsers for various audio formats ../../gst/audioparsers/.libs/libgstaudioparsers.so libgstaudioparsers.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-auparse.xml b/docs/plugins/inspect/plugin-auparse.xml index f5c93c3d..2a270290 100644 --- a/docs/plugins/inspect/plugin-auparse.xml +++ b/docs/plugins/inspect/plugin-auparse.xml @@ -3,7 +3,7 @@ parses au streams ../../gst/auparse/.libs/libgstauparse.so libgstauparse.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-autodetect.xml b/docs/plugins/inspect/plugin-autodetect.xml index 726df7fc..4074c5eb 100644 --- a/docs/plugins/inspect/plugin-autodetect.xml +++ b/docs/plugins/inspect/plugin-autodetect.xml @@ -3,7 +3,7 @@ Plugin contains auto-detection plugins for video/audio in- and outputs ../../gst/autodetect/.libs/libgstautodetect.so libgstautodetect.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-avi.xml b/docs/plugins/inspect/plugin-avi.xml index 9331c961..53a90e2d 100644 --- a/docs/plugins/inspect/plugin-avi.xml +++ b/docs/plugins/inspect/plugin-avi.xml @@ -3,7 +3,7 @@ AVI stream handling ../../gst/avi/.libs/libgstavi.so libgstavi.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release @@ -65,7 +65,7 @@ video_%u sink request -
video/x-raw, format=(string){ YUY2, I420, BGR, BGRx, BGRA, GRAY8 }, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-divx, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ], divxversion=(int)[ 3, 5 ]; video/x-msmpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ], msmpegversion=(int)[ 41, 43 ]; video/mpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ], mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false; video/x-h263, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-dv, width=(int)720, height=(int){ 576, 480 }, framerate=(fraction)[ 0/1, 2147483647/1 ], systemstream=(boolean)false; video/x-huffyuv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-wmv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ], wmvversion=(int)[ 1, 3 ]; image/x-jpc, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
+
video/x-raw, format=(string){ YUY2, I420, BGR, BGRx, BGRA, GRAY8, UYVY }, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-divx, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ], divxversion=(int)[ 3, 5 ]; video/x-msmpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ], msmpegversion=(int)[ 41, 43 ]; video/mpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ], mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false; video/x-h263, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-dv, width=(int)720, height=(int){ 576, 480 }, framerate=(fraction)[ 0/1, 2147483647/1 ], systemstream=(boolean)false; video/x-huffyuv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-wmv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ], wmvversion=(int)[ 1, 3 ]; image/x-jpc, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
src diff --git a/docs/plugins/inspect/plugin-cacasink.xml b/docs/plugins/inspect/plugin-cacasink.xml index 64002372..33c648d9 100644 --- a/docs/plugins/inspect/plugin-cacasink.xml +++ b/docs/plugins/inspect/plugin-cacasink.xml @@ -3,7 +3,7 @@ Colored ASCII Art video sink ../../ext/libcaca/.libs/libgstcacasink.so libgstcacasink.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-cairo.xml b/docs/plugins/inspect/plugin-cairo.xml index e565aff3..f2bad964 100644 --- a/docs/plugins/inspect/plugin-cairo.xml +++ b/docs/plugins/inspect/plugin-cairo.xml @@ -3,7 +3,7 @@ Cairo-based elements ../../ext/cairo/.libs/libgstcairo.so libgstcairo.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-cutter.xml b/docs/plugins/inspect/plugin-cutter.xml index b3bd432b..3b23e887 100644 --- a/docs/plugins/inspect/plugin-cutter.xml +++ b/docs/plugins/inspect/plugin-cutter.xml @@ -3,7 +3,7 @@ Audio Cutter to split audio into non-silent bits ../../gst/cutter/.libs/libgstcutter.so libgstcutter.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-debug.xml b/docs/plugins/inspect/plugin-debug.xml index 37fed155..ed89b2cb 100644 --- a/docs/plugins/inspect/plugin-debug.xml +++ b/docs/plugins/inspect/plugin-debug.xml @@ -3,7 +3,7 @@ elements for testing and debugging ../../gst/debugutils/.libs/libgstdebug.so libgstdebug.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-deinterlace.xml b/docs/plugins/inspect/plugin-deinterlace.xml index cdea31a8..ccd56bd0 100644 --- a/docs/plugins/inspect/plugin-deinterlace.xml +++ b/docs/plugins/inspect/plugin-deinterlace.xml @@ -3,7 +3,7 @@ Deinterlacer ../../gst/deinterlace/.libs/libgstdeinterlace.so libgstdeinterlace.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-dtmf.xml b/docs/plugins/inspect/plugin-dtmf.xml index f234e024..93830e12 100644 --- a/docs/plugins/inspect/plugin-dtmf.xml +++ b/docs/plugins/inspect/plugin-dtmf.xml @@ -3,7 +3,7 @@ DTMF plugins ../../gst/dtmf/.libs/libgstdtmf.so libgstdtmf.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-dv.xml b/docs/plugins/inspect/plugin-dv.xml index 00459f68..1a84472b 100644 --- a/docs/plugins/inspect/plugin-dv.xml +++ b/docs/plugins/inspect/plugin-dv.xml @@ -3,7 +3,7 @@ DV demuxer and decoder based on libdv (libdv.sf.net) ../../ext/dv/.libs/libgstdv.so libgstdv.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-effectv.xml b/docs/plugins/inspect/plugin-effectv.xml index 753bd431..bfd8d7b1 100644 --- a/docs/plugins/inspect/plugin-effectv.xml +++ b/docs/plugins/inspect/plugin-effectv.xml @@ -3,7 +3,7 @@ effect plugins from the effectv project ../../gst/effectv/.libs/libgsteffectv.so libgsteffectv.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-equalizer.xml b/docs/plugins/inspect/plugin-equalizer.xml index dbbebb03..c54382d4 100644 --- a/docs/plugins/inspect/plugin-equalizer.xml +++ b/docs/plugins/inspect/plugin-equalizer.xml @@ -3,7 +3,7 @@ GStreamer audio equalizers ../../gst/equalizer/.libs/libgstequalizer.so libgstequalizer.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-flac.xml b/docs/plugins/inspect/plugin-flac.xml index f8634549..5c88958e 100644 --- a/docs/plugins/inspect/plugin-flac.xml +++ b/docs/plugins/inspect/plugin-flac.xml @@ -3,7 +3,7 @@ The FLAC Lossless compressor Codec ../../ext/flac/.libs/libgstflac.so libgstflac.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-flv.xml b/docs/plugins/inspect/plugin-flv.xml index 4c9abf44..a797c0d5 100644 --- a/docs/plugins/inspect/plugin-flv.xml +++ b/docs/plugins/inspect/plugin-flv.xml @@ -3,7 +3,7 @@ FLV muxing and demuxing plugin ../../gst/flv/.libs/libgstflv.so libgstflv.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release @@ -26,7 +26,7 @@ audio source sometimes -
audio/x-adpcm, layout=(string)swf, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int){ 1, 2 }, rate=(int){ 5512, 8000, 11025, 22050, 44100 }, parsed=(boolean)true; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, framed=(boolean)true; audio/x-nellymoser, channels=(int){ 1, 2 }, rate=(int){ 5512, 8000, 11025, 16000, 22050, 44100 }; audio/x-raw, format=(string){ U8, S16LE }, layout=(string)interleaved, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-alaw, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-mulaw, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-speex, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }
+
audio/x-adpcm, layout=(string)swf, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int){ 1, 2 }, rate=(int){ 5512, 8000, 11025, 22050, 44100 }, parsed=(boolean)true; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, framed=(boolean)true; audio/x-nellymoser, channels=(int){ 1, 2 }, rate=(int){ 5512, 8000, 11025, 16000, 22050, 44100 }; audio/x-raw, format=(string){ U8, S16LE }, layout=(string)interleaved, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-alaw, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-mulaw, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-speex, channels=(int)1, rate=(int)16000
video @@ -47,7 +47,7 @@ audio sink request -
audio/x-adpcm, layout=(string)swf, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int){ 1, 2 }, rate=(int){ 5512, 8000, 11025, 22050, 44100 }, parsed=(boolean)true; audio/mpeg, mpegversion=(int){ 4, 2 }, stream-format=(string)raw; audio/x-nellymoser, channels=(int){ 1, 2 }, rate=(int){ 5512, 8000, 11025, 16000, 22050, 44100 }; audio/x-raw, format=(string){ U8, S16LE }, layout=(string)interleaved, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-alaw, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-mulaw, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-speex, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }
+
audio/x-adpcm, layout=(string)swf, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int){ 1, 2 }, rate=(int){ 5512, 8000, 11025, 22050, 44100 }, parsed=(boolean)true; audio/mpeg, mpegversion=(int){ 4, 2 }, stream-format=(string)raw; audio/x-nellymoser, channels=(int){ 1, 2 }, rate=(int){ 5512, 8000, 11025, 16000, 22050, 44100 }; audio/x-raw, format=(string){ U8, S16LE }, layout=(string)interleaved, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-alaw, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-mulaw, channels=(int){ 1, 2 }, rate=(int){ 5512, 11025, 22050, 44100 }; audio/x-speex, channels=(int)1, rate=(int)16000
video diff --git a/docs/plugins/inspect/plugin-flxdec.xml b/docs/plugins/inspect/plugin-flxdec.xml index 4d31fe3f..91d61f63 100644 --- a/docs/plugins/inspect/plugin-flxdec.xml +++ b/docs/plugins/inspect/plugin-flxdec.xml @@ -3,7 +3,7 @@ FLC/FLI/FLX video decoder ../../gst/flx/.libs/libgstflxdec.so libgstflxdec.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-gdkpixbuf.xml b/docs/plugins/inspect/plugin-gdkpixbuf.xml index 9d8c40c8..ea26a9eb 100644 --- a/docs/plugins/inspect/plugin-gdkpixbuf.xml +++ b/docs/plugins/inspect/plugin-gdkpixbuf.xml @@ -3,7 +3,7 @@ GdkPixbuf-based image decoder, overlay and sink ../../ext/gdk_pixbuf/.libs/libgstgdkpixbuf.so libgstgdkpixbuf.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-goom.xml b/docs/plugins/inspect/plugin-goom.xml index 57da6b9d..702bbac1 100644 --- a/docs/plugins/inspect/plugin-goom.xml +++ b/docs/plugins/inspect/plugin-goom.xml @@ -3,7 +3,7 @@ GOOM visualization filter ../../gst/goom/.libs/libgstgoom.so libgstgoom.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-goom2k1.xml b/docs/plugins/inspect/plugin-goom2k1.xml index d96617c6..97fb8ab9 100644 --- a/docs/plugins/inspect/plugin-goom2k1.xml +++ b/docs/plugins/inspect/plugin-goom2k1.xml @@ -3,7 +3,7 @@ GOOM 2k1 visualization filter ../../gst/goom2k1/.libs/libgstgoom2k1.so libgstgoom2k1.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-icydemux.xml b/docs/plugins/inspect/plugin-icydemux.xml index ed200040..4a9c63fa 100644 --- a/docs/plugins/inspect/plugin-icydemux.xml +++ b/docs/plugins/inspect/plugin-icydemux.xml @@ -3,7 +3,7 @@ Demux ICY tags from a stream ../../gst/icydemux/.libs/libgsticydemux.so libgsticydemux.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-id3demux.xml b/docs/plugins/inspect/plugin-id3demux.xml index 7de84aff..973ff39d 100644 --- a/docs/plugins/inspect/plugin-id3demux.xml +++ b/docs/plugins/inspect/plugin-id3demux.xml @@ -3,7 +3,7 @@ Demux ID3v1 and ID3v2 tags from a file ../../gst/id3demux/.libs/libgstid3demux.so libgstid3demux.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-imagefreeze.xml b/docs/plugins/inspect/plugin-imagefreeze.xml index fbfa754f..40b5fedb 100644 --- a/docs/plugins/inspect/plugin-imagefreeze.xml +++ b/docs/plugins/inspect/plugin-imagefreeze.xml @@ -3,7 +3,7 @@ Still frame stream generator ../../gst/imagefreeze/.libs/libgstimagefreeze.so libgstimagefreeze.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-interleave.xml b/docs/plugins/inspect/plugin-interleave.xml index 1f54157b..de9eac56 100644 --- a/docs/plugins/inspect/plugin-interleave.xml +++ b/docs/plugins/inspect/plugin-interleave.xml @@ -3,7 +3,7 @@ Audio interleaver/deinterleaver ../../gst/interleave/.libs/libgstinterleave.so libgstinterleave.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-isomp4.xml b/docs/plugins/inspect/plugin-isomp4.xml index 4dd99d8d..2e8183cf 100644 --- a/docs/plugins/inspect/plugin-isomp4.xml +++ b/docs/plugins/inspect/plugin-isomp4.xml @@ -3,7 +3,7 @@ ISO base media file format support (mp4, 3gpp, qt, mj2) ../../gst/isomp4/.libs/libgstisomp4.so libgstisomp4.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-jack.xml b/docs/plugins/inspect/plugin-jack.xml index 9f5d6e6e..1c781173 100644 --- a/docs/plugins/inspect/plugin-jack.xml +++ b/docs/plugins/inspect/plugin-jack.xml @@ -3,7 +3,7 @@ JACK audio elements ../../ext/jack/.libs/libgstjack.so libgstjack.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-jpeg.xml b/docs/plugins/inspect/plugin-jpeg.xml index 1a213a4e..07ab61b3 100644 --- a/docs/plugins/inspect/plugin-jpeg.xml +++ b/docs/plugins/inspect/plugin-jpeg.xml @@ -3,7 +3,7 @@ JPeg plugin library ../../ext/jpeg/.libs/libgstjpeg.so libgstjpeg.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-level.xml b/docs/plugins/inspect/plugin-level.xml index e692add2..8b2f8158 100644 --- a/docs/plugins/inspect/plugin-level.xml +++ b/docs/plugins/inspect/plugin-level.xml @@ -3,7 +3,7 @@ Audio level plugin ../../gst/level/.libs/libgstlevel.so libgstlevel.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-matroska.xml b/docs/plugins/inspect/plugin-matroska.xml index f32e5c6e..926bcb8c 100644 --- a/docs/plugins/inspect/plugin-matroska.xml +++ b/docs/plugins/inspect/plugin-matroska.xml @@ -3,7 +3,7 @@ Matroska and WebM stream handling ../../gst/matroska/.libs/libgstmatroska.so libgstmatroska.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-mulaw.xml b/docs/plugins/inspect/plugin-mulaw.xml index dd863f71..d5bf826d 100644 --- a/docs/plugins/inspect/plugin-mulaw.xml +++ b/docs/plugins/inspect/plugin-mulaw.xml @@ -3,7 +3,7 @@ MuLaw audio conversion routines ../../gst/law/.libs/libgstmulaw.so libgstmulaw.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-multifile.xml b/docs/plugins/inspect/plugin-multifile.xml index 5dd67c2e..2f071419 100644 --- a/docs/plugins/inspect/plugin-multifile.xml +++ b/docs/plugins/inspect/plugin-multifile.xml @@ -3,7 +3,7 @@ Reads/Writes buffers from/to sequentially named files ../../gst/multifile/.libs/libgstmultifile.so libgstmultifile.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-multipart.xml b/docs/plugins/inspect/plugin-multipart.xml index fde5bc83..97e18762 100644 --- a/docs/plugins/inspect/plugin-multipart.xml +++ b/docs/plugins/inspect/plugin-multipart.xml @@ -3,7 +3,7 @@ multipart stream manipulation ../../gst/multipart/.libs/libgstmultipart.so libgstmultipart.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-navigationtest.xml b/docs/plugins/inspect/plugin-navigationtest.xml index 83752f9a..36ed585d 100644 --- a/docs/plugins/inspect/plugin-navigationtest.xml +++ b/docs/plugins/inspect/plugin-navigationtest.xml @@ -3,7 +3,7 @@ Template for a video filter ../../gst/debugutils/.libs/libgstnavigationtest.so libgstnavigationtest.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-oss4.xml b/docs/plugins/inspect/plugin-oss4.xml index b49bccbc..3e133611 100644 --- a/docs/plugins/inspect/plugin-oss4.xml +++ b/docs/plugins/inspect/plugin-oss4.xml @@ -3,7 +3,7 @@ Open Sound System (OSS) version 4 support for GStreamer ../../sys/oss4/.libs/libgstoss4audio.so libgstoss4audio.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-ossaudio.xml b/docs/plugins/inspect/plugin-ossaudio.xml index f4189c49..efd10e9b 100644 --- a/docs/plugins/inspect/plugin-ossaudio.xml +++ b/docs/plugins/inspect/plugin-ossaudio.xml @@ -3,7 +3,7 @@ OSS (Open Sound System) support for GStreamer ../../sys/oss/.libs/libgstossaudio.so libgstossaudio.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-png.xml b/docs/plugins/inspect/plugin-png.xml index b8377f85..11ec9989 100644 --- a/docs/plugins/inspect/plugin-png.xml +++ b/docs/plugins/inspect/plugin-png.xml @@ -3,7 +3,7 @@ PNG plugin library ../../ext/libpng/.libs/libgstpng.so libgstpng.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-pulseaudio.xml b/docs/plugins/inspect/plugin-pulseaudio.xml index c7d99e8b..92bd986b 100644 --- a/docs/plugins/inspect/plugin-pulseaudio.xml +++ b/docs/plugins/inspect/plugin-pulseaudio.xml @@ -3,7 +3,7 @@ PulseAudio plugin library ../../ext/pulse/.libs/libgstpulse.so libgstpulse.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-replaygain.xml b/docs/plugins/inspect/plugin-replaygain.xml index dc3cff60..a2a18146 100644 --- a/docs/plugins/inspect/plugin-replaygain.xml +++ b/docs/plugins/inspect/plugin-replaygain.xml @@ -3,7 +3,7 @@ ReplayGain volume normalization ../../gst/replaygain/.libs/libgstreplaygain.so libgstreplaygain.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-rtp.xml b/docs/plugins/inspect/plugin-rtp.xml index 307b5d96..a6cb81a6 100644 --- a/docs/plugins/inspect/plugin-rtp.xml +++ b/docs/plugins/inspect/plugin-rtp.xml @@ -3,7 +3,7 @@ Real-time protocol plugins ../../gst/rtp/.libs/libgstrtp.so libgstrtp.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-rtpmanager.xml b/docs/plugins/inspect/plugin-rtpmanager.xml index ab347252..be60c1fa 100644 --- a/docs/plugins/inspect/plugin-rtpmanager.xml +++ b/docs/plugins/inspect/plugin-rtpmanager.xml @@ -3,7 +3,7 @@ RTP session management plugin library ../../gst/rtpmanager/.libs/libgstrtpmanager.so libgstrtpmanager.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-rtsp.xml b/docs/plugins/inspect/plugin-rtsp.xml index 8cb1f69a..287cfb67 100644 --- a/docs/plugins/inspect/plugin-rtsp.xml +++ b/docs/plugins/inspect/plugin-rtsp.xml @@ -3,7 +3,7 @@ transfer data via RTSP ../../gst/rtsp/.libs/libgstrtsp.so libgstrtsp.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-shapewipe.xml b/docs/plugins/inspect/plugin-shapewipe.xml index 6c86f252..e4051b01 100644 --- a/docs/plugins/inspect/plugin-shapewipe.xml +++ b/docs/plugins/inspect/plugin-shapewipe.xml @@ -3,7 +3,7 @@ Shape Wipe transition filter ../../gst/shapewipe/.libs/libgstshapewipe.so libgstshapewipe.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-shout2send.xml b/docs/plugins/inspect/plugin-shout2send.xml index 386ae427..a8ad1717 100644 --- a/docs/plugins/inspect/plugin-shout2send.xml +++ b/docs/plugins/inspect/plugin-shout2send.xml @@ -3,7 +3,7 @@ Sends data to an icecast server using libshout2 ../../ext/shout2/.libs/libgstshout2.so libgstshout2.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good libshout2 diff --git a/docs/plugins/inspect/plugin-smpte.xml b/docs/plugins/inspect/plugin-smpte.xml index 555bd737..9d5e1d5f 100644 --- a/docs/plugins/inspect/plugin-smpte.xml +++ b/docs/plugins/inspect/plugin-smpte.xml @@ -3,7 +3,7 @@ Apply the standard SMPTE transitions on video images ../../gst/smpte/.libs/libgstsmpte.so libgstsmpte.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-soup.xml b/docs/plugins/inspect/plugin-soup.xml index 378d8e1f..9433dc60 100644 --- a/docs/plugins/inspect/plugin-soup.xml +++ b/docs/plugins/inspect/plugin-soup.xml @@ -3,7 +3,7 @@ libsoup HTTP client src/sink ../../ext/soup/.libs/libgstsouphttpsrc.so libgstsouphttpsrc.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-spectrum.xml b/docs/plugins/inspect/plugin-spectrum.xml index 2a49c363..708e8bbe 100644 --- a/docs/plugins/inspect/plugin-spectrum.xml +++ b/docs/plugins/inspect/plugin-spectrum.xml @@ -3,7 +3,7 @@ Run an FFT on the audio signal, output spectrum data ../../gst/spectrum/.libs/libgstspectrum.so libgstspectrum.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-speex.xml b/docs/plugins/inspect/plugin-speex.xml index 24a85695..f458aeb0 100644 --- a/docs/plugins/inspect/plugin-speex.xml +++ b/docs/plugins/inspect/plugin-speex.xml @@ -3,7 +3,7 @@ Speex plugin library ../../ext/speex/.libs/libgstspeex.so libgstspeex.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-taglib.xml b/docs/plugins/inspect/plugin-taglib.xml index 02caded9..a702cf47 100644 --- a/docs/plugins/inspect/plugin-taglib.xml +++ b/docs/plugins/inspect/plugin-taglib.xml @@ -3,7 +3,7 @@ Tag writing plug-in based on taglib ../../ext/taglib/.libs/libgsttaglib.so libgsttaglib.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-udp.xml b/docs/plugins/inspect/plugin-udp.xml index 26bd3a21..490eaefb 100644 --- a/docs/plugins/inspect/plugin-udp.xml +++ b/docs/plugins/inspect/plugin-udp.xml @@ -3,7 +3,7 @@ transfer data via UDP ../../gst/udp/.libs/libgstudp.so libgstudp.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-video4linux2.xml b/docs/plugins/inspect/plugin-video4linux2.xml index 36370c16..e54ca48f 100644 --- a/docs/plugins/inspect/plugin-video4linux2.xml +++ b/docs/plugins/inspect/plugin-video4linux2.xml @@ -3,7 +3,7 @@ elements for Video 4 Linux ../../sys/v4l2/.libs/libgstvideo4linux2.so libgstvideo4linux2.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-videobox.xml b/docs/plugins/inspect/plugin-videobox.xml index 74438553..f8d7b86a 100644 --- a/docs/plugins/inspect/plugin-videobox.xml +++ b/docs/plugins/inspect/plugin-videobox.xml @@ -3,7 +3,7 @@ resizes a video by adding borders or cropping ../../gst/videobox/.libs/libgstvideobox.so libgstvideobox.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-videocrop.xml b/docs/plugins/inspect/plugin-videocrop.xml index 66b25c2a..3e743cdd 100644 --- a/docs/plugins/inspect/plugin-videocrop.xml +++ b/docs/plugins/inspect/plugin-videocrop.xml @@ -3,7 +3,7 @@ Crops video into a user-defined region ../../gst/videocrop/.libs/libgstvideocrop.so libgstvideocrop.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-videofilter.xml b/docs/plugins/inspect/plugin-videofilter.xml index 70e93699..587739e7 100644 --- a/docs/plugins/inspect/plugin-videofilter.xml +++ b/docs/plugins/inspect/plugin-videofilter.xml @@ -3,7 +3,7 @@ Video filters plugin ../../gst/videofilter/.libs/libgstvideofilter.so libgstvideofilter.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-videomixer.xml b/docs/plugins/inspect/plugin-videomixer.xml index 205b5aea..58fa1b66 100644 --- a/docs/plugins/inspect/plugin-videomixer.xml +++ b/docs/plugins/inspect/plugin-videomixer.xml @@ -3,7 +3,7 @@ Video mixer ../../gst/videomixer/.libs/libgstvideomixer.so libgstvideomixer.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release @@ -12,7 +12,7 @@ videomixer Video mixer 2 - Filter/Editor/Video + Filter/Editor/Video/Compositor Mix multiple video streams Wim Taymans <wim@fluendo.com>, Sebastian Dröge <sebastian.droege@collabora.co.uk> diff --git a/docs/plugins/inspect/plugin-vpx.xml b/docs/plugins/inspect/plugin-vpx.xml index 5ef6d2b9..f6210bab 100644 --- a/docs/plugins/inspect/plugin-vpx.xml +++ b/docs/plugins/inspect/plugin-vpx.xml @@ -3,7 +3,7 @@ VP8 plugin ../../ext/vpx/.libs/libgstvpx.so libgstvpx.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-wavenc.xml b/docs/plugins/inspect/plugin-wavenc.xml index 4aa252b1..d5c6d0b7 100644 --- a/docs/plugins/inspect/plugin-wavenc.xml +++ b/docs/plugins/inspect/plugin-wavenc.xml @@ -3,7 +3,7 @@ Encode raw audio into WAV ../../gst/wavenc/.libs/libgstwavenc.so libgstwavenc.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-wavpack.xml b/docs/plugins/inspect/plugin-wavpack.xml index f0f26fd7..97563594 100644 --- a/docs/plugins/inspect/plugin-wavpack.xml +++ b/docs/plugins/inspect/plugin-wavpack.xml @@ -3,7 +3,7 @@ Wavpack lossless/lossy audio format handling ../../ext/wavpack/.libs/libgstwavpack.so libgstwavpack.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-wavparse.xml b/docs/plugins/inspect/plugin-wavparse.xml index 236faa14..abde3c9b 100644 --- a/docs/plugins/inspect/plugin-wavparse.xml +++ b/docs/plugins/inspect/plugin-wavparse.xml @@ -3,7 +3,7 @@ Parse a .wav file into raw audio ../../gst/wavparse/.libs/libgstwavparse.so libgstwavparse.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-ximagesrc.xml b/docs/plugins/inspect/plugin-ximagesrc.xml index f6aa5717..4d11f131 100644 --- a/docs/plugins/inspect/plugin-ximagesrc.xml +++ b/docs/plugins/inspect/plugin-ximagesrc.xml @@ -3,7 +3,7 @@ X11 video input plugin using standard Xlib calls ../../sys/ximage/.libs/libgstximagesrc.so libgstximagesrc.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/docs/plugins/inspect/plugin-y4menc.xml b/docs/plugins/inspect/plugin-y4menc.xml index 20e016bd..4202e6e2 100644 --- a/docs/plugins/inspect/plugin-y4menc.xml +++ b/docs/plugins/inspect/plugin-y4menc.xml @@ -3,7 +3,7 @@ Encodes a YUV frame into the yuv4mpeg format (mjpegtools) ../../gst/y4m/.libs/libgsty4menc.so libgsty4menc.so - 1.3.3 + 1.3.90 LGPL gst-plugins-good GStreamer Good Plug-ins source release diff --git a/ext/pulse/Makefile.am b/ext/pulse/Makefile.am index e9e564f9..a813cb6c 100644 --- a/ext/pulse/Makefile.am +++ b/ext/pulse/Makefile.am @@ -4,7 +4,7 @@ libgstpulse_la_SOURCES = \ plugin.c \ pulsesink.c \ pulsesrc.c \ - pulsedevicemonitor.c \ + pulsedeviceprovider.c \ pulseutil.c libgstpulse_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(PULSE_CFLAGS) @@ -17,6 +17,6 @@ libgstpulse_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ pulsesink.h \ pulsesrc.h \ - pulsedevicemonitor.h \ + pulsedeviceprovider.h \ pulseutil.h diff --git a/ext/pulse/Makefile.in b/ext/pulse/Makefile.in index 3d14c305..9c43564d 100644 --- a/ext/pulse/Makefile.in +++ b/ext/pulse/Makefile.in @@ -158,7 +158,7 @@ libgstpulse_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_libgstpulse_la_OBJECTS = libgstpulse_la-plugin.lo \ libgstpulse_la-pulsesink.lo libgstpulse_la-pulsesrc.lo \ - libgstpulse_la-pulsedevicemonitor.lo \ + libgstpulse_la-pulsedeviceprovider.lo \ libgstpulse_la-pulseutil.lo libgstpulse_la_OBJECTS = $(am_libgstpulse_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) @@ -562,7 +562,7 @@ libgstpulse_la_SOURCES = \ plugin.c \ pulsesink.c \ pulsesrc.c \ - pulsedevicemonitor.c \ + pulsedeviceprovider.c \ pulseutil.c libgstpulse_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(PULSE_CFLAGS) @@ -575,7 +575,7 @@ libgstpulse_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ pulsesink.h \ pulsesrc.h \ - pulsedevicemonitor.h \ + pulsedeviceprovider.h \ pulseutil.h all: all-am @@ -658,7 +658,7 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstpulse_la-plugin.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstpulse_la-pulsedevicemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstpulse_la-pulsedeviceprovider.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstpulse_la-pulsesink.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstpulse_la-pulsesrc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstpulse_la-pulseutil.Plo@am__quote@ @@ -708,12 +708,12 @@ libgstpulse_la-pulsesrc.lo: pulsesrc.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 $(libgstpulse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstpulse_la_CFLAGS) $(CFLAGS) -c -o libgstpulse_la-pulsesrc.lo `test -f 'pulsesrc.c' || echo '$(srcdir)/'`pulsesrc.c -libgstpulse_la-pulsedevicemonitor.lo: pulsedevicemonitor.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstpulse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstpulse_la_CFLAGS) $(CFLAGS) -MT libgstpulse_la-pulsedevicemonitor.lo -MD -MP -MF $(DEPDIR)/libgstpulse_la-pulsedevicemonitor.Tpo -c -o libgstpulse_la-pulsedevicemonitor.lo `test -f 'pulsedevicemonitor.c' || echo '$(srcdir)/'`pulsedevicemonitor.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstpulse_la-pulsedevicemonitor.Tpo $(DEPDIR)/libgstpulse_la-pulsedevicemonitor.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pulsedevicemonitor.c' object='libgstpulse_la-pulsedevicemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +libgstpulse_la-pulsedeviceprovider.lo: pulsedeviceprovider.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstpulse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstpulse_la_CFLAGS) $(CFLAGS) -MT libgstpulse_la-pulsedeviceprovider.lo -MD -MP -MF $(DEPDIR)/libgstpulse_la-pulsedeviceprovider.Tpo -c -o libgstpulse_la-pulsedeviceprovider.lo `test -f 'pulsedeviceprovider.c' || echo '$(srcdir)/'`pulsedeviceprovider.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstpulse_la-pulsedeviceprovider.Tpo $(DEPDIR)/libgstpulse_la-pulsedeviceprovider.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pulsedeviceprovider.c' object='libgstpulse_la-pulsedeviceprovider.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 $(libgstpulse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstpulse_la_CFLAGS) $(CFLAGS) -c -o libgstpulse_la-pulsedevicemonitor.lo `test -f 'pulsedevicemonitor.c' || echo '$(srcdir)/'`pulsedevicemonitor.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstpulse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstpulse_la_CFLAGS) $(CFLAGS) -c -o libgstpulse_la-pulsedeviceprovider.lo `test -f 'pulsedeviceprovider.c' || echo '$(srcdir)/'`pulsedeviceprovider.c libgstpulse_la-pulseutil.lo: pulseutil.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstpulse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstpulse_la_CFLAGS) $(CFLAGS) -MT libgstpulse_la-pulseutil.lo -MD -MP -MF $(DEPDIR)/libgstpulse_la-pulseutil.Tpo -c -o libgstpulse_la-pulseutil.lo `test -f 'pulseutil.c' || echo '$(srcdir)/'`pulseutil.c diff --git a/ext/pulse/plugin.c b/ext/pulse/plugin.c index ec9c89ff..a2c8fe59 100644 --- a/ext/pulse/plugin.c +++ b/ext/pulse/plugin.c @@ -27,7 +27,7 @@ #include "pulsesink.h" #include "pulsesrc.h" -#include "pulsedevicemonitor.h" +#include "pulsedeviceprovider.h" GST_DEBUG_CATEGORY (pulse_debug); @@ -49,8 +49,8 @@ plugin_init (GstPlugin * plugin) GST_TYPE_PULSESRC)) return FALSE; - if (!gst_device_monitor_register (plugin, "pulsemonitor", - GST_RANK_PRIMARY, GST_TYPE_PULSE_DEVICE_MONITOR)) + if (!gst_device_provider_register (plugin, "pulsedeviceprovider", + GST_RANK_PRIMARY, GST_TYPE_PULSE_DEVICE_PROVIDER)) return FALSE; GST_DEBUG_CATEGORY_INIT (pulse_debug, "pulse", 0, "PulseAudio elements"); diff --git a/ext/pulse/pulsedevicemonitor.c b/ext/pulse/pulsedevicemonitor.c deleted file mode 100644 index f697d104..00000000 --- a/ext/pulse/pulsedevicemonitor.c +++ /dev/null @@ -1,679 +0,0 @@ -/* GStreamer - * Copyright (C) 2012 Olivier Crete - * - * gstv4l2devicemonitor.c: V4l2 device probing and monitoring - * - * 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 "pulsedevicemonitor.h" - -#include - -#include - -#include "pulsesrc.h" -#include "pulsesink.h" -#include "pulseutil.h" - - -GST_DEBUG_CATEGORY_EXTERN (pulse_debug); -#define GST_CAT_DEFAULT pulse_debug - - -static GstDevice *gst_pulse_device_new (guint id, - const gchar * device_name, GstCaps * caps, const gchar * internal_name, - GstPulseDeviceType type); - -G_DEFINE_TYPE (GstPulseDeviceMonitor, gst_pulse_device_monitor, - GST_TYPE_DEVICE_MONITOR); - -static void gst_pulse_device_monitor_finalize (GObject * object); -static void gst_pulse_device_monitor_set_property (GObject * object, - guint prop_id, const GValue * value, GParamSpec * pspec); -static void gst_pulse_device_monitor_get_property (GObject * object, - guint prop_id, GValue * value, GParamSpec * pspec); - - -static GList *gst_pulse_device_monitor_probe (GstDeviceMonitor * monitor); -static gboolean gst_pulse_device_monitor_start (GstDeviceMonitor * monitor); -static void gst_pulse_device_monitor_stop (GstDeviceMonitor * monitor); - -enum -{ - PROP_0, - PROP_SERVER, - PROP_CLIENT_NAME, - PROP_LAST -}; - - -static void -gst_pulse_device_monitor_class_init (GstPulseDeviceMonitorClass * klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - GstDeviceMonitorClass *dm_class = GST_DEVICE_MONITOR_CLASS (klass); - gchar *client_name; - - gobject_class->set_property = gst_pulse_device_monitor_set_property; - gobject_class->get_property = gst_pulse_device_monitor_get_property; - gobject_class->finalize = gst_pulse_device_monitor_finalize; - - dm_class->probe = gst_pulse_device_monitor_probe; - dm_class->start = gst_pulse_device_monitor_start; - dm_class->stop = gst_pulse_device_monitor_stop; - - g_object_class_install_property (gobject_class, - PROP_SERVER, - g_param_spec_string ("server", "Server", - "The PulseAudio server to connect to", NULL, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - - client_name = gst_pulse_client_name (); - g_object_class_install_property (gobject_class, - PROP_CLIENT_NAME, - g_param_spec_string ("client-name", "Client Name", - "The PulseAudio client_name_to_use", client_name, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | - GST_PARAM_MUTABLE_READY)); - g_free (client_name); - - gst_device_monitor_class_set_static_metadata (dm_class, - "PulseAudio Device Monitor", "Sink/Source/Audio", - "List and monitor PulseAudio source and sink devices", - "Olivier Crete "); -} - -static void -gst_pulse_device_monitor_init (GstPulseDeviceMonitor * self) -{ - self->client_name = gst_pulse_client_name (); -} - -static void -gst_pulse_device_monitor_finalize (GObject * object) -{ - GstPulseDeviceMonitor *self = GST_PULSE_DEVICE_MONITOR (object); - - g_free (self->client_name); - g_free (self->server); - - G_OBJECT_CLASS (gst_pulse_device_monitor_parent_class)->finalize (object); -} - - -static void -gst_pulse_device_monitor_set_property (GObject * object, - guint prop_id, const GValue * value, GParamSpec * pspec) -{ - GstPulseDeviceMonitor *self = GST_PULSE_DEVICE_MONITOR (object); - - switch (prop_id) { - case PROP_SERVER: - g_free (self->server); - self->server = g_value_dup_string (value); - break; - case PROP_CLIENT_NAME: - g_free (self->client_name); - if (!g_value_get_string (value)) { - GST_WARNING_OBJECT (self, - "Empty PulseAudio client name not allowed. " - "Resetting to default value"); - self->client_name = gst_pulse_client_name (); - } else - self->client_name = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gst_pulse_device_monitor_get_property (GObject * object, - guint prop_id, GValue * value, GParamSpec * pspec) -{ - GstPulseDeviceMonitor *self = GST_PULSE_DEVICE_MONITOR (object); - - switch (prop_id) { - case PROP_SERVER: - g_value_set_string (value, self->server); - break; - case PROP_CLIENT_NAME: - g_value_set_string (value, self->client_name); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -context_state_cb (pa_context * c, void *userdata) -{ - GstPulseDeviceMonitor *self = userdata; - - switch (pa_context_get_state (c)) { - case PA_CONTEXT_READY: - case PA_CONTEXT_TERMINATED: - case PA_CONTEXT_FAILED: - pa_threaded_mainloop_signal (self->mainloop, 0); - break; - - case PA_CONTEXT_UNCONNECTED: - case PA_CONTEXT_CONNECTING: - case PA_CONTEXT_AUTHORIZING: - case PA_CONTEXT_SETTING_NAME: - break; - } -} - -static GstDevice * -new_source (const pa_source_info * info) -{ - GstCaps *caps; - guint i; - - caps = gst_caps_new_empty (); - - for (i = 0; i < info->n_formats; i++) - gst_caps_append (caps, gst_pulse_format_info_to_caps (info->formats[i])); - - return gst_pulse_device_new (info->index, info->description, - caps, info->name, GST_PULSE_DEVICE_TYPE_SOURCE); -} - -static GstDevice * -new_sink (const pa_sink_info * info) -{ - GstCaps *caps; - guint i; - - caps = gst_caps_new_empty (); - - for (i = 0; i < info->n_formats; i++) - gst_caps_append (caps, gst_pulse_format_info_to_caps (info->formats[i])); - - return gst_pulse_device_new (info->index, info->description, - caps, info->name, GST_PULSE_DEVICE_TYPE_SINK); -} - -static void -get_source_info_cb (pa_context * context, - const pa_source_info * info, int eol, void *userdata) -{ - GstPulseDeviceMonitor *self = userdata; - GstDevice *dev; - - if (eol) { - pa_threaded_mainloop_signal (self->mainloop, 0); - return; - } - - dev = new_source (info); - - if (dev) - gst_device_monitor_device_add (GST_DEVICE_MONITOR (self), dev); -} - -static void -get_sink_info_cb (pa_context * context, - const pa_sink_info * info, int eol, void *userdata) -{ - GstPulseDeviceMonitor *self = userdata; - GstDevice *dev; - - if (eol) { - pa_threaded_mainloop_signal (self->mainloop, 0); - return; - } - - dev = new_sink (info); - - if (dev) - gst_device_monitor_device_add (GST_DEVICE_MONITOR (self), dev); -} - -static void -context_subscribe_cb (pa_context * context, pa_subscription_event_type_t type, - uint32_t idx, void *userdata) -{ - GstPulseDeviceMonitor *self = userdata; - GstDeviceMonitor *monitor = userdata; - pa_subscription_event_type_t facility = - type & PA_SUBSCRIPTION_EVENT_FACILITY_MASK; - pa_subscription_event_type_t event_type = - type & PA_SUBSCRIPTION_EVENT_TYPE_MASK; - - if (facility != PA_SUBSCRIPTION_EVENT_SOURCE && - facility != PA_SUBSCRIPTION_EVENT_SINK) - return; - - if (event_type == PA_SUBSCRIPTION_EVENT_NEW) { - /* Microphone in the source output has changed */ - - if (facility == PA_SUBSCRIPTION_EVENT_SOURCE) - pa_context_get_source_info_by_index (context, idx, get_source_info_cb, - self); - else if (facility == PA_SUBSCRIPTION_EVENT_SINK) - pa_context_get_sink_info_by_index (context, idx, get_sink_info_cb, self); - } else if (event_type == PA_SUBSCRIPTION_EVENT_REMOVE) { - GstPulseDevice *dev = NULL; - GList *item; - - GST_OBJECT_LOCK (self); - for (item = monitor->devices; item; item = item->next) { - dev = item->data; - - if (((facility == PA_SUBSCRIPTION_EVENT_SOURCE && - dev->type == GST_PULSE_DEVICE_TYPE_SOURCE) || - (facility == PA_SUBSCRIPTION_EVENT_SINK && - dev->type == GST_PULSE_DEVICE_TYPE_SINK)) && - dev->device_index == idx) { - gst_object_ref (dev); - break; - } - dev = NULL; - } - GST_OBJECT_UNLOCK (self); - - if (dev) { - gst_device_monitor_device_remove (GST_DEVICE_MONITOR (self), - GST_DEVICE (dev)); - gst_object_unref (dev); - } - } -} - -static void -get_source_info_list_cb (pa_context * context, const pa_source_info * info, - int eol, void *userdata) -{ - GList **devices = userdata; - - if (eol) - return; - - *devices = g_list_prepend (*devices, gst_object_ref_sink (new_source (info))); -} - -static void -get_sink_info_list_cb (pa_context * context, const pa_sink_info * info, - int eol, void *userdata) -{ - GList **devices = userdata; - - if (eol) - return; - - *devices = g_list_prepend (*devices, gst_object_ref_sink (new_sink (info))); -} - -static GList * -gst_pulse_device_monitor_probe (GstDeviceMonitor * monitor) -{ - GstPulseDeviceMonitor *self = GST_PULSE_DEVICE_MONITOR (monitor); - GList *devices = NULL; - pa_mainloop *m = NULL; - pa_context *c = NULL; - pa_operation *o; - - if (!(m = pa_mainloop_new ())) - return NULL; - - if (!(c = pa_context_new (pa_mainloop_get_api (m), self->client_name))) { - GST_ERROR_OBJECT (self, "Failed to create context"); - goto failed; - } - - if (pa_context_connect (c, self->server, 0, NULL) < 0) { - GST_ERROR_OBJECT (self, "Failed to connect: %s", - pa_strerror (pa_context_errno (self->context))); - goto failed; - } - - for (;;) { - pa_context_state_t state; - - state = pa_context_get_state (c); - - if (!PA_CONTEXT_IS_GOOD (state)) { - GST_ELEMENT_ERROR (self, RESOURCE, FAILED, ("Failed to connect: %s", - pa_strerror (pa_context_errno (c))), (NULL)); - goto failed; - } - - if (state == PA_CONTEXT_READY) - break; - - /* Wait until the context is ready */ - if (pa_mainloop_iterate (m, TRUE, NULL) < 0) - goto failed; - - } - GST_DEBUG_OBJECT (self, "connected"); - - o = pa_context_get_sink_info_list (c, get_sink_info_list_cb, &devices); - while (pa_operation_get_state (o) == PA_OPERATION_RUNNING && - pa_operation_get_state (o) == PA_OPERATION_RUNNING) { - if (pa_mainloop_iterate (m, TRUE, NULL) < 0) - break; - } - pa_operation_unref (o); - - o = pa_context_get_source_info_list (c, get_source_info_list_cb, &devices); - while (pa_operation_get_state (o) == PA_OPERATION_RUNNING && - pa_operation_get_state (o) == PA_OPERATION_RUNNING) { - if (pa_mainloop_iterate (m, TRUE, NULL) < 0) - break; - } - pa_operation_unref (o); - - pa_context_disconnect (c); - pa_mainloop_free (m); - - return devices; - -failed: - - return NULL; -} - -static gboolean -gst_pulse_device_monitor_start (GstDeviceMonitor * monitor) -{ - GstPulseDeviceMonitor *self = GST_PULSE_DEVICE_MONITOR (monitor); - pa_operation *initial_operation; - - if (!(self->mainloop = pa_threaded_mainloop_new ())) { - GST_ERROR_OBJECT (self, "Could not create pulseaudio mainloop"); - goto mainloop_failed; - } - if (pa_threaded_mainloop_start (self->mainloop) < 0) { - GST_ERROR_OBJECT (self, "Could not start pulseaudio mainloop"); - pa_threaded_mainloop_free (self->mainloop); - self->mainloop = NULL; - goto mainloop_failed; - } - - pa_threaded_mainloop_lock (self->mainloop); - - if (!(self->context = - pa_context_new (pa_threaded_mainloop_get_api (self->mainloop), - self->client_name))) { - GST_ERROR_OBJECT (self, "Failed to create context"); - goto unlock_and_fail; - } - - pa_context_set_state_callback (self->context, context_state_cb, self); - pa_context_set_subscribe_callback (self->context, context_subscribe_cb, self); - - - GST_DEBUG_OBJECT (self, "connect to server %s", GST_STR_NULL (self->server)); - - if (pa_context_connect (self->context, self->server, 0, NULL) < 0) { - GST_ERROR_OBJECT (self, "Failed to connect: %s", - pa_strerror (pa_context_errno (self->context))); - goto unlock_and_fail; - } - - for (;;) { - pa_context_state_t state; - - state = pa_context_get_state (self->context); - - if (!PA_CONTEXT_IS_GOOD (state)) { - GST_ERROR_OBJECT (self, "Failed to connect: %s", - pa_strerror (pa_context_errno (self->context))); - goto unlock_and_fail; - } - - if (state == PA_CONTEXT_READY) - break; - - /* Wait until the context is ready */ - pa_threaded_mainloop_wait (self->mainloop); - } - GST_DEBUG_OBJECT (self, "connected"); - - pa_context_subscribe (self->context, - PA_SUBSCRIPTION_MASK_SOURCE | PA_SUBSCRIPTION_MASK_SINK, NULL, NULL); - - initial_operation = pa_context_get_source_info_list (self->context, - get_source_info_cb, self); - while (pa_operation_get_state (initial_operation) == PA_OPERATION_RUNNING) { - if (!PA_CONTEXT_IS_GOOD (pa_context_get_state ((self->context)))) - goto cancel_and_fail; - - pa_threaded_mainloop_wait (self->mainloop); - } - pa_operation_unref (initial_operation); - - initial_operation = pa_context_get_sink_info_list (self->context, - get_sink_info_cb, self); - if (!initial_operation) - goto unlock_and_fail; - while (pa_operation_get_state (initial_operation) == PA_OPERATION_RUNNING) { - if (!PA_CONTEXT_IS_GOOD (pa_context_get_state ((self->context)))) - goto cancel_and_fail; - - pa_threaded_mainloop_wait (self->mainloop); - } - pa_operation_unref (initial_operation); - - pa_threaded_mainloop_unlock (self->mainloop); - - return TRUE; - -unlock_and_fail: - pa_threaded_mainloop_unlock (self->mainloop); - gst_pulse_device_monitor_stop (monitor); - return FALSE; - -mainloop_failed: - return FALSE; - -cancel_and_fail: - pa_operation_cancel (initial_operation); - pa_operation_unref (initial_operation); - goto unlock_and_fail; -} - -static void -gst_pulse_device_monitor_stop (GstDeviceMonitor * monitor) -{ - GstPulseDeviceMonitor *self = GST_PULSE_DEVICE_MONITOR (monitor); - - pa_threaded_mainloop_stop (self->mainloop); - - if (self->context) { - pa_context_disconnect (self->context); - - /* Make sure we don't get any further callbacks */ - pa_context_set_state_callback (self->context, NULL, NULL); - pa_context_set_subscribe_callback (self->context, NULL, NULL); - - pa_context_unref (self->context); - self->context = NULL; - } - - pa_threaded_mainloop_free (self->mainloop); - self->mainloop = NULL; -} - -enum -{ - PROP_INTERNAL_NAME = 1, -}; - -G_DEFINE_TYPE (GstPulseDevice, gst_pulse_device, GST_TYPE_DEVICE); - -static void gst_pulse_device_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec); -static void gst_pulse_device_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec); -static void gst_pulse_device_finalize (GObject * object); -static GstElement *gst_pulse_device_create_element (GstDevice * device, - const gchar * name); -static gboolean gst_pulse_device_reconfigure_element (GstDevice * device, - GstElement * element); - -static void -gst_pulse_device_class_init (GstPulseDeviceClass * klass) -{ - GstDeviceClass *dev_class = GST_DEVICE_CLASS (klass); - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - dev_class->create_element = gst_pulse_device_create_element; - dev_class->reconfigure_element = gst_pulse_device_reconfigure_element; - - object_class->get_property = gst_pulse_device_get_property; - object_class->set_property = gst_pulse_device_set_property; - object_class->finalize = gst_pulse_device_finalize; - - g_object_class_install_property (object_class, PROP_INTERNAL_NAME, - g_param_spec_string ("internal-name", "Internal PulseAudio device name", - "The internal name of the PulseAudio device", "", - G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); -} - -static void -gst_pulse_device_init (GstPulseDevice * device) -{ -} - -static void -gst_pulse_device_finalize (GObject * object) -{ - GstPulseDevice *device = GST_PULSE_DEVICE (object); - - g_free (device->internal_name); - - G_OBJECT_CLASS (gst_pulse_device_parent_class)->finalize (object); -} - -static GstElement * -gst_pulse_device_create_element (GstDevice * device, const gchar * name) -{ - GstPulseDevice *pulse_dev = GST_PULSE_DEVICE (device); - GstElement *elem; - - elem = gst_element_factory_make (pulse_dev->element, name); - g_object_set (elem, "device", pulse_dev->internal_name, NULL); - - return elem; -} - -static gboolean -gst_pulse_device_reconfigure_element (GstDevice * device, GstElement * element) -{ - GstPulseDevice *pulse_dev = GST_PULSE_DEVICE (device); - - if (!strcmp (pulse_dev->element, "pulsesrc")) { - if (!GST_IS_PULSESRC (element)) - return FALSE; - } else if (!strcmp (pulse_dev->element, "pulsesink")) { - if (!GST_IS_PULSESINK (element)) - return FALSE; - } else { - g_assert_not_reached (); - } - - g_object_set (element, "device", pulse_dev->internal_name, NULL); - - return TRUE; -} - -static GstDevice * -gst_pulse_device_new (guint device_index, const gchar * device_name, - GstCaps * caps, const gchar * internal_name, GstPulseDeviceType type) -{ - GstPulseDevice *gstdev; - const gchar *element; - const gchar *klass; - - g_return_val_if_fail (device_name, NULL); - g_return_val_if_fail (internal_name, NULL); - g_return_val_if_fail (caps, NULL); - - - switch (type) { - case GST_PULSE_DEVICE_TYPE_SOURCE: - element = "pulsesrc"; - klass = "Audio/Source"; - break; - case GST_PULSE_DEVICE_TYPE_SINK: - element = "pulsesink"; - klass = "Audio/Sink"; - break; - default: - g_assert_not_reached (); - break; - } - - - gstdev = g_object_new (GST_TYPE_PULSE_DEVICE, - "display-name", device_name, "caps", caps, "device-class", klass, - "internal-name", internal_name, NULL); - - gstdev->type = type; - gstdev->device_index = device_index; - gstdev->element = element; - - return GST_DEVICE (gstdev); -} - - -static void -gst_pulse_device_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec) -{ - GstPulseDevice *device; - - device = GST_PULSE_DEVICE_CAST (object); - - switch (prop_id) { - case PROP_INTERNAL_NAME: - g_value_set_string (value, device->internal_name); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - - -static void -gst_pulse_device_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec) -{ - GstPulseDevice *device; - - device = GST_PULSE_DEVICE_CAST (object); - - switch (prop_id) { - case PROP_INTERNAL_NAME: - device->internal_name = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} diff --git a/ext/pulse/pulsedevicemonitor.h b/ext/pulse/pulsedevicemonitor.h deleted file mode 100644 index 100ba9b0..00000000 --- a/ext/pulse/pulsedevicemonitor.h +++ /dev/null @@ -1,98 +0,0 @@ -/* GStreamer - * Copyright (C) 2012 Olivier Crete - * - * pulsedevicemonitor.h: Device probing and monitoring - * - * 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_PULSE_DEVICE_MONITOR_H__ -#define __GST_PULSE_DEVICE_MONITOR_H__ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include - -#include - -G_BEGIN_DECLS - -typedef struct _GstPulseDeviceMonitor GstPulseDeviceMonitor; -typedef struct _GstPulseDeviceMonitorPrivate GstPulseDeviceMonitorPrivate; -typedef struct _GstPulseDeviceMonitorClass GstPulseDeviceMonitorClass; - -#define GST_TYPE_PULSE_DEVICE_MONITOR (gst_pulse_device_monitor_get_type()) -#define GST_IS_PULSE_DEVICE_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PULSE_DEVICE_MONITOR)) -#define GST_IS_PULSE_DEVICE_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PULSE_DEVICE_MONITOR)) -#define GST_PULSE_DEVICE_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PULSE_DEVICE_MONITOR, GstPulseDeviceMonitorClass)) -#define GST_PULSE_DEVICE_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PULSE_DEVICE_MONITOR, GstPulseDeviceMonitor)) -#define GST_PULSE_DEVICE_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DEVICE_MONITOR, GstPulseDeviceMonitorClass)) -#define GST_PULSE_DEVICE_MONITOR_CAST(obj) ((GstPulseDeviceMonitor *)(obj)) - -struct _GstPulseDeviceMonitor { - GstDeviceMonitor parent; - - gchar *server; - gchar *client_name; - - pa_threaded_mainloop *mainloop; - pa_context *context; -}; - -typedef enum { - GST_PULSE_DEVICE_TYPE_SOURCE, - GST_PULSE_DEVICE_TYPE_SINK -} GstPulseDeviceType; - -struct _GstPulseDeviceMonitorClass { - GstDeviceMonitorClass parent_class; -}; - -GType gst_pulse_device_monitor_get_type (void); - - -typedef struct _GstPulseDevice GstPulseDevice; -typedef struct _GstPulseDevicePrivate GstPulseDevicePrivate; -typedef struct _GstPulseDeviceClass GstPulseDeviceClass; - -#define GST_TYPE_PULSE_DEVICE (gst_pulse_device_get_type()) -#define GST_IS_PULSE_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PULSE_DEVICE)) -#define GST_IS_PULSE_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PULSE_DEVICE)) -#define GST_PULSE_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PULSE_DEVICE, GstPulseDeviceClass)) -#define GST_PULSE_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PULSE_DEVICE, GstPulseDevice)) -#define GST_PULSE_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DEVICE, GstPulseDeviceClass)) -#define GST_PULSE_DEVICE_CAST(obj) ((GstPulseDevice *)(obj)) - -struct _GstPulseDevice { - GstDevice parent; - - GstPulseDeviceType type; - guint device_index; - gchar *internal_name; - const gchar *element; -}; - -struct _GstPulseDeviceClass { - GstDeviceClass parent_class; -}; - -GType gst_pulse_device_get_type (void); - -#endif /* __GST_PULSE_DEVICE_MONITOR_H__ */ diff --git a/ext/pulse/pulsedeviceprovider.c b/ext/pulse/pulsedeviceprovider.c new file mode 100644 index 00000000..8e917009 --- /dev/null +++ b/ext/pulse/pulsedeviceprovider.c @@ -0,0 +1,679 @@ +/* GStreamer + * Copyright (C) 2012 Olivier Crete + * + * gstv4l2deviceprovider.c: V4l2 device probing and monitoring + * + * 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 "pulsedeviceprovider.h" + +#include + +#include + +#include "pulsesrc.h" +#include "pulsesink.h" +#include "pulseutil.h" + + +GST_DEBUG_CATEGORY_EXTERN (pulse_debug); +#define GST_CAT_DEFAULT pulse_debug + + +static GstDevice *gst_pulse_device_new (guint id, + const gchar * device_name, GstCaps * caps, const gchar * internal_name, + GstPulseDeviceType type); + +G_DEFINE_TYPE (GstPulseDeviceProvider, gst_pulse_device_provider, + GST_TYPE_DEVICE_PROVIDER); + +static void gst_pulse_device_provider_finalize (GObject * object); +static void gst_pulse_device_provider_set_property (GObject * object, + guint prop_id, const GValue * value, GParamSpec * pspec); +static void gst_pulse_device_provider_get_property (GObject * object, + guint prop_id, GValue * value, GParamSpec * pspec); + + +static GList *gst_pulse_device_provider_probe (GstDeviceProvider * provider); +static gboolean gst_pulse_device_provider_start (GstDeviceProvider * provider); +static void gst_pulse_device_provider_stop (GstDeviceProvider * provider); + +enum +{ + PROP_0, + PROP_SERVER, + PROP_CLIENT_NAME, + PROP_LAST +}; + + +static void +gst_pulse_device_provider_class_init (GstPulseDeviceProviderClass * klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GstDeviceProviderClass *dm_class = GST_DEVICE_PROVIDER_CLASS (klass); + gchar *client_name; + + gobject_class->set_property = gst_pulse_device_provider_set_property; + gobject_class->get_property = gst_pulse_device_provider_get_property; + gobject_class->finalize = gst_pulse_device_provider_finalize; + + dm_class->probe = gst_pulse_device_provider_probe; + dm_class->start = gst_pulse_device_provider_start; + dm_class->stop = gst_pulse_device_provider_stop; + + g_object_class_install_property (gobject_class, + PROP_SERVER, + g_param_spec_string ("server", "Server", + "The PulseAudio server to connect to", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + client_name = gst_pulse_client_name (); + g_object_class_install_property (gobject_class, + PROP_CLIENT_NAME, + g_param_spec_string ("client-name", "Client Name", + "The PulseAudio client_name_to_use", client_name, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | + GST_PARAM_MUTABLE_READY)); + g_free (client_name); + + gst_device_provider_class_set_static_metadata (dm_class, + "PulseAudio Device Provider", "Sink/Source/Audio", + "List and provider PulseAudio source and sink devices", + "Olivier Crete "); +} + +static void +gst_pulse_device_provider_init (GstPulseDeviceProvider * self) +{ + self->client_name = gst_pulse_client_name (); +} + +static void +gst_pulse_device_provider_finalize (GObject * object) +{ + GstPulseDeviceProvider *self = GST_PULSE_DEVICE_PROVIDER (object); + + g_free (self->client_name); + g_free (self->server); + + G_OBJECT_CLASS (gst_pulse_device_provider_parent_class)->finalize (object); +} + + +static void +gst_pulse_device_provider_set_property (GObject * object, + guint prop_id, const GValue * value, GParamSpec * pspec) +{ + GstPulseDeviceProvider *self = GST_PULSE_DEVICE_PROVIDER (object); + + switch (prop_id) { + case PROP_SERVER: + g_free (self->server); + self->server = g_value_dup_string (value); + break; + case PROP_CLIENT_NAME: + g_free (self->client_name); + if (!g_value_get_string (value)) { + GST_WARNING_OBJECT (self, + "Empty PulseAudio client name not allowed. " + "Resetting to default value"); + self->client_name = gst_pulse_client_name (); + } else + self->client_name = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_pulse_device_provider_get_property (GObject * object, + guint prop_id, GValue * value, GParamSpec * pspec) +{ + GstPulseDeviceProvider *self = GST_PULSE_DEVICE_PROVIDER (object); + + switch (prop_id) { + case PROP_SERVER: + g_value_set_string (value, self->server); + break; + case PROP_CLIENT_NAME: + g_value_set_string (value, self->client_name); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +context_state_cb (pa_context * c, void *userdata) +{ + GstPulseDeviceProvider *self = userdata; + + switch (pa_context_get_state (c)) { + case PA_CONTEXT_READY: + case PA_CONTEXT_TERMINATED: + case PA_CONTEXT_FAILED: + pa_threaded_mainloop_signal (self->mainloop, 0); + break; + + case PA_CONTEXT_UNCONNECTED: + case PA_CONTEXT_CONNECTING: + case PA_CONTEXT_AUTHORIZING: + case PA_CONTEXT_SETTING_NAME: + break; + } +} + +static GstDevice * +new_source (const pa_source_info * info) +{ + GstCaps *caps; + guint i; + + caps = gst_caps_new_empty (); + + for (i = 0; i < info->n_formats; i++) + gst_caps_append (caps, gst_pulse_format_info_to_caps (info->formats[i])); + + return gst_pulse_device_new (info->index, info->description, + caps, info->name, GST_PULSE_DEVICE_TYPE_SOURCE); +} + +static GstDevice * +new_sink (const pa_sink_info * info) +{ + GstCaps *caps; + guint i; + + caps = gst_caps_new_empty (); + + for (i = 0; i < info->n_formats; i++) + gst_caps_append (caps, gst_pulse_format_info_to_caps (info->formats[i])); + + return gst_pulse_device_new (info->index, info->description, + caps, info->name, GST_PULSE_DEVICE_TYPE_SINK); +} + +static void +get_source_info_cb (pa_context * context, + const pa_source_info * info, int eol, void *userdata) +{ + GstPulseDeviceProvider *self = userdata; + GstDevice *dev; + + if (eol) { + pa_threaded_mainloop_signal (self->mainloop, 0); + return; + } + + dev = new_source (info); + + if (dev) + gst_device_provider_device_add (GST_DEVICE_PROVIDER (self), dev); +} + +static void +get_sink_info_cb (pa_context * context, + const pa_sink_info * info, int eol, void *userdata) +{ + GstPulseDeviceProvider *self = userdata; + GstDevice *dev; + + if (eol) { + pa_threaded_mainloop_signal (self->mainloop, 0); + return; + } + + dev = new_sink (info); + + if (dev) + gst_device_provider_device_add (GST_DEVICE_PROVIDER (self), dev); +} + +static void +context_subscribe_cb (pa_context * context, pa_subscription_event_type_t type, + uint32_t idx, void *userdata) +{ + GstPulseDeviceProvider *self = userdata; + GstDeviceProvider *provider = userdata; + pa_subscription_event_type_t facility = + type & PA_SUBSCRIPTION_EVENT_FACILITY_MASK; + pa_subscription_event_type_t event_type = + type & PA_SUBSCRIPTION_EVENT_TYPE_MASK; + + if (facility != PA_SUBSCRIPTION_EVENT_SOURCE && + facility != PA_SUBSCRIPTION_EVENT_SINK) + return; + + if (event_type == PA_SUBSCRIPTION_EVENT_NEW) { + /* Microphone in the source output has changed */ + + if (facility == PA_SUBSCRIPTION_EVENT_SOURCE) + pa_context_get_source_info_by_index (context, idx, get_source_info_cb, + self); + else if (facility == PA_SUBSCRIPTION_EVENT_SINK) + pa_context_get_sink_info_by_index (context, idx, get_sink_info_cb, self); + } else if (event_type == PA_SUBSCRIPTION_EVENT_REMOVE) { + GstPulseDevice *dev = NULL; + GList *item; + + GST_OBJECT_LOCK (self); + for (item = provider->devices; item; item = item->next) { + dev = item->data; + + if (((facility == PA_SUBSCRIPTION_EVENT_SOURCE && + dev->type == GST_PULSE_DEVICE_TYPE_SOURCE) || + (facility == PA_SUBSCRIPTION_EVENT_SINK && + dev->type == GST_PULSE_DEVICE_TYPE_SINK)) && + dev->device_index == idx) { + gst_object_ref (dev); + break; + } + dev = NULL; + } + GST_OBJECT_UNLOCK (self); + + if (dev) { + gst_device_provider_device_remove (GST_DEVICE_PROVIDER (self), + GST_DEVICE (dev)); + gst_object_unref (dev); + } + } +} + +static void +get_source_info_list_cb (pa_context * context, const pa_source_info * info, + int eol, void *userdata) +{ + GList **devices = userdata; + + if (eol) + return; + + *devices = g_list_prepend (*devices, gst_object_ref_sink (new_source (info))); +} + +static void +get_sink_info_list_cb (pa_context * context, const pa_sink_info * info, + int eol, void *userdata) +{ + GList **devices = userdata; + + if (eol) + return; + + *devices = g_list_prepend (*devices, gst_object_ref_sink (new_sink (info))); +} + +static GList * +gst_pulse_device_provider_probe (GstDeviceProvider * provider) +{ + GstPulseDeviceProvider *self = GST_PULSE_DEVICE_PROVIDER (provider); + GList *devices = NULL; + pa_mainloop *m = NULL; + pa_context *c = NULL; + pa_operation *o; + + if (!(m = pa_mainloop_new ())) + return NULL; + + if (!(c = pa_context_new (pa_mainloop_get_api (m), self->client_name))) { + GST_ERROR_OBJECT (self, "Failed to create context"); + goto failed; + } + + if (pa_context_connect (c, self->server, 0, NULL) < 0) { + GST_ERROR_OBJECT (self, "Failed to connect: %s", + pa_strerror (pa_context_errno (self->context))); + goto failed; + } + + for (;;) { + pa_context_state_t state; + + state = pa_context_get_state (c); + + if (!PA_CONTEXT_IS_GOOD (state)) { + GST_ELEMENT_ERROR (self, RESOURCE, FAILED, ("Failed to connect: %s", + pa_strerror (pa_context_errno (c))), (NULL)); + goto failed; + } + + if (state == PA_CONTEXT_READY) + break; + + /* Wait until the context is ready */ + if (pa_mainloop_iterate (m, TRUE, NULL) < 0) + goto failed; + + } + GST_DEBUG_OBJECT (self, "connected"); + + o = pa_context_get_sink_info_list (c, get_sink_info_list_cb, &devices); + while (pa_operation_get_state (o) == PA_OPERATION_RUNNING && + pa_operation_get_state (o) == PA_OPERATION_RUNNING) { + if (pa_mainloop_iterate (m, TRUE, NULL) < 0) + break; + } + pa_operation_unref (o); + + o = pa_context_get_source_info_list (c, get_source_info_list_cb, &devices); + while (pa_operation_get_state (o) == PA_OPERATION_RUNNING && + pa_operation_get_state (o) == PA_OPERATION_RUNNING) { + if (pa_mainloop_iterate (m, TRUE, NULL) < 0) + break; + } + pa_operation_unref (o); + + pa_context_disconnect (c); + pa_mainloop_free (m); + + return devices; + +failed: + + return NULL; +} + +static gboolean +gst_pulse_device_provider_start (GstDeviceProvider * provider) +{ + GstPulseDeviceProvider *self = GST_PULSE_DEVICE_PROVIDER (provider); + pa_operation *initial_operation; + + if (!(self->mainloop = pa_threaded_mainloop_new ())) { + GST_ERROR_OBJECT (self, "Could not create pulseaudio mainloop"); + goto mainloop_failed; + } + if (pa_threaded_mainloop_start (self->mainloop) < 0) { + GST_ERROR_OBJECT (self, "Could not start pulseaudio mainloop"); + pa_threaded_mainloop_free (self->mainloop); + self->mainloop = NULL; + goto mainloop_failed; + } + + pa_threaded_mainloop_lock (self->mainloop); + + if (!(self->context = + pa_context_new (pa_threaded_mainloop_get_api (self->mainloop), + self->client_name))) { + GST_ERROR_OBJECT (self, "Failed to create context"); + goto unlock_and_fail; + } + + pa_context_set_state_callback (self->context, context_state_cb, self); + pa_context_set_subscribe_callback (self->context, context_subscribe_cb, self); + + + GST_DEBUG_OBJECT (self, "connect to server %s", GST_STR_NULL (self->server)); + + if (pa_context_connect (self->context, self->server, 0, NULL) < 0) { + GST_ERROR_OBJECT (self, "Failed to connect: %s", + pa_strerror (pa_context_errno (self->context))); + goto unlock_and_fail; + } + + for (;;) { + pa_context_state_t state; + + state = pa_context_get_state (self->context); + + if (!PA_CONTEXT_IS_GOOD (state)) { + GST_ERROR_OBJECT (self, "Failed to connect: %s", + pa_strerror (pa_context_errno (self->context))); + goto unlock_and_fail; + } + + if (state == PA_CONTEXT_READY) + break; + + /* Wait until the context is ready */ + pa_threaded_mainloop_wait (self->mainloop); + } + GST_DEBUG_OBJECT (self, "connected"); + + pa_context_subscribe (self->context, + PA_SUBSCRIPTION_MASK_SOURCE | PA_SUBSCRIPTION_MASK_SINK, NULL, NULL); + + initial_operation = pa_context_get_source_info_list (self->context, + get_source_info_cb, self); + while (pa_operation_get_state (initial_operation) == PA_OPERATION_RUNNING) { + if (!PA_CONTEXT_IS_GOOD (pa_context_get_state ((self->context)))) + goto cancel_and_fail; + + pa_threaded_mainloop_wait (self->mainloop); + } + pa_operation_unref (initial_operation); + + initial_operation = pa_context_get_sink_info_list (self->context, + get_sink_info_cb, self); + if (!initial_operation) + goto unlock_and_fail; + while (pa_operation_get_state (initial_operation) == PA_OPERATION_RUNNING) { + if (!PA_CONTEXT_IS_GOOD (pa_context_get_state ((self->context)))) + goto cancel_and_fail; + + pa_threaded_mainloop_wait (self->mainloop); + } + pa_operation_unref (initial_operation); + + pa_threaded_mainloop_unlock (self->mainloop); + + return TRUE; + +unlock_and_fail: + pa_threaded_mainloop_unlock (self->mainloop); + gst_pulse_device_provider_stop (provider); + return FALSE; + +mainloop_failed: + return FALSE; + +cancel_and_fail: + pa_operation_cancel (initial_operation); + pa_operation_unref (initial_operation); + goto unlock_and_fail; +} + +static void +gst_pulse_device_provider_stop (GstDeviceProvider * provider) +{ + GstPulseDeviceProvider *self = GST_PULSE_DEVICE_PROVIDER (provider); + + pa_threaded_mainloop_stop (self->mainloop); + + if (self->context) { + pa_context_disconnect (self->context); + + /* Make sure we don't get any further callbacks */ + pa_context_set_state_callback (self->context, NULL, NULL); + pa_context_set_subscribe_callback (self->context, NULL, NULL); + + pa_context_unref (self->context); + self->context = NULL; + } + + pa_threaded_mainloop_free (self->mainloop); + self->mainloop = NULL; +} + +enum +{ + PROP_INTERNAL_NAME = 1, +}; + +G_DEFINE_TYPE (GstPulseDevice, gst_pulse_device, GST_TYPE_DEVICE); + +static void gst_pulse_device_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); +static void gst_pulse_device_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_pulse_device_finalize (GObject * object); +static GstElement *gst_pulse_device_create_element (GstDevice * device, + const gchar * name); +static gboolean gst_pulse_device_reconfigure_element (GstDevice * device, + GstElement * element); + +static void +gst_pulse_device_class_init (GstPulseDeviceClass * klass) +{ + GstDeviceClass *dev_class = GST_DEVICE_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + dev_class->create_element = gst_pulse_device_create_element; + dev_class->reconfigure_element = gst_pulse_device_reconfigure_element; + + object_class->get_property = gst_pulse_device_get_property; + object_class->set_property = gst_pulse_device_set_property; + object_class->finalize = gst_pulse_device_finalize; + + g_object_class_install_property (object_class, PROP_INTERNAL_NAME, + g_param_spec_string ("internal-name", "Internal PulseAudio device name", + "The internal name of the PulseAudio device", "", + G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); +} + +static void +gst_pulse_device_init (GstPulseDevice * device) +{ +} + +static void +gst_pulse_device_finalize (GObject * object) +{ + GstPulseDevice *device = GST_PULSE_DEVICE (object); + + g_free (device->internal_name); + + G_OBJECT_CLASS (gst_pulse_device_parent_class)->finalize (object); +} + +static GstElement * +gst_pulse_device_create_element (GstDevice * device, const gchar * name) +{ + GstPulseDevice *pulse_dev = GST_PULSE_DEVICE (device); + GstElement *elem; + + elem = gst_element_factory_make (pulse_dev->element, name); + g_object_set (elem, "device", pulse_dev->internal_name, NULL); + + return elem; +} + +static gboolean +gst_pulse_device_reconfigure_element (GstDevice * device, GstElement * element) +{ + GstPulseDevice *pulse_dev = GST_PULSE_DEVICE (device); + + if (!strcmp (pulse_dev->element, "pulsesrc")) { + if (!GST_IS_PULSESRC (element)) + return FALSE; + } else if (!strcmp (pulse_dev->element, "pulsesink")) { + if (!GST_IS_PULSESINK (element)) + return FALSE; + } else { + g_assert_not_reached (); + } + + g_object_set (element, "device", pulse_dev->internal_name, NULL); + + return TRUE; +} + +static GstDevice * +gst_pulse_device_new (guint device_index, const gchar * device_name, + GstCaps * caps, const gchar * internal_name, GstPulseDeviceType type) +{ + GstPulseDevice *gstdev; + const gchar *element; + const gchar *klass; + + g_return_val_if_fail (device_name, NULL); + g_return_val_if_fail (internal_name, NULL); + g_return_val_if_fail (caps, NULL); + + + switch (type) { + case GST_PULSE_DEVICE_TYPE_SOURCE: + element = "pulsesrc"; + klass = "Audio/Source"; + break; + case GST_PULSE_DEVICE_TYPE_SINK: + element = "pulsesink"; + klass = "Audio/Sink"; + break; + default: + g_assert_not_reached (); + break; + } + + + gstdev = g_object_new (GST_TYPE_PULSE_DEVICE, + "display-name", device_name, "caps", caps, "device-class", klass, + "internal-name", internal_name, NULL); + + gstdev->type = type; + gstdev->device_index = device_index; + gstdev->element = element; + + return GST_DEVICE (gstdev); +} + + +static void +gst_pulse_device_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec) +{ + GstPulseDevice *device; + + device = GST_PULSE_DEVICE_CAST (object); + + switch (prop_id) { + case PROP_INTERNAL_NAME: + g_value_set_string (value, device->internal_name); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + + +static void +gst_pulse_device_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) +{ + GstPulseDevice *device; + + device = GST_PULSE_DEVICE_CAST (object); + + switch (prop_id) { + case PROP_INTERNAL_NAME: + device->internal_name = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} diff --git a/ext/pulse/pulsedeviceprovider.h b/ext/pulse/pulsedeviceprovider.h new file mode 100644 index 00000000..88287210 --- /dev/null +++ b/ext/pulse/pulsedeviceprovider.h @@ -0,0 +1,98 @@ +/* GStreamer + * Copyright (C) 2012 Olivier Crete + * + * pulsedeviceprovider.h: Device probing and monitoring + * + * 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_PULSE_DEVICE_PROVIDER_H__ +#define __GST_PULSE_DEVICE_PROVIDER_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +#include + +G_BEGIN_DECLS + +typedef struct _GstPulseDeviceProvider GstPulseDeviceProvider; +typedef struct _GstPulseDeviceProviderPrivate GstPulseDeviceProviderPrivate; +typedef struct _GstPulseDeviceProviderClass GstPulseDeviceProviderClass; + +#define GST_TYPE_PULSE_DEVICE_PROVIDER (gst_pulse_device_provider_get_type()) +#define GST_IS_PULSE_DEVICE_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PULSE_DEVICE_PROVIDER)) +#define GST_IS_PULSE_DEVICE_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PULSE_DEVICE_PROVIDER)) +#define GST_PULSE_DEVICE_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PULSE_DEVICE_PROVIDER, GstPulseDeviceProviderClass)) +#define GST_PULSE_DEVICE_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PULSE_DEVICE_PROVIDER, GstPulseDeviceProvider)) +#define GST_PULSE_DEVICE_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DEVICE_PROVIDER, GstPulseDeviceProviderClass)) +#define GST_PULSE_DEVICE_PROVIDER_CAST(obj) ((GstPulseDeviceProvider *)(obj)) + +struct _GstPulseDeviceProvider { + GstDeviceProvider parent; + + gchar *server; + gchar *client_name; + + pa_threaded_mainloop *mainloop; + pa_context *context; +}; + +typedef enum { + GST_PULSE_DEVICE_TYPE_SOURCE, + GST_PULSE_DEVICE_TYPE_SINK +} GstPulseDeviceType; + +struct _GstPulseDeviceProviderClass { + GstDeviceProviderClass parent_class; +}; + +GType gst_pulse_device_provider_get_type (void); + + +typedef struct _GstPulseDevice GstPulseDevice; +typedef struct _GstPulseDevicePrivate GstPulseDevicePrivate; +typedef struct _GstPulseDeviceClass GstPulseDeviceClass; + +#define GST_TYPE_PULSE_DEVICE (gst_pulse_device_get_type()) +#define GST_IS_PULSE_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PULSE_DEVICE)) +#define GST_IS_PULSE_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PULSE_DEVICE)) +#define GST_PULSE_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PULSE_DEVICE, GstPulseDeviceClass)) +#define GST_PULSE_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PULSE_DEVICE, GstPulseDevice)) +#define GST_PULSE_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DEVICE, GstPulseDeviceClass)) +#define GST_PULSE_DEVICE_CAST(obj) ((GstPulseDevice *)(obj)) + +struct _GstPulseDevice { + GstDevice parent; + + GstPulseDeviceType type; + guint device_index; + gchar *internal_name; + const gchar *element; +}; + +struct _GstPulseDeviceClass { + GstDeviceClass parent_class; +}; + +GType gst_pulse_device_get_type (void); + +#endif /* __GST_PULSE_DEVICE_PROVIDER_H__ */ diff --git a/gst-plugins-good.doap b/gst-plugins-good.doap index 0f8b061e..95cd5cac 100644 --- a/gst-plugins-good.doap +++ b/gst-plugins-good.doap @@ -32,6 +32,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library). + + + 1.3.90 + 1.3 + + 2014-06-28 + + + + 1.3.3 diff --git a/gst-plugins-good.spec b/gst-plugins-good.spec index 67533af9..1e562809 100644 --- a/gst-plugins-good.spec +++ b/gst-plugins-good.spec @@ -4,7 +4,7 @@ %define gst_minver 0.11.0 Name: %{gstreamer}-plugins-good -Version: 1.3.3 +Version: 1.3.90 Release: 1.gst Summary: GStreamer plug-ins with good code and licensing diff --git a/gst/audiofx/audiopanoramaorc-dist.c b/gst/audiofx/audiopanoramaorc-dist.c index 3d5999a6..12d6aa0e 100644 --- a/gst/audiofx/audiopanoramaorc-dist.c +++ b/gst/audiofx/audiopanoramaorc-dist.c @@ -264,7 +264,7 @@ audiopanoramam_orc_process_s16_ch1_none (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 49, 95, 110, 111, 110, 101, 11, 4, 4, 12, 2, 2, 195, 0, 4, 4, 2, 0, }; @@ -390,7 +390,7 @@ audiopanoramam_orc_process_f32_ch1_none (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 49, 95, 110, 111, 110, 101, 11, 8, 8, 12, 4, 4, 194, 0, 4, 4, 2, 0, }; @@ -502,7 +502,7 @@ audiopanoramam_orc_process_s16_ch2_none (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 50, 95, 110, 111, 110, 101, 11, 4, 4, 12, 4, 4, 21, 1, 79, 0, 4, 2, 0, }; @@ -614,7 +614,7 @@ audiopanoramam_orc_process_f32_ch2_none (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 50, 95, 110, 111, 110, 101, 11, 8, 8, 12, 8, 8, 21, 1, 112, 0, 4, 2, 0, }; @@ -842,7 +842,7 @@ audiopanoramam_orc_process_s16_ch1_psy (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 38, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 49, 95, 112, 115, 121, 11, 4, 4, 12, 2, 2, 17, 4, 17, 4, 20, 8, 20, 4, 20, 4, 153, 33, 4, 211, 33, 33, 202, 34, 33, 25, 202, 33, 33, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, @@ -1053,7 +1053,7 @@ audiopanoramam_orc_process_f32_ch1_psy (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 38, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 49, 95, 112, 115, 121, 11, 8, 8, 12, 4, 4, 17, 4, 17, 4, 20, 4, 20, 4, 202, 33, 4, 25, 202, 32, 4, 24, 194, 0, 32, 33, 2, 0, @@ -1355,7 +1355,7 @@ audiopanoramam_orc_process_s16_ch2_psy_right (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 50, 95, 112, 115, 121, 95, 114, 105, 103, 104, 116, 11, 4, 4, 12, 4, 4, 17, 4, 17, 4, 20, 8, 20, 4, 20, 4, 20, 4, 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, @@ -1675,7 +1675,7 @@ audiopanoramam_orc_process_s16_ch2_psy_left (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 50, 95, 112, 115, 121, 95, 108, 101, 102, 116, 11, 4, 4, 12, 4, 4, 17, 4, 17, 4, 20, 8, 20, 4, 20, 4, 20, 4, 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 35, 32, @@ -1945,7 +1945,7 @@ audiopanoramam_orc_process_f32_ch2_psy_right (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 50, 95, 112, 115, 121, 95, 114, 105, 103, 104, 116, 11, 8, 8, 12, 8, 8, 17, 4, 17, 4, 20, 4, 20, 4, 20, 4, 192, 32, 4, 193, 33, 4, 202, 34, 32, 25, 202, 32, 32, 24, 200, 33, 34, @@ -2205,7 +2205,7 @@ audiopanoramam_orc_process_f32_ch2_psy_left (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 50, 95, 112, 115, 121, 95, 108, 101, 102, 116, 11, 8, 8, 12, 8, 8, 17, 4, 17, 4, 20, 4, 20, 4, 20, 4, 192, 32, 4, 193, 34, 4, 202, 33, 34, 24, 202, 34, 34, 25, 200, 32, 33, 32, @@ -2433,7 +2433,7 @@ audiopanoramam_orc_process_s16_ch1_sim_right (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 49, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, 4, 4, 12, 2, 2, 17, 4, 20, 8, 20, 4, 20, 4, 153, 33, 4, 211, 33, 33, 202, 34, 33, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, @@ -2655,7 +2655,7 @@ audiopanoramam_orc_process_s16_ch1_sim_left (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 49, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 4, 4, 12, 2, 2, 17, 4, 20, 8, 20, 4, 20, 4, 153, 34, 4, 211, 34, 34, 202, 33, 34, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, 21, @@ -2909,7 +2909,7 @@ audiopanoramam_orc_process_s16_ch2_sim_right (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 50, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, 4, 4, 12, 4, 4, 17, 4, 20, 8, 20, 4, 20, 4, 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, 32, 202, 34, 34, @@ -3168,7 +3168,7 @@ audiopanoramam_orc_process_s16_ch2_sim_left (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 50, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 4, 4, 12, 4, 4, 17, 4, 20, 8, 20, 4, 20, 4, 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, 32, 202, 33, 33, 24, @@ -3355,7 +3355,7 @@ audiopanoramam_orc_process_f32_ch1_sim_right (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 49, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, 8, 8, 12, 4, 4, 17, 4, 20, 4, 20, 4, 112, 32, 4, 202, 33, 4, 24, 194, 0, 32, 33, 2, 0, @@ -3529,7 +3529,7 @@ audiopanoramam_orc_process_f32_ch1_sim_left (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 49, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 8, 8, 12, 4, 4, 17, 4, 20, 4, 20, 4, 202, 32, 4, 24, 112, 33, 4, 194, 0, 32, 33, 2, 0, @@ -3725,7 +3725,7 @@ audiopanoramam_orc_process_f32_ch2_sim_right (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 50, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, 8, 8, 12, 8, 8, 17, 4, 20, 4, 20, 4, 192, 32, 4, 193, 33, 4, 202, 33, 33, 24, 194, 0, 32, 33, 2, 0, @@ -3923,7 +3923,7 @@ audiopanoramam_orc_process_f32_ch2_sim_left (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 50, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 8, 8, 12, 8, 8, 17, 4, 20, 4, 20, 4, 192, 32, 4, 193, 33, 4, 202, 32, 32, 24, 194, 0, 32, 33, 2, 0, diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c index 90403c8a..0140b811 100644 --- a/gst/avi/gstavimux.c +++ b/gst/avi/gstavimux.c @@ -93,7 +93,7 @@ static GstStaticPadTemplate video_sink_factory = GST_PAD_SINK, GST_PAD_REQUEST, GST_STATIC_CAPS ("video/x-raw, " - "format = (string) { YUY2, I420, BGR, BGRx, BGRA, GRAY8 }, " + "format = (string) { YUY2, I420, BGR, BGRx, BGRA, GRAY8, UYVY }, " "width = (int) [ 16, 4096 ], " "height = (int) [ 16, 4096 ], " "framerate = (fraction) [ 0, MAX ]; " @@ -479,6 +479,10 @@ gst_avi_mux_vidsink_set_caps (GstPad * pad, GstCaps * vscaps) avipad->vids.compression = GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'); avipad->vids.bit_cnt = 16; break; + case GST_VIDEO_FORMAT_UYVY: + avipad->vids.compression = GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y'); + avipad->vids.bit_cnt = 16; + break; case GST_VIDEO_FORMAT_I420: avipad->vids.compression = GST_MAKE_FOURCC ('I', '4', '2', '0'); avipad->vids.bit_cnt = 12; diff --git a/gst/deinterlace/tvtime-dist.c b/gst/deinterlace/tvtime-dist.c index b121c010..8e869824 100644 --- a/gst/deinterlace/tvtime-dist.c +++ b/gst/deinterlace/tvtime-dist.c @@ -713,7 +713,7 @@ deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 29, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, 105, 110, 101, 95, 108, 105, 110, 101, 97, 114, 95, 98, 108, 101, 110, - 100, + 100, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 4, 2, 0, 0, 0, 20, 2, 20, 2, 20, 2, 150, 32, 4, 150, 33, 5, 150, 34, 6, 70, 32, 32, 33, 70, 34, 34, 34, 70, 32, 32, 34, 70, 32, 32, diff --git a/gst/flv/gstflvdemux.c b/gst/flv/gstflvdemux.c index 0af779ca..bf97b5fd 100644 --- a/gst/flv/gstflvdemux.c +++ b/gst/flv/gstflvdemux.c @@ -69,7 +69,7 @@ static GstStaticPadTemplate audio_src_template = "audio/x-raw, format = (string) { U8, S16LE }, layout = (string) interleaved, channels = (int) { 1, 2 }, rate = (int) { 5512, 11025, 22050, 44100 }; " "audio/x-alaw, channels = (int) { 1, 2 }, rate = (int) { 5512, 11025, 22050, 44100 }; " "audio/x-mulaw, channels = (int) { 1, 2 }, rate = (int) { 5512, 11025, 22050, 44100 }; " - "audio/x-speex, channels = (int) { 1, 2 }, rate = (int) { 5512, 11025, 22050, 44100 };") + "audio/x-speex, channels = (int) 1, rate = (int) 16000;") ); static GstStaticPadTemplate video_src_template = @@ -784,6 +784,9 @@ gst_flv_demux_audio_negotiate (GstFlvDemux * demux, guint32 codec_tag, g_value_unset (&value); gst_structure_take_value (structure, "streamheader", &streamheader); + + channels = 1; + adjusted_rate = 16000; break; } default: diff --git a/gst/flv/gstflvmux.c b/gst/flv/gstflvmux.c index 9b11b4b9..1d3ab9bb 100644 --- a/gst/flv/gstflvmux.c +++ b/gst/flv/gstflvmux.c @@ -81,7 +81,7 @@ static GstStaticPadTemplate audiosink_templ = GST_STATIC_PAD_TEMPLATE ("audio", "audio/x-raw, format = (string) { U8, S16LE}, layout = (string) interleaved, channels = (int) { 1, 2 }, rate = (int) { 5512, 11025, 22050, 44100 }; " "audio/x-alaw, channels = (int) { 1, 2 }, rate = (int) { 5512, 11025, 22050, 44100 }; " "audio/x-mulaw, channels = (int) { 1, 2 }, rate = (int) { 5512, 11025, 22050, 44100 }; " - "audio/x-speex, channels = (int) { 1, 2 }, rate = (int) { 5512, 11025, 22050, 44100 };") + "audio/x-speex, channels = (int) 1, rate = (int) 16000;") ); #define gst_flv_mux_parent_class parent_class @@ -464,7 +464,8 @@ gst_flv_mux_audio_pad_setcaps (GstPad * pad, GstCaps * caps) else if (rate == 8000 && (cpad->audio_codec == 5 || cpad->audio_codec == 14)) cpad->rate = 0; - else if (rate == 16000 && cpad->audio_codec == 4) + else if (rate == 16000 && (cpad->audio_codec == 4 + || cpad->audio_codec == 11)) cpad->rate = 0; else ret = FALSE; @@ -476,7 +477,7 @@ gst_flv_mux_audio_pad_setcaps (GstPad * pad, GstCaps * caps) if (gst_structure_get_int (s, "channels", &channels)) { if (cpad->audio_codec == 4 || cpad->audio_codec == 5 - || cpad->audio_codec == 6) + || cpad->audio_codec == 6 || cpad->audio_codec == 11) cpad->channels = 0; else if (cpad->audio_codec == 10) cpad->channels = 1; diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index 7df62597..f2ea73b6 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -10493,6 +10493,11 @@ gst_qtdemux_handle_esds (GstQTDemux * qtdemux, QtDemuxStream * stream, caps = gst_caps_new_simple ("audio/x-ac3", "framed", G_TYPE_BOOLEAN, TRUE, NULL); break; + case 0xA9: /* AC3 */ + codec_name = "DTS audio"; + caps = gst_caps_new_simple ("audio/x-dts", + "framed", G_TYPE_BOOLEAN, TRUE, NULL); + break; case 0xE1: /* QCELP */ /* QCELP, the codec_data is a riff tag (little endian) with * more info (http://ftp.3gpp2.org/TSGC/Working/2003/2003-05-SanDiego/TSG-C-2003-05-San%20Diego/WG1/SWG12/C12-20030512-006%20=%20C12-20030217-015_Draft_Baseline%20Text%20of%20FFMS_R2.doc). */ @@ -11033,12 +11038,27 @@ qtdemux_audio_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, "framed", G_TYPE_BOOLEAN, TRUE, NULL); stream->sampled = TRUE; break; + case GST_MAKE_FOURCC ('s', 'a', 'c', '3'): // Nero Recode case GST_MAKE_FOURCC ('a', 'c', '-', '3'): _codec ("AC-3 audio"); caps = gst_caps_new_simple ("audio/x-ac3", "framed", G_TYPE_BOOLEAN, TRUE, NULL); stream->sampled = TRUE; break; + case GST_MAKE_FOURCC ('d', 't', 's', 'c'): + case GST_MAKE_FOURCC ('D', 'T', 'S', ' '): + _codec ("DTS audio"); + caps = gst_caps_new_simple ("audio/x-dts", + "framed", G_TYPE_BOOLEAN, TRUE, NULL); + stream->sampled = TRUE; + break; + case GST_MAKE_FOURCC ('d', 't', 's', 'h'): // DTS-HD + case GST_MAKE_FOURCC ('d', 't', 's', 'l'): // DTS-HD Lossless + _codec ("DTS-HD audio"); + caps = gst_caps_new_simple ("audio/x-dts", + "framed", G_TYPE_BOOLEAN, TRUE, NULL); + stream->sampled = TRUE; + break; case GST_MAKE_FOURCC ('M', 'A', 'C', '3'): _codec ("MACE-3"); caps = gst_caps_new_simple ("audio/x-mace", diff --git a/gst/matroska/matroska-read-common.c b/gst/matroska/matroska-read-common.c index 73381baf..1f5130a2 100644 --- a/gst/matroska/matroska-read-common.c +++ b/gst/matroska/matroska-read-common.c @@ -50,11 +50,11 @@ GST_DEBUG_CATEGORY (matroskareadcommon_debug); #define GST_CAT_DEFAULT matroskareadcommon_debug #define DEBUG_ELEMENT_START(common, ebml, element) \ - GST_DEBUG_OBJECT (common, "Parsing " element " element at offset %" \ + GST_DEBUG_OBJECT (common->sinkpad, "Parsing " element " element at offset %" \ G_GUINT64_FORMAT, gst_ebml_read_get_pos (ebml)) #define DEBUG_ELEMENT_STOP(common, ebml, element, ret) \ - GST_DEBUG_OBJECT (common, "Parsing " element " element " \ + GST_DEBUG_OBJECT (common->sinkpad, "Parsing " element " element " \ " finished with '%s'", gst_flow_get_name (ret)) #define GST_MATROSKA_TOC_UID_CHAPTER "chapter" @@ -453,8 +453,8 @@ gst_matroska_read_common_found_global_tag (GstMatroskaReadCommon * common, gint i; /* hm, already sent, no need to cache and wait anymore */ - GST_DEBUG_OBJECT (common, "Sending late global tags %" GST_PTR_FORMAT, - taglist); + GST_DEBUG_OBJECT (common->sinkpad, + "Sending late global tags %" GST_PTR_FORMAT, taglist); for (i = 0; i < common->src->len; i++) { GstMatroskaTrackContext *stream; @@ -474,7 +474,7 @@ gst_matroska_read_common_get_length (GstMatroskaReadCommon * common) if (!gst_pad_peer_query_duration (common->sinkpad, GST_FORMAT_BYTES, &end) || end < 0) - GST_DEBUG_OBJECT (common, "no upstream length"); + GST_DEBUG_OBJECT (common->sinkpad, "no upstream length"); return end; } @@ -506,11 +506,11 @@ gst_matroska_read_common_parse_skip (GstMatroskaReadCommon * common, GstEbmlRead * ebml, const gchar * parent_name, guint id) { if (id == GST_EBML_ID_VOID) { - GST_DEBUG_OBJECT (common, "Skipping EBML Void element"); + GST_DEBUG_OBJECT (common->sinkpad, "Skipping EBML Void element"); } else if (id == GST_EBML_ID_CRC32) { - GST_DEBUG_OBJECT (common, "Skipping EBML CRC32 element"); + GST_DEBUG_OBJECT (common->sinkpad, "Skipping EBML CRC32 element"); } else { - GST_WARNING_OBJECT (common, + GST_WARNING_OBJECT (common->sinkpad, "Unknown %s subelement 0x%x - ignoring", parent_name, id); } @@ -545,42 +545,46 @@ gst_matroska_read_common_parse_attached_file (GstMatroskaReadCommon * common, switch (id) { case GST_MATROSKA_ID_FILEDESCRIPTION: if (description) { - GST_WARNING_OBJECT (common, "FileDescription can only appear once"); + GST_WARNING_OBJECT (common->sinkpad, + "FileDescription can only appear once"); break; } ret = gst_ebml_read_utf8 (ebml, &id, &description); - GST_DEBUG_OBJECT (common, "FileDescription: %s", + GST_DEBUG_OBJECT (common->sinkpad, "FileDescription: %s", GST_STR_NULL (description)); break; case GST_MATROSKA_ID_FILENAME: if (filename) { - GST_WARNING_OBJECT (common, "FileName can only appear once"); + GST_WARNING_OBJECT (common->sinkpad, "FileName can only appear once"); break; } ret = gst_ebml_read_utf8 (ebml, &id, &filename); - GST_DEBUG_OBJECT (common, "FileName: %s", GST_STR_NULL (filename)); + GST_DEBUG_OBJECT (common->sinkpad, "FileName: %s", + GST_STR_NULL (filename)); break; case GST_MATROSKA_ID_FILEMIMETYPE: if (mimetype) { - GST_WARNING_OBJECT (common, "FileMimeType can only appear once"); + GST_WARNING_OBJECT (common->sinkpad, + "FileMimeType can only appear once"); break; } ret = gst_ebml_read_ascii (ebml, &id, &mimetype); - GST_DEBUG_OBJECT (common, "FileMimeType: %s", GST_STR_NULL (mimetype)); + GST_DEBUG_OBJECT (common->sinkpad, "FileMimeType: %s", + GST_STR_NULL (mimetype)); break; case GST_MATROSKA_ID_FILEDATA: if (data) { - GST_WARNING_OBJECT (common, "FileData can only appear once"); + GST_WARNING_OBJECT (common->sinkpad, "FileData can only appear once"); break; } ret = gst_ebml_read_binary (ebml, &id, &data, &datalen); - GST_DEBUG_OBJECT (common, "FileData of size %" G_GUINT64_FORMAT, - datalen); + GST_DEBUG_OBJECT (common->sinkpad, + "FileData of size %" G_GUINT64_FORMAT, datalen); break; default: @@ -603,7 +607,7 @@ gst_matroska_read_common_parse_attached_file (GstMatroskaReadCommon * common, GstCaps *caps = NULL; gchar *filename_lc = g_utf8_strdown (filename, -1); - GST_DEBUG_OBJECT (common, "Creating tag for attachment with " + GST_DEBUG_OBJECT (common->sinkpad, "Creating tag for attachment with " "filename '%s', mimetype '%s', description '%s', " "size %" G_GUINT64_FORMAT, filename, mimetype, GST_STR_NULL (description), datalen); @@ -662,7 +666,7 @@ gst_matroska_read_common_parse_attached_file (GstMatroskaReadCommon * common, gst_buffer_unref (tagbuffer); gst_caps_unref (caps); - GST_DEBUG_OBJECT (common, + GST_DEBUG_OBJECT (common->sinkpad, "Created attachment sample: %" GST_PTR_FORMAT, tagsample); /* and append to the tag list */ @@ -722,10 +726,10 @@ gst_matroska_read_common_parse_attachments (GstMatroskaReadCommon * common, DEBUG_ELEMENT_STOP (common, ebml, "Attachments", ret); if (gst_tag_list_n_tags (taglist) > 0) { - GST_DEBUG_OBJECT (common, "Storing attachment tags"); + GST_DEBUG_OBJECT (common->sinkpad, "Storing attachment tags"); gst_matroska_read_common_found_global_tag (common, el, taglist); } else { - GST_DEBUG_OBJECT (common, "No valid attachments found"); + GST_DEBUG_OBJECT (common->sinkpad, "No valid attachments found"); gst_tag_list_unref (taglist); } @@ -1110,7 +1114,7 @@ gst_matroska_read_common_parse_chapter_edition (GstMatroskaReadCommon * common, if (is_hidden == 0 && subentries != NULL && ret == GST_FLOW_OK) gst_toc_append_entry (toc, edition_info); else { - GST_DEBUG_OBJECT (common, + GST_DEBUG_OBJECT (common->sinkpad, "Skipping empty or hidden edition in the chapters TOC"); gst_toc_entry_unref (edition_info); } @@ -1186,10 +1190,10 @@ gst_matroska_read_common_parse_header (GstMatroskaReadCommon * common, if (ret != GST_FLOW_OK) return ret; - GST_DEBUG_OBJECT (common, "id: %08x", id); + GST_DEBUG_OBJECT (common->sinkpad, "id: %08x", id); if (id != GST_EBML_ID_HEADER) { - GST_ERROR_OBJECT (common, "Failed to read header"); + GST_ERROR_OBJECT (common->sinkpad, "Failed to read header"); goto exit; } @@ -1211,12 +1215,13 @@ gst_matroska_read_common_parse_header (GstMatroskaReadCommon * common, if (ret != GST_FLOW_OK) goto exit_error; if (num != GST_EBML_VERSION) { - GST_ERROR_OBJECT (ebml, "Unsupported EBML version %" G_GUINT64_FORMAT, - num); + GST_ERROR_OBJECT (common->sinkpad, + "Unsupported EBML version %" G_GUINT64_FORMAT, num); goto exit_error; } - GST_DEBUG_OBJECT (ebml, "EbmlReadVersion: %" G_GUINT64_FORMAT, num); + GST_DEBUG_OBJECT (common->sinkpad, + "EbmlReadVersion: %" G_GUINT64_FORMAT, num); break; } @@ -1228,11 +1233,12 @@ gst_matroska_read_common_parse_header (GstMatroskaReadCommon * common, if (ret != GST_FLOW_OK) goto exit_error; if (num > sizeof (guint64)) { - GST_ERROR_OBJECT (ebml, + GST_ERROR_OBJECT (common->sinkpad, "Unsupported EBML maximum size %" G_GUINT64_FORMAT, num); return GST_FLOW_ERROR; } - GST_DEBUG_OBJECT (ebml, "EbmlMaxSizeLength: %" G_GUINT64_FORMAT, num); + GST_DEBUG_OBJECT (common->sinkpad, + "EbmlMaxSizeLength: %" G_GUINT64_FORMAT, num); break; } @@ -1244,11 +1250,12 @@ gst_matroska_read_common_parse_header (GstMatroskaReadCommon * common, if (ret != GST_FLOW_OK) goto exit_error; if (num > sizeof (guint32)) { - GST_ERROR_OBJECT (ebml, + GST_ERROR_OBJECT (common->sinkpad, "Unsupported EBML maximum ID %" G_GUINT64_FORMAT, num); return GST_FLOW_ERROR; } - GST_DEBUG_OBJECT (ebml, "EbmlMaxIdLength: %" G_GUINT64_FORMAT, num); + GST_DEBUG_OBJECT (common->sinkpad, + "EbmlMaxIdLength: %" G_GUINT64_FORMAT, num); break; } @@ -1259,7 +1266,8 @@ gst_matroska_read_common_parse_header (GstMatroskaReadCommon * common, if (ret != GST_FLOW_OK) goto exit_error; - GST_DEBUG_OBJECT (ebml, "EbmlDocType: %s", GST_STR_NULL (text)); + GST_DEBUG_OBJECT (common->sinkpad, "EbmlDocType: %s", + GST_STR_NULL (text)); if (doctype) g_free (doctype); @@ -1274,7 +1282,8 @@ gst_matroska_read_common_parse_header (GstMatroskaReadCommon * common, if (ret != GST_FLOW_OK) goto exit_error; version = num; - GST_DEBUG_OBJECT (ebml, "EbmlReadVersion: %" G_GUINT64_FORMAT, num); + GST_DEBUG_OBJECT (common->sinkpad, + "EbmlReadVersion: %" G_GUINT64_FORMAT, num); break; } @@ -1302,12 +1311,14 @@ exit: (doctype == NULL)) { if (version <= 2) { if (doctype) { - GST_INFO_OBJECT (common, "Input is %s version %d", doctype, version); + GST_INFO_OBJECT (common->sinkpad, "Input is %s version %d", doctype, + version); if (!strcmp (doctype, GST_MATROSKA_DOCTYPE_WEBM)) common->is_webm = TRUE; } else { - GST_WARNING_OBJECT (common, "Input is EBML without doctype, assuming " - "matroska (version %d)", version); + GST_WARNING_OBJECT (common->sinkpad, + "Input is EBML without doctype, assuming " "matroska (version %d)", + version); } ret = GST_FLOW_OK; } else { @@ -1364,11 +1375,11 @@ gst_matroska_read_common_parse_index_cuetrack (GstMatroskaReadCommon * common, if (num == 0) { idx.track = 0; - GST_WARNING_OBJECT (common, "Invalid CueTrack 0"); + GST_WARNING_OBJECT (common->sinkpad, "Invalid CueTrack 0"); break; } - GST_DEBUG_OBJECT (common, "CueTrack: %" G_GUINT64_FORMAT, num); + GST_DEBUG_OBJECT (common->sinkpad, "CueTrack: %" G_GUINT64_FORMAT, num); idx.track = num; break; } @@ -1382,8 +1393,8 @@ gst_matroska_read_common_parse_index_cuetrack (GstMatroskaReadCommon * common, break; if (num > G_MAXINT64) { - GST_WARNING_OBJECT (common, "CueClusterPosition %" G_GUINT64_FORMAT - " too large", num); + GST_WARNING_OBJECT (common->sinkpad, + "CueClusterPosition %" G_GUINT64_FORMAT " too large", num); break; } @@ -1400,16 +1411,17 @@ gst_matroska_read_common_parse_index_cuetrack (GstMatroskaReadCommon * common, break; if (num == 0) { - GST_WARNING_OBJECT (common, "Invalid CueBlockNumber 0"); + GST_WARNING_OBJECT (common->sinkpad, "Invalid CueBlockNumber 0"); break; } - GST_DEBUG_OBJECT (common, "CueBlockNumber: %" G_GUINT64_FORMAT, num); + GST_DEBUG_OBJECT (common->sinkpad, "CueBlockNumber: %" G_GUINT64_FORMAT, + num); idx.block = num; /* mild sanity check, disregard strange cases ... */ if (idx.block > G_MAXUINT16) { - GST_DEBUG_OBJECT (common, "... looks suspicious, ignoring"); + GST_DEBUG_OBJECT (common->sinkpad, "... looks suspicious, ignoring"); idx.block = 1; } break; @@ -1438,7 +1450,7 @@ gst_matroska_read_common_parse_index_cuetrack (GstMatroskaReadCommon * common, common->index->len - 1); if (last_idx->block == idx.block && last_idx->pos == idx.pos && last_idx->track == idx.track && idx.time > last_idx->time) { - GST_DEBUG_OBJECT (common, "Cue entry refers to same location, " + GST_DEBUG_OBJECT (common->sinkpad, "Cue entry refers to same location, " "but has different time than previous entry; discarding"); idx.track = 0; } @@ -1449,7 +1461,8 @@ gst_matroska_read_common_parse_index_cuetrack (GstMatroskaReadCommon * common, g_array_append_val (common->index, idx); (*nentries)++; } else if (ret == GST_FLOW_OK || ret == GST_FLOW_EOS) { - GST_DEBUG_OBJECT (common, "CueTrackPositions without valid content"); + GST_DEBUG_OBJECT (common->sinkpad, + "CueTrackPositions without valid content"); } return ret; @@ -1482,7 +1495,7 @@ gst_matroska_read_common_parse_index_pointentry (GstMatroskaReadCommon * if ((ret = gst_ebml_read_uint (ebml, &id, &time)) != GST_FLOW_OK) break; - GST_DEBUG_OBJECT (common, "CueTime: %" G_GUINT64_FORMAT, time); + GST_DEBUG_OBJECT (common->sinkpad, "CueTime: %" G_GUINT64_FORMAT, time); time = time * common->time_scale; break; } @@ -1508,7 +1521,7 @@ gst_matroska_read_common_parse_index_pointentry (GstMatroskaReadCommon * if (nentries > 0) { if (time == GST_CLOCK_TIME_NONE) { - GST_WARNING_OBJECT (common, "CuePoint without valid time"); + GST_WARNING_OBJECT (common->sinkpad, "CuePoint without valid time"); g_array_remove_range (common->index, common->index->len - nentries, nentries); } else { @@ -1519,13 +1532,13 @@ gst_matroska_read_common_parse_index_pointentry (GstMatroskaReadCommon * &g_array_index (common->index, GstMatroskaIndex, i); idx->time = time; - GST_DEBUG_OBJECT (common, "Index entry: pos=%" G_GUINT64_FORMAT + GST_DEBUG_OBJECT (common->sinkpad, "Index entry: pos=%" G_GUINT64_FORMAT ", time=%" GST_TIME_FORMAT ", track=%u, block=%u", idx->pos, GST_TIME_ARGS (idx->time), (guint) idx->track, (guint) idx->block); } } } else { - GST_DEBUG_OBJECT (common, "Empty CuePoint"); + GST_DEBUG_OBJECT (common->sinkpad, "Empty CuePoint"); } return ret; @@ -1547,7 +1560,7 @@ gst_matroska_read_common_stream_from_num (GstMatroskaReadCommon * common, } if (n == common->num_streams) - GST_WARNING_OBJECT (common, + GST_WARNING_OBJECT (common->sinkpad, "Failed to find corresponding pad for tracknum %d", track_num); return -1; @@ -1621,9 +1634,9 @@ gst_matroska_read_common_parse_index (GstMatroskaReadCommon * common, writer_id = common->element_index_writer_id; } - GST_LOG_OBJECT (common, "adding association %" GST_TIME_FORMAT "-> %" - G_GUINT64_FORMAT " for writer id %d", GST_TIME_ARGS (idx->time), - idx->pos, writer_id); + GST_LOG_OBJECT (common->sinkpad, + "adding association %" GST_TIME_FORMAT "-> %" G_GUINT64_FORMAT + " for writer id %d", GST_TIME_ARGS (idx->time), idx->pos, writer_id); gst_index_add_association (common->element_index, writer_id, GST_ASSOCIATION_FLAG_KEY_UNIT, GST_FORMAT_TIME, idx->time, GST_FORMAT_BYTES, idx->pos + common->ebml_segment_start, NULL); @@ -1685,7 +1698,8 @@ gst_matroska_read_common_parse_info (GstMatroskaReadCommon * common, break; - GST_DEBUG_OBJECT (common, "TimeCodeScale: %" G_GUINT64_FORMAT, num); + GST_DEBUG_OBJECT (common->sinkpad, "TimeCodeScale: %" G_GUINT64_FORMAT, + num); common->time_scale = num; break; } @@ -1695,11 +1709,11 @@ gst_matroska_read_common_parse_info (GstMatroskaReadCommon * common, break; if (dur_f <= 0.0) { - GST_WARNING_OBJECT (common, "Invalid duration %lf", dur_f); + GST_WARNING_OBJECT (common->sinkpad, "Invalid duration %lf", dur_f); break; } - GST_DEBUG_OBJECT (common, "Duration: %lf", dur_f); + GST_DEBUG_OBJECT (common->sinkpad, "Duration: %lf", dur_f); break; } @@ -1709,7 +1723,8 @@ gst_matroska_read_common_parse_info (GstMatroskaReadCommon * common, if ((ret = gst_ebml_read_utf8 (ebml, &id, &text)) != GST_FLOW_OK) break; - GST_DEBUG_OBJECT (common, "WritingApp: %s", GST_STR_NULL (text)); + GST_DEBUG_OBJECT (common->sinkpad, "WritingApp: %s", + GST_STR_NULL (text)); common->writing_app = text; break; } @@ -1720,7 +1735,8 @@ gst_matroska_read_common_parse_info (GstMatroskaReadCommon * common, if ((ret = gst_ebml_read_utf8 (ebml, &id, &text)) != GST_FLOW_OK) break; - GST_DEBUG_OBJECT (common, "MuxingApp: %s", GST_STR_NULL (text)); + GST_DEBUG_OBJECT (common->sinkpad, "MuxingApp: %s", + GST_STR_NULL (text)); common->muxing_app = text; break; } @@ -1731,7 +1747,7 @@ gst_matroska_read_common_parse_info (GstMatroskaReadCommon * common, if ((ret = gst_ebml_read_date (ebml, &id, &time)) != GST_FLOW_OK) break; - GST_DEBUG_OBJECT (common, "DateUTC: %" G_GINT64_FORMAT, time); + GST_DEBUG_OBJECT (common->sinkpad, "DateUTC: %" G_GINT64_FORMAT, time); common->created = time; break; } @@ -1743,7 +1759,7 @@ gst_matroska_read_common_parse_info (GstMatroskaReadCommon * common, if ((ret = gst_ebml_read_utf8 (ebml, &id, &text)) != GST_FLOW_OK) break; - GST_DEBUG_OBJECT (common, "Title: %s", GST_STR_NULL (text)); + GST_DEBUG_OBJECT (common->sinkpad, "Title: %s", GST_STR_NULL (text)); taglist = gst_tag_list_new (GST_TAG_TITLE, text, NULL); gst_tag_list_set_scope (taglist, GST_TAG_SCOPE_GLOBAL); gst_matroska_read_common_found_global_tag (common, el, taglist); @@ -1981,7 +1997,7 @@ gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * g_free (tag); tag = NULL; ret = gst_ebml_read_ascii (ebml, &id, &tag); - GST_DEBUG_OBJECT (common, "TagName: %s", GST_STR_NULL (tag)); + GST_DEBUG_OBJECT (common->sinkpad, "TagName: %s", GST_STR_NULL (tag)); g_free (name_with_parent); if (parent != NULL) name_with_parent = g_strdup_printf ("%s/%s", parent, tag); @@ -1993,7 +2009,8 @@ gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * g_free (value); value = NULL; ret = gst_ebml_read_utf8 (ebml, &id, &value); - GST_DEBUG_OBJECT (common, "TagString: %s", GST_STR_NULL (value)); + GST_DEBUG_OBJECT (common->sinkpad, "TagString: %s", + GST_STR_NULL (value)); break; case GST_MATROSKA_ID_SIMPLETAG: @@ -2061,7 +2078,7 @@ gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * gst_tag_list_add_values (*p_taglist, GST_TAG_MERGE_APPEND, tagname_gst, &dest, NULL); } else { - GST_WARNING_OBJECT (common, "Can't transform tag '%s' with " + GST_WARNING_OBJECT (common->sinkpad, "Can't transform tag '%s' with " "value '%s' to target type '%s'", tag, value, g_type_name (dest_type)); } @@ -2128,8 +2145,9 @@ gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * gst_tag_list_add_values (*p_taglist, GST_TAG_MERGE_APPEND, tagname_gst, &dest, NULL); } else { - GST_WARNING_OBJECT (common, "Can't transform complex tag '%s' " - "to target type '%s'", val, g_type_name (dest_type)); + GST_WARNING_OBJECT (common->sinkpad, + "Can't transform complex tag '%s' " "to target type '%s'", + val, g_type_name (dest_type)); } g_value_unset (&dest); matched = TRUE; @@ -2363,7 +2381,7 @@ gst_matroska_read_common_parse_metadata_id_tag (GstMatroskaReadCommon * common, gint i; if (chapter_targets->len > 0 || edition_targets->len > 0) { if (common->toc == NULL) - GST_WARNING_OBJECT (common, + GST_WARNING_OBJECT (common->sinkpad, "Found chapter/edition specific tag, but TOC is not present"); else { cur = gst_toc_get_entries (common->toc); @@ -2390,7 +2408,7 @@ gst_matroska_read_common_parse_metadata_id_tag (GstMatroskaReadCommon * common, } } if (!found) { - GST_WARNING_OBJECT (common, + GST_WARNING_OBJECT (common->sinkpad, "Found track-specific tag(s), but track %" G_GUINT64_FORMAT " is not known (yet?)", tgt); } @@ -2425,8 +2443,8 @@ gst_matroska_read_common_parse_metadata (GstMatroskaReadCommon * common, guint64 *pos = l->data; if (*pos == curpos) { - GST_DEBUG_OBJECT (common, "Skipping already parsed Tags at offset %" - G_GUINT64_FORMAT, curpos); + GST_DEBUG_OBJECT (common->sinkpad, + "Skipping already parsed Tags at offset %" G_GUINT64_FORMAT, curpos); return GST_FLOW_OK; } } @@ -2552,7 +2570,7 @@ gst_matroska_read_common_peek_bytes (GstMatroskaReadCommon * common, guint64 gst_pad_pull_range (common->sinkpad, common->offset, size, &common->cached_buffer); if (ret != GST_FLOW_OK) { - GST_DEBUG_OBJECT (common, "pull_range returned %d", ret); + GST_DEBUG_OBJECT (common->sinkpad, "pull_range returned %d", ret); if (p_buf) *p_buf = NULL; if (bytes) @@ -2561,7 +2579,7 @@ gst_matroska_read_common_peek_bytes (GstMatroskaReadCommon * common, guint64 } if (gst_buffer_get_size (common->cached_buffer) < size) { - GST_WARNING_OBJECT (common, "Dropping short buffer at offset %" + GST_WARNING_OBJECT (common->sinkpad, "Dropping short buffer at offset %" G_GUINT64_FORMAT ": wanted %u bytes, got %" G_GSIZE_FORMAT " bytes", common->offset, size, gst_buffer_get_size (common->cached_buffer)); @@ -2649,14 +2667,15 @@ gst_matroska_read_common_read_track_encoding (GstMatroskaReadCommon * common, if (!gst_matroska_read_common_encoding_order_unique (context->encodings, num)) { - GST_ERROR_OBJECT (common, "ContentEncodingOrder %" G_GUINT64_FORMAT + GST_ERROR_OBJECT (common->sinkpad, + "ContentEncodingOrder %" G_GUINT64_FORMAT "is not unique for track %" G_GUINT64_FORMAT, num, context->num); ret = GST_FLOW_ERROR; break; } - GST_DEBUG_OBJECT (common, "ContentEncodingOrder: %" G_GUINT64_FORMAT, - num); + GST_DEBUG_OBJECT (common->sinkpad, + "ContentEncodingOrder: %" G_GUINT64_FORMAT, num); enc.order = num; break; } @@ -2667,14 +2686,14 @@ gst_matroska_read_common_read_track_encoding (GstMatroskaReadCommon * common, break; if (num > 7 || num == 0) { - GST_ERROR_OBJECT (common, "Invalid ContentEncodingScope %" + GST_ERROR_OBJECT (common->sinkpad, "Invalid ContentEncodingScope %" G_GUINT64_FORMAT, num); ret = GST_FLOW_ERROR; break; } - GST_DEBUG_OBJECT (common, "ContentEncodingScope: %" G_GUINT64_FORMAT, - num); + GST_DEBUG_OBJECT (common->sinkpad, + "ContentEncodingScope: %" G_GUINT64_FORMAT, num); enc.scope = num; break; @@ -2686,17 +2705,18 @@ gst_matroska_read_common_read_track_encoding (GstMatroskaReadCommon * common, break; if (num > 1) { - GST_ERROR_OBJECT (common, "Invalid ContentEncodingType %" + GST_ERROR_OBJECT (common->sinkpad, "Invalid ContentEncodingType %" G_GUINT64_FORMAT, num); ret = GST_FLOW_ERROR; break; } else if (num != 0) { - GST_ERROR_OBJECT (common, "Encrypted tracks are not supported yet"); + GST_ERROR_OBJECT (common->sinkpad, + "Encrypted tracks are not supported yet"); ret = GST_FLOW_ERROR; break; } - GST_DEBUG_OBJECT (common, "ContentEncodingType: %" G_GUINT64_FORMAT, - num); + GST_DEBUG_OBJECT (common->sinkpad, + "ContentEncodingType: %" G_GUINT64_FORMAT, num); enc.type = num; break; } @@ -2720,13 +2740,13 @@ gst_matroska_read_common_read_track_encoding (GstMatroskaReadCommon * common, break; } if (num > 3) { - GST_ERROR_OBJECT (common, "Invalid ContentCompAlgo %" + GST_ERROR_OBJECT (common->sinkpad, "Invalid ContentCompAlgo %" G_GUINT64_FORMAT, num); ret = GST_FLOW_ERROR; break; } - GST_DEBUG_OBJECT (common, "ContentCompAlgo: %" G_GUINT64_FORMAT, - num); + GST_DEBUG_OBJECT (common->sinkpad, + "ContentCompAlgo: %" G_GUINT64_FORMAT, num); enc.comp_algo = num; break; @@ -2742,12 +2762,12 @@ gst_matroska_read_common_read_track_encoding (GstMatroskaReadCommon * common, } enc.comp_settings = data; enc.comp_settings_length = size; - GST_DEBUG_OBJECT (common, + GST_DEBUG_OBJECT (common->sinkpad, "ContentCompSettings of size %" G_GUINT64_FORMAT, size); break; } default: - GST_WARNING_OBJECT (common, + GST_WARNING_OBJECT (common->sinkpad, "Unknown ContentCompression subelement 0x%x - ignoring", id); ret = gst_ebml_read_skip (ebml); break; @@ -2758,12 +2778,13 @@ gst_matroska_read_common_read_track_encoding (GstMatroskaReadCommon * common, } case GST_MATROSKA_ID_CONTENTENCRYPTION: - GST_ERROR_OBJECT (common, "Encrypted tracks not yet supported"); + GST_ERROR_OBJECT (common->sinkpad, + "Encrypted tracks not yet supported"); gst_ebml_read_skip (ebml); ret = GST_FLOW_ERROR; break; default: - GST_WARNING_OBJECT (common, + GST_WARNING_OBJECT (common->sinkpad, "Unknown ContentEncoding subelement 0x%x - ignoring", id); ret = gst_ebml_read_skip (ebml); break; @@ -2808,7 +2829,7 @@ gst_matroska_read_common_read_track_encodings (GstMatroskaReadCommon * common, context); break; default: - GST_WARNING_OBJECT (common, + GST_WARNING_OBJECT (common->sinkpad, "Unknown ContentEncodings subelement 0x%x - ignoring", id); ret = gst_ebml_read_skip (ebml); break; @@ -2865,7 +2886,7 @@ gst_matroska_read_common_reset (GstElement * element, { guint i; - GST_LOG_OBJECT (ctx, "resetting read context"); + GST_LOG_OBJECT (ctx->sinkpad, "resetting read context"); /* reset input */ ctx->state = GST_MATROSKA_READ_STATE_START; @@ -2950,7 +2971,7 @@ gst_matroska_read_common_reset_streams (GstMatroskaReadCommon * common, { gint i; - GST_DEBUG_OBJECT (common, "resetting stream state"); + GST_DEBUG_OBJECT (common->sinkpad, "resetting stream state"); g_assert (common->src->len == common->num_streams); for (i = 0; i < common->src->len; i++) { diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index 9e454928..c8c512e1 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -3063,7 +3063,7 @@ do_handle_sync (GstRtpJitterBuffer * jitterbuffer) guint64 last_rtptime; guint64 clock_base; guint64 ext_rtptime, diff; - gboolean drop = FALSE; + gboolean valid = TRUE, keep = FALSE; priv = jitterbuffer->priv; @@ -3080,13 +3080,15 @@ do_handle_sync (GstRtpJitterBuffer * jitterbuffer) ext_rtptime, base_rtptime, clock_rate, clock_base, last_rtptime); if (base_rtptime == -1 || clock_rate == -1 || base_time == -1) { - GST_DEBUG_OBJECT (jitterbuffer, "dropping, no RTP values"); - drop = TRUE; + /* we keep this SR packet for later. When we get a valid RTP packet the + * above values will be set and we can try to use the SR packet */ + GST_DEBUG_OBJECT (jitterbuffer, "keeping for later, no RTP values"); + keep = TRUE; } else { /* we can't accept anything that happened before we did the last resync */ if (base_rtptime > ext_rtptime) { GST_DEBUG_OBJECT (jitterbuffer, "dropping, older than base time"); - drop = TRUE; + valid = FALSE; } else { /* the SR RTP timestamp must be something close to what we last observed * in the jitterbuffer */ @@ -3108,7 +3110,9 @@ do_handle_sync (GstRtpJitterBuffer * jitterbuffer) } } - if (!drop) { + if (keep) { + GST_DEBUG_OBJECT (jitterbuffer, "keeping RTCP packet for later"); + } else if (valid) { GstStructure *s; s = gst_structure_new ("application/x-rtp-sync", @@ -3128,6 +3132,7 @@ do_handle_sync (GstRtpJitterBuffer * jitterbuffer) gst_structure_free (s); } else { GST_DEBUG_OBJECT (jitterbuffer, "dropping RTCP packet"); + gst_buffer_replace (&priv->last_sr, NULL); } } diff --git a/gst/rtpmanager/gstrtpssrcdemux.c b/gst/rtpmanager/gstrtpssrcdemux.c index ef08290d..5395567f 100644 --- a/gst/rtpmanager/gstrtpssrcdemux.c +++ b/gst/rtpmanager/gstrtpssrcdemux.c @@ -694,6 +694,9 @@ gst_rtp_ssrc_demux_rtcp_chain (GstPad * pad, GstObject * parent, gst_rtcp_packet_sr_get_sender_info (&packet, &ssrc, NULL, NULL, NULL, NULL); break; + case GST_RTCP_TYPE_RR: + ssrc = gst_rtcp_packet_rr_get_ssrc (&packet); + break; default: goto unexpected_rtcp; } diff --git a/gst/videomixer/videomixer2.c b/gst/videomixer/videomixer2.c index b97e0ad5..f87f4b76 100644 --- a/gst/videomixer/videomixer2.c +++ b/gst/videomixer/videomixer2.c @@ -1642,16 +1642,16 @@ gst_videomixer2_src_setcaps (GstPad * pad, GstVideoMixer2 * mix, GstCaps * caps) GST_INFO_OBJECT (pad, "set src caps: %" GST_PTR_FORMAT, caps); - mix->blend = NULL; - mix->overlay = NULL; - mix->fill_checker = NULL; - mix->fill_color = NULL; - if (!gst_video_info_from_caps (&info, caps)) goto done; GST_VIDEO_MIXER2_LOCK (mix); + mix->blend = NULL; + mix->overlay = NULL; + mix->fill_checker = NULL; + mix->fill_color = NULL; + if (GST_VIDEO_INFO_FPS_N (&mix->info) != GST_VIDEO_INFO_FPS_N (&info) || GST_VIDEO_INFO_FPS_D (&mix->info) != GST_VIDEO_INFO_FPS_D (&info)) { if (mix->segment.position != -1) { @@ -2290,7 +2290,7 @@ gst_videomixer2_class_init (GstVideoMixer2Class * klass) gst_static_pad_template_get (&sink_factory)); gst_element_class_set_static_metadata (gstelement_class, "Video mixer 2", - "Filter/Editor/Video", + "Filter/Editor/Video/Compositor", "Mix multiple video streams", "Wim Taymans , " "Sebastian Dröge "); diff --git a/gst/videomixer/videomixerorc-dist.c b/gst/videomixer/videomixerorc-dist.c index 05c18637..b8002c75 100644 --- a/gst/videomixer/videomixerorc-dist.c +++ b/gst/videomixer/videomixerorc-dist.c @@ -1890,7 +1890,7 @@ video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, static const orc_uint8 bc[] = { 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103, - 98, + 98, 11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 255, 0, 0, 0, 14, 4, 0, 255, 255, 255, 14, 4, 8, 0, 0, 0, 16, 2, 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 4, 20, 8, @@ -2456,7 +2456,7 @@ video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, static const orc_uint8 bc[] = { 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114, - 97, + 97, 11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 0, 0, 0, 255, 14, 4, 255, 255, 255, 0, 14, 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 8, @@ -2665,7 +2665,7 @@ videomixer_video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride, static const orc_uint8 bc[] = { 1, 7, 9, 38, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 109, 101, 109, 99, 112, 121, 95, 50, 100, 11, 1, 1, 12, 1, 1, 42, 0, 4, 2, 0, }; @@ -2887,9 +2887,9 @@ videomixer_video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 85, 89, 86, 89, 11, 4, 4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 32, 4, 21, @@ -3123,9 +3123,9 @@ videomixer_video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 89, 85, 89, 50, 11, 4, 4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 4, 32, 21, @@ -3395,9 +3395,9 @@ videomixer_video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 65, 89, 85, 86, 11, 4, 4, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, @@ -3654,9 +3654,9 @@ videomixer_video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2, 20, 2, 21, 1, 199, 32, 34, 4, 97, @@ -3801,7 +3801,7 @@ videomixer_video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 85, 89, 50, 11, 4, 4, 12, 4, 4, 21, 1, 183, 0, 4, 2, 0, }; @@ -3946,7 +3946,7 @@ videomixer_video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95, 52, 50, 50, 11, 1, 1, 11, 1, 1, 12, 1, 1, 42, 0, 4, 42, 1, 4, 2, 0, @@ -4085,7 +4085,7 @@ videomixer_video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95, 52, 52, 52, 11, 2, 2, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32, 4, 97, 0, 32, 97, 1, 32, 2, 0, @@ -4217,7 +4217,7 @@ videomixer_video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95, 52, 52, 52, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32, 4, 97, 0, 32, 2, 0, @@ -4362,7 +4362,7 @@ videomixer_video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95, 52, 50, 50, 11, 1, 1, 12, 2, 2, 20, 1, 20, 1, 199, 32, 33, 4, 39, 0, 32, 33, 2, 0, @@ -4532,7 +4532,7 @@ videomixer_video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95, 52, 50, 48, 11, 1, 1, 12, 2, 2, 12, 2, 2, 20, 2, 20, 1, 20, 1, 21, 1, 39, 32, 4, 5, 199, 33, 34, 32, 39, @@ -4679,7 +4679,7 @@ videomixer_video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95, 52, 50, 48, 11, 1, 1, 12, 1, 1, 12, 1, 1, 39, 0, 4, 5, 2, 0, @@ -4918,7 +4918,7 @@ videomixer_video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 65, 89, 85, 86, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33, 32, 4, 21, 1, 196, 34, @@ -5166,7 +5166,7 @@ videomixer_video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 65, 89, 85, 86, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32, 33, 4, 21, 1, 196, 34, @@ -5364,7 +5364,7 @@ videomixer_video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199, 32, 0, 4, 199, 2, 1, 32, 2, 0, @@ -5559,7 +5559,7 @@ videomixer_video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199, 0, 32, 4, 199, 2, 1, 32, 2, 0, @@ -5766,7 +5766,7 @@ videomixer_video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52, 52, 52, 11, 2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20, 1, 21, 1, 199, 32, 0, 4, 199, 34, 33, 32, 151, 1, @@ -5980,7 +5980,7 @@ videomixer_video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52, 52, 52, 11, 2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20, 1, 21, 1, 199, 0, 32, 4, 199, 34, 33, 32, 151, 1, @@ -6230,9 +6230,9 @@ videomixer_video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2, 20, 2, 21, 1, 199, 34, 32, 4, 97, @@ -6615,7 +6615,7 @@ videomixer_video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 12, 8, 8, 20, 4, 20, 4, 20, 4, 20, 4, 20, 2, 20, 2, @@ -6887,7 +6887,7 @@ videomixer_video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 85, 89, 50, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, @@ -7131,7 +7131,7 @@ videomixer_video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 85, 89, 86, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, @@ -7385,7 +7385,7 @@ videomixer_video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 21, 1, 198, 33, 32, 4, 198, 34, 35, 33, @@ -7593,7 +7593,7 @@ videomixer_video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 52, 52, 52, 11, 1, 1, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 20, 2, 198, 33, 32, 4, 199, 2, 1, 33, 189, 0, 32, 2, 0, @@ -7791,7 +7791,7 @@ videomixer_video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 89, 85, 89, 50, 11, 4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5, 6, 21, 1, 196, 0, 4, 32, 2, 0, @@ -7986,7 +7986,7 @@ videomixer_video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 85, 89, 86, 89, 11, 4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5, 6, 21, 1, 196, 0, 32, 4, 2, 0, @@ -8241,7 +8241,7 @@ videomixer_video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 65, 89, 85, 86, 11, 8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 196, 32, 5, 6, @@ -8488,7 +8488,7 @@ videomixer_video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 89, 85, 89, 50, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20, 2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33, @@ -8733,7 +8733,7 @@ videomixer_video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 85, 89, 86, 89, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20, 2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33, @@ -8954,7 +8954,7 @@ videomixer_video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 65, 89, 85, 86, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 196, 32, 5, 6, 196, 33, 16, 4, @@ -9478,7 +9478,7 @@ videomixer_video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 65, 82, 71, 66, 11, 4, 4, 12, 4, 4, 14, 1, 8, 0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14, 4, 103, 0, 0, 0, @@ -10089,7 +10089,7 @@ videomixer_video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 14, 1, 8, 0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14, 4, 103, 0, 0, 0, @@ -10700,7 +10700,7 @@ videomixer_video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 65, 66, 71, 82, 11, 4, 4, 12, 4, 4, 14, 1, 8, 0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14, 4, 103, 0, 0, 0, @@ -11311,7 +11311,7 @@ videomixer_video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, - 99, + 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 82, 71, 66, 65, 11, 4, 4, 12, 4, 4, 14, 1, 8, 0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14, 4, 103, 0, 0, 0, @@ -11932,9 +11932,9 @@ videomixer_video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 66, 71, 82, 65, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 8, 0, 0, 0, 14, 1, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14, @@ -12597,9 +12597,9 @@ videomixer_video_convert_orc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 66, 71, 82, 65, 95, 97, 118, 103, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 8, 0, 0, 0, 14, 1, 128, @@ -12909,9 +12909,9 @@ videomixer_video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 73, 52, 50, 48, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 5, 45, 35, 6, 196, 32, 34, 35, @@ -13160,9 +13160,9 @@ videomixer_video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 85, 86, 57, 11, 8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 4, 20, 4, 20, 1, 20, 1, 45, 35, 5, 45, 36, 6, 196, 32, @@ -13407,9 +13407,9 @@ videomixer_video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 85, 89, 50, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33, 32, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, @@ -13644,9 +13644,9 @@ videomixer_video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 85, 89, 86, 89, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32, 33, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, @@ -13887,9 +13887,9 @@ videomixer_video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 86, 89, 85, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33, 32, 4, 183, 33, 33, 21, 1, 196, 34, 16, 32, 195, @@ -14134,9 +14134,9 @@ videomixer_video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 52, 50, 66, 11, 8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 196, 32, 5, 6, 21, 1, 196, 35, 16, 4, @@ -14341,9 +14341,9 @@ videomixer_video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 52, 52, 52, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 196, 32, 5, 6, 196, 33, 16, 4, 195, 0, 33, 32, 2, 0, @@ -14520,9 +14520,9 @@ videomixer_video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 56, 48, 48, 11, 4, 4, 12, 1, 1, 14, 1, 255, 0, 0, 0, 14, 2, 128, 128, 0, 0, 20, 2, 196, 32, 16, 4, 195, 0, 32, 17, 2, 0, @@ -14697,9 +14697,9 @@ videomixer_video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 40, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 49, 54, 11, 4, 4, 12, 2, 2, 14, 1, 255, 0, 0, 0, 14, 2, 128, 128, 0, 0, 20, 2, 20, 1, 158, 33, 4, 196, 32, 16, 33, 195, 0, 32, 17, 2, 0, @@ -14818,9 +14818,9 @@ videomixer_video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2, 0, }; @@ -15026,9 +15026,9 @@ videomixer_video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 65, 66, 71, 82, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 198, 36, 37, 4, 199, 33, 34, 36, 199, 35, 32, 37, 196, 38, @@ -15254,9 +15254,9 @@ videomixer_video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 82, 71, 66, 65, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 198, 37, 36, 4, 199, 34, 33, 36, 199, 32, 35, 37, 196, 38, @@ -15484,9 +15484,9 @@ videomixer_video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 78, 86, 49, 50, 11, 8, 8, 12, 2, 2, 12, 2, 2, 14, 1, 255, 0, 0, 0, 20, 4, 20, 4, 195, 33, 5, 5, 21, 1, 196, 32, 16, 4, 21, 1, 195, 0, 32, 33, 2, @@ -15705,9 +15705,9 @@ videomixer_video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 78, 86, 50, 49, 11, 8, 8, 12, 2, 2, 12, 2, 2, 14, 1, 255, 0, 0, 0, 20, 2, 20, 4, 20, 4, 183, 32, 5, 195, 34, 32, 32, 21, 1, 196, 33, 16, 4, 21, 1, @@ -15905,9 +15905,9 @@ videomixer_video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 103, 101, 116, 108, 105, 110, 101, 95, 65, 52, 50, 48, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 5, 45, 35, 6, 196, 32, 34, 35, 196, 33, 7, @@ -16181,9 +16181,9 @@ videomixer_video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 73, 52, 50, 48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 21, @@ -16420,9 +16420,9 @@ videomixer_video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 85, 89, 50, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21, 1, 189, 32, @@ -16655,9 +16655,9 @@ videomixer_video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 86, 89, 85, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21, 1, 189, 32, @@ -16886,9 +16886,9 @@ videomixer_video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 85, 89, 86, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21, 1, 189, 32, @@ -17123,9 +17123,9 @@ videomixer_video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 21, 1, 198, 33, 32, 4, 198, 34, 35, 33, 21, 1, 39, 34, 34, 35, @@ -17315,9 +17315,9 @@ videomixer_video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 52, 52, 52, 11, 1, 1, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 20, 2, 198, 33, 32, 4, 199, 2, 1, 33, 189, 0, 32, 2, 0, @@ -17460,9 +17460,9 @@ videomixer_video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 56, 48, 48, 11, 1, 1, 12, 4, 4, 20, 2, 190, 32, 4, 189, 0, 32, 2, 0, }; @@ -17608,9 +17608,9 @@ videomixer_video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 40, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 8, 0, 0, 0, 20, 2, 20, 1, 190, 32, 4, 189, 33, 32, 150, 32, 33, 93, 0, 32, 16, 2, 0, @@ -17730,9 +17730,9 @@ videomixer_video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2, 0, }; @@ -17938,9 +17938,9 @@ videomixer_video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 65, 66, 71, 82, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 198, 39, 38, 4, 199, 35, 34, 39, 199, 33, 32, 38, 196, 37, @@ -18166,9 +18166,9 @@ videomixer_video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 82, 71, 66, 65, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 198, 39, 38, 4, 199, 35, 34, 39, 199, 33, 32, 38, 196, 37, @@ -18380,9 +18380,9 @@ videomixer_video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 78, 86, 49, 50, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 198, 34, 35, 33, 21, 1, 39, 1, @@ -18594,9 +18594,9 @@ videomixer_video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 78, 86, 50, 49, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 198, 34, 35, 33, 21, 1, @@ -18899,9 +18899,9 @@ videomixer_video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { 1, 9, 41, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, + 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 95, 111, 114, 99, - 95, + 95, 112, 117, 116, 108, 105, 110, 101, 95, 65, 52, 50, 48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 11, 2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, 198, 33, 32, 4, 21, 1, 189, diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c index 7e5f043b..167e4ba7 100644 --- a/gst/wavparse/gstwavparse.c +++ b/gst/wavparse/gstwavparse.c @@ -1451,6 +1451,7 @@ gst_wavparse_stream_headers (GstWavParse * wav) data_size); gst_buffer_unmap (buf, &map); } + wav->offset += GST_ROUND_UP_2 (data_size); break; } default: diff --git a/install-sh b/install-sh index a9244eb0..377bb868 100755 --- a/install-sh +++ b/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-01-19.21; # UTC +scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,7 +35,7 @@ scriptversion=2011-01-19.21; # UTC # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it +# 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written @@ -156,7 +156,7 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; -t) dst_arg=$2 - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac @@ -190,7 +190,7 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac @@ -202,7 +202,7 @@ if test $# -eq 0; then echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call `install-sh -d' without argument. + # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi @@ -240,7 +240,7 @@ fi for src do - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac @@ -354,7 +354,7 @@ do if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. + # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in diff --git a/missing b/missing index 86a8fc31..db98974f 100755 --- a/missing +++ b/missing @@ -1,11 +1,10 @@ #! /bin/sh -# Common stub for a few missing GNU programs while installing. +# Common wrapper for a few potentially missing GNU programs. -scriptversion=2012-01-06.13; # UTC +scriptversion=2013-10-28.13; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,68 +25,40 @@ scriptversion=2012-01-06.13; # UTC # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "Try '$0 --help' for more information" exit 1 fi -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi +case $1 in -msg="missing on your system" + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create \`y.tab.[ch]', if possible, from existing .[ch] + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. Send bug reports to ." exit $? @@ -99,228 +70,141 @@ Send bug reports to ." ;; -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" ;; -esac - -exit 0 + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff --git a/po/af.gmo b/po/af.gmo index 26669c6e..70e08942 100644 Binary files a/po/af.gmo and b/po/af.gmo differ diff --git a/po/af.po b/po/af.po index 0b5b7974..20a44454 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: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2004-03-18 14:16+0200\n" "Last-Translator: Petri Jooste \n" "Language-Team: Afrikaans \n" diff --git a/po/az.gmo b/po/az.gmo index f0eb9df6..e2047116 100644 Binary files a/po/az.gmo and b/po/az.gmo differ diff --git a/po/az.po b/po/az.po index aebc3318..a28d3867 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: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2004-03-19 18:29+0200\n" "Last-Translator: Metin Amiroff \n" "Language-Team: Azerbaijani \n" diff --git a/po/bg.gmo b/po/bg.gmo index 86a6d7da..15746e25 100644 Binary files a/po/bg.gmo and b/po/bg.gmo differ diff --git a/po/bg.po b/po/bg.po index 90b7e8c2..30864aa3 100644 --- a/po/bg.po +++ b/po/bg.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.28.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2011-04-26 22:35+0300\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" diff --git a/po/ca.gmo b/po/ca.gmo index d0637a1c..32b90707 100644 Binary files a/po/ca.gmo and b/po/ca.gmo differ diff --git a/po/ca.po b/po/ca.po index 2424aaf7..388d75de 100644 --- a/po/ca.po +++ b/po/ca.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.28.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2012-01-01 14:19+0100\n" "Last-Translator: Gil Forcada \n" "Language-Team: Catalan \n" diff --git a/po/cs.gmo b/po/cs.gmo index 451f42a2..8ae3a511 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index 78c39224..f5de00a2 100644 --- a/po/cs.po +++ b/po/cs.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.1.4\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2013-09-18 19:18+0200\n" "Last-Translator: Marek Černocký \n" "Language-Team: Czech \n" diff --git a/po/da.gmo b/po/da.gmo index faca88d8..4aee176c 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index 60da5aaf..8159494d 100644 --- a/po/da.po +++ b/po/da.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.3.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-05-24 23:54+0200\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" diff --git a/po/de.gmo b/po/de.gmo index 071af5b8..ccf69fa2 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index 6427ed78..b99f5b8e 100644 --- a/po/de.po +++ b/po/de.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-05-22 17:31+0100\n" "Last-Translator: Christian Kirbach \n" "Language-Team: German \n" diff --git a/po/el.gmo b/po/el.gmo index fee4b314..045d4287 100644 Binary files a/po/el.gmo and b/po/el.gmo differ diff --git a/po/el.po b/po/el.po index bb7bf400..03815abe 100644 --- a/po/el.po +++ b/po/el.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.28.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2012-05-05 19:05+0100\n" "Last-Translator: Savvas Radevic \n" "Language-Team: Greek \n" diff --git a/po/en_GB.gmo b/po/en_GB.gmo index 7a6518e9..e22ba795 100644 Binary files a/po/en_GB.gmo and b/po/en_GB.gmo differ diff --git a/po/en_GB.po b/po/en_GB.po index 274c54f8..3efebf94 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: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2004-04-26 10:41-0400\n" "Last-Translator: Gareth Owen \n" "Language-Team: English (British) \n" diff --git a/po/eo.gmo b/po/eo.gmo index a37dfe15..f15901b0 100644 Binary files a/po/eo.gmo and b/po/eo.gmo differ diff --git a/po/eo.po b/po/eo.po index 1fe9d6ab..9d10916c 100644 --- a/po/eo.po +++ b/po/eo.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.28.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2011-06-04 21:48+0100\n" "Last-Translator: Kristjan SCHMIDT \n" "Language-Team: Esperanto \n" diff --git a/po/es.gmo b/po/es.gmo index 1a0ad565..feda9b7a 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index d1e1fbf6..0a87f945 100644 --- a/po/es.po +++ b/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.26.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2011-02-12 18:30+0100\n" "Last-Translator: Jorge González González \n" "Language-Team: Spanish \n" diff --git a/po/eu.gmo b/po/eu.gmo index b89b2b90..8c0d0d72 100644 Binary files a/po/eu.gmo and b/po/eu.gmo differ diff --git a/po/eu.po b/po/eu.po index 52303df3..5d062a15 100644 --- a/po/eu.po +++ b/po/eu.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-0.10.18.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2010-03-25 12:37+0100\n" "Last-Translator: Mikel Olasagasti Uranga \n" "Language-Team: Basque \n" diff --git a/po/fi.gmo b/po/fi.gmo index dae34175..2e660ec5 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index c6e4cc4e..6cb1f401 100644 --- a/po/fi.po +++ b/po/fi.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.25.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2010-11-17 23:03+0200\n" "Last-Translator: Tommi Vainikainen \n" "Language-Team: Finnish \n" diff --git a/po/fr.gmo b/po/fr.gmo index ab7cdff4..0f75f6b8 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index 65fbdd95..9785ec59 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.28.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2011-04-28 09:22+0200\n" "Last-Translator: Claude Paroz \n" "Language-Team: French \n" diff --git a/po/gl.gmo b/po/gl.gmo index f461e6c5..47749535 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index 5d0b9a99..2b0ba94c 100644 --- a/po/gl.po +++ b/po/gl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.0.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2012-12-15 03:46+0200\n" "Last-Translator: Fran Dieguez \n" "Language-Team: Galician \n" diff --git a/po/gst-plugins-good-1.0.pot b/po/gst-plugins-good-1.0.pot index 4984aba1..3419962b 100644 --- a/po/gst-plugins-good-1.0.pot +++ b/po/gst-plugins-good-1.0.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good 1.3.3\n" +"Project-Id-Version: gst-plugins-good 1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -70,7 +70,7 @@ msgstr "" msgid "Internal data stream error." msgstr "" -#: gst/avi/gstavimux.c:1816 +#: gst/avi/gstavimux.c:1820 msgid "No or invalid input audio, AVI stream will be corrupt." msgstr "" @@ -125,7 +125,7 @@ msgid "" "plugin." msgstr "" -#: gst/wavparse/gstwavparse.c:2177 +#: gst/wavparse/gstwavparse.c:2178 msgid "Internal data flow error." msgstr "" diff --git a/po/hr.gmo b/po/hr.gmo index 5868e40b..8a660894 100644 Binary files a/po/hr.gmo and b/po/hr.gmo differ diff --git a/po/hr.po b/po/hr.po index a25164b3..88912c73 100644 --- a/po/hr.po +++ b/po/hr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.28.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2012-04-16 03:04+0200\n" "Last-Translator: Tomislav Krznar \n" "Language-Team: Croatian \n" diff --git a/po/hu.gmo b/po/hu.gmo index a20d0c0a..c8168930 100644 Binary files a/po/hu.gmo and b/po/hu.gmo differ diff --git a/po/hu.po b/po/hu.po index e00592cd..55ab23b7 100644 --- a/po/hu.po +++ b/po/hu.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-05-23 21:00+0200\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" diff --git a/po/id.gmo b/po/id.gmo index f45fb835..972a1bc6 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index 0053e627..52a0b4d7 100644 --- a/po/id.po +++ b/po/id.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-06-01 09:52+0700\n" "Last-Translator: Andhika Padmawan \n" "Language-Team: Indonesian \n" diff --git a/po/it.gmo b/po/it.gmo index 8b48581b..9afb5b07 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index 775b0156..f809f216 100644 --- a/po/it.po +++ b/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.25.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2010-10-25 10:11+0200\n" "Last-Translator: Luca Ferretti \n" "Language-Team: Italian \n" diff --git a/po/ja.gmo b/po/ja.gmo index c47584d0..206aca77 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index b10fdec7..30089e95 100644 --- a/po/ja.po +++ b/po/ja.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.0.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2012-12-22 20:13+0900\n" "Last-Translator: Takeshi Hamasaki \n" "Language-Team: Japanese \n" diff --git a/po/lt.gmo b/po/lt.gmo index a70f2600..d1cf048c 100644 Binary files a/po/lt.gmo and b/po/lt.gmo differ diff --git a/po/lt.po b/po/lt.po index c5362f1f..e8d663ac 100644 --- a/po/lt.po +++ b/po/lt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.23.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2010-07-16 19:34+0300\n" "Last-Translator: Žygimantas Beručka \n" "Language-Team: Lithuanian \n" diff --git a/po/lv.gmo b/po/lv.gmo index fa1896e0..8414a759 100644 Binary files a/po/lv.gmo and b/po/lv.gmo differ diff --git a/po/lv.po b/po/lv.po index debceca0..9e70eae5 100644 --- a/po/lv.po +++ b/po/lv.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.2.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-04-20 16:38+0300\n" "Last-Translator: Rihards Prieditis \n" "Language-Team: Latvian \n" diff --git a/po/mt.gmo b/po/mt.gmo index f4c50be0..9a2ee897 100644 Binary files a/po/mt.gmo and b/po/mt.gmo differ diff --git a/po/mt.po b/po/mt.po index 9d431249..295b1bff 100644 --- a/po/mt.po +++ b/po/mt.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-0.10.10.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2008-10-26 19:09+0100\n" "Last-Translator: Michel Bugeja \n" "Language-Team: Maltese \n" diff --git a/po/nb.gmo b/po/nb.gmo index fed90276..e4bb6786 100644 Binary files a/po/nb.gmo and b/po/nb.gmo differ diff --git a/po/nb.po b/po/nb.po index dd0fde69..4ba0bd1a 100644 --- a/po/nb.po +++ b/po/nb.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.2.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-01-22 17:49+0100\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" diff --git a/po/nl.gmo b/po/nl.gmo index b1cccca4..3d076223 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index 3425c007..6a32d182 100644 --- a/po/nl.po +++ b/po/nl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-05-22 00:41+0200\n" "Last-Translator: Freek de Kruijf \n" "Language-Team: Dutch \n" diff --git a/po/or.gmo b/po/or.gmo index 720af411..273a6a48 100644 Binary files a/po/or.gmo and b/po/or.gmo differ diff --git a/po/or.po b/po/or.po index 5cc2276d..95a7f3bd 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: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2004-09-27 13:32+0530\n" "Last-Translator: Gora Mohanty \n" "Language-Team: Oriya \n" diff --git a/po/pl.gmo b/po/pl.gmo index 60d02bf2..0bdac9f6 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index ee30221c..20923bb7 100644 --- a/po/pl.po +++ b/po/pl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-05-22 18:29+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index 3bdf9ee6..bbcf63e0 100644 Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ diff --git a/po/pt_BR.po b/po/pt_BR.po index c9c1cbc5..4fd1ab21 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.2.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2013-12-29 17:48-0200\n" "Last-Translator: Fabrício Godoy \n" "Language-Team: Brazilian Portuguese \n" "Language-Team: Romanian \n" diff --git a/po/ru.gmo b/po/ru.gmo index 9c45cae2..d56afcfb 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index 56e254f8..71abd792 100644 --- a/po/ru.po +++ b/po/ru.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-05-22 19:53+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" diff --git a/po/sk.gmo b/po/sk.gmo index 9c7fc801..2a761ded 100644 Binary files a/po/sk.gmo and b/po/sk.gmo differ diff --git a/po/sk.po b/po/sk.po index c85bc58c..dcc889dc 100644 --- a/po/sk.po +++ b/po/sk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.2.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-01-30 11:08+0100\n" "Last-Translator: Peter Tuharsky \n" "Language-Team: Slovak \n" diff --git a/po/sl.gmo b/po/sl.gmo index dd91019b..a29f61e0 100644 Binary files a/po/sl.gmo and b/po/sl.gmo differ diff --git a/po/sl.po b/po/sl.po index 402a1c3b..cd7e0b34 100644 --- a/po/sl.po +++ b/po/sl.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.2.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-04-09 22:52+0100\n" "Last-Translator: Klemen Košir \n" "Language-Team: Slovenian \n" diff --git a/po/sq.gmo b/po/sq.gmo index f04bbc3d..3997c933 100644 Binary files a/po/sq.gmo and b/po/sq.gmo differ diff --git a/po/sq.po b/po/sq.po index 44c4972f..ef2cd44f 100644 --- a/po/sq.po +++ b/po/sq.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins 0.8.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2004-08-07 20:29+0200\n" "Last-Translator: Laurent Dhima \n" "Language-Team: Albanian \n" diff --git a/po/sr.gmo b/po/sr.gmo index 82a13af2..05989455 100644 Binary files a/po/sr.gmo and b/po/sr.gmo differ diff --git a/po/sr.po b/po/sr.po index 441ecf23..0931e5a3 100644 --- a/po/sr.po +++ b/po/sr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.3.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-06-18 19:56+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" diff --git a/po/sv.gmo b/po/sv.gmo index 954a1b38..2cb563d6 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index 2e2e963e..c6b0e85f 100644 --- a/po/sv.po +++ b/po/sv.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.26.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2011-01-09 19:36+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" diff --git a/po/tr.gmo b/po/tr.gmo index b9749c1a..43c08587 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index cad211b7..00881016 100644 --- a/po/tr.po +++ b/po/tr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.0.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2013-03-10 13:05+0200\n" "Last-Translator: Server Acim \n" "Language-Team: Turkish \n" diff --git a/po/uk.gmo b/po/uk.gmo index b38ff025..b484f6d6 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index 664b6f3e..83c79f0f 100644 --- a/po/uk.po +++ b/po/uk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2014-05-22 07:28+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" diff --git a/po/vi.gmo b/po/vi.gmo index 40bb2aed..0fed5aee 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index 43fb4cc6..5d73991b 100644 --- a/po/vi.po +++ b/po/vi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.1.4\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2013-09-16 14:36+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index bd7d7ef3..14250e2e 100644 Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ diff --git a/po/zh_CN.po b/po/zh_CN.po index 7e2e1d64..50965d7a 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 0.10.16.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2009-11-13 22:20+0800\n" "Last-Translator: Ji ZhengYu \n" "Language-Team: Chinese (simplified) \n" diff --git a/po/zh_HK.gmo b/po/zh_HK.gmo index f7087e0e..9d9ae345 100644 Binary files a/po/zh_HK.gmo and b/po/zh_HK.gmo differ diff --git a/po/zh_HK.po b/po/zh_HK.po index 052535bc..b7b62c6d 100644 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-0.10.2 0.10.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2006-08-29 01:08+0800\n" "Last-Translator: Abel Cheung \n" "Language-Team: Chinese (Hong Kong) \n" diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index 61a44027..e4ccc0a2 100644 Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ diff --git a/po/zh_TW.po b/po/zh_TW.po index 8fdf23ab..90dad890 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-0.10.2 0.10.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2014-06-22 17:33+0200\n" +"POT-Creation-Date: 2014-06-28 11:04+0200\n" "PO-Revision-Date: 2006-08-29 01:08+0800\n" "Last-Translator: Abel Cheung \n" "Language-Team: Chinese (traditional) \n" diff --git a/sys/osxvideo/osxvideosink.h b/sys/osxvideo/osxvideosink.h index 6d51bf39..8f6bbd0f 100644 --- a/sys/osxvideo/osxvideosink.h +++ b/sys/osxvideo/osxvideosink.h @@ -83,7 +83,6 @@ struct _GstOSXVideoSink { void *osxvideosinkobject; NSView *superview; gboolean keep_par; - gboolean embed; GstVideoInfo info; }; diff --git a/sys/osxvideo/osxvideosink.m b/sys/osxvideo/osxvideosink.m index 84a445bd..faa3196c 100644 --- a/sys/osxvideo/osxvideosink.m +++ b/sys/osxvideo/osxvideosink.m @@ -29,11 +29,6 @@ * The OSXVideoSink renders video frames to a MacOSX window. The video output * must be directed to a window embedded in an existing NSApp. * - * When the NSView to be embedded is created an element #GstMessage with a - * name of 'have-ns-view' will be created and posted on the bus. - * The pointer to the NSView to embed will be in the 'nsview' field of that - * message. The application MUST handle this message and embed the view - * appropriately. */ #include "config.h" @@ -228,8 +223,6 @@ gst_osx_video_sink_osxwindow_create (GstOSXVideoSink * osxvideosink, gint width, { NSRect rect; GstOSXWindow *osxwindow = NULL; - GstStructure *s; - GstMessage *msg; gboolean res = TRUE; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -252,51 +245,29 @@ gst_osx_video_sink_osxwindow_create (GstOSXVideoSink * osxvideosink, gint width, rect.size.height = (float) osxwindow->height; osxwindow->gstview =[[GstGLView alloc] initWithFrame:rect]; - s = gst_structure_new ("have-ns-view", - "nsview", G_TYPE_POINTER, osxwindow->gstview, - nil); - - msg = gst_message_new_element (GST_OBJECT (osxvideosink), s); - gst_element_post_message (GST_ELEMENT (osxvideosink), msg); - - GST_INFO_OBJECT (osxvideosink, "'have-ns-view' message sent"); gst_osx_video_sink_run_cocoa_loop (osxvideosink); [osxwindow->gstview setMainThread:sink_class->ns_app_thread]; - /* check if have-ns-view was handled and osxwindow->gstview was added to a - * superview - */ - if ([osxwindow->gstview haveSuperview] == NO) { - /* have-ns-view wasn't handled, post prepare-xwindow-id */ - if (osxvideosink->superview == NULL) { - GST_INFO_OBJECT (osxvideosink, "emitting prepare-xwindow-id"); - gst_video_overlay_prepare_window_handle (GST_VIDEO_OVERLAY (osxvideosink)); - } + if (osxvideosink->superview == NULL) { + GST_INFO_OBJECT (osxvideosink, "emitting prepare-xwindow-id"); + gst_video_overlay_prepare_window_handle (GST_VIDEO_OVERLAY (osxvideosink)); + } - if (osxvideosink->superview != NULL) { - /* prepare-xwindow-id was handled, we have the superview in - * osxvideosink->superview. We now add osxwindow->gstview to the superview - * from the main thread - */ - GST_INFO_OBJECT (osxvideosink, "we have a superview, adding our view to it"); - gst_osx_video_sink_call_from_main_thread(osxvideosink, osxwindow->gstview, - @selector(addToSuperview:), osxvideosink->superview, NO); - - } else { - if (osxvideosink->embed) { - /* the view wasn't added to a superview. It's possible that the - * application handled have-ns-view, stored our view internally and is - * going to add it to a superview later (webkit does that now). - */ - GST_INFO_OBJECT (osxvideosink, "no superview"); - } else { - gst_osx_video_sink_call_from_main_thread(osxvideosink, - osxvideosink->osxvideosinkobject, - @selector(createInternalWindow), nil, YES); - GST_INFO_OBJECT (osxvideosink, "No superview, creating an internal window."); - } - } + if (osxvideosink->superview != NULL) { + /* prepare-xwindow-id was handled, we have the superview in + * osxvideosink->superview. We now add osxwindow->gstview to the superview + * from the main thread + */ + GST_INFO_OBJECT (osxvideosink, "we have a superview, adding our view to it"); + gst_osx_video_sink_call_from_main_thread(osxvideosink, osxwindow->gstview, + @selector(addToSuperview:), osxvideosink->superview, NO); + + } else { + gst_osx_video_sink_call_from_main_thread(osxvideosink, + osxvideosink->osxvideosinkobject, + @selector(createInternalWindow), nil, YES); + GST_INFO_OBJECT (osxvideosink, "No superview, creating an internal window."); } [osxwindow->gstview setNavigation: GST_NAVIGATION(osxvideosink)]; [osxvideosink->osxwindow->gstview setKeepAspectRatio: osxvideosink->keep_par]; @@ -474,9 +445,8 @@ gst_osx_video_sink_set_property (GObject * object, guint prop_id, switch (prop_id) { case ARG_EMBED: - osxvideosink->embed = g_value_get_boolean(value); g_warning ("The \"embed\" property of osxvideosink is deprecated and " - "will be removed in the near future. Use the GstVideoOverlay " + "has no effect anymore. Use the GstVideoOverlay " "instead."); break; case ARG_FORCE_PAR: @@ -503,7 +473,7 @@ gst_osx_video_sink_get_property (GObject * object, guint prop_id, switch (prop_id) { case ARG_EMBED: - g_value_set_boolean (value, osxvideosink->embed); + g_value_set_boolean (value, FALSE); break; case ARG_FORCE_PAR: g_value_set_boolean (value, osxvideosink->keep_par); @@ -589,7 +559,7 @@ gst_osx_video_sink_class_init (GstOSXVideoSinkClass * klass) /** * GstOSXVideoSink:embed * - * Set to #TRUE if you are embedding the video window in an application. + * For ABI comatibility onyl, do not use * **/ diff --git a/sys/v4l2/Makefile.am b/sys/v4l2/Makefile.am index 061609ee..5ccea1a0 100644 --- a/sys/v4l2/Makefile.am +++ b/sys/v4l2/Makefile.am @@ -5,7 +5,7 @@ include $(top_srcdir)/common/gst-glib-gen.mak libgstvideo4linux2_la_SOURCES = gstv4l2.c \ gstv4l2allocator.c \ gstv4l2colorbalance.c \ - gstv4l2devicemonitor.c \ + gstv4l2deviceprovider.c \ gstv4l2object.c \ gstv4l2bufferpool.c \ gstv4l2sink.c \ @@ -47,7 +47,7 @@ noinst_HEADERS = \ gstv4l2allocator.h \ gstv4l2bufferpool.h \ gstv4l2colorbalance.h \ - gstv4l2devicemonitor.h \ + gstv4l2deviceprovider.h \ gstv4l2object.h \ gstv4l2sink.h \ gstv4l2src.h \ diff --git a/sys/v4l2/Makefile.in b/sys/v4l2/Makefile.in index d1269344..b43c114f 100644 --- a/sys/v4l2/Makefile.in +++ b/sys/v4l2/Makefile.in @@ -169,7 +169,7 @@ libgstvideo4linux2_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ am_libgstvideo4linux2_la_OBJECTS = libgstvideo4linux2_la-gstv4l2.lo \ libgstvideo4linux2_la-gstv4l2allocator.lo \ libgstvideo4linux2_la-gstv4l2colorbalance.lo \ - libgstvideo4linux2_la-gstv4l2devicemonitor.lo \ + libgstvideo4linux2_la-gstv4l2deviceprovider.lo \ libgstvideo4linux2_la-gstv4l2object.lo \ libgstvideo4linux2_la-gstv4l2bufferpool.lo \ libgstvideo4linux2_la-gstv4l2sink.lo \ @@ -586,7 +586,7 @@ enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\") libgstvideo4linux2_la_SOURCES = gstv4l2.c \ gstv4l2allocator.c \ gstv4l2colorbalance.c \ - gstv4l2devicemonitor.c \ + gstv4l2deviceprovider.c \ gstv4l2object.c \ gstv4l2bufferpool.c \ gstv4l2sink.c \ @@ -628,7 +628,7 @@ noinst_HEADERS = \ gstv4l2allocator.h \ gstv4l2bufferpool.h \ gstv4l2colorbalance.h \ - gstv4l2devicemonitor.h \ + gstv4l2deviceprovider.h \ gstv4l2object.h \ gstv4l2sink.h \ gstv4l2src.h \ @@ -727,7 +727,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2allocator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2bufferpool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2colorbalance.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2devicemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2deviceprovider.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2object.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2radio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2sink.Plo@am__quote@ @@ -787,12 +787,12 @@ libgstvideo4linux2_la-gstv4l2colorbalance.lo: gstv4l2colorbalance.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 $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2colorbalance.lo `test -f 'gstv4l2colorbalance.c' || echo '$(srcdir)/'`gstv4l2colorbalance.c -libgstvideo4linux2_la-gstv4l2devicemonitor.lo: gstv4l2devicemonitor.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2devicemonitor.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2devicemonitor.Tpo -c -o libgstvideo4linux2_la-gstv4l2devicemonitor.lo `test -f 'gstv4l2devicemonitor.c' || echo '$(srcdir)/'`gstv4l2devicemonitor.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2devicemonitor.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2devicemonitor.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2devicemonitor.c' object='libgstvideo4linux2_la-gstv4l2devicemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +libgstvideo4linux2_la-gstv4l2deviceprovider.lo: gstv4l2deviceprovider.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2deviceprovider.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2deviceprovider.Tpo -c -o libgstvideo4linux2_la-gstv4l2deviceprovider.lo `test -f 'gstv4l2deviceprovider.c' || echo '$(srcdir)/'`gstv4l2deviceprovider.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2deviceprovider.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2deviceprovider.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2deviceprovider.c' object='libgstvideo4linux2_la-gstv4l2deviceprovider.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 $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2devicemonitor.lo `test -f 'gstv4l2devicemonitor.c' || echo '$(srcdir)/'`gstv4l2devicemonitor.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2deviceprovider.lo `test -f 'gstv4l2deviceprovider.c' || echo '$(srcdir)/'`gstv4l2deviceprovider.c libgstvideo4linux2_la-gstv4l2object.lo: gstv4l2object.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2object.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2object.Tpo -c -o libgstvideo4linux2_la-gstv4l2object.lo `test -f 'gstv4l2object.c' || echo '$(srcdir)/'`gstv4l2object.c diff --git a/sys/v4l2/gstv4l2.c b/sys/v4l2/gstv4l2.c index d4871f8d..08ff3f58 100644 --- a/sys/v4l2/gstv4l2.c +++ b/sys/v4l2/gstv4l2.c @@ -43,7 +43,7 @@ #include "gstv4l2sink.h" #include "gstv4l2radio.h" #include "gstv4l2videodec.h" -#include "gstv4l2devicemonitor.h" +#include "gstv4l2deviceprovider.h" #include "gstv4l2transform.h" /* used in v4l2_calls.c and v4l2src_calls.c */ @@ -199,8 +199,8 @@ plugin_init (GstPlugin * plugin) GST_TYPE_V4L2SINK) || !gst_element_register (plugin, "v4l2radio", GST_RANK_NONE, GST_TYPE_V4L2RADIO) || - !gst_device_monitor_register (plugin, "v4l2monitor", - GST_RANK_PRIMARY, GST_TYPE_V4L2_DEVICE_MONITOR) || + !gst_device_provider_register (plugin, "v4l2deviceprovider", + GST_RANK_PRIMARY, GST_TYPE_V4L2_DEVICE_PROVIDER) || /* etc. */ !gst_v4l2_probe_and_register (plugin)) return FALSE; diff --git a/sys/v4l2/gstv4l2devicemonitor.c b/sys/v4l2/gstv4l2devicemonitor.c deleted file mode 100644 index f3f1c0bb..00000000 --- a/sys/v4l2/gstv4l2devicemonitor.c +++ /dev/null @@ -1,505 +0,0 @@ -/* GStreamer - * Copyright (C) 2012 Olivier Crete - * - * gstv4l2devicemonitor.c: V4l2 device probing and monitoring - * - * 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 "gstv4l2devicemonitor.h" - -#include -#include - -#include - -#include "gstv4l2object.h" -#include "v4l2_calls.h" -#include "v4l2-utils.h" - -#ifdef HAVE_GUDEV -#include -#endif - -static GstV4l2Device *gst_v4l2_device_new (const gchar * device_path, - const gchar * device_name, GstCaps * caps, GstV4l2DeviceType type); - - -G_DEFINE_TYPE (GstV4l2DeviceMonitor, gst_v4l2_device_monitor, - GST_TYPE_DEVICE_MONITOR); - -static void gst_v4l2_device_monitor_finalize (GObject * object); -static GList *gst_v4l2_device_monitor_probe (GstDeviceMonitor * monitor); - -#if HAVE_GUDEV -static gboolean gst_v4l2_device_monitor_start (GstDeviceMonitor * monitor); -static void gst_v4l2_device_monitor_stop (GstDeviceMonitor * monitor); -#endif - - -static void -gst_v4l2_device_monitor_class_init (GstV4l2DeviceMonitorClass * klass) -{ - GstDeviceMonitorClass *dm_class = GST_DEVICE_MONITOR_CLASS (klass); - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - - dm_class->probe = gst_v4l2_device_monitor_probe; - -#if HAVE_GUDEV - dm_class->start = gst_v4l2_device_monitor_start; - dm_class->stop = gst_v4l2_device_monitor_stop; -#endif - - gobject_class->finalize = gst_v4l2_device_monitor_finalize; - - gst_device_monitor_class_set_static_metadata (dm_class, - "Video (video4linux2) Device Monitor", "Source/Sink/Video", - "List and monitor video4linux2 source and sink devices", - "Olivier Crete "); -} - -static void -gst_v4l2_device_monitor_init (GstV4l2DeviceMonitor * monitor) -{ -#if HAVE_GUDEV - g_cond_init (&monitor->started_cond); -#endif -} - -static void -gst_v4l2_device_monitor_finalize (GObject * object) -{ -#if HAVE_GUDEV - GstV4l2DeviceMonitor *monitor = GST_V4L2_DEVICE_MONITOR (object); - - g_cond_clear (&monitor->started_cond); -#endif - - G_OBJECT_CLASS (gst_v4l2_device_monitor_parent_class)->finalize (object); -} - -static GstV4l2Device * -gst_v4l2_device_monitor_probe_device (GstV4l2DeviceMonitor * monitor, - const gchar * device_path, const gchar * device_name) -{ - GstV4l2Object *v4l2obj; - GstCaps *caps; - GstV4l2Device *device = NULL; - struct stat st; - GstV4l2DeviceType type = GST_V4L2_DEVICE_TYPE_INVALID; - - if (stat (device_path, &st) == -1) - return NULL; - - if (!S_ISCHR (st.st_mode)) - return NULL; - - v4l2obj = gst_v4l2_object_new ((GstElement *) monitor, - V4L2_BUF_TYPE_VIDEO_CAPTURE, device_path, NULL, NULL, NULL); - - if (!gst_v4l2_open (v4l2obj)) - goto destroy; - - - if (v4l2obj->vcap.capabilities & V4L2_CAP_VIDEO_CAPTURE) - type = GST_V4L2_DEVICE_TYPE_SOURCE; - - if (v4l2obj->vcap.capabilities & V4L2_CAP_VIDEO_OUTPUT) { - /* Morph it in case our initial guess was wrong */ - v4l2obj->type = V4L2_BUF_TYPE_VIDEO_OUTPUT; - - if (type == GST_V4L2_DEVICE_TYPE_INVALID) - type = GST_V4L2_DEVICE_TYPE_SINK; - else - /* We ignore M2M devices that are both capture and output for now - * The monitor is not for them - */ - goto close; - } - - caps = gst_v4l2_object_get_caps (v4l2obj, NULL); - - if (caps == NULL) - goto close; - if (gst_caps_is_empty (caps)) { - gst_caps_unref (caps); - goto close; - } - - device = gst_v4l2_device_new (device_path, - device_name ? device_name : (gchar *) v4l2obj->vcap.card, caps, type); - gst_caps_unref (caps); - -close: - - gst_v4l2_close (v4l2obj); - -destroy: - - gst_v4l2_object_destroy (v4l2obj); - - return device; -} - - -static GList * -gst_v4l2_device_monitor_probe (GstDeviceMonitor * monitor) -{ - GstV4l2DeviceMonitor *self = GST_V4L2_DEVICE_MONITOR (monitor); - GstV4l2Iterator *it; - GList *devices = NULL; - - it = gst_v4l2_iterator_new (); - - while (gst_v4l2_iterator_next (it)) { - GstV4l2Device *device; - - device = gst_v4l2_device_monitor_probe_device (self, it->device_path, NULL); - - if (device) { - gst_object_ref_sink (device); - devices = g_list_prepend (devices, device); - } - } - - gst_v4l2_iterator_free (it); - - return devices; -} - -#if HAVE_GUDEV - -static GstDevice * -gst_v4l2_device_monitor_device_from_udev (GstV4l2DeviceMonitor * monitor, - GUdevDevice * udev_device) -{ - GstV4l2Device *gstdev; - const gchar *device_path = g_udev_device_get_device_file (udev_device); - const gchar *device_name; - - device_name = g_udev_device_get_property (udev_device, "ID_V4L_PRODUCT"); - if (!device_name) - device_name = g_udev_device_get_property (udev_device, "ID_MODEL_ENC"); - if (!device_name) - device_name = g_udev_device_get_property (udev_device, "ID_MODEL"); - - gstdev = gst_v4l2_device_monitor_probe_device (monitor, device_path, - device_name); - - if (gstdev) - gstdev->syspath = g_strdup (g_udev_device_get_sysfs_path (udev_device)); - - return GST_DEVICE (gstdev); -} - -static void -uevent_cb (GUdevClient * client, const gchar * action, GUdevDevice * device, - GstV4l2DeviceMonitor * self) -{ - GstDeviceMonitor *monitor = GST_DEVICE_MONITOR (self); - - /* Not V4L2, ignoring */ - if (g_udev_device_get_property_as_int (device, "ID_V4L_VERSION") != 2) - return; - - if (!strcmp (action, "add")) { - GstDevice *gstdev = NULL; - - gstdev = gst_v4l2_device_monitor_device_from_udev (self, device); - - if (gstdev) - gst_device_monitor_device_add (monitor, gstdev); - } else if (!strcmp (action, "remove")) { - GstV4l2Device *gstdev = NULL; - GList *item; - - GST_OBJECT_LOCK (self); - for (item = monitor->devices; item; item = item->next) { - gstdev = item->data; - - if (!strcmp (gstdev->syspath, g_udev_device_get_sysfs_path (device))) { - gst_object_ref (gstdev); - break; - } - - gstdev = NULL; - } - GST_OBJECT_UNLOCK (monitor); - - if (gstdev) { - gst_device_monitor_device_remove (monitor, GST_DEVICE (gstdev)); - g_object_unref (gstdev); - } - } else { - GST_WARNING ("Unhandled action %s", action); - } -} - -static gpointer -monitor_thread (gpointer data) -{ - GstV4l2DeviceMonitor *monitor = data; - GMainContext *context = NULL; - GMainLoop *loop = NULL; - GUdevClient *client; - GList *devices; - static const gchar *subsystems[] = { "video4linux", NULL }; - - GST_OBJECT_LOCK (monitor); - if (monitor->context) - context = g_main_context_ref (monitor->context); - if (monitor->loop) - loop = g_main_loop_ref (monitor->loop); - - if (context == NULL || loop == NULL) { - monitor->started = TRUE; - g_cond_broadcast (&monitor->started_cond); - GST_OBJECT_UNLOCK (monitor); - return NULL; - } - GST_OBJECT_UNLOCK (monitor); - - g_main_context_push_thread_default (context); - - client = g_udev_client_new (subsystems); - - g_signal_connect (client, "uevent", G_CALLBACK (uevent_cb), monitor); - - devices = g_udev_client_query_by_subsystem (client, "video4linux"); - - while (devices) { - GUdevDevice *udev_device = devices->data; - GstDevice *gstdev; - - devices = g_list_remove (devices, udev_device); - - if (g_udev_device_get_property_as_int (udev_device, "ID_V4L_VERSION") == 2) { - gstdev = gst_v4l2_device_monitor_device_from_udev (monitor, udev_device); - if (gstdev) - gst_device_monitor_device_add (GST_DEVICE_MONITOR (monitor), gstdev); - } - - g_object_unref (udev_device); - } - - GST_OBJECT_LOCK (monitor); - monitor->started = TRUE; - g_cond_broadcast (&monitor->started_cond); - GST_OBJECT_UNLOCK (monitor); - - g_main_loop_run (loop); - g_main_loop_unref (loop); - - g_object_unref (client); - g_main_context_unref (context); - - gst_object_unref (monitor); - - return NULL; -} - -static gboolean -gst_v4l2_device_monitor_start (GstDeviceMonitor * monitor) -{ - GstV4l2DeviceMonitor *self = GST_V4L2_DEVICE_MONITOR (monitor); - - GST_OBJECT_LOCK (self); - g_assert (self->context == NULL); - - self->context = g_main_context_new (); - self->loop = g_main_loop_new (self->context, FALSE); - - self->thread = g_thread_new ("v4l2-device-monitor", monitor_thread, - g_object_ref (self)); - - while (self->started == FALSE) - g_cond_wait (&self->started_cond, GST_OBJECT_GET_LOCK (self)); - - GST_OBJECT_UNLOCK (self); - - return TRUE; -} - -static void -gst_v4l2_device_monitor_stop (GstDeviceMonitor * monitor) -{ - GstV4l2DeviceMonitor *self = GST_V4L2_DEVICE_MONITOR (monitor); - GMainContext *context; - GMainLoop *loop; - GSource *idle_stop_source; - - GST_OBJECT_LOCK (self); - context = self->context; - loop = self->loop; - self->context = NULL; - self->loop = NULL; - GST_OBJECT_UNLOCK (self); - - if (!context || !loop) - return; - - idle_stop_source = g_idle_source_new (); - g_source_set_callback (idle_stop_source, (GSourceFunc) g_main_loop_quit, loop, - (GDestroyNotify) g_main_loop_unref); - g_source_attach (idle_stop_source, context); - g_source_unref (idle_stop_source); - g_main_context_unref (context); - - g_thread_join (self->thread); - g_thread_unref (self->thread); - self->thread = NULL; - self->started = FALSE; -} - -#endif - -enum -{ - PROP_DEVICE_PATH = 1, -}; - -G_DEFINE_TYPE (GstV4l2Device, gst_v4l2_device, GST_TYPE_DEVICE); - -static void gst_v4l2_device_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec); -static void gst_v4l2_device_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec); -static void gst_v4l2_device_finalize (GObject * object); -static GstElement *gst_v4l2_device_create_element (GstDevice * device, - const gchar * name); - -static void -gst_v4l2_device_class_init (GstV4l2DeviceClass * klass) -{ - GstDeviceClass *dev_class = GST_DEVICE_CLASS (klass); - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - dev_class->create_element = gst_v4l2_device_create_element; - - object_class->get_property = gst_v4l2_device_get_property; - object_class->set_property = gst_v4l2_device_set_property; - object_class->finalize = gst_v4l2_device_finalize; - - g_object_class_install_property (object_class, PROP_DEVICE_PATH, - g_param_spec_string ("device-path", "Device Path", - "The Path of the device node", "", - G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); -} - -static void -gst_v4l2_device_init (GstV4l2Device * device) -{ -} - -static void -gst_v4l2_device_finalize (GObject * object) -{ - GstV4l2Device *device = GST_V4L2_DEVICE (object); - - g_free (device->device_path); - g_free (device->syspath); - - G_OBJECT_CLASS (gst_v4l2_device_parent_class)->finalize (object); -} - -static GstElement * -gst_v4l2_device_create_element (GstDevice * device, const gchar * name) -{ - GstV4l2Device *v4l2_dev = GST_V4L2_DEVICE (device); - GstElement *elem; - - elem = gst_element_factory_make (v4l2_dev->element, name); - g_object_set (elem, "device", v4l2_dev->device_path, NULL); - - return elem; -} - -static GstV4l2Device * -gst_v4l2_device_new (const gchar * device_path, const gchar * device_name, - GstCaps * caps, GstV4l2DeviceType type) -{ - GstV4l2Device *gstdev; - const gchar *element; - const gchar *klass; - - g_return_val_if_fail (device_path, NULL); - g_return_val_if_fail (device_name, NULL); - g_return_val_if_fail (caps, NULL); - - switch (type) { - case GST_V4L2_DEVICE_TYPE_SOURCE: - element = "v4l2src"; - klass = "Video/Source"; - break; - case GST_V4L2_DEVICE_TYPE_SINK: - element = "v4l2sink"; - klass = "Video/Sink"; - break; - default: - g_assert_not_reached (); - break; - } - - gstdev = g_object_new (GST_TYPE_V4L2_DEVICE, "device-path", device_path, - "display-name", device_name, "caps", caps, "device-class", klass, NULL); - - gstdev->element = element; - - - return gstdev; -} - - -static void -gst_v4l2_device_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec) -{ - GstV4l2Device *device; - - device = GST_V4L2_DEVICE_CAST (object); - - switch (prop_id) { - case PROP_DEVICE_PATH: - g_value_set_string (value, device->device_path); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - - -static void -gst_v4l2_device_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec) -{ - GstV4l2Device *device; - - device = GST_V4L2_DEVICE_CAST (object); - - switch (prop_id) { - case PROP_DEVICE_PATH: - device->device_path = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} diff --git a/sys/v4l2/gstv4l2devicemonitor.h b/sys/v4l2/gstv4l2devicemonitor.h deleted file mode 100644 index 4e3050e4..00000000 --- a/sys/v4l2/gstv4l2devicemonitor.h +++ /dev/null @@ -1,101 +0,0 @@ -/* GStreamer - * Copyright (C) 2012 Olivier Crete - * - * gstv4l2devicemonitor.h: V4l2 device probing and monitoring - * - * 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_V4L2_DEVICE_MONITOR_H__ -#define __GST_V4L2_DEVICE_MONITOR_H__ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -#ifdef HAVE_GUDEV -#include -#endif - -G_BEGIN_DECLS - -typedef struct _GstV4l2DeviceMonitor GstV4l2DeviceMonitor; -typedef struct _GstV4l2DeviceMonitorPrivate GstV4l2DeviceMonitorPrivate; -typedef struct _GstV4l2DeviceMonitorClass GstV4l2DeviceMonitorClass; - -#define GST_TYPE_V4L2_DEVICE_MONITOR (gst_v4l2_device_monitor_get_type()) -#define GST_IS_V4L2_DEVICE_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_DEVICE_MONITOR)) -#define GST_IS_V4L2_DEVICE_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_V4L2_DEVICE_MONITOR)) -#define GST_V4L2_DEVICE_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_V4L2_DEVICE_MONITOR, GstV4l2DeviceMonitorClass)) -#define GST_V4L2_DEVICE_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_DEVICE_MONITOR, GstV4l2DeviceMonitor)) -#define GST_V4L2_DEVICE_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DEVICE_MONITOR, GstV4l2DeviceMonitorClass)) -#define GST_V4L2_DEVICE_MONITOR_CAST(obj) ((GstV4l2DeviceMonitor *)(obj)) - -struct _GstV4l2DeviceMonitor { - GstDeviceMonitor parent; - -#ifdef HAVE_GUDEV - GMainContext *context; - GMainLoop *loop; - GThread *thread; - gboolean started; - GCond started_cond; -#endif -}; - -typedef enum { - GST_V4L2_DEVICE_TYPE_INVALID = 0, - GST_V4L2_DEVICE_TYPE_SOURCE, - GST_V4L2_DEVICE_TYPE_SINK -} GstV4l2DeviceType; - -struct _GstV4l2DeviceMonitorClass { - GstDeviceMonitorClass parent_class; -}; - -GType gst_v4l2_device_monitor_get_type (void); - - -typedef struct _GstV4l2Device GstV4l2Device; -typedef struct _GstV4l2DevicePrivate GstV4l2DevicePrivate; -typedef struct _GstV4l2DeviceClass GstV4l2DeviceClass; - -#define GST_TYPE_V4L2_DEVICE (gst_v4l2_device_get_type()) -#define GST_IS_V4L2_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_DEVICE)) -#define GST_IS_V4L2_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_V4L2_DEVICE)) -#define GST_V4L2_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_V4L2_DEVICE, GstV4l2DeviceClass)) -#define GST_V4L2_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_DEVICE, GstV4l2Device)) -#define GST_V4L2_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DEVICE, GstV4l2DeviceClass)) -#define GST_V4L2_DEVICE_CAST(obj) ((GstV4l2Device *)(obj)) - -struct _GstV4l2Device { - GstDevice parent; - - gchar *device_path; - gchar *syspath; - const gchar *element; -}; - -struct _GstV4l2DeviceClass { - GstDeviceClass parent_class; -}; - -GType gst_v4l2_device_get_type (void); - -#endif /* __GST_V4L2_DEVICE_MONITOR_H__ */ diff --git a/sys/v4l2/gstv4l2deviceprovider.c b/sys/v4l2/gstv4l2deviceprovider.c new file mode 100644 index 00000000..e49e7e59 --- /dev/null +++ b/sys/v4l2/gstv4l2deviceprovider.c @@ -0,0 +1,507 @@ +/* GStreamer + * Copyright (C) 2012 Olivier Crete + * + * gstv4l2deviceprovider.c: V4l2 device probing and monitoring + * + * 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 "gstv4l2deviceprovider.h" + +#include +#include + +#include + +#include "gstv4l2object.h" +#include "v4l2_calls.h" +#include "v4l2-utils.h" + +#ifdef HAVE_GUDEV +#include +#endif + +static GstV4l2Device *gst_v4l2_device_new (const gchar * device_path, + const gchar * device_name, GstCaps * caps, GstV4l2DeviceType type); + + +G_DEFINE_TYPE (GstV4l2DeviceProvider, gst_v4l2_device_provider, + GST_TYPE_DEVICE_PROVIDER); + +static void gst_v4l2_device_provider_finalize (GObject * object); +static GList *gst_v4l2_device_provider_probe (GstDeviceProvider * provider); + +#if HAVE_GUDEV +static gboolean gst_v4l2_device_provider_start (GstDeviceProvider * provider); +static void gst_v4l2_device_provider_stop (GstDeviceProvider * provider); +#endif + + +static void +gst_v4l2_device_provider_class_init (GstV4l2DeviceProviderClass * klass) +{ + GstDeviceProviderClass *dm_class = GST_DEVICE_PROVIDER_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + dm_class->probe = gst_v4l2_device_provider_probe; + +#if HAVE_GUDEV + dm_class->start = gst_v4l2_device_provider_start; + dm_class->stop = gst_v4l2_device_provider_stop; +#endif + + gobject_class->finalize = gst_v4l2_device_provider_finalize; + + gst_device_provider_class_set_static_metadata (dm_class, + "Video (video4linux2) Device Provider", "Source/Sink/Video", + "List and monitor video4linux2 source and sink devices", + "Olivier Crete "); +} + +static void +gst_v4l2_device_provider_init (GstV4l2DeviceProvider * provider) +{ +#if HAVE_GUDEV + g_cond_init (&provider->started_cond); +#endif +} + +static void +gst_v4l2_device_provider_finalize (GObject * object) +{ +#if HAVE_GUDEV + GstV4l2DeviceProvider *provider = GST_V4L2_DEVICE_PROVIDER (object); + + g_cond_clear (&provider->started_cond); +#endif + + G_OBJECT_CLASS (gst_v4l2_device_provider_parent_class)->finalize (object); +} + +static GstV4l2Device * +gst_v4l2_device_provider_probe_device (GstV4l2DeviceProvider * provider, + const gchar * device_path, const gchar * device_name) +{ + GstV4l2Object *v4l2obj; + GstCaps *caps; + GstV4l2Device *device = NULL; + struct stat st; + GstV4l2DeviceType type = GST_V4L2_DEVICE_TYPE_INVALID; + + if (stat (device_path, &st) == -1) + return NULL; + + if (!S_ISCHR (st.st_mode)) + return NULL; + + v4l2obj = gst_v4l2_object_new ((GstElement *) provider, + V4L2_BUF_TYPE_VIDEO_CAPTURE, device_path, NULL, NULL, NULL); + + if (!gst_v4l2_open (v4l2obj)) + goto destroy; + + + if (v4l2obj->vcap.capabilities & V4L2_CAP_VIDEO_CAPTURE) + type = GST_V4L2_DEVICE_TYPE_SOURCE; + + if (v4l2obj->vcap.capabilities & V4L2_CAP_VIDEO_OUTPUT) { + /* Morph it in case our initial guess was wrong */ + v4l2obj->type = V4L2_BUF_TYPE_VIDEO_OUTPUT; + + if (type == GST_V4L2_DEVICE_TYPE_INVALID) + type = GST_V4L2_DEVICE_TYPE_SINK; + else + /* We ignore M2M devices that are both capture and output for now + * The provider is not for them + */ + goto close; + } + + caps = gst_v4l2_object_get_caps (v4l2obj, NULL); + + if (caps == NULL) + goto close; + if (gst_caps_is_empty (caps)) { + gst_caps_unref (caps); + goto close; + } + + device = gst_v4l2_device_new (device_path, + device_name ? device_name : (gchar *) v4l2obj->vcap.card, caps, type); + gst_caps_unref (caps); + +close: + + gst_v4l2_close (v4l2obj); + +destroy: + + gst_v4l2_object_destroy (v4l2obj); + + return device; +} + + +static GList * +gst_v4l2_device_provider_probe (GstDeviceProvider * provider) +{ + GstV4l2DeviceProvider *self = GST_V4L2_DEVICE_PROVIDER (provider); + GstV4l2Iterator *it; + GList *devices = NULL; + + it = gst_v4l2_iterator_new (); + + while (gst_v4l2_iterator_next (it)) { + GstV4l2Device *device; + + device = + gst_v4l2_device_provider_probe_device (self, it->device_path, NULL); + + if (device) { + gst_object_ref_sink (device); + devices = g_list_prepend (devices, device); + } + } + + gst_v4l2_iterator_free (it); + + return devices; +} + +#if HAVE_GUDEV + +static GstDevice * +gst_v4l2_device_provider_device_from_udev (GstV4l2DeviceProvider * provider, + GUdevDevice * udev_device) +{ + GstV4l2Device *gstdev; + const gchar *device_path = g_udev_device_get_device_file (udev_device); + const gchar *device_name; + + device_name = g_udev_device_get_property (udev_device, "ID_V4L_PRODUCT"); + if (!device_name) + device_name = g_udev_device_get_property (udev_device, "ID_MODEL_ENC"); + if (!device_name) + device_name = g_udev_device_get_property (udev_device, "ID_MODEL"); + + gstdev = gst_v4l2_device_provider_probe_device (provider, device_path, + device_name); + + if (gstdev) + gstdev->syspath = g_strdup (g_udev_device_get_sysfs_path (udev_device)); + + return GST_DEVICE (gstdev); +} + +static void +uevent_cb (GUdevClient * client, const gchar * action, GUdevDevice * device, + GstV4l2DeviceProvider * self) +{ + GstDeviceProvider *provider = GST_DEVICE_PROVIDER (self); + + /* Not V4L2, ignoring */ + if (g_udev_device_get_property_as_int (device, "ID_V4L_VERSION") != 2) + return; + + if (!strcmp (action, "add")) { + GstDevice *gstdev = NULL; + + gstdev = gst_v4l2_device_provider_device_from_udev (self, device); + + if (gstdev) + gst_device_provider_device_add (provider, gstdev); + } else if (!strcmp (action, "remove")) { + GstV4l2Device *gstdev = NULL; + GList *item; + + GST_OBJECT_LOCK (self); + for (item = provider->devices; item; item = item->next) { + gstdev = item->data; + + if (!strcmp (gstdev->syspath, g_udev_device_get_sysfs_path (device))) { + gst_object_ref (gstdev); + break; + } + + gstdev = NULL; + } + GST_OBJECT_UNLOCK (provider); + + if (gstdev) { + gst_device_provider_device_remove (provider, GST_DEVICE (gstdev)); + g_object_unref (gstdev); + } + } else { + GST_WARNING ("Unhandled action %s", action); + } +} + +static gpointer +provider_thread (gpointer data) +{ + GstV4l2DeviceProvider *provider = data; + GMainContext *context = NULL; + GMainLoop *loop = NULL; + GUdevClient *client; + GList *devices; + static const gchar *subsystems[] = { "video4linux", NULL }; + + GST_OBJECT_LOCK (provider); + if (provider->context) + context = g_main_context_ref (provider->context); + if (provider->loop) + loop = g_main_loop_ref (provider->loop); + + if (context == NULL || loop == NULL) { + provider->started = TRUE; + g_cond_broadcast (&provider->started_cond); + GST_OBJECT_UNLOCK (provider); + return NULL; + } + GST_OBJECT_UNLOCK (provider); + + g_main_context_push_thread_default (context); + + client = g_udev_client_new (subsystems); + + g_signal_connect (client, "uevent", G_CALLBACK (uevent_cb), provider); + + devices = g_udev_client_query_by_subsystem (client, "video4linux"); + + while (devices) { + GUdevDevice *udev_device = devices->data; + GstDevice *gstdev; + + devices = g_list_remove (devices, udev_device); + + if (g_udev_device_get_property_as_int (udev_device, "ID_V4L_VERSION") == 2) { + gstdev = + gst_v4l2_device_provider_device_from_udev (provider, udev_device); + if (gstdev) + gst_device_provider_device_add (GST_DEVICE_PROVIDER (provider), gstdev); + } + + g_object_unref (udev_device); + } + + GST_OBJECT_LOCK (provider); + provider->started = TRUE; + g_cond_broadcast (&provider->started_cond); + GST_OBJECT_UNLOCK (provider); + + g_main_loop_run (loop); + g_main_loop_unref (loop); + + g_object_unref (client); + g_main_context_unref (context); + + gst_object_unref (provider); + + return NULL; +} + +static gboolean +gst_v4l2_device_provider_start (GstDeviceProvider * provider) +{ + GstV4l2DeviceProvider *self = GST_V4L2_DEVICE_PROVIDER (provider); + + GST_OBJECT_LOCK (self); + g_assert (self->context == NULL); + + self->context = g_main_context_new (); + self->loop = g_main_loop_new (self->context, FALSE); + + self->thread = g_thread_new ("v4l2-device-provider", provider_thread, + g_object_ref (self)); + + while (self->started == FALSE) + g_cond_wait (&self->started_cond, GST_OBJECT_GET_LOCK (self)); + + GST_OBJECT_UNLOCK (self); + + return TRUE; +} + +static void +gst_v4l2_device_provider_stop (GstDeviceProvider * provider) +{ + GstV4l2DeviceProvider *self = GST_V4L2_DEVICE_PROVIDER (provider); + GMainContext *context; + GMainLoop *loop; + GSource *idle_stop_source; + + GST_OBJECT_LOCK (self); + context = self->context; + loop = self->loop; + self->context = NULL; + self->loop = NULL; + GST_OBJECT_UNLOCK (self); + + if (!context || !loop) + return; + + idle_stop_source = g_idle_source_new (); + g_source_set_callback (idle_stop_source, (GSourceFunc) g_main_loop_quit, loop, + (GDestroyNotify) g_main_loop_unref); + g_source_attach (idle_stop_source, context); + g_source_unref (idle_stop_source); + g_main_context_unref (context); + + g_thread_join (self->thread); + g_thread_unref (self->thread); + self->thread = NULL; + self->started = FALSE; +} + +#endif + +enum +{ + PROP_DEVICE_PATH = 1, +}; + +G_DEFINE_TYPE (GstV4l2Device, gst_v4l2_device, GST_TYPE_DEVICE); + +static void gst_v4l2_device_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); +static void gst_v4l2_device_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_v4l2_device_finalize (GObject * object); +static GstElement *gst_v4l2_device_create_element (GstDevice * device, + const gchar * name); + +static void +gst_v4l2_device_class_init (GstV4l2DeviceClass * klass) +{ + GstDeviceClass *dev_class = GST_DEVICE_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + dev_class->create_element = gst_v4l2_device_create_element; + + object_class->get_property = gst_v4l2_device_get_property; + object_class->set_property = gst_v4l2_device_set_property; + object_class->finalize = gst_v4l2_device_finalize; + + g_object_class_install_property (object_class, PROP_DEVICE_PATH, + g_param_spec_string ("device-path", "Device Path", + "The Path of the device node", "", + G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); +} + +static void +gst_v4l2_device_init (GstV4l2Device * device) +{ +} + +static void +gst_v4l2_device_finalize (GObject * object) +{ + GstV4l2Device *device = GST_V4L2_DEVICE (object); + + g_free (device->device_path); + g_free (device->syspath); + + G_OBJECT_CLASS (gst_v4l2_device_parent_class)->finalize (object); +} + +static GstElement * +gst_v4l2_device_create_element (GstDevice * device, const gchar * name) +{ + GstV4l2Device *v4l2_dev = GST_V4L2_DEVICE (device); + GstElement *elem; + + elem = gst_element_factory_make (v4l2_dev->element, name); + g_object_set (elem, "device", v4l2_dev->device_path, NULL); + + return elem; +} + +static GstV4l2Device * +gst_v4l2_device_new (const gchar * device_path, const gchar * device_name, + GstCaps * caps, GstV4l2DeviceType type) +{ + GstV4l2Device *gstdev; + const gchar *element; + const gchar *klass; + + g_return_val_if_fail (device_path, NULL); + g_return_val_if_fail (device_name, NULL); + g_return_val_if_fail (caps, NULL); + + switch (type) { + case GST_V4L2_DEVICE_TYPE_SOURCE: + element = "v4l2src"; + klass = "Video/Source"; + break; + case GST_V4L2_DEVICE_TYPE_SINK: + element = "v4l2sink"; + klass = "Video/Sink"; + break; + default: + g_assert_not_reached (); + break; + } + + gstdev = g_object_new (GST_TYPE_V4L2_DEVICE, "device-path", device_path, + "display-name", device_name, "caps", caps, "device-class", klass, NULL); + + gstdev->element = element; + + + return gstdev; +} + + +static void +gst_v4l2_device_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec) +{ + GstV4l2Device *device; + + device = GST_V4L2_DEVICE_CAST (object); + + switch (prop_id) { + case PROP_DEVICE_PATH: + g_value_set_string (value, device->device_path); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + + +static void +gst_v4l2_device_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) +{ + GstV4l2Device *device; + + device = GST_V4L2_DEVICE_CAST (object); + + switch (prop_id) { + case PROP_DEVICE_PATH: + device->device_path = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} diff --git a/sys/v4l2/gstv4l2deviceprovider.h b/sys/v4l2/gstv4l2deviceprovider.h new file mode 100644 index 00000000..8e979ad3 --- /dev/null +++ b/sys/v4l2/gstv4l2deviceprovider.h @@ -0,0 +1,101 @@ +/* GStreamer + * Copyright (C) 2012 Olivier Crete + * + * gstv4l2deviceprovider.h: V4l2 device probing and monitoring + * + * 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_V4L2_DEVICE_PROVIDER_H__ +#define __GST_V4L2_DEVICE_PROVIDER_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#ifdef HAVE_GUDEV +#include +#endif + +G_BEGIN_DECLS + +typedef struct _GstV4l2DeviceProvider GstV4l2DeviceProvider; +typedef struct _GstV4l2DeviceProviderPrivate GstV4l2DeviceProviderPrivate; +typedef struct _GstV4l2DeviceProviderClass GstV4l2DeviceProviderClass; + +#define GST_TYPE_V4L2_DEVICE_PROVIDER (gst_v4l2_device_provider_get_type()) +#define GST_IS_V4L2_DEVICE_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_DEVICE_PROVIDER)) +#define GST_IS_V4L2_DEVICE_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_V4L2_DEVICE_PROVIDER)) +#define GST_V4L2_DEVICE_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_V4L2_DEVICE_PROVIDER, GstV4l2DeviceProviderClass)) +#define GST_V4L2_DEVICE_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_DEVICE_PROVIDER, GstV4l2DeviceProvider)) +#define GST_V4L2_DEVICE_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DEVICE_PROVIDER, GstV4l2DeviceProviderClass)) +#define GST_V4L2_DEVICE_PROVIDER_CAST(obj) ((GstV4l2DeviceProvider *)(obj)) + +struct _GstV4l2DeviceProvider { + GstDeviceProvider parent; + +#ifdef HAVE_GUDEV + GMainContext *context; + GMainLoop *loop; + GThread *thread; + gboolean started; + GCond started_cond; +#endif +}; + +typedef enum { + GST_V4L2_DEVICE_TYPE_INVALID = 0, + GST_V4L2_DEVICE_TYPE_SOURCE, + GST_V4L2_DEVICE_TYPE_SINK +} GstV4l2DeviceType; + +struct _GstV4l2DeviceProviderClass { + GstDeviceProviderClass parent_class; +}; + +GType gst_v4l2_device_provider_get_type (void); + + +typedef struct _GstV4l2Device GstV4l2Device; +typedef struct _GstV4l2DevicePrivate GstV4l2DevicePrivate; +typedef struct _GstV4l2DeviceClass GstV4l2DeviceClass; + +#define GST_TYPE_V4L2_DEVICE (gst_v4l2_device_get_type()) +#define GST_IS_V4L2_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_DEVICE)) +#define GST_IS_V4L2_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_V4L2_DEVICE)) +#define GST_V4L2_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_V4L2_DEVICE, GstV4l2DeviceClass)) +#define GST_V4L2_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_DEVICE, GstV4l2Device)) +#define GST_V4L2_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DEVICE, GstV4l2DeviceClass)) +#define GST_V4L2_DEVICE_CAST(obj) ((GstV4l2Device *)(obj)) + +struct _GstV4l2Device { + GstDevice parent; + + gchar *device_path; + gchar *syspath; + const gchar *element; +}; + +struct _GstV4l2DeviceClass { + GstDeviceClass parent_class; +}; + +GType gst_v4l2_device_get_type (void); + +#endif /* __GST_V4L2_DEVICE_PROVIDER_H__ */ diff --git a/test-driver b/test-driver index 32bf39e8..d3060566 100755 --- a/test-driver +++ b/test-driver @@ -1,7 +1,7 @@ #! /bin/sh # test-driver - basic testsuite driver script. -scriptversion=2012-06-27.10; # UTC +scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2013 Free Software Foundation, Inc. # @@ -44,13 +44,12 @@ print_usage () Usage: test-driver --test-name=NAME --log-file=PATH --trs-file=PATH [--expect-failure={yes|no}] [--color-tests={yes|no}] - [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT + [--enable-hard-errors={yes|no}] [--] + TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS] The '--test-name', '--log-file' and '--trs-file' options are mandatory. END } -# TODO: better error handling in option parsing (in particular, ensure -# TODO: $log_file, $trs_file and $test_name are defined). test_name= # Used for reporting. log_file= # Where to save the output of the test script. trs_file= # Where to save the metadata of the test run. @@ -69,10 +68,23 @@ while test $# -gt 0; do --enable-hard-errors) enable_hard_errors=$2; shift;; --) shift; break;; -*) usage_error "invalid option: '$1'";; + *) break;; esac shift done +missing_opts= +test x"$test_name" = x && missing_opts="$missing_opts --test-name" +test x"$log_file" = x && missing_opts="$missing_opts --log-file" +test x"$trs_file" = x && missing_opts="$missing_opts --trs-file" +if test x"$missing_opts" != x; then + usage_error "the following mandatory options are missing:$missing_opts" +fi + +if test $# -eq 0; then + usage_error "missing argument" +fi + if test $color_tests = yes; then # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'. red='' # Red. diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index ce400431..e15e2950 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -272,6 +272,12 @@ else check_udp = endif +if USE_PLUGIN_VIDEOBOX +check_videobox = elements/videobox +else +check_videobox = +endif + if USE_PLUGIN_VIDEOCROP check_videocrop = \ elements/aspectratiocrop \ @@ -368,6 +374,7 @@ check_PROGRAMS = \ $(check_sunaudio) \ $(check_taglib) \ $(check_udp) \ + $(check_videobox) \ $(check_videocrop) \ $(check_videofilter) \ $(check_videomixer) \ diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in index 268076e4..42eb6831 100644 --- a/tests/check/Makefile.in +++ b/tests/check/Makefile.in @@ -98,7 +98,7 @@ check_PROGRAMS = generic/states$(EXEEXT) \ $(am__EXEEXT_32) $(am__EXEEXT_33) $(am__EXEEXT_34) \ $(am__EXEEXT_35) $(am__EXEEXT_36) $(am__EXEEXT_37) \ $(am__EXEEXT_38) $(am__EXEEXT_39) $(am__EXEEXT_40) \ - $(am__EXEEXT_41) + $(am__EXEEXT_41) $(am__EXEEXT_42) subdir = tests/check ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -228,22 +228,23 @@ libparser_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ @USE_TAGLIB_TRUE@ elements/apev2mux$(EXEEXT) @USE_PLUGIN_UDP_TRUE@am__EXEEXT_32 = elements/udpsink$(EXEEXT) \ @USE_PLUGIN_UDP_TRUE@ elements/udpsrc$(EXEEXT) -@USE_PLUGIN_VIDEOCROP_TRUE@am__EXEEXT_33 = \ +@USE_PLUGIN_VIDEOBOX_TRUE@am__EXEEXT_33 = elements/videobox$(EXEEXT) +@USE_PLUGIN_VIDEOCROP_TRUE@am__EXEEXT_34 = \ @USE_PLUGIN_VIDEOCROP_TRUE@ elements/aspectratiocrop$(EXEEXT) \ @USE_PLUGIN_VIDEOCROP_TRUE@ elements/videocrop$(EXEEXT) -@USE_PLUGIN_VIDEOFILTER_TRUE@am__EXEEXT_34 = \ +@USE_PLUGIN_VIDEOFILTER_TRUE@am__EXEEXT_35 = \ @USE_PLUGIN_VIDEOFILTER_TRUE@ elements/videofilter$(EXEEXT) -@USE_PLUGIN_VIDEOMIXER_TRUE@am__EXEEXT_35 = \ +@USE_PLUGIN_VIDEOMIXER_TRUE@am__EXEEXT_36 = \ @USE_PLUGIN_VIDEOMIXER_TRUE@ elements/videomixer$(EXEEXT) -@USE_VPX_TRUE@am__EXEEXT_36 = elements/vp8enc$(EXEEXT) \ +@USE_VPX_TRUE@am__EXEEXT_37 = elements/vp8enc$(EXEEXT) \ @USE_VPX_TRUE@ elements/vp8dec$(EXEEXT) -@USE_PLUGIN_WAVENC_TRUE@am__EXEEXT_37 = pipelines/wavenc$(EXEEXT) -@USE_WAVPACK_TRUE@am__EXEEXT_38 = elements/wavpackdec$(EXEEXT) \ +@USE_PLUGIN_WAVENC_TRUE@am__EXEEXT_38 = pipelines/wavenc$(EXEEXT) +@USE_WAVPACK_TRUE@am__EXEEXT_39 = elements/wavpackdec$(EXEEXT) \ @USE_WAVPACK_TRUE@ elements/wavpackenc$(EXEEXT) \ @USE_WAVPACK_TRUE@ pipelines/wavpack$(EXEEXT) -@USE_PLUGIN_WAVPARSE_TRUE@am__EXEEXT_39 = elements/wavparse$(EXEEXT) -@USE_PLUGIN_Y4M_TRUE@am__EXEEXT_40 = elements/y4menc$(EXEEXT) -@HAVE_ORC_TRUE@am__EXEEXT_41 = orc/deinterlace$(EXEEXT) \ +@USE_PLUGIN_WAVPARSE_TRUE@am__EXEEXT_40 = elements/wavparse$(EXEEXT) +@USE_PLUGIN_Y4M_TRUE@am__EXEEXT_41 = elements/y4menc$(EXEEXT) +@HAVE_ORC_TRUE@am__EXEEXT_42 = orc/deinterlace$(EXEEXT) \ @HAVE_ORC_TRUE@ orc/videomixer$(EXEEXT) orc/videobox$(EXEEXT) elements_aacparse_SOURCES = elements/aacparse.c elements_aacparse_OBJECTS = elements/aacparse.$(OBJEXT) @@ -678,6 +679,10 @@ elements_udpsrc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(elements_udpsrc_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ +elements_videobox_SOURCES = elements/videobox.c +elements_videobox_OBJECTS = elements/videobox.$(OBJEXT) +elements_videobox_LDADD = $(LDADD) +elements_videobox_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_videocrop_SOURCES = elements/videocrop.c elements_videocrop_OBJECTS = \ elements/elements_videocrop-videocrop.$(OBJEXT) @@ -859,9 +864,10 @@ SOURCES = $(libparser_la_SOURCES) elements/aacparse.c \ elements/rtpjitterbuffer.c elements/rtpmux.c elements/rtprtx.c \ elements/rtpsession.c elements/shapewipe.c \ elements/souphttpsrc.c elements/spectrum.c elements/sunaudio.c \ - elements/udpsink.c elements/udpsrc.c elements/videocrop.c \ - elements/videofilter.c elements/videomixer.c elements/vp8dec.c \ - elements/vp8enc.c elements/wavpackdec.c elements/wavpackenc.c \ + elements/udpsink.c elements/udpsrc.c elements/videobox.c \ + elements/videocrop.c elements/videofilter.c \ + elements/videomixer.c elements/vp8dec.c elements/vp8enc.c \ + elements/wavpackdec.c elements/wavpackenc.c \ elements/wavpackparse.c elements/wavparse.c elements/y4menc.c \ generic/states.c $(nodist_orc_deinterlace_SOURCES) \ $(nodist_orc_videobox_SOURCES) \ @@ -894,9 +900,10 @@ DIST_SOURCES = $(libparser_la_SOURCES) elements/aacparse.c \ elements/rtpjitterbuffer.c elements/rtpmux.c elements/rtprtx.c \ elements/rtpsession.c elements/shapewipe.c \ elements/souphttpsrc.c elements/spectrum.c elements/sunaudio.c \ - elements/udpsink.c elements/udpsrc.c elements/videocrop.c \ - elements/videofilter.c elements/videomixer.c elements/vp8dec.c \ - elements/vp8enc.c elements/wavpackdec.c elements/wavpackenc.c \ + elements/udpsink.c elements/udpsrc.c elements/videobox.c \ + elements/videocrop.c elements/videofilter.c \ + elements/videomixer.c elements/vp8dec.c elements/vp8enc.c \ + elements/wavpackdec.c elements/wavpackenc.c \ elements/wavpackparse.c elements/wavparse.c elements/y4menc.c \ generic/states.c pipelines/effectv.c pipelines/flacdec.c \ pipelines/simple-launch-lines.c pipelines/tagschecking.c \ @@ -1611,6 +1618,8 @@ CLEANFILES = core.* test-registry.* @USE_PLUGIN_UDP_TRUE@ elements/udpsink \ @USE_PLUGIN_UDP_TRUE@ elements/udpsrc +@USE_PLUGIN_VIDEOBOX_FALSE@check_videobox = +@USE_PLUGIN_VIDEOBOX_TRUE@check_videobox = elements/videobox @USE_PLUGIN_VIDEOCROP_FALSE@check_videocrop = @USE_PLUGIN_VIDEOCROP_TRUE@check_videocrop = \ @USE_PLUGIN_VIDEOCROP_TRUE@ elements/aspectratiocrop \ @@ -2233,6 +2242,12 @@ elements/elements_udpsrc-udpsrc.$(OBJEXT): elements/$(am__dirstamp) \ elements/udpsrc$(EXEEXT): $(elements_udpsrc_OBJECTS) $(elements_udpsrc_DEPENDENCIES) $(EXTRA_elements_udpsrc_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/udpsrc$(EXEEXT) $(AM_V_CCLD)$(elements_udpsrc_LINK) $(elements_udpsrc_OBJECTS) $(elements_udpsrc_LDADD) $(LIBS) +elements/videobox.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + +elements/videobox$(EXEEXT): $(elements_videobox_OBJECTS) $(elements_videobox_DEPENDENCIES) $(EXTRA_elements_videobox_DEPENDENCIES) elements/$(am__dirstamp) + @rm -f elements/videobox$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(elements_videobox_OBJECTS) $(elements_videobox_LDADD) $(LIBS) elements/elements_videocrop-videocrop.$(OBJEXT): \ elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) @@ -2449,6 +2464,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/rtpbin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/shapewipe.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/udpsink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/videobox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/vp8dec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/vp8enc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/wavpackdec.Po@am__quote@ @@ -3828,6 +3844,13 @@ elements/udpsrc.log: elements/udpsrc$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +elements/videobox.log: elements/videobox$(EXEEXT) + @p='elements/videobox$(EXEEXT)'; \ + b='elements/videobox'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) elements/aspectratiocrop.log: elements/aspectratiocrop$(EXEEXT) @p='elements/aspectratiocrop$(EXEEXT)'; \ b='elements/aspectratiocrop'; \ diff --git a/tests/check/elements/udpsink.c b/tests/check/elements/udpsink.c index d3f03f11..0e938eef 100644 --- a/tests/check/elements/udpsink.c +++ b/tests/check/elements/udpsink.c @@ -20,9 +20,7 @@ #include #include #include -#include -#if 0 static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, @@ -40,129 +38,100 @@ static guint render_list_bytes_received; * Render function for testing udpsink with buffer lists */ static GstFlowReturn -udpsink_render (GstBaseSink * sink, GstBufferList * list) +udpsink_render_list (GstBaseSink * sink, GstBufferList * list) { - GstBufferListIterator *it; + guint i, num; - fail_if (!list); + num = gst_buffer_list_length (list); + for (i = 0; i < num; ++i) { + GstBuffer *buf = gst_buffer_list_get (list, i); + gsize size = gst_buffer_get_size (buf); - /* - * Count the size of the rtp header and the payload in the buffer list. - */ - - it = gst_buffer_list_iterate (list); - - /* Loop through all groups */ - while (gst_buffer_list_iterator_next_group (it)) { - GstBuffer *buf; - /* Loop through all buffers in the current group */ - while ((buf = gst_buffer_list_iterator_next (it))) { - guint size; - - size = GST_BUFFER_SIZE (buf); - GST_DEBUG ("rendered %u bytes", size); - - render_list_bytes_received += size; - } + GST_DEBUG ("rendered %" G_GSIZE_FORMAT " bytes", size); + render_list_bytes_received += size; } - gst_buffer_list_iterator_free (it); - return GST_FLOW_OK; } static void -_set_render_function (GstElement * bsink) +set_render_list_function (GstElement * bsink) { GstBaseSinkClass *bsclass; + bsclass = GST_BASE_SINK_GET_CLASS ((GstBaseSink *) bsink); + /* Add callback function for the buffer list tests */ - bsclass->render_list = udpsink_render; + bsclass->render_list = udpsink_render_list; } static GstBufferList * -_create_buffer_list (guint * data_size) +create_buffer_list (guint * data_size) { GstBufferList *list; - GstBufferListIterator *it; GstBuffer *rtp_buffer; GstBuffer *data_buffer; list = gst_buffer_list_new (); - it = gst_buffer_list_iterate (list); /*** First group, i.e. first packet. **/ /* Create the RTP header buffer */ - rtp_buffer = gst_buffer_new (); - GST_BUFFER_MALLOCDATA (rtp_buffer) = g_malloc (RTP_HEADER_SIZE); - GST_BUFFER_DATA (rtp_buffer) = GST_BUFFER_MALLOCDATA (rtp_buffer); - GST_BUFFER_SIZE (rtp_buffer) = RTP_HEADER_SIZE; - memset (GST_BUFFER_DATA (rtp_buffer), 0, RTP_HEADER_SIZE); + rtp_buffer = gst_buffer_new_allocate (NULL, RTP_HEADER_SIZE, NULL); + gst_buffer_memset (rtp_buffer, 0, 0, RTP_HEADER_SIZE); /* Create the buffer that holds the payload */ - data_buffer = gst_buffer_new (); - GST_BUFFER_MALLOCDATA (data_buffer) = g_malloc (RTP_PAYLOAD_SIZE); - GST_BUFFER_DATA (data_buffer) = GST_BUFFER_MALLOCDATA (data_buffer); - GST_BUFFER_SIZE (data_buffer) = RTP_PAYLOAD_SIZE; - memset (GST_BUFFER_DATA (data_buffer), 0, RTP_PAYLOAD_SIZE); + data_buffer = gst_buffer_new_allocate (NULL, RTP_PAYLOAD_SIZE, NULL); + gst_buffer_memset (data_buffer, 0, 0, RTP_PAYLOAD_SIZE); /* Create a new group to hold the rtp header and the payload */ - gst_buffer_list_iterator_add_group (it); - gst_buffer_list_iterator_add (it, rtp_buffer); - gst_buffer_list_iterator_add (it, data_buffer); + gst_buffer_list_add (list, gst_buffer_append (rtp_buffer, data_buffer)); /*** Second group, i.e. second packet. ***/ /* Create the RTP header buffer */ - rtp_buffer = gst_buffer_new (); - GST_BUFFER_MALLOCDATA (rtp_buffer) = g_malloc (RTP_HEADER_SIZE); - GST_BUFFER_DATA (rtp_buffer) = GST_BUFFER_MALLOCDATA (rtp_buffer); - GST_BUFFER_SIZE (rtp_buffer) = RTP_HEADER_SIZE; - memset (GST_BUFFER_DATA (rtp_buffer), 0, RTP_HEADER_SIZE); + rtp_buffer = gst_buffer_new_allocate (NULL, RTP_HEADER_SIZE, NULL); + gst_buffer_memset (rtp_buffer, 0, 0, RTP_HEADER_SIZE); /* Create the buffer that holds the payload */ - data_buffer = gst_buffer_new (); - GST_BUFFER_MALLOCDATA (data_buffer) = g_malloc (RTP_PAYLOAD_SIZE); - GST_BUFFER_DATA (data_buffer) = GST_BUFFER_MALLOCDATA (data_buffer); - GST_BUFFER_SIZE (data_buffer) = RTP_PAYLOAD_SIZE; - memset (GST_BUFFER_DATA (data_buffer), 0, RTP_PAYLOAD_SIZE); + data_buffer = gst_buffer_new_allocate (NULL, RTP_PAYLOAD_SIZE, NULL); + gst_buffer_memset (data_buffer, 0, 0, RTP_PAYLOAD_SIZE); /* Create a new group to hold the rtp header and the payload */ - gst_buffer_list_iterator_add_group (it); - gst_buffer_list_iterator_add (it, rtp_buffer); - gst_buffer_list_iterator_add (it, data_buffer); + gst_buffer_list_add (list, gst_buffer_append (rtp_buffer, data_buffer)); /* Calculate the size of the data */ *data_size = 2 * RTP_HEADER_SIZE + 2 * RTP_PAYLOAD_SIZE; - gst_buffer_list_iterator_free (it); - return list; } static void udpsink_test (gboolean use_buffer_lists) { + GstSegment segment; GstElement *udpsink; GstPad *srcpad; GstBufferList *list; guint data_size; - list = _create_buffer_list (&data_size); + list = create_buffer_list (&data_size); udpsink = gst_check_setup_element ("udpsink"); if (use_buffer_lists) - _set_render_function (udpsink); + set_render_list_function (udpsink); srcpad = gst_check_setup_src_pad_by_name (udpsink, &srctemplate, "sink"); gst_element_set_state (udpsink, GST_STATE_PLAYING); + gst_pad_set_active (srcpad, TRUE); + + gst_pad_push_event (srcpad, gst_event_new_stream_start ("hey there!")); - gst_pad_push_event (srcpad, gst_event_new_new_segment_full (FALSE, 1.0, 1.0, - GST_FORMAT_TIME, 0, -1, 0)); + gst_segment_init (&segment, GST_FORMAT_TIME); + gst_pad_push_event (srcpad, gst_event_new_segment (&segment)); - gst_pad_push_list (srcpad, list); + fail_unless_equals_int (gst_pad_push_list (srcpad, list), GST_FLOW_OK); gst_check_teardown_pad_by_name (udpsink, "sink"); gst_check_teardown_element (udpsink); @@ -177,34 +146,76 @@ GST_START_TEST (test_udpsink) } GST_END_TEST; + + GST_START_TEST (test_udpsink_bufferlist) { udpsink_test (TRUE); } GST_END_TEST; -#endif -/* - * Creates the test suite. - * - * Returns: pointer to the test suite. - */ +GST_START_TEST (test_udpsink_client_add_remove) +{ + GstElement *udpsink; + + /* Note: keep in mind that these are in addition to the client added by + * the host/port properties (by default 'localhost:5004' */ + + udpsink = gst_check_setup_element ("udpsink"); + g_signal_emit_by_name (udpsink, "remove", "localhost", 5004, NULL); + gst_object_unref (udpsink); + + udpsink = gst_check_setup_element ("udpsink"); + g_signal_emit_by_name (udpsink, "add", "127.0.0.1", 5554, NULL); + gst_object_unref (udpsink); + + udpsink = gst_check_setup_element ("udpsink"); + g_signal_emit_by_name (udpsink, "add", "127.0.0.1", 5554, NULL); + g_signal_emit_by_name (udpsink, "add", "127.0.0.1", 5554, NULL); + gst_object_unref (udpsink); + + udpsink = gst_check_setup_element ("udpsink"); + g_signal_emit_by_name (udpsink, "add", "127.0.0.1", 5554, NULL); + g_signal_emit_by_name (udpsink, "remove", "127.0.0.1", 5554, NULL); + gst_object_unref (udpsink); + + udpsink = gst_check_setup_element ("udpsink"); + g_signal_emit_by_name (udpsink, "add", "127.0.0.1", 5554, NULL); + g_signal_emit_by_name (udpsink, "remove", "127.0.0.1", 5555, NULL); + gst_object_unref (udpsink); + + udpsink = gst_check_setup_element ("udpsink"); + g_signal_emit_by_name (udpsink, "add", "127.0.0.1", 5554, NULL); + g_signal_emit_by_name (udpsink, "add", "127.0.0.1", 5555, NULL); + gst_object_unref (udpsink); + + udpsink = gst_check_setup_element ("udpsink"); + g_signal_emit_by_name (udpsink, "add", "127.0.0.1", 5554, NULL); + g_signal_emit_by_name (udpsink, "add", "10.2.0.1", 5554, NULL); + gst_object_unref (udpsink); + + udpsink = gst_check_setup_element ("udpsink"); + g_signal_emit_by_name (udpsink, "add", "127.0.0.1", 5554, NULL); + g_signal_emit_by_name (udpsink, "add", "10.2.0.1", 5554, NULL); + g_signal_emit_by_name (udpsink, "remove", "127.0.0.1", 5554, NULL); + gst_object_unref (udpsink); +} + +GST_END_TEST; + static Suite * udpsink_suite (void) { Suite *s = suite_create ("udpsink_test"); - TCase *tc_chain = tcase_create ("linear"); - /* Set timeout to 60 seconds. */ - tcase_set_timeout (tc_chain, 60); - suite_add_tcase (s, tc_chain); -#if 0 + tcase_add_test (tc_chain, test_udpsink); tcase_add_test (tc_chain, test_udpsink_bufferlist); -#endif + tcase_add_test (tc_chain, test_udpsink_client_add_remove); + return s; } diff --git a/tests/check/elements/videobox.c b/tests/check/elements/videobox.c new file mode 100644 index 00000000..89534495 --- /dev/null +++ b/tests/check/elements/videobox.c @@ -0,0 +1,238 @@ +/* GStreamer + * unit test for the videobox element + * + * Copyright (C) 2006 Ravi Kiran K N + * + * 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., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include + +typedef struct _GstVideoBoxTestContext +{ + GstElement *pipeline; + GstElement *src; + GstElement *filter; + GstElement *box; + GstElement *filter2; + GstElement *sink; +} GstVideoBoxTestContext; + +typedef struct _FormatConversion +{ + const gchar *in_caps; + const gchar *out_caps; + gboolean expected_result; +} FormatConversion; + + +/* + * Update this table as and when the conversion is supported(or unsupported) in videobox + */ +static const FormatConversion conversion_table[] = { + {"video/x-raw,format={RGBA}", "video/x-raw,format={AYUV}", TRUE}, + {"video/x-raw,format={AYUV}", "video/x-raw,format={RGBA}", TRUE}, + {"video/x-raw,format={I420}", "video/x-raw,format={AYUV}", TRUE}, + {"video/x-raw,format={AYUV}", "video/x-raw,format={I420}", TRUE}, + {"video/x-raw,format={I420}", "video/x-raw,format={YV12}", TRUE}, + {"video/x-raw,format={YV12}", "video/x-raw,format={AYUV}", TRUE}, + {"video/x-raw,format={YV12}", "video/x-raw,format={I420}", TRUE}, + {"video/x-raw,format={AYUV}", "video/x-raw,format={YV12}", TRUE}, + {"video/x-raw,format={AYUV}", "video/x-raw,format={xRGB}", TRUE}, + {"video/x-raw,format={xRGB}", "video/x-raw,format={xRGB}", TRUE}, + {"video/x-raw,format={xRGB}", "video/x-raw,format={AYUV}", TRUE}, + {"video/x-raw,format={GRAY8}", "video/x-raw,format={GRAY16_LE}", FALSE}, + {"video/x-raw,format={GRAY8}", "video/x-raw,format={GRAY16_BE}", FALSE}, + {"video/x-raw,format={Y444}", "video/x-raw,format={Y42B}", FALSE}, + {"video/x-raw,format={Y444}", "video/x-raw,format={Y41B}", FALSE}, + {"video/x-raw,format={Y42B}", "video/x-raw,format={Y41B}", FALSE} +}; + + +static gboolean +bus_handler (GstBus * bus, GstMessage * message, gpointer data) +{ + GMainLoop *loop = (GMainLoop *) data; + + switch (message->type) { + case GST_MESSAGE_EOS:{ + GST_LOG ("EOS event received"); + g_main_loop_quit (loop); + break; + } + case GST_MESSAGE_ERROR:{ + GError *gerror; + gchar *debug; + gst_message_parse_error (message, &gerror, &debug); + g_error ("Error from %s: %s (%s)\n", + GST_ELEMENT_NAME (GST_MESSAGE_SRC (message)), gerror->message, + GST_STR_NULL (debug)); + g_error_free (gerror); + g_free (debug); + g_main_loop_quit (loop); + break; + } + case GST_MESSAGE_WARNING:{ + g_main_loop_quit (loop); + break; + } + default: + break; + } + + return TRUE; +} + +static void +videobox_test_init_context (GstVideoBoxTestContext * ctx) +{ + fail_unless (ctx != NULL); + + ctx->pipeline = gst_pipeline_new ("pipeline"); + fail_unless (ctx->pipeline != NULL); + ctx->src = gst_element_factory_make ("videotestsrc", "src"); + fail_unless (ctx->src != NULL, "Failed to create videotestsrc element"); + ctx->filter = gst_element_factory_make ("capsfilter", "filter"); + fail_unless (ctx->filter != NULL, "Failed to create capsfilter element"); + ctx->box = gst_element_factory_make ("videobox", "box"); + fail_unless (ctx->box != NULL, "Failed to create videobox element"); + ctx->filter2 = gst_element_factory_make ("capsfilter", "filter2"); + fail_unless (ctx->filter2 != NULL, + "Failed to create second capsfilter element"); + ctx->sink = gst_element_factory_make ("fakesink", "sink"); + fail_unless (ctx->sink != NULL, "Failed to create fakesink element"); + + gst_bin_add_many (GST_BIN (ctx->pipeline), ctx->src, ctx->filter, + ctx->box, ctx->filter2, ctx->sink, NULL); + fail_unless (gst_element_link_many (ctx->src, ctx->filter, ctx->box, + ctx->filter2, ctx->sink, NULL) == TRUE, "Can not link elements"); + + fail_unless (gst_element_set_state (ctx->pipeline, + GST_STATE_READY) != GST_STATE_CHANGE_FAILURE, + "couldn't set pipeline to READY state"); + + GST_LOG ("videobox context inited"); +} + +static void +videobox_test_deinit_context (GstVideoBoxTestContext * ctx) +{ + GST_LOG ("deiniting videobox context"); + + gst_element_set_state (ctx->pipeline, GST_STATE_NULL); + gst_object_unref (ctx->pipeline); + memset (ctx, 0x00, sizeof (GstVideoBoxTestContext)); +} + +GST_START_TEST (test_caps_transform) +{ + GstStateChangeReturn state_ret; + GstVideoBoxTestContext ctx; + guint conversions_test_size; + guint itr; + gboolean link_res; + GMainLoop *loop; + GstBus *bus; + + videobox_test_init_context (&ctx); + gst_util_set_object_arg (G_OBJECT (ctx.src), "num-buffers", "1"); + + loop = g_main_loop_new (NULL, TRUE); + fail_unless (loop != NULL); + + bus = gst_element_get_bus (ctx.pipeline); + fail_unless (bus != NULL); + + gst_bus_add_watch (bus, bus_handler, loop); + gst_object_unref (bus); + + conversions_test_size = G_N_ELEMENTS (conversion_table); + for (itr = 0; itr < conversions_test_size; itr++) { + gst_element_unlink_many (ctx.src, ctx.filter, ctx.box, ctx.filter2, + ctx.sink, NULL); + gst_util_set_object_arg (G_OBJECT (ctx.filter), "caps", + conversion_table[itr].in_caps); + gst_util_set_object_arg (G_OBJECT (ctx.filter2), "caps", + conversion_table[itr].out_caps); + + /* Link with new input and output format from conversion table */ + link_res = + gst_element_link_many (ctx.src, ctx.filter, ctx.box, ctx.filter2, + ctx.sink, NULL); + + /* Check if the specified format conversion is supported or not by videobox */ + fail_unless (link_res == conversion_table[itr].expected_result, + "videobox can not convert from '%s'' to '%s'", + conversion_table[itr].in_caps, conversion_table[itr].out_caps); + + if (link_res == FALSE) { + GST_LOG ("elements linking failed"); + continue; + } + + state_ret = gst_element_set_state (ctx.pipeline, GST_STATE_PLAYING); + fail_unless (state_ret != GST_STATE_CHANGE_FAILURE, + "couldn't set pipeline to PLAYING state"); + + g_main_loop_run (loop); + + state_ret = gst_element_set_state (ctx.pipeline, GST_STATE_READY); + fail_unless (state_ret != GST_STATE_CHANGE_FAILURE, + "couldn't set pipeline to READY state"); + } + + g_main_loop_unref (loop); + + videobox_test_deinit_context (&ctx); +} + +GST_END_TEST; + + +static Suite * +videobox_suite (void) +{ + Suite *s = suite_create ("videobox"); + TCase *tc_chain = tcase_create ("general"); + + suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_caps_transform); + + return s; +} + +int +main (int argc, char **argv) +{ + int nf; + + Suite *s = videobox_suite (); + SRunner *sr = srunner_create (s); + + gst_check_init (&argc, &argv); + + srunner_run_all (sr, CK_NORMAL); + nf = srunner_ntests_failed (sr); + srunner_free (sr); + + return nf; +} diff --git a/win32/common/config.h b/win32/common/config.h index 4fd135c6..4265cc3d 100644 --- a/win32/common/config.h +++ b/win32/common/config.h @@ -58,7 +58,7 @@ #define GST_PACKAGE_ORIGIN "Unknown package origin" /* GStreamer package release date/time for plugins as YYYY-MM-DD */ -#define GST_PACKAGE_RELEASE_DATETIME "2014-06-22" +#define GST_PACKAGE_RELEASE_DATETIME "2014-06-28" /* Define if static plugins should be built */ #undef GST_PLUGIN_BUILD_STATIC @@ -372,7 +372,7 @@ #define PACKAGE_NAME "GStreamer Good Plug-ins" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "GStreamer Good Plug-ins 1.3.3" +#define PACKAGE_STRING "GStreamer Good Plug-ins 1.3.90" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "gst-plugins-good" @@ -381,7 +381,7 @@ #undef PACKAGE_URL /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.3.3" +#define PACKAGE_VERSION "1.3.90" /* directory where plugins are located */ #ifdef _DEBUG @@ -415,7 +415,7 @@ #undef TARGET_CPU /* Version number of package */ -#define VERSION "1.3.3" +#define VERSION "1.3.90" /* old wavpack API */ #undef WAVPACK_OLD_API -- cgit v1.2.3